summaryrefslogtreecommitdiff
path: root/server-beta
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2019-11-22 23:26:32 +0800
committer最萌小汐 <sumneko@hotmail.com>2019-11-22 23:26:32 +0800
commitd0ff66c9abe9d6abbca12fd811e0c3cb69c1033a (patch)
treebb34518d70b85de7656dbdbe958dfa221a3ff3b3 /server-beta
parent0a2c2ad15e1ec359171fb0dd4c72e57c5b66e9ba (diff)
downloadlua-language-server-d0ff66c9abe9d6abbca12fd811e0c3cb69c1033a.zip
整理一下目录结构
Diffstat (limited to 'server-beta')
-rw-r--r--server-beta/Linux/bin/bee.sobin334048 -> 0 bytes
-rw-r--r--server-beta/Linux/bin/lni.sobin31256 -> 0 bytes
-rw-r--r--server-beta/Linux/bin/lpeglabel.sobin56376 -> 0 bytes
-rw-r--r--server-beta/Linux/bin/lua-betabin277272 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-console-l1-1-0.dllbin12224 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-console-l1-2-0.dllbin12224 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-datetime-l1-1-0.dllbin11712 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-debug-l1-1-0.dllbin11720 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-errorhandling-l1-1-0.dllbin11720 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-file-l1-1-0.dllbin15304 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-file-l1-2-0.dllbin11712 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-file-l2-1-0.dllbin11720 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-handle-l1-1-0.dllbin11720 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-heap-l1-1-0.dllbin12232 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-interlocked-l1-1-0.dllbin11712 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-libraryloader-l1-1-0.dllbin12736 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-localization-l1-2-0.dllbin14280 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-memory-l1-1-0.dllbin12224 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-namedpipe-l1-1-0.dllbin11720 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-processenvironment-l1-1-0.dllbin12744 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-processthreads-l1-1-0.dllbin14272 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-processthreads-l1-1-1.dllbin12232 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-profile-l1-1-0.dllbin11200 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-rtlsupport-l1-1-0.dllbin12224 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-string-l1-1-0.dllbin11720 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-synch-l1-1-0.dllbin13760 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-synch-l1-2-0.dllbin12232 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-sysinfo-l1-1-0.dllbin12744 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-timezone-l1-1-0.dllbin12232 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-core-util-l1-1-0.dllbin11720 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-crt-conio-l1-1-0.dllbin12744 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-crt-convert-l1-1-0.dllbin15816 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-crt-environment-l1-1-0.dllbin12232 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-crt-filesystem-l1-1-0.dllbin13768 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-crt-heap-l1-1-0.dllbin12744 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-crt-locale-l1-1-0.dllbin12232 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-crt-math-l1-1-0.dllbin20928 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-crt-multibyte-l1-1-0.dllbin19904 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-crt-private-l1-1-0.dllbin64456 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-crt-process-l1-1-0.dllbin12736 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-crt-runtime-l1-1-0.dllbin16328 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-crt-stdio-l1-1-0.dllbin17864 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-crt-string-l1-1-0.dllbin18368 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-crt-time-l1-1-0.dllbin14280 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/api-ms-win-crt-utility-l1-1-0.dllbin12224 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/bee.dllbin247808 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/concrt140.dllbin335848 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/lni.dllbin26624 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/lpeglabel.dllbin48128 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/lua-beta.exebin167424 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/lua54.dllbin308224 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/msvcp140.dllbin620008 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/msvcp140_1.dllbin31720 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/msvcp140_2.dllbin203752 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/msvcp140_codecvt_ids.dllbin27624 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/ucrtbase.dllbin1011656 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/vcruntime140.dllbin86504 -> 0 bytes
-rw-r--r--server-beta/Windows/bin/vcruntime140_1.dllbin44008 -> 0 bytes
-rw-r--r--server-beta/debugger.lua56
-rw-r--r--server-beta/libs/@lua/basic.lni570
-rw-r--r--server-beta/libs/@lua/bit32.lni136
-rw-r--r--server-beta/libs/@lua/coroutine.lni112
-rw-r--r--server-beta/libs/@lua/debug.lni297
-rw-r--r--server-beta/libs/@lua/file.lni151
-rw-r--r--server-beta/libs/@lua/io.lni326
-rw-r--r--server-beta/libs/@lua/math.lni340
-rw-r--r--server-beta/libs/@lua/os.lni176
-rw-r--r--server-beta/libs/@lua/package.lni77
-rw-r--r--server-beta/libs/@lua/string.lni276
-rw-r--r--server-beta/libs/@lua/table.lni123
-rw-r--r--server-beta/libs/@lua/utf8.lni174
-rw-r--r--server-beta/libs/@luaJIT/bit.lni145
-rw-r--r--server-beta/libs/@luaJIT/ffi.lni194
-rw-r--r--server-beta/libs/@luaJIT/jit.lni73
-rw-r--r--server-beta/libs/bee/filesystem.lni25
-rw-r--r--server-beta/libs/jass/common.lni12452
-rw-r--r--server-beta/libs/jass/japi.lni722
-rw-r--r--server-beta/libs/test/basic.lni2
-rw-r--r--server-beta/locale/en-US/libs/@lua/basic.lni239
-rw-r--r--server-beta/locale/en-US/libs/@lua/bit32.lni57
-rw-r--r--server-beta/locale/en-US/libs/@lua/coroutine.lni42
-rw-r--r--server-beta/locale/en-US/libs/@lua/debug.lni148
-rw-r--r--server-beta/locale/en-US/libs/@lua/file.lni91
-rw-r--r--server-beta/locale/en-US/libs/@lua/io.lni230
-rw-r--r--server-beta/locale/en-US/libs/@lua/math.lni132
-rw-r--r--server-beta/locale/en-US/libs/@lua/os.lni38
-rw-r--r--server-beta/locale/en-US/libs/@lua/package.lni29
-rw-r--r--server-beta/locale/en-US/libs/@lua/string.lni72
-rw-r--r--server-beta/locale/en-US/libs/@lua/table.lni39
-rw-r--r--server-beta/locale/en-US/libs/@lua/utf8.lni40
-rw-r--r--server-beta/locale/en-US/script.lni122
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/basic.lni239
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/bit32.lni55
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/coroutine.lni42
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/debug.lni140
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/file.lni91
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/io.lni230
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/math.lni132
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/os.lni38
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/package.lni29
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/string.lni61
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/table.lni39
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/utf8.lni24
-rw-r--r--server-beta/locale/zh-CN/script.lni122
-rw-r--r--server-beta/macOS/bin/bee.sobin199476 -> 0 bytes
-rw-r--r--server-beta/macOS/bin/lni.sobin27940 -> 0 bytes
-rw-r--r--server-beta/macOS/bin/lpeglabel.sobin53880 -> 0 bytes
-rw-r--r--server-beta/macOS/bin/lua-betabin263828 -> 0 bytes
-rw-r--r--server-beta/main.lua19
-rw-r--r--server-beta/platform.lua28
-rw-r--r--server-beta/src/await.lua100
-rw-r--r--server-beta/src/brave/brave.lua70
-rw-r--r--server-beta/src/brave/init.lua4
-rw-r--r--server-beta/src/brave/log.lua52
-rw-r--r--server-beta/src/brave/work.lua55
-rw-r--r--server-beta/src/config.lua193
-rw-r--r--server-beta/src/core/definition.lua105
-rw-r--r--server-beta/src/core/diagnostics/ambiguity-1.lua69
-rw-r--r--server-beta/src/core/diagnostics/duplicate-index.lua62
-rw-r--r--server-beta/src/core/diagnostics/emmy-lua.lua3
-rw-r--r--server-beta/src/core/diagnostics/empty-block.lua49
-rw-r--r--server-beta/src/core/diagnostics/global-in-nil-env.lua66
-rw-r--r--server-beta/src/core/diagnostics/init.lua41
-rw-r--r--server-beta/src/core/diagnostics/lowercase-global.lua39
-rw-r--r--server-beta/src/core/diagnostics/newfield-call.lua37
-rw-r--r--server-beta/src/core/diagnostics/newline-call.lua38
-rw-r--r--server-beta/src/core/diagnostics/redefined-local.lua32
-rw-r--r--server-beta/src/core/diagnostics/redundant-parameter.lua102
-rw-r--r--server-beta/src/core/diagnostics/redundant-value.lua24
-rw-r--r--server-beta/src/core/diagnostics/trailing-space.lua55
-rw-r--r--server-beta/src/core/diagnostics/undefined-env-child.lua32
-rw-r--r--server-beta/src/core/diagnostics/undefined-global.lua63
-rw-r--r--server-beta/src/core/diagnostics/unused-function.lua45
-rw-r--r--server-beta/src/core/diagnostics/unused-label.lua22
-rw-r--r--server-beta/src/core/diagnostics/unused-local.lua46
-rw-r--r--server-beta/src/core/diagnostics/unused-vararg.lua31
-rw-r--r--server-beta/src/core/highlight.lua230
-rw-r--r--server-beta/src/core/hover/arg.lua20
-rw-r--r--server-beta/src/core/hover/init.lua56
-rw-r--r--server-beta/src/core/hover/label.lua103
-rw-r--r--server-beta/src/core/hover/name.lua64
-rw-r--r--server-beta/src/core/hover/return.lua34
-rw-r--r--server-beta/src/core/hover/table.lua35
-rw-r--r--server-beta/src/core/reference.lua84
-rw-r--r--server-beta/src/core/rename.lua374
-rw-r--r--server-beta/src/define/DiagnosticDefaultSeverity.lua21
-rw-r--r--server-beta/src/define/DiagnosticSeverity.lua6
-rw-r--r--server-beta/src/define/ErrorCodes.lua16
-rw-r--r--server-beta/src/doctor.lua380
-rw-r--r--server-beta/src/file-uri.lua108
-rw-r--r--server-beta/src/files.lua290
-rw-r--r--server-beta/src/fs-utility.lua314
-rw-r--r--server-beta/src/glob/gitignore.lua221
-rw-r--r--server-beta/src/glob/glob.lua122
-rw-r--r--server-beta/src/glob/init.lua4
-rw-r--r--server-beta/src/glob/matcher.lua151
-rw-r--r--server-beta/src/json/decode.lua153
-rw-r--r--server-beta/src/json/encode.lua135
-rw-r--r--server-beta/src/json/init.lua6
-rw-r--r--server-beta/src/jsonrpc.lua41
-rw-r--r--server-beta/src/language.lua137
-rw-r--r--server-beta/src/library.lua296
-rw-r--r--server-beta/src/log.lua140
-rw-r--r--server-beta/src/parser/ast.lua1738
-rw-r--r--server-beta/src/parser/calcline.lua93
-rw-r--r--server-beta/src/parser/compile.lua549
-rw-r--r--server-beta/src/parser/emmy.lua321
-rw-r--r--server-beta/src/parser/grammar.lua537
-rw-r--r--server-beta/src/parser/guide.lua621
-rw-r--r--server-beta/src/parser/init.lua11
-rw-r--r--server-beta/src/parser/lines.lua46
-rw-r--r--server-beta/src/parser/parse.lua45
-rw-r--r--server-beta/src/parser/relabel.lua361
-rw-r--r--server-beta/src/parser/split.lua9
-rw-r--r--server-beta/src/proto/define.lua140
-rw-r--r--server-beta/src/proto/init.lua3
-rw-r--r--server-beta/src/proto/proto.lua133
-rw-r--r--server-beta/src/provider/capability.lua42
-rw-r--r--server-beta/src/provider/completion.lua53
-rw-r--r--server-beta/src/provider/diagnostic.lua209
-rw-r--r--server-beta/src/provider/init.lua298
-rw-r--r--server-beta/src/provider/markdown.lua22
-rw-r--r--server-beta/src/pub/init.lua4
-rw-r--r--server-beta/src/pub/pub.lua236
-rw-r--r--server-beta/src/pub/report.lua21
-rw-r--r--server-beta/src/service/init.lua3
-rw-r--r--server-beta/src/service/service.lua137
-rw-r--r--server-beta/src/timer.lua218
-rw-r--r--server-beta/src/utility.lua452
-rw-r--r--server-beta/src/vm/dummySource.lua13
-rw-r--r--server-beta/src/vm/eachDef.lua65
-rw-r--r--server-beta/src/vm/eachField.lua169
-rw-r--r--server-beta/src/vm/eachRef.lua500
-rw-r--r--server-beta/src/vm/getGlobal.lua6
-rw-r--r--server-beta/src/vm/getGlobals.lua45
-rw-r--r--server-beta/src/vm/getLibrary.lua89
-rw-r--r--server-beta/src/vm/getLinks.lua48
-rw-r--r--server-beta/src/vm/getValue.lua895
-rw-r--r--server-beta/src/vm/init.lua11
-rw-r--r--server-beta/src/vm/special.lua0
-rw-r--r--server-beta/src/vm/vm.lua81
-rw-r--r--server-beta/src/workspace/init.lua3
-rw-r--r--server-beta/src/workspace/workspace.lua194
-rw-r--r--server-beta/test.lua59
-rw-r--r--server-beta/test/completion/init.lua1494
-rw-r--r--server-beta/test/crossfile/completion.lua621
-rw-r--r--server-beta/test/crossfile/definition.lua448
-rw-r--r--server-beta/test/crossfile/hover.lua347
-rw-r--r--server-beta/test/crossfile/init.lua4
-rw-r--r--server-beta/test/crossfile/references.lua249
-rw-r--r--server-beta/test/definition/arg.lua19
-rw-r--r--server-beta/test/definition/bug.lua102
-rw-r--r--server-beta/test/definition/call.lua8
-rw-r--r--server-beta/test/definition/emmy.lua91
-rw-r--r--server-beta/test/definition/function.lua24
-rw-r--r--server-beta/test/definition/init.lua67
-rw-r--r--server-beta/test/definition/label.lua29
-rw-r--r--server-beta/test/definition/local.lua195
-rw-r--r--server-beta/test/definition/method.lua31
-rw-r--r--server-beta/test/definition/set.lua40
-rw-r--r--server-beta/test/definition/special.lua124
-rw-r--r--server-beta/test/definition/table.lua135
-rw-r--r--server-beta/test/diagnostics/init.lua689
-rw-r--r--server-beta/test/document_symbol/init.lua478
-rw-r--r--server-beta/test/example/largeGlobal.txt28101
-rw-r--r--server-beta/test/example/vm.txt1544
-rw-r--r--server-beta/test/full/dirty.lua15
-rw-r--r--server-beta/test/full/example.lua43
-rw-r--r--server-beta/test/full/init.lua13
-rw-r--r--server-beta/test/full/normal.lua157
-rw-r--r--server-beta/test/highlight/init.lua149
-rw-r--r--server-beta/test/hover/init.lua935
-rw-r--r--server-beta/test/other/init.lua11
-rw-r--r--server-beta/test/references/init.lua142
-rw-r--r--server-beta/test/rename/init.lua165
-rw-r--r--server-beta/test/signature/init.lua137
-rw-r--r--server-beta/test/type_inference/init.lua229
237 files changed, 0 insertions, 69287 deletions
diff --git a/server-beta/Linux/bin/bee.so b/server-beta/Linux/bin/bee.so
deleted file mode 100644
index bdcd5769..00000000
--- a/server-beta/Linux/bin/bee.so
+++ /dev/null
Binary files differ
diff --git a/server-beta/Linux/bin/lni.so b/server-beta/Linux/bin/lni.so
deleted file mode 100644
index 99d88311..00000000
--- a/server-beta/Linux/bin/lni.so
+++ /dev/null
Binary files differ
diff --git a/server-beta/Linux/bin/lpeglabel.so b/server-beta/Linux/bin/lpeglabel.so
deleted file mode 100644
index 213f9ac0..00000000
--- a/server-beta/Linux/bin/lpeglabel.so
+++ /dev/null
Binary files differ
diff --git a/server-beta/Linux/bin/lua-beta b/server-beta/Linux/bin/lua-beta
deleted file mode 100644
index ef3621a6..00000000
--- a/server-beta/Linux/bin/lua-beta
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-console-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-console-l1-1-0.dll
deleted file mode 100644
index 0962b30a..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-console-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-console-l1-2-0.dll b/server-beta/Windows/bin/api-ms-win-core-console-l1-2-0.dll
deleted file mode 100644
index 21bb3ad1..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-console-l1-2-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-datetime-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-datetime-l1-1-0.dll
deleted file mode 100644
index a268730b..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-datetime-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-debug-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-debug-l1-1-0.dll
deleted file mode 100644
index 035e2687..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-debug-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-errorhandling-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-errorhandling-l1-1-0.dll
deleted file mode 100644
index 192ede94..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-errorhandling-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-file-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-file-l1-1-0.dll
deleted file mode 100644
index 68ee784c..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-file-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-file-l1-2-0.dll b/server-beta/Windows/bin/api-ms-win-core-file-l1-2-0.dll
deleted file mode 100644
index 8600b9ec..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-file-l1-2-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-file-l2-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-file-l2-1-0.dll
deleted file mode 100644
index 9cb6b014..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-file-l2-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-handle-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-handle-l1-1-0.dll
deleted file mode 100644
index 90678c60..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-handle-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-heap-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-heap-l1-1-0.dll
deleted file mode 100644
index ed9d3168..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-heap-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-interlocked-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-interlocked-l1-1-0.dll
deleted file mode 100644
index 434e8e73..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-interlocked-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-libraryloader-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-libraryloader-l1-1-0.dll
deleted file mode 100644
index 0893de0f..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-libraryloader-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-localization-l1-2-0.dll b/server-beta/Windows/bin/api-ms-win-core-localization-l1-2-0.dll
deleted file mode 100644
index 4a3db1f5..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-localization-l1-2-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-memory-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-memory-l1-1-0.dll
deleted file mode 100644
index 9cb8b976..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-memory-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-namedpipe-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-namedpipe-l1-1-0.dll
deleted file mode 100644
index e88b7682..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-namedpipe-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-processenvironment-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-processenvironment-l1-1-0.dll
deleted file mode 100644
index d91e7ebe..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-processenvironment-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-processthreads-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-processthreads-l1-1-0.dll
deleted file mode 100644
index 49267a85..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-processthreads-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-processthreads-l1-1-1.dll b/server-beta/Windows/bin/api-ms-win-core-processthreads-l1-1-1.dll
deleted file mode 100644
index 62bee964..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-processthreads-l1-1-1.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-profile-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-profile-l1-1-0.dll
deleted file mode 100644
index 38ea7512..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-profile-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-rtlsupport-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-rtlsupport-l1-1-0.dll
deleted file mode 100644
index a3645c47..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-rtlsupport-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-string-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-string-l1-1-0.dll
deleted file mode 100644
index 8f4653f4..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-string-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-synch-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-synch-l1-1-0.dll
deleted file mode 100644
index 16bd0198..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-synch-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-synch-l1-2-0.dll b/server-beta/Windows/bin/api-ms-win-core-synch-l1-2-0.dll
deleted file mode 100644
index fadea389..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-synch-l1-2-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-sysinfo-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-sysinfo-l1-1-0.dll
deleted file mode 100644
index db6b187c..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-sysinfo-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-timezone-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-timezone-l1-1-0.dll
deleted file mode 100644
index c55ea7ed..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-timezone-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-core-util-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-core-util-l1-1-0.dll
deleted file mode 100644
index 3e91e2e6..00000000
--- a/server-beta/Windows/bin/api-ms-win-core-util-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-crt-conio-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-crt-conio-l1-1-0.dll
deleted file mode 100644
index 8106a7e5..00000000
--- a/server-beta/Windows/bin/api-ms-win-crt-conio-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-crt-convert-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-crt-convert-l1-1-0.dll
deleted file mode 100644
index 9d5fbe5b..00000000
--- a/server-beta/Windows/bin/api-ms-win-crt-convert-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-crt-environment-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-crt-environment-l1-1-0.dll
deleted file mode 100644
index 5989e027..00000000
--- a/server-beta/Windows/bin/api-ms-win-crt-environment-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-crt-filesystem-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-crt-filesystem-l1-1-0.dll
deleted file mode 100644
index ccdc59a1..00000000
--- a/server-beta/Windows/bin/api-ms-win-crt-filesystem-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-crt-heap-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-crt-heap-l1-1-0.dll
deleted file mode 100644
index 2bf76f90..00000000
--- a/server-beta/Windows/bin/api-ms-win-crt-heap-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-crt-locale-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-crt-locale-l1-1-0.dll
deleted file mode 100644
index 5b1539a4..00000000
--- a/server-beta/Windows/bin/api-ms-win-crt-locale-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-crt-math-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-crt-math-l1-1-0.dll
deleted file mode 100644
index 9834a107..00000000
--- a/server-beta/Windows/bin/api-ms-win-crt-math-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-crt-multibyte-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-crt-multibyte-l1-1-0.dll
deleted file mode 100644
index 2fbd774d..00000000
--- a/server-beta/Windows/bin/api-ms-win-crt-multibyte-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-crt-private-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-crt-private-l1-1-0.dll
deleted file mode 100644
index 05130e57..00000000
--- a/server-beta/Windows/bin/api-ms-win-crt-private-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-crt-process-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-crt-process-l1-1-0.dll
deleted file mode 100644
index 8f313103..00000000
--- a/server-beta/Windows/bin/api-ms-win-crt-process-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-crt-runtime-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-crt-runtime-l1-1-0.dll
deleted file mode 100644
index d369c68c..00000000
--- a/server-beta/Windows/bin/api-ms-win-crt-runtime-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-crt-stdio-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-crt-stdio-l1-1-0.dll
deleted file mode 100644
index 29f63803..00000000
--- a/server-beta/Windows/bin/api-ms-win-crt-stdio-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-crt-string-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-crt-string-l1-1-0.dll
deleted file mode 100644
index 122930c8..00000000
--- a/server-beta/Windows/bin/api-ms-win-crt-string-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-crt-time-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-crt-time-l1-1-0.dll
deleted file mode 100644
index aed540ca..00000000
--- a/server-beta/Windows/bin/api-ms-win-crt-time-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/api-ms-win-crt-utility-l1-1-0.dll b/server-beta/Windows/bin/api-ms-win-crt-utility-l1-1-0.dll
deleted file mode 100644
index 71ac8e51..00000000
--- a/server-beta/Windows/bin/api-ms-win-crt-utility-l1-1-0.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/bee.dll b/server-beta/Windows/bin/bee.dll
deleted file mode 100644
index 7e9cc8c7..00000000
--- a/server-beta/Windows/bin/bee.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/concrt140.dll b/server-beta/Windows/bin/concrt140.dll
deleted file mode 100644
index ff5c7176..00000000
--- a/server-beta/Windows/bin/concrt140.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/lni.dll b/server-beta/Windows/bin/lni.dll
deleted file mode 100644
index 0b6f619f..00000000
--- a/server-beta/Windows/bin/lni.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/lpeglabel.dll b/server-beta/Windows/bin/lpeglabel.dll
deleted file mode 100644
index 2b68c2eb..00000000
--- a/server-beta/Windows/bin/lpeglabel.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/lua-beta.exe b/server-beta/Windows/bin/lua-beta.exe
deleted file mode 100644
index 57040162..00000000
--- a/server-beta/Windows/bin/lua-beta.exe
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/lua54.dll b/server-beta/Windows/bin/lua54.dll
deleted file mode 100644
index c0287dbd..00000000
--- a/server-beta/Windows/bin/lua54.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/msvcp140.dll b/server-beta/Windows/bin/msvcp140.dll
deleted file mode 100644
index 859663b5..00000000
--- a/server-beta/Windows/bin/msvcp140.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/msvcp140_1.dll b/server-beta/Windows/bin/msvcp140_1.dll
deleted file mode 100644
index 3ff94901..00000000
--- a/server-beta/Windows/bin/msvcp140_1.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/msvcp140_2.dll b/server-beta/Windows/bin/msvcp140_2.dll
deleted file mode 100644
index c32dd3c2..00000000
--- a/server-beta/Windows/bin/msvcp140_2.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/msvcp140_codecvt_ids.dll b/server-beta/Windows/bin/msvcp140_codecvt_ids.dll
deleted file mode 100644
index f74c13f1..00000000
--- a/server-beta/Windows/bin/msvcp140_codecvt_ids.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/ucrtbase.dll b/server-beta/Windows/bin/ucrtbase.dll
deleted file mode 100644
index 4dcf24c3..00000000
--- a/server-beta/Windows/bin/ucrtbase.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/vcruntime140.dll b/server-beta/Windows/bin/vcruntime140.dll
deleted file mode 100644
index 89f10484..00000000
--- a/server-beta/Windows/bin/vcruntime140.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/Windows/bin/vcruntime140_1.dll b/server-beta/Windows/bin/vcruntime140_1.dll
deleted file mode 100644
index e87c588c..00000000
--- a/server-beta/Windows/bin/vcruntime140_1.dll
+++ /dev/null
Binary files differ
diff --git a/server-beta/debugger.lua b/server-beta/debugger.lua
deleted file mode 100644
index 113fa687..00000000
--- a/server-beta/debugger.lua
+++ /dev/null
@@ -1,56 +0,0 @@
-local wait = ...
-local fs = require 'bee.filesystem'
-local extensionPath = fs.path(os.getenv 'USERPROFILE') / '.vscode' / 'extensions'
-log.debug('Search extensions at:', extensionPath:string())
-if not fs.is_directory(extensionPath) then
- log.debug('Extension path is not a directory.')
- return
-end
-
-local luaDebugs = {}
-for path in extensionPath:list_directory() do
- if fs.is_directory(path) then
- local name = path:filename():string()
- if name:find('actboy168.lua-debug-', 1, true) then
- luaDebugs[#luaDebugs+1] = name
- end
- end
-end
-
-if #luaDebugs == 0 then
- log.debug('Cant find "actboy168.lua-debug"')
- return
-end
-
-local function getVer(filename)
- local a, b, c = filename:match('(%d+)%.(%d+)%.(%d+)$')
- if not a then
- return 0
- end
- return a * 1000000 + b * 1000 + c
-end
-
-table.sort(luaDebugs, function (a, b)
- return getVer(a) > getVer(b)
-end)
-
-local debugPath = extensionPath / luaDebugs[1]
-local cpath = "/runtime/win64/lua54/?.dll"
-local path = "/script/?.lua"
-
-local function tryDebugger()
- local entry = assert(package.searchpath('debugger', debugPath:string() .. path))
- local root = debugPath:string()
- local port = '11412'
- local addr = "127.0.0.1:" .. port
- local dbg = loadfile(entry)('windows', root)
- dbg:start(addr)
- log.debug('Debugger startup, listen port:', port)
- log.debug('Debugger args:', addr, root, path, cpath)
- if wait == 'wait' then
- dbg:wait()
- end
- return dbg
-end
-
-xpcall(tryDebugger, log.debug)
diff --git a/server-beta/libs/@lua/basic.lni b/server-beta/libs/@lua/basic.lni
deleted file mode 100644
index beaa59db..00000000
--- a/server-beta/libs/@lua/basic.lni
+++ /dev/null
@@ -1,570 +0,0 @@
-<default>
-type = 'function'
-
-[arg]
-type = 'table'
-
-[assert]
-[[.args]]
-name = 'v'
-``````````
-name = 'message'
-[[.returns]]
-
-[collectgarbage]
-[[.args]]
-name = 'opt'
-type = 'string'
-optional = 'after'
-``````````
-name = 'arg'
-type = 'integer'
-optional = 'self'
-[[.returns]]
-[[.enums]]
-name = 'opt'
-enum = '"collect"'
-default = true
-``````````
-name = 'opt'
-enum = '"stop"'
-``````````
-name = 'opt'
-enum = '"restart"'
-``````````
-name = 'opt'
-enum = '"count"'
-``````````
-name = 'opt'
-enum = '"step"'
-``````````
-name = 'opt'
-enum = '"setpause"'
-``````````
-name = 'opt'
-enum = '"setstepmul"'
-``````````
-name = 'opt'
-enum = '"isrunning"'
-
-["collectgarbage Lua 5.4"]
-name = 'collectgarbage'
-version = 'Lua 5.4'
-[[.args]]
-name = 'opt'
-type = 'string'
-optional = 'after'
-``````````
-name = 'arg'
-type = 'integer'
-optional = 'self'
-[[.returns]]
-[[.enums]]
-name = 'opt'
-enum = '"collect"'
-default = true
-``````````
-name = 'opt'
-enum = '"stop"'
-``````````
-name = 'opt'
-enum = '"restart"'
-``````````
-name = 'opt'
-enum = '"count"'
-``````````
-name = 'opt'
-enum = '"step"'
-``````````
-name = 'opt'
-enum = '"setpause"'
-``````````
-name = 'opt'
-enum = '"setstepmul"'
-``````````
-name = 'opt'
-enum = '"incremental"'
-``````````
-name = 'opt'
-enum = '"generational"'
-``````````
-name = 'opt'
-enum = '"isrunning"'
-
-[dofile]
-special = 'dofile'
-[[.args]]
-name = 'filename'
-type = 'string'
-optional = 'self'
-[[.returns]]
-
-[error]
-[[.args]]
-name = 'message'
-``````````
-name = 'level'
-type = 'integer'
-optional = 'self'
-
-[_G]
-type = 'table'
-
-[getfenv]
-version = {'Lua 5.1', 'LuaJIT'}
-[[.args]]
-name = f
-type = function
-optional = after
-default = 1
-[[.returns]]
-type = table
-
-[getmetatable]
-[[.args]]
-name = 'object'
-[[.returns]]
-name = 'metatable'
-type = 'table'
-
-[@ipairs]
-special = '@ipairs'
-[[.args]]
-type = 'table'
-``````````
-name = 'i'
-type = 'integer'
-[[.returns]]
-name = 'i'
-type = 'integer'
-``````````
-type = 'object'
-
-[ipairs]
-special = 'ipairs'
-[[.args]]
-name = 't'
-type = 'table'
-[[.returns]]
-name = 'iterator'
-``````````
-name = 't'
-type = 'table'
-``````````
-name = 'i'
-type = 'integer'
-default = 0
-
-[load]
-name = 'load'
-[[.args]]
-name = 'chunk'
-type = {'string', 'function'}
-``````````
-name = 'chunkname'
-type = 'string'
-optional = 'after'
-``````````
-name = 'mode'
-type = 'string'
-optional = 'after'
-``````````
-name = 'env'
-type = 'table'
-optional = 'self'
-[[.returns]]
-type = 'function'
-args = {
- 1 = {
- type = '...'
- },
-}
-``````````
-name = 'error_message'
-type = 'string'
-[[.enums]]
-name = 'mode'
-enum = '"b"'
-``````````
-name = 'mode'
-enum = '"t"'
-``````````
-name = 'mode'
-enum = '"bt"'
-default = true
-
-['load Lua 5.1']
-name = 'load'
-version = 'Lua 5.1'
-[[.args]]
-name = 'func'
-type = 'function'
-``````````
-name = 'chunkname'
-type = 'string'
-[[.returns]]
-type = 'function'
-args = {
- 1 = {
- type = '...'
- },
-}
-``````````
-name = 'error_message'
-type = 'string'
-
-[loadfile]
-special = 'loadfile'
-[[.args]]
-name = 'filename'
-type = 'string'
-optional = 'after'
-``````````
-name = 'mode'
-type = 'string'
-optional = 'after'
-``````````
-name = 'env'
-type = 'table'
-optional = 'self'
-[[.returns]]
-type = 'function'
-args = {
- 1 = {
- type = '...'
- },
-}
-``````````
-name = 'error_message'
-type = 'string'
-[[.enums]]
-name = 'mode'
-enum = '"b"'
-``````````
-name = 'mode'
-enum = '"t"'
-``````````
-name = 'mode'
-enum = '"bt"'
-default = true
-
-['loadfile Lua 5.1']
-name = 'loadfile'
-special = 'loadfile'
-version = 'Lua 5.1'
-[[.args]]
-name = 'filename'
-type = 'string'
-optional = 'after'
-[[.returns]]
-type = 'function'
-args = {
- 1 = {
- type = '...'
- },
-}
-``````````
-name = 'error_message'
-type = 'string'
-
-[loadstring]
-version = {'Lua 5.1', 'LuaJIT'}
-[[.args]]
-type = string
-`````````
-name = chunkname
-type = string
-optional = after
-[[.returns]]
-type = 'function'
-args = {
- 1 = {
- type = '...'
- },
-}
-``````````
-name = 'error_message'
-type = 'string'
-
-[module]
-version = {'Lua 5.1', 'LuaJIT'}
-special = 'module'
-[[.args]]
-name = name
-type = string
-``````````
-type = '...'
-optional = after
-
-[next]
-special = next
-[[.args]]
-name = 'table'
-type = 'table'
-``````````
-name = 'index'
-optional = 'self'
-[[.returns]]
-name = 'key'
-``````````
-name = 'value'
-
-[pairs]
-special = pairs
-[[.args]]
-name = 't'
-type = 'table'
-[[.returns]]
-name = '@next'
-``````````
-name = 't'
-type = 'table'
-``````````
-type = 'nil'
-
-[pcall]
-special = pcall
-[[.args]]
-name = 'f'
-type = 'function'
-``````````
-name = 'arg1'
-optional = 'after'
-``````````
-type = '...'
-[[.returns]]
-name = 'success'
-type = 'boolean'
-``````````
-name = 'result'
-``````````
-type = '...'
-
-[print]
-[[.args]]
-type = '...'
-
-[rawequal]
-[[.args]]
-name = 'v1'
-``````````
-name = 'v2'
-[[.returns]]
-type = 'boolean'
-
-[rawget]
-special = 'rawget'
-[[.args]]
-name = 'table'
-type = 'table'
-``````````
-name = 'index'
-[[.returns]]
-
-[rawlen]
-[[.args]]
-name = 'v'
-type = {'table', 'string'}
-[[.returns]]
-name = 'len'
-type = 'integer'
-
-[rawset]
-special = 'rawset'
-[[.args]]
-name = 'table'
-type = 'table'
-``````````
-name = 'index'
-``````````
-name = 'value'
-[[.returns]]
-type = 'table'
-
-[select]
-[[.args]]
-name = 'index'
-type = {'string', 'integer'}
-``````````
-type = '...'
-[[.returns]]
-[[.enums]]
-name = 'index'
-enum = '"#"'
-``````````
-name = 'index'
-code = 'integer'
-
-[setfenv]
-version = {'Lua 5.1', 'LuaJIT'}
-[[.args]]
-name = f
-type = function/integer
-`````````
-type = table
-[[.returns]]
-type = function
-
-[setmetatable]
-special = 'setmetatable'
-[[.args]]
-name = 'table'
-type = 'table'
-``````````
-name = 'metatable'
-type = 'table'
-[[.returns]]
-type = 'table'
-
-[tonumber]
-[[.args]]
-name = 'e'
-type = {'string', 'number'}
-``````````
-name = 'base'
-type = 'integer'
-optional = 'self'
-[[.returns]]
-type = 'number'
-
-[tostring]
-[[.args]]
-name = 'v'
-[[.returns]]
-type = 'string'
-
-[type]
-[[.args]]
-name = 'v'
-[[.returns]]
-name = 'type'
-type = 'string'
-[[.enums]]
-name = 'type'
-enum = '"nil"'
-``````````
-name = 'type'
-enum = '"number"'
-``````````
-name = 'type'
-enum = '"string"'
-``````````
-name = 'type'
-enum = '"boolean"'
-``````````
-name = 'type'
-enum = '"table"'
-``````````
-name = 'type'
-enum = '"function"'
-``````````
-name = 'type'
-enum = '"thread"'
-``````````
-name = 'type'
-enum = '"userdata"'
-
-["_VERSION Lua 5.1"]
-version = {'Lua 5.1', 'LuaJIT'}
-name = '_VERSION'
-type = 'string'
-value = 'Lua 5.1'
-
-["_VERSION Lua 5.2"]
-version = 'Lua 5.2'
-name = '_VERSION'
-type = 'string'
-value = 'Lua 5.2'
-
-["_VERSION Lua 5.3"]
-version = 'Lua 5.3'
-name = '_VERSION'
-type = 'string'
-value = 'Lua 5.3'
-
-["_VERSION Lua 5.4"]
-version = 'Lua 5.4'
-name = '_VERSION'
-type = 'string'
-value = 'Lua 5.4'
-
-[warn]
-version = 'Lua 5.4'
-[[.args]]
-name = 'message'
-type = 'string'
-``````````
-type = '...'
-
-[xpcall]
-special = xpcall
-[[.args]]
-name = 'f'
-type = 'function'
-``````````
-name = 'msgh'
-type = 'function'
-``````````
-name = 'arg1'
-optional = 'after'
-``````````
-type = '...'
-[[.returns]]
-name = 'success'
-type = 'boolean'
-``````````
-name = 'result'
-``````````
-type = '...'
-
-['xpcall Lua 5.1']
-name = 'xpcall'
-version = 'Lua 5.1'
-special = xpcall
-[[.args]]
-name = 'f'
-type = 'function'
-``````````
-name = 'err'
-type = 'function'
-[[.returns]]
-name = 'success'
-type = 'boolean'
-``````````
-name = 'result'
-``````````
-type = '...'
-
-[require]
-special = 'require'
-[[.args]]
-name = 'modname'
-type = 'string'
-[[.returns]]
-
-["require Lua 5.4"]
-version = 'Lua 5.4'
-name = 'require'
-special = 'require'
-[[.args]]
-name = 'modname'
-type = 'string'
-[[.returns]]
-type = any
-``````````
-name = loaderdata
-
-[unpack]
-version = {'Lua 5.1', 'LuaJIT'}
-[[.args]]
-name = 'list'
-type = 'table'
-``````````
-name = 'i'
-type = 'integer'
-optional = 'after'
-type = 1
-``````````
-name = 'j'
-type = 'integer'
-optional = 'self'
diff --git a/server-beta/libs/@lua/bit32.lni b/server-beta/libs/@lua/bit32.lni
deleted file mode 100644
index 6920323c..00000000
--- a/server-beta/libs/@lua/bit32.lni
+++ /dev/null
@@ -1,136 +0,0 @@
-[bit32]
-version = 'Lua 5.2'
-type = 'table'
-[[.source]]
-type = 'global'
-``````````
-type = 'library'
-name = 'bit32'
-
-<default>
-version = 'Lua 5.2'
-type = 'function'
-parent = {
- 1 = {
- type = 'global',
- name = 'bit32',
- },
- 2 = {
- type = 'library',
- name = 'bit32',
- }
-}
-
-[arshift]
-[[.args]]
-name = x
-type = integer
-``````````
-name = disp
-type = integer
-[[.returns]]
-type = integer
-
-[band]
-[[.args]]
-type = '...'
-[[.returns]]
-type = integer
-
-[bnot]
-[[.args]]
-name = x
-type = integer
-[[.returns]]
-type = integer
-
-[bor]
-[[.args]]
-type = '...'
-[[.returns]]
-type = integer
-
-[btest]
-[[.args]]
-type = '...'
-[[.returns]]
-type = boolean
-
-[bxor]
-[[.args]]
-type = '...'
-[[.returns]]
-type = integer
-
-[extract]
-[[.args]]
-name = n
-type = integer
-``````````
-name = field
-type = integer
-``````````
-name = width
-type = integer
-optional = after
-default = 1
-[[.returns]]
-type = integer
-
-[replace]
-[[.args]]
-name = n
-type = integer
-``````````
-name = v
-type = integer
-``````````
-name = field
-type = integer
-``````````
-name = width
-type = integer
-optional = false
-default = 1
-[[.returns]]
-type = integer
-
-[lrotate]
-[[.args]]
-name = x
-type = integer
-``````````
-name = disp
-type = integer
-[[.returns]]
-type = integer
-
-[lshift]
-[[.args]]
-name = x
-type = integer
-``````````
-name = disp
-type = integer
-[[.returns]]
-type = integer
-
-[rrotate]
-[[.args]]
-name = x
-type = integer
-``````````
-name = disp
-type = integer
-[[.returns]]
-type = integer
-
-[rshift]
-[[.args]]
-name = x
-type = integer
-``````````
-name = disp
-type = integer
-[[.returns]]
-type = integer
diff --git a/server-beta/libs/@lua/coroutine.lni b/server-beta/libs/@lua/coroutine.lni
deleted file mode 100644
index 05db9038..00000000
--- a/server-beta/libs/@lua/coroutine.lni
+++ /dev/null
@@ -1,112 +0,0 @@
-[coroutine]
-type = 'table'
-[[.source]]
-type = 'global'
-``````````
-type = 'library'
-name = 'coroutine'
-
-<default>
-type = 'function'
-parent = {
- 1 = {
- type = 'global',
- name = 'coroutine',
- },
- 2 = {
- type = 'library',
- name = 'coroutine',
- }
-}
-
-[create]
-[[.args]]
-name = 'f'
-type = 'function'
-[[.returns]]
-name = 'coroutine'
-type = 'thread'
-
-[isyieldable]
-[[.returns]]
-type = 'boolean'
-
-['isyieldable Lua 5.4']
-name = isyieldable
-version = 'Lua 5.4'
-[[.args]]
-name = co
-type = thread
-optional = after
-[[.returns]]
-type = boolean
-
-[close]
-version = 'Lua 5.4'
-[[.args]]
-name = 'co'
-type = 'thread'
-[[.returns]]
-name = 'noerror'
-type = 'boolean'
-`````````
-name = 'errorobject'
-type = 'any'
-
-[resume]
-[[.args]]
-name = 'co'
-type = 'thread'
-``````````
-name = 'val1'
-optional = 'after'
-``````````
-type = '...'
-[[.returns]]
-name = 'success'
-type = 'boolean'
-``````````
-name = 'result'
-``````````
-type = '...'
-
-[running]
-[[.returns]]
-name = 'running_co'
-type = 'thread'
-``````````
-name = 'is_main'
-type = 'boolean'
-
-[status]
-[[.args]]
-name = 'co'
-type = 'thread'
-[[.returns]]
-name = 'status'
-type = 'string'
-[[.enums]]
-name = 'status'
-enum = '"running"'
-``````````
-name = 'status'
-enum = '"suspended"'
-``````````
-name = 'status'
-enum = '"normal"'
-``````````
-name = 'status'
-enum = '"dead"'
-
-[wrap]
-[[.args]]
-name = 'f'
-type = 'function'
-[[.returns]]
-type = '...'
-
-[yield]
-[[.args]]
-type = '...'
-[[.returns]]
-type = '...'
diff --git a/server-beta/libs/@lua/debug.lni b/server-beta/libs/@lua/debug.lni
deleted file mode 100644
index 3c4bfb14..00000000
--- a/server-beta/libs/@lua/debug.lni
+++ /dev/null
@@ -1,297 +0,0 @@
-[debug]
-type = 'table'
-[[.source]]
-type = 'global'
-``````````
-type = 'library'
-name = 'debug'
-
-<default>
-type = 'function'
-parent = {
- 1 = {
- type = 'global',
- name = 'debug',
- },
- 2 = {
- type = 'library',
- name = 'debug',
- }
-}
-
-["debug.debug"]
-name = 'debug'
-
-[getfenv]
-version = {'Lua 5.1', 'LuaJIT'}
-[[.args]]
-name = o
-[[.returns]]
-type = table
-
-[gethook]
-[[.args]]
-type = 'thread'
-optional = 'self'
-[[.returns]]
-name = 'hook'
-type = 'function'
-``````````
-name = 'mask'
-type = 'string'
-``````````
-name = 'count'
-type = 'integer'
-
-[getinfo]
-[[.args]]
-type = 'thread'
-optional = 'self'
-``````````
-name = 'f'
-type = {'integer', 'function'}
-``````````
-name = 'what'
-type = 'string'
-optional = 'self'
-[[.returns]]
-name = 'info'
-type = 'table'
-[[.enums]]
-name = 'what'
-enum = '"n"'
-``````````
-name = 'what'
-enum = '"S"'
-``````````
-name = 'what'
-enum = '"l"'
-``````````
-name = 'what'
-enum = '"t"'
-``````````
-name = 'what'
-enum = '"u"'
-``````````
-name = 'what'
-enum = '"f"'
-``````````
-name = 'what'
-enum = '"L"'
-
-['getinfo Lua 5.1':getinfo]
-name = 'getinfo'
-version = 'Lua 5.1'
-
-[getlocal]
-name = 'getlocal'
-[[.args]]
-type = 'thread'
-optional = 'self'
-``````````
-name = 'f'
-type = {'integer', 'function'}
-``````````
-name = 'local'
-type = 'integer'
-
-['getlocal Lua 5.1']
-name = 'getlocal'
-version = 'Lua 5.1'
-[[.args]]
-type = 'thread'
-optional = 'self'
-``````````
-name = 'level'
-type = 'integer'
-``````````
-name = 'local'
-type = 'integer'
-
-[getmetatable]
-[[.args]]
-name = 'value'
-[[.returns]]
-name = 'metatable'
-type = 'table'
-
-[getregistry]
-[[.returns]]
-type = 'table'
-
-[getupvalue]
-[[.args]]
-name = 'f'
-type = 'function'
-``````````
-name = 'up'
-type = 'integer'
-[[.returns]]
-name = 'name'
-type = 'string'
-``````````
-name = 'value'
-
-[getuservalue]
-[[.args]]
-name = 'u'
-type = 'userdata'
-[[.returns]]
-
-["getuservalue Lua 5.4"]
-name = 'getuservalue'
-version = 'Lua 5.4'
-[[.args]]
-name = 'u'
-type = 'userdata'
-``````````
-name = 'n'
-type = 'integer'
-[[.returns]]
-type = 'any'
-``````````
-type = 'boolean'
-
-[setcstacklimit]
-version = 'Lua 5.4'
-[[.args]]
-name = 'limit'
-type = 'integer'
-[[.returns]]
-type = {'interger', 'boolean'}
-
-[setfenv]
-version = {'Lua 5.1', 'LuaJIT'}
-[[.args]]
-name = 'object'
-``````````
-type = 'table'
-[[.returns]]
-name = 'object'
-
-[sethook]
-[[.args]]
-type = 'thread'
-optional = 'self'
-``````````
-name = 'hook'
-type = 'function'
-``````````
-name = 'mask'
-type = 'string'
-``````````
-name = 'count'
-type = 'integer'
-optional = 'self'
-[[.enums]]
-name = 'mask'
-enum = '"c"'
-``````````
-name = 'mask'
-enum = '"r"'
-``````````
-name = 'mask'
-enum = '"l"'
-
-[setlocal]
-[[.args]]
-type = 'thread'
-optional = 'self'
-``````````
-name = 'level'
-type = 'integer'
-``````````
-name = 'local'
-type = 'integer'
-``````````
-name = 'value'
-[[.returns]]
-name = 'name'
-type = 'string'
-
-[setmetatable]
-[[.args]]
-name = 'value'
-``````````
-type = 'table'
-[[.returns]]
-name = 'value'
-
-[setupvalue]
-[[.args]]
-name = 'f'
-type = 'function'
-``````````
-name = 'up'
-type = 'integer'
-``````````
-name = 'value'
-[[.returns]]
-name = 'name'
-type = 'string'
-
-[setuservalue]
-[[.args]]
-name = 'udata'
-type = 'userdata'
-``````````
-name = 'value'
-[[.returns]]
-name = 'udata'
-type = 'userdata'
-
-["setuservalue Lua 5.4"]
-name = 'setuservalue'
-version = 'Lua 5.4'
-[[.args]]
-name = 'udata'
-type = 'userdata'
-``````````
-name = 'value'
-``````````
-name = 'n'
-type = 'integer'
-[[.returns]]
-name = 'udata'
-type = 'userdata'
-
-[traceback]
-[[.args]]
-type = 'thread'
-optional = 'self'
-``````````
-name = 'message'
-optional = 'after'
-``````````
-name = 'level'
-optional = 'self'
-default = 1
-[[.returns]]
-name = 'message'
-
-[upvalueid]
-version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4', 'LuaJIT'}
-[[.args]]
-name = 'f'
-type = 'function'
-``````````
-name = 'n'
-type = 'integer'
-[[.returns]]
-name = 'id'
-type = 'userdata'
-
-[upvaluejoin]
-version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4', 'LuaJIT'}
-[[.args]]
-name = 'f1'
-type = 'function'
-``````````
-name = 'n1'
-type = 'integer'
-``````````
-name = 'f2'
-type = 'function'
-``````````
-name = 'n2'
-type = 'integer'
diff --git a/server-beta/libs/@lua/file.lni b/server-beta/libs/@lua/file.lni
deleted file mode 100644
index 387a10df..00000000
--- a/server-beta/libs/@lua/file.lni
+++ /dev/null
@@ -1,151 +0,0 @@
-<default>
-type = 'function'
-parent = {
- 1 = {
- type = 'object',
- name = 'FILE*',
- },
-}
-
-[close]
-[[.args]]
-type = 'FILE*'
-[[.returns]]
-name = 'suc'
-type = 'boolean'
-default = true
-optional = 'after'
-``````````
-name = 'type'
-type = 'string'
-``````````
-name = 'code'
-[[.enums]]
-name = 'type'
-enum = '"exit"'
-``````````
-name = 'type'
-enum = '"signal"'
-
-[flush]
-[[.args]]
-type = 'FILE*'
-
-[lines]
-[[.args]]
-type = 'FILE*'
-``````````
-name = 'mode'
-type = '...'
-[[.returns]]
-type = 'function'
-returns = {
- 1 = {
- name = 'c',
- type = {'string', 'number'},
- }
-}
-[[.enums]]
-name = 'mode'
-enum = '"n"'
-``````````
-name = 'mode'
-enum = '"a"'
-``````````
-name = 'mode'
-enum = '"l"'
-default = true
-``````````
-name = 'mode'
-enum = '"L"'
-``````````
-name = 'mode'
-code = 'number'
-
-[read]
-[[.args]]
-type = 'FILE*'
-``````````
-name = 'mode'
-type = '...'
-[[.returns]]
-type = {'string', 'number'}
-``````````
-type = '...'
-[[.enums]]
-name = 'mode'
-enum = '"n"'
-``````````
-name = 'mode'
-enum = '"a"'
-``````````
-name = 'mode'
-enum = '"l"'
-default = true
-``````````
-name = 'mode'
-enum = '"L"'
-``````````
-name = 'mode'
-code = 'number'
-
-[seek]
-[[.args]]
-type = 'FILE*'
-``````````
-name = 'whence'
-type = 'string'
-optional = 'after'
-``````````
-name = 'offset'
-type = 'integer'
-default = 0
-optional = 'self'
-[[.returns]]
-name = 'offset'
-type = 'integer'
-``````````
-name = 'errmsg'
-type = 'string'
-optional = 'self'
-[[.enums]]
-name = 'whence'
-enum = '"set"'
-``````````
-name = 'whence'
-enum = '"cur"'
-default = true
-``````````
-name = 'whence'
-enum = '"end"'
-
-[setvbuf]
-[[.args]]
-type = 'FILE*'
-``````````
-name = 'mode'
-type = 'string'
-``````````
-name = 'size'
-type = 'integer'
-[[.enums]]
-name = 'mode'
-enum = '"no"'
-``````````
-name = 'mode'
-enum = '"full"'
-``````````
-name = 'mode'
-enum = '"line"'
-
-[write]
-[[.args]]
-type = 'FILE*'
-``````````
-type = '...'
-[[.returns]]
-type = 'FILE*'
-``````````
-name = 'errmsg'
-type = 'string'
-optional = 'self'
diff --git a/server-beta/libs/@lua/io.lni b/server-beta/libs/@lua/io.lni
deleted file mode 100644
index 00e8c9c8..00000000
--- a/server-beta/libs/@lua/io.lni
+++ /dev/null
@@ -1,326 +0,0 @@
-[io]
-type = 'table'
-[[.source]]
-type = 'global'
-``````````
-type = 'library'
-name = 'io'
-
-<default>
-type = 'function'
-parent = {
- 1 = {
- type = 'global',
- name = 'io',
- },
- 2 = {
- type = 'library',
- name = 'io',
- }
-}
-
-[stdin]
-type = 'FILE*'
-
-[stdout]
-type = 'FILE*'
-
-[stderr]
-type = 'FILE*'
-
-[close]
-[[.args]]
-name = 'file'
-type = 'FILE*'
-optional = 'self'
-[[.returns]]
-name = 'suc'
-type = 'boolean'
-default = true
-optional = 'after'
-``````````
-name = 'type'
-type = 'string'
-``````````
-name = 'code'
-[[.enums]]
-name = 'type'
-enum = '"exit"'
-``````````
-name = 'type'
-enum = '"signal"'
-
-[flush]
-
-[input]
-[[.args]]
-name = 'file'
-type = {'string', 'FILE*'}
-optional = 'self'
-[[.returns]]
-type = 'FILE*'
-optional = 'self'
-
-["lines Lua 5.1"]
-name = 'lines'
-version = {'Lua 5.1', 'Lua 5.2'}
-[[.args]]
-name = 'filename'
-type = 'string'
-optional = 'after'
-``````````
-name = 'mode'
-type = '...'
-[[.returns]]
-type = 'function'
-returns = {
- 1 = {
- name = 'c',
- type = {'string', 'number'},
- }
-}
-[[.enums]]
-name = 'mode'
-enum = '"*n"'
-``````````
-name = 'mode'
-enum = '"*a"'
-``````````
-name = 'mode'
-enum = '"*l"'
-default = true
-``````````
-name = 'mode'
-code = 'number'
-
-["lines Lua 5.3"]
-name = 'lines'
-version = {'Lua 5.3', 'Lua 5.4'}
-[[.args]]
-name = 'filename'
-type = 'string'
-optional = 'after'
-``````````
-name = 'mode'
-type = '...'
-[[.returns]]
-type = 'function'
-returns = {
- 1 = {
- name = 'c',
- type = {'string', 'number'},
- }
-}
-[[.enums]]
-name = 'mode'
-enum = '"n"'
-``````````
-name = 'mode'
-enum = '"a"'
-``````````
-name = 'mode'
-enum = '"l"'
-default = true
-``````````
-name = 'mode'
-enum = '"L"'
-``````````
-name = 'mode'
-code = 'number'
-
-["lines LuaJIT"]
-name = 'lines'
-version = 'LuaJIT'
-[[.args]]
-name = 'filename'
-type = 'string'
-optional = 'after'
-``````````
-name = 'mode'
-type = '...'
-[[.returns]]
-type = 'function'
-returns = {
- 1 = {
- name = 'c',
- type = {'string', 'number'},
- }
-}
-[[.enums]]
-name = 'mode'
-enum = '"*n"'
-``````````
-name = 'mode'
-enum = '"*a"'
-``````````
-name = 'mode'
-enum = '"*l"'
-default = true
-``````````
-name = 'mode'
-enum = '"*L"'
-``````````
-name = 'mode'
-code = 'number'
-
-[open]
-[[.args]]
-name = 'filename'
-type = 'string'
-``````````
-name = 'mode'
-type = 'string'
-optional = 'self'
-default = 'r'
-[[.returns]]
-type = 'FILE*'
-[[.enums]]
-name = 'mode'
-enum = '"r"'
-default = true
-``````````
-name = 'mode'
-enum = '"w"'
-``````````
-name = 'mode'
-enum = '"a"'
-``````````
-name = 'mode'
-enum = '"r+"'
-``````````
-name = 'mode'
-enum = '"w+"'
-``````````
-name = 'mode'
-enum = '"a+"'
-
-[output:input]
-
-[popen]
-[[.args]]
-name = 'prog'
-type = 'string'
-``````````
-name = 'mode'
-type = 'string'
-optional = 'self'
-default = 'r'
-[[.returns]]
-name = 'file'
-type = 'FILE*'
-[[.enums]]
-name = 'mode'
-enum = '"r"'
-default = true
-``````````
-name = 'mode'
-enum = '"w"'
-
-["read Lua 5.1"]
-name = 'read'
-version = {'Lua 5.1', 'Lua 5.2'}
-[[.args]]
-name = 'mode'
-type = '...'
-[[.returns]]
-type = {'string', 'number'}
-``````````
-type = '...'
-[[.enums]]
-name = 'mode'
-enum = '"*n"'
-``````````
-name = 'mode'
-enum = '"*a"'
-``````````
-name = 'mode'
-enum = '"*l"'
-default = true
-``````````
-name = 'mode'
-code = 'number'
-
-["read Lua 5.3"]
-name = 'read'
-version = {'Lua 5.3', 'Lua 5.4'}
-[[.args]]
-name = 'mode'
-type = '...'
-[[.returns]]
-type = {'string', 'number'}
-``````````
-type = '...'
-[[.enums]]
-name = 'mode'
-enum = '"n"'
-``````````
-name = 'mode'
-enum = '"a"'
-``````````
-name = 'mode'
-enum = '"l"'
-default = true
-``````````
-name = 'mode'
-enum = '"L"'
-``````````
-name = 'mode'
-code = 'number'
-
-["read LuaJIT"]
-name = 'read'
-version = 'LuaJIT'
-[[.args]]
-name = 'mode'
-type = '...'
-[[.returns]]
-type = {'string', 'number'}
-``````````
-type = '...'
-[[.enums]]
-name = 'mode'
-enum = '"*n"'
-``````````
-name = 'mode'
-enum = '"*a"'
-``````````
-name = 'mode'
-enum = '"*l"'
-default = true
-``````````
-name = 'mode'
-enum = '"*L"'
-``````````
-name = 'mode'
-code = 'number'
-
-[tmpfile]
-[[.returns]]
-type = 'FILE*'
-
-[type]
-[[.args]]
-name = 'obj'
-type = 'FILE*'
-[[.returns]]
-name = 'type'
-type = 'string'
-[[.enums]]
-name = 'type'
-enum = '"file"'
-``````````
-name = 'type'
-enum = '"closed file"'
-``````````
-name = 'type'
-code = 'nil'
-
-[write]
-[[.args]]
-type = '...'
-[[.returns]]
-type = 'FILE*'
-``````````
-name = 'errmsg'
-type = 'string'
-optional = 'self'
diff --git a/server-beta/libs/@lua/math.lni b/server-beta/libs/@lua/math.lni
deleted file mode 100644
index aef488e1..00000000
--- a/server-beta/libs/@lua/math.lni
+++ /dev/null
@@ -1,340 +0,0 @@
-[math]
-type = 'table'
-[[.source]]
-type = 'global'
-``````````
-type = 'library'
-name = 'math'
-
-<default>
-type = 'function'
-parent = {
- 1 = {
- type = 'global',
- name = 'math',
- },
- 2 = {
- type = 'library',
- name = 'math',
- }
-}
-
-[abs]
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[acos]
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[asin]
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-["atan Lua 5.1"]
-name = 'atan'
-version = {'Lua 5.1', 'Lua 5.2', 'LuaJIT'}
-[[.args]]
-name = 'y'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-["atan Lua 5.3"]
-name = 'atan'
-version = {'Lua 5.3', 'Lua 5.4'}
-[[.args]]
-name = 'y'
-type = 'number'
-``````````
-name = 'x'
-type = 'number'
-optional = 'self'
-default = 1
-[[.returns]]
-type = 'number'
-
-[atan2]
-version = {'Lua 5.1', 'Lua 5.2', 'LuaJIT'}
-[[.args]]
-name = 'y'
-type = 'number'
-``````````
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[ceil]
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'integer'
-
-[cos]
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[cosh]
-version = {'Lua 5.1', 'Lua 5.2', 'LuaJIT'}
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[deg]
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[exp]
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[floor]
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'integer'
-
-[fmod]
-[[.args]]
-name = 'x'
-type = 'number'
-``````````
-name = 'y'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[frexp]
-version = {'Lua 5.1', 'Lua 5.2', 'LuaJIT'}
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-name = 'm'
-type = 'number'
-``````````
-name = 'e'
-type = 'number'
-
-[huge]
-type = 'number'
-
-[ldexp]
-version = {'Lua 5.1', 'Lua 5.2', 'LuaJIT'}
-[[.args]]
-name = 'm'
-type = 'number'
-``````````
-name = 'e'
-type = 'integer'
-[[.returns]]
-type = 'number'
-
-[log]
-[[.args]]
-name = 'x'
-type = 'number'
-``````````
-name = 'base'
-type = 'number'
-optional = 'self'
-default = 'e'
-[[.returns]]
-type = 'number'
-
-['log Lua 5.1']
-name = log
-version = 'Lua 5.1'
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[log10]
-version = 'Lua 5.1'
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[max]
-[[.args]]
-name = 'x'
-type = 'number'
-``````````
-type = '...'
-[[.returns]]
-type = 'number'
-
-[maxinteger]
-version = {'Lua 5.3', 'Lua 5.4'}
-type = 'integer'
-
-[min]
-[[.args]]
-name = 'x'
-type = 'number'
-``````````
-type = '...'
-[[.returns]]
-type = 'number'
-
-[mininteger]
-version = {'Lua 5.3', 'Lua 5.4'}
-type = 'integer'
-
-[modf]
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'integer'
-``````````
-type = 'number'
-
-[pi]
-type = 'number'
-
-[pow]
-version = {'Lua 5.1', 'Lua 5.2', 'LuaJIT'}
-[[.args]]
-name = 'x'
-type = 'number'
-``````````
-name = 'y'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[rad]
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[random]
-[[.args]]
-name = 'm'
-type = 'integer'
-optional = 'after'
-``````````
-name = 'n'
-type = 'integer'
-optional = 'self'
-[[.returns]]
-type = 'number'
-
-[randomseed]
-[[.args]]
-name = 'x'
-type = 'integer'
-
-["randomseed Lua 5.4"]
-name = 'randomseed'
-version = 'Lua 5.4'
-[[.args]]
-name = 'x'
-type = 'integer'
-optional = 'after'
-``````````
-name = 'y'
-type = 'integer'
-optional = 'after'
-default = 0
-
-[sin]
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[sinh]
-version = {'Lua 5.1', 'Lua 5.2', 'LuaJIT'}
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[sqrt]
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[tan]
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[tanh]
-version = {'Lua 5.1', 'Lua 5.2', 'LuaJIT'}
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'number'
-
-[tointeger]
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-type = 'integer'
-
-[type]
-[[.args]]
-name = 'x'
-type = 'number'
-[[.returns]]
-name = 'type'
-type = 'string'
-[[.enums]]
-name = 'type'
-enum = '"integer"'
-``````````
-name = 'type'
-enum = '"float"'
-``````````
-name = 'type'
-code = 'nil'
-
-[ult]
-[[.args]]
-name = 'm'
-type = 'integer'
-``````````
-name = 'n'
-type = 'integer'
-[[.returns]]
-type = 'boolean'
diff --git a/server-beta/libs/@lua/os.lni b/server-beta/libs/@lua/os.lni
deleted file mode 100644
index f6b69317..00000000
--- a/server-beta/libs/@lua/os.lni
+++ /dev/null
@@ -1,176 +0,0 @@
-[os]
-type = 'table'
-[[.source]]
-type = 'global'
-``````````
-type = 'library'
-name = 'os'
-
-<default>
-type = 'function'
-parent = {
- 1 = {
- type = 'global',
- name = 'os',
- },
- 2 = {
- type = 'library',
- name = 'os',
- }
-}
-
-[clock]
-[[.returns]]
-type = 'number'
-
-[date]
-[[.args]]
-name = 'format'
-type = 'string'
-optional = 'after'
-``````````
-name = 'time'
-type = 'integer'
-optional = 'self'
-[[.returns]]
-type = 'string'
-
-[difftime]
-[[.args]]
-name = 't2'
-type = 'integer'
-``````````
-name = 't1'
-type = 'integer'
-[[.returns]]
-type = 'integer'
-
-[execute]
-[[.args]]
-name = 'command'
-type = 'string'
-optional = 'self'
-[[.returns]]
-name = 'suc'
-type = 'boolean'
-default = 'true'
-optional = 'after'
-``````````
-name = 'type'
-type = 'string'
-``````````
-name = 'code'
-type = 'integer'
-[[.enums]]
-type = 'type'
-enum = '"exit"'
-``````````
-type = 'type'
-enum = '"signal"'
-
-['execute Lua 5.1']
-name = 'execute'
-version = {'Lua 5.1', 'LuaJIT'}
-[[.args]]
-name = 'command'
-type = 'string'
-optional = 'self'
-[[.returns]]
-name = 'code'
-type = 'integer'
-
-[exit]
-[[.args]]
-name = 'code'
-type = {'boolean', 'integer'}
-optional = 'after'
-default = true
-``````````
-name = 'close'
-type = 'boolean'
-optional = 'self'
-
-['exit Lua 5.1']
-name = 'exit'
-version = 'Lua 5.1'
-[[.args]]
-name = 'code'
-type = 'integer'
-optional = 'after'
-default = 0
-
-[getenv]
-[[.args]]
-name = 'varname'
-type = 'string'
-[[.returns]]
-type = 'string'
-
-[remove]
-[[.args]]
-name = 'filename'
-type = 'string'
-[[.returns]]
-name = 'suc'
-type = 'boolean'
-``````````
-name = 'errmsg'
-type = 'string'
-optional = 'self'
-
-[rename]
-[[.args]]
-name = 'oldname'
-type = 'string'
-``````````
-name = 'newname'
-type = 'string'
-[[.returns]]
-name = 'suc'
-type = 'boolean'
-``````````
-name = 'errmsg'
-type = 'string'
-optional = 'self'
-
-[setlocale]
-[[.args]]
-name = 'locale'
-type = 'string'
-``````````
-name = 'category'
-type = 'string'
-optional = 'self'
-[[.returns]]
-name = 'locale'
-type = 'string'
-[[.enums]]
-name = 'category'
-enum = '"all"'
-default = true
-``````````
-name = 'category'
-enum = '"collate"'
-``````````
-name = 'category'
-enum = '"ctype"'
-``````````
-name = 'category'
-enum = '"monetary"'
-``````````
-name = 'category'
-enum = '"numeric"'
-``````````
-name = 'category'
-enum = '"time"'
-
-[time]
-[[.args]]
-type = 'table'
-optional = 'self'
-[[.returns]]
-type = 'integer'
-
-[tmpname]
-[[.returns]]
-type = 'string'
diff --git a/server-beta/libs/@lua/package.lni b/server-beta/libs/@lua/package.lni
deleted file mode 100644
index 4a520e89..00000000
--- a/server-beta/libs/@lua/package.lni
+++ /dev/null
@@ -1,77 +0,0 @@
-[package]
-type = 'table'
-[[.source]]
-type = 'global'
-``````````
-type = 'library'
-name = 'package'
-
-<default>
-type = 'function'
-parent = {
- 1 = {
- type = 'global',
- name = 'package',
- },
- 2 = {
- type = 'library',
- name = 'package',
- }
-}
-
-[config]
-type = 'string'
-
-[cpath]
-type = 'string'
-
-[loaded]
-type = 'table'
-
-[loaders]
-version = {'Lua 5.1', 'LuaJIT'}
-type = 'table'
-
-[loadlib]
-[[.args]]
-name = 'libname'
-type = 'string'
-``````````
-name = 'funcname'
-type = 'string'
-[[.returns]]
-
-[path]
-type = 'string'
-
-[preload]
-type = 'table'
-
-[searchers]
-version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4'}
-type = 'table'
-
-[searchpath]
-version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4', 'LuaJIT'}
-[[.args]]
-name = 'name'
-type = 'string'
-``````````
-name = 'path'
-type = 'string'
-``````````
-name = 'sep'
-type = 'string'
-optional = 'after'
-default = '.'
-``````````
-name = 'rep'
-type = 'string'
-optional = 'self'
-
-[seeall]
-version = {'Lua 5.1', 'LuaJIT'}
-special = seeall
-[[.args]]
-name = module
-type = table
diff --git a/server-beta/libs/@lua/string.lni b/server-beta/libs/@lua/string.lni
deleted file mode 100644
index 55bfde8a..00000000
--- a/server-beta/libs/@lua/string.lni
+++ /dev/null
@@ -1,276 +0,0 @@
-[string]
-type = 'table'
-[[.source]]
-type = 'global'
-``````````
-type = 'library'
-name = 'string'
-
-<default>
-type = 'function'
-parent = {
- 1 = {
- type = 'global',
- name = 'string',
- },
- 2 = {
- type = 'library',
- name = 'string',
- },
- 3 = {
- type = 'object',
- name = 'string',
- }
-}
-
-[byte]
-[[.args]]
-type = 'string'
-``````````
-name = 'i'
-type = 'integer'
-optional = 'after'
-default = 1
-``````````
-name = 'j'
-type = 'integer'
-optional = 'self'
-[[.returns]]
-type = 'integer'
-``````````
-type = '...'
-
-[char]
-[[.args]]
-name = 'byte'
-type = 'integer'
-``````````
-type = '...'
-[[.returns]]
-type = 'string'
-``````````
-type = '...'
-
-[dump]
-[[.args]]
-type = 'function'
-``````````
-name = 'strip'
-type = 'boolean'
-[[.returns]]
-name = 'binary'
-type = 'string'
-
-[find]
-[[.args]]
-type = 'string'
-``````````
-name = 'pattern'
-type = 'string'
-``````````
-name = 'init'
-type = 'integer'
-optional = 'after'
-default = 1
-``````````
-name = 'plain'
-type = 'boolean'
-optional = 'self'
-[[.returns]]
-name = 'start'
-type = 'integer'
-``````````
-name = 'end'
-type = 'integer'
-``````````
-name = 'captured'
-type = '...'
-
-[format]
-[[.args]]
-type = 'string'
-``````````
-type = '...'
-[[.returns]]
-type = 'string'
-
-[gmatch]
-[[.args]]
-type = 'string'
-``````````
-name = 'pattern'
-type = 'string'
-[[.returns]]
-type = 'function'
-returns = {
- 1 = {
- type = 'string'
- },
- 2 = {
- type = '...'
- },
-}
-
-["gmatch Lua 5.4"]
-name = 'gmatch'
-version = 'Lua 5.4'
-[[.args]]
-type = 'string'
-``````````
-name = 'pattern'
-type = 'string'
-``````````
-name = 'init'
-type = 'integer'
-optional = 'after'
-default = 1
-[[.returns]]
-type = 'function'
-returns = {
- 1 = {
- type = 'string'
- },
- 2 = {
- type = '...'
- },
-}
-
-[gsub]
-[[.args]]
-type = 'string'
-``````````
-name = 'pattern'
-type = 'string'
-``````````
-name = 'repl'
-type = {'string', 'table', 'function'}
-``````````
-name = 'n'
-type = 'integer'
-[[.returns]]
-type = 'string'
-``````````
-name = 'count'
-type = 'integer'
-
-[len]
-[[.args]]
-type = 'string'
-[[.returns]]
-type = 'integer'
-
-[lower]
-[[.args]]
-type = 'string'
-[[.returns]]
-type = 'string'
-
-[match]
-[[.args]]
-type = 'string'
-``````````
-name = 'pattern'
-type = 'string'
-``````````
-name = 'init'
-type = 'integer'
-optional = 'self'
-default = 1
-[[.returns]]
-name = 'captured'
-type = 'string'
-
-[pack]
-version = {'Lua 5.3', 'Lua 5.4'}
-[[.args]]
-name = 'fmt'
-type = 'string'
-``````````
-name = 'v1'
-type = 'string'
-``````````
-name = 'v2'
-type = 'string'
-``````````
-type = '...'
-[[.returns]]
-name = 'binary'
-type = 'string'
-
-[packsize]
-version = {'Lua 5.3', 'Lua 5.4'}
-[[.args]]
-name = 'fmt'
-type = 'string'
-[[.returns]]
-type = 'integer'
-
-[rep]
-[[.args]]
-type = 'string'
-``````````
-name = n
-type = 'integer'
-``````````
-name = 'sep'
-type = 'string'
-optional = 'self'
-default = ''
-[[.returns]]
-type = 'string'
-
-['rep Lua 5.1']
-name = rep
-version = 'Lua 5.1'
-[[.args]]
-type = 'string'
-``````````
-name = n
-type = 'integer'
-[[.returns]]
-type = 'string'
-
-[reverse]
-[[.args]]
-type = 'string'
-[[.returns]]
-type = 'string'
-
-[sub]
-[[.args]]
-type = 'string'
-``````````
-name = 'i'
-type = 'integer'
-``````````
-name = 'j'
-type = 'integer'
-optional = 'self'
-default = -1
-[[.returns]]
-type = 'string'
-
-[unpack]
-version = {'Lua 5.3', 'Lua 5.4'}
-[[.args]]
-name = 'fmt'
-type = 'string'
-``````````
-name = 's'
-type = 'string'
-``````````
-name = 'pos'
-type = 'integer'
-optional = 'self'
-default = 1
-[[.returns]]
-type = '...'
-``````````
-name = 'offset'
-type = 'integer'
-
-[upper]
-[[.args]]
-type = 'string'
-[[.returns]]
-type = 'string'
diff --git a/server-beta/libs/@lua/table.lni b/server-beta/libs/@lua/table.lni
deleted file mode 100644
index 347756da..00000000
--- a/server-beta/libs/@lua/table.lni
+++ /dev/null
@@ -1,123 +0,0 @@
-[table]
-type = 'table'
-[[.source]]
-type = 'global'
-``````````
-type = 'library'
-name = 'table'
-
-<default>
-type = 'function'
-parent = {
- 1 = {
- type = 'global',
- name = 'table',
- },
- 2 = {
- type = 'library',
- name = 'table',
- }
-}
-
-[concat]
-[[.args]]
-name = 'list'
-type = 'table'
-``````````
-name = 'sep'
-type = 'string'
-optional = 'after'
-default = ''
-``````````
-name = 'i'
-type = 'integer'
-optional = 'after'
-default = 1
-``````````
-name = 'j'
-type = 'integer'
-optional = 'self'
-[[.returns]]
-type = 'string'
-
-[insert]
-[[.args]]
-name = 'list'
-type = 'table'
-``````````
-name = 'pos'
-type = 'integer'
-optional = 'self'
-``````````
-name = 'value'
-type = 'any'
-
-[maxn]
-version = {'Lua 5.1', 'LuaJIT'}
-[[.args]]
-type = table
-[[.returns]]
-type = integer
-
-[move]
-version = {'Lua 5.3', 'Lua 5.4'}
-[[.args]]
-name = 'a1'
-type = 'table'
-``````````
-name = 'f'
-type = 'integer'
-``````````
-name = 'e'
-type = 'integer'
-``````````
-name = 't'
-type = 'integer'
-``````````
-name = 'a2'
-type = 'table'
-optional = 'self'
-[[.returns]]
-name = 'a2'
-type = 'table'
-
-[pack]
-version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4'}
-[[.args]]
-type = '...'
-[[.returns]]
-type = 'table'
-
-[remove]
-[[.args]]
-name = 'list'
-type = 'table'
-``````````
-name = 'pos'
-type = 'integer'
-optional = 'self'
-[[.returns]]
-
-[sort]
-[[.args]]
-name = 'list'
-type = 'table'
-``````````
-name = 'comp'
-type = 'function'
-optional = 'self'
-
-[unpack]
-version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4'}
-[[.args]]
-name = 'list'
-type = 'table'
-``````````
-name = 'i'
-type = 'integer'
-optional = 'after'
-type = 1
-``````````
-name = 'j'
-type = 'integer'
-optional = 'self'
diff --git a/server-beta/libs/@lua/utf8.lni b/server-beta/libs/@lua/utf8.lni
deleted file mode 100644
index 876fdd9c..00000000
--- a/server-beta/libs/@lua/utf8.lni
+++ /dev/null
@@ -1,174 +0,0 @@
-[utf8]
-version = {'Lua 5.3', 'Lua 5.4'}
-type = 'table'
-[[.source]]
-type = 'global'
-``````````
-type = 'library'
-name = 'utf8'
-
-<default>
-version = {'Lua 5.3', 'Lua 5.4'}
-type = 'function'
-parent = {
- 1 = {
- type = 'global',
- name = 'utf8',
- },
- 2 = {
- type = 'library',
- name = 'utf8',
- }
-}
-
-[char]
-[[.args]]
-name = 'code'
-type = 'integer'
-``````````
-type = '...'
-[[.returns]]
-type = 'string'
-
-[charpattern]
-type = 'string'
-code = [=['[\0-\x7F\xC2-\xF4][\x80-\xBF]*']=]
-
-[codes]
-[[.args]]
-type = 'string'
-[[.returns]]
-type = 'function'
-returns = {
- 1 = {
- name = 'p',
- type = 'integer',
- },
- 2 = {
- name = 'c',
- type = 'integer',
- }
-}
-
-["codes Lua 5.4"]
-name = 'codes'
-version = 'Lua 5.4'
-[[.args]]
-type = 'string'
-``````````
-name = 'lax'
-type = 'boolean'
-optional = 'after'
-[[.returns]]
-type = 'function'
-returns = {
- 1 = {
- name = 'p',
- type = 'integer',
- },
- 2 = {
- name = 'c',
- type = 'integer',
- }
-}
-
-[codepoint]
-[[.args]]
-type = 'string'
-``````````
-name = 'i'
-type = 'integer'
-optional = 'after'
-default = 1
-``````````
-name = 'j'
-type = 'integer'
-optional = 'self'
-[[.returns]]
-name = 'code'
-type = 'integer'
-``````````
-type = '...'
-
-["codepoint Lua 5.4"]
-name = 'codepoint'
-version = 'Lua 5.4'
-[[.args]]
-type = 'string'
-``````````
-name = 'i'
-type = 'integer'
-optional = 'after'
-default = 1
-``````````
-name = 'j'
-type = 'integer'
-optional = 'after'
-``````````
-name = 'lax'
-type = 'boolean'
-optional = 'after'
-[[.returns]]
-name = 'code'
-type = 'integer'
-``````````
-type = '...'
-
-[len]
-[[.args]]
-type = 'string'
-``````````
-name = 'i'
-type = 'integer'
-optional = 'after'
-default = 1
-``````````
-name = 'j'
-type = 'integer'
-optional = 'self'
-default = -1
-[[.returns]]
-type = 'integer'
-``````````
-name = 'errpos'
-type = 'integer'
-optional = 'self'
-
-["len Lua 5.4"]
-name = 'len'
-version = 'Lua 5.4'
-[[.args]]
-type = 'string'
-``````````
-name = 'i'
-type = 'integer'
-optional = 'after'
-default = 1
-``````````
-name = 'j'
-type = 'integer'
-optional = 'after'
-default = -1
-``````````
-name = 'lax'
-type = 'boolean'
-optional = 'after'
-[[.returns]]
-type = 'integer'
-``````````
-name = 'errpos'
-type = 'integer'
-optional = 'self'
-
-[offset]
-[[.args]]
-type = 'string'
-``````````
-name = 'n'
-type = 'integer'
-``````````
-name = 'i'
-type = 'integer'
-[[.returns]]
-name = 'p'
-type = 'integer'
diff --git a/server-beta/libs/@luaJIT/bit.lni b/server-beta/libs/@luaJIT/bit.lni
deleted file mode 100644
index 742d2bc5..00000000
--- a/server-beta/libs/@luaJIT/bit.lni
+++ /dev/null
@@ -1,145 +0,0 @@
-<default>
-version = LuaJIT
-
-[bit]
-type = table
-[[.source]]
-type = library
-name = bit
-``````````
-type = global
-name = bit
-
-<default>
-type = function
-parent = {
- 1 = {
- type = 'library',
- name = 'bit',
- },
- 2 = {
- type = 'global',
- name = 'bit',
- },
-}
-
-[tobit]
-[[.args]]
-name = x
-type = number
-[[.returns]]
-type = number
-
-[tohex]
-[[.args]]
-name = x
-type = number
-``````````
-name = n
-type = number
-optional = after
-[[.returns]]
-type = number
-
-[bnot]
-[[.args]]
-name = x
-type = number
-[[.returns]]
-type = number
-
-[bor]
-[[.args]]
-name = x1
-type = number
-``````````
-name = x2
-type = number
-optional = after
-`````````
-type = '...'
-[[.returns]]
-type = number
-
-[band]
-[[.args]]
-name = x1
-type = number
-``````````
-name = x2
-type = number
-optional = after
-`````````
-type = '...'
-[[.returns]]
-type = number
-
-[bxor]
-[[.args]]
-name = x1
-type = number
-``````````
-name = x2
-type = number
-optional = after
-`````````
-type = '...'
-[[.returns]]
-type = number
-
-[lshift]
-[[.args]]
-name = x
-type = number
-``````````
-name = n
-type = number
-[[.returns]]
-type = number
-
-[rshift]
-[[.args]]
-name = x
-type = number
-``````````
-name = n
-type = number
-[[.returns]]
-type = number
-
-[arshift]
-[[.args]]
-name = x
-type = number
-``````````
-name = n
-type = number
-[[.returns]]
-type = number
-
-[rol]
-[[.args]]
-name = x
-type = number
-``````````
-name = n
-type = number
-[[.returns]]
-type = number
-
-[ror]
-[[.args]]
-name = x
-type = number
-``````````
-name = n
-type = number
-[[.returns]]
-type = number
-
-[bswap]
-[[.args]]
-name = x
-type = number
-[[.returns]]
-type = number
diff --git a/server-beta/libs/@luaJIT/ffi.lni b/server-beta/libs/@luaJIT/ffi.lni
deleted file mode 100644
index 567999f3..00000000
--- a/server-beta/libs/@luaJIT/ffi.lni
+++ /dev/null
@@ -1,194 +0,0 @@
-<default>
-version = LuaJIT
-
-[ffi]
-type = table
-[[.source]]
-type = library
-name = ffi
-
-<default>
-type = function
-parent = {
- 1 = {
- type = 'library',
- name = 'ffi',
- },
-}
-
-[cdef]
-[[.args]]
-name = def
-type = string
-
-[C]
-type = namespace
-
-[load]
-[[.args]]
-name = name
-type = string
-``````````
-name = global
-type = boolean
-optional = after
-[[.returns]]
-name = clib
-type = namespace
-
-[new]
-[[.args]]
-name = ct
-type = string
-``````````
-name = nelem
-type = number
-optional = self
-``````````
-name = init
-optional = after
-``````````
-type = '...'
-[[.returns]]
-type = cdata
-
-[typeof]
-[[.args]]
-name = ct
-type = string
-[[.returns]]
-type = ctype
-
-[cast]
-[[.args]]
-name = ct
-type = string
-``````````
-name = init
-[[.returns]]
-type = cdata
-
-[metatype]
-[[.args]]
-name = ct
-type = string
-``````````
-name = metatable
-type = table
-[[.returns]]
-type = ctype
-
-[gc]
-[[.args]]
-type = cdata
-``````````
-name = finalizer
-type = function
-[[.returns]]
-type = cdata
-
-[sizeof]
-[[.args]]
-name = ct
-type = string
-``````````
-name = nelem
-type = number
-optional = after
-[[.returns]]
-name = size
-type = number
-
-[alignof]
-[[.args]]
-name = ct
-type = string
-[[.returns]]
-name = align
-type = number
-
-[offsetof]
-[[.args]]
-name = ct
-type = string
-``````````
-name = field
-type = string
-[[.returns]]
-name = ofs
-type = number
-``````````
-name = bpos
-type = number
-optional = after
-``````````
-name = bsize
-type = number
-
-[istype]
-[[.args]]
-name = ct
-type = string
-``````````
-name = obj
-[[.returns]]
-name = status
-type = boolean
-
-[errno]
-[[.args]]
-name = newerr
-type = number
-optional = after
-[[.returns]]
-name = err
-type = number
-
-[string]
-[[.args]]
-name = ptr
-type = number
-``````````
-name = len
-type = number
-optional = after
-[[.returns]]
-name = str
-type = string
-
-[copy]
-[[.args]]
-name = dst
-type = number
-``````````
-name = src
-type = number/string
-``````````
-name = len
-type = number
-
-[fill]
-[[.args]]
-name = dst
-type = number
-``````````
-name = len
-type = number
-``````````
-name = c
-type = string
-optional = after
-
-[abi]
-[[.args]]
-name = param
-type = string
-[[.returns]]
-name = status
-type = boolean
-
-[os]
-type = 'string'
-
-[arch]
-type = 'string'
diff --git a/server-beta/libs/@luaJIT/jit.lni b/server-beta/libs/@luaJIT/jit.lni
deleted file mode 100644
index d7c91d11..00000000
--- a/server-beta/libs/@luaJIT/jit.lni
+++ /dev/null
@@ -1,73 +0,0 @@
-<default>
-version = LuaJIT
-
-[jit]
-type = table
-[[.source]]
-type = library
-name = jit
-``````````
-type = global
-name = jit
-
-<default>
-type = function
-parent = {
- 1 = {
- type = 'library',
- name = 'jit',
- },
- 2 = {
- type = 'global',
- name = 'jit',
- },
-}
-
-[on]
-[[.args]]
-type = {'function', 'boolean'}
-optional = after
-``````````
-type = boolean
-optional = after
-
-[off]
-[[.args]]
-type = {'function', 'boolean'}
-optional = after
-``````````
-type = boolean
-optional = after
-
-[flush]
-[[.args]]
-type = {'function', 'boolean'}
-optional = after
-``````````
-type = boolean
-optional = after
-
-[status]
-[[.returns]]
-name = status
-type = boolean
-``````````
-type = '...'
-
-[version]
-type = string
-
-[version_num]
-type = string
-
-[os]
-type = string
-
-[arch]
-type = string
-
-[opt]
-type = table
-
-[util]
-type = table
diff --git a/server-beta/libs/bee/filesystem.lni b/server-beta/libs/bee/filesystem.lni
deleted file mode 100644
index 627dbfe6..00000000
--- a/server-beta/libs/bee/filesystem.lni
+++ /dev/null
@@ -1,25 +0,0 @@
-[filesystem]
-type = 'table'
-nick = 'bee::filesystem'
-[[.source]]
-type = 'library'
-name = 'bee.filesystem'
-
-<default>
-type = 'function'
-parent = {
- 1 = {
- type = 'library',
- name = 'bee.filesystem',
- nick = 'fs',
- },
-}
-
-[current_path]
-[[.args]]
-name = 'new_path'
-type = 'bee::filesystem'
-optional = 'self'
-[[.returns]]
-type = 'bee::filesystem'
-optional = 'self'
diff --git a/server-beta/libs/jass/common.lni b/server-beta/libs/jass/common.lni
deleted file mode 100644
index 3c0e3ae7..00000000
--- a/server-beta/libs/jass/common.lni
+++ /dev/null
@@ -1,12452 +0,0 @@
-[common]
-type = 'table'
-[[.source]]
-type = 'library'
-name = 'jass.common'
-nick = 'jass'
-
-<default>
-type = 'function'
-parent = {
- 1 = {
- type = 'library',
- name = 'jass.common',
- nick = 'jass',
- },
-}
-
-[ConvertRace]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "race"
-
-[ConvertAllianceType]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "alliancetype"
-
-[ConvertRacePref]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "racepreference"
-
-[ConvertIGameState]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "igamestate"
-
-[ConvertFGameState]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "fgamestate"
-
-[ConvertPlayerState]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "playerstate"
-
-[ConvertPlayerScore]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "playerscore"
-
-[ConvertPlayerGameResult]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "playergameresult"
-
-[ConvertUnitState]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "unitstate"
-
-[ConvertAIDifficulty]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "aidifficulty"
-
-[ConvertGameEvent]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "gameevent"
-
-[ConvertPlayerEvent]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "playerevent"
-
-[ConvertPlayerUnitEvent]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "playerunitevent"
-
-[ConvertWidgetEvent]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "widgetevent"
-
-[ConvertDialogEvent]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "dialogevent"
-
-[ConvertUnitEvent]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "unitevent"
-
-[ConvertLimitOp]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "limitop"
-
-[ConvertUnitType]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "unittype"
-
-[ConvertGameSpeed]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "gamespeed"
-
-[ConvertPlacement]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "placement"
-
-[ConvertStartLocPrio]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "startlocprio"
-
-[ConvertGameDifficulty]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "gamedifficulty"
-
-[ConvertGameType]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "gametype"
-
-[ConvertMapFlag]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "mapflag"
-
-[ConvertMapVisibility]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "mapvisibility"
-
-[ConvertMapSetting]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "mapsetting"
-
-[ConvertMapDensity]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "mapdensity"
-
-[ConvertMapControl]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "mapcontrol"
-
-[ConvertPlayerColor]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "playercolor"
-
-[ConvertPlayerSlotState]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "playerslotstate"
-
-[ConvertVolumeGroup]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "volumegroup"
-
-[ConvertCameraField]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "camerafield"
-
-[ConvertBlendMode]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "blendmode"
-
-[ConvertRarityControl]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "raritycontrol"
-
-[ConvertTexMapFlags]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "texmapflags"
-
-[ConvertFogState]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "fogstate"
-
-[ConvertEffectType]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "effecttype"
-
-[ConvertVersion]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "version"
-
-[ConvertItemType]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "itemtype"
-
-[ConvertAttackType]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "attacktype"
-
-[ConvertDamageType]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "damagetype"
-
-[ConvertWeaponType]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "weapontype"
-
-[ConvertSoundType]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "soundtype"
-
-[ConvertPathingType]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "pathingtype"
-
-[OrderId]
-[[.args]]
-name = "orderIdString"
-type = "string"
-[[.returns]]
-type = "integer"
-
-[OrderId2String]
-[[.args]]
-name = "orderId"
-type = "integer"
-[[.returns]]
-type = "string"
-
-[UnitId]
-[[.args]]
-name = "unitIdString"
-type = "string"
-[[.returns]]
-type = "integer"
-
-[UnitId2String]
-[[.args]]
-name = "unitId"
-type = "integer"
-[[.returns]]
-type = "string"
-
-[AbilityId]
-[[.args]]
-name = "abilityIdString"
-type = "string"
-[[.returns]]
-type = "integer"
-
-[AbilityId2String]
-[[.args]]
-name = "abilityId"
-type = "integer"
-[[.returns]]
-type = "string"
-
-[GetObjectName]
-[[.args]]
-name = "objectId"
-type = "integer"
-[[.returns]]
-type = "string"
-
-[Deg2Rad]
-[[.args]]
-name = "degrees"
-type = "number"
-[[.returns]]
-type = "number"
-
-[Rad2Deg]
-[[.args]]
-name = "radians"
-type = "number"
-[[.returns]]
-type = "number"
-
-[Sin]
-[[.args]]
-name = "radians"
-type = "number"
-[[.returns]]
-type = "number"
-
-[Cos]
-[[.args]]
-name = "radians"
-type = "number"
-[[.returns]]
-type = "number"
-
-[Tan]
-[[.args]]
-name = "radians"
-type = "number"
-[[.returns]]
-type = "number"
-
-[Asin]
-[[.args]]
-name = "y"
-type = "number"
-[[.returns]]
-type = "number"
-
-[Acos]
-[[.args]]
-name = "x"
-type = "number"
-[[.returns]]
-type = "number"
-
-[Atan]
-[[.args]]
-name = "x"
-type = "number"
-[[.returns]]
-type = "number"
-
-[Atan2]
-[[.args]]
-name = "y"
-type = "number"
-``````````
-name = "x"
-type = "number"
-[[.returns]]
-type = "number"
-
-[SquareRoot]
-[[.args]]
-name = "x"
-type = "number"
-[[.returns]]
-type = "number"
-
-[Pow]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "power"
-type = "number"
-[[.returns]]
-type = "number"
-
-[I2R]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "number"
-
-[R2I]
-[[.args]]
-name = "r"
-type = "number"
-[[.returns]]
-type = "integer"
-
-[I2S]
-[[.args]]
-name = "i"
-type = "integer"
-[[.returns]]
-type = "string"
-
-[R2S]
-[[.args]]
-name = "r"
-type = "number"
-[[.returns]]
-type = "string"
-
-[R2SW]
-[[.args]]
-name = "r"
-type = "number"
-``````````
-name = "width"
-type = "integer"
-``````````
-name = "precision"
-type = "integer"
-[[.returns]]
-type = "string"
-
-[S2I]
-[[.args]]
-name = "s"
-type = "string"
-[[.returns]]
-type = "integer"
-
-[S2R]
-[[.args]]
-name = "s"
-type = "string"
-[[.returns]]
-type = "number"
-
-[GetHandleId]
-[[.args]]
-name = "h"
-type = "handle"
-[[.returns]]
-type = "integer"
-
-[SubString]
-[[.args]]
-name = "source"
-type = "string"
-``````````
-name = "start"
-type = "integer"
-``````````
-name = "end"
-type = "integer"
-[[.returns]]
-type = "string"
-
-[StringLength]
-[[.args]]
-name = "s"
-type = "string"
-[[.returns]]
-type = "integer"
-
-[StringCase]
-[[.args]]
-name = "source"
-type = "string"
-``````````
-name = "upper"
-type = "boolean"
-[[.returns]]
-type = "string"
-
-[StringHash]
-[[.args]]
-name = "s"
-type = "string"
-[[.returns]]
-type = "integer"
-
-[GetLocalizedString]
-[[.args]]
-name = "source"
-type = "string"
-[[.returns]]
-type = "string"
-
-[GetLocalizedHotkey]
-[[.args]]
-name = "source"
-type = "string"
-[[.returns]]
-type = "integer"
-
-[SetMapName]
-[[.args]]
-name = "name"
-type = "string"
-
-[SetMapDescription]
-[[.args]]
-name = "description"
-type = "string"
-
-[SetTeams]
-[[.args]]
-name = "teamcount"
-type = "integer"
-
-[SetPlayers]
-[[.args]]
-name = "playercount"
-type = "integer"
-
-[DefineStartLocation]
-[[.args]]
-name = "whichStartLoc"
-type = "integer"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-
-[DefineStartLocationLoc]
-[[.args]]
-name = "whichStartLoc"
-type = "integer"
-``````````
-name = "whichLocation"
-type = "location"
-
-[SetStartLocPrioCount]
-[[.args]]
-name = "whichStartLoc"
-type = "integer"
-``````````
-name = "prioSlotCount"
-type = "integer"
-
-[SetStartLocPrio]
-[[.args]]
-name = "whichStartLoc"
-type = "integer"
-``````````
-name = "prioSlotIndex"
-type = "integer"
-``````````
-name = "otherStartLocIndex"
-type = "integer"
-``````````
-name = "priority"
-type = "startlocprio"
-
-[GetStartLocPrioSlot]
-[[.args]]
-name = "whichStartLoc"
-type = "integer"
-``````````
-name = "prioSlotIndex"
-type = "integer"
-[[.returns]]
-type = "integer"
-
-[GetStartLocPrio]
-[[.args]]
-name = "whichStartLoc"
-type = "integer"
-``````````
-name = "prioSlotIndex"
-type = "integer"
-[[.returns]]
-type = "startlocprio"
-
-[SetGameTypeSupported]
-[[.args]]
-name = "whichGameType"
-type = "gametype"
-``````````
-name = "value"
-type = "boolean"
-
-[SetMapFlag]
-[[.args]]
-name = "whichMapFlag"
-type = "mapflag"
-``````````
-name = "value"
-type = "boolean"
-
-[SetGamePlacement]
-[[.args]]
-name = "whichPlacementType"
-type = "placement"
-
-[SetGameSpeed]
-[[.args]]
-name = "whichspeed"
-type = "gamespeed"
-
-[SetGameDifficulty]
-[[.args]]
-name = "whichdifficulty"
-type = "gamedifficulty"
-
-[SetResourceDensity]
-[[.args]]
-name = "whichdensity"
-type = "mapdensity"
-
-[SetCreatureDensity]
-[[.args]]
-name = "whichdensity"
-type = "mapdensity"
-
-[GetTeams]
-[[.returns]]
-type = "integer"
-
-[GetPlayers]
-[[.returns]]
-type = "integer"
-
-[IsGameTypeSupported]
-[[.args]]
-name = "whichGameType"
-type = "gametype"
-[[.returns]]
-type = "boolean"
-
-[GetGameTypeSelected]
-[[.returns]]
-type = "gametype"
-
-[IsMapFlagSet]
-[[.args]]
-name = "whichMapFlag"
-type = "mapflag"
-[[.returns]]
-type = "boolean"
-
-[GetGamePlacement]
-[[.returns]]
-type = "placement"
-
-[GetGameSpeed]
-[[.returns]]
-type = "gamespeed"
-
-[GetGameDifficulty]
-[[.returns]]
-type = "gamedifficulty"
-
-[GetResourceDensity]
-[[.returns]]
-type = "mapdensity"
-
-[GetCreatureDensity]
-[[.returns]]
-type = "mapdensity"
-
-[GetStartLocationX]
-[[.args]]
-name = "whichStartLocation"
-type = "integer"
-[[.returns]]
-type = "number"
-
-[GetStartLocationY]
-[[.args]]
-name = "whichStartLocation"
-type = "integer"
-[[.returns]]
-type = "number"
-
-[GetStartLocationLoc]
-[[.args]]
-name = "whichStartLocation"
-type = "integer"
-[[.returns]]
-type = "location"
-
-[SetPlayerTeam]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "whichTeam"
-type = "integer"
-
-[SetPlayerStartLocation]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "startLocIndex"
-type = "integer"
-
-[ForcePlayerStartLocation]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "startLocIndex"
-type = "integer"
-
-[SetPlayerColor]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "color"
-type = "playercolor"
-
-[SetPlayerAlliance]
-[[.args]]
-name = "sourcePlayer"
-type = "player"
-``````````
-name = "otherPlayer"
-type = "player"
-``````````
-name = "whichAllianceSetting"
-type = "alliancetype"
-``````````
-name = "value"
-type = "boolean"
-
-[SetPlayerTaxRate]
-[[.args]]
-name = "sourcePlayer"
-type = "player"
-``````````
-name = "otherPlayer"
-type = "player"
-``````````
-name = "whichResource"
-type = "playerstate"
-``````````
-name = "rate"
-type = "integer"
-
-[SetPlayerRacePreference]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "whichRacePreference"
-type = "racepreference"
-
-[SetPlayerRaceSelectable]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "value"
-type = "boolean"
-
-[SetPlayerController]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "controlType"
-type = "mapcontrol"
-
-[SetPlayerName]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "name"
-type = "string"
-
-[SetPlayerOnScoreScreen]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "flag"
-type = "boolean"
-
-[GetPlayerTeam]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "integer"
-
-[GetPlayerStartLocation]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "integer"
-
-[GetPlayerColor]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "playercolor"
-
-[GetPlayerSelectable]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[GetPlayerController]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "mapcontrol"
-
-[GetPlayerSlotState]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "playerslotstate"
-
-[GetPlayerTaxRate]
-[[.args]]
-name = "sourcePlayer"
-type = "player"
-``````````
-name = "otherPlayer"
-type = "player"
-``````````
-name = "whichResource"
-type = "playerstate"
-[[.returns]]
-type = "integer"
-
-[IsPlayerRacePrefSet]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "pref"
-type = "racepreference"
-[[.returns]]
-type = "boolean"
-
-[GetPlayerName]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "string"
-
-[CreateTimer]
-[[.returns]]
-type = "timer"
-
-[DestroyTimer]
-[[.args]]
-name = "whichTimer"
-type = "timer"
-
-[TimerStart]
-[[.args]]
-name = "whichTimer"
-type = "timer"
-``````````
-name = "timeout"
-type = "number"
-``````````
-name = "periodic"
-type = "boolean"
-``````````
-name = "handlerFunc"
-type = "code"
-
-[TimerGetElapsed]
-[[.args]]
-name = "whichTimer"
-type = "timer"
-[[.returns]]
-type = "number"
-
-[TimerGetRemaining]
-[[.args]]
-name = "whichTimer"
-type = "timer"
-[[.returns]]
-type = "number"
-
-[TimerGetTimeout]
-[[.args]]
-name = "whichTimer"
-type = "timer"
-[[.returns]]
-type = "number"
-
-[PauseTimer]
-[[.args]]
-name = "whichTimer"
-type = "timer"
-
-[ResumeTimer]
-[[.args]]
-name = "whichTimer"
-type = "timer"
-
-[GetExpiredTimer]
-[[.returns]]
-type = "timer"
-
-[CreateGroup]
-[[.returns]]
-type = "group"
-
-[DestroyGroup]
-[[.args]]
-name = "whichGroup"
-type = "group"
-
-[GroupAddUnit]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "whichUnit"
-type = "unit"
-
-[GroupRemoveUnit]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "whichUnit"
-type = "unit"
-
-[GroupClear]
-[[.args]]
-name = "whichGroup"
-type = "group"
-
-[GroupEnumUnitsOfType]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "unitname"
-type = "string"
-``````````
-name = "filter"
-type = "boolexpr"
-
-[GroupEnumUnitsOfPlayer]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "whichPlayer"
-type = "player"
-``````````
-name = "filter"
-type = "boolexpr"
-
-[GroupEnumUnitsOfTypeCounted]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "unitname"
-type = "string"
-``````````
-name = "filter"
-type = "boolexpr"
-``````````
-name = "countLimit"
-type = "integer"
-
-[GroupEnumUnitsInRect]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "r"
-type = "rect"
-``````````
-name = "filter"
-type = "boolexpr"
-
-[GroupEnumUnitsInRectCounted]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "r"
-type = "rect"
-``````````
-name = "filter"
-type = "boolexpr"
-``````````
-name = "countLimit"
-type = "integer"
-
-[GroupEnumUnitsInRange]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "radius"
-type = "number"
-``````````
-name = "filter"
-type = "boolexpr"
-
-[GroupEnumUnitsInRangeOfLoc]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "whichLocation"
-type = "location"
-``````````
-name = "radius"
-type = "number"
-``````````
-name = "filter"
-type = "boolexpr"
-
-[GroupEnumUnitsInRangeCounted]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "radius"
-type = "number"
-``````````
-name = "filter"
-type = "boolexpr"
-``````````
-name = "countLimit"
-type = "integer"
-
-[GroupEnumUnitsInRangeOfLocCounted]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "whichLocation"
-type = "location"
-``````````
-name = "radius"
-type = "number"
-``````````
-name = "filter"
-type = "boolexpr"
-``````````
-name = "countLimit"
-type = "integer"
-
-[GroupEnumUnitsSelected]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "whichPlayer"
-type = "player"
-``````````
-name = "filter"
-type = "boolexpr"
-
-[GroupImmediateOrder]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "order"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[GroupImmediateOrderById]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "order"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[GroupPointOrder]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "order"
-type = "string"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[GroupPointOrderLoc]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "order"
-type = "string"
-``````````
-name = "whichLocation"
-type = "location"
-[[.returns]]
-type = "boolean"
-
-[GroupPointOrderById]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "order"
-type = "integer"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[GroupPointOrderByIdLoc]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "order"
-type = "integer"
-``````````
-name = "whichLocation"
-type = "location"
-[[.returns]]
-type = "boolean"
-
-[GroupTargetOrder]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "order"
-type = "string"
-``````````
-name = "targetWidget"
-type = "widget"
-[[.returns]]
-type = "boolean"
-
-[GroupTargetOrderById]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "order"
-type = "integer"
-``````````
-name = "targetWidget"
-type = "widget"
-[[.returns]]
-type = "boolean"
-
-[ForGroup]
-[[.args]]
-name = "whichGroup"
-type = "group"
-``````````
-name = "callback"
-type = "code"
-
-[FirstOfGroup]
-[[.args]]
-name = "whichGroup"
-type = "group"
-[[.returns]]
-type = "unit"
-
-[CreateForce]
-[[.returns]]
-type = "force"
-
-[DestroyForce]
-[[.args]]
-name = "whichForce"
-type = "force"
-
-[ForceAddPlayer]
-[[.args]]
-name = "whichForce"
-type = "force"
-``````````
-name = "whichPlayer"
-type = "player"
-
-[ForceRemovePlayer]
-[[.args]]
-name = "whichForce"
-type = "force"
-``````````
-name = "whichPlayer"
-type = "player"
-
-[ForceClear]
-[[.args]]
-name = "whichForce"
-type = "force"
-
-[ForceEnumPlayers]
-[[.args]]
-name = "whichForce"
-type = "force"
-``````````
-name = "filter"
-type = "boolexpr"
-
-[ForceEnumPlayersCounted]
-[[.args]]
-name = "whichForce"
-type = "force"
-``````````
-name = "filter"
-type = "boolexpr"
-``````````
-name = "countLimit"
-type = "integer"
-
-[ForceEnumAllies]
-[[.args]]
-name = "whichForce"
-type = "force"
-``````````
-name = "whichPlayer"
-type = "player"
-``````````
-name = "filter"
-type = "boolexpr"
-
-[ForceEnumEnemies]
-[[.args]]
-name = "whichForce"
-type = "force"
-``````````
-name = "whichPlayer"
-type = "player"
-``````````
-name = "filter"
-type = "boolexpr"
-
-[ForForce]
-[[.args]]
-name = "whichForce"
-type = "force"
-``````````
-name = "callback"
-type = "code"
-
-[Rect]
-[[.args]]
-name = "minx"
-type = "number"
-``````````
-name = "miny"
-type = "number"
-``````````
-name = "maxx"
-type = "number"
-``````````
-name = "maxy"
-type = "number"
-[[.returns]]
-type = "rect"
-
-[RectFromLoc]
-[[.args]]
-name = "min"
-type = "location"
-``````````
-name = "max"
-type = "location"
-[[.returns]]
-type = "rect"
-
-[RemoveRect]
-[[.args]]
-name = "whichRect"
-type = "rect"
-
-[SetRect]
-[[.args]]
-name = "whichRect"
-type = "rect"
-``````````
-name = "minx"
-type = "number"
-``````````
-name = "miny"
-type = "number"
-``````````
-name = "maxx"
-type = "number"
-``````````
-name = "maxy"
-type = "number"
-
-[SetRectFromLoc]
-[[.args]]
-name = "whichRect"
-type = "rect"
-``````````
-name = "min"
-type = "location"
-``````````
-name = "max"
-type = "location"
-
-[MoveRectTo]
-[[.args]]
-name = "whichRect"
-type = "rect"
-``````````
-name = "newCenterX"
-type = "number"
-``````````
-name = "newCenterY"
-type = "number"
-
-[MoveRectToLoc]
-[[.args]]
-name = "whichRect"
-type = "rect"
-``````````
-name = "newCenterLoc"
-type = "location"
-
-[GetRectCenterX]
-[[.args]]
-name = "whichRect"
-type = "rect"
-[[.returns]]
-type = "number"
-
-[GetRectCenterY]
-[[.args]]
-name = "whichRect"
-type = "rect"
-[[.returns]]
-type = "number"
-
-[GetRectMinX]
-[[.args]]
-name = "whichRect"
-type = "rect"
-[[.returns]]
-type = "number"
-
-[GetRectMinY]
-[[.args]]
-name = "whichRect"
-type = "rect"
-[[.returns]]
-type = "number"
-
-[GetRectMaxX]
-[[.args]]
-name = "whichRect"
-type = "rect"
-[[.returns]]
-type = "number"
-
-[GetRectMaxY]
-[[.args]]
-name = "whichRect"
-type = "rect"
-[[.returns]]
-type = "number"
-
-[CreateRegion]
-[[.returns]]
-type = "region"
-
-[RemoveRegion]
-[[.args]]
-name = "whichRegion"
-type = "region"
-
-[RegionAddRect]
-[[.args]]
-name = "whichRegion"
-type = "region"
-``````````
-name = "r"
-type = "rect"
-
-[RegionClearRect]
-[[.args]]
-name = "whichRegion"
-type = "region"
-``````````
-name = "r"
-type = "rect"
-
-[RegionAddCell]
-[[.args]]
-name = "whichRegion"
-type = "region"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-
-[RegionAddCellAtLoc]
-[[.args]]
-name = "whichRegion"
-type = "region"
-``````````
-name = "whichLocation"
-type = "location"
-
-[RegionClearCell]
-[[.args]]
-name = "whichRegion"
-type = "region"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-
-[RegionClearCellAtLoc]
-[[.args]]
-name = "whichRegion"
-type = "region"
-``````````
-name = "whichLocation"
-type = "location"
-
-[Location]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "location"
-
-[RemoveLocation]
-[[.args]]
-name = "whichLocation"
-type = "location"
-
-[MoveLocation]
-[[.args]]
-name = "whichLocation"
-type = "location"
-``````````
-name = "newX"
-type = "number"
-``````````
-name = "newY"
-type = "number"
-
-[GetLocationX]
-[[.args]]
-name = "whichLocation"
-type = "location"
-[[.returns]]
-type = "number"
-
-[GetLocationY]
-[[.args]]
-name = "whichLocation"
-type = "location"
-[[.returns]]
-type = "number"
-
-[GetLocationZ]
-[[.args]]
-name = "whichLocation"
-type = "location"
-[[.returns]]
-type = "number"
-
-[IsUnitInRegion]
-[[.args]]
-name = "whichRegion"
-type = "region"
-``````````
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "boolean"
-
-[IsPointInRegion]
-[[.args]]
-name = "whichRegion"
-type = "region"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[IsLocationInRegion]
-[[.args]]
-name = "whichRegion"
-type = "region"
-``````````
-name = "whichLocation"
-type = "location"
-[[.returns]]
-type = "boolean"
-
-[GetWorldBounds]
-[[.returns]]
-type = "rect"
-
-[CreateTrigger]
-[[.returns]]
-type = "trigger"
-
-[DestroyTrigger]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-
-[ResetTrigger]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-
-[EnableTrigger]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-
-[DisableTrigger]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-
-[IsTriggerEnabled]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-[[.returns]]
-type = "boolean"
-
-[TriggerWaitOnSleeps]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "flag"
-type = "boolean"
-
-[IsTriggerWaitOnSleeps]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-[[.returns]]
-type = "boolean"
-
-[GetFilterUnit]
-[[.returns]]
-type = "unit"
-
-[GetEnumUnit]
-[[.returns]]
-type = "unit"
-
-[GetFilterDestructable]
-[[.returns]]
-type = "destructable"
-
-[GetEnumDestructable]
-[[.returns]]
-type = "destructable"
-
-[GetFilterItem]
-[[.returns]]
-type = "item"
-
-[GetEnumItem]
-[[.returns]]
-type = "item"
-
-[GetFilterPlayer]
-[[.returns]]
-type = "player"
-
-[GetEnumPlayer]
-[[.returns]]
-type = "player"
-
-[GetTriggeringTrigger]
-[[.returns]]
-type = "trigger"
-
-[GetTriggerEventId]
-[[.returns]]
-type = "eventid"
-
-[GetTriggerEvalCount]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-[[.returns]]
-type = "integer"
-
-[GetTriggerExecCount]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-[[.returns]]
-type = "integer"
-
-[ExecuteFunc]
-[[.args]]
-name = "funcName"
-type = "string"
-
-[And]
-[[.args]]
-name = "operandA"
-type = "boolexpr"
-``````````
-name = "operandB"
-type = "boolexpr"
-[[.returns]]
-type = "boolexpr"
-
-[Or]
-[[.args]]
-name = "operandA"
-type = "boolexpr"
-``````````
-name = "operandB"
-type = "boolexpr"
-[[.returns]]
-type = "boolexpr"
-
-[Not]
-[[.args]]
-name = "operand"
-type = "boolexpr"
-[[.returns]]
-type = "boolexpr"
-
-[Condition]
-[[.args]]
-name = "func"
-type = "code"
-[[.returns]]
-type = "conditionfunc"
-
-[DestroyCondition]
-[[.args]]
-name = "c"
-type = "conditionfunc"
-
-[Filter]
-[[.args]]
-name = "func"
-type = "code"
-[[.returns]]
-type = "filterfunc"
-
-[DestroyFilter]
-[[.args]]
-name = "f"
-type = "filterfunc"
-
-[DestroyBoolExpr]
-[[.args]]
-name = "e"
-type = "boolexpr"
-
-[TriggerRegisterVariableEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "varName"
-type = "string"
-``````````
-name = "opcode"
-type = "limitop"
-``````````
-name = "limitval"
-type = "number"
-[[.returns]]
-type = "event"
-
-[TriggerRegisterTimerEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "timeout"
-type = "number"
-``````````
-name = "periodic"
-type = "boolean"
-[[.returns]]
-type = "event"
-
-[TriggerRegisterTimerExpireEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "t"
-type = "timer"
-[[.returns]]
-type = "event"
-
-[TriggerRegisterGameStateEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichState"
-type = "gamestate"
-``````````
-name = "opcode"
-type = "limitop"
-``````````
-name = "limitval"
-type = "number"
-[[.returns]]
-type = "event"
-
-[TriggerRegisterDialogEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichDialog"
-type = "dialog"
-[[.returns]]
-type = "event"
-
-[TriggerRegisterDialogButtonEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichButton"
-type = "button"
-[[.returns]]
-type = "event"
-
-[GetEventGameState]
-[[.returns]]
-type = "gamestate"
-
-[TriggerRegisterGameEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichGameEvent"
-type = "gameevent"
-[[.returns]]
-type = "event"
-
-[GetWinningPlayer]
-[[.returns]]
-type = "player"
-
-[TriggerRegisterEnterRegion]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichRegion"
-type = "region"
-``````````
-name = "filter"
-type = "boolexpr"
-[[.returns]]
-type = "event"
-
-[GetTriggeringRegion]
-[[.returns]]
-type = "region"
-
-[GetEnteringUnit]
-[[.returns]]
-type = "unit"
-
-[TriggerRegisterLeaveRegion]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichRegion"
-type = "region"
-``````````
-name = "filter"
-type = "boolexpr"
-[[.returns]]
-type = "event"
-
-[GetLeavingUnit]
-[[.returns]]
-type = "unit"
-
-[TriggerRegisterTrackableHitEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "t"
-type = "trackable"
-[[.returns]]
-type = "event"
-
-[TriggerRegisterTrackableTrackEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "t"
-type = "trackable"
-[[.returns]]
-type = "event"
-
-[GetTriggeringTrackable]
-[[.returns]]
-type = "trackable"
-
-[GetClickedButton]
-[[.returns]]
-type = "button"
-
-[GetClickedDialog]
-[[.returns]]
-type = "dialog"
-
-[GetTournamentFinishSoonTimeRemaining]
-[[.returns]]
-type = "number"
-
-[GetTournamentFinishNowRule]
-[[.returns]]
-type = "integer"
-
-[GetTournamentFinishNowPlayer]
-[[.returns]]
-type = "player"
-
-[GetTournamentScore]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "integer"
-
-[GetSaveBasicFilename]
-[[.returns]]
-type = "string"
-
-[TriggerRegisterPlayerEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichPlayer"
-type = "player"
-``````````
-name = "whichPlayerEvent"
-type = "playerevent"
-[[.returns]]
-type = "event"
-
-[GetTriggerPlayer]
-[[.returns]]
-type = "player"
-
-[TriggerRegisterPlayerUnitEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichPlayer"
-type = "player"
-``````````
-name = "whichPlayerUnitEvent"
-type = "playerunitevent"
-``````````
-name = "filter"
-type = "boolexpr"
-[[.returns]]
-type = "event"
-
-[GetLevelingUnit]
-[[.returns]]
-type = "unit"
-
-[GetLearningUnit]
-[[.returns]]
-type = "unit"
-
-[GetLearnedSkill]
-[[.returns]]
-type = "integer"
-
-[GetLearnedSkillLevel]
-[[.returns]]
-type = "integer"
-
-[GetRevivableUnit]
-[[.returns]]
-type = "unit"
-
-[GetRevivingUnit]
-[[.returns]]
-type = "unit"
-
-[GetAttacker]
-[[.returns]]
-type = "unit"
-
-[GetRescuer]
-[[.returns]]
-type = "unit"
-
-[GetDyingUnit]
-[[.returns]]
-type = "unit"
-
-[GetKillingUnit]
-[[.returns]]
-type = "unit"
-
-[GetDecayingUnit]
-[[.returns]]
-type = "unit"
-
-[GetConstructingStructure]
-[[.returns]]
-type = "unit"
-
-[GetCancelledStructure]
-[[.returns]]
-type = "unit"
-
-[GetConstructedStructure]
-[[.returns]]
-type = "unit"
-
-[GetResearchingUnit]
-[[.returns]]
-type = "unit"
-
-[GetResearched]
-[[.returns]]
-type = "integer"
-
-[GetTrainedUnitType]
-[[.returns]]
-type = "integer"
-
-[GetTrainedUnit]
-[[.returns]]
-type = "unit"
-
-[GetDetectedUnit]
-[[.returns]]
-type = "unit"
-
-[GetSummoningUnit]
-[[.returns]]
-type = "unit"
-
-[GetSummonedUnit]
-[[.returns]]
-type = "unit"
-
-[GetTransportUnit]
-[[.returns]]
-type = "unit"
-
-[GetLoadedUnit]
-[[.returns]]
-type = "unit"
-
-[GetSellingUnit]
-[[.returns]]
-type = "unit"
-
-[GetSoldUnit]
-[[.returns]]
-type = "unit"
-
-[GetBuyingUnit]
-[[.returns]]
-type = "unit"
-
-[GetSoldItem]
-[[.returns]]
-type = "item"
-
-[GetChangingUnit]
-[[.returns]]
-type = "unit"
-
-[GetChangingUnitPrevOwner]
-[[.returns]]
-type = "player"
-
-[GetManipulatingUnit]
-[[.returns]]
-type = "unit"
-
-[GetManipulatedItem]
-[[.returns]]
-type = "item"
-
-[GetOrderedUnit]
-[[.returns]]
-type = "unit"
-
-[GetIssuedOrderId]
-[[.returns]]
-type = "integer"
-
-[GetOrderPointX]
-[[.returns]]
-type = "number"
-
-[GetOrderPointY]
-[[.returns]]
-type = "number"
-
-[GetOrderPointLoc]
-[[.returns]]
-type = "location"
-
-[GetOrderTarget]
-[[.returns]]
-type = "widget"
-
-[GetOrderTargetDestructable]
-[[.returns]]
-type = "destructable"
-
-[GetOrderTargetItem]
-[[.returns]]
-type = "item"
-
-[GetOrderTargetUnit]
-[[.returns]]
-type = "unit"
-
-[GetSpellAbilityUnit]
-[[.returns]]
-type = "unit"
-
-[GetSpellAbilityId]
-[[.returns]]
-type = "integer"
-
-[GetSpellAbility]
-[[.returns]]
-type = "ability"
-
-[GetSpellTargetLoc]
-[[.returns]]
-type = "location"
-
-[GetSpellTargetX]
-[[.returns]]
-type = "number"
-
-[GetSpellTargetY]
-[[.returns]]
-type = "number"
-
-[GetSpellTargetDestructable]
-[[.returns]]
-type = "destructable"
-
-[GetSpellTargetItem]
-[[.returns]]
-type = "item"
-
-[GetSpellTargetUnit]
-[[.returns]]
-type = "unit"
-
-[TriggerRegisterPlayerAllianceChange]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichPlayer"
-type = "player"
-``````````
-name = "whichAlliance"
-type = "alliancetype"
-[[.returns]]
-type = "event"
-
-[TriggerRegisterPlayerStateEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichPlayer"
-type = "player"
-``````````
-name = "whichState"
-type = "playerstate"
-``````````
-name = "opcode"
-type = "limitop"
-``````````
-name = "limitval"
-type = "number"
-[[.returns]]
-type = "event"
-
-[GetEventPlayerState]
-[[.returns]]
-type = "playerstate"
-
-[TriggerRegisterPlayerChatEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichPlayer"
-type = "player"
-``````````
-name = "chatMessageToDetect"
-type = "string"
-``````````
-name = "exactMatchOnly"
-type = "boolean"
-[[.returns]]
-type = "event"
-
-[GetEventPlayerChatString]
-[[.returns]]
-type = "string"
-
-[GetEventPlayerChatStringMatched]
-[[.returns]]
-type = "string"
-
-[TriggerRegisterDeathEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichWidget"
-type = "widget"
-[[.returns]]
-type = "event"
-
-[GetTriggerUnit]
-[[.returns]]
-type = "unit"
-
-[TriggerRegisterUnitStateEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichState"
-type = "unitstate"
-``````````
-name = "opcode"
-type = "limitop"
-``````````
-name = "limitval"
-type = "number"
-[[.returns]]
-type = "event"
-
-[GetEventUnitState]
-[[.returns]]
-type = "unitstate"
-
-[TriggerRegisterUnitEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichEvent"
-type = "unitevent"
-[[.returns]]
-type = "event"
-
-[GetEventDamage]
-[[.returns]]
-type = "number"
-
-[GetEventDamageSource]
-[[.returns]]
-type = "unit"
-
-[GetEventDetectingPlayer]
-[[.returns]]
-type = "player"
-
-[TriggerRegisterFilterUnitEvent]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichEvent"
-type = "unitevent"
-``````````
-name = "filter"
-type = "boolexpr"
-[[.returns]]
-type = "event"
-
-[GetEventTargetUnit]
-[[.returns]]
-type = "unit"
-
-[TriggerRegisterUnitInRange]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichUnit"
-type = "unit"
-``````````
-name = "range"
-type = "number"
-``````````
-name = "filter"
-type = "boolexpr"
-[[.returns]]
-type = "event"
-
-[TriggerAddCondition]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "condition"
-type = "boolexpr"
-[[.returns]]
-type = "triggercondition"
-
-[TriggerRemoveCondition]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichCondition"
-type = "triggercondition"
-
-[TriggerClearConditions]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-
-[TriggerAddAction]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "actionFunc"
-type = "code"
-[[.returns]]
-type = "triggeraction"
-
-[TriggerRemoveAction]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-``````````
-name = "whichAction"
-type = "triggeraction"
-
-[TriggerClearActions]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-
-[TriggerSleepAction]
-[[.args]]
-name = "timeout"
-type = "number"
-
-[TriggerWaitForSound]
-[[.args]]
-name = "s"
-type = "sound"
-``````````
-name = "offset"
-type = "number"
-
-[TriggerEvaluate]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-[[.returns]]
-type = "boolean"
-
-[TriggerExecute]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-
-[TriggerExecuteWait]
-[[.args]]
-name = "whichTrigger"
-type = "trigger"
-
-[TriggerSyncStart]
-
-[TriggerSyncReady]
-
-[GetWidgetLife]
-[[.args]]
-name = "whichWidget"
-type = "widget"
-[[.returns]]
-type = "number"
-
-[SetWidgetLife]
-[[.args]]
-name = "whichWidget"
-type = "widget"
-``````````
-name = "newLife"
-type = "number"
-
-[GetWidgetX]
-[[.args]]
-name = "whichWidget"
-type = "widget"
-[[.returns]]
-type = "number"
-
-[GetWidgetY]
-[[.args]]
-name = "whichWidget"
-type = "widget"
-[[.returns]]
-type = "number"
-
-[GetTriggerWidget]
-[[.returns]]
-type = "widget"
-
-[CreateDestructable]
-[[.args]]
-name = "objectid"
-type = "integer"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "face"
-type = "number"
-``````````
-name = "scale"
-type = "number"
-``````````
-name = "variation"
-type = "integer"
-[[.returns]]
-type = "destructable"
-
-[CreateDestructableZ]
-[[.args]]
-name = "objectid"
-type = "integer"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "z"
-type = "number"
-``````````
-name = "face"
-type = "number"
-``````````
-name = "scale"
-type = "number"
-``````````
-name = "variation"
-type = "integer"
-[[.returns]]
-type = "destructable"
-
-[CreateDeadDestructable]
-[[.args]]
-name = "objectid"
-type = "integer"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "face"
-type = "number"
-``````````
-name = "scale"
-type = "number"
-``````````
-name = "variation"
-type = "integer"
-[[.returns]]
-type = "destructable"
-
-[CreateDeadDestructableZ]
-[[.args]]
-name = "objectid"
-type = "integer"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "z"
-type = "number"
-``````````
-name = "face"
-type = "number"
-``````````
-name = "scale"
-type = "number"
-``````````
-name = "variation"
-type = "integer"
-[[.returns]]
-type = "destructable"
-
-[RemoveDestructable]
-[[.args]]
-name = "d"
-type = "destructable"
-
-[KillDestructable]
-[[.args]]
-name = "d"
-type = "destructable"
-
-[SetDestructableInvulnerable]
-[[.args]]
-name = "d"
-type = "destructable"
-``````````
-name = "flag"
-type = "boolean"
-
-[IsDestructableInvulnerable]
-[[.args]]
-name = "d"
-type = "destructable"
-[[.returns]]
-type = "boolean"
-
-[EnumDestructablesInRect]
-[[.args]]
-name = "r"
-type = "rect"
-``````````
-name = "filter"
-type = "boolexpr"
-``````````
-name = "actionFunc"
-type = "code"
-
-[GetDestructableTypeId]
-[[.args]]
-name = "d"
-type = "destructable"
-[[.returns]]
-type = "integer"
-
-[GetDestructableX]
-[[.args]]
-name = "d"
-type = "destructable"
-[[.returns]]
-type = "number"
-
-[GetDestructableY]
-[[.args]]
-name = "d"
-type = "destructable"
-[[.returns]]
-type = "number"
-
-[SetDestructableLife]
-[[.args]]
-name = "d"
-type = "destructable"
-``````````
-name = "life"
-type = "number"
-
-[GetDestructableLife]
-[[.args]]
-name = "d"
-type = "destructable"
-[[.returns]]
-type = "number"
-
-[SetDestructableMaxLife]
-[[.args]]
-name = "d"
-type = "destructable"
-``````````
-name = "max"
-type = "number"
-
-[GetDestructableMaxLife]
-[[.args]]
-name = "d"
-type = "destructable"
-[[.returns]]
-type = "number"
-
-[DestructableRestoreLife]
-[[.args]]
-name = "d"
-type = "destructable"
-``````````
-name = "life"
-type = "number"
-``````````
-name = "birth"
-type = "boolean"
-
-[QueueDestructableAnimation]
-[[.args]]
-name = "d"
-type = "destructable"
-``````````
-name = "whichAnimation"
-type = "string"
-
-[SetDestructableAnimation]
-[[.args]]
-name = "d"
-type = "destructable"
-``````````
-name = "whichAnimation"
-type = "string"
-
-[SetDestructableAnimationSpeed]
-[[.args]]
-name = "d"
-type = "destructable"
-``````````
-name = "speedFactor"
-type = "number"
-
-[ShowDestructable]
-[[.args]]
-name = "d"
-type = "destructable"
-``````````
-name = "flag"
-type = "boolean"
-
-[GetDestructableOccluderHeight]
-[[.args]]
-name = "d"
-type = "destructable"
-[[.returns]]
-type = "number"
-
-[SetDestructableOccluderHeight]
-[[.args]]
-name = "d"
-type = "destructable"
-``````````
-name = "height"
-type = "number"
-
-[GetDestructableName]
-[[.args]]
-name = "d"
-type = "destructable"
-[[.returns]]
-type = "string"
-
-[GetTriggerDestructable]
-[[.returns]]
-type = "destructable"
-
-[CreateItem]
-[[.args]]
-name = "itemid"
-type = "integer"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "item"
-
-[RemoveItem]
-[[.args]]
-name = "whichItem"
-type = "item"
-
-[GetItemPlayer]
-[[.args]]
-name = "whichItem"
-type = "item"
-[[.returns]]
-type = "player"
-
-[GetItemTypeId]
-[[.args]]
-name = "i"
-type = "item"
-[[.returns]]
-type = "integer"
-
-[GetItemX]
-[[.args]]
-name = "i"
-type = "item"
-[[.returns]]
-type = "number"
-
-[GetItemY]
-[[.args]]
-name = "i"
-type = "item"
-[[.returns]]
-type = "number"
-
-[SetItemPosition]
-[[.args]]
-name = "i"
-type = "item"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-
-[SetItemDropOnDeath]
-[[.args]]
-name = "whichItem"
-type = "item"
-``````````
-name = "flag"
-type = "boolean"
-
-[SetItemDroppable]
-[[.args]]
-name = "i"
-type = "item"
-``````````
-name = "flag"
-type = "boolean"
-
-[SetItemPawnable]
-[[.args]]
-name = "i"
-type = "item"
-``````````
-name = "flag"
-type = "boolean"
-
-[SetItemPlayer]
-[[.args]]
-name = "whichItem"
-type = "item"
-``````````
-name = "whichPlayer"
-type = "player"
-``````````
-name = "changeColor"
-type = "boolean"
-
-[SetItemInvulnerable]
-[[.args]]
-name = "whichItem"
-type = "item"
-``````````
-name = "flag"
-type = "boolean"
-
-[IsItemInvulnerable]
-[[.args]]
-name = "whichItem"
-type = "item"
-[[.returns]]
-type = "boolean"
-
-[SetItemVisible]
-[[.args]]
-name = "whichItem"
-type = "item"
-``````````
-name = "show"
-type = "boolean"
-
-[IsItemVisible]
-[[.args]]
-name = "whichItem"
-type = "item"
-[[.returns]]
-type = "boolean"
-
-[IsItemOwned]
-[[.args]]
-name = "whichItem"
-type = "item"
-[[.returns]]
-type = "boolean"
-
-[IsItemPowerup]
-[[.args]]
-name = "whichItem"
-type = "item"
-[[.returns]]
-type = "boolean"
-
-[IsItemSellable]
-[[.args]]
-name = "whichItem"
-type = "item"
-[[.returns]]
-type = "boolean"
-
-[IsItemPawnable]
-[[.args]]
-name = "whichItem"
-type = "item"
-[[.returns]]
-type = "boolean"
-
-[IsItemIdPowerup]
-[[.args]]
-name = "itemId"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[IsItemIdSellable]
-[[.args]]
-name = "itemId"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[IsItemIdPawnable]
-[[.args]]
-name = "itemId"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[EnumItemsInRect]
-[[.args]]
-name = "r"
-type = "rect"
-``````````
-name = "filter"
-type = "boolexpr"
-``````````
-name = "actionFunc"
-type = "code"
-
-[GetItemLevel]
-[[.args]]
-name = "whichItem"
-type = "item"
-[[.returns]]
-type = "integer"
-
-[GetItemType]
-[[.args]]
-name = "whichItem"
-type = "item"
-[[.returns]]
-type = "itemtype"
-
-[SetItemDropID]
-[[.args]]
-name = "whichItem"
-type = "item"
-``````````
-name = "unitId"
-type = "integer"
-
-[GetItemName]
-[[.args]]
-name = "whichItem"
-type = "item"
-[[.returns]]
-type = "string"
-
-[GetItemCharges]
-[[.args]]
-name = "whichItem"
-type = "item"
-[[.returns]]
-type = "integer"
-
-[SetItemCharges]
-[[.args]]
-name = "whichItem"
-type = "item"
-``````````
-name = "charges"
-type = "integer"
-
-[GetItemUserData]
-[[.args]]
-name = "whichItem"
-type = "item"
-[[.returns]]
-type = "integer"
-
-[SetItemUserData]
-[[.args]]
-name = "whichItem"
-type = "item"
-``````````
-name = "data"
-type = "integer"
-
-[CreateUnit]
-[[.args]]
-name = "id"
-type = "player"
-``````````
-name = "unitid"
-type = "integer"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "face"
-type = "number"
-[[.returns]]
-type = "unit"
-
-[CreateUnitByName]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "unitname"
-type = "string"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "face"
-type = "number"
-[[.returns]]
-type = "unit"
-
-[CreateUnitAtLoc]
-[[.args]]
-name = "id"
-type = "player"
-``````````
-name = "unitid"
-type = "integer"
-``````````
-name = "whichLocation"
-type = "location"
-``````````
-name = "face"
-type = "number"
-[[.returns]]
-type = "unit"
-
-[CreateUnitAtLocByName]
-[[.args]]
-name = "id"
-type = "player"
-``````````
-name = "unitname"
-type = "string"
-``````````
-name = "whichLocation"
-type = "location"
-``````````
-name = "face"
-type = "number"
-[[.returns]]
-type = "unit"
-
-[CreateCorpse]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "unitid"
-type = "integer"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "face"
-type = "number"
-[[.returns]]
-type = "unit"
-
-[KillUnit]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-
-[RemoveUnit]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-
-[ShowUnit]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "show"
-type = "boolean"
-
-[SetUnitState]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichUnitState"
-type = "unitstate"
-``````````
-name = "newVal"
-type = "number"
-
-[SetUnitX]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "newX"
-type = "number"
-
-[SetUnitY]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "newY"
-type = "number"
-
-[SetUnitPosition]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "newX"
-type = "number"
-``````````
-name = "newY"
-type = "number"
-
-[SetUnitPositionLoc]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichLocation"
-type = "location"
-
-[SetUnitFacing]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "facingAngle"
-type = "number"
-
-[SetUnitFacingTimed]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "facingAngle"
-type = "number"
-``````````
-name = "duration"
-type = "number"
-
-[SetUnitMoveSpeed]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "newSpeed"
-type = "number"
-
-[SetUnitFlyHeight]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "newHeight"
-type = "number"
-``````````
-name = "rate"
-type = "number"
-
-[SetUnitTurnSpeed]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "newTurnSpeed"
-type = "number"
-
-[SetUnitPropWindow]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "newPropWindowAngle"
-type = "number"
-
-[SetUnitAcquireRange]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "newAcquireRange"
-type = "number"
-
-[SetUnitCreepGuard]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "creepGuard"
-type = "boolean"
-
-[GetUnitAcquireRange]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "number"
-
-[GetUnitTurnSpeed]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "number"
-
-[GetUnitPropWindow]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "number"
-
-[GetUnitFlyHeight]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "number"
-
-[GetUnitDefaultAcquireRange]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "number"
-
-[GetUnitDefaultTurnSpeed]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "number"
-
-[GetUnitDefaultPropWindow]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "number"
-
-[GetUnitDefaultFlyHeight]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "number"
-
-[SetUnitOwner]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichPlayer"
-type = "player"
-``````````
-name = "changeColor"
-type = "boolean"
-
-[SetUnitColor]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichColor"
-type = "playercolor"
-
-[SetUnitScale]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "scaleX"
-type = "number"
-``````````
-name = "scaleY"
-type = "number"
-``````````
-name = "scaleZ"
-type = "number"
-
-[SetUnitTimeScale]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "timeScale"
-type = "number"
-
-[SetUnitBlendTime]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "blendTime"
-type = "number"
-
-[SetUnitVertexColor]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[QueueUnitAnimation]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichAnimation"
-type = "string"
-
-[SetUnitAnimation]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichAnimation"
-type = "string"
-
-[SetUnitAnimationByIndex]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichAnimation"
-type = "integer"
-
-[SetUnitAnimationWithRarity]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichAnimation"
-type = "string"
-``````````
-name = "rarity"
-type = "raritycontrol"
-
-[AddUnitAnimationProperties]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "animProperties"
-type = "string"
-``````````
-name = "add"
-type = "boolean"
-
-[SetUnitLookAt]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichBone"
-type = "string"
-``````````
-name = "lookAtTarget"
-type = "unit"
-``````````
-name = "offsetX"
-type = "number"
-``````````
-name = "offsetY"
-type = "number"
-``````````
-name = "offsetZ"
-type = "number"
-
-[ResetUnitLookAt]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-
-[SetUnitRescuable]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "byWhichPlayer"
-type = "player"
-``````````
-name = "flag"
-type = "boolean"
-
-[SetUnitRescueRange]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "range"
-type = "number"
-
-[SetHeroStr]
-[[.args]]
-name = "whichHero"
-type = "unit"
-``````````
-name = "newStr"
-type = "integer"
-``````````
-name = "permanent"
-type = "boolean"
-
-[SetHeroAgi]
-[[.args]]
-name = "whichHero"
-type = "unit"
-``````````
-name = "newAgi"
-type = "integer"
-``````````
-name = "permanent"
-type = "boolean"
-
-[SetHeroInt]
-[[.args]]
-name = "whichHero"
-type = "unit"
-``````````
-name = "newInt"
-type = "integer"
-``````````
-name = "permanent"
-type = "boolean"
-
-[GetHeroStr]
-[[.args]]
-name = "whichHero"
-type = "unit"
-``````````
-name = "includeBonuses"
-type = "boolean"
-[[.returns]]
-type = "integer"
-
-[GetHeroAgi]
-[[.args]]
-name = "whichHero"
-type = "unit"
-``````````
-name = "includeBonuses"
-type = "boolean"
-[[.returns]]
-type = "integer"
-
-[GetHeroInt]
-[[.args]]
-name = "whichHero"
-type = "unit"
-``````````
-name = "includeBonuses"
-type = "boolean"
-[[.returns]]
-type = "integer"
-
-[UnitStripHeroLevel]
-[[.args]]
-name = "whichHero"
-type = "unit"
-``````````
-name = "howManyLevels"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[GetHeroXP]
-[[.args]]
-name = "whichHero"
-type = "unit"
-[[.returns]]
-type = "integer"
-
-[SetHeroXP]
-[[.args]]
-name = "whichHero"
-type = "unit"
-``````````
-name = "newXpVal"
-type = "integer"
-``````````
-name = "showEyeCandy"
-type = "boolean"
-
-[GetHeroSkillPoints]
-[[.args]]
-name = "whichHero"
-type = "unit"
-[[.returns]]
-type = "integer"
-
-[UnitModifySkillPoints]
-[[.args]]
-name = "whichHero"
-type = "unit"
-``````````
-name = "skillPointDelta"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[AddHeroXP]
-[[.args]]
-name = "whichHero"
-type = "unit"
-``````````
-name = "xpToAdd"
-type = "integer"
-``````````
-name = "showEyeCandy"
-type = "boolean"
-
-[SetHeroLevel]
-[[.args]]
-name = "whichHero"
-type = "unit"
-``````````
-name = "level"
-type = "integer"
-``````````
-name = "showEyeCandy"
-type = "boolean"
-
-[GetHeroLevel]
-[[.args]]
-name = "whichHero"
-type = "unit"
-[[.returns]]
-type = "integer"
-
-[GetUnitLevel]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "integer"
-
-[GetHeroProperName]
-[[.args]]
-name = "whichHero"
-type = "unit"
-[[.returns]]
-type = "string"
-
-[SuspendHeroXP]
-[[.args]]
-name = "whichHero"
-type = "unit"
-``````````
-name = "flag"
-type = "boolean"
-
-[IsSuspendedXP]
-[[.args]]
-name = "whichHero"
-type = "unit"
-[[.returns]]
-type = "boolean"
-
-[SelectHeroSkill]
-[[.args]]
-name = "whichHero"
-type = "unit"
-``````````
-name = "abilcode"
-type = "integer"
-
-[GetUnitAbilityLevel]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "abilcode"
-type = "integer"
-[[.returns]]
-type = "integer"
-
-[DecUnitAbilityLevel]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "abilcode"
-type = "integer"
-[[.returns]]
-type = "integer"
-
-[IncUnitAbilityLevel]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "abilcode"
-type = "integer"
-[[.returns]]
-type = "integer"
-
-[SetUnitAbilityLevel]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "abilcode"
-type = "integer"
-``````````
-name = "level"
-type = "integer"
-[[.returns]]
-type = "integer"
-
-[ReviveHero]
-[[.args]]
-name = "whichHero"
-type = "unit"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "doEyecandy"
-type = "boolean"
-[[.returns]]
-type = "boolean"
-
-[ReviveHeroLoc]
-[[.args]]
-name = "whichHero"
-type = "unit"
-``````````
-name = "loc"
-type = "location"
-``````````
-name = "doEyecandy"
-type = "boolean"
-[[.returns]]
-type = "boolean"
-
-[SetUnitExploded]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "exploded"
-type = "boolean"
-
-[SetUnitInvulnerable]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "flag"
-type = "boolean"
-
-[PauseUnit]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "flag"
-type = "boolean"
-
-[IsUnitPaused]
-[[.args]]
-name = "whichHero"
-type = "unit"
-[[.returns]]
-type = "boolean"
-
-[SetUnitPathing]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "flag"
-type = "boolean"
-
-[ClearSelection]
-
-[SelectUnit]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "flag"
-type = "boolean"
-
-[GetUnitPointValue]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "integer"
-
-[GetUnitPointValueByType]
-[[.args]]
-name = "unitType"
-type = "integer"
-[[.returns]]
-type = "integer"
-
-[UnitAddItem]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichItem"
-type = "item"
-[[.returns]]
-type = "boolean"
-
-[UnitAddItemById]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "itemId"
-type = "integer"
-[[.returns]]
-type = "item"
-
-[UnitAddItemToSlotById]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "itemId"
-type = "integer"
-``````````
-name = "itemSlot"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[UnitRemoveItem]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichItem"
-type = "item"
-
-[UnitRemoveItemFromSlot]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "itemSlot"
-type = "integer"
-[[.returns]]
-type = "item"
-
-[UnitHasItem]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichItem"
-type = "item"
-[[.returns]]
-type = "boolean"
-
-[UnitItemInSlot]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "itemSlot"
-type = "integer"
-[[.returns]]
-type = "item"
-
-[UnitInventorySize]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "integer"
-
-[UnitDropItemPoint]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichItem"
-type = "item"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[UnitDropItemSlot]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichItem"
-type = "item"
-``````````
-name = "slot"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[UnitDropItemTarget]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichItem"
-type = "item"
-``````````
-name = "target"
-type = "widget"
-[[.returns]]
-type = "boolean"
-
-[UnitUseItem]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichItem"
-type = "item"
-[[.returns]]
-type = "boolean"
-
-[UnitUseItemPoint]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichItem"
-type = "item"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[UnitUseItemTarget]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichItem"
-type = "item"
-``````````
-name = "target"
-type = "widget"
-[[.returns]]
-type = "boolean"
-
-[GetUnitX]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "number"
-
-[GetUnitY]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "number"
-
-[GetUnitLoc]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "location"
-
-[GetUnitFacing]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "number"
-
-[GetUnitMoveSpeed]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "number"
-
-[GetUnitDefaultMoveSpeed]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "number"
-
-[GetUnitState]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichUnitState"
-type = "unitstate"
-[[.returns]]
-type = "number"
-
-[GetOwningPlayer]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "player"
-
-[GetUnitTypeId]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "integer"
-
-[GetUnitRace]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "race"
-
-[GetUnitName]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "string"
-
-[GetUnitFoodUsed]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "integer"
-
-[GetUnitFoodMade]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "integer"
-
-[GetFoodMade]
-[[.args]]
-name = "unitId"
-type = "integer"
-[[.returns]]
-type = "integer"
-
-[GetFoodUsed]
-[[.args]]
-name = "unitId"
-type = "integer"
-[[.returns]]
-type = "integer"
-
-[SetUnitUseFood]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "useFood"
-type = "boolean"
-
-[GetUnitRallyPoint]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "location"
-
-[GetUnitRallyUnit]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "unit"
-
-[GetUnitRallyDestructable]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "destructable"
-
-[IsUnitInGroup]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichGroup"
-type = "group"
-[[.returns]]
-type = "boolean"
-
-[IsUnitInForce]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichForce"
-type = "force"
-[[.returns]]
-type = "boolean"
-
-[IsUnitOwnedByPlayer]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsUnitAlly]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsUnitEnemy]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsUnitVisible]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsUnitDetected]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsUnitInvisible]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsUnitFogged]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsUnitMasked]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsUnitSelected]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsUnitRace]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichRace"
-type = "race"
-[[.returns]]
-type = "boolean"
-
-[IsUnitType]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichUnitType"
-type = "unittype"
-[[.returns]]
-type = "boolean"
-
-[IsUnit]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichSpecifiedUnit"
-type = "unit"
-[[.returns]]
-type = "boolean"
-
-[IsUnitInRange]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "otherUnit"
-type = "unit"
-``````````
-name = "distance"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[IsUnitInRangeXY]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "distance"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[IsUnitInRangeLoc]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichLocation"
-type = "location"
-``````````
-name = "distance"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[IsUnitHidden]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "boolean"
-
-[IsUnitIllusion]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "boolean"
-
-[IsUnitInTransport]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichTransport"
-type = "unit"
-[[.returns]]
-type = "boolean"
-
-[IsUnitLoaded]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "boolean"
-
-[IsHeroUnitId]
-[[.args]]
-name = "unitId"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[IsUnitIdType]
-[[.args]]
-name = "unitId"
-type = "integer"
-``````````
-name = "whichUnitType"
-type = "unittype"
-[[.returns]]
-type = "boolean"
-
-[UnitShareVision]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichPlayer"
-type = "player"
-``````````
-name = "share"
-type = "boolean"
-
-[UnitSuspendDecay]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "suspend"
-type = "boolean"
-
-[UnitAddType]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichUnitType"
-type = "unittype"
-[[.returns]]
-type = "boolean"
-
-[UnitRemoveType]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "whichUnitType"
-type = "unittype"
-[[.returns]]
-type = "boolean"
-
-[UnitAddAbility]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "abilityId"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[UnitRemoveAbility]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "abilityId"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[UnitMakeAbilityPermanent]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "permanent"
-type = "boolean"
-``````````
-name = "abilityId"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[UnitRemoveBuffs]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "removePositive"
-type = "boolean"
-``````````
-name = "removeNegative"
-type = "boolean"
-
-[UnitRemoveBuffsEx]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "removePositive"
-type = "boolean"
-``````````
-name = "removeNegative"
-type = "boolean"
-``````````
-name = "magic"
-type = "boolean"
-``````````
-name = "physical"
-type = "boolean"
-``````````
-name = "timedLife"
-type = "boolean"
-``````````
-name = "aura"
-type = "boolean"
-``````````
-name = "autoDispel"
-type = "boolean"
-
-[UnitHasBuffsEx]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "removePositive"
-type = "boolean"
-``````````
-name = "removeNegative"
-type = "boolean"
-``````````
-name = "magic"
-type = "boolean"
-``````````
-name = "physical"
-type = "boolean"
-``````````
-name = "timedLife"
-type = "boolean"
-``````````
-name = "aura"
-type = "boolean"
-``````````
-name = "autoDispel"
-type = "boolean"
-[[.returns]]
-type = "boolean"
-
-[UnitCountBuffsEx]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "removePositive"
-type = "boolean"
-``````````
-name = "removeNegative"
-type = "boolean"
-``````````
-name = "magic"
-type = "boolean"
-``````````
-name = "physical"
-type = "boolean"
-``````````
-name = "timedLife"
-type = "boolean"
-``````````
-name = "aura"
-type = "boolean"
-``````````
-name = "autoDispel"
-type = "boolean"
-[[.returns]]
-type = "integer"
-
-[UnitAddSleep]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "add"
-type = "boolean"
-
-[UnitCanSleep]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "boolean"
-
-[UnitAddSleepPerm]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "add"
-type = "boolean"
-
-[UnitCanSleepPerm]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "boolean"
-
-[UnitIsSleeping]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "boolean"
-
-[UnitWakeUp]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-
-[UnitApplyTimedLife]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "buffId"
-type = "integer"
-``````````
-name = "duration"
-type = "number"
-
-[UnitIgnoreAlarm]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "flag"
-type = "boolean"
-[[.returns]]
-type = "boolean"
-
-[UnitIgnoreAlarmToggled]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "boolean"
-
-[UnitResetCooldown]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-
-[UnitSetConstructionProgress]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "constructionPercentage"
-type = "integer"
-
-[UnitSetUpgradeProgress]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "upgradePercentage"
-type = "integer"
-
-[UnitPauseTimedLife]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "flag"
-type = "boolean"
-
-[UnitSetUsesAltIcon]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "flag"
-type = "boolean"
-
-[UnitDamagePoint]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "delay"
-type = "number"
-``````````
-name = "radius"
-type = "number"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "amount"
-type = "number"
-``````````
-name = "attack"
-type = "boolean"
-``````````
-name = "ranged"
-type = "boolean"
-``````````
-name = "attackType"
-type = "attacktype"
-``````````
-name = "damageType"
-type = "damagetype"
-``````````
-name = "weaponType"
-type = "weapontype"
-[[.returns]]
-type = "boolean"
-
-[UnitDamageTarget]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "target"
-type = "widget"
-``````````
-name = "amount"
-type = "number"
-``````````
-name = "attack"
-type = "boolean"
-``````````
-name = "ranged"
-type = "boolean"
-``````````
-name = "attackType"
-type = "attacktype"
-``````````
-name = "damageType"
-type = "damagetype"
-``````````
-name = "weaponType"
-type = "weapontype"
-[[.returns]]
-type = "boolean"
-
-[IssueImmediateOrder]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "order"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[IssueImmediateOrderById]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "order"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[IssuePointOrder]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "order"
-type = "string"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[IssuePointOrderLoc]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "order"
-type = "string"
-``````````
-name = "whichLocation"
-type = "location"
-[[.returns]]
-type = "boolean"
-
-[IssuePointOrderById]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "order"
-type = "integer"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[IssuePointOrderByIdLoc]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "order"
-type = "integer"
-``````````
-name = "whichLocation"
-type = "location"
-[[.returns]]
-type = "boolean"
-
-[IssueTargetOrder]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "order"
-type = "string"
-``````````
-name = "targetWidget"
-type = "widget"
-[[.returns]]
-type = "boolean"
-
-[IssueTargetOrderById]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "order"
-type = "integer"
-``````````
-name = "targetWidget"
-type = "widget"
-[[.returns]]
-type = "boolean"
-
-[IssueInstantPointOrder]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "order"
-type = "string"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "instantTargetWidget"
-type = "widget"
-[[.returns]]
-type = "boolean"
-
-[IssueInstantPointOrderById]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "order"
-type = "integer"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "instantTargetWidget"
-type = "widget"
-[[.returns]]
-type = "boolean"
-
-[IssueInstantTargetOrder]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "order"
-type = "string"
-``````````
-name = "targetWidget"
-type = "widget"
-``````````
-name = "instantTargetWidget"
-type = "widget"
-[[.returns]]
-type = "boolean"
-
-[IssueInstantTargetOrderById]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "order"
-type = "integer"
-``````````
-name = "targetWidget"
-type = "widget"
-``````````
-name = "instantTargetWidget"
-type = "widget"
-[[.returns]]
-type = "boolean"
-
-[IssueBuildOrder]
-[[.args]]
-name = "whichPeon"
-type = "unit"
-``````````
-name = "unitToBuild"
-type = "string"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[IssueBuildOrderById]
-[[.args]]
-name = "whichPeon"
-type = "unit"
-``````````
-name = "unitId"
-type = "integer"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[IssueNeutralImmediateOrder]
-[[.args]]
-name = "forWhichPlayer"
-type = "player"
-``````````
-name = "neutralStructure"
-type = "unit"
-``````````
-name = "unitToBuild"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[IssueNeutralImmediateOrderById]
-[[.args]]
-name = "forWhichPlayer"
-type = "player"
-``````````
-name = "neutralStructure"
-type = "unit"
-``````````
-name = "unitId"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[IssueNeutralPointOrder]
-[[.args]]
-name = "forWhichPlayer"
-type = "player"
-``````````
-name = "neutralStructure"
-type = "unit"
-``````````
-name = "unitToBuild"
-type = "string"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[IssueNeutralPointOrderById]
-[[.args]]
-name = "forWhichPlayer"
-type = "player"
-``````````
-name = "neutralStructure"
-type = "unit"
-``````````
-name = "unitId"
-type = "integer"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[IssueNeutralTargetOrder]
-[[.args]]
-name = "forWhichPlayer"
-type = "player"
-``````````
-name = "neutralStructure"
-type = "unit"
-``````````
-name = "unitToBuild"
-type = "string"
-``````````
-name = "target"
-type = "widget"
-[[.returns]]
-type = "boolean"
-
-[IssueNeutralTargetOrderById]
-[[.args]]
-name = "forWhichPlayer"
-type = "player"
-``````````
-name = "neutralStructure"
-type = "unit"
-``````````
-name = "unitId"
-type = "integer"
-``````````
-name = "target"
-type = "widget"
-[[.returns]]
-type = "boolean"
-
-[GetUnitCurrentOrder]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "integer"
-
-[SetResourceAmount]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "amount"
-type = "integer"
-
-[AddResourceAmount]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "amount"
-type = "integer"
-
-[GetResourceAmount]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "integer"
-
-[WaygateGetDestinationX]
-[[.args]]
-name = "waygate"
-type = "unit"
-[[.returns]]
-type = "number"
-
-[WaygateGetDestinationY]
-[[.args]]
-name = "waygate"
-type = "unit"
-[[.returns]]
-type = "number"
-
-[WaygateSetDestination]
-[[.args]]
-name = "waygate"
-type = "unit"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-
-[WaygateActivate]
-[[.args]]
-name = "waygate"
-type = "unit"
-``````````
-name = "activate"
-type = "boolean"
-
-[WaygateIsActive]
-[[.args]]
-name = "waygate"
-type = "unit"
-[[.returns]]
-type = "boolean"
-
-[AddItemToAllStock]
-[[.args]]
-name = "itemId"
-type = "integer"
-``````````
-name = "currentStock"
-type = "integer"
-``````````
-name = "stockMax"
-type = "integer"
-
-[AddItemToStock]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "itemId"
-type = "integer"
-``````````
-name = "currentStock"
-type = "integer"
-``````````
-name = "stockMax"
-type = "integer"
-
-[AddUnitToAllStock]
-[[.args]]
-name = "unitId"
-type = "integer"
-``````````
-name = "currentStock"
-type = "integer"
-``````````
-name = "stockMax"
-type = "integer"
-
-[AddUnitToStock]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "unitId"
-type = "integer"
-``````````
-name = "currentStock"
-type = "integer"
-``````````
-name = "stockMax"
-type = "integer"
-
-[RemoveItemFromAllStock]
-[[.args]]
-name = "itemId"
-type = "integer"
-
-[RemoveItemFromStock]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "itemId"
-type = "integer"
-
-[RemoveUnitFromAllStock]
-[[.args]]
-name = "unitId"
-type = "integer"
-
-[RemoveUnitFromStock]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "unitId"
-type = "integer"
-
-[SetAllItemTypeSlots]
-[[.args]]
-name = "slots"
-type = "integer"
-
-[SetAllUnitTypeSlots]
-[[.args]]
-name = "slots"
-type = "integer"
-
-[SetItemTypeSlots]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "slots"
-type = "integer"
-
-[SetUnitTypeSlots]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "slots"
-type = "integer"
-
-[GetUnitUserData]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "integer"
-
-[SetUnitUserData]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "data"
-type = "integer"
-
-[Player]
-[[.args]]
-name = "number"
-type = "integer"
-[[.returns]]
-type = "player"
-
-[GetLocalPlayer]
-[[.returns]]
-type = "player"
-
-[IsPlayerAlly]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "otherPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsPlayerEnemy]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "otherPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsPlayerInForce]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "whichForce"
-type = "force"
-[[.returns]]
-type = "boolean"
-
-[IsPlayerObserver]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsVisibleToPlayer]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsLocationVisibleToPlayer]
-[[.args]]
-name = "whichLocation"
-type = "location"
-``````````
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsFoggedToPlayer]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsLocationFoggedToPlayer]
-[[.args]]
-name = "whichLocation"
-type = "location"
-``````````
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsMaskedToPlayer]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[IsLocationMaskedToPlayer]
-[[.args]]
-name = "whichLocation"
-type = "location"
-``````````
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[GetPlayerRace]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "race"
-
-[GetPlayerId]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "integer"
-
-[GetPlayerUnitCount]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "includeIncomplete"
-type = "boolean"
-[[.returns]]
-type = "integer"
-
-[GetPlayerTypedUnitCount]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "unitName"
-type = "string"
-``````````
-name = "includeIncomplete"
-type = "boolean"
-``````````
-name = "includeUpgrades"
-type = "boolean"
-[[.returns]]
-type = "integer"
-
-[GetPlayerStructureCount]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "includeIncomplete"
-type = "boolean"
-[[.returns]]
-type = "integer"
-
-[GetPlayerState]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "whichPlayerState"
-type = "playerstate"
-[[.returns]]
-type = "integer"
-
-[GetPlayerScore]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "whichPlayerScore"
-type = "playerscore"
-[[.returns]]
-type = "integer"
-
-[GetPlayerAlliance]
-[[.args]]
-name = "sourcePlayer"
-type = "player"
-``````````
-name = "otherPlayer"
-type = "player"
-``````````
-name = "whichAllianceSetting"
-type = "alliancetype"
-[[.returns]]
-type = "boolean"
-
-[GetPlayerHandicap]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "number"
-
-[GetPlayerHandicapXP]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "number"
-
-[SetPlayerHandicap]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "handicap"
-type = "number"
-
-[SetPlayerHandicapXP]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "handicap"
-type = "number"
-
-[SetPlayerTechMaxAllowed]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "techid"
-type = "integer"
-``````````
-name = "maximum"
-type = "integer"
-
-[GetPlayerTechMaxAllowed]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "techid"
-type = "integer"
-[[.returns]]
-type = "integer"
-
-[AddPlayerTechResearched]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "techid"
-type = "integer"
-``````````
-name = "levels"
-type = "integer"
-
-[SetPlayerTechResearched]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "techid"
-type = "integer"
-``````````
-name = "setToLevel"
-type = "integer"
-
-[GetPlayerTechResearched]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "techid"
-type = "integer"
-``````````
-name = "specificonly"
-type = "boolean"
-[[.returns]]
-type = "boolean"
-
-[GetPlayerTechCount]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "techid"
-type = "integer"
-``````````
-name = "specificonly"
-type = "boolean"
-[[.returns]]
-type = "integer"
-
-[SetPlayerUnitsOwner]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "newOwner"
-type = "integer"
-
-[CripplePlayer]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "toWhichPlayers"
-type = "force"
-``````````
-name = "flag"
-type = "boolean"
-
-[SetPlayerAbilityAvailable]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "abilid"
-type = "integer"
-``````````
-name = "avail"
-type = "boolean"
-
-[SetPlayerState]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "whichPlayerState"
-type = "playerstate"
-``````````
-name = "value"
-type = "integer"
-
-[RemovePlayer]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "gameResult"
-type = "playergameresult"
-
-[CachePlayerHeroData]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-
-[SetFogStateRect]
-[[.args]]
-name = "forWhichPlayer"
-type = "player"
-``````````
-name = "whichState"
-type = "fogstate"
-``````````
-name = "where"
-type = "rect"
-``````````
-name = "useSharedVision"
-type = "boolean"
-
-[SetFogStateRadius]
-[[.args]]
-name = "forWhichPlayer"
-type = "player"
-``````````
-name = "whichState"
-type = "fogstate"
-``````````
-name = "centerx"
-type = "number"
-``````````
-name = "centerY"
-type = "number"
-``````````
-name = "radius"
-type = "number"
-``````````
-name = "useSharedVision"
-type = "boolean"
-
-[SetFogStateRadiusLoc]
-[[.args]]
-name = "forWhichPlayer"
-type = "player"
-``````````
-name = "whichState"
-type = "fogstate"
-``````````
-name = "center"
-type = "location"
-``````````
-name = "radius"
-type = "number"
-``````````
-name = "useSharedVision"
-type = "boolean"
-
-[FogMaskEnable]
-[[.args]]
-name = "enable"
-type = "boolean"
-
-[IsFogMaskEnabled]
-[[.returns]]
-type = "boolean"
-
-[FogEnable]
-[[.args]]
-name = "enable"
-type = "boolean"
-
-[IsFogEnabled]
-[[.returns]]
-type = "boolean"
-
-[CreateFogModifierRect]
-[[.args]]
-name = "forWhichPlayer"
-type = "player"
-``````````
-name = "whichState"
-type = "fogstate"
-``````````
-name = "where"
-type = "rect"
-``````````
-name = "useSharedVision"
-type = "boolean"
-``````````
-name = "afterUnits"
-type = "boolean"
-[[.returns]]
-type = "fogmodifier"
-
-[CreateFogModifierRadius]
-[[.args]]
-name = "forWhichPlayer"
-type = "player"
-``````````
-name = "whichState"
-type = "fogstate"
-``````````
-name = "centerx"
-type = "number"
-``````````
-name = "centerY"
-type = "number"
-``````````
-name = "radius"
-type = "number"
-``````````
-name = "useSharedVision"
-type = "boolean"
-``````````
-name = "afterUnits"
-type = "boolean"
-[[.returns]]
-type = "fogmodifier"
-
-[CreateFogModifierRadiusLoc]
-[[.args]]
-name = "forWhichPlayer"
-type = "player"
-``````````
-name = "whichState"
-type = "fogstate"
-``````````
-name = "center"
-type = "location"
-``````````
-name = "radius"
-type = "number"
-``````````
-name = "useSharedVision"
-type = "boolean"
-``````````
-name = "afterUnits"
-type = "boolean"
-[[.returns]]
-type = "fogmodifier"
-
-[DestroyFogModifier]
-[[.args]]
-name = "whichFogModifier"
-type = "fogmodifier"
-
-[FogModifierStart]
-[[.args]]
-name = "whichFogModifier"
-type = "fogmodifier"
-
-[FogModifierStop]
-[[.args]]
-name = "whichFogModifier"
-type = "fogmodifier"
-
-[VersionGet]
-[[.returns]]
-type = "version"
-
-[VersionCompatible]
-[[.args]]
-name = "whichVersion"
-type = "version"
-[[.returns]]
-type = "boolean"
-
-[VersionSupported]
-[[.args]]
-name = "whichVersion"
-type = "version"
-[[.returns]]
-type = "boolean"
-
-[EndGame]
-[[.args]]
-name = "doScoreScreen"
-type = "boolean"
-
-[ChangeLevel]
-[[.args]]
-name = "newLevel"
-type = "string"
-``````````
-name = "doScoreScreen"
-type = "boolean"
-
-[RestartGame]
-[[.args]]
-name = "doScoreScreen"
-type = "boolean"
-
-[ReloadGame]
-
-[SetCampaignMenuRace]
-[[.args]]
-name = "r"
-type = "race"
-
-[SetCampaignMenuRaceEx]
-[[.args]]
-name = "campaignIndex"
-type = "integer"
-
-[ForceCampaignSelectScreen]
-
-[LoadGame]
-[[.args]]
-name = "saveFileName"
-type = "string"
-``````````
-name = "doScoreScreen"
-type = "boolean"
-
-[SaveGame]
-[[.args]]
-name = "saveFileName"
-type = "string"
-
-[RenameSaveDirectory]
-[[.args]]
-name = "sourceDirName"
-type = "string"
-``````````
-name = "destDirName"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[RemoveSaveDirectory]
-[[.args]]
-name = "sourceDirName"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[CopySaveGame]
-[[.args]]
-name = "sourceSaveName"
-type = "string"
-``````````
-name = "destSaveName"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[SaveGameExists]
-[[.args]]
-name = "saveName"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[SyncSelections]
-
-[SetFloatGameState]
-[[.args]]
-name = "whichFloatGameState"
-type = "fgamestate"
-``````````
-name = "value"
-type = "number"
-
-[GetFloatGameState]
-[[.args]]
-name = "whichFloatGameState"
-type = "fgamestate"
-[[.returns]]
-type = "number"
-
-[SetIntegerGameState]
-[[.args]]
-name = "whichIntegerGameState"
-type = "igamestate"
-``````````
-name = "value"
-type = "integer"
-
-[GetIntegerGameState]
-[[.args]]
-name = "whichIntegerGameState"
-type = "igamestate"
-[[.returns]]
-type = "integer"
-
-[SetTutorialCleared]
-[[.args]]
-name = "cleared"
-type = "boolean"
-
-[SetMissionAvailable]
-[[.args]]
-name = "campaignNumber"
-type = "integer"
-``````````
-name = "missionNumber"
-type = "integer"
-``````````
-name = "available"
-type = "boolean"
-
-[SetCampaignAvailable]
-[[.args]]
-name = "campaignNumber"
-type = "integer"
-``````````
-name = "available"
-type = "boolean"
-
-[SetOpCinematicAvailable]
-[[.args]]
-name = "campaignNumber"
-type = "integer"
-``````````
-name = "available"
-type = "boolean"
-
-[SetEdCinematicAvailable]
-[[.args]]
-name = "campaignNumber"
-type = "integer"
-``````````
-name = "available"
-type = "boolean"
-
-[GetDefaultDifficulty]
-[[.returns]]
-type = "gamedifficulty"
-
-[SetDefaultDifficulty]
-[[.args]]
-name = "g"
-type = "gamedifficulty"
-
-[SetCustomCampaignButtonVisible]
-[[.args]]
-name = "whichButton"
-type = "integer"
-``````````
-name = "visible"
-type = "boolean"
-
-[GetCustomCampaignButtonVisible]
-[[.args]]
-name = "whichButton"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[DoNotSaveReplay]
-
-[DialogCreate]
-[[.returns]]
-type = "dialog"
-
-[DialogDestroy]
-[[.args]]
-name = "whichDialog"
-type = "dialog"
-
-[DialogClear]
-[[.args]]
-name = "whichDialog"
-type = "dialog"
-
-[DialogSetMessage]
-[[.args]]
-name = "whichDialog"
-type = "dialog"
-``````````
-name = "messageText"
-type = "string"
-
-[DialogAddButton]
-[[.args]]
-name = "whichDialog"
-type = "dialog"
-``````````
-name = "buttonText"
-type = "string"
-``````````
-name = "hotkey"
-type = "integer"
-[[.returns]]
-type = "button"
-
-[DialogAddQuitButton]
-[[.args]]
-name = "whichDialog"
-type = "dialog"
-``````````
-name = "doScoreScreen"
-type = "boolean"
-``````````
-name = "buttonText"
-type = "string"
-``````````
-name = "hotkey"
-type = "integer"
-[[.returns]]
-type = "button"
-
-[DialogDisplay]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "whichDialog"
-type = "dialog"
-``````````
-name = "flag"
-type = "boolean"
-
-[ReloadGameCachesFromDisk]
-[[.returns]]
-type = "boolean"
-
-[InitGameCache]
-[[.args]]
-name = "campaignFile"
-type = "string"
-[[.returns]]
-type = "gamecache"
-
-[SaveGameCache]
-[[.args]]
-name = "whichCache"
-type = "gamecache"
-[[.returns]]
-type = "boolean"
-
-[StoreInteger]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-``````````
-name = "value"
-type = "integer"
-
-[StoreReal]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-``````````
-name = "value"
-type = "number"
-
-[StoreBoolean]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-``````````
-name = "value"
-type = "boolean"
-
-[StoreUnit]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-``````````
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "boolean"
-
-[StoreString]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-``````````
-name = "value"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[SyncStoredInteger]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-
-[SyncStoredReal]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-
-[SyncStoredBoolean]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-
-[SyncStoredUnit]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-
-[SyncStoredString]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-
-[HaveStoredInteger]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[HaveStoredReal]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[HaveStoredBoolean]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[HaveStoredUnit]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[HaveStoredString]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[FlushGameCache]
-[[.args]]
-name = "cache"
-type = "gamecache"
-
-[FlushStoredMission]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-
-[FlushStoredInteger]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-
-[FlushStoredReal]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-
-[FlushStoredBoolean]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-
-[FlushStoredUnit]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-
-[FlushStoredString]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-
-[GetStoredInteger]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-[[.returns]]
-type = "integer"
-
-[GetStoredReal]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-[[.returns]]
-type = "number"
-
-[GetStoredBoolean]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[GetStoredString]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-[[.returns]]
-type = "string"
-
-[RestoreUnit]
-[[.args]]
-name = "cache"
-type = "gamecache"
-``````````
-name = "missionKey"
-type = "string"
-``````````
-name = "key"
-type = "string"
-``````````
-name = "forWhichPlayer"
-type = "player"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "facing"
-type = "number"
-[[.returns]]
-type = "unit"
-
-[InitHashtable]
-[[.returns]]
-type = "hashtable"
-
-[SaveInteger]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "value"
-type = "integer"
-
-[SaveReal]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "value"
-type = "number"
-
-[SaveBoolean]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "value"
-type = "boolean"
-
-[SaveStr]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "value"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[SavePlayerHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichPlayer"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[SaveWidgetHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichWidget"
-type = "widget"
-[[.returns]]
-type = "boolean"
-
-[SaveDestructableHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichDestructable"
-type = "destructable"
-[[.returns]]
-type = "boolean"
-
-[SaveItemHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichItem"
-type = "item"
-[[.returns]]
-type = "boolean"
-
-[SaveUnitHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichUnit"
-type = "unit"
-[[.returns]]
-type = "boolean"
-
-[SaveAbilityHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichAbility"
-type = "ability"
-[[.returns]]
-type = "boolean"
-
-[SaveTimerHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichTimer"
-type = "timer"
-[[.returns]]
-type = "boolean"
-
-[SaveTriggerHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichTrigger"
-type = "trigger"
-[[.returns]]
-type = "boolean"
-
-[SaveTriggerConditionHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichTriggercondition"
-type = "triggercondition"
-[[.returns]]
-type = "boolean"
-
-[SaveTriggerActionHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichTriggeraction"
-type = "triggeraction"
-[[.returns]]
-type = "boolean"
-
-[SaveTriggerEventHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichEvent"
-type = "event"
-[[.returns]]
-type = "boolean"
-
-[SaveForceHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichForce"
-type = "force"
-[[.returns]]
-type = "boolean"
-
-[SaveGroupHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichGroup"
-type = "group"
-[[.returns]]
-type = "boolean"
-
-[SaveLocationHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichLocation"
-type = "location"
-[[.returns]]
-type = "boolean"
-
-[SaveRectHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichRect"
-type = "rect"
-[[.returns]]
-type = "boolean"
-
-[SaveBooleanExprHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichBoolexpr"
-type = "boolexpr"
-[[.returns]]
-type = "boolean"
-
-[SaveSoundHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichSound"
-type = "sound"
-[[.returns]]
-type = "boolean"
-
-[SaveEffectHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichEffect"
-type = "effect"
-[[.returns]]
-type = "boolean"
-
-[SaveUnitPoolHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichUnitpool"
-type = "unitpool"
-[[.returns]]
-type = "boolean"
-
-[SaveItemPoolHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichItempool"
-type = "itempool"
-[[.returns]]
-type = "boolean"
-
-[SaveQuestHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichQuest"
-type = "quest"
-[[.returns]]
-type = "boolean"
-
-[SaveQuestItemHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichQuestitem"
-type = "questitem"
-[[.returns]]
-type = "boolean"
-
-[SaveDefeatConditionHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichDefeatcondition"
-type = "defeatcondition"
-[[.returns]]
-type = "boolean"
-
-[SaveTimerDialogHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichTimerdialog"
-type = "timerdialog"
-[[.returns]]
-type = "boolean"
-
-[SaveLeaderboardHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichLeaderboard"
-type = "leaderboard"
-[[.returns]]
-type = "boolean"
-
-[SaveMultiboardHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichMultiboard"
-type = "multiboard"
-[[.returns]]
-type = "boolean"
-
-[SaveMultiboardItemHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichMultiboarditem"
-type = "multiboarditem"
-[[.returns]]
-type = "boolean"
-
-[SaveTrackableHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichTrackable"
-type = "trackable"
-[[.returns]]
-type = "boolean"
-
-[SaveDialogHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichDialog"
-type = "dialog"
-[[.returns]]
-type = "boolean"
-
-[SaveButtonHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichButton"
-type = "button"
-[[.returns]]
-type = "boolean"
-
-[SaveTextTagHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichTexttag"
-type = "texttag"
-[[.returns]]
-type = "boolean"
-
-[SaveLightningHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichLightning"
-type = "lightning"
-[[.returns]]
-type = "boolean"
-
-[SaveImageHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichImage"
-type = "image"
-[[.returns]]
-type = "boolean"
-
-[SaveUbersplatHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichUbersplat"
-type = "ubersplat"
-[[.returns]]
-type = "boolean"
-
-[SaveRegionHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichRegion"
-type = "region"
-[[.returns]]
-type = "boolean"
-
-[SaveFogStateHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichFogState"
-type = "fogstate"
-[[.returns]]
-type = "boolean"
-
-[SaveFogModifierHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichFogModifier"
-type = "fogmodifier"
-[[.returns]]
-type = "boolean"
-
-[SaveAgentHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichAgent"
-type = "agent"
-[[.returns]]
-type = "boolean"
-
-[SaveHashtableHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-``````````
-name = "whichHashtable"
-type = "hashtable"
-[[.returns]]
-type = "boolean"
-
-[LoadInteger]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "integer"
-
-[LoadReal]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "number"
-
-[LoadBoolean]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[LoadStr]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "string"
-
-[LoadPlayerHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "player"
-
-[LoadWidgetHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "widget"
-
-[LoadDestructableHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "destructable"
-
-[LoadItemHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "item"
-
-[LoadUnitHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "unit"
-
-[LoadAbilityHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "ability"
-
-[LoadTimerHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "timer"
-
-[LoadTriggerHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "trigger"
-
-[LoadTriggerConditionHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "triggercondition"
-
-[LoadTriggerActionHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "triggeraction"
-
-[LoadTriggerEventHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "event"
-
-[LoadForceHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "force"
-
-[LoadGroupHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "group"
-
-[LoadLocationHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "location"
-
-[LoadRectHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "rect"
-
-[LoadBooleanExprHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "boolexpr"
-
-[LoadSoundHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "sound"
-
-[LoadEffectHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "effect"
-
-[LoadUnitPoolHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "unitpool"
-
-[LoadItemPoolHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "itempool"
-
-[LoadQuestHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "quest"
-
-[LoadQuestItemHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "questitem"
-
-[LoadDefeatConditionHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "defeatcondition"
-
-[LoadTimerDialogHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "timerdialog"
-
-[LoadLeaderboardHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "leaderboard"
-
-[LoadMultiboardHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "multiboard"
-
-[LoadMultiboardItemHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "multiboarditem"
-
-[LoadTrackableHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "trackable"
-
-[LoadDialogHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "dialog"
-
-[LoadButtonHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "button"
-
-[LoadTextTagHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "texttag"
-
-[LoadLightningHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "lightning"
-
-[LoadImageHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "image"
-
-[LoadUbersplatHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "ubersplat"
-
-[LoadRegionHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "region"
-
-[LoadFogStateHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "fogstate"
-
-[LoadFogModifierHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "fogmodifier"
-
-[LoadHashtableHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "hashtable"
-
-[HaveSavedInteger]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[HaveSavedReal]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[HaveSavedBoolean]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[HaveSavedString]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[HaveSavedHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[RemoveSavedInteger]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-
-[RemoveSavedReal]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-
-[RemoveSavedBoolean]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-
-[RemoveSavedString]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-
-[RemoveSavedHandle]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-``````````
-name = "childKey"
-type = "integer"
-
-[FlushParentHashtable]
-[[.args]]
-name = "table"
-type = "hashtable"
-
-[FlushChildHashtable]
-[[.args]]
-name = "table"
-type = "hashtable"
-``````````
-name = "parentKey"
-type = "integer"
-
-[GetRandomInt]
-[[.args]]
-name = "lowBound"
-type = "integer"
-``````````
-name = "highBound"
-type = "integer"
-[[.returns]]
-type = "integer"
-
-[GetRandomReal]
-[[.args]]
-name = "lowBound"
-type = "number"
-``````````
-name = "highBound"
-type = "number"
-[[.returns]]
-type = "number"
-
-[CreateUnitPool]
-[[.returns]]
-type = "unitpool"
-
-[DestroyUnitPool]
-[[.args]]
-name = "whichPool"
-type = "unitpool"
-
-[UnitPoolAddUnitType]
-[[.args]]
-name = "whichPool"
-type = "unitpool"
-``````````
-name = "unitId"
-type = "integer"
-``````````
-name = "weight"
-type = "number"
-
-[UnitPoolRemoveUnitType]
-[[.args]]
-name = "whichPool"
-type = "unitpool"
-``````````
-name = "unitId"
-type = "integer"
-
-[PlaceRandomUnit]
-[[.args]]
-name = "whichPool"
-type = "unitpool"
-``````````
-name = "forWhichPlayer"
-type = "player"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "facing"
-type = "number"
-[[.returns]]
-type = "unit"
-
-[CreateItemPool]
-[[.returns]]
-type = "itempool"
-
-[DestroyItemPool]
-[[.args]]
-name = "whichItemPool"
-type = "itempool"
-
-[ItemPoolAddItemType]
-[[.args]]
-name = "whichItemPool"
-type = "itempool"
-``````````
-name = "itemId"
-type = "integer"
-``````````
-name = "weight"
-type = "number"
-
-[ItemPoolRemoveItemType]
-[[.args]]
-name = "whichItemPool"
-type = "itempool"
-``````````
-name = "itemId"
-type = "integer"
-
-[PlaceRandomItem]
-[[.args]]
-name = "whichItemPool"
-type = "itempool"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "item"
-
-[ChooseRandomCreep]
-[[.args]]
-name = "level"
-type = "integer"
-[[.returns]]
-type = "integer"
-
-[ChooseRandomNPBuilding]
-[[.returns]]
-type = "integer"
-
-[ChooseRandomItem]
-[[.args]]
-name = "level"
-type = "integer"
-[[.returns]]
-type = "integer"
-
-[ChooseRandomItemEx]
-[[.args]]
-name = "whichType"
-type = "itemtype"
-``````````
-name = "level"
-type = "integer"
-[[.returns]]
-type = "integer"
-
-[SetRandomSeed]
-[[.args]]
-name = "seed"
-type = "integer"
-
-[SetTerrainFog]
-[[.args]]
-name = "a"
-type = "number"
-``````````
-name = "b"
-type = "number"
-``````````
-name = "c"
-type = "number"
-``````````
-name = "d"
-type = "number"
-``````````
-name = "e"
-type = "number"
-
-[ResetTerrainFog]
-
-[SetUnitFog]
-[[.args]]
-name = "a"
-type = "number"
-``````````
-name = "b"
-type = "number"
-``````````
-name = "c"
-type = "number"
-``````````
-name = "d"
-type = "number"
-``````````
-name = "e"
-type = "number"
-
-[SetTerrainFogEx]
-[[.args]]
-name = "style"
-type = "integer"
-``````````
-name = "zstart"
-type = "number"
-``````````
-name = "zend"
-type = "number"
-``````````
-name = "density"
-type = "number"
-``````````
-name = "red"
-type = "number"
-``````````
-name = "green"
-type = "number"
-``````````
-name = "blue"
-type = "number"
-
-[DisplayTextToPlayer]
-[[.args]]
-name = "toPlayer"
-type = "player"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "message"
-type = "string"
-
-[DisplayTimedTextToPlayer]
-[[.args]]
-name = "toPlayer"
-type = "player"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "duration"
-type = "number"
-``````````
-name = "message"
-type = "string"
-
-[DisplayTimedTextFromPlayer]
-[[.args]]
-name = "toPlayer"
-type = "player"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "duration"
-type = "number"
-``````````
-name = "message"
-type = "string"
-
-[ClearTextMessages]
-
-[SetDayNightModels]
-[[.args]]
-name = "terrainDNCFile"
-type = "string"
-``````````
-name = "unitDNCFile"
-type = "string"
-
-[SetSkyModel]
-[[.args]]
-name = "skyModelFile"
-type = "string"
-
-[EnableUserControl]
-[[.args]]
-name = "b"
-type = "boolean"
-
-[EnableUserUI]
-[[.args]]
-name = "b"
-type = "boolean"
-
-[SuspendTimeOfDay]
-[[.args]]
-name = "b"
-type = "boolean"
-
-[SetTimeOfDayScale]
-[[.args]]
-name = "r"
-type = "number"
-
-[GetTimeOfDayScale]
-[[.returns]]
-type = "number"
-
-[ShowInterface]
-[[.args]]
-name = "flag"
-type = "boolean"
-``````````
-name = "fadeDuration"
-type = "number"
-
-[PauseGame]
-[[.args]]
-name = "flag"
-type = "boolean"
-
-[UnitAddIndicator]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[AddIndicator]
-[[.args]]
-name = "whichWidget"
-type = "widget"
-``````````
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[PingMinimap]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "duration"
-type = "number"
-
-[PingMinimapEx]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "duration"
-type = "number"
-``````````
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "extraEffects"
-type = "boolean"
-
-[EnableOcclusion]
-[[.args]]
-name = "flag"
-type = "boolean"
-
-[SetIntroShotText]
-[[.args]]
-name = "introText"
-type = "string"
-
-[SetIntroShotModel]
-[[.args]]
-name = "introModelPath"
-type = "string"
-
-[EnableWorldFogBoundary]
-[[.args]]
-name = "b"
-type = "boolean"
-
-[PlayModelCinematic]
-[[.args]]
-name = "modelName"
-type = "string"
-
-[PlayCinematic]
-[[.args]]
-name = "movieName"
-type = "string"
-
-[ForceUIKey]
-[[.args]]
-name = "key"
-type = "string"
-
-[ForceUICancel]
-
-[DisplayLoadDialog]
-
-[SetAltMinimapIcon]
-[[.args]]
-name = "iconPath"
-type = "string"
-
-[DisableRestartMission]
-[[.args]]
-name = "flag"
-type = "boolean"
-
-[CreateTextTag]
-[[.returns]]
-type = "texttag"
-
-[DestroyTextTag]
-[[.args]]
-name = "t"
-type = "texttag"
-
-[SetTextTagText]
-[[.args]]
-name = "t"
-type = "texttag"
-``````````
-name = "s"
-type = "string"
-``````````
-name = "height"
-type = "number"
-
-[SetTextTagPos]
-[[.args]]
-name = "t"
-type = "texttag"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "heightOffset"
-type = "number"
-
-[SetTextTagPosUnit]
-[[.args]]
-name = "t"
-type = "texttag"
-``````````
-name = "whichUnit"
-type = "unit"
-``````````
-name = "heightOffset"
-type = "number"
-
-[SetTextTagColor]
-[[.args]]
-name = "t"
-type = "texttag"
-``````````
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[SetTextTagVelocity]
-[[.args]]
-name = "t"
-type = "texttag"
-``````````
-name = "xvel"
-type = "number"
-``````````
-name = "yvel"
-type = "number"
-
-[SetTextTagVisibility]
-[[.args]]
-name = "t"
-type = "texttag"
-``````````
-name = "flag"
-type = "boolean"
-
-[SetTextTagSuspended]
-[[.args]]
-name = "t"
-type = "texttag"
-``````````
-name = "flag"
-type = "boolean"
-
-[SetTextTagPermanent]
-[[.args]]
-name = "t"
-type = "texttag"
-``````````
-name = "flag"
-type = "boolean"
-
-[SetTextTagAge]
-[[.args]]
-name = "t"
-type = "texttag"
-``````````
-name = "age"
-type = "number"
-
-[SetTextTagLifespan]
-[[.args]]
-name = "t"
-type = "texttag"
-``````````
-name = "lifespan"
-type = "number"
-
-[SetTextTagFadepoint]
-[[.args]]
-name = "t"
-type = "texttag"
-``````````
-name = "fadepoint"
-type = "number"
-
-[SetReservedLocalHeroButtons]
-[[.args]]
-name = "reserved"
-type = "integer"
-
-[GetAllyColorFilterState]
-[[.returns]]
-type = "integer"
-
-[SetAllyColorFilterState]
-[[.args]]
-name = "state"
-type = "integer"
-
-[GetCreepCampFilterState]
-[[.returns]]
-type = "boolean"
-
-[SetCreepCampFilterState]
-[[.args]]
-name = "state"
-type = "boolean"
-
-[EnableMinimapFilterButtons]
-[[.args]]
-name = "enableAlly"
-type = "boolean"
-``````````
-name = "enableCreep"
-type = "boolean"
-
-[EnableDragSelect]
-[[.args]]
-name = "state"
-type = "boolean"
-``````````
-name = "ui"
-type = "boolean"
-
-[EnablePreSelect]
-[[.args]]
-name = "state"
-type = "boolean"
-``````````
-name = "ui"
-type = "boolean"
-
-[EnableSelect]
-[[.args]]
-name = "state"
-type = "boolean"
-``````````
-name = "ui"
-type = "boolean"
-
-[CreateTrackable]
-[[.args]]
-name = "trackableModelPath"
-type = "string"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "facing"
-type = "number"
-[[.returns]]
-type = "trackable"
-
-[CreateQuest]
-[[.returns]]
-type = "quest"
-
-[DestroyQuest]
-[[.args]]
-name = "whichQuest"
-type = "quest"
-
-[QuestSetTitle]
-[[.args]]
-name = "whichQuest"
-type = "quest"
-``````````
-name = "title"
-type = "string"
-
-[QuestSetDescription]
-[[.args]]
-name = "whichQuest"
-type = "quest"
-``````````
-name = "description"
-type = "string"
-
-[QuestSetIconPath]
-[[.args]]
-name = "whichQuest"
-type = "quest"
-``````````
-name = "iconPath"
-type = "string"
-
-[QuestSetRequired]
-[[.args]]
-name = "whichQuest"
-type = "quest"
-``````````
-name = "required"
-type = "boolean"
-
-[QuestSetCompleted]
-[[.args]]
-name = "whichQuest"
-type = "quest"
-``````````
-name = "completed"
-type = "boolean"
-
-[QuestSetDiscovered]
-[[.args]]
-name = "whichQuest"
-type = "quest"
-``````````
-name = "discovered"
-type = "boolean"
-
-[QuestSetFailed]
-[[.args]]
-name = "whichQuest"
-type = "quest"
-``````````
-name = "failed"
-type = "boolean"
-
-[QuestSetEnabled]
-[[.args]]
-name = "whichQuest"
-type = "quest"
-``````````
-name = "enabled"
-type = "boolean"
-
-[IsQuestRequired]
-[[.args]]
-name = "whichQuest"
-type = "quest"
-[[.returns]]
-type = "boolean"
-
-[IsQuestCompleted]
-[[.args]]
-name = "whichQuest"
-type = "quest"
-[[.returns]]
-type = "boolean"
-
-[IsQuestDiscovered]
-[[.args]]
-name = "whichQuest"
-type = "quest"
-[[.returns]]
-type = "boolean"
-
-[IsQuestFailed]
-[[.args]]
-name = "whichQuest"
-type = "quest"
-[[.returns]]
-type = "boolean"
-
-[IsQuestEnabled]
-[[.args]]
-name = "whichQuest"
-type = "quest"
-[[.returns]]
-type = "boolean"
-
-[QuestCreateItem]
-[[.args]]
-name = "whichQuest"
-type = "quest"
-[[.returns]]
-type = "questitem"
-
-[QuestItemSetDescription]
-[[.args]]
-name = "whichQuestItem"
-type = "questitem"
-``````````
-name = "description"
-type = "string"
-
-[QuestItemSetCompleted]
-[[.args]]
-name = "whichQuestItem"
-type = "questitem"
-``````````
-name = "completed"
-type = "boolean"
-
-[IsQuestItemCompleted]
-[[.args]]
-name = "whichQuestItem"
-type = "questitem"
-[[.returns]]
-type = "boolean"
-
-[CreateDefeatCondition]
-[[.returns]]
-type = "defeatcondition"
-
-[DestroyDefeatCondition]
-[[.args]]
-name = "whichCondition"
-type = "defeatcondition"
-
-[DefeatConditionSetDescription]
-[[.args]]
-name = "whichCondition"
-type = "defeatcondition"
-``````````
-name = "description"
-type = "string"
-
-[FlashQuestDialogButton]
-
-[ForceQuestDialogUpdate]
-
-[CreateTimerDialog]
-[[.args]]
-name = "t"
-type = "timer"
-[[.returns]]
-type = "timerdialog"
-
-[DestroyTimerDialog]
-[[.args]]
-name = "whichDialog"
-type = "timerdialog"
-
-[TimerDialogSetTitle]
-[[.args]]
-name = "whichDialog"
-type = "timerdialog"
-``````````
-name = "title"
-type = "string"
-
-[TimerDialogSetTitleColor]
-[[.args]]
-name = "whichDialog"
-type = "timerdialog"
-``````````
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[TimerDialogSetTimeColor]
-[[.args]]
-name = "whichDialog"
-type = "timerdialog"
-``````````
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[TimerDialogSetSpeed]
-[[.args]]
-name = "whichDialog"
-type = "timerdialog"
-``````````
-name = "speedMultFactor"
-type = "number"
-
-[TimerDialogDisplay]
-[[.args]]
-name = "whichDialog"
-type = "timerdialog"
-``````````
-name = "display"
-type = "boolean"
-
-[IsTimerDialogDisplayed]
-[[.args]]
-name = "whichDialog"
-type = "timerdialog"
-[[.returns]]
-type = "boolean"
-
-[TimerDialogSetRealTimeRemaining]
-[[.args]]
-name = "whichDialog"
-type = "timerdialog"
-``````````
-name = "timeRemaining"
-type = "number"
-
-[CreateLeaderboard]
-[[.returns]]
-type = "leaderboard"
-
-[DestroyLeaderboard]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-
-[LeaderboardDisplay]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "show"
-type = "boolean"
-
-[IsLeaderboardDisplayed]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-[[.returns]]
-type = "boolean"
-
-[LeaderboardGetItemCount]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-[[.returns]]
-type = "integer"
-
-[LeaderboardSetSizeByItemCount]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "count"
-type = "integer"
-
-[LeaderboardAddItem]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "label"
-type = "string"
-``````````
-name = "value"
-type = "integer"
-``````````
-name = "p"
-type = "player"
-
-[LeaderboardRemoveItem]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "index"
-type = "integer"
-
-[LeaderboardRemovePlayerItem]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "p"
-type = "player"
-
-[LeaderboardClear]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-
-[LeaderboardSortItemsByValue]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "ascending"
-type = "boolean"
-
-[LeaderboardSortItemsByPlayer]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "ascending"
-type = "boolean"
-
-[LeaderboardSortItemsByLabel]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "ascending"
-type = "boolean"
-
-[LeaderboardHasPlayerItem]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "p"
-type = "player"
-[[.returns]]
-type = "boolean"
-
-[LeaderboardGetPlayerIndex]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "p"
-type = "player"
-[[.returns]]
-type = "integer"
-
-[LeaderboardSetLabel]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "label"
-type = "string"
-
-[LeaderboardGetLabelText]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-[[.returns]]
-type = "string"
-
-[PlayerSetLeaderboard]
-[[.args]]
-name = "toPlayer"
-type = "player"
-``````````
-name = "lb"
-type = "leaderboard"
-
-[PlayerGetLeaderboard]
-[[.args]]
-name = "toPlayer"
-type = "player"
-[[.returns]]
-type = "leaderboard"
-
-[LeaderboardSetLabelColor]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[LeaderboardSetValueColor]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[LeaderboardSetStyle]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "showLabel"
-type = "boolean"
-``````````
-name = "showNames"
-type = "boolean"
-``````````
-name = "showValues"
-type = "boolean"
-``````````
-name = "showIcons"
-type = "boolean"
-
-[LeaderboardSetItemValue]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "whichItem"
-type = "integer"
-``````````
-name = "val"
-type = "integer"
-
-[LeaderboardSetItemLabel]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "whichItem"
-type = "integer"
-``````````
-name = "val"
-type = "string"
-
-[LeaderboardSetItemStyle]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "whichItem"
-type = "integer"
-``````````
-name = "showLabel"
-type = "boolean"
-``````````
-name = "showValue"
-type = "boolean"
-``````````
-name = "showIcon"
-type = "boolean"
-
-[LeaderboardSetItemLabelColor]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "whichItem"
-type = "integer"
-``````````
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[LeaderboardSetItemValueColor]
-[[.args]]
-name = "lb"
-type = "leaderboard"
-``````````
-name = "whichItem"
-type = "integer"
-``````````
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[CreateMultiboard]
-[[.returns]]
-type = "multiboard"
-
-[DestroyMultiboard]
-[[.args]]
-name = "lb"
-type = "multiboard"
-
-[MultiboardDisplay]
-[[.args]]
-name = "lb"
-type = "multiboard"
-``````````
-name = "show"
-type = "boolean"
-
-[IsMultiboardDisplayed]
-[[.args]]
-name = "lb"
-type = "multiboard"
-[[.returns]]
-type = "boolean"
-
-[MultiboardMinimize]
-[[.args]]
-name = "lb"
-type = "multiboard"
-``````````
-name = "minimize"
-type = "boolean"
-
-[IsMultiboardMinimized]
-[[.args]]
-name = "lb"
-type = "multiboard"
-[[.returns]]
-type = "boolean"
-
-[MultiboardClear]
-[[.args]]
-name = "lb"
-type = "multiboard"
-
-[MultiboardSetTitleText]
-[[.args]]
-name = "lb"
-type = "multiboard"
-``````````
-name = "label"
-type = "string"
-
-[MultiboardGetTitleText]
-[[.args]]
-name = "lb"
-type = "multiboard"
-[[.returns]]
-type = "string"
-
-[MultiboardSetTitleTextColor]
-[[.args]]
-name = "lb"
-type = "multiboard"
-``````````
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[MultiboardGetRowCount]
-[[.args]]
-name = "lb"
-type = "multiboard"
-[[.returns]]
-type = "integer"
-
-[MultiboardGetColumnCount]
-[[.args]]
-name = "lb"
-type = "multiboard"
-[[.returns]]
-type = "integer"
-
-[MultiboardSetColumnCount]
-[[.args]]
-name = "lb"
-type = "multiboard"
-``````````
-name = "count"
-type = "integer"
-
-[MultiboardSetRowCount]
-[[.args]]
-name = "lb"
-type = "multiboard"
-``````````
-name = "count"
-type = "integer"
-
-[MultiboardSetItemsStyle]
-[[.args]]
-name = "lb"
-type = "multiboard"
-``````````
-name = "showValues"
-type = "boolean"
-``````````
-name = "showIcons"
-type = "boolean"
-
-[MultiboardSetItemsValue]
-[[.args]]
-name = "lb"
-type = "multiboard"
-``````````
-name = "value"
-type = "string"
-
-[MultiboardSetItemsValueColor]
-[[.args]]
-name = "lb"
-type = "multiboard"
-``````````
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[MultiboardSetItemsWidth]
-[[.args]]
-name = "lb"
-type = "multiboard"
-``````````
-name = "width"
-type = "number"
-
-[MultiboardSetItemsIcon]
-[[.args]]
-name = "lb"
-type = "multiboard"
-``````````
-name = "iconPath"
-type = "string"
-
-[MultiboardGetItem]
-[[.args]]
-name = "lb"
-type = "multiboard"
-``````````
-name = "row"
-type = "integer"
-``````````
-name = "column"
-type = "integer"
-[[.returns]]
-type = "multiboarditem"
-
-[MultiboardReleaseItem]
-[[.args]]
-name = "mbi"
-type = "multiboarditem"
-
-[MultiboardSetItemStyle]
-[[.args]]
-name = "mbi"
-type = "multiboarditem"
-``````````
-name = "showValue"
-type = "boolean"
-``````````
-name = "showIcon"
-type = "boolean"
-
-[MultiboardSetItemValue]
-[[.args]]
-name = "mbi"
-type = "multiboarditem"
-``````````
-name = "val"
-type = "string"
-
-[MultiboardSetItemValueColor]
-[[.args]]
-name = "mbi"
-type = "multiboarditem"
-``````````
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[MultiboardSetItemWidth]
-[[.args]]
-name = "mbi"
-type = "multiboarditem"
-``````````
-name = "width"
-type = "number"
-
-[MultiboardSetItemIcon]
-[[.args]]
-name = "mbi"
-type = "multiboarditem"
-``````````
-name = "iconFileName"
-type = "string"
-
-[MultiboardSuppressDisplay]
-[[.args]]
-name = "flag"
-type = "boolean"
-
-[SetCameraPosition]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-
-[SetCameraQuickPosition]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-
-[SetCameraBounds]
-[[.args]]
-name = "x1"
-type = "number"
-``````````
-name = "y1"
-type = "number"
-``````````
-name = "x2"
-type = "number"
-``````````
-name = "y2"
-type = "number"
-``````````
-name = "x3"
-type = "number"
-``````````
-name = "y3"
-type = "number"
-``````````
-name = "x4"
-type = "number"
-``````````
-name = "y4"
-type = "number"
-
-[StopCamera]
-
-[ResetToGameCamera]
-[[.args]]
-name = "duration"
-type = "number"
-
-[PanCameraTo]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-
-[PanCameraToTimed]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "duration"
-type = "number"
-
-[PanCameraToWithZ]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "zOffsetDest"
-type = "number"
-
-[PanCameraToTimedWithZ]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "zOffsetDest"
-type = "number"
-``````````
-name = "duration"
-type = "number"
-
-[SetCinematicCamera]
-[[.args]]
-name = "cameraModelFile"
-type = "string"
-
-[SetCameraRotateMode]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "radiansToSweep"
-type = "number"
-``````````
-name = "duration"
-type = "number"
-
-[SetCameraField]
-[[.args]]
-name = "whichField"
-type = "camerafield"
-``````````
-name = "value"
-type = "number"
-``````````
-name = "duration"
-type = "number"
-
-[AdjustCameraField]
-[[.args]]
-name = "whichField"
-type = "camerafield"
-``````````
-name = "offset"
-type = "number"
-``````````
-name = "duration"
-type = "number"
-
-[SetCameraTargetController]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "xoffset"
-type = "number"
-``````````
-name = "yoffset"
-type = "number"
-``````````
-name = "inheritOrientation"
-type = "boolean"
-
-[SetCameraOrientController]
-[[.args]]
-name = "whichUnit"
-type = "unit"
-``````````
-name = "xoffset"
-type = "number"
-``````````
-name = "yoffset"
-type = "number"
-
-[CreateCameraSetup]
-[[.returns]]
-type = "camerasetup"
-
-[CameraSetupSetField]
-[[.args]]
-name = "whichSetup"
-type = "camerasetup"
-``````````
-name = "whichField"
-type = "camerafield"
-``````````
-name = "value"
-type = "number"
-``````````
-name = "duration"
-type = "number"
-
-[CameraSetupGetField]
-[[.args]]
-name = "whichSetup"
-type = "camerasetup"
-``````````
-name = "whichField"
-type = "camerafield"
-[[.returns]]
-type = "number"
-
-[CameraSetupSetDestPosition]
-[[.args]]
-name = "whichSetup"
-type = "camerasetup"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "duration"
-type = "number"
-
-[CameraSetupGetDestPositionLoc]
-[[.args]]
-name = "whichSetup"
-type = "camerasetup"
-[[.returns]]
-type = "location"
-
-[CameraSetupGetDestPositionX]
-[[.args]]
-name = "whichSetup"
-type = "camerasetup"
-[[.returns]]
-type = "number"
-
-[CameraSetupGetDestPositionY]
-[[.args]]
-name = "whichSetup"
-type = "camerasetup"
-[[.returns]]
-type = "number"
-
-[CameraSetupApply]
-[[.args]]
-name = "whichSetup"
-type = "camerasetup"
-``````````
-name = "doPan"
-type = "boolean"
-``````````
-name = "panTimed"
-type = "boolean"
-
-[CameraSetupApplyWithZ]
-[[.args]]
-name = "whichSetup"
-type = "camerasetup"
-``````````
-name = "zDestOffset"
-type = "number"
-
-[CameraSetupApplyForceDuration]
-[[.args]]
-name = "whichSetup"
-type = "camerasetup"
-``````````
-name = "doPan"
-type = "boolean"
-``````````
-name = "forceDuration"
-type = "number"
-
-[CameraSetupApplyForceDurationWithZ]
-[[.args]]
-name = "whichSetup"
-type = "camerasetup"
-``````````
-name = "zDestOffset"
-type = "number"
-``````````
-name = "forceDuration"
-type = "number"
-
-[CameraSetTargetNoise]
-[[.args]]
-name = "mag"
-type = "number"
-``````````
-name = "velocity"
-type = "number"
-
-[CameraSetSourceNoise]
-[[.args]]
-name = "mag"
-type = "number"
-``````````
-name = "velocity"
-type = "number"
-
-[CameraSetTargetNoiseEx]
-[[.args]]
-name = "mag"
-type = "number"
-``````````
-name = "velocity"
-type = "number"
-``````````
-name = "vertOnly"
-type = "boolean"
-
-[CameraSetSourceNoiseEx]
-[[.args]]
-name = "mag"
-type = "number"
-``````````
-name = "velocity"
-type = "number"
-``````````
-name = "vertOnly"
-type = "boolean"
-
-[CameraSetSmoothingFactor]
-[[.args]]
-name = "factor"
-type = "number"
-
-[SetCineFilterTexture]
-[[.args]]
-name = "filename"
-type = "string"
-
-[SetCineFilterBlendMode]
-[[.args]]
-name = "whichMode"
-type = "blendmode"
-
-[SetCineFilterTexMapFlags]
-[[.args]]
-name = "whichFlags"
-type = "texmapflags"
-
-[SetCineFilterStartUV]
-[[.args]]
-name = "minu"
-type = "number"
-``````````
-name = "minv"
-type = "number"
-``````````
-name = "maxu"
-type = "number"
-``````````
-name = "maxv"
-type = "number"
-
-[SetCineFilterEndUV]
-[[.args]]
-name = "minu"
-type = "number"
-``````````
-name = "minv"
-type = "number"
-``````````
-name = "maxu"
-type = "number"
-``````````
-name = "maxv"
-type = "number"
-
-[SetCineFilterStartColor]
-[[.args]]
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[SetCineFilterEndColor]
-[[.args]]
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[SetCineFilterDuration]
-[[.args]]
-name = "duration"
-type = "number"
-
-[DisplayCineFilter]
-[[.args]]
-name = "flag"
-type = "boolean"
-
-[IsCineFilterDisplayed]
-[[.returns]]
-type = "boolean"
-
-[SetCinematicScene]
-[[.args]]
-name = "portraitUnitId"
-type = "integer"
-``````````
-name = "color"
-type = "playercolor"
-``````````
-name = "speakerTitle"
-type = "string"
-``````````
-name = "text"
-type = "string"
-``````````
-name = "sceneDuration"
-type = "number"
-``````````
-name = "voiceoverDuration"
-type = "number"
-
-[EndCinematicScene]
-
-[ForceCinematicSubtitles]
-[[.args]]
-name = "flag"
-type = "boolean"
-
-[GetCameraMargin]
-[[.args]]
-name = "whichMargin"
-type = "integer"
-[[.returns]]
-type = "number"
-
-[GetCameraBoundMinX]
-[[.returns]]
-type = "number"
-
-[GetCameraBoundMinY]
-[[.returns]]
-type = "number"
-
-[GetCameraBoundMaxX]
-[[.returns]]
-type = "number"
-
-[GetCameraBoundMaxY]
-[[.returns]]
-type = "number"
-
-[GetCameraField]
-[[.args]]
-name = "whichField"
-type = "camerafield"
-[[.returns]]
-type = "number"
-
-[GetCameraTargetPositionX]
-[[.returns]]
-type = "number"
-
-[GetCameraTargetPositionY]
-[[.returns]]
-type = "number"
-
-[GetCameraTargetPositionZ]
-[[.returns]]
-type = "number"
-
-[GetCameraTargetPositionLoc]
-[[.returns]]
-type = "location"
-
-[GetCameraEyePositionX]
-[[.returns]]
-type = "number"
-
-[GetCameraEyePositionY]
-[[.returns]]
-type = "number"
-
-[GetCameraEyePositionZ]
-[[.returns]]
-type = "number"
-
-[GetCameraEyePositionLoc]
-[[.returns]]
-type = "location"
-
-[NewSoundEnvironment]
-[[.args]]
-name = "environmentName"
-type = "string"
-
-[CreateSound]
-[[.args]]
-name = "fileName"
-type = "string"
-``````````
-name = "looping"
-type = "boolean"
-``````````
-name = "is3D"
-type = "boolean"
-``````````
-name = "stopwhenoutofrange"
-type = "boolean"
-``````````
-name = "fadeInRate"
-type = "integer"
-``````````
-name = "fadeOutRate"
-type = "integer"
-``````````
-name = "eaxSetting"
-type = "string"
-[[.returns]]
-type = "sound"
-
-[CreateSoundFilenameWithLabel]
-[[.args]]
-name = "fileName"
-type = "string"
-``````````
-name = "looping"
-type = "boolean"
-``````````
-name = "is3D"
-type = "boolean"
-``````````
-name = "stopwhenoutofrange"
-type = "boolean"
-``````````
-name = "fadeInRate"
-type = "integer"
-``````````
-name = "fadeOutRate"
-type = "integer"
-``````````
-name = "SLKEntryName"
-type = "string"
-[[.returns]]
-type = "sound"
-
-[CreateSoundFromLabel]
-[[.args]]
-name = "soundLabel"
-type = "string"
-``````````
-name = "looping"
-type = "boolean"
-``````````
-name = "is3D"
-type = "boolean"
-``````````
-name = "stopwhenoutofrange"
-type = "boolean"
-``````````
-name = "fadeInRate"
-type = "integer"
-``````````
-name = "fadeOutRate"
-type = "integer"
-[[.returns]]
-type = "sound"
-
-[CreateMIDISound]
-[[.args]]
-name = "soundLabel"
-type = "string"
-``````````
-name = "fadeInRate"
-type = "integer"
-``````````
-name = "fadeOutRate"
-type = "integer"
-[[.returns]]
-type = "sound"
-
-[SetSoundParamsFromLabel]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-``````````
-name = "soundLabel"
-type = "string"
-
-[SetSoundDistanceCutoff]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-``````````
-name = "cutoff"
-type = "number"
-
-[SetSoundChannel]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-``````````
-name = "channel"
-type = "integer"
-
-[SetSoundVolume]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-``````````
-name = "volume"
-type = "integer"
-
-[SetSoundPitch]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-``````````
-name = "pitch"
-type = "number"
-
-[SetSoundPlayPosition]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-``````````
-name = "millisecs"
-type = "integer"
-
-[SetSoundDistances]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-``````````
-name = "minDist"
-type = "number"
-``````````
-name = "maxDist"
-type = "number"
-
-[SetSoundConeAngles]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-``````````
-name = "inside"
-type = "number"
-``````````
-name = "outside"
-type = "number"
-``````````
-name = "outsideVolume"
-type = "integer"
-
-[SetSoundConeOrientation]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "z"
-type = "number"
-
-[SetSoundPosition]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "z"
-type = "number"
-
-[SetSoundVelocity]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "z"
-type = "number"
-
-[AttachSoundToUnit]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-``````````
-name = "whichUnit"
-type = "unit"
-
-[StartSound]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-
-[StopSound]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-``````````
-name = "killWhenDone"
-type = "boolean"
-``````````
-name = "fadeOut"
-type = "boolean"
-
-[KillSoundWhenDone]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-
-[SetMapMusic]
-[[.args]]
-name = "musicName"
-type = "string"
-``````````
-name = "random"
-type = "boolean"
-``````````
-name = "index"
-type = "integer"
-
-[ClearMapMusic]
-
-[PlayMusic]
-[[.args]]
-name = "musicName"
-type = "string"
-
-[PlayMusicEx]
-[[.args]]
-name = "musicName"
-type = "string"
-``````````
-name = "frommsecs"
-type = "integer"
-``````````
-name = "fadeinmsecs"
-type = "integer"
-
-[StopMusic]
-[[.args]]
-name = "fadeOut"
-type = "boolean"
-
-[ResumeMusic]
-
-[PlayThematicMusic]
-[[.args]]
-name = "musicFileName"
-type = "string"
-
-[PlayThematicMusicEx]
-[[.args]]
-name = "musicFileName"
-type = "string"
-``````````
-name = "frommsecs"
-type = "integer"
-
-[EndThematicMusic]
-
-[SetMusicVolume]
-[[.args]]
-name = "volume"
-type = "integer"
-
-[SetMusicPlayPosition]
-[[.args]]
-name = "millisecs"
-type = "integer"
-
-[SetThematicMusicPlayPosition]
-[[.args]]
-name = "millisecs"
-type = "integer"
-
-[SetSoundDuration]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-``````````
-name = "duration"
-type = "integer"
-
-[GetSoundDuration]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-[[.returns]]
-type = "integer"
-
-[GetSoundFileDuration]
-[[.args]]
-name = "musicFileName"
-type = "string"
-[[.returns]]
-type = "integer"
-
-[VolumeGroupSetVolume]
-[[.args]]
-name = "vgroup"
-type = "volumegroup"
-``````````
-name = "scale"
-type = "number"
-
-[VolumeGroupReset]
-
-[GetSoundIsPlaying]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-[[.returns]]
-type = "boolean"
-
-[GetSoundIsLoading]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-[[.returns]]
-type = "boolean"
-
-[RegisterStackedSound]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-``````````
-name = "byPosition"
-type = "boolean"
-``````````
-name = "rectwidth"
-type = "number"
-``````````
-name = "rectheight"
-type = "number"
-
-[UnregisterStackedSound]
-[[.args]]
-name = "soundHandle"
-type = "sound"
-``````````
-name = "byPosition"
-type = "boolean"
-``````````
-name = "rectwidth"
-type = "number"
-``````````
-name = "rectheight"
-type = "number"
-
-[AddWeatherEffect]
-[[.args]]
-name = "where"
-type = "rect"
-``````````
-name = "effectID"
-type = "integer"
-[[.returns]]
-type = "weathereffect"
-
-[RemoveWeatherEffect]
-[[.args]]
-name = "whichEffect"
-type = "weathereffect"
-
-[EnableWeatherEffect]
-[[.args]]
-name = "whichEffect"
-type = "weathereffect"
-``````````
-name = "enable"
-type = "boolean"
-
-[TerrainDeformCrater]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "radius"
-type = "number"
-``````````
-name = "depth"
-type = "number"
-``````````
-name = "duration"
-type = "integer"
-``````````
-name = "permanent"
-type = "boolean"
-[[.returns]]
-type = "terraindeformation"
-
-[TerrainDeformRipple]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "radius"
-type = "number"
-``````````
-name = "depth"
-type = "number"
-``````````
-name = "duration"
-type = "integer"
-``````````
-name = "count"
-type = "integer"
-``````````
-name = "spaceWaves"
-type = "number"
-``````````
-name = "timeWaves"
-type = "number"
-``````````
-name = "radiusStartPct"
-type = "number"
-``````````
-name = "limitNeg"
-type = "boolean"
-[[.returns]]
-type = "terraindeformation"
-
-[TerrainDeformWave]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "dirX"
-type = "number"
-``````````
-name = "dirY"
-type = "number"
-``````````
-name = "distance"
-type = "number"
-``````````
-name = "speed"
-type = "number"
-``````````
-name = "radius"
-type = "number"
-``````````
-name = "depth"
-type = "number"
-``````````
-name = "trailTime"
-type = "integer"
-``````````
-name = "count"
-type = "integer"
-[[.returns]]
-type = "terraindeformation"
-
-[TerrainDeformRandom]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "radius"
-type = "number"
-``````````
-name = "minDelta"
-type = "number"
-``````````
-name = "maxDelta"
-type = "number"
-``````````
-name = "duration"
-type = "integer"
-``````````
-name = "updateInterval"
-type = "integer"
-[[.returns]]
-type = "terraindeformation"
-
-[TerrainDeformStop]
-[[.args]]
-name = "deformation"
-type = "terraindeformation"
-``````````
-name = "duration"
-type = "integer"
-
-[TerrainDeformStopAll]
-
-[AddSpecialEffect]
-[[.args]]
-name = "modelName"
-type = "string"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "effect"
-
-[AddSpecialEffectLoc]
-[[.args]]
-name = "modelName"
-type = "string"
-``````````
-name = "where"
-type = "location"
-[[.returns]]
-type = "effect"
-
-[AddSpecialEffectTarget]
-[[.args]]
-name = "modelName"
-type = "string"
-``````````
-name = "targetWidget"
-type = "widget"
-``````````
-name = "attachPointName"
-type = "string"
-[[.returns]]
-type = "effect"
-
-[DestroyEffect]
-[[.args]]
-name = "whichEffect"
-type = "effect"
-
-[AddSpellEffect]
-[[.args]]
-name = "abilityString"
-type = "string"
-``````````
-name = "t"
-type = "effecttype"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "effect"
-
-[AddSpellEffectLoc]
-[[.args]]
-name = "abilityString"
-type = "string"
-``````````
-name = "t"
-type = "effecttype"
-``````````
-name = "where"
-type = "location"
-[[.returns]]
-type = "effect"
-
-[AddSpellEffectById]
-[[.args]]
-name = "abilityId"
-type = "integer"
-``````````
-name = "t"
-type = "effecttype"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "effect"
-
-[AddSpellEffectByIdLoc]
-[[.args]]
-name = "abilityId"
-type = "integer"
-``````````
-name = "t"
-type = "effecttype"
-``````````
-name = "where"
-type = "location"
-[[.returns]]
-type = "effect"
-
-[AddSpellEffectTarget]
-[[.args]]
-name = "modelName"
-type = "string"
-``````````
-name = "t"
-type = "effecttype"
-``````````
-name = "targetWidget"
-type = "widget"
-``````````
-name = "attachPoint"
-type = "string"
-[[.returns]]
-type = "effect"
-
-[AddSpellEffectTargetById]
-[[.args]]
-name = "abilityId"
-type = "integer"
-``````````
-name = "t"
-type = "effecttype"
-``````````
-name = "targetWidget"
-type = "widget"
-``````````
-name = "attachPoint"
-type = "string"
-[[.returns]]
-type = "effect"
-
-[AddLightning]
-[[.args]]
-name = "codeName"
-type = "string"
-``````````
-name = "checkVisibility"
-type = "boolean"
-``````````
-name = "x1"
-type = "number"
-``````````
-name = "y1"
-type = "number"
-``````````
-name = "x2"
-type = "number"
-``````````
-name = "y2"
-type = "number"
-[[.returns]]
-type = "lightning"
-
-[AddLightningEx]
-[[.args]]
-name = "codeName"
-type = "string"
-``````````
-name = "checkVisibility"
-type = "boolean"
-``````````
-name = "x1"
-type = "number"
-``````````
-name = "y1"
-type = "number"
-``````````
-name = "z1"
-type = "number"
-``````````
-name = "x2"
-type = "number"
-``````````
-name = "y2"
-type = "number"
-``````````
-name = "z2"
-type = "number"
-[[.returns]]
-type = "lightning"
-
-[DestroyLightning]
-[[.args]]
-name = "whichBolt"
-type = "lightning"
-[[.returns]]
-type = "boolean"
-
-[MoveLightning]
-[[.args]]
-name = "whichBolt"
-type = "lightning"
-``````````
-name = "checkVisibility"
-type = "boolean"
-``````````
-name = "x1"
-type = "number"
-``````````
-name = "y1"
-type = "number"
-``````````
-name = "x2"
-type = "number"
-``````````
-name = "y2"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[MoveLightningEx]
-[[.args]]
-name = "whichBolt"
-type = "lightning"
-``````````
-name = "checkVisibility"
-type = "boolean"
-``````````
-name = "x1"
-type = "number"
-``````````
-name = "y1"
-type = "number"
-``````````
-name = "z1"
-type = "number"
-``````````
-name = "x2"
-type = "number"
-``````````
-name = "y2"
-type = "number"
-``````````
-name = "z2"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[GetLightningColorA]
-[[.args]]
-name = "whichBolt"
-type = "lightning"
-[[.returns]]
-type = "number"
-
-[GetLightningColorR]
-[[.args]]
-name = "whichBolt"
-type = "lightning"
-[[.returns]]
-type = "number"
-
-[GetLightningColorG]
-[[.args]]
-name = "whichBolt"
-type = "lightning"
-[[.returns]]
-type = "number"
-
-[GetLightningColorB]
-[[.args]]
-name = "whichBolt"
-type = "lightning"
-[[.returns]]
-type = "number"
-
-[SetLightningColor]
-[[.args]]
-name = "whichBolt"
-type = "lightning"
-``````````
-name = "r"
-type = "number"
-``````````
-name = "g"
-type = "number"
-``````````
-name = "b"
-type = "number"
-``````````
-name = "a"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[GetAbilityEffect]
-[[.args]]
-name = "abilityString"
-type = "string"
-``````````
-name = "t"
-type = "effecttype"
-``````````
-name = "index"
-type = "integer"
-[[.returns]]
-type = "string"
-
-[GetAbilityEffectById]
-[[.args]]
-name = "abilityId"
-type = "integer"
-``````````
-name = "t"
-type = "effecttype"
-``````````
-name = "index"
-type = "integer"
-[[.returns]]
-type = "string"
-
-[GetAbilitySound]
-[[.args]]
-name = "abilityString"
-type = "string"
-``````````
-name = "t"
-type = "soundtype"
-[[.returns]]
-type = "string"
-
-[GetAbilitySoundById]
-[[.args]]
-name = "abilityId"
-type = "integer"
-``````````
-name = "t"
-type = "soundtype"
-[[.returns]]
-type = "string"
-
-[GetTerrainCliffLevel]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "integer"
-
-[SetWaterBaseColor]
-[[.args]]
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[SetWaterDeforms]
-[[.args]]
-name = "val"
-type = "boolean"
-
-[GetTerrainType]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "integer"
-
-[GetTerrainVariance]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "integer"
-
-[SetTerrainType]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "terrainType"
-type = "integer"
-``````````
-name = "variation"
-type = "integer"
-``````````
-name = "area"
-type = "integer"
-``````````
-name = "shape"
-type = "integer"
-
-[IsTerrainPathable]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "t"
-type = "pathingtype"
-[[.returns]]
-type = "boolean"
-
-[SetTerrainPathable]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "t"
-type = "pathingtype"
-``````````
-name = "flag"
-type = "boolean"
-
-[CreateImage]
-[[.args]]
-name = "file"
-type = "string"
-``````````
-name = "sizeX"
-type = "number"
-``````````
-name = "sizeY"
-type = "number"
-``````````
-name = "sizeZ"
-type = "number"
-``````````
-name = "posX"
-type = "number"
-``````````
-name = "posY"
-type = "number"
-``````````
-name = "posZ"
-type = "number"
-``````````
-name = "originX"
-type = "number"
-``````````
-name = "originY"
-type = "number"
-``````````
-name = "originZ"
-type = "number"
-``````````
-name = "imageType"
-type = "integer"
-[[.returns]]
-type = "image"
-
-[DestroyImage]
-[[.args]]
-name = "whichImage"
-type = "image"
-
-[ShowImage]
-[[.args]]
-name = "whichImage"
-type = "image"
-``````````
-name = "flag"
-type = "boolean"
-
-[SetImageConstantHeight]
-[[.args]]
-name = "whichImage"
-type = "image"
-``````````
-name = "flag"
-type = "boolean"
-``````````
-name = "height"
-type = "number"
-
-[SetImagePosition]
-[[.args]]
-name = "whichImage"
-type = "image"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "z"
-type = "number"
-
-[SetImageColor]
-[[.args]]
-name = "whichImage"
-type = "image"
-``````````
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-
-[SetImageRender]
-[[.args]]
-name = "whichImage"
-type = "image"
-``````````
-name = "flag"
-type = "boolean"
-
-[SetImageRenderAlways]
-[[.args]]
-name = "whichImage"
-type = "image"
-``````````
-name = "flag"
-type = "boolean"
-
-[SetImageAboveWater]
-[[.args]]
-name = "whichImage"
-type = "image"
-``````````
-name = "flag"
-type = "boolean"
-``````````
-name = "useWaterAlpha"
-type = "boolean"
-
-[SetImageType]
-[[.args]]
-name = "whichImage"
-type = "image"
-``````````
-name = "imageType"
-type = "integer"
-
-[CreateUbersplat]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "name"
-type = "string"
-``````````
-name = "red"
-type = "integer"
-``````````
-name = "green"
-type = "integer"
-``````````
-name = "blue"
-type = "integer"
-``````````
-name = "alpha"
-type = "integer"
-``````````
-name = "forcePaused"
-type = "boolean"
-``````````
-name = "noBirthTime"
-type = "boolean"
-[[.returns]]
-type = "ubersplat"
-
-[DestroyUbersplat]
-[[.args]]
-name = "whichSplat"
-type = "ubersplat"
-
-[ResetUbersplat]
-[[.args]]
-name = "whichSplat"
-type = "ubersplat"
-
-[FinishUbersplat]
-[[.args]]
-name = "whichSplat"
-type = "ubersplat"
-
-[ShowUbersplat]
-[[.args]]
-name = "whichSplat"
-type = "ubersplat"
-``````````
-name = "flag"
-type = "boolean"
-
-[SetUbersplatRender]
-[[.args]]
-name = "whichSplat"
-type = "ubersplat"
-``````````
-name = "flag"
-type = "boolean"
-
-[SetUbersplatRenderAlways]
-[[.args]]
-name = "whichSplat"
-type = "ubersplat"
-``````````
-name = "flag"
-type = "boolean"
-
-[SetBlight]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "radius"
-type = "number"
-``````````
-name = "addBlight"
-type = "boolean"
-
-[SetBlightRect]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "r"
-type = "rect"
-``````````
-name = "addBlight"
-type = "boolean"
-
-[SetBlightPoint]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "addBlight"
-type = "boolean"
-
-[SetBlightLoc]
-[[.args]]
-name = "whichPlayer"
-type = "player"
-``````````
-name = "whichLocation"
-type = "location"
-``````````
-name = "radius"
-type = "number"
-``````````
-name = "addBlight"
-type = "boolean"
-
-[CreateBlightedGoldmine]
-[[.args]]
-name = "id"
-type = "player"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "face"
-type = "number"
-[[.returns]]
-type = "unit"
-
-[IsPointBlighted]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[SetDoodadAnimation]
-[[.args]]
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "radius"
-type = "number"
-``````````
-name = "doodadID"
-type = "integer"
-``````````
-name = "nearestOnly"
-type = "boolean"
-``````````
-name = "animName"
-type = "string"
-``````````
-name = "animRandom"
-type = "boolean"
-
-[SetDoodadAnimationRect]
-[[.args]]
-name = "r"
-type = "rect"
-``````````
-name = "doodadID"
-type = "integer"
-``````````
-name = "animName"
-type = "string"
-``````````
-name = "animRandom"
-type = "boolean"
-
-[StartMeleeAI]
-[[.args]]
-name = "num"
-type = "player"
-``````````
-name = "script"
-type = "string"
-
-[StartCampaignAI]
-[[.args]]
-name = "num"
-type = "player"
-``````````
-name = "script"
-type = "string"
-
-[CommandAI]
-[[.args]]
-name = "num"
-type = "player"
-``````````
-name = "command"
-type = "integer"
-``````````
-name = "data"
-type = "integer"
-
-[PauseCompAI]
-[[.args]]
-name = "p"
-type = "player"
-``````````
-name = "pause"
-type = "boolean"
-
-[GetAIDifficulty]
-[[.args]]
-name = "num"
-type = "player"
-[[.returns]]
-type = "aidifficulty"
-
-[RemoveGuardPosition]
-[[.args]]
-name = "hUnit"
-type = "unit"
-
-[RecycleGuardPosition]
-[[.args]]
-name = "hUnit"
-type = "unit"
-
-[RemoveAllGuardPositions]
-[[.args]]
-name = "num"
-type = "player"
-
-[Cheat]
-[[.args]]
-name = "cheatStr"
-type = "string"
-
-[IsNoVictoryCheat]
-[[.returns]]
-type = "boolean"
-
-[IsNoDefeatCheat]
-[[.returns]]
-type = "boolean"
-
-[Preload]
-[[.args]]
-name = "filename"
-type = "string"
-
-[PreloadEnd]
-[[.args]]
-name = "timeout"
-type = "number"
-
-[PreloadStart]
-
-[PreloadRefresh]
-
-[PreloadEndEx]
-
-[PreloadGenClear]
-
-[PreloadGenStart]
-
-[PreloadGenEnd]
-[[.args]]
-name = "filename"
-type = "string"
-
-[Preloader]
-[[.args]]
-name = "filename"
-type = "string"
-
-[FALSE]
-type = "boolean"
-value = false
-
-[TRUE]
-type = "boolean"
-value = true
-
-[JASS_MAX_ARRAY_SIZE]
-type = "integer"
-value = 8192
-
-[PLAYER_NEUTRAL_PASSIVE]
-type = "integer"
-value = 15
-
-[PLAYER_NEUTRAL_AGGRESSIVE]
-type = "integer"
-value = 12
-
-[PLAYER_COLOR_RED]
-type = "integer"
-value = 0
-
-[PLAYER_COLOR_BLUE]
-type = "integer"
-value = 1
-
-[PLAYER_COLOR_CYAN]
-type = "integer"
-value = 2
-
-[PLAYER_COLOR_PURPLE]
-type = "integer"
-value = 3
-
-[PLAYER_COLOR_YELLOW]
-type = "integer"
-value = 4
-
-[PLAYER_COLOR_ORANGE]
-type = "integer"
-value = 5
-
-[PLAYER_COLOR_GREEN]
-type = "integer"
-value = 6
-
-[PLAYER_COLOR_PINK]
-type = "integer"
-value = 7
-
-[PLAYER_COLOR_LIGHT_GRAY]
-type = "integer"
-value = 8
-
-[PLAYER_COLOR_LIGHT_BLUE]
-type = "integer"
-value = 9
-
-[PLAYER_COLOR_AQUA]
-type = "integer"
-value = 10
-
-[PLAYER_COLOR_BROWN]
-type = "integer"
-value = 11
-
-[RACE_HUMAN]
-type = "integer"
-value = 1
-
-[RACE_ORC]
-type = "integer"
-value = 2
-
-[RACE_UNDEAD]
-type = "integer"
-value = 3
-
-[RACE_NIGHTELF]
-type = "integer"
-value = 4
-
-[RACE_DEMON]
-type = "integer"
-value = 5
-
-[RACE_OTHER]
-type = "integer"
-value = 7
-
-[PLAYER_GAME_RESULT_VICTORY]
-type = "integer"
-value = 0
-
-[PLAYER_GAME_RESULT_DEFEAT]
-type = "integer"
-value = 1
-
-[PLAYER_GAME_RESULT_TIE]
-type = "integer"
-value = 2
-
-[PLAYER_GAME_RESULT_NEUTRAL]
-type = "integer"
-value = 3
-
-[ALLIANCE_PASSIVE]
-type = "integer"
-value = 0
-
-[ALLIANCE_HELP_REQUEST]
-type = "integer"
-value = 1
-
-[ALLIANCE_HELP_RESPONSE]
-type = "integer"
-value = 2
-
-[ALLIANCE_SHARED_XP]
-type = "integer"
-value = 3
-
-[ALLIANCE_SHARED_SPELLS]
-type = "integer"
-value = 4
-
-[ALLIANCE_SHARED_VISION]
-type = "integer"
-value = 5
-
-[ALLIANCE_SHARED_CONTROL]
-type = "integer"
-value = 6
-
-[ALLIANCE_SHARED_ADVANCED_CONTROL]
-type = "integer"
-value = 7
-
-[ALLIANCE_RESCUABLE]
-type = "integer"
-value = 8
-
-[ALLIANCE_SHARED_VISION_FORCED]
-type = "integer"
-value = 9
-
-[VERSION_REIGN_OF_CHAOS]
-type = "integer"
-value = 0
-
-[VERSION_FROZEN_THRONE]
-type = "integer"
-value = 1
-
-[ATTACK_TYPE_NORMAL]
-type = "integer"
-value = 0
-
-[ATTACK_TYPE_MELEE]
-type = "integer"
-value = 1
-
-[ATTACK_TYPE_PIERCE]
-type = "integer"
-value = 2
-
-[ATTACK_TYPE_SIEGE]
-type = "integer"
-value = 3
-
-[ATTACK_TYPE_MAGIC]
-type = "integer"
-value = 4
-
-[ATTACK_TYPE_CHAOS]
-type = "integer"
-value = 5
-
-[ATTACK_TYPE_HERO]
-type = "integer"
-value = 6
-
-[DAMAGE_TYPE_UNKNOWN]
-type = "integer"
-value = 0
-
-[DAMAGE_TYPE_NORMAL]
-type = "integer"
-value = 4
-
-[DAMAGE_TYPE_ENHANCED]
-type = "integer"
-value = 5
-
-[DAMAGE_TYPE_FIRE]
-type = "integer"
-value = 8
-
-[DAMAGE_TYPE_COLD]
-type = "integer"
-value = 9
-
-[DAMAGE_TYPE_LIGHTNING]
-type = "integer"
-value = 10
-
-[DAMAGE_TYPE_POISON]
-type = "integer"
-value = 11
-
-[DAMAGE_TYPE_DISEASE]
-type = "integer"
-value = 12
-
-[DAMAGE_TYPE_DIVINE]
-type = "integer"
-value = 13
-
-[DAMAGE_TYPE_MAGIC]
-type = "integer"
-value = 14
-
-[DAMAGE_TYPE_SONIC]
-type = "integer"
-value = 15
-
-[DAMAGE_TYPE_ACID]
-type = "integer"
-value = 16
-
-[DAMAGE_TYPE_FORCE]
-type = "integer"
-value = 17
-
-[DAMAGE_TYPE_DEATH]
-type = "integer"
-value = 18
-
-[DAMAGE_TYPE_MIND]
-type = "integer"
-value = 19
-
-[DAMAGE_TYPE_PLANT]
-type = "integer"
-value = 20
-
-[DAMAGE_TYPE_DEFENSIVE]
-type = "integer"
-value = 21
-
-[DAMAGE_TYPE_DEMOLITION]
-type = "integer"
-value = 22
-
-[DAMAGE_TYPE_SLOW_POISON]
-type = "integer"
-value = 23
-
-[DAMAGE_TYPE_SPIRIT_LINK]
-type = "integer"
-value = 24
-
-[DAMAGE_TYPE_SHADOW_STRIKE]
-type = "integer"
-value = 25
-
-[DAMAGE_TYPE_UNIVERSAL]
-type = "integer"
-value = 26
-
-[WEAPON_TYPE_WHOKNOWS]
-type = "integer"
-value = 0
-
-[WEAPON_TYPE_METAL_LIGHT_CHOP]
-type = "integer"
-value = 1
-
-[WEAPON_TYPE_METAL_MEDIUM_CHOP]
-type = "integer"
-value = 2
-
-[WEAPON_TYPE_METAL_HEAVY_CHOP]
-type = "integer"
-value = 3
-
-[WEAPON_TYPE_METAL_LIGHT_SLICE]
-type = "integer"
-value = 4
-
-[WEAPON_TYPE_METAL_MEDIUM_SLICE]
-type = "integer"
-value = 5
-
-[WEAPON_TYPE_METAL_HEAVY_SLICE]
-type = "integer"
-value = 6
-
-[WEAPON_TYPE_METAL_MEDIUM_BASH]
-type = "integer"
-value = 7
-
-[WEAPON_TYPE_METAL_HEAVY_BASH]
-type = "integer"
-value = 8
-
-[WEAPON_TYPE_METAL_MEDIUM_STAB]
-type = "integer"
-value = 9
-
-[WEAPON_TYPE_METAL_HEAVY_STAB]
-type = "integer"
-value = 10
-
-[WEAPON_TYPE_WOOD_LIGHT_SLICE]
-type = "integer"
-value = 11
-
-[WEAPON_TYPE_WOOD_MEDIUM_SLICE]
-type = "integer"
-value = 12
-
-[WEAPON_TYPE_WOOD_HEAVY_SLICE]
-type = "integer"
-value = 13
-
-[WEAPON_TYPE_WOOD_LIGHT_BASH]
-type = "integer"
-value = 14
-
-[WEAPON_TYPE_WOOD_MEDIUM_BASH]
-type = "integer"
-value = 15
-
-[WEAPON_TYPE_WOOD_HEAVY_BASH]
-type = "integer"
-value = 16
-
-[WEAPON_TYPE_WOOD_LIGHT_STAB]
-type = "integer"
-value = 17
-
-[WEAPON_TYPE_WOOD_MEDIUM_STAB]
-type = "integer"
-value = 18
-
-[WEAPON_TYPE_CLAW_LIGHT_SLICE]
-type = "integer"
-value = 19
-
-[WEAPON_TYPE_CLAW_MEDIUM_SLICE]
-type = "integer"
-value = 20
-
-[WEAPON_TYPE_CLAW_HEAVY_SLICE]
-type = "integer"
-value = 21
-
-[WEAPON_TYPE_AXE_MEDIUM_CHOP]
-type = "integer"
-value = 22
-
-[WEAPON_TYPE_ROCK_HEAVY_BASH]
-type = "integer"
-value = 23
-
-[PATHING_TYPE_ANY]
-type = "integer"
-value = 0
-
-[PATHING_TYPE_WALKABILITY]
-type = "integer"
-value = 1
-
-[PATHING_TYPE_FLYABILITY]
-type = "integer"
-value = 2
-
-[PATHING_TYPE_BUILDABILITY]
-type = "integer"
-value = 3
-
-[PATHING_TYPE_PEONHARVESTPATHING]
-type = "integer"
-value = 4
-
-[PATHING_TYPE_BLIGHTPATHING]
-type = "integer"
-value = 5
-
-[PATHING_TYPE_FLOATABILITY]
-type = "integer"
-value = 6
-
-[PATHING_TYPE_AMPHIBIOUSPATHING]
-type = "integer"
-value = 7
-
-[RACE_PREF_HUMAN]
-type = "integer"
-value = 1
-
-[RACE_PREF_ORC]
-type = "integer"
-value = 2
-
-[RACE_PREF_NIGHTELF]
-type = "integer"
-value = 4
-
-[RACE_PREF_UNDEAD]
-type = "integer"
-value = 8
-
-[RACE_PREF_DEMON]
-type = "integer"
-value = 16
-
-[RACE_PREF_RANDOM]
-type = "integer"
-value = 32
-
-[RACE_PREF_USER_SELECTABLE]
-type = "integer"
-value = 64
-
-[MAP_CONTROL_USER]
-type = "integer"
-value = 0
-
-[MAP_CONTROL_COMPUTER]
-type = "integer"
-value = 1
-
-[MAP_CONTROL_RESCUABLE]
-type = "integer"
-value = 2
-
-[MAP_CONTROL_NEUTRAL]
-type = "integer"
-value = 3
-
-[MAP_CONTROL_CREEP]
-type = "integer"
-value = 4
-
-[MAP_CONTROL_NONE]
-type = "integer"
-value = 5
-
-[GAME_TYPE_MELEE]
-type = "integer"
-value = 1
-
-[GAME_TYPE_FFA]
-type = "integer"
-value = 2
-
-[GAME_TYPE_USE_MAP_SETTINGS]
-type = "integer"
-value = 4
-
-[GAME_TYPE_BLIZ]
-type = "integer"
-value = 8
-
-[GAME_TYPE_ONE_ON_ONE]
-type = "integer"
-value = 16
-
-[GAME_TYPE_TWO_TEAM_PLAY]
-type = "integer"
-value = 32
-
-[GAME_TYPE_THREE_TEAM_PLAY]
-type = "integer"
-value = 64
-
-[GAME_TYPE_FOUR_TEAM_PLAY]
-type = "integer"
-value = 128
-
-[MAP_FOG_HIDE_TERRAIN]
-type = "integer"
-value = 1
-
-[MAP_FOG_MAP_EXPLORED]
-type = "integer"
-value = 2
-
-[MAP_FOG_ALWAYS_VISIBLE]
-type = "integer"
-value = 4
-
-[MAP_USE_HANDICAPS]
-type = "integer"
-value = 8
-
-[MAP_OBSERVERS]
-type = "integer"
-value = 16
-
-[MAP_OBSERVERS_ON_DEATH]
-type = "integer"
-value = 32
-
-[MAP_FIXED_COLORS]
-type = "integer"
-value = 128
-
-[MAP_LOCK_RESOURCE_TRADING]
-type = "integer"
-value = 256
-
-[MAP_RESOURCE_TRADING_ALLIES_ONLY]
-type = "integer"
-value = 512
-
-[MAP_LOCK_ALLIANCE_CHANGES]
-type = "integer"
-value = 1024
-
-[MAP_ALLIANCE_CHANGES_HIDDEN]
-type = "integer"
-value = 2048
-
-[MAP_CHEATS]
-type = "integer"
-value = 4096
-
-[MAP_CHEATS_HIDDEN]
-type = "integer"
-value = 8192
-
-[MAP_LOCK_SPEED]
-type = "integer"
-value = nil
-
-[MAP_LOCK_RANDOM_SEED]
-type = "integer"
-value = nil
-
-[MAP_SHARED_ADVANCED_CONTROL]
-type = "integer"
-value = nil
-
-[MAP_RANDOM_HERO]
-type = "integer"
-value = nil
-
-[MAP_RANDOM_RACES]
-type = "integer"
-value = nil
-
-[MAP_RELOADED]
-type = "integer"
-value = nil
-
-[MAP_PLACEMENT_RANDOM]
-type = "integer"
-value = 0
-
-[MAP_PLACEMENT_FIXED]
-type = "integer"
-value = 1
-
-[MAP_PLACEMENT_USE_MAP_SETTINGS]
-type = "integer"
-value = 2
-
-[MAP_PLACEMENT_TEAMS_TOGETHER]
-type = "integer"
-value = 3
-
-[MAP_LOC_PRIO_LOW]
-type = "integer"
-value = 0
-
-[MAP_LOC_PRIO_HIGH]
-type = "integer"
-value = 1
-
-[MAP_LOC_PRIO_NOT]
-type = "integer"
-value = 2
-
-[MAP_DENSITY_NONE]
-type = "integer"
-value = 0
-
-[MAP_DENSITY_LIGHT]
-type = "integer"
-value = 1
-
-[MAP_DENSITY_MEDIUM]
-type = "integer"
-value = 2
-
-[MAP_DENSITY_HEAVY]
-type = "integer"
-value = 3
-
-[MAP_DIFFICULTY_EASY]
-type = "integer"
-value = 0
-
-[MAP_DIFFICULTY_NORMAL]
-type = "integer"
-value = 1
-
-[MAP_DIFFICULTY_HARD]
-type = "integer"
-value = 2
-
-[MAP_DIFFICULTY_INSANE]
-type = "integer"
-value = 3
-
-[MAP_SPEED_SLOWEST]
-type = "integer"
-value = 0
-
-[MAP_SPEED_SLOW]
-type = "integer"
-value = 1
-
-[MAP_SPEED_NORMAL]
-type = "integer"
-value = 2
-
-[MAP_SPEED_FAST]
-type = "integer"
-value = 3
-
-[MAP_SPEED_FASTEST]
-type = "integer"
-value = 4
-
-[PLAYER_SLOT_STATE_EMPTY]
-type = "integer"
-value = 0
-
-[PLAYER_SLOT_STATE_PLAYING]
-type = "integer"
-value = 1
-
-[PLAYER_SLOT_STATE_LEFT]
-type = "integer"
-value = 2
-
-[SOUND_VOLUMEGROUP_UNITMOVEMENT]
-type = "integer"
-value = 0
-
-[SOUND_VOLUMEGROUP_UNITSOUNDS]
-type = "integer"
-value = 1
-
-[SOUND_VOLUMEGROUP_COMBAT]
-type = "integer"
-value = 2
-
-[SOUND_VOLUMEGROUP_SPELLS]
-type = "integer"
-value = 3
-
-[SOUND_VOLUMEGROUP_UI]
-type = "integer"
-value = 4
-
-[SOUND_VOLUMEGROUP_MUSIC]
-type = "integer"
-value = 5
-
-[SOUND_VOLUMEGROUP_AMBIENTSOUNDS]
-type = "integer"
-value = 6
-
-[SOUND_VOLUMEGROUP_FIRE]
-type = "integer"
-value = 7
-
-[GAME_STATE_DIVINE_INTERVENTION]
-type = "integer"
-value = 0
-
-[GAME_STATE_DISCONNECTED]
-type = "integer"
-value = 1
-
-[GAME_STATE_TIME_OF_DAY]
-type = "integer"
-value = 2
-
-[PLAYER_STATE_GAME_RESULT]
-type = "integer"
-value = 0
-
-[PLAYER_STATE_RESOURCE_GOLD]
-type = "integer"
-value = 1
-
-[PLAYER_STATE_RESOURCE_LUMBER]
-type = "integer"
-value = 2
-
-[PLAYER_STATE_RESOURCE_HERO_TOKENS]
-type = "integer"
-value = 3
-
-[PLAYER_STATE_RESOURCE_FOOD_CAP]
-type = "integer"
-value = 4
-
-[PLAYER_STATE_RESOURCE_FOOD_USED]
-type = "integer"
-value = 5
-
-[PLAYER_STATE_FOOD_CAP_CEILING]
-type = "integer"
-value = 6
-
-[PLAYER_STATE_GIVES_BOUNTY]
-type = "integer"
-value = 7
-
-[PLAYER_STATE_ALLIED_VICTORY]
-type = "integer"
-value = 8
-
-[PLAYER_STATE_PLACED]
-type = "integer"
-value = 9
-
-[PLAYER_STATE_OBSERVER_ON_DEATH]
-type = "integer"
-value = 10
-
-[PLAYER_STATE_OBSERVER]
-type = "integer"
-value = 11
-
-[PLAYER_STATE_UNFOLLOWABLE]
-type = "integer"
-value = 12
-
-[PLAYER_STATE_GOLD_UPKEEP_RATE]
-type = "integer"
-value = 13
-
-[PLAYER_STATE_LUMBER_UPKEEP_RATE]
-type = "integer"
-value = 14
-
-[PLAYER_STATE_GOLD_GATHERED]
-type = "integer"
-value = 15
-
-[PLAYER_STATE_LUMBER_GATHERED]
-type = "integer"
-value = 16
-
-[PLAYER_STATE_NO_CREEP_SLEEP]
-type = "integer"
-value = 25
-
-[UNIT_STATE_LIFE]
-type = "integer"
-value = 0
-
-[UNIT_STATE_MAX_LIFE]
-type = "integer"
-value = 1
-
-[UNIT_STATE_MANA]
-type = "integer"
-value = 2
-
-[UNIT_STATE_MAX_MANA]
-type = "integer"
-value = 3
-
-[AI_DIFFICULTY_NEWBIE]
-type = "integer"
-value = 0
-
-[AI_DIFFICULTY_NORMAL]
-type = "integer"
-value = 1
-
-[AI_DIFFICULTY_INSANE]
-type = "integer"
-value = 2
-
-[PLAYER_SCORE_UNITS_TRAINED]
-type = "integer"
-value = 0
-
-[PLAYER_SCORE_UNITS_KILLED]
-type = "integer"
-value = 1
-
-[PLAYER_SCORE_STRUCT_BUILT]
-type = "integer"
-value = 2
-
-[PLAYER_SCORE_STRUCT_RAZED]
-type = "integer"
-value = 3
-
-[PLAYER_SCORE_TECH_PERCENT]
-type = "integer"
-value = 4
-
-[PLAYER_SCORE_FOOD_MAXPROD]
-type = "integer"
-value = 5
-
-[PLAYER_SCORE_FOOD_MAXUSED]
-type = "integer"
-value = 6
-
-[PLAYER_SCORE_HEROES_KILLED]
-type = "integer"
-value = 7
-
-[PLAYER_SCORE_ITEMS_GAINED]
-type = "integer"
-value = 8
-
-[PLAYER_SCORE_MERCS_HIRED]
-type = "integer"
-value = 9
-
-[PLAYER_SCORE_GOLD_MINED_TOTAL]
-type = "integer"
-value = 10
-
-[PLAYER_SCORE_GOLD_MINED_UPKEEP]
-type = "integer"
-value = 11
-
-[PLAYER_SCORE_GOLD_LOST_UPKEEP]
-type = "integer"
-value = 12
-
-[PLAYER_SCORE_GOLD_LOST_TAX]
-type = "integer"
-value = 13
-
-[PLAYER_SCORE_GOLD_GIVEN]
-type = "integer"
-value = 14
-
-[PLAYER_SCORE_GOLD_RECEIVED]
-type = "integer"
-value = 15
-
-[PLAYER_SCORE_LUMBER_TOTAL]
-type = "integer"
-value = 16
-
-[PLAYER_SCORE_LUMBER_LOST_UPKEEP]
-type = "integer"
-value = 17
-
-[PLAYER_SCORE_LUMBER_LOST_TAX]
-type = "integer"
-value = 18
-
-[PLAYER_SCORE_LUMBER_GIVEN]
-type = "integer"
-value = 19
-
-[PLAYER_SCORE_LUMBER_RECEIVED]
-type = "integer"
-value = 20
-
-[PLAYER_SCORE_UNIT_TOTAL]
-type = "integer"
-value = 21
-
-[PLAYER_SCORE_HERO_TOTAL]
-type = "integer"
-value = 22
-
-[PLAYER_SCORE_RESOURCE_TOTAL]
-type = "integer"
-value = 23
-
-[PLAYER_SCORE_TOTAL]
-type = "integer"
-value = 24
-
-[EVENT_GAME_VICTORY]
-type = "integer"
-value = 0
-
-[EVENT_GAME_END_LEVEL]
-type = "integer"
-value = 1
-
-[EVENT_GAME_VARIABLE_LIMIT]
-type = "integer"
-value = 2
-
-[EVENT_GAME_STATE_LIMIT]
-type = "integer"
-value = 3
-
-[EVENT_GAME_TIMER_EXPIRED]
-type = "integer"
-value = 4
-
-[EVENT_GAME_ENTER_REGION]
-type = "integer"
-value = 5
-
-[EVENT_GAME_LEAVE_REGION]
-type = "integer"
-value = 6
-
-[EVENT_GAME_TRACKABLE_HIT]
-type = "integer"
-value = 7
-
-[EVENT_GAME_TRACKABLE_TRACK]
-type = "integer"
-value = 8
-
-[EVENT_GAME_SHOW_SKILL]
-type = "integer"
-value = 9
-
-[EVENT_GAME_BUILD_SUBMENU]
-type = "integer"
-value = 10
-
-[EVENT_PLAYER_STATE_LIMIT]
-type = "integer"
-value = 11
-
-[EVENT_PLAYER_ALLIANCE_CHANGED]
-type = "integer"
-value = 12
-
-[EVENT_PLAYER_DEFEAT]
-type = "integer"
-value = 13
-
-[EVENT_PLAYER_VICTORY]
-type = "integer"
-value = 14
-
-[EVENT_PLAYER_LEAVE]
-type = "integer"
-value = 15
-
-[EVENT_PLAYER_CHAT]
-type = "integer"
-value = 16
-
-[EVENT_PLAYER_END_CINEMATIC]
-type = "integer"
-value = 17
-
-[EVENT_PLAYER_UNIT_ATTACKED]
-type = "integer"
-value = 18
-
-[EVENT_PLAYER_UNIT_RESCUED]
-type = "integer"
-value = 19
-
-[EVENT_PLAYER_UNIT_DEATH]
-type = "integer"
-value = 20
-
-[EVENT_PLAYER_UNIT_DECAY]
-type = "integer"
-value = 21
-
-[EVENT_PLAYER_UNIT_DETECTED]
-type = "integer"
-value = 22
-
-[EVENT_PLAYER_UNIT_HIDDEN]
-type = "integer"
-value = 23
-
-[EVENT_PLAYER_UNIT_SELECTED]
-type = "integer"
-value = 24
-
-[EVENT_PLAYER_UNIT_DESELECTED]
-type = "integer"
-value = 25
-
-[EVENT_PLAYER_UNIT_CONSTRUCT_START]
-type = "integer"
-value = 26
-
-[EVENT_PLAYER_UNIT_CONSTRUCT_CANCEL]
-type = "integer"
-value = 27
-
-[EVENT_PLAYER_UNIT_CONSTRUCT_FINISH]
-type = "integer"
-value = 28
-
-[EVENT_PLAYER_UNIT_UPGRADE_START]
-type = "integer"
-value = 29
-
-[EVENT_PLAYER_UNIT_UPGRADE_CANCEL]
-type = "integer"
-value = 30
-
-[EVENT_PLAYER_UNIT_UPGRADE_FINISH]
-type = "integer"
-value = 31
-
-[EVENT_PLAYER_UNIT_TRAIN_START]
-type = "integer"
-value = 32
-
-[EVENT_PLAYER_UNIT_TRAIN_CANCEL]
-type = "integer"
-value = 33
-
-[EVENT_PLAYER_UNIT_TRAIN_FINISH]
-type = "integer"
-value = 34
-
-[EVENT_PLAYER_UNIT_RESEARCH_START]
-type = "integer"
-value = 35
-
-[EVENT_PLAYER_UNIT_RESEARCH_CANCEL]
-type = "integer"
-value = 36
-
-[EVENT_PLAYER_UNIT_RESEARCH_FINISH]
-type = "integer"
-value = 37
-
-[EVENT_PLAYER_UNIT_ISSUED_ORDER]
-type = "integer"
-value = 38
-
-[EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER]
-type = "integer"
-value = 39
-
-[EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER]
-type = "integer"
-value = 40
-
-[EVENT_PLAYER_UNIT_ISSUED_UNIT_ORDER]
-type = "integer"
-value = 40
-
-[EVENT_PLAYER_HERO_LEVEL]
-type = "integer"
-value = 41
-
-[EVENT_PLAYER_HERO_SKILL]
-type = "integer"
-value = 42
-
-[EVENT_PLAYER_HERO_REVIVABLE]
-type = "integer"
-value = 43
-
-[EVENT_PLAYER_HERO_REVIVE_START]
-type = "integer"
-value = 44
-
-[EVENT_PLAYER_HERO_REVIVE_CANCEL]
-type = "integer"
-value = 45
-
-[EVENT_PLAYER_HERO_REVIVE_FINISH]
-type = "integer"
-value = 46
-
-[EVENT_PLAYER_UNIT_SUMMON]
-type = "integer"
-value = 47
-
-[EVENT_PLAYER_UNIT_DROP_ITEM]
-type = "integer"
-value = 48
-
-[EVENT_PLAYER_UNIT_PICKUP_ITEM]
-type = "integer"
-value = 49
-
-[EVENT_PLAYER_UNIT_USE_ITEM]
-type = "integer"
-value = 50
-
-[EVENT_PLAYER_UNIT_LOADED]
-type = "integer"
-value = 51
-
-[EVENT_UNIT_DAMAGED]
-type = "integer"
-value = 52
-
-[EVENT_UNIT_DEATH]
-type = "integer"
-value = 53
-
-[EVENT_UNIT_DECAY]
-type = "integer"
-value = 54
-
-[EVENT_UNIT_DETECTED]
-type = "integer"
-value = 55
-
-[EVENT_UNIT_HIDDEN]
-type = "integer"
-value = 56
-
-[EVENT_UNIT_SELECTED]
-type = "integer"
-value = 57
-
-[EVENT_UNIT_DESELECTED]
-type = "integer"
-value = 58
-
-[EVENT_UNIT_STATE_LIMIT]
-type = "integer"
-value = 59
-
-[EVENT_UNIT_ACQUIRED_TARGET]
-type = "integer"
-value = 60
-
-[EVENT_UNIT_TARGET_IN_RANGE]
-type = "integer"
-value = 61
-
-[EVENT_UNIT_ATTACKED]
-type = "integer"
-value = 62
-
-[EVENT_UNIT_RESCUED]
-type = "integer"
-value = 63
-
-[EVENT_UNIT_CONSTRUCT_CANCEL]
-type = "integer"
-value = 64
-
-[EVENT_UNIT_CONSTRUCT_FINISH]
-type = "integer"
-value = 65
-
-[EVENT_UNIT_UPGRADE_START]
-type = "integer"
-value = 66
-
-[EVENT_UNIT_UPGRADE_CANCEL]
-type = "integer"
-value = 67
-
-[EVENT_UNIT_UPGRADE_FINISH]
-type = "integer"
-value = 68
-
-[EVENT_UNIT_TRAIN_START]
-type = "integer"
-value = 69
-
-[EVENT_UNIT_TRAIN_CANCEL]
-type = "integer"
-value = 70
-
-[EVENT_UNIT_TRAIN_FINISH]
-type = "integer"
-value = 71
-
-[EVENT_UNIT_RESEARCH_START]
-type = "integer"
-value = 72
-
-[EVENT_UNIT_RESEARCH_CANCEL]
-type = "integer"
-value = 73
-
-[EVENT_UNIT_RESEARCH_FINISH]
-type = "integer"
-value = 74
-
-[EVENT_UNIT_ISSUED_ORDER]
-type = "integer"
-value = 75
-
-[EVENT_UNIT_ISSUED_POINT_ORDER]
-type = "integer"
-value = 76
-
-[EVENT_UNIT_ISSUED_TARGET_ORDER]
-type = "integer"
-value = 77
-
-[EVENT_UNIT_HERO_LEVEL]
-type = "integer"
-value = 78
-
-[EVENT_UNIT_HERO_SKILL]
-type = "integer"
-value = 79
-
-[EVENT_UNIT_HERO_REVIVABLE]
-type = "integer"
-value = 80
-
-[EVENT_UNIT_HERO_REVIVE_START]
-type = "integer"
-value = 81
-
-[EVENT_UNIT_HERO_REVIVE_CANCEL]
-type = "integer"
-value = 82
-
-[EVENT_UNIT_HERO_REVIVE_FINISH]
-type = "integer"
-value = 83
-
-[EVENT_UNIT_SUMMON]
-type = "integer"
-value = 84
-
-[EVENT_UNIT_DROP_ITEM]
-type = "integer"
-value = 85
-
-[EVENT_UNIT_PICKUP_ITEM]
-type = "integer"
-value = 86
-
-[EVENT_UNIT_USE_ITEM]
-type = "integer"
-value = 87
-
-[EVENT_UNIT_LOADED]
-type = "integer"
-value = 88
-
-[EVENT_WIDGET_DEATH]
-type = "integer"
-value = 89
-
-[EVENT_DIALOG_BUTTON_CLICK]
-type = "integer"
-value = 90
-
-[EVENT_DIALOG_CLICK]
-type = "integer"
-value = 91
-
-[EVENT_GAME_LOADED]
-type = "integer"
-value = 256
-
-[EVENT_GAME_TOURNAMENT_FINISH_SOON]
-type = "integer"
-value = 257
-
-[EVENT_GAME_TOURNAMENT_FINISH_NOW]
-type = "integer"
-value = 258
-
-[EVENT_GAME_SAVE]
-type = "integer"
-value = 259
-
-[EVENT_PLAYER_ARROW_LEFT_DOWN]
-type = "integer"
-value = 261
-
-[EVENT_PLAYER_ARROW_LEFT_UP]
-type = "integer"
-value = 262
-
-[EVENT_PLAYER_ARROW_RIGHT_DOWN]
-type = "integer"
-value = 263
-
-[EVENT_PLAYER_ARROW_RIGHT_UP]
-type = "integer"
-value = 264
-
-[EVENT_PLAYER_ARROW_DOWN_DOWN]
-type = "integer"
-value = 265
-
-[EVENT_PLAYER_ARROW_DOWN_UP]
-type = "integer"
-value = 266
-
-[EVENT_PLAYER_ARROW_UP_DOWN]
-type = "integer"
-value = 267
-
-[EVENT_PLAYER_ARROW_UP_UP]
-type = "integer"
-value = 268
-
-[EVENT_PLAYER_UNIT_SELL]
-type = "integer"
-value = 269
-
-[EVENT_PLAYER_UNIT_CHANGE_OWNER]
-type = "integer"
-value = 270
-
-[EVENT_PLAYER_UNIT_SELL_ITEM]
-type = "integer"
-value = 271
-
-[EVENT_PLAYER_UNIT_SPELL_CHANNEL]
-type = "integer"
-value = 272
-
-[EVENT_PLAYER_UNIT_SPELL_CAST]
-type = "integer"
-value = 273
-
-[EVENT_PLAYER_UNIT_SPELL_EFFECT]
-type = "integer"
-value = 274
-
-[EVENT_PLAYER_UNIT_SPELL_FINISH]
-type = "integer"
-value = 275
-
-[EVENT_PLAYER_UNIT_SPELL_ENDCAST]
-type = "integer"
-value = 276
-
-[EVENT_PLAYER_UNIT_PAWN_ITEM]
-type = "integer"
-value = 277
-
-[EVENT_UNIT_SELL]
-type = "integer"
-value = 286
-
-[EVENT_UNIT_CHANGE_OWNER]
-type = "integer"
-value = 287
-
-[EVENT_UNIT_SELL_ITEM]
-type = "integer"
-value = 288
-
-[EVENT_UNIT_SPELL_CHANNEL]
-type = "integer"
-value = 289
-
-[EVENT_UNIT_SPELL_CAST]
-type = "integer"
-value = 290
-
-[EVENT_UNIT_SPELL_EFFECT]
-type = "integer"
-value = 291
-
-[EVENT_UNIT_SPELL_FINISH]
-type = "integer"
-value = 292
-
-[EVENT_UNIT_SPELL_ENDCAST]
-type = "integer"
-value = 293
-
-[EVENT_UNIT_PAWN_ITEM]
-type = "integer"
-value = 294
-
-[LESS_THAN]
-type = "integer"
-value = 0
-
-[LESS_THAN_OR_EQUAL]
-type = "integer"
-value = 1
-
-[EQUAL]
-type = "integer"
-value = 2
-
-[GREATER_THAN_OR_EQUAL]
-type = "integer"
-value = 3
-
-[GREATER_THAN]
-type = "integer"
-value = 4
-
-[NOT_EQUAL]
-type = "integer"
-value = 5
-
-[UNIT_TYPE_HERO]
-type = "integer"
-value = 0
-
-[UNIT_TYPE_DEAD]
-type = "integer"
-value = 1
-
-[UNIT_TYPE_STRUCTURE]
-type = "integer"
-value = 2
-
-[UNIT_TYPE_FLYING]
-type = "integer"
-value = 3
-
-[UNIT_TYPE_GROUND]
-type = "integer"
-value = 4
-
-[UNIT_TYPE_ATTACKS_FLYING]
-type = "integer"
-value = 5
-
-[UNIT_TYPE_ATTACKS_GROUND]
-type = "integer"
-value = 6
-
-[UNIT_TYPE_MELEE_ATTACKER]
-type = "integer"
-value = 7
-
-[UNIT_TYPE_RANGED_ATTACKER]
-type = "integer"
-value = 8
-
-[UNIT_TYPE_GIANT]
-type = "integer"
-value = 9
-
-[UNIT_TYPE_SUMMONED]
-type = "integer"
-value = 10
-
-[UNIT_TYPE_STUNNED]
-type = "integer"
-value = 11
-
-[UNIT_TYPE_PLAGUED]
-type = "integer"
-value = 12
-
-[UNIT_TYPE_SNARED]
-type = "integer"
-value = 13
-
-[UNIT_TYPE_UNDEAD]
-type = "integer"
-value = 14
-
-[UNIT_TYPE_MECHANICAL]
-type = "integer"
-value = 15
-
-[UNIT_TYPE_PEON]
-type = "integer"
-value = 16
-
-[UNIT_TYPE_SAPPER]
-type = "integer"
-value = 17
-
-[UNIT_TYPE_TOWNHALL]
-type = "integer"
-value = 18
-
-[UNIT_TYPE_ANCIENT]
-type = "integer"
-value = 19
-
-[UNIT_TYPE_TAUREN]
-type = "integer"
-value = 20
-
-[UNIT_TYPE_POISONED]
-type = "integer"
-value = 21
-
-[UNIT_TYPE_POLYMORPHED]
-type = "integer"
-value = 22
-
-[UNIT_TYPE_SLEEPING]
-type = "integer"
-value = 23
-
-[UNIT_TYPE_RESISTANT]
-type = "integer"
-value = 24
-
-[UNIT_TYPE_ETHEREAL]
-type = "integer"
-value = 25
-
-[UNIT_TYPE_MAGIC_IMMUNE]
-type = "integer"
-value = 26
-
-[ITEM_TYPE_PERMANENT]
-type = "integer"
-value = 0
-
-[ITEM_TYPE_CHARGED]
-type = "integer"
-value = 1
-
-[ITEM_TYPE_POWERUP]
-type = "integer"
-value = 2
-
-[ITEM_TYPE_ARTIFACT]
-type = "integer"
-value = 3
-
-[ITEM_TYPE_PURCHASABLE]
-type = "integer"
-value = 4
-
-[ITEM_TYPE_CAMPAIGN]
-type = "integer"
-value = 5
-
-[ITEM_TYPE_MISCELLANEOUS]
-type = "integer"
-value = 6
-
-[ITEM_TYPE_UNKNOWN]
-type = "integer"
-value = 7
-
-[ITEM_TYPE_ANY]
-type = "integer"
-value = 8
-
-[ITEM_TYPE_TOME]
-type = "integer"
-value = 2
-
-[CAMERA_FIELD_TARGET_DISTANCE]
-type = "integer"
-value = 0
-
-[CAMERA_FIELD_FARZ]
-type = "integer"
-value = 1
-
-[CAMERA_FIELD_ANGLE_OF_ATTACK]
-type = "integer"
-value = 2
-
-[CAMERA_FIELD_FIELD_OF_VIEW]
-type = "integer"
-value = 3
-
-[CAMERA_FIELD_ROLL]
-type = "integer"
-value = 4
-
-[CAMERA_FIELD_ROTATION]
-type = "integer"
-value = 5
-
-[CAMERA_FIELD_ZOFFSET]
-type = "integer"
-value = 6
-
-[BLEND_MODE_NONE]
-type = "integer"
-value = 0
-
-[BLEND_MODE_DONT_CARE]
-type = "integer"
-value = 0
-
-[BLEND_MODE_KEYALPHA]
-type = "integer"
-value = 1
-
-[BLEND_MODE_BLEND]
-type = "integer"
-value = 2
-
-[BLEND_MODE_ADDITIVE]
-type = "integer"
-value = 3
-
-[BLEND_MODE_MODULATE]
-type = "integer"
-value = 4
-
-[BLEND_MODE_MODULATE_2X]
-type = "integer"
-value = 5
-
-[RARITY_FREQUENT]
-type = "integer"
-value = 0
-
-[RARITY_RARE]
-type = "integer"
-value = 1
-
-[TEXMAP_FLAG_NONE]
-type = "integer"
-value = 0
-
-[TEXMAP_FLAG_WRAP_U]
-type = "integer"
-value = 1
-
-[TEXMAP_FLAG_WRAP_V]
-type = "integer"
-value = 2
-
-[TEXMAP_FLAG_WRAP_UV]
-type = "integer"
-value = 3
-
-[FOG_OF_WAR_MASKED]
-type = "integer"
-value = 1
-
-[FOG_OF_WAR_FOGGED]
-type = "integer"
-value = 2
-
-[FOG_OF_WAR_VISIBLE]
-type = "integer"
-value = 4
-
-[CAMERA_MARGIN_LEFT]
-type = "integer"
-value = 0
-
-[CAMERA_MARGIN_RIGHT]
-type = "integer"
-value = 1
-
-[CAMERA_MARGIN_TOP]
-type = "integer"
-value = 2
-
-[CAMERA_MARGIN_BOTTOM]
-type = "integer"
-value = 3
-
-[EFFECT_TYPE_EFFECT]
-type = "integer"
-value = 0
-
-[EFFECT_TYPE_TARGET]
-type = "integer"
-value = 1
-
-[EFFECT_TYPE_CASTER]
-type = "integer"
-value = 2
-
-[EFFECT_TYPE_SPECIAL]
-type = "integer"
-value = 3
-
-[EFFECT_TYPE_AREA_EFFECT]
-type = "integer"
-value = 4
-
-[EFFECT_TYPE_MISSILE]
-type = "integer"
-value = 5
-
-[EFFECT_TYPE_LIGHTNING]
-type = "integer"
-value = 6
-
-[SOUND_TYPE_EFFECT]
-type = "integer"
-value = 0
-
-[SOUND_TYPE_EFFECT_LOOPED]
-type = "integer"
-value = 1
diff --git a/server-beta/libs/jass/japi.lni b/server-beta/libs/jass/japi.lni
deleted file mode 100644
index 23d1b97c..00000000
--- a/server-beta/libs/jass/japi.lni
+++ /dev/null
@@ -1,722 +0,0 @@
-[japi]
-type = 'table'
-[[.source]]
-type = 'library'
-name = 'jass.japi'
-nick = 'japi'
-
-<default>
-type = 'function'
-parent = {
- 1 = {
- type = 'library',
- name = 'jass.japi',
- nick = 'japi',
- },
-}
-
-[EXGetUnitAbility]
-[[.args]]
-name = "u"
-type = "unit"
-``````````
-name = "abilcode"
-type = "integer"
-[[.returns]]
-type = "ability"
-
-[EXGetUnitAbilityByIndex]
-[[.args]]
-name = "u"
-type = "unit"
-``````````
-name = "index"
-type = "integer"
-[[.returns]]
-type = "ability"
-
-[EXGetAbilityId]
-[[.args]]
-name = "abil"
-type = "ability"
-[[.returns]]
-type = "integer"
-
-[EXGetAbilityState]
-[[.args]]
-name = "abil"
-type = "ability"
-``````````
-name = "state_type"
-type = "integer"
-[[.returns]]
-type = "number"
-
-[EXSetAbilityState]
-[[.args]]
-name = "abil"
-type = "ability"
-``````````
-name = "state_type"
-type = "integer"
-``````````
-name = "value"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[EXGetAbilityDataReal]
-[[.args]]
-name = "abil"
-type = "ability"
-``````````
-name = "level"
-type = "integer"
-``````````
-name = "data_type"
-type = "integer"
-[[.returns]]
-type = "number"
-
-[EXSetAbilityDataReal]
-[[.args]]
-name = "abil"
-type = "ability"
-``````````
-name = "level"
-type = "integer"
-``````````
-name = "data_type"
-type = "integer"
-``````````
-name = "value"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[EXGetAbilityDataInteger]
-[[.args]]
-name = "abil"
-type = "ability"
-``````````
-name = "level"
-type = "integer"
-``````````
-name = "data_type"
-type = "integer"
-[[.returns]]
-type = "integer"
-
-[EXSetAbilityDataInteger]
-[[.args]]
-name = "abil"
-type = "ability"
-``````````
-name = "level"
-type = "integer"
-``````````
-name = "data_type"
-type = "integer"
-``````````
-name = "value"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[EXGetAbilityDataString]
-[[.args]]
-name = "abil"
-type = "ability"
-``````````
-name = "level"
-type = "integer"
-``````````
-name = "data_type"
-type = "integer"
-[[.returns]]
-type = "string"
-
-[EXSetAbilityDataString]
-[[.args]]
-name = "abil"
-type = "ability"
-``````````
-name = "level"
-type = "integer"
-``````````
-name = "data_type"
-type = "integer"
-``````````
-name = "value"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[EXSetAbilityString]
-[[.args]]
-name = "abilcode"
-type = "integer"
-``````````
-name = "level"
-type = "integer"
-``````````
-name = "data_type"
-type = "integer"
-``````````
-name = "value"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[EXSetAbilityAEmeDataA]
-[[.args]]
-name = "abil"
-type = "ability"
-``````````
-name = "unitid"
-type = "integer"
-[[.returns]]
-type = "boolean"
-
-[EXGetItemDataString]
-[[.args]]
-name = "itemcode"
-type = "integer"
-``````````
-name = "data_type"
-type = "integer"
-[[.returns]]
-type = "string"
-
-[EXSetItemDataString]
-[[.args]]
-name = "itemcode"
-type = "integer"
-``````````
-name = "data_type"
-type = "integer"
-``````````
-name = "value"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[EXGetEventDamageData]
-[[.args]]
-name = "edd_type"
-type = "integer"
-[[.returns]]
-type = "integer"
-
-[EXSetEventDamage]
-[[.args]]
-name = "amount"
-type = "number"
-[[.returns]]
-type = "boolean"
-
-[EXGetEffectX]
-[[.args]]
-name = "e"
-type = "effect"
-[[.returns]]
-type = "number"
-
-[EXGetEffectY]
-[[.args]]
-name = "e"
-type = "effect"
-[[.returns]]
-type = "number"
-
-[EXGetEffectZ]
-[[.args]]
-name = "e"
-type = "effect"
-[[.returns]]
-type = "number"
-
-[EXSetEffectXY]
-[[.args]]
-name = "e"
-type = "effect"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-
-[EXSetEffectZ]
-[[.args]]
-name = "e"
-type = "effect"
-``````````
-name = "z"
-type = "number"
-
-[EXGetEffectSize]
-[[.args]]
-name = "e"
-type = "effect"
-[[.returns]]
-type = "number"
-
-[EXSetEffectSize]
-[[.args]]
-name = "e"
-type = "effect"
-``````````
-name = "size"
-type = "number"
-
-[EXEffectMatRotateX]
-[[.args]]
-name = "e"
-type = "effect"
-``````````
-name = "angle"
-type = "number"
-
-[EXEffectMatRotateY]
-[[.args]]
-name = "e"
-type = "effect"
-``````````
-name = "angle"
-type = "number"
-
-[EXEffectMatRotateZ]
-[[.args]]
-name = "e"
-type = "effect"
-``````````
-name = "angle"
-type = "number"
-
-[EXEffectMatScale]
-[[.args]]
-name = "e"
-type = "effect"
-``````````
-name = "x"
-type = "number"
-``````````
-name = "y"
-type = "number"
-``````````
-name = "z"
-type = "number"
-
-[EXEffectMatReset]
-[[.args]]
-name = "e"
-type = "effect"
-
-[EXSetEffectSpeed]
-[[.args]]
-name = "e"
-type = "effect"
-``````````
-name = "speed"
-type = "number"
-
-[EXDisplayChat]
-[[.args]]
-name = "p"
-type = "player"
-``````````
-name = "chat_recipient"
-type = "integer"
-``````````
-name = "message"
-type = "string"
-
-[EXExecuteScript]
-[[.args]]
-name = "script"
-type = "string"
-[[.returns]]
-type = "string"
-
-[EXSetUnitFacing]
-[[.args]]
-name = "u"
-type = "unit"
-``````````
-name = "angle"
-type = "number"
-
-[EXPauseUnit]
-[[.args]]
-name = "u"
-type = "unit"
-``````````
-name = "flag"
-type = "boolean"
-
-[EXSetUnitCollisionType]
-[[.args]]
-name = "enable"
-type = "boolean"
-``````````
-name = "u"
-type = "unit"
-``````````
-name = "t"
-type = "integer"
-
-[EXSetUnitMoveType]
-[[.args]]
-name = "u"
-type = "unit"
-``````````
-name = "t"
-type = "integer"
-
-[EXGetItemDataString]
-[[.args]]
-name = "itemcode"
-type = "integer"
-``````````
-name = "data_type"
-type = "integer"
-[[.returns]]
-type = "string"
-
-[EXSetItemDataString]
-[[.args]]
-name = "itemcode"
-type = "integer"
-``````````
-name = "data_type"
-type = "integer"
-``````````
-name = "value"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[EXGetBuffDataString]
-[[.args]]
-name = "buffcode"
-type = "integer"
-``````````
-name = "data_type"
-type = "integer"
-[[.returns]]
-type = "string"
-
-[EXSetBuffDataString]
-[[.args]]
-name = "buffcode"
-type = "integer"
-``````````
-name = "data_type"
-type = "integer"
-``````````
-name = "value"
-type = "string"
-[[.returns]]
-type = "boolean"
-
-[EXDclareButtonIcon]
-[[.args]]
-name = "art"
-type = "string"
-
-[EXBlendButtonIcon]
-[[.args]]
-name = "mask"
-type = "string"
-``````````
-name = "image"
-type = "string"
-``````````
-name = "newArt"
-type = "string"
-
-[EXSetUnitArrayString]
-[[.args]]
-name = "unitCode"
-type = "integer"
-``````````
-name = "data_type"
-type = "integer"
-``````````
-name = "index"
-type = "integer"
-``````````
-name = "value"
-type = "string"
-
-[EXSetUnitInteger]
-[[.args]]
-name = "unitCode"
-type = "integer"
-``````````
-name = "data_type"
-type = "integer"
-``````````
-name = "value"
-type = "integer"
-
-[ABILITY_STATE_COOLDOWN]
-type = "integer"
-value = 1
-
-[ABILITY_DATA_TARGS]
-type = "integer"
-value = 100
-
-[ABILITY_DATA_CAST]
-type = "integer"
-value = 101
-
-[ABILITY_DATA_DUR]
-type = "integer"
-value = 102
-
-[ABILITY_DATA_HERODUR]
-type = "integer"
-value = 103
-
-[ABILITY_DATA_COST]
-type = "integer"
-value = 104
-
-[ABILITY_DATA_COOL]
-type = "integer"
-value = 105
-
-[ABILITY_DATA_AREA]
-type = "integer"
-value = 106
-
-[ABILITY_DATA_RNG]
-type = "integer"
-value = 107
-
-[ABILITY_DATA_DATA_A]
-type = "integer"
-value = 108
-
-[ABILITY_DATA_DATA_B]
-type = "integer"
-value = 109
-
-[ABILITY_DATA_DATA_C]
-type = "integer"
-value = 110
-
-[ABILITY_DATA_DATA_D]
-type = "integer"
-value = 111
-
-[ABILITY_DATA_DATA_E]
-type = "integer"
-value = 112
-
-[ABILITY_DATA_DATA_F]
-type = "integer"
-value = 113
-
-[ABILITY_DATA_DATA_G]
-type = "integer"
-value = 114
-
-[ABILITY_DATA_DATA_H]
-type = "integer"
-value = 115
-
-[ABILITY_DATA_DATA_I]
-type = "integer"
-value = 116
-
-[ABILITY_DATA_UNITID]
-type = "integer"
-value = 117
-
-[ABILITY_DATA_HOTKET]
-type = "integer"
-value = 200
-
-[ABILITY_DATA_UNHOTKET]
-type = "integer"
-value = 201
-
-[ABILITY_DATA_RESEARCH_HOTKEY]
-type = "integer"
-value = 202
-
-[ABILITY_DATA_NAME]
-type = "integer"
-value = 203
-
-[ABILITY_DATA_ART]
-type = "integer"
-value = 204
-
-[ABILITY_DATA_TARGET_ART]
-type = "integer"
-value = 205
-
-[ABILITY_DATA_CASTER_ART]
-type = "integer"
-value = 206
-
-[ABILITY_DATA_EFFECT_ART]
-type = "integer"
-value = 207
-
-[ABILITY_DATA_AREAEFFECT_ART]
-type = "integer"
-value = 208
-
-[ABILITY_DATA_MISSILE_ART]
-type = "integer"
-value = 209
-
-[ABILITY_DATA_SPECIAL_ART]
-type = "integer"
-value = 210
-
-[ABILITY_DATA_LIGHTNING_EFFECT]
-type = "integer"
-value = 211
-
-[ABILITY_DATA_BUFF_TIP]
-type = "integer"
-value = 212
-
-[ABILITY_DATA_BUFF_UBERTIP]
-type = "integer"
-value = 213
-
-[ABILITY_DATA_RESEARCH_TIP]
-type = "integer"
-value = 214
-
-[ABILITY_DATA_TIP]
-type = "integer"
-value = 215
-
-[ABILITY_DATA_UNTIP]
-type = "integer"
-value = 216
-
-[ABILITY_DATA_RESEARCH_UBERTIP]
-type = "integer"
-value = 217
-
-[ABILITY_DATA_UBERTIP]
-type = "integer"
-value = 218
-
-[ABILITY_DATA_UNUBERTIP]
-type = "integer"
-value = 219
-
-[ABILITY_DATA_UNART]
-type = "integer"
-value = 220
-
-[EVENT_DAMAGE_DATA_VAILD]
-type = "integer"
-value = 0
-
-[EVENT_DAMAGE_DATA_IS_PHYSICAL]
-type = "integer"
-value = 1
-
-[EVENT_DAMAGE_DATA_IS_ATTACK]
-type = "integer"
-value = 2
-
-[EVENT_DAMAGE_DATA_IS_RANGED]
-type = "integer"
-value = 3
-
-[EVENT_DAMAGE_DATA_DAMAGE_TYPE]
-type = "integer"
-value = 4
-
-[EVENT_DAMAGE_DATA_WEAPON_TYPE]
-type = "integer"
-value = 5
-
-[EVENT_DAMAGE_DATA_ATTACK_TYPE]
-type = "integer"
-value = 6
-
-[CHAT_RECIPIENT_ALL]
-type = "integer"
-value = 0
-
-[CHAT_RECIPIENT_ALLIES]
-type = "integer"
-value = 1
-
-[CHAT_RECIPIENT_OBSERVERS]
-type = "integer"
-value = 2
-
-[CHAT_RECIPIENT_REFEREES]
-type = "integer"
-value = 2
-
-[CHAT_RECIPIENT_PRIVATE]
-type = "integer"
-value = 3
-
-[YDWE_OBJECT_TYPE_ABILITY]
-type = "integer"
-value = 0
-
-[YDWE_OBJECT_TYPE_BUFF]
-type = "integer"
-value = 1
-
-[YDWE_OBJECT_TYPE_UNIT]
-type = "integer"
-value = 2
-
-[YDWE_OBJECT_TYPE_ITEM]
-type = "integer"
-value = 3
-
-[YDWE_OBJECT_TYPE_UPGRADE]
-type = "integer"
-value = 4
-
-[YDWE_OBJECT_TYPE_DOODAD]
-type = "integer"
-value = 5
-
-[YDWE_OBJECT_TYPE_DESTRUCTABLE]
-type = "integer"
-value = 6
-
-[ITEM_DATA_ART]
-type = "integer"
-value = 1
-
-[ITEM_DATA_UBERTIP]
-type = "integer"
-value = 3
-
-[ITEM_DATA_NAME]
-type = "integer"
-value = 4
-
-[BUFF_DATA_ART]
-type = "integer"
-value = 1
-
-[BUFF_DATA_TIP]
-type = "integer"
-value = 2
-
-[BUFF_DATA_UBERTIP]
-type = "integer"
-value = 3
diff --git a/server-beta/libs/test/basic.lni b/server-beta/libs/test/basic.lni
deleted file mode 100644
index 2b214678..00000000
--- a/server-beta/libs/test/basic.lni
+++ /dev/null
@@ -1,2 +0,0 @@
-[ThisIsAVeryVeryLongNameThatNobodyWouldUseItInHisProjectSoICanUseItForTest]
-type = integer
diff --git a/server-beta/locale/en-US/libs/@lua/basic.lni b/server-beta/locale/en-US/libs/@lua/basic.lni
deleted file mode 100644
index 7dbf8d60..00000000
--- a/server-beta/locale/en-US/libs/@lua/basic.lni
+++ /dev/null
@@ -1,239 +0,0 @@
-[arg]
-description = 'Command-line arguments of Lua Standalone.'
-
-[assert]
-description = 'Calls error if the value of its argument is false.'
-
-[collectgarbage]
-[[.enums]]
-name = 'opt'
-enum = '"collect"'
-description = 'Performs a full garbage-collection cycle.'
-``````````
-name = 'opt'
-enum = '"stop"'
-description = 'Stops automatic execution.'
-``````````
-name = 'opt'
-enum = '"restart"'
-description = 'Restarts automatic execution.'
-``````````
-name = 'opt'
-enum = '"count"'
-description = 'Returns the total memory in Kbytes.'
-``````````
-name = 'opt'
-enum = '"step"'
-description = 'Performs a garbage-collection step.'
-``````````
-name = 'opt'
-enum = '"setpause"'
-description = 'Set pause.'
-``````````
-name = 'opt'
-enum = '"setstepmul"'
-description = 'Set step multiplier.'
-``````````
-name = 'opt'
-enum = '"isrunning"'
-description = 'Returns whether the collector is running.'
-
-["collectgarbage Lua 5.4"]
-[[.enums]]
-name = 'opt'
-enum = '"collect"'
-description = 'Performs a full garbage-collection cycle.'
-``````````
-name = 'opt'
-enum = '"stop"'
-description = 'Stops automatic execution.'
-``````````
-name = 'opt'
-enum = '"restart"'
-description = 'Restarts automatic execution.'
-``````````
-name = 'opt'
-enum = '"count"'
-description = 'Returns the total memory in Kbytes.'
-``````````
-name = 'opt'
-enum = '"step"'
-description = 'Performs a garbage-collection step.'
-``````````
-name = 'opt'
-enum = '"setpause"'
-description = 'Set pause.'
-``````````
-name = 'opt'
-enum = '"setstepmul"'
-description = 'Set step multiplier.'
-``````````
-name = 'opt'
-enum = '"incremental"'
-description = 'Change the collector mode to incremental.'
-``````````
-name = 'opt'
-enum = '"generational"'
-description = 'Change the collector mode to generational.'
-``````````
-name = 'opt'
-enum = '"isrunning"'
-description = 'Returns whether the collector is running.'
-
-[dofile]
-description = 'Opens the named file and executes its contents as a Lua chunk.'
-
-[error]
-description = 'Terminates the last protected function called and returns message as the error object.'
-
-[_G]
-description = 'Holds the global environment.'
-
-[getfenv]
-description = 'Returns the current environment in use by the function. `f` can be a Lua function or a number that specifies the function at that stack level.'
-
-[getmetatable]
-description = 'Returns the metatable of the given object.'
-
-[ipairs]
-description = [[
-----------------
-```lua
-for i, v in ipairs(t) do
- body
-end
-```
-]]
-
-[load]
-description = 'Loads a chunk.'
-[[.enums]]
-name = 'mode'
-enum = '"b"'
-description = 'Only binary chunks.'
-``````````
-name = 'mode'
-enum = '"t"'
-description = 'Only text chunks.'
-``````````
-name = 'mode'
-enum = '"bt"'
-description = 'Both binary and text.'
-
-['load Lua 5.1']
-description = 'Loads a chunk using function `func` to get its pieces. Each call to `func` must return a string that concatenates with previous results.'
-
-[loadfile]
-description = 'Loads a chunk from file.'
-[[.enums]]
-name = 'mode'
-enum = '"b"'
-description = 'Only binary chunks.'
-``````````
-name = 'mode'
-enum = '"t"'
-description = 'Only text chunks.'
-``````````
-name = 'mode'
-enum = '"bt"'
-description = 'Both binary and text.'
-
-['loadfile Lua 5.1']
-description = 'Loads a chunk from file `filename` or from the standard input, if no file name is given.'
-
-[loadstring]
-description = 'Loads a chunk from the given string.'
-
-[module]
-description = 'Creates a module'
-
-[next]
-description = 'Returns the next index of the table and its associated value.'
-
-[pairs]
-description = [[
-----------------
-```lua
-for k, v in pairs(t) do
- body
-end
-```
-]]
-
-[pcall]
-description = 'Calls function with the given arguments in protected mode.'
-
-[print]
-description = 'Receives any number of arguments and prints their values to stdout.'
-
-[rawequal]
-description = 'Checks whether v1 is equal to v2, without invoking the `__eq` metamethod.'
-
-[rawget]
-description = 'Gets the real value of `table[index]`, without invoking the `__index` metamethod.'
-
-[rawlen]
-description = 'Returns the length of the object `v`, without invoking the `__len` metamethod.'
-
-[rawset]
-description = 'Sets the real value of `table[index]` to `value`, without invoking the `__newindex` metamethod.'
-
-[select]
-[[.enums]]
-name = 'index'
-enum = '"#"'
-description = 'Returns the total number of extra arguments.'
-``````````
-name = 'index'
-code = 'integer'
-description = 'Returns all arguments after number `index`.'
-
-[setfenv]
-description = 'Sets the environment to be used by the given function. `f` can be a Lua function or a number that specifies the function at that stack level.'
-
-[setmetatable]
-description = 'Sets the metatable for the given table.'
-
-[tonumber]
-description = 'Tries to convert its argument to a number.'
-
-[tostring]
-description = 'Receives a value of any type and converts it to a string in a human-readable format.'
-
-[type]
-description = 'Returns the type of its only argument, coded as a string.'
-
-["_VERSION Lua 5.1"]
-description = 'Running Lua version.'
-
-["_VERSION Lua 5.2"]
-description = 'Running Lua version.'
-
-["_VERSION Lua 5.3"]
-description = 'Running Lua version.'
-
-["_VERSION Lua 5.4"]
-description = 'Running Lua version.'
-
-[warn]
-description = 'Emits a warning with a message composed by the concatenation of all its arguments (which should be strings).'
-
-[xpcall]
-description = 'Calls function `f` with the given arguments in protected mode with a new message handler.'
-
-['xpcall Lua 5.1']
-description = 'Calls function `f` in protected mode with a new message handler.'
-
-[require]
-description = 'Loads the given module, returns any value returned by the given module(`true` when `nil`).'
-
-["require Lua 5.4"]
-description = 'Loads the given module, returns any value returned by the searcher(`true` when `nil`). Besides that value, also returns as a second result the loader data returned by the searcher, which indicates how `require` found the module. (For instance, if the module came from a file, this loader data is the file path.)'
-
-[unpack]
-description = [[
--------
-```lua
-return list[i], list[i+1], ···, list[j]
-```
-]]
diff --git a/server-beta/locale/en-US/libs/@lua/bit32.lni b/server-beta/locale/en-US/libs/@lua/bit32.lni
deleted file mode 100644
index 13630970..00000000
--- a/server-beta/locale/en-US/libs/@lua/bit32.lni
+++ /dev/null
@@ -1,57 +0,0 @@
-[arshift]
-description = [[
-Returns the number `x` shifted `disp` bits to the right. Negative displacements shift to the left.
-
-This shift operation is what is called arithmetic shift. Vacant bits on the left are filled with copies of the higher bit of `x`; vacant bits on the right are filled with zeros.
-]]
-
-[band]
-description = 'Returns the bitwise *and* of its operands.'
-
-[bnot]
-description = [[
-Returns the bitwise negation of `x`.
-
-```lua
-assert(bit32.bnot(x) == (-1 - x) % 2^32)
-```
-]]
-
-[bor]
-description = 'Returns the bitwise *or* of its operands.'
-
-[btest]
-description = 'Returns a boolean signaling whether the bitwise *and* of its operands is different from zero.'
-
-[bxor]
-description = 'Returns the bitwise *exclusive or* of its operands.'
-
-[extract]
-description = 'Returns the unsigned number formed by the bits `field` to `field + width - 1` from `n`.'
-
-[replace]
-description = 'Returns a copy of `n` with the bits `field` to `field + width - 1` replaced by the value `v` .'
-
-[lrotate]
-description = 'Returns the number `x` rotated `disp` bits to the left. Negative displacements rotate to the right.'
-
-[lshift]
-description = [[
-Returns the number `x` shifted `disp` bits to the left. Negative displacements shift to the right. In any direction, vacant bits are filled with zeros.
-
-```lua
-assert(bit32.lshift(b, disp) == (b * 2^disp) % 2^32)
-```
-]]
-
-[rrotate]
-description = 'Returns the number `x` rotated `disp` bits to the right. Negative displacements rotate to the left.'
-
-[rshift]
-description = [[
-Returns the number `x` shifted `disp` bits to the right. Negative displacements shift to the left. In any direction, vacant bits are filled with zeros.
-
-```lua
-assert(bit32.rshift(b, disp) == math.floor(b % 2^32 / 2^disp))
-```
-]]
diff --git a/server-beta/locale/en-US/libs/@lua/coroutine.lni b/server-beta/locale/en-US/libs/@lua/coroutine.lni
deleted file mode 100644
index 910638ec..00000000
--- a/server-beta/locale/en-US/libs/@lua/coroutine.lni
+++ /dev/null
@@ -1,42 +0,0 @@
-[create]
-description = 'Creates a new coroutine.'
-
-[isyieldable]
-description = 'Returns true when the running coroutine can yield.'
-
-['isyieldable Lua 5.4']
-description = 'Returns true when the coroutine `co` can yield. The default for `co` is the running coroutine.'
-
-[close]
-description = 'Closes coroutine `co` , closing all its pending to-be-closed variables and putting the coroutine in a dead state.'
-
-[resume]
-description = 'Starts or continues the execution of coroutine `co`.'
-
-[running]
-description = 'Returns the running coroutine plus a boolean, true when the running coroutine is the main one.'
-
-[status]
-description = 'Returns the status of coroutine `co`.'
-[[.enums]]
-name = 'status'
-enum = '"running"'
-description = 'Is running.'
-``````````
-name = 'status'
-enum = '"suspended"'
-description = 'Is suspended or not started.'
-``````````
-name = 'status'
-enum = '"normal"'
-description = 'Is active but not running.'
-``````````
-name = 'status'
-enum = '"dead"'
-description = 'Has finished or stopped with an error.'
-
-[wrap]
-description = 'Creates a new coroutine.'
-
-[yield]
-description = 'Suspends the execution of the calling coroutine.'
diff --git a/server-beta/locale/en-US/libs/@lua/debug.lni b/server-beta/locale/en-US/libs/@lua/debug.lni
deleted file mode 100644
index 97ecd97d..00000000
--- a/server-beta/locale/en-US/libs/@lua/debug.lni
+++ /dev/null
@@ -1,148 +0,0 @@
-["debug.debug"]
-description = 'Enters an interactive mode with the user, running each string that the user enters.'
-
-[getfenv]
-description = 'Returns the environment of object `o` .'
-
-[gethook]
-description = 'Returns the current hook settings of the thread.'
-
-[getinfo]
-description = 'Returns a table with information about a function.'
-[[.enums]]
-name = 'what'
-enum = '"n"'
-description = '`name` and `namewhat`'
-``````````
-name = 'what'
-enum = '"S"'
-description = '`source`, `short_src`, `linedefined`, `lastlinedefined`, and `what`'
-``````````
-name = 'what'
-enum = '"l"'
-description = '`currentline`'
-``````````
-name = 'what'
-enum = '"t"'
-description = '`istailcall`'
-``````````
-name = 'what'
-enum = '"u"'
-description = '`nups`, `nparams`, and `isvararg`'
-``````````
-name = 'what'
-enum = '"f"'
-description = '`func`'
-``````````
-name = 'what'
-enum = '"L"'
-description = '`activelines`'
-
-['getinfo Lua 5.1']
-description = 'Returns a table with information about a function.'
-[[.enums]]
-name = 'what'
-enum = '"n"'
-description = '`name` and `namewhat`'
-``````````
-name = 'what'
-enum = '"S"'
-description = '`source`, `short_src`, `linedefined`, `lastlinedefined`, and `what`'
-``````````
-name = 'what'
-enum = '"l"'
-description = '`currentline`'
-``````````
-name = 'what'
-enum = '"t"'
-description = '`istailcall`'
-``````````
-name = 'what'
-enum = '"u"'
-description = '`nups`'
-``````````
-name = 'what'
-enum = '"f"'
-description = '`func`'
-``````````
-name = 'what'
-enum = '"L"'
-description = '`activelines`'
-
-[getlocal]
-description = 'Returns the name and the value of the local variable with index `local` of the function at level `f` of the stack.'
-
-['getlocal Lua 5.1']
-description = 'Returns the name and the value of the local variable with index `local` of the function at level `level` of the stack.'
-
-[getmetatable]
-description = 'Returns the metatable of the given value.'
-
-[getregistry]
-description = 'Returns the registry table.'
-
-[getupvalue]
-description = 'Returns the name and the value of the upvalue with index `up` of the function.'
-
-[getuservalue]
-description = 'Returns the Lua value associated to u.'
-
-["getuservalue Lua 5.4"]
-description = [[
-Returns the `n`-th user value associated
-to the userdata `u` plus a boolean,
-`false` if the userdata does not have that value.
-]]
-
-[setcstacklimit]
-description = [[
-Sets a new limit for the C stack. This limit controls how deeply nested calls can go in Lua, with the intent of avoiding a stack overflow.
-
-In case of success, this function returns the old limit. In case of error, it returns `false`.
-]]
-
-[setfenv]
-description = 'Sets the environment of the given `object` to the given `table` .'
-
-[sethook]
-description = 'Sets the given function as a hook.'
-[[.enums]]
-name = 'mask'
-enum = '"c"'
-description = 'Calls hook when Lua calls a function.'
-``````````
-name = 'mask'
-enum = '"r"'
-description = 'Calls hook when Lua returns from a function.'
-``````````
-name = 'mask'
-enum = '"l"'
-description = 'Calls hook when Lua enters a new line of code.'
-
-[setlocal]
-description = 'Assigns the `value` to the local variable with index `local` of the function at `level` of the stack.'
-
-[setmetatable]
-description = 'Sets the metatable for the given value to the given table (which can be nil).'
-
-[setupvalue]
-description = 'Assigns the `value` to the upvalue with index `up` of the function.'
-
-[setuservalue]
-description = 'Sets the given value as the Lua value associated to the given udata.'
-
-["setuservalue Lua 5.4"]
-description = [[
-Sets the given `value` as
-the `n`-th user value associated to the given `udata`.
-`udata` must be a full userdata.
-]]
-
-[traceback]
-description = 'Returns a string with a traceback of the call stack. The optional message string is appended at the beginning of the traceback.'
-
-[upvalueid]
-description = 'Returns a unique identifier (as a light userdata) for the upvalue numbered `n` from the given function.'
-
-[upvaluejoin]
-description = 'Make the `n1`-th upvalue of the Lua closure `f1` refer to the `n2`-th upvalue of the Lua closure `f2`.'
diff --git a/server-beta/locale/en-US/libs/@lua/file.lni b/server-beta/locale/en-US/libs/@lua/file.lni
deleted file mode 100644
index 58bb2278..00000000
--- a/server-beta/locale/en-US/libs/@lua/file.lni
+++ /dev/null
@@ -1,91 +0,0 @@
-[close]
-description = 'Close `file`.'
-
-[flush]
-description = 'Saves any written data to `file`.'
-
-[lines]
-description = [[
-------
-```lua
-for c in file:lines(...) do
- body
-end
-```
-]]
-[[.enums]]
-name = 'mode'
-enum = '"n"'
-description = 'Reads a numeral and returns it as number.'
-``````````
-name = 'mode'
-enum = '"a"'
-description = 'Reads the whole file.'
-``````````
-name = 'mode'
-enum = '"l"'
-description = 'Reads the next line skipping the end of line.'
-``````````
-name = 'mode'
-enum = '"L"'
-description = 'Reads the next line keeping the end of line.'
-``````````
-name = 'mode'
-code = 'number'
-description = 'Reads a string with up to this number of bytes.'
-
-[read]
-description = 'Reads the `file`, according to the given formats, which specify what to read.'
-[[.enums]]
-name = 'mode'
-enum = '"n"'
-description = 'Reads a numeral and returns it as number.'
-``````````
-name = 'mode'
-enum = '"a"'
-description = 'Reads the whole file.'
-``````````
-name = 'mode'
-enum = '"l"'
-description = 'Reads the next line skipping the end of line.'
-``````````
-name = 'mode'
-enum = '"L"'
-description = 'Reads the next line keeping the end of line.'
-``````````
-name = 'mode'
-code = 'number'
-description = 'Reads a string with up to this number of bytes.'
-
-[seek]
-description = 'Sets and gets the file position, measured from the beginning of the file.'
-[[.enums]]
-name = 'whence'
-enum = '"set"'
-description = 'Base is beginning of the file.'
-``````````
-name = 'whence'
-enum = '"cur"'
-description = 'Base is current position.'
-``````````
-name = 'whence'
-enum = '"end"'
-description = 'Base is end of file.'
-
-[setvbuf]
-description = 'Sets the buffering mode for an output file.'
-[[.enums]]
-name = 'mode'
-enum = '"no"'
-description = 'Output operation appears immediately.'
-``````````
-name = 'mode'
-enum = '"full"'
-description = 'Performed only when the buffer is full.'
-``````````
-name = 'mode'
-enum = '"line"'
-description = 'Buffered until a newline is output.'
-
-[write]
-description = 'Writes the value of each of its arguments to `file`.'
diff --git a/server-beta/locale/en-US/libs/@lua/io.lni b/server-beta/locale/en-US/libs/@lua/io.lni
deleted file mode 100644
index 2b405f2f..00000000
--- a/server-beta/locale/en-US/libs/@lua/io.lni
+++ /dev/null
@@ -1,230 +0,0 @@
-[stdin]
-description = 'standard input.'
-
-[stdout]
-description = 'standard output.'
-
-[stderr]
-description = 'standard error.'
-
-[close]
-description = 'Close `file` or default output file.'
-
-[flush]
-description = 'Saves any written data to default output file.'
-
-[input]
-description = 'Sets `file` as the default input file.'
-
-["lines Lua 5.1"]
-description = [[
-------
-```lua
-for c in io.lines(filename, ...) do
- body
-end
-```
-]]
-[[.enums]]
-name = 'mode'
-enum = '"*n"'
-description = 'Reads a numeral and returns it as number.'
-``````````
-name = 'mode'
-enum = '"*a"'
-description = 'Reads the whole file.'
-``````````
-name = 'mode'
-enum = '"*l"'
-description = 'Reads the next line skipping the end of line.'
-``````````
-name = 'mode'
-code = 'number'
-description = 'Reads a string with up to this number of bytes.'
-
-["lines Lua 5.3"]
-description = [[
-------
-```lua
-for c in io.lines(filename, ...) do
- body
-end
-```
-]]
-[[.enums]]
-name = 'mode'
-enum = '"n"'
-description = 'Reads a numeral and returns it as number.'
-``````````
-name = 'mode'
-enum = '"a"'
-description = 'Reads the whole file.'
-``````````
-name = 'mode'
-enum = '"l"'
-description = 'Reads the next line skipping the end of line.'
-``````````
-name = 'mode'
-enum = '"L"'
-description = 'Reads the next line keeping the end of line.'
-``````````
-name = 'mode'
-code = 'number'
-description = 'Reads a string with up to this number of bytes.'
-
-["lines LuaJIT"]
-description = [[
-------
-```lua
-for c in io.lines(filename, ...) do
- body
-end
-```
-]]
-[[.enums]]
-name = 'mode'
-enum = '"*n"'
-description = 'Reads a numeral and returns it as number.'
-``````````
-name = 'mode'
-enum = '"*a"'
-description = 'Reads the whole file.'
-``````````
-name = 'mode'
-enum = '"*l"'
-description = 'Reads the next line skipping the end of line.'
-``````````
-name = 'mode'
-enum = '"*L"'
-description = 'Reads the next line keeping the end of line.'
-``````````
-name = 'mode'
-code = 'number'
-description = 'Reads a string with up to this number of bytes.'
-
-[open]
-description = 'Opens a file, in the mode specified in the string `mode`.'
-[[.enums]]
-name = 'mode'
-enum = '"r"'
-description = 'Read mode.'
-``````````
-name = 'mode'
-enum = '"w"'
-description = 'Write mode.'
-``````````
-name = 'mode'
-enum = '"a"'
-description = 'Append mode.'
-``````````
-name = 'mode'
-enum = '"r+"'
-description = 'Update mode, all previous data is preserved.'
-``````````
-name = 'mode'
-enum = '"w+"'
-description = 'Update mode, all previous data is erased.'
-``````````
-name = 'mode'
-enum = '"a+"'
-description = 'Append update mode, previous data is preserved, writing is only allowed at the end of file.'
-
-[output]
-description = 'Sets `file` as the default output file.'
-
-[popen]
-description = 'Starts program prog in a separated process.'
-[[.enums]]
-name = 'mode'
-enum = '"r"'
-description = 'Read data from this program by `file`.'
-``````````
-name = 'mode'
-enum = '"w"'
-description = 'Write data to this program by `file`.'
-
-["read Lua 5.1"]
-description = 'Reads the `file`, according to the given formats, which specify what to read.'
-[[.enums]]
-name = 'mode'
-enum = '"*n"'
-description = 'Reads a numeral and returns it as number.'
-``````````
-name = 'mode'
-enum = '"*a"'
-description = 'Reads the whole file.'
-``````````
-name = 'mode'
-enum = '"*l"'
-description = 'Reads the next line skipping the end of line.'
-``````````
-name = 'mode'
-code = 'number'
-description = 'Reads a string with up to this number of bytes.'
-
-["read Lua 5.3"]
-description = 'Reads the `file`, according to the given formats, which specify what to read.'
-[[.enums]]
-name = 'mode'
-enum = '"n"'
-description = 'Reads a numeral and returns it as number.'
-``````````
-name = 'mode'
-enum = '"a"'
-description = 'Reads the whole file.'
-``````````
-name = 'mode'
-enum = '"l"'
-description = 'Reads the next line skipping the end of line.'
-``````````
-name = 'mode'
-enum = '"L"'
-description = 'Reads the next line keeping the end of line.'
-``````````
-name = 'mode'
-code = 'number'
-description = 'Reads a string with up to this number of bytes.'
-
-["read LuaJIT"]
-description = 'Reads the `file`, according to the given formats, which specify what to read.'
-[[.enums]]
-name = 'mode'
-enum = '"*n"'
-description = 'Reads a numeral and returns it as number.'
-``````````
-name = 'mode'
-enum = '"*a"'
-description = 'Reads the whole file.'
-``````````
-name = 'mode'
-enum = '"*l"'
-description = 'Reads the next line skipping the end of line.'
-``````````
-name = 'mode'
-enum = '"*L"'
-description = 'Reads the next line keeping the end of line.'
-``````````
-name = 'mode'
-code = 'number'
-description = 'Reads a string with up to this number of bytes.'
-
-[tmpfile]
-description = 'In case of success, returns a handle for a temporary file.'
-
-[type]
-description = 'Checks whether `obj` is a valid file handle.'
-[[.enums]]
-name = 'type'
-enum = '"file"'
-description = 'Is an open file handle.'
-``````````
-name = 'type'
-enum = '"closed file"'
-description = 'Is a closed file handle.'
-``````````
-name = 'type'
-code = 'nil'
-description = 'Is not a file handle.'
-
-[write]
-description = 'Writes the value of each of its arguments to default output file.'
diff --git a/server-beta/locale/en-US/libs/@lua/math.lni b/server-beta/locale/en-US/libs/@lua/math.lni
deleted file mode 100644
index 034153e7..00000000
--- a/server-beta/locale/en-US/libs/@lua/math.lni
+++ /dev/null
@@ -1,132 +0,0 @@
-[abs]
-description = 'Returns the absolute value of `x`.'
-
-[acos]
-description = 'Returns the arc cosine of `x` (in radians).'
-
-[asin]
-description = 'Returns the arc sine of `x` (in radians).'
-
-["atan Lua 5.1"]
-description = 'Returns the arc tangent of `x` (in radians).'
-
-["atan Lua 5.3"]
-description = 'Returns the arc tangent of `y/x` (in radians).'
-
-[atan2]
-description = 'Returns the arc tangent of `y/x` (in radians).'
-
-[ceil]
-description = 'Returns the smallest integral value larger than or equal to `x`.'
-
-[cos]
-description = 'Returns the cosine of `x` (assumed to be in radians).'
-
-[cosh]
-description = 'Returns the hyperbolic cosine of `x` (assumed to be in radians).'
-
-[deg]
-description = 'Converts the angle `x` from radians to degrees.'
-
-[exp]
-description = 'Returns the value `e^x` (where `e` is the base of natural logarithms).'
-
-[floor]
-description = 'Returns the largest integral value smaller than or equal to `x`.'
-
-[fmod]
-description = 'Returns the remainder of the division of `x` by `y` that rounds the quotient towards zero.'
-
-[frexp]
-description = 'Decompose `x` into tails and exponents. Returns `m` and `e` such that `x = m * (2 ^ e)`, `e` is an integer and the absolute value of `m` is in the range [0.5, 1) (or zero when `x` is zero).'
-
-[huge]
-description = 'A value larger than any other numeric value.'
-
-[log]
-description = 'Returns the logarithm of `x` in the given base.'
-
-['log Lua 5.1']
-description = 'Returns the natural logarithm of `x` .'
-
-[log10]
-description = 'Returns the base-10 logarithm of x.'
-
-[ldexp]
-description = 'Returns `m * (2 ^ e)` .'
-
-[max]
-description = 'Returns the argument with the maximum value, according to the Lua operator `<`.'
-
-[maxinteger]
-description = 'An integer with the maximum value for an integer.'
-
-[min]
-description = 'Returns the argument with the minimum value, according to the Lua operator `<`.'
-
-[mininteger]
-description = 'An integer with the minimum value for an integer.'
-
-[modf]
-description = 'Returns the integral part of `x` and the fractional part of `x`.'
-
-[pi]
-description = 'The value of *π*.'
-
-[pow]
-description = 'Returns `x ^ y` .'
-
-[rad]
-description = 'Converts the angle `x` from degrees to radians.'
-
-[random]
-description = [[
-* `math.random()`: Returns a float in the range [0,1).
-* `math.random(n)`: Returns a integer in the range [1, n].
-* `math.random(m, n)`: Returns a integer in the range [m, n].
-]]
-
-[randomseed]
-description = 'Sets `x` as the "seed" for the pseudo-random generator.'
-
-["randomseed Lua 5.4"]
-description = [[
-* `math.randomseed(x, y)`: Concatenate `x` and `y` into a 128-bit `seed` to reinitialize the pseudo-random generator.
-* `math.randomseed(x)`: Equate to `math.randomseed(x, 0)` .
-* `math.randomseed()`: Generates a seed with a weak attempt for randomness.
-]]
-
-[sin]
-description = 'Returns the sine of `x` (assumed to be in radians).'
-
-[sinh]
-description = 'Returns the hyperbolic sine of `x` (assumed to be in radians).'
-
-[sqrt]
-description = 'Returns the square root of `x`.'
-
-[tan]
-description = 'Returns the tangent of `x` (assumed to be in radians).'
-
-[tanh]
-description = 'Returns the hyperbolic tangent of `x` (assumed to be in radians).'
-
-[tointeger]
-description = 'If the value `x` is convertible to an integer, returns that integer.'
-
-[type]
-[[.enums]]
-name = 'type'
-enum = '"integer"'
-description = '`x` is an integer.'
-``````````
-name = 'type'
-enum = '"float"'
-description = '`x` is a float.'
-``````````
-name = 'type'
-code = 'nil'
-description = '`x` is not a number.'
-
-[ult]
-description = 'Returns `true` if and only if `m` is below `n` when they are compared as unsigned integers.'
diff --git a/server-beta/locale/en-US/libs/@lua/os.lni b/server-beta/locale/en-US/libs/@lua/os.lni
deleted file mode 100644
index 82b7c228..00000000
--- a/server-beta/locale/en-US/libs/@lua/os.lni
+++ /dev/null
@@ -1,38 +0,0 @@
-[clock]
-description = 'Returns an approximation of the amount in seconds of CPU time used by the program.'
-
-[data]
-description = 'Returns a string or a table containing date and time, formatted according to the given string `format`.'
-
-[difftime]
-description = 'Returns the difference, in seconds, from time `t1` to time `t2`.'
-
-[execute]
-description = 'Passes `command` to be executed by an operating system shell.'
-
-['execute Lua 5.1']
-description = 'Passes `command` to be executed by an operating system shell.'
-
-[exit]
-description = 'Calls the ISO C function `exit` to terminate the host program.'
-
-['exit Lua 5.1']
-description = 'Calls the C function `exit` to terminate the host program.'
-
-[getenv]
-description = 'Returns the value of the process environment variable `varname`.'
-
-[remove]
-description = 'Deletes the file with the given name.'
-
-[rename]
-description = 'Renames the file or directory named `oldname` to `newname`.'
-
-[setlocale]
-description = 'Sets the current locale of the program.'
-
-[time]
-description = 'Returns the current time when called without arguments, or a time representing the local date and time specified by the given table.'
-
-[tmpname]
-description = 'Returns a string with a file name that can be used for a temporary file.'
diff --git a/server-beta/locale/en-US/libs/@lua/package.lni b/server-beta/locale/en-US/libs/@lua/package.lni
deleted file mode 100644
index 1c8b633a..00000000
--- a/server-beta/locale/en-US/libs/@lua/package.lni
+++ /dev/null
@@ -1,29 +0,0 @@
-[config]
-description = 'A string describing some compile-time configurations for packages.'
-
-[cpath]
-description = 'The path used by `require` to search for a C loader.'
-
-[loaded]
-description = 'A table used by `require` to control which modules are already loaded.'
-
-[loaders]
-description = 'A table used by `require` to control how to load modules.'
-
-[loadlib]
-description = 'Dynamically links the host program with the C library `libname`.'
-
-[path]
-description = 'The path used by `require` to search for a Lua loader.'
-
-[preload]
-description = 'A table to store loaders for specific modules.'
-
-[searchers]
-description = 'A table used by `require` to control how to load modules.'
-
-[searchpath]
-description = 'Searches for the given `name` in the given `path`.'
-
-[seeall]
-describing = 'Sets a metatable for `module` with its `__index` field referring to the global environment, so that this module inherits values from the global environment. To be used as an option to function `module` .'
diff --git a/server-beta/locale/en-US/libs/@lua/string.lni b/server-beta/locale/en-US/libs/@lua/string.lni
deleted file mode 100644
index 2055b16b..00000000
--- a/server-beta/locale/en-US/libs/@lua/string.lni
+++ /dev/null
@@ -1,72 +0,0 @@
-[byte]
-description = 'Returns the internal numeric codes of the characters `s[i], s[i+1], ..., s[j]`.'
-
-[char]
-description = 'Returns a string with length equal to the number of arguments, in which each character has the internal numeric code equal to its corresponding argument.'
-
-[dump]
-description = 'Returns a string containing a binary representation (a *binary chunk*) of the given function.'
-
-[find]
-description = 'Looks for the first match of [`pattern`](https://www.lua.org/manual/5.3/manual.html#6.4.1) in the string.'
-
-[format]
-description = 'Returns a formatted version of its variable number of arguments following the description given in its first argument.'
-
-[gmatch]
-description = [[
-----------
-```lua
-s = "hello world from Lua"
-for w in string.gmatch(s, "%a+") do
- print(w)
-end
-```
-]]
-
-["gmatch Lua 5.4"]
-description = [[
-----------
-```lua
-s = "hello world from Lua"
-for w in string.gmatch(s, "%a+") do
- print(w)
-end
-```
-]]
-
-[gsub]
-description = 'Returns a copy of s in which all (or the first `n`, if given) occurrences of the [`pattern`](https://www.lua.org/manual/5.3/manual.html#6.4.1) have been replaced by a replacement string specified by `repl`.'
-
-[len]
-description = 'Returns its length.'
-
-[lower]
-description = 'Returns a copy of this string with all uppercase letters changed to lowercase.'
-
-[match]
-description = 'Looks for the first match of [`pattern`](https://www.lua.org/manual/5.3/manual.html#6.4.1) in the string.'
-
-[pack]
-description = 'Returns a binary string containing the values `v1`, `v2`, etc. packed (that is, serialized in binary form) according to the format string [`fmt`](https://www.lua.org/manual/5.3/manual.html#6.4.2).'
-
-[packsize]
-description = 'Returns the size of a string resulting from `string.pack` with the given format.'
-
-[rep]
-description = 'Returns a string that is the concatenation of `n` copies of the string `s` separated by the string `sep`.'
-
-['rep Lua 5.1']
-description = 'Returns a string that is the concatenation of `n` copies of the string `s` .'
-
-[reverse]
-description = 'Returns a string that is the string `s` reversed.'
-
-[sub]
-description = 'Returns the substring of the string that starts at `i` and continues until `j`.'
-
-[unpack]
-description = 'Returns the values packed in string according to the format string [`fmt`](https://www.lua.org/manual/5.3/manual.html#6.4.2).'
-
-[upper]
-description = 'Returns a copy of this string with all lowercase letters changed to uppercase.'
diff --git a/server-beta/locale/en-US/libs/@lua/table.lni b/server-beta/locale/en-US/libs/@lua/table.lni
deleted file mode 100644
index d32ea4ae..00000000
--- a/server-beta/locale/en-US/libs/@lua/table.lni
+++ /dev/null
@@ -1,39 +0,0 @@
-[concat]
-description = [[
---------
-```lua
-return list[i]..sep..list[i+1] ··· sep..list[j]
-```
-]]
-
-[insert]
-description = 'Inserts element `value` at position `pos` in `list`.'
-
-[maxn]
-description = 'Returns the largest positive numerical index of the given table, or zero if the table has no positive numerical indices.'
-
-[move]
-description = [[
-Moves elements from table `a1` to table `a2`.
-```lua
-a2[t],··· = a1[f],···,a1[e]
-return a2
-```
-]]
-
-[pack]
-description = 'Returns a new table with all arguments stored into keys `1`, `2`, etc. and with a field `"n"` with the total number of arguments.'
-
-[remove]
-description = 'Removes from `list` the element at position `pos`, returning the value of the removed element.'
-
-[sort]
-description = 'Sorts list elements in a given order, *in-place*, from `list[1]` to `list[#list]`.'
-
-[unpack]
-description = [[
--------
-```lua
-return list[i], list[i+1], ···, list[j]
-```
-]]
diff --git a/server-beta/locale/en-US/libs/@lua/utf8.lni b/server-beta/locale/en-US/libs/@lua/utf8.lni
deleted file mode 100644
index c7ab9bf3..00000000
--- a/server-beta/locale/en-US/libs/@lua/utf8.lni
+++ /dev/null
@@ -1,40 +0,0 @@
-[char]
-description = 'Receives zero or more integers, converts each one to its corresponding UTF-8 byte sequence and returns a string with the concatenation of all these sequences.'
-
-[charpattern]
-description = 'The pattern which matches exactly one UTF-8 byte sequence, assuming that the subject is a valid UTF-8 string.'
-
-[codes]
-description = [[
---------
-```lua
-for p, c in utf8.codes(s) do
- body
-end
-```
-]]
-
-["codes Lua 5.4"]
-description = [[
---------
-```lua
-for p, c in utf8.codes(s) do
- body
-end
-```
-]]
-
-[codepoint]
-description = 'Returns the codepoints (as integers) from all characters in `s` that start between byte position `i` and `j` (both included).'
-
-["codepoint Lua 5.4"]
-description = 'Returns the codepoints (as integers) from all characters in `s` that start between byte position `i` and `j` (both included).'
-
-[len]
-description = 'Returns the number of UTF-8 characters in string `s` that start between positions `i` and `j` (both inclusive).'
-
-["len Lua 5.4"]
-description = 'Returns the number of UTF-8 characters in string `s` that start between positions `i` and `j` (both inclusive).'
-
-[offset]
-description = 'Returns the position (in bytes) where the encoding of the `n`-th character of `s` (counting from position `i`) starts.'
diff --git a/server-beta/locale/en-US/script.lni b/server-beta/locale/en-US/script.lni
deleted file mode 100644
index 9c108203..00000000
--- a/server-beta/locale/en-US/script.lni
+++ /dev/null
@@ -1,122 +0,0 @@
-DIAG_LINE_ONLY_SPACE = 'Line with spaces only.'
-DIAG_LINE_POST_SPACE = 'Line with postspace.'
-DIAG_UNUSED_LOCAL = 'Unused local `{}`.'
-DIAG_UNDEF_GLOBAL = 'Undefined global `{}`.'
-DIAG_UNDEF_ENV_CHILD = 'Undefined variable `{}` (overloaded `_ENV` ).'
-DIAG_UNDEF_FENV_CHILD = 'Undefined variable `{}` (inside module).'
-DIAG_GLOBAL_IN_NIL_ENV = 'Invalid global (`_ENV` is `nil`).'
-DIAG_GLOBAL_IN_NIL_FENV = 'Invalid global (module environment is `nil`).'
-DIAG_UNUSED_LABEL = 'Unused label `{}`.'
-DIAG_UNUSED_FUNCTION = 'Unused functions.'
-DIAG_UNUSED_VARARG = 'Unused vararg.'
-DIAG_REDEFINED_LOCAL = 'Redefined local `{}`.'
-DIAG_DUPLICATE_INDEX = 'Duplicate index `{}`.'
-DIAG_DUPLICATE_METHOD = 'Duplicate method `{}`.'
-DIAG_PREVIOUS_CALL = 'Parsed as function call for the previous line. It may be necessary to add a `;` before.'
-DIAG_OVER_MAX_ARGS = 'The function takes only {:d} parameters, but you passed {:d}.'
-DIAG_OVER_MAX_ARGS = 'Only has {} variables, but you set {} values.'
-DIAG_AMBIGUITY_1 = 'Compute `{}` first. You may need to add brackets.'
-DIAG_LOWERCASE_GLOBAL = 'Global variable in lowercase initial.'
-DIAG_EMPTY_BLOCK = 'Empty block.'
-DIAG_DIAGNOSTICS = 'Lua Diagnostics.'
-DIAG_SYNTAX_CHECK = 'Lua Syntax Check.'
-DIAG_NEED_VERSION = 'Supported in {}, current is {}.'
-DIAG_DEFINED_VERSION = 'Defined in {}, current is {}.'
-DIAG_DEFINED_CUSTOM = 'Defined in {}.'
-DIAG_DUPLICATE_CLASS = 'Duplicate class.'
-DIAG_UNDEFINED_CLASS = 'Undefined Class.'
-DIAG_CYCLIC_EXTENDS = 'Cyclic extends.'
-DIAG_INEXISTENT_PARAM = 'Inexistent param.'
-DIAG_DUPLICATE_PARAM = 'Duplicate param.'
-DIAG_NEED_CLASS = 'Class needs to be defined first.'
-DIAG_DUPLICATE_FIELD = 'Duplicate field.'
-DIAG_SET_CONST = 'Assignment to const variable.'
-
-MWS_NOT_SUPPORT = '{} dose not support multi workspace for now, I may need to restart to support the new workspace ...'
-MWS_RESTART = 'Restart'
-MWS_NOT_COMPLETE = 'Workspace is not complete yet. You may try again later...'
-MWS_COMPLETE = 'Workspace is complete now. You may try again...'
-MWS_MAX_PRELOAD = 'Preloaded files has reached the upper limit ({}), you need to manually open the files that need to be loaded.'
-MWS_UCONFIG_FAILED = 'Saving user setting failed.'
-MWS_UCONFIG_UPDATED = 'User setting updated.'
-MWS_WCONFIG_UPDATED = 'Workspace setting updated.'
-
-PARSER_CRASH = 'Parser crashed! Last words:{}'
-PARSER_UNKNOWN = 'Unknown syntax error...'
-PARSER_MISS_NAME = '<name> expected.'
-PARSER_UNKNOWN_SYMBOL = 'Unexpected symbol `{symbol}`.'
-PARSER_MISS_SYMBOL = 'Missed symbol `{symbol}`.'
-PARSER_MISS_ESC_X = 'Should be 2 hexadecimal digits.'
-PARSER_UTF8_SMALL = 'At least 1 hexadecimal digit.'
-PARSER_UTF8_MAX = 'Should between {min} and {max} .'
-PARSER_ERR_ESC = 'Invalid escape sequence.'
-PARSER_MUST_X16 = 'Should be hexadecimal digits.'
-PARSER_MISS_EXPONENT = 'Missed digits for the exponent.'
-PARSER_MISS_EXP = '<exp> expected.'
-PARSER_MISS_FIELD = '<field> expected.'
-PARSER_MISS_METHOD = '<method> expected.'
-PARSER_ARGS_AFTER_DOTS = '`...` should be the last arg.'
-PARSER_KEYWORD = '<keyword> cannot be used as name.'
-PARSER_EXP_IN_ACTION = 'Unexpected <exp> .'
-PARSER_BREAK_OUTSIDE = '<break> not inside a loop.'
-PARSER_MALFORMED_NUMBER = 'Malformed number.'
-PARSER_ACTION_AFTER_RETURN = '<eof> expected after `return`.'
-PARSER_ACTION_AFTER_BREAK = '<eof> expected after `break`.'
-PARSER_NO_VISIBLE_LABEL = 'No visible label `{label}` .'
-PARSER_REDEFINE_LABEL = 'Label `{label}` already defined.'
-PARSER_UNSUPPORT_SYMBOL = '{version} does not support this grammar.'
-PARSER_UNEXPECT_DOTS = 'Cannot use `...` outside a vararg function.'
-PARSER_UNKNOWN_TAG = 'Unknown tag.'
-PARSER_MULTI_TAG = 'Dose not support multi tags.'
-PARSER_UNEXPECT_LFUNC_NAME = 'Local function can only use identifiers as name.'
-PARSER_ERR_LCOMMENT_END = 'Multi-line annotations should be closed by `{symbol}` .'
-PARSER_ERR_C_LONG_COMMENT = 'Lua should use `--[[ ]]` for multi-line annotations.'
-PARSER_ERR_LSTRING_END = 'Long string should be closed by `{symbol}` .'
-PARSER_ERR_ASSIGN_AS_EQ = 'Should use `=` for assignment.'
-PARSER_ERR_EQ_AS_ASSIGN = 'Should use `==` for equal.'
-PARSER_ERR_UEQ = 'Should use `~=` for not equal.'
-PARSER_ERR_THEN_AS_DO = 'Should use `then` .'
-PARSER_ERR_DO_AS_THEN = 'Should use `do` .'
-PARSER_MISS_END = 'Miss corresponding `end` .'
-PARSER_ERR_COMMENT_PREFIX = 'Lua should use `--` for annotations.'
-PARSER_MISS_SEP_IN_TABLE = 'Miss symbol `,` or `;` .'
-
-SYMBOL_ANONYMOUS = '<Anonymous>'
-
-HOVER_DOCUMENT_LUA51 = '[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-{})'
-HOVER_DOCUMENT_LUA52 = '[View documents](http://www.lua.org/manual/5.2/manual.html#pdf-{})'
-HOVER_DOCUMENT_LUA53 = '[View documents](http://www.lua.org/manual/5.3/manual.html#pdf-{})'
-HOVER_DOCUMENT_LUA54 = '[View documents](http://www.lua.org/work/doc/manual.html#pdf-{})'
-HOVER_DOCUMENT_LUAJIT = '[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-{})'
-HOVER_MULTI_PROTOTYPE = '({} prototypes)'
-
-ACTION_DISABLE_DIAG = 'Disable diagnostics ({}).'
-ACTION_MARK_GLOBAL = 'Mark `{}` as defined global.'
-ACTION_REMOVE_SPACE = 'Clear all postemptive spaces.'
-ACTION_ADD_SEMICOLON = 'Add `;` .'
-ACTION_ADD_BRACKETS = 'Add brackets.'
-ACTION_RUNTIME_VERSION = 'Change runtime version to {} .'
-ACTION_OPEN_LIBRARY = 'Load globals from {} .'
-ACTION_ADD_DO_END = 'Add `do ... end` .'
-ACTION_FIX_LCOMMENT_END = 'Modify to the correct multi-line annotations closing symbol.'
-ACTION_ADD_LCOMMENT_END = 'Close multi-line annotations.'
-ACTION_FIX_C_LONG_COMMENT = 'Modify to Lua multi-line annotations format.'
-ACTION_FIX_LSTRING_END = 'Modify to the correct long string closing symbol.'
-ACTION_ADD_LSTRING_END = 'Close long string.'
-ACTION_FIX_ASSIGN_AS_EQ = 'Modify to `=` .'
-ACTION_FIX_EQ_AS_ASSIGN = 'Modify to `==` .'
-ACTION_FIX_UEQ = 'Modify to `~=` .'
-ACTION_FIX_THEN_AS_DO = 'Modify to `then` .'
-ACTION_FIX_DO_AS_THEN = 'Modify to `do` .'
-ACTION_ADD_END = 'Add `end` (infer the addition location ny indentations).'
-ACTION_FIX_COMMENT_PREFIX = 'Modify to `--` .'
-
-COMMAND_DISABLE_DIAG = 'Disable diagnostics'
-COMMAND_MARK_GLOBAL = 'Mark defined global'
-COMMAND_REMOVE_SPACE = 'Clear all postemptive spaces'
-COMMAND_ADD_BRACKETS = 'Add brackets'
-COMMAND_RUNTIME_VERSION = 'Change runtime version'
-COMMAND_OPEN_LIBRARY = 'Load globals from 3rd library'
-
-DEBUG_MEMORY_LEAK = "{} I'm sorry for the serious memory leak. The language service will be restarted soon."
-DEBUG_RESTART_NOW = 'Restart now'
diff --git a/server-beta/locale/zh-CN/libs/@lua/basic.lni b/server-beta/locale/zh-CN/libs/@lua/basic.lni
deleted file mode 100644
index d4b234b0..00000000
--- a/server-beta/locale/zh-CN/libs/@lua/basic.lni
+++ /dev/null
@@ -1,239 +0,0 @@
-[arg]
-description = '独立版Lua的启动参数。'
-
-[assert]
-description = '如果其参数 `v` 的值为假,它就调用 `error`。'
-
-[collectgarbage]
-[[.enums]]
-name = 'opt'
-enum = '"collect"'
-description = '做一次完整的垃圾收集循环。'
-``````````
-name = 'opt'
-enum = '"stop"'
-description = '停止垃圾收集器的运行。'
-``````````
-name = 'opt'
-enum = '"restart"'
-description = '重启垃圾收集器的自动运行。'
-``````````
-name = 'opt'
-enum = '"count"'
-description = '以 K 字节数为单位返回 Lua 使用的总内存数。'
-``````````
-name = 'opt'
-enum = '"step"'
-description = '单步运行垃圾收集器。'
-``````````
-name = 'opt'
-enum = '"setpause"'
-description = '设置收集器的 `间歇率`。'
-``````````
-name = 'opt'
-enum = '"setstepmul"'
-description = '设置收集器的 `步进倍率`。'
-``````````
-name = 'opt'
-enum = '"isrunning"'
-description = '返回表示收集器是否在工作的布尔值。'
-
-["collectgarbage Lua 5.4"]
-[[.enums]]
-name = 'opt'
-enum = '"collect"'
-description = '做一次完整的垃圾收集循环。'
-``````````
-name = 'opt'
-enum = '"stop"'
-description = '停止垃圾收集器的运行。'
-``````````
-name = 'opt'
-enum = '"restart"'
-description = '重启垃圾收集器的自动运行。'
-``````````
-name = 'opt'
-enum = '"count"'
-description = '以 K 字节数为单位返回 Lua 使用的总内存数。'
-``````````
-name = 'opt'
-enum = '"step"'
-description = '单步运行垃圾收集器。'
-``````````
-name = 'opt'
-enum = '"setpause"'
-description = '设置收集器的 `间歇率`。'
-``````````
-name = 'opt'
-enum = '"setstepmul"'
-description = '设置收集器的 `步进倍率`。'
-``````````
-name = 'opt'
-enum = '"incremental"'
-description = '改变收集器模式为增量模式。'
-``````````
-name = 'opt'
-enum = '"generational"'
-description = '改变收集器模式为分代模式。'
-``````````
-name = 'opt'
-enum = '"isrunning"'
-description = '返回表示收集器是否在工作的布尔值。'
-
-[dofile]
-description = '打开该名字的文件,并执行文件中的 Lua 代码块。'
-
-[error]
-description = '中止上一次保护函数调用, 将错误对象 message 返回。'
-
-[_G]
-description = '内部储存有全局环境。'
-
-[getfenv]
-description = '返回给定函数的环境。`f` 可以是一个Lua函数,也可是一个表示调用栈层级的数字。'
-
-[getmetatable]
-description = '返回该对象的元表。'
-
-[ipairs]
-description = [[
-----------------
-```lua
-for i, v in ipairs(t) do
- body
-end
-```
-]]
-
-[load]
-description = '加载一个代码块。'
-[[.enums]]
-name = 'mode'
-enum = '"b"'
-description = '只能是二进制代码块。'
-``````````
-name = 'mode'
-enum = '"t"'
-description = '只能是文本代码块。'
-``````````
-name = 'mode'
-enum = '"bt"'
-description = '可以是二进制也可以是文本。'
-
-['load Lua 5.1']
-description = '使用 `func` 分段加载代码块。每次调用 `func` 必须返回一个字符串用于连接前文。'
-
-[loadfile]
-description = '从文件中获取代码块。'
-[[.enums]]
-name = 'mode'
-enum = '"b"'
-description = '只能是二进制代码块。'
-``````````
-name = 'mode'
-enum = '"t"'
-description = '只能是文本代码块。'
-``````````
-name = 'mode'
-enum = '"bt"'
-description = '可以是二进制也可以是文本。'
-
-['loadfile Lua 5.1']
-description = '从 `filename` 或标准输入中加载代码块。'
-
-[loadstring]
-description = '使用给定字符串加载代码块。'
-
-[module]
-description = '创建一个模块'
-
-[next]
-description = '返回该键的下一个键及其关联的值。'
-
-[pairs]
-description = [[
-----------------
-```lua
-for k, v in pairs(t) do
- body
-end
-```
-]]
-
-[pcall]
-description = '传入参数,以 *保护模式* 调用函数 `f` 。'
-
-[print]
-description = '接收任意数量的参数,并将它们的值打印到 `stdout`。'
-
-[rawequal]
-description = '在不触发任何元方法的情况下 检查 `v1` 是否和 `v2` 相等。'
-
-[rawget]
-description = '在不触发任何元方法的情况下 获取 `table[index]` 的值。'
-
-[rawlen]
-description = '在不触发任何元方法的情况下 返回对象 `v` 的长度。'
-
-[rawset]
-description = '在不触发任何元方法的情况下 将 `table[index]` 设为 `value`。'
-
-[select]
-[[.enums]]
-name = 'index'
-enum = '"#"'
-description = '返回参数的个数。'
-``````````
-name = 'index'
-code = 'integer'
-description = '返回参数中第 `index` 个之后的部分。'
-
-[setfenv]
-description = '设置给定函数的环境。 `f` 可以是一个Lua函数,也可是一个表示调用栈层级的数字。'
-
-[setmetatable]
-description = '给指定表设置元表。'
-
-[tonumber]
-description = '尝试把参数转换为一个数字。'
-
-[tostring]
-description = '可以接收任何类型,它将其转换为人可阅读的字符串形式。'
-
-[type]
-description = '将参数的类型编码为一个字符串返回。'
-
-["_VERSION Lua 5.1"]
-description = '当前解释器版本号。'
-
-["_VERSION Lua 5.2"]
-description = '当前解释器版本号。'
-
-["_VERSION Lua 5.3"]
-description = '当前解释器版本号。'
-
-["_VERSION Lua 5.4"]
-description = '当前解释器版本号。'
-
-[warn]
-description = '使用所有参数组成的字符串消息来发送警告。'
-
-[xpcall]
-description = '传入参数并设置一个消息处理器 `msgh`,以 *保护模式* 调用函数 `f` 。'
-
-["xpcall Lua 5.1"]
-description = '设置一个消息处理器 `err`,以 *保护模式* 调用函数 `f` 。'
-
-[require]
-description = '加载一个模块,返回该模块的返回值(`nil`时为`true`)。'
-
-["require Lua 5.4"]
-description = '加载一个模块,返回该模块的返回值(`nil`时为`true`)与搜索器返回的加载数据。默认搜索器的加载数据指示了加载位置,对于文件来说就是文件路径。'
-
-[unpack]
-description = [[
--------
-```lua
-return list[i], list[i+1], ···, list[j]
-```
-]]
diff --git a/server-beta/locale/zh-CN/libs/@lua/bit32.lni b/server-beta/locale/zh-CN/libs/@lua/bit32.lni
deleted file mode 100644
index 35aa22cc..00000000
--- a/server-beta/locale/zh-CN/libs/@lua/bit32.lni
+++ /dev/null
@@ -1,55 +0,0 @@
-[arshift]
-description = [[
-返回 `x` 向右位移 `disp` 位的结果。`disp` 为负时向左位移。这是算数位移操作,左侧的空位使用 `x` 的高位填充,右侧空位使用 `0` 填充。
-]]
-
-[band]
-description = '返回参数按位与的结果。'
-
-[bnot]
-description = [[
-返回 `x` 按位取反的结果。
-
-```lua
-assert(bit32.bnot(x) == (-1 - x) % 2^32)
-```
-]]
-
-[bor]
-description = '返回参数按位或的结果。'
-
-[btest]
-description = '参数按位与的结果不为0时,返回 `true` 。'
-
-[bxor]
-description = '返回参数按位异或的结果。'
-
-[extract]
-description = '返回 `n` 中第 `field` 到第 `field + width - 1` 位组成的结果。'
-
-[replace]
-description = '返回 `v` 的第 `field` 到第 `field + width - 1` 位替换 `n` 的对应位后的结果。'
-
-[lrotate]
-description = '返回 `x` 向左旋转 `disp` 位的结果。`disp` 为负时向右旋转。'
-
-[lshift]
-description = [[
-返回 `x` 向左位移 `disp` 位的结果。`disp` 为负时向右位移。空位总是使用 `0` 填充。
-
-```lua
-assert(bit32.lshift(b, disp) == (b * 2^disp) % 2^32)
-```
-]]
-
-[rrotate]
-description = '返回 `x` 向右旋转 `disp` 位的结果。`disp` 为负时向左旋转。'
-
-[rshift]
-description = [[
-返回 `x` 向右位移 `disp` 位的结果。`disp` 为负时向左位移。空位总是使用 `0` 填充。
-
-```lua
-assert(bit32.lshift(b, disp) == (b * 2^disp) % 2^32)
-```
-]]
diff --git a/server-beta/locale/zh-CN/libs/@lua/coroutine.lni b/server-beta/locale/zh-CN/libs/@lua/coroutine.lni
deleted file mode 100644
index 42f1cb8f..00000000
--- a/server-beta/locale/zh-CN/libs/@lua/coroutine.lni
+++ /dev/null
@@ -1,42 +0,0 @@
-[create]
-description = '创建一个主体函数为 `f` 的新协程。'
-
-[isyieldable]
-description = '如果正在运行的协程可以让出,则返回真。'
-
-['isyieldable Lua 5.4']
-description = '如果协程 `co` 可以让出,则返回真。`co` 默认为正在运行的协程。'
-
-[close]
-description = '关闭协程 `co`,并关闭它所有等待 *to-be-closed* 的变量,并将协程状态设为 `dead` 。'
-
-[resume]
-description = '开始或继续协程 `co` 的运行。'
-
-[running]
-description = '返回当前正在运行的协程加一个布尔量。 如果当前运行的协程是主线程,其为真。'
-
-[status]
-description = '以字符串形式返回协程 `co` 的状态。'
-[[.enums]]
-name = 'status'
-enum = '"running"'
-description = '正在运行。'
-``````````
-name = 'status'
-enum = '"suspended"'
-description = '挂起或是还没有开始运行。'
-``````````
-name = 'status'
-enum = '"normal"'
-description = '是活动的,但并不在运行。'
-``````````
-name = 'status'
-enum = '"dead"'
-description = '运行完主体函数或因错误停止。'
-
-[wrap]
-description = '创建一个主体函数为 `f` 的新协程。'
-
-[yield]
-description = '挂起正在调用的协程的执行。'
diff --git a/server-beta/locale/zh-CN/libs/@lua/debug.lni b/server-beta/locale/zh-CN/libs/@lua/debug.lni
deleted file mode 100644
index 6d5d9f8f..00000000
--- a/server-beta/locale/zh-CN/libs/@lua/debug.lni
+++ /dev/null
@@ -1,140 +0,0 @@
-["debug.debug"]
-description = '进入一个用户交互模式,运行用户输入的每个字符串。'
-
-[getfenv]
-description = '返回对象 `o` 的环境。'
-
-[gethook]
-description = '返回三个表示线程钩子设置的值: 当前钩子函数,当前钩子掩码,当前钩子计数 。'
-
-[getinfo]
-description = '返回关于一个函数信息的表。'
-[[.enums]]
-name = 'what'
-enum = '"n"'
-description = '`name` 和 `namewhat`'
-``````````
-name = 'what'
-enum = '"S"'
-description = '`source`,`short_src`,`linedefined`,`lastlinedefined`,和 `what`'
-``````````
-name = 'what'
-enum = '"l"'
-description = '`currentline`'
-``````````
-name = 'what'
-enum = '"t"'
-description = '`istailcall`'
-``````````
-name = 'what'
-enum = '"u"'
-description = '`nups`,`nparams`,和`isvararg`'
-``````````
-name = 'what'
-enum = '"f"'
-description = '`func`'
-``````````
-name = 'what'
-enum = '"L"'
-description = '`activelines`'
-
-['getinfo Lua 5.1']
-description = '返回关于一个函数信息的表。'
-[[.enums]]
-name = 'what'
-enum = '"n"'
-description = '`name` 和 `namewhat`'
-``````````
-name = 'what'
-enum = '"S"'
-description = '`source`,`short_src`,`linedefined`,`lastlinedefined`,和 `what`'
-``````````
-name = 'what'
-enum = '"l"'
-description = '`currentline`'
-``````````
-name = 'what'
-enum = '"t"'
-description = '`istailcall`'
-``````````
-name = 'what'
-enum = '"u"'
-description = '`nups`'
-``````````
-name = 'what'
-enum = '"f"'
-description = '`func`'
-``````````
-name = 'what'
-enum = '"L"'
-description = '`activelines`'
-
-[getlocal]
-description = '返回在栈的 `f` 层处函数的索引为 `local` 的局部变量的名字和值。'
-
-['getlocal Lua 5.1']
-description = '返回在栈的 `level` 层处函数的索引为 `local` 的局部变量的名字和值。'
-
-[getmetatable]
-description = '返回给定 `value` 的元表。'
-
-[getregistry]
-description = '返回注册表。'
-
-[getupvalue]
-description = '返回函数 `f` 的第 `up` 个上值的名字和值。'
-
-[getuservalue]
-description = '返回关联在 `u` 上的 `Lua` 值。'
-
-["getuservalue Lua 5.4"]
-description = '返回关联在 `u` 上的第 `n` 个 `Lua` 值,以及一个布尔,`false`表示值不存在。'
-
-[setcstacklimit]
-description = [[
-设置新的C栈限制。该限制控制Lua中嵌套调用的深度,以避免堆栈溢出。
-
-如果设置成功,该函数返回之前的限制;否则返回`false`。
-]]
-
-[setfenv]
-description = '将 `table` 设置为 `object` 的环境。'
-
-[sethook]
-description = '将一个函数作为钩子函数设入。'
-[[.enums]]
-name = 'mask'
-enum = '"c"'
-description = '每当 Lua 调用一个函数时,调用钩子。'
-``````````
-name = 'mask'
-enum = '"r"'
-description = '每当 Lua 从一个函数内返回时,调用钩子。'
-``````````
-name = 'mask'
-enum = '"l"'
-description = '每当 Lua 进入新的一行时,调用钩子。'
-
-[setlocal]
-description = '将 `value` 赋给 栈上第 `level` 层函数的第 `local` 个局部变量。'
-
-[setmetatable]
-description = '将 `value` 的元表设为 `table` (可以是 `nil`)。'
-
-[setupvalue]
-description = '将 `value` 设为函数 `f` 的第 `up` 个上值。'
-
-["setuservalue Lua 5.4"]
-description = '将 `value` 设为 `udata` 的第 `n` 个关联值。'
-
-[setuservalue]
-description = '将 `value` 设为 `udata` 的关联值。'
-
-[traceback]
-description = '返回调用栈的栈回溯信息。 字符串可选项 `message` 被添加在栈回溯信息的开头。'
-
-[upvalueid]
-description = '返回指定函数第 `n` 个上值的唯一标识符(一个轻量用户数据)。'
-
-[upvaluejoin]
-description = '让 Lua 闭包 `f1` 的第 `n1` 个上值 引用 `Lua` 闭包 `f2` 的第 `n2` 个上值。'
diff --git a/server-beta/locale/zh-CN/libs/@lua/file.lni b/server-beta/locale/zh-CN/libs/@lua/file.lni
deleted file mode 100644
index 4dcace0f..00000000
--- a/server-beta/locale/zh-CN/libs/@lua/file.lni
+++ /dev/null
@@ -1,91 +0,0 @@
-[close]
-description = '关闭 `file`。'
-
-[flush]
-description = '将写入的数据保存到 `file` 中。'
-
-[lines]
-description = [[
-------
-```lua
-for c in file:lines(...) do
- body
-end
-```
-]]
-[[.enums]]
-name = 'mode'
-enum = '"n"'
-description = '读取一个数字,根据 Lua 的转换文法返回浮点数或整数。'
-``````````
-name = 'mode'
-enum = '"a"'
-description = '从当前位置开始读取整个文件。'
-``````````
-name = 'mode'
-enum = '"l"'
-description = '读取一行并忽略行结束标记。'
-``````````
-name = 'mode'
-enum = '"L"'
-description = '读取一行并保留行结束标记。'
-``````````
-name = 'mode'
-code = 'number'
-description = '读取一个不超过这个数量字节数的字符串。'
-
-[read]
-description = '读文件 `file`, 指定的格式决定了要读什么。'
-[[.enums]]
-name = 'mode'
-enum = '"n"'
-description = '读取一个数字,根据 Lua 的转换文法返回浮点数或整数。'
-``````````
-name = 'mode'
-enum = '"a"'
-description = '从当前位置开始读取整个文件。'
-``````````
-name = 'mode'
-enum = '"l"'
-description = '读取一行并忽略行结束标记。'
-``````````
-name = 'mode'
-enum = '"L"'
-description = '读取一行并保留行结束标记。'
-``````````
-name = 'mode'
-code = 'number'
-description = '读取一个不超过这个数量字节数的字符串。'
-
-[seek]
-description = '设置及获取基于文件开头处计算出的位置。'
-[[.enums]]
-name = 'whence'
-enum = '"set"'
-description = '基点为 0 (文件开头)。'
-``````````
-name = 'whence'
-enum = '"cur"'
-description = '基点为当前位置。'
-``````````
-name = 'whence'
-enum = '"end"'
-description = '基点为文件尾。'
-
-[setvbuf]
-description = '设置输出文件的缓冲模式。'
-[[.enums]]
-name = 'mode'
-enum = '"no"'
-description = '不缓冲;输出操作立刻生效。'
-``````````
-name = 'mode'
-enum = '"full"'
-description = '完全缓冲;只有在缓存满或调用 flush 时才做输出操作。'
-``````````
-name = 'mode'
-enum = '"line"'
-description = '行缓冲;输出将缓冲到每次换行前。'
-
-[write]
-description = '将参数的值逐个写入 `file`。'
diff --git a/server-beta/locale/zh-CN/libs/@lua/io.lni b/server-beta/locale/zh-CN/libs/@lua/io.lni
deleted file mode 100644
index 34f6d5eb..00000000
--- a/server-beta/locale/zh-CN/libs/@lua/io.lni
+++ /dev/null
@@ -1,230 +0,0 @@
-[stdin]
-description = '标准输入。'
-
-[stdout]
-description = '标准输出。'
-
-[stderr]
-description = '标准错误。'
-
-[close]
-description = '关闭 `file` 或默认输出文件。'
-
-[flush]
-description = '将写入的数据保存到默认输出文件中。'
-
-[input]
-description = '设置 `file` 为默认输入文件。'
-
-["lines Lua 5.1"]
-description = [[
-------
-```lua
-for c in io.lines(filename, ...) do
- body
-end
-```
-]]
-[[.enums]]
-name = 'mode'
-enum = '"*n"'
-description = '读取一个数字,根据 Lua 的转换文法返回浮点数或整数。'
-``````````
-name = 'mode'
-enum = '"*a"'
-description = '从当前位置开始读取整个文件。'
-``````````
-name = 'mode'
-enum = '"*l"'
-description = '读取一行并忽略行结束标记。'
-``````````
-name = 'mode'
-code = 'number'
-description = '读取一个不超过这个数量字节数的字符串。'
-
-["lines Lua 5.3"]
-description = [[
-------
-```lua
-for c in io.lines(filename, ...) do
- body
-end
-```
-]]
-[[.enums]]
-name = 'mode'
-enum = '"n"'
-description = '读取一个数字,根据 Lua 的转换文法返回浮点数或整数。'
-``````````
-name = 'mode'
-enum = '"a"'
-description = '从当前位置开始读取整个文件。'
-``````````
-name = 'mode'
-enum = '"l"'
-description = '读取一行并忽略行结束标记。'
-``````````
-name = 'mode'
-enum = '"L"'
-description = '读取一行并保留行结束标记。'
-``````````
-name = 'mode'
-code = 'number'
-description = '读取一个不超过这个数量字节数的字符串。'
-
-["lines LuaJIT"]
-description = [[
-------
-```lua
-for c in io.lines(filename, ...) do
- body
-end
-```
-]]
-[[.enums]]
-name = 'mode'
-enum = '"*n"'
-description = '读取一个数字,根据 Lua 的转换文法返回浮点数或整数。'
-``````````
-name = 'mode'
-enum = '"*a"'
-description = '从当前位置开始读取整个文件。'
-``````````
-name = 'mode'
-enum = '"*l"'
-description = '读取一行并忽略行结束标记。'
-``````````
-name = 'mode'
-enum = '"*L"'
-description = '读取一行并保留行结束标记。'
-``````````
-name = 'mode'
-code = 'number'
-description = '读取一个不超过这个数量字节数的字符串。'
-
-[open]
-description = '用字符串 `mode` 指定的模式打开一个文件。'
-[[.enums]]
-name = 'mode'
-enum = '"r"'
-description = '读模式。'
-``````````
-name = 'mode'
-enum = '"w"'
-description = '写模式。'
-``````````
-name = 'mode'
-enum = '"a"'
-description = '追加模式。'
-``````````
-name = 'mode'
-enum = '"r+"'
-description = '更新模式,所有之前的数据都保留。'
-``````````
-name = 'mode'
-enum = '"w+"'
-description = '更新模式,所有之前的数据都删除。'
-``````````
-name = 'mode'
-enum = '"a+"'
-description = '追加更新模式,所有之前的数据都保留,只允许在文件尾部做写入。'
-
-[output]
-description = '设置 `file` 为默认输出文件。'
-
-[popen]
-description = '用一个分离进程开启程序 `prog` 。'
-[[.enums]]
-name = 'mode'
-enum = '"r"'
-description = '从这个程序中读取数据。'
-``````````
-name = 'mode'
-enum = '"w"'
-description = '向这个程序写入输入。'
-
-["read Lua 5.1"]
-description = '读文件 `file`, 指定的格式决定了要读什么。'
-[[.enums]]
-name = 'mode'
-enum = '"*n"'
-description = '读取一个数字,根据 Lua 的转换文法返回浮点数或整数。'
-``````````
-name = 'mode'
-enum = '"*a"'
-description = '从当前位置开始读取整个文件。'
-``````````
-name = 'mode'
-enum = '"*l"'
-description = '读取一行并忽略行结束标记。'
-``````````
-name = 'mode'
-code = 'number'
-description = '读取一个不超过这个数量字节数的字符串。'
-
-["read Lua 5.3"]
-description = '读文件 `file`, 指定的格式决定了要读什么。'
-[[.enums]]
-name = 'mode'
-enum = '"n"'
-description = '读取一个数字,根据 Lua 的转换文法返回浮点数或整数。'
-``````````
-name = 'mode'
-enum = '"a"'
-description = '从当前位置开始读取整个文件。'
-``````````
-name = 'mode'
-enum = '"l"'
-description = '读取一行并忽略行结束标记。'
-``````````
-name = 'mode'
-enum = '"L"'
-description = '读取一行并保留行结束标记。'
-``````````
-name = 'mode'
-code = 'number'
-description = '读取一个不超过这个数量字节数的字符串。'
-
-["read LuaJIT"]
-description = '读文件 `file`, 指定的格式决定了要读什么。'
-[[.enums]]
-name = 'mode'
-enum = '"*n"'
-description = '读取一个数字,根据 Lua 的转换文法返回浮点数或整数。'
-``````````
-name = 'mode'
-enum = '"*a"'
-description = '从当前位置开始读取整个文件。'
-``````````
-name = 'mode'
-enum = '"*l"'
-description = '读取一行并忽略行结束标记。'
-``````````
-name = 'mode'
-enum = '"*L"'
-description = '读取一行并保留行结束标记。'
-``````````
-name = 'mode'
-code = 'number'
-description = '读取一个不超过这个数量字节数的字符串。'
-
-[tmpfile]
-description = '如果成功,返回一个临时文件的句柄。'
-
-[type]
-description = '检查 `obj` 是否是合法的文件句柄。'
-[[.enums]]
-name = 'type'
-enum = '"file"'
-description = '是一个打开的文件句柄。'
-``````````
-name = 'type'
-enum = '"closed file"'
-description = '是一个关闭的文件句柄。'
-``````````
-name = 'type'
-code = 'nil'
-description = '不是文件句柄。'
-
-[write]
-description = '将参数的值逐个写入默认输出文件。'
diff --git a/server-beta/locale/zh-CN/libs/@lua/math.lni b/server-beta/locale/zh-CN/libs/@lua/math.lni
deleted file mode 100644
index fba72360..00000000
--- a/server-beta/locale/zh-CN/libs/@lua/math.lni
+++ /dev/null
@@ -1,132 +0,0 @@
-[abs]
-description = '返回 `x` 的绝对值。'
-
-[acos]
-description = '返回 `x` 的反余弦值(用弧度表示)。'
-
-[asin]
-description = '返回 `x` 的反正弦值(用弧度表示)。'
-
-["atan Lua 5.1"]
-description = '返回 `x` 的反正切值(用弧度表示)。'
-
-["atan Lua 5.3"]
-description = '返回 `y/x` 的反正切值(用弧度表示)。'
-
-[atan2]
-description = '返回 `y/x` 的反正切值(用弧度表示)。'
-
-[ceil]
-description = '返回不小于 `x` 的最小整数值。'
-
-[cos]
-description = '返回 `x` 的余弦(假定参数是弧度)。'
-
-[cosh]
-description = '返回 `x` 的双曲余弦(假定参数是弧度)。'
-
-[deg]
-description = '将角 `x` 从弧度转换为角度。'
-
-[exp]
-description = '返回 `e^x` 的值 (e 为自然对数的底)。'
-
-[floor]
-description = '返回不大于 `x` 的最大整数值。'
-
-[fmod]
-description = '返回 `x` 除以 `y`,将商向零圆整后的余数。'
-
-[frexp]
-description = '将 `x` 分解为尾数与指数,返回值符合 `x = m * (2 ^ e)` 。`e` 是一个整数,`m` 是 [0.5, 1) 之间的规格化小数 (`x` 为0时 `m` 为0)。'
-
-[huge]
-description = '一个比任何数字值都大的浮点数。'
-
-[ldexp]
-description = '返回 `m * (2 ^ e)` 。'
-
-[log]
-description = '返回以指定底的 `x` 的对数。'
-
-['log Lua 5.1']
-description = '返回 `x` 的自然对数。'
-
-[log10]
-description = '返回 `x` 的以10为底的对数。'
-
-[max]
-description = '返回参数中最大的值, 大小由 Lua 操作 `<` 决定。'
-
-[maxinteger]
-description = '最大值的整数。'
-
-[min]
-description = '返回参数中最小的值, 大小由 Lua 操作 `<` 决定。'
-
-[mininteger]
-description = '最小值的整数。'
-
-[modf]
-description = '返回 `x` 的整数部分和小数部分。'
-
-[pi]
-description = '*π* 的值。'
-
-[pow]
-description = '返回 `x ^ y` 。'
-
-[rad]
-description = '将角 `x` 从角度转换为弧度。'
-
-[random]
-description = [[
-* `math.random()`: 返回 [0,1) 区间内一致分布的浮点伪随机数。
-* `math.random(n)`: 返回 [1, n] 区间内一致分布的整数伪随机数。
-* `math.random(m, n)`: 返回 [m, n] 区间内一致分布的整数伪随机数。
-]]
-
-[randomseed]
-description = '把 `x` 设为伪随机数发生器的“种子”: 相同的种子产生相同的随机数列。'
-
-["randomseed Lua 5.4"]
-description = [[
-* `math.randomseed(x, y)`: 将 `x` 与 `y` 连接为128位的种子来重新初始化伪随机生成器。
-* `math.randomseed(x)`: 等同于 `math.randomseed(x, 0)` 。
-* `math.randomseed()`: Generates a seed with a weak attempt for randomness.
-]]
-
-[sin]
-description = '返回 `x` 的正弦值(假定参数是弧度)。'
-
-[sinh]
-description = '返回 `x` 的双曲正弦值(假定参数是弧度)。'
-
-[sqrt]
-description = '返回 `x` 的平方根。'
-
-[tan]
-description = '返回 `x` 的正切值(假定参数是弧度)。'
-
-[tanh]
-description = '返回 `x` 的双曲正切值(假定参数是弧度)。'
-
-[tointeger]
-description = '如果 `x` 可以转换为一个整数, 返回该整数。'
-
-[type]
-[[.enums]]
-name = 'type'
-enum = '"integer"'
-description = '`x` 是一个整数。'
-``````````
-name = 'type'
-enum = '"float"'
-description = '`x` 是一个浮点数。'
-``````````
-name = 'type'
-code = 'nil'
-description = '`x` 不是一个数字。'
-
-[ult]
-description = '如果整数 `m` 和 `n` 以无符号整数形式比较, `m` 在 `n` 之下,返回布尔真否则返回假。'
diff --git a/server-beta/locale/zh-CN/libs/@lua/os.lni b/server-beta/locale/zh-CN/libs/@lua/os.lni
deleted file mode 100644
index e3702667..00000000
--- a/server-beta/locale/zh-CN/libs/@lua/os.lni
+++ /dev/null
@@ -1,38 +0,0 @@
-[clock]
-description = '返回程序使用的按秒计 CPU 时间的近似值。'
-
-[data]
-description = '返回一个包含日期及时刻的字符串或表。 格式化方法取决于所给字符串 `format`。'
-
-[difftime]
-description = '返回以秒计算的时刻 `t1` 到 `t2` 的差值。'
-
-[execute]
-description = '调用系统解释器执行 `command`。'
-
-['execute Lua 5.1']
-description = '调用系统解释器执行 `command`。'
-
-[exit]
-description = '调用 ISO C 函数 `exit` 终止宿主程序。'
-
-['exit Lua 5.1']
-description = '调用 C 函数 `exit` 终止宿主程序。'
-
-[getenv]
-description = '返回进程环境变量 `varname` 的值。'
-
-[remove]
-description = '删除指定名字的文件。'
-
-[rename]
-description = '将名字为 `oldname` 的文件或目录更名为 `newname`。'
-
-[setlocale]
-description = '设置程序的当前区域。'
-
-[time]
-description = '当不传参数时,返回当前时刻。 如果传入一张表,就返回由这张表表示的时刻。'
-
-[tmpname]
-description = '返回一个可用于临时文件的文件名字符串。'
diff --git a/server-beta/locale/zh-CN/libs/@lua/package.lni b/server-beta/locale/zh-CN/libs/@lua/package.lni
deleted file mode 100644
index 209a9dc1..00000000
--- a/server-beta/locale/zh-CN/libs/@lua/package.lni
+++ /dev/null
@@ -1,29 +0,0 @@
-[config]
-description = '一个描述有一些为包管理准备的编译期配置信息的串。'
-
-[cpath]
-description = '这个路径被 `require` 在 C 加载器中做搜索时用到。'
-
-[loaded]
-description = '用于 `require` 控制哪些模块已经被加载的表。'
-
-[loaders]
-description = '用于 `require` 控制如何加载模块的表。'
-
-[loadlib]
-description = '让宿主程序动态链接 C 库 `libname` 。'
-
-[path]
-description = '这个路径被 `require` 在 Lua 加载器中做搜索时用到。'
-
-[preload]
-description = '保存有一些特殊模块的加载器。'
-
-[searchers]
-description = '用于 `require` 控制如何加载模块的表。'
-
-[searchpath]
-description = '在指定 `path` 中搜索指定的 `name` 。'
-
-[seeall]
-description = '给 `module` 设置一个元表,该元表的 `__index` 域为全局环境,这样模块便会继承全局环境的值。可作为 `module` 函数的选项。'
diff --git a/server-beta/locale/zh-CN/libs/@lua/string.lni b/server-beta/locale/zh-CN/libs/@lua/string.lni
deleted file mode 100644
index 6aa78cce..00000000
--- a/server-beta/locale/zh-CN/libs/@lua/string.lni
+++ /dev/null
@@ -1,61 +0,0 @@
-[byte]
-description = '返回字符 `s[i]`, `s[i+1]`, ... ,`s[j]` 的内部数字编码。'
-
-[char]
-description = '接收零或更多的整数。 返回和参数数量相同长度的字符串。 其中每个字符的内部编码值等于对应的参数值。'
-
-[dump]
-description = '返回包含有以二进制方式表示的(一个 *二进制代码块* )指定函数的字符串。'
-
-[find]
-description = '查找第一个字符串中匹配到的 [`pattern`](https://cloudwu.github.io/lua53doc/manual.html#6.4.1)。'
-
-[format]
-description = '返回不定数量参数的格式化版本,格式化串为第一个参数。'
-
-[gmatch]
-description = [[
-----------
-```lua
-s = "hello world from Lua"
-for w in string.gmatch(s, "%a+") do
- print(w)
-end
-```
-]]
-
-[gsub]
-description = '将字符串中,所有的(或是在 `n` 给出时的前 `n` 个) [`pattern`](https://cloudwu.github.io/lua53doc/manual.html#6.4.1) 都替换成 `repl` ,并返回其副本。'
-
-[len]
-description = '返回其长度。'
-
-[lower]
-description = '将其中的大写字符都转为小写后返回其副本。'
-
-[match]
-description = '在字符串中找到第一个能用 [`pattern`](https://cloudwu.github.io/lua53doc/manual.html#6.4.1) 匹配到的部分。'
-
-[pack]
-description = '返回一个打包了(即以二进制形式序列化) `v1`, `v2` 等值的二进制字符串。 字符串 [`fmt`](https://cloudwu.github.io/lua53doc/manual.html#6.4.2) 为打包格式。'
-
-[packsize]
-description = '返回以指定格式用 `string.pack` 打包的字符串的长度。'
-
-[rep]
-description = '返回 `n` 个字符串 `s` 以字符串 `sep` 为分割符连在一起的字符串。'
-
-['rep Lua 5.1']
-description = '返回 `n` 个字符串 `s` 连在一起的字符串。'
-
-[reverse]
-description = '返回字符串的翻转串。'
-
-[sub]
-description = '返回字符串的子串, 该子串从 `i` 开始到 `j` 为止。'
-
-[unpack]
-description = '返回以格式 [`fmt`](https://cloudwu.github.io/lua53doc/manual.html#6.4.2) 打包在字符串中的值。'
-
-[upper]
-description = '接收一个字符串,将其中的小写字符都转为大写后返回其副本。'
diff --git a/server-beta/locale/zh-CN/libs/@lua/table.lni b/server-beta/locale/zh-CN/libs/@lua/table.lni
deleted file mode 100644
index 9163d8e5..00000000
--- a/server-beta/locale/zh-CN/libs/@lua/table.lni
+++ /dev/null
@@ -1,39 +0,0 @@
-[concat]
-description = [[
---------
-```lua
-return list[i]..sep..list[i+1] ··· sep..list[j]
-```
-]]
-
-[insert]
-description = '在 `list` 的位置 `pos` 处插入元素 `value`。'
-
-[maxn]
-description = '返回给定表的最大正数索引,如果表没有正数索引,则返回零。'
-
-[move]
-description = [[
-将元素从表 `a1` 移到表 `a2`。
-```lua
-a2[t],··· = a1[f],···,a1[e]
-return a2
-```
-]]
-
-[pack]
-description = '返回用所有参数以键 `1`,`2`, 等填充的新表, 并将 `"n"` 这个域设为参数的总数。'
-
-[remove]
-description = '移除 `list` 中 `pos` 位置上的元素,并返回这个被移除的值。'
-
-[sort]
-description = '在表内从 `list[1]` 到 `list[#list]` *原地* 对其间元素按指定次序排序。'
-
-[unpack]
-description = [[
--------
-```lua
-return list[i], list[i+1], ···, list[j]
-```
-]]
diff --git a/server-beta/locale/zh-CN/libs/@lua/utf8.lni b/server-beta/locale/zh-CN/libs/@lua/utf8.lni
deleted file mode 100644
index 0af45153..00000000
--- a/server-beta/locale/zh-CN/libs/@lua/utf8.lni
+++ /dev/null
@@ -1,24 +0,0 @@
-[char]
-description = '接收零或多个整数, 将每个整数转换成对应的 UTF-8 字节序列,并返回这些序列连接到一起的字符串。'
-
-[charpattern]
-description = '用于精确匹配到一个 UTF-8 字节序列的模式,它假定处理的对象是一个合法的 UTF-8 字符串。'
-
-[codes]
-description = [[
---------
-```lua
-for p, c in utf8.codes(s) do
- body
-end
-```
-]]
-
-[codepoint]
-description = '以整数形式返回 `s` 中 从位置 `i` 到 `j` 间(包括两端) 所有字符的编号。'
-
-[len]
-description = '返回字符串 `s` 中 从位置 `i` 到 `j` 间 (包括两端) UTF-8 字符的个数。'
-
-[offset]
-description = '返回编码在 `s` 中的第 `n` 个字符的开始位置(按字节数) (从位置 `i` 处开始统计)。'
diff --git a/server-beta/locale/zh-CN/script.lni b/server-beta/locale/zh-CN/script.lni
deleted file mode 100644
index b441db5a..00000000
--- a/server-beta/locale/zh-CN/script.lni
+++ /dev/null
@@ -1,122 +0,0 @@
-DIAG_LINE_ONLY_SPACE = '只有空格的空行。'
-DIAG_LINE_POST_SPACE = '后置空格。'
-DIAG_UNUSED_LOCAL = '未使用的局部变量 `{}`。'
-DIAG_UNDEF_GLOBAL = '未定义的全局变量 `{}`。'
-DIAG_UNDEF_ENV_CHILD = '未定义的变量 `{}`(重载了 `_ENV` )。'
-DIAG_UNDEF_FENV_CHILD = '未定义的变量 `{}`(处于模块中)。'
-DIAG_GLOBAL_IN_NIL_ENV = '不能使用全局变量(`_ENV`被置为了`nil`)。'
-DIAG_GLOBAL_IN_NIL_FENV = '不能使用全局变量(模块被置为了`nil`)。'
-DIAG_UNUSED_LABEL = '未使用的标签 `{}`。'
-DIAG_UNUSED_FUNCTION = '未使用的函数。'
-DIAG_UNUSED_VARARG = '未使用的不定参数。'
-DIAG_REDEFINED_LOCAL = '重定义局部变量 `{}`。'
-DIAG_DUPLICATE_INDEX = '重复的索引 `{}`。'
-DIAG_DUPLICATE_METHOD = '重复的方法 `{}`。'
-DIAG_PREVIOUS_CALL = '解析为了上一行的函数调用。你可能需要在前面加一个 `;`。'
-DIAG_OVER_MAX_ARGS = '函数只接收 {:d} 个参数,但你传了 {:d} 个。'
-DIAG_OVER_MAX_VALUES = '只有 {} 个变量,但你设置了 {} 个值。'
-DIAG_AMBIGUITY_1 = '会优先运算 `{}`,你可能需要加个括号。'
-DIAG_LOWERCASE_GLOBAL = '首字母小写的全局变量'
-DIAG_EMPTY_BLOCK = '空代码块'
-DIAG_DIAGNOSTICS = 'Lua 诊断'
-DIAG_SYNTAX_CHECK = 'Lua 语法检查'
-DIAG_NEED_VERSION = '在 {} 中是合法的,当前为 {}'
-DIAG_DEFINED_VERSION = '在 {} 中有定义,当前为 {}'
-DIAG_DEFINED_CUSTOM = '在 {} 中有定义'
-DIAG_DUPLICATE_CLASS = '重复定义的 Class 。'
-DIAG_UNDEFINED_CLASS = '未定义的 Class 。'
-DIAG_CYCLIC_EXTENDS = '循环继承。'
-DIAG_INEXISTENT_PARAM = '不存在的参数。'
-DIAG_DUPLICATE_PARAM = '重复的参数。'
-DIAG_NEED_CLASS = '需要先定义 Class 。'
-DIAG_DUPLICATE_FIELD = '重复定义的 field 。'
-DIAG_SET_CONST = '不能对常量赋值。'
-
-MWS_NOT_SUPPORT = '{} 目前还不支持多工作目录,我可能需要重启才能支持新的工作目录...'
-MWS_RESTART = '重启'
-MWS_NOT_COMPLETE = '工作目录还没有准备好,你可以稍后再试一下...'
-MWS_COMPLETE = '工作目录准备好了,你可以再试一下了...'
-MWS_MAX_PRELOAD = '预加载文件数已达上限({}),你需要手动打开需要加载的文件。'
-MWS_UCONFIG_FAILED = '用户配置保存失败。'
-MWS_UCONFIG_UPDATED = '用户配置已更新。'
-MWS_WCONFIG_UPDATED = '工作区配置已更新。'
-
-PARSER_CRASH = '语法解析崩溃了!遗言:{}'
-PARSER_UNKNOWN = '未知语法错误...'
-PARSER_MISS_NAME = '缺少名称。'
-PARSER_UNKNOWN_SYMBOL = '未知符号`{symbol}`。'
-PARSER_MISS_SYMBOL = '缺少符号`{symbol}`。'
-PARSER_MISS_ESC_X = '必须是2个16进制字符。'
-PARSER_UTF8_SMALL = '至少有1个字符。'
-PARSER_UTF8_MAX = '必须在 {min} 与 {max} 之间。'
-PARSER_ERR_ESC = '错误的转义符。'
-PARSER_MUST_X16 = '必须是16进制字符。'
-PARSER_MISS_EXPONENT = '缺少指数部分。'
-PARSER_MISS_EXP = '缺少表达式。'
-PARSER_MISS_FIELD = '缺少域名。'
-PARSER_MISS_METHOD = '缺少方法名。'
-PARSER_ARGS_AFTER_DOTS = '`...`必须是最后一个参数。'
-PARSER_KEYWORD = '关键字无法作为名称。'
-PARSER_EXP_IN_ACTION = '表达式不能独立存在。'
-PARSER_BREAK_OUTSIDE = '`break`必须在循环内部。'
-PARSER_MALFORMED_NUMBER = '无法构成有效数字。'
-PARSER_ACTION_AFTER_RETURN = '`return`之后不能再执行代码。'
-PARSER_ACTION_AFTER_BREAK = '`break`之后不能再执行代码。'
-PARSER_NO_VISIBLE_LABEL = '标签`{label}`不可见。'
-PARSER_REDEFINE_LABEL = '标签`{label}`重复定义。'
-PARSER_UNSUPPORT_SYMBOL = '{version} 不支持该符号。'
-PARSER_UNEXPECT_DOTS = '`...`只能在不定参函数中使用。'
-PARSER_UNKNOWN_TAG = '不支持的标签。'
-PARSER_MULTI_TAG = '只能设置一个标签。'
-PARSER_UNEXPECT_LFUNC_NAME = '局部函数只能使用标识符作为名称。'
-PARSER_ERR_LCOMMENT_END = '应使用`{symbol}`来关闭多行注释。'
-PARSER_ERR_C_LONG_COMMENT = 'Lua应使用`--[[ ]]`来进行多行注释。'
-PARSER_ERR_LSTRING_END = '应使用`{symbol}`来关闭长字符串。'
-PARSER_ERR_ASSIGN_AS_EQ = '应使用`=`来进行赋值操作。'
-PARSER_ERR_EQ_AS_ASSIGN = '应使用`==`来进行等于判断。'
-PARSER_ERR_UEQ = '应使用`~=`来进行不等于判断。'
-PARSER_ERR_THEN_AS_DO = '应使用`then`。'
-PARSER_ERR_DO_AS_THEN = '应使用`do`。'
-PARSER_MISS_END = '缺少对应的`end`。'
-PARSER_ERR_COMMENT_PREFIX = 'Lua应使用`--`来进行注释。'
-PARSER_MISS_SEP_IN_TABLE = '需要用`,`或`;`进行分割。'
-
-SYMBOL_ANONYMOUS = '<匿名函数>'
-
-HOVER_DOCUMENT_LUA51 = '[查看文档](http://www.lua.org/manual/5.1/manual.html#pdf-{})'
-HOVER_DOCUMENT_LUA52 = '[查看文档](http://www.lua.org/manual/5.2/manual.html#pdf-{})'
-HOVER_DOCUMENT_LUA53 = '[查看文档](http://cloudwu.github.io/lua53doc/manual.html#pdf-{})'
-HOVER_DOCUMENT_LUA54 = '[查看文档](http://www.lua.org/work/doc/manual.html#pdf-{})'
-HOVER_DOCUMENT_LUAJIT = '[查看文档](http://www.lua.org/manual/5.1/manual.html#pdf-{})'
-HOVER_MULTI_PROTOTYPE = '({} 个原型)'
-
-ACTION_DISABLE_DIAG = '禁用诊断({})。'
-ACTION_MARK_GLOBAL = '标记 `{}` 为已定义的全局变量。'
-ACTION_REMOVE_SPACE = '清除所有后置空格。'
-ACTION_ADD_SEMICOLON = '添加 `;` 。'
-ACTION_ADD_BRACKETS = '添加括号。'
-ACTION_RUNTIME_VERSION = '修改运行版本为 {} 。'
-ACTION_OPEN_LIBRARY = '加载 {} 中的全局变量。'
-ACTION_ADD_DO_END = '添加 `do ... end` 。'
-ACTION_FIX_LCOMMENT_END = '改用正确的多行注释关闭符号。'
-ACTION_ADD_LCOMMENT_END = '关闭多行注释。'
-ACTION_FIX_C_LONG_COMMENT = '修改为 Lua 的多行注释格式。'
-ACTION_FIX_LSTRING_END = '改用正确的长字符串关闭符号。'
-ACTION_ADD_LSTRING_END = '关闭长字符串。'
-ACTION_FIX_ASSIGN_AS_EQ = '改为 `=` 。'
-ACTION_FIX_EQ_AS_ASSIGN = '改为 `==` 。'
-ACTION_FIX_UEQ = '改为 `~=` 。'
-ACTION_FIX_THEN_AS_DO = '改为 `then` 。'
-ACTION_FIX_DO_AS_THEN = '改为 `do` 。'
-ACTION_ADD_END = '添加 `end` (根据缩进推测添加位置)。'
-ACTION_FIX_COMMENT_PREFIX = '改为 `--` 。'
-
-COMMAND_DISABLE_DIAG = '禁用诊断'
-COMMAND_MARK_GLOBAL = '标记全局变量'
-COMMAND_REMOVE_SPACE = '清除所有后置空格'
-COMMAND_ADD_BRACKETS = '添加括号'
-COMMAND_RUNTIME_VERSION = '修改运行版本'
-COMMAND_OPEN_LIBRARY = '加载第三方库中的全局变量'
-
-DEBUG_MEMORY_LEAK = '{} 很抱歉发生了严重的内存泄漏,语言服务即将重启。'
-DEBUG_RESTART_NOW = '立即重启'
diff --git a/server-beta/macOS/bin/bee.so b/server-beta/macOS/bin/bee.so
deleted file mode 100644
index ae01a0ec..00000000
--- a/server-beta/macOS/bin/bee.so
+++ /dev/null
Binary files differ
diff --git a/server-beta/macOS/bin/lni.so b/server-beta/macOS/bin/lni.so
deleted file mode 100644
index ba414472..00000000
--- a/server-beta/macOS/bin/lni.so
+++ /dev/null
Binary files differ
diff --git a/server-beta/macOS/bin/lpeglabel.so b/server-beta/macOS/bin/lpeglabel.so
deleted file mode 100644
index df8df7fe..00000000
--- a/server-beta/macOS/bin/lpeglabel.so
+++ /dev/null
Binary files differ
diff --git a/server-beta/macOS/bin/lua-beta b/server-beta/macOS/bin/lua-beta
deleted file mode 100644
index c5315b49..00000000
--- a/server-beta/macOS/bin/lua-beta
+++ /dev/null
Binary files differ
diff --git a/server-beta/main.lua b/server-beta/main.lua
deleted file mode 100644
index c674cab6..00000000
--- a/server-beta/main.lua
+++ /dev/null
@@ -1,19 +0,0 @@
-local currentPath = debug.getinfo(1, 'S').source:sub(2)
-local rootPath = currentPath:gsub('[/\\]*[^/\\]-$', '')
-dofile(rootPath .. '/platform.lua')
-local fs = require 'bee.filesystem'
-ROOT = fs.path(rootPath)
-LANG = LANG or 'en-US'
-
-collectgarbage('generational', 10, 50)
-
-log = require 'log'
-log.init(ROOT, ROOT / 'log' / 'service.log')
-log.info('Lua Lsp startup, root: ', ROOT)
-log.debug('ROOT:', ROOT:string())
-
---loadfile(rootPath .. '/debugger.lua')'wait'
-dofile(rootPath .. '/debugger.lua')
-
-local service = require 'service'
-service.start()
diff --git a/server-beta/platform.lua b/server-beta/platform.lua
deleted file mode 100644
index ed754afc..00000000
--- a/server-beta/platform.lua
+++ /dev/null
@@ -1,28 +0,0 @@
-local currentPath = debug.getinfo(1, 'S').source:sub(2)
-local rootPath = currentPath:gsub('[^/\\]-$', '')
-if package.loadlib(rootPath .. 'Windows/bin/bee.dll', 'luaopen_bee_platform') then
- if rootPath == '' then
- rootPath = '.\\'
- else
- rootPath = rootPath:gsub('/', '\\')
- end
- package.cpath = rootPath .. 'Windows\\bin\\?.dll'
- package.path = rootPath .. 'src\\?.lua'
- .. ';' .. rootPath .. 'src\\?\\init.lua'
-elseif package.loadlib(rootPath .. 'macOS/bin/bee.so', 'luaopen_bee_platform') then
- if rootPath == '' then
- rootPath = './'
- end
- package.cpath = rootPath .. 'macOS/bin/?.so'
- package.path = rootPath .. 'src/?.lua'
- .. ';' .. rootPath .. 'src/?/init.lua'
-elseif package.loadlib(rootPath .. 'Linux/bin/bee.so', 'luaopen_bee_platform') then
- if rootPath == '' then
- rootPath = './'
- end
- package.cpath = rootPath .. 'Linux/bin/?.so'
- package.path = rootPath .. 'src/?.lua'
- .. ';' .. rootPath .. 'src/?/init.lua'
-else
- error([[It doesn't seem to support your OS, please let me know at https://github.com/sumneko/lua-language-server/issues]])
-end
diff --git a/server-beta/src/await.lua b/server-beta/src/await.lua
deleted file mode 100644
index 5a960e96..00000000
--- a/server-beta/src/await.lua
+++ /dev/null
@@ -1,100 +0,0 @@
-local timer = require 'timer'
-
----@class await
-local m = {}
-m.type = 'await'
-
-m.coTracker = setmetatable({}, { __mode = 'k' })
-m.delayQueue = {}
-m.delayQueueIndex = 1
-
---- 设置错误处理器
----@param errHandle function {comment = '当有错误发生时,会以错误堆栈为参数调用该函数'}
-function m.setErrorHandle(errHandle)
- m.errorHandle = errHandle
-end
-
-function m.checkResult(co, ...)
- local suc, err = ...
- if not suc and m.errorHandle then
- m.errorHandle(debug.traceback(co, err))
- end
- return ...
-end
-
---- 创建一个任务
-function m.create(callback, ...)
- local co = coroutine.create(callback)
- m.coTracker[co] = true
- return m.checkResult(co, coroutine.resume(co, ...))
-end
-
---- 休眠一段时间
----@param time number
-function m.sleep(time, getVersion)
- if not coroutine.isyieldable() then
- if m.errorHandle then
- m.errorHandle(debug.traceback('Cannot yield'))
- end
- return
- end
- local version = getVersion and getVersion()
- local co = coroutine.running()
- timer.wait(time, function ()
- if version == (getVersion and getVersion()) then
- return m.checkResult(co, coroutine.resume(co))
- else
- coroutine.close(co)
- end
- end)
- return coroutine.yield(getVersion)
-end
-
---- 等待直到唤醒
----@param callback function
-function m.wait(callback, ...)
- if not coroutine.isyieldable() then
- return
- end
- local co = coroutine.running()
- callback(function (...)
- return m.checkResult(co, coroutine.resume(co, ...))
- end)
- return coroutine.yield(...)
-end
-
---- 延迟
-function m.delay(getVersion)
- if not coroutine.isyieldable() then
- return
- end
- local co = coroutine.running()
- local version = getVersion and getVersion()
- m.delayQueue[#m.delayQueue+1] = function ()
- if version == (getVersion and getVersion()) then
- return m.checkResult(co, coroutine.resume(co))
- else
- coroutine.close(co)
- end
- end
- return coroutine.yield()
-end
-
---- 步进
-function m.step()
- local waker = m.delayQueue[m.delayQueueIndex]
- if waker then
- m.delayQueue[m.delayQueueIndex] = false
- m.delayQueueIndex = m.delayQueueIndex + 1
- waker()
- return true
- else
- for i = 1, #m.delayQueue do
- m.delayQueue[i] = nil
- end
- m.delayQueueIndex = 1
- return false
- end
-end
-
-return m
diff --git a/server-beta/src/brave/brave.lua b/server-beta/src/brave/brave.lua
deleted file mode 100644
index 08909074..00000000
--- a/server-beta/src/brave/brave.lua
+++ /dev/null
@@ -1,70 +0,0 @@
-local thread = require 'bee.thread'
-
----@class pub_brave
-local m = {}
-m.type = 'brave'
-m.ability = {}
-m.queue = {}
-
---- 注册成为勇者
-function m.register(id)
- m.taskpad = thread.channel('taskpad' .. id)
- m.waiter = thread.channel('waiter' .. id)
- m.id = id
-
- if #m.queue > 0 then
- for _, info in ipairs(m.queue) do
- m.waiter:push(info.name, info.params)
- end
- end
- m.queue = nil
-
- m.start()
-end
-
---- 注册能力
-function m.on(name, callback)
- m.ability[name] = callback
-end
-
---- 报告
-function m.push(name, params)
- if m.waiter then
- m.waiter:push(name, params)
- else
- m.queue[#m.queue+1] = {
- name = name,
- params = params,
- }
- end
-end
-
---- 开始找工作
-function m.start()
- m.push('mem', collectgarbage 'count')
- while true do
- local suc, name, id, params = m.taskpad:pop()
- if not suc then
- -- 找不到工作的勇者,只好睡觉
- thread.sleep(0.001)
- goto CONTINUE
- end
- local ability = m.ability[name]
- -- TODO
- if not ability then
- m.waiter:push(id)
- log.error('Brave can not handle this work: ' .. name)
- goto CONTINUE
- end
- local ok, res = xpcall(ability, log.error, params)
- if ok then
- m.waiter:push(id, res)
- else
- m.waiter:push(id)
- end
- m.push('mem', collectgarbage 'count')
- ::CONTINUE::
- end
-end
-
-return m
diff --git a/server-beta/src/brave/init.lua b/server-beta/src/brave/init.lua
deleted file mode 100644
index 24c2e412..00000000
--- a/server-beta/src/brave/init.lua
+++ /dev/null
@@ -1,4 +0,0 @@
-local brave = require 'brave.brave'
-require 'brave.work'
-
-return brave
diff --git a/server-beta/src/brave/log.lua b/server-beta/src/brave/log.lua
deleted file mode 100644
index cd27cd55..00000000
--- a/server-beta/src/brave/log.lua
+++ /dev/null
@@ -1,52 +0,0 @@
-local brave = require 'brave'
-
-local tablePack = table.pack
-local tostring = tostring
-local tableConcat = table.concat
-local debugTraceBack = debug.traceback
-local debugGetInfo = debug.getinfo
-
-_ENV = nil
-
-local function pushLog(level, ...)
- local t = tablePack(...)
- for i = 1, t.n do
- t[i] = tostring(t[i])
- end
- local str = tableConcat(t, '\t', 1, t.n)
- if level == 'error' then
- str = str .. '\n' .. debugTraceBack(nil, 3)
- end
- local info = debugGetInfo(3, 'Sl')
- brave.push('log', {
- level = level,
- msg = str,
- src = info.source,
- line = info.currentline,
- })
- return str
-end
-
-local m = {}
-
-function m.info(...)
- pushLog('info', ...)
-end
-
-function m.debug(...)
- pushLog('debug', ...)
-end
-
-function m.trace(...)
- pushLog('trace', ...)
-end
-
-function m.warn(...)
- pushLog('warn', ...)
-end
-
-function m.error(...)
- pushLog('error', ...)
-end
-
-return m
diff --git a/server-beta/src/brave/work.lua b/server-beta/src/brave/work.lua
deleted file mode 100644
index dba27808..00000000
--- a/server-beta/src/brave/work.lua
+++ /dev/null
@@ -1,55 +0,0 @@
-local brave = require 'brave.brave'
-local jsonrpc = require 'jsonrpc'
-local parser = require 'parser'
-local fs = require 'bee.filesystem'
-local furi = require 'file-uri'
-local util = require 'utility'
-
-brave.on('loadProto', function ()
- while true do
- local proto = jsonrpc.decode(io.read, log.error)
- if proto then
- brave.push('proto', proto)
- end
- end
-end)
-
-brave.on('compile', function (text)
- local state, err = parser:compile(text, 'lua', 'Lua 5.4')
- if not state then
- log.error(err)
- return
- end
- local lines = parser:lines(text)
- return {
- root = state.root,
- value = state.value,
- errs = state.errs,
- lines = lines,
- }
-end)
-
-brave.on('listDirectory', function (uri)
- local path = fs.path(furi.decode(uri))
- local uris = {}
- for child in path:list_directory() do
- local childUri = furi.encode(child:string())
- uris[#uris+1] = childUri
- end
- return uris
-end)
-
-brave.on('isDirectory', function (uri)
- local path = fs.path(furi.decode(uri))
- return fs.is_directory(path)
-end)
-
-brave.on('loadFile', function (uri)
- local filename = furi.decode(uri)
- return util.loadFile(filename)
-end)
-
-brave.on('saveFile', function (params)
- local filename = furi.decode(params.uri)
- return util.saveFile(filename, params.text)
-end)
diff --git a/server-beta/src/config.lua b/server-beta/src/config.lua
deleted file mode 100644
index 758402b0..00000000
--- a/server-beta/src/config.lua
+++ /dev/null
@@ -1,193 +0,0 @@
-local util = require 'utility'
-local DiagnosticDefaultSeverity = require 'define.DiagnosticDefaultSeverity'
-
-local m = {}
-m.version = 0
-
-local function Boolean(v)
- if type(v) == 'boolean' then
- return true, v
- end
- return false
-end
-
-local function Integer(v)
- if type(v) == 'number' then
- return true, math.floor(v)
- end
- return false
-end
-
-local function String(v)
- return true, tostring(v)
-end
-
-local function Str2Hash(sep)
- return function (v)
- if type(v) == 'string' then
- local t = {}
- for s in v:gmatch('[^'..sep..']+') do
- t[s] = true
- end
- return true, t
- end
- if type(v) == 'table' then
- local t = {}
- for _, s in ipairs(v) do
- if type(s) == 'string' then
- t[s] = true
- end
- end
- return true, t
- end
- return false
- end
-end
-
-local function Array(checker)
- return function (tbl)
- if type(tbl) ~= 'table' then
- return false
- end
- local t = {}
- for _, v in ipairs(tbl) do
- local ok, result = checker(v)
- if ok then
- t[#t+1] = result
- end
- end
- return true, t
- end
-end
-
-local function Hash(keyChecker, valueChecker)
- return function (tbl)
- if type(tbl) ~= 'table' then
- return false
- end
- local t = {}
- for k, v in pairs(tbl) do
- local ok1, key = keyChecker(k)
- local ok2, value = valueChecker(v)
- if ok1 and ok2 then
- t[key] = value
- end
- end
- if not next(t) then
- return false
- end
- return true, t
- end
-end
-
-local function Or(...)
- local checkers = {...}
- return function (obj)
- for _, checker in ipairs(checkers) do
- local suc, res = checker(obj)
- if suc then
- return true, res
- end
- end
- return false
- end
-end
-
-local ConfigTemplate = {
- runtime = {
- version = {'Lua 5.3', String},
- library = {{}, Str2Hash ';'},
- path = {{
- "?.lua",
- "?/init.lua",
- "?/?.lua"
- }, Array(String)},
- },
- diagnostics = {
- enable = {true, Boolean},
- globals = {{}, Str2Hash ';'},
- disable = {{}, Str2Hash ';'},
- severity = {
- util.deepCopy(DiagnosticDefaultSeverity),
- Hash(String, String),
- },
- },
- workspace = {
- ignoreDir = {{}, Str2Hash ';'},
- ignoreSubmodules= {true, Boolean},
- useGitIgnore = {true, Boolean},
- maxPreload = {300, Integer},
- preloadFileSize = {100, Integer},
- library = {{}, Hash(
- String,
- Or(Boolean, Array(String))
- )}
- },
- completion = {
- enable = {true, Boolean},
- callSnippet = {'Both', String},
- keywordSnippet = {'Both', String},
- },
- plugin = {
- enable = {false, Boolean},
- path = {'.vscode/lua-plugin/*.lua', String},
- },
-}
-
-local OtherTemplate = {
- associations = {{}, Hash(String, String)},
- exclude = {{}, Hash(String, Boolean)},
-}
-
-local function init()
- if m.config then
- return
- end
-
- m.config = {}
- for c, t in pairs(ConfigTemplate) do
- m.config[c] = {}
- for k, info in pairs(t) do
- m.config[c][k] = info[1]
- end
- end
-
- m.other = {}
- for k, info in pairs(OtherTemplate) do
- m.other[k] = info[1]
- end
-end
-
-function m.setConfig(config, other)
- m.version = m.version + 1
- xpcall(function ()
- for c, t in pairs(config) do
- for k, v in pairs(t) do
- local region = ConfigTemplate[c]
- if region then
- local info = region[k]
- local suc, v = info[2](v)
- if suc then
- m.config[c][k] = v
- else
- m.config[c][k] = info[1]
- end
- end
- end
- end
- for k, v in pairs(other) do
- local info = OtherTemplate[k]
- local suc, v = info[2](v)
- if suc then
- m.other[k] = v
- else
- m.other[k] = info[1]
- end
- end
- log.debug('Config update: ', util.dump(m.config), util.dump(m.other))
- end, log.error)
-end
-
-init()
-
-return m
diff --git a/server-beta/src/core/definition.lua b/server-beta/src/core/definition.lua
deleted file mode 100644
index 865fc7cb..00000000
--- a/server-beta/src/core/definition.lua
+++ /dev/null
@@ -1,105 +0,0 @@
-local guide = require 'parser.guide'
-local workspace = require 'workspace'
-local files = require 'files'
-local vm = require 'vm'
-
-local function findDef(source, callback)
- if source.type ~= 'local'
- and source.type ~= 'getlocal'
- and source.type ~= 'setlocal'
- and source.type ~= 'setglobal'
- and source.type ~= 'getglobal'
- and source.type ~= 'field'
- and source.type ~= 'method'
- and source.type ~= 'string'
- and source.type ~= 'number'
- and source.type ~= 'boolean'
- and source.type ~= 'goto' then
- return
- end
- vm.eachDef(source, function (info)
- if info.mode == 'declare'
- or info.mode == 'set'
- or info.mode == 'return' then
- local src = info.source
- local root = guide.getRoot(src)
- local uri = root.uri
- if src.type == 'setfield'
- or src.type == 'getfield'
- or src.type == 'tablefield' then
- callback(src.field, uri)
- elseif src.type == 'setindex'
- or src.type == 'getindex'
- or src.type == 'tableindex' then
- callback(src.index, uri)
- elseif src.type == 'getmethod'
- or src.type == 'setmethod' then
- callback(src.method, uri)
- else
- callback(src, uri)
- end
- end
- end)
-end
-
-local function checkRequire(source, offset, callback)
- if source.type ~= 'call' then
- return
- end
- local func = source.node
- local pathSource = source.args and source.args[1]
- if not pathSource then
- return
- end
- if not guide.isContain(pathSource, offset) then
- return
- end
- local literal = guide.getLiteral(pathSource)
- if type(literal) ~= 'string' then
- return
- end
- local name = func.special
- if name == 'require' then
- local result = workspace.findUrisByRequirePath(literal, true)
- for _, uri in ipairs(result) do
- callback(uri)
- end
- elseif name == 'dofile'
- or name == 'loadfile' then
- local result = workspace.findUrisByFilePath(literal, true)
- for _, uri in ipairs(result) do
- callback(uri)
- end
- end
-end
-
-return function (uri, offset)
- local ast = files.getAst(uri)
- if not ast then
- return nil
- end
- local results = {}
- guide.eachSourceContain(ast.ast, offset, function (source)
- checkRequire(source, offset, function (uri)
- results[#results+1] = {
- uri = files.getOriginUri(uri),
- source = source,
- target = {
- start = 0,
- finish = 0,
- }
- }
- end)
- findDef(source, function (target, uri)
- results[#results+1] = {
- target = target,
- uri = files.getOriginUri(uri),
- source = source,
- }
- end)
- end)
- if #results == 0 then
- return nil
- end
- return results
-end
diff --git a/server-beta/src/core/diagnostics/ambiguity-1.lua b/server-beta/src/core/diagnostics/ambiguity-1.lua
deleted file mode 100644
index 37815fb5..00000000
--- a/server-beta/src/core/diagnostics/ambiguity-1.lua
+++ /dev/null
@@ -1,69 +0,0 @@
-local files = require 'files'
-local guide = require 'parser.guide'
-local lang = require 'language'
-
-local opMap = {
- ['+'] = true,
- ['-'] = true,
- ['*'] = true,
- ['/'] = true,
- ['//'] = true,
- ['^'] = true,
- ['<<'] = true,
- ['>>'] = true,
- ['&'] = true,
- ['|'] = true,
- ['~'] = true,
- ['..'] = true,
-}
-
-local literalMap = {
- ['number'] = true,
- ['boolean'] = true,
- ['string'] = true,
- ['table'] = true,
-}
-
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
- local text = files.getText(uri)
- guide.eachSourceType(ast.ast, 'binary', function (source)
- if source.op.type ~= 'or' then
- return
- end
- local first = source[1]
- local second = source[2]
- -- a + (b or 0) --> (a + b) or 0
- do
- if opMap[first.op and first.op.type]
- and first.type ~= 'unary'
- and not second.op
- and literalMap[second.type]
- and not literalMap[first[2].type]
- then
- callback {
- start = source.start,
- finish = source.finish,
- message = lang.script('DIAG_AMBIGUITY_1', text:sub(first.start, first.finish))
- }
- end
- end
- -- (a or 0) + c --> a or (0 + c)
- do
- if opMap[second.op and second.op.type]
- and second.type ~= 'unary'
- and not first.op
- and literalMap[second[1].type]
- then
- callback {
- start = source.start,
- finish = source.finish,
- message = lang.script('DIAG_AMBIGUITY_1', text:sub(second.start, second.finish))
- }
- end
- end
- end)
-end
diff --git a/server-beta/src/core/diagnostics/duplicate-index.lua b/server-beta/src/core/diagnostics/duplicate-index.lua
deleted file mode 100644
index 76b1c958..00000000
--- a/server-beta/src/core/diagnostics/duplicate-index.lua
+++ /dev/null
@@ -1,62 +0,0 @@
-local files = require 'files'
-local guide = require 'parser.guide'
-local lang = require 'language'
-local define = require 'proto.define'
-
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
-
- guide.eachSourceType(ast.ast, 'table', function (source)
- local mark = {}
- for _, obj in ipairs(source) do
- if obj.type == 'tablefield'
- or obj.type == 'tableindex' then
- local name = guide.getKeyName(obj)
- if name then
- if not mark[name] then
- mark[name] = {}
- end
- mark[name][#mark[name]+1] = obj.field or obj.index
- end
- end
- end
-
- for name, defs in pairs(mark) do
- local sname = name:match '^.|(.+)$'
- if #defs > 1 and sname then
- local related = {}
- for i = 1, #defs do
- local def = defs[i]
- related[i] = {
- start = def.start,
- finish = def.finish,
- uri = uri,
- }
- end
- for i = 1, #defs - 1 do
- local def = defs[i]
- callback {
- start = def.start,
- finish = def.finish,
- related = related,
- message = lang.script('DIAG_DUPLICATE_INDEX', sname),
- level = define.DiagnosticSeverity.Hint,
- tags = { define.DiagnosticTag.Unnecessary },
- }
- end
- for i = #defs, #defs do
- local def = defs[i]
- callback {
- start = def.start,
- finish = def.finish,
- related = related,
- message = lang.script('DIAG_DUPLICATE_INDEX', sname),
- }
- end
- end
- end
- end)
-end
diff --git a/server-beta/src/core/diagnostics/emmy-lua.lua b/server-beta/src/core/diagnostics/emmy-lua.lua
deleted file mode 100644
index b3d19c21..00000000
--- a/server-beta/src/core/diagnostics/emmy-lua.lua
+++ /dev/null
@@ -1,3 +0,0 @@
-return function ()
-
-end
diff --git a/server-beta/src/core/diagnostics/empty-block.lua b/server-beta/src/core/diagnostics/empty-block.lua
deleted file mode 100644
index 2024f4e3..00000000
--- a/server-beta/src/core/diagnostics/empty-block.lua
+++ /dev/null
@@ -1,49 +0,0 @@
-local files = require 'files'
-local guide = require 'parser.guide'
-local lang = require 'language'
-local define = require 'proto.define'
-
--- 检查空代码块
--- 但是排除忙等待(repeat/while)
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
-
- guide.eachSourceType(ast.ast, 'if', function (source)
- for _, block in ipairs(source) do
- if #block > 0 then
- return
- end
- end
- callback {
- start = source.start,
- finish = source.finish,
- tags = { define.DiagnosticTag.Unnecessary },
- message = lang.script.DIAG_EMPTY_BLOCK,
- }
- end)
- guide.eachSourceType(ast.ast, 'loop', function (source)
- if #source > 0 then
- return
- end
- callback {
- start = source.start,
- finish = source.finish,
- tags = { define.DiagnosticTag.Unnecessary },
- message = lang.script.DIAG_EMPTY_BLOCK,
- }
- end)
- guide.eachSourceType(ast.ast, 'in', function (source)
- if #source > 0 then
- return
- end
- callback {
- start = source.start,
- finish = source.finish,
- tags = { define.DiagnosticTag.Unnecessary },
- message = lang.script.DIAG_EMPTY_BLOCK,
- }
- end)
-end
diff --git a/server-beta/src/core/diagnostics/global-in-nil-env.lua b/server-beta/src/core/diagnostics/global-in-nil-env.lua
deleted file mode 100644
index 9a0d4f35..00000000
--- a/server-beta/src/core/diagnostics/global-in-nil-env.lua
+++ /dev/null
@@ -1,66 +0,0 @@
-local files = require 'files'
-local guide = require 'parser.guide'
-local lang = require 'language'
-
--- TODO: 检查路径是否可达
-local function mayRun(path)
- return true
-end
-
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
- local root = guide.getRoot(ast.ast)
- local env = guide.getENV(root)
-
- local nilDefs = {}
- if not env.ref then
- return
- end
- for _, ref in ipairs(env.ref) do
- if ref.type == 'setlocal' then
- if ref.value and ref.value.type == 'nil' then
- nilDefs[#nilDefs+1] = ref
- end
- end
- end
-
- if #nilDefs == 0 then
- return
- end
-
- local function check(source)
- local node = source.node
- if node.tag == '_ENV' then
- local ok
- for _, nilDef in ipairs(nilDefs) do
- local mode, pathA = guide.getPath(nilDef, source)
- if mode == 'before'
- and mayRun(pathA) then
- ok = nilDef
- break
- end
- end
- if ok then
- callback {
- start = source.start,
- finish = source.finish,
- uri = uri,
- message = lang.script.DIAG_GLOBAL_IN_NIL_ENV,
- related = {
- {
- start = ok.start,
- finish = ok.finish,
- uri = uri,
- }
- }
- }
- end
- end
- end
-
- guide.eachSourceType(ast.ast, 'getglobal', check)
- guide.eachSourceType(ast.ast, 'setglobal', check)
-end
diff --git a/server-beta/src/core/diagnostics/init.lua b/server-beta/src/core/diagnostics/init.lua
deleted file mode 100644
index 0d523f26..00000000
--- a/server-beta/src/core/diagnostics/init.lua
+++ /dev/null
@@ -1,41 +0,0 @@
-local files = require 'files'
-local define = require 'proto.define'
-local config = require 'config'
-local await = require 'await'
-
-local function check(uri, name, level, results)
- if config.config.diagnostics.disable[name] then
- return
- end
- level = config.config.diagnostics.severity[name] or level
- local severity = define.DiagnosticSeverity[level]
- local clock = os.clock()
- require('core.diagnostics.' .. name)(uri, function (result)
- result.level = severity or result.level
- result.code = name
- results[#results+1] = result
- end, name)
- local passed = os.clock() - clock
- if passed >= 0.5 then
- log.warn(('Diagnostics [%s] @ [%s] takes [%.3f] sec!'):format(name, uri, passed))
- await.delay()
- end
-end
-
-return function (uri)
- local ast = files.getAst(uri)
- if not ast then
- return nil
- end
- local results = {}
-
- for name, level in pairs(define.DiagnosticDefaultSeverity) do
- check(uri, name, level, results)
- end
-
- if #results == 0 then
- return nil
- end
-
- return results
-end
diff --git a/server-beta/src/core/diagnostics/lowercase-global.lua b/server-beta/src/core/diagnostics/lowercase-global.lua
deleted file mode 100644
index bc48e1e6..00000000
--- a/server-beta/src/core/diagnostics/lowercase-global.lua
+++ /dev/null
@@ -1,39 +0,0 @@
-local files = require 'files'
-local guide = require 'parser.guide'
-local lang = require 'language'
-local config = require 'config'
-local library = require 'library'
-
--- 不允许定义首字母小写的全局变量(很可能是拼错或者漏删)
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
-
- local definedGlobal = {}
- for name in pairs(config.config.diagnostics.globals) do
- definedGlobal[name] = true
- end
- for name in pairs(library.global) do
- definedGlobal[name] = true
- end
-
- guide.eachSourceType(ast.ast, 'setglobal', function (source)
- local name = guide.getName(source)
- if definedGlobal[name] then
- return
- end
- local first = name:match '%w'
- if not first then
- return
- end
- if first:match '%l' then
- callback {
- start = source.start,
- finish = source.finish,
- message = lang.script.DIAG_LOWERCASE_GLOBAL,
- }
- end
- end)
-end
diff --git a/server-beta/src/core/diagnostics/newfield-call.lua b/server-beta/src/core/diagnostics/newfield-call.lua
deleted file mode 100644
index 75681cbc..00000000
--- a/server-beta/src/core/diagnostics/newfield-call.lua
+++ /dev/null
@@ -1,37 +0,0 @@
-local files = require 'files'
-local guide = require 'parser.guide'
-local lang = require 'language'
-
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
-
- local lines = files.getLines(uri)
- local text = files.getText(uri)
-
- guide.eachSourceType(ast.ast, 'table', function (source)
- for i = 1, #source do
- local field = source[i]
- if field.type == 'call' then
- local func = field.node
- local args = field.args
- if args then
- local funcLine = guide.positionOf(lines, func.finish)
- local argsLine = guide.positionOf(lines, args.start)
- if argsLine > funcLine then
- callback {
- start = field.start,
- finish = field.finish,
- message = lang.script('DIAG_PREFIELD_CALL'
- , text:sub(func.start, func.finish)
- , text:sub(args.start, args.finish)
- )
- }
- end
- end
- end
- end
- end)
-end
diff --git a/server-beta/src/core/diagnostics/newline-call.lua b/server-beta/src/core/diagnostics/newline-call.lua
deleted file mode 100644
index cb318380..00000000
--- a/server-beta/src/core/diagnostics/newline-call.lua
+++ /dev/null
@@ -1,38 +0,0 @@
-local files = require 'files'
-local guide = require 'parser.guide'
-local lang = require 'language'
-
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
- local lines = files.getLines(uri)
-
- guide.eachSourceType(ast.ast, 'call', function (source)
- local node = source.node
- local args = source.args
- if not args then
- return
- end
-
- -- 必须有其他人在继续使用当前对象
- if not source.next then
- return
- end
-
- local nodeRow = guide.positionOf(lines, node.finish)
- local argRow = guide.positionOf(lines, args.start)
- if nodeRow == argRow then
- return
- end
-
- if #args == 1 then
- callback {
- start = args.start,
- finish = args.finish,
- message = lang.script.DIAG_PREVIOUS_CALL,
- }
- end
- end)
-end
diff --git a/server-beta/src/core/diagnostics/redefined-local.lua b/server-beta/src/core/diagnostics/redefined-local.lua
deleted file mode 100644
index f6176794..00000000
--- a/server-beta/src/core/diagnostics/redefined-local.lua
+++ /dev/null
@@ -1,32 +0,0 @@
-local files = require 'files'
-local guide = require 'parser.guide'
-local lang = require 'language'
-
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
- guide.eachSourceType(ast.ast, 'local', function (source)
- local name = source[1]
- if name == '_'
- or name == '_ENV' then
- return
- end
- local exist = guide.getLocal(source, name, source.start-1)
- if exist then
- callback {
- start = source.start,
- finish = source.finish,
- message = lang.script('DIAG_REDEFINED_LOCAL', name),
- related = {
- {
- start = exist.start,
- finish = exist.finish,
- uri = uri,
- }
- },
- }
- end
- end)
-end
diff --git a/server-beta/src/core/diagnostics/redundant-parameter.lua b/server-beta/src/core/diagnostics/redundant-parameter.lua
deleted file mode 100644
index ec14188e..00000000
--- a/server-beta/src/core/diagnostics/redundant-parameter.lua
+++ /dev/null
@@ -1,102 +0,0 @@
-local files = require 'files'
-local guide = require 'parser.guide'
-local vm = require 'vm'
-local lang = require 'language'
-local define = require 'proto.define'
-local await = require 'await'
-
-local function countLibraryArgs(source)
- local func = vm.getLibrary(source)
- if not func then
- return nil
- end
- local result = 0
- if not func.args then
- return result
- end
- if func.args[#func.args].type == '...' then
- return math.maxinteger
- end
- result = result + #func.args
- return result
-end
-
-local function countCallArgs(source)
- local result = 0
- if not source.args then
- return 0
- end
- if source.node and source.node.type == 'getmethod' then
- result = result + 1
- end
- result = result + #source.args
- return result
-end
-
-local function countFuncArgs(source)
- local result = 0
- if not source.args then
- return result
- end
- if source.args[#source.args].type == '...' then
- return math.maxinteger
- end
- if source.parent and source.parent.type == 'setmethod' then
- result = result + 1
- end
- result = result + #source.args
- return result
-end
-
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
-
- guide.eachSourceType(ast.ast, 'call', function (source)
- local callArgs = countCallArgs(source)
- if callArgs == 0 then
- return
- end
-
- await.delay(function ()
- return files.globalVersion
- end)
-
- local func = source.node
- local funcArgs
- vm.eachDef(func, function (info)
- if info.mode == 'value' then
- local src = info.source
- if src.type == 'function' then
- local args = countFuncArgs(src)
- if not funcArgs or args > funcArgs then
- funcArgs = args
- end
- end
- end
- end)
-
- funcArgs = funcArgs or countLibraryArgs(func)
- if not funcArgs then
- return
- end
-
- local delta = callArgs - funcArgs
- if delta <= 0 then
- return
- end
- for i = #source.args - delta + 1, #source.args do
- local arg = source.args[i]
- if arg then
- callback {
- start = arg.start,
- finish = arg.finish,
- tags = { define.DiagnosticTag.Unnecessary },
- message = lang.script('DIAG_OVER_MAX_ARGS', funcArgs, callArgs)
- }
- end
- end
- end)
-end
diff --git a/server-beta/src/core/diagnostics/redundant-value.lua b/server-beta/src/core/diagnostics/redundant-value.lua
deleted file mode 100644
index be483448..00000000
--- a/server-beta/src/core/diagnostics/redundant-value.lua
+++ /dev/null
@@ -1,24 +0,0 @@
-local files = require 'files'
-local define = require 'proto.define'
-local lang = require 'language'
-
-return function (uri, callback, code)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
-
- local diags = ast.diags[code]
- if not diags then
- return
- end
-
- for _, info in ipairs(diags) do
- callback {
- start = info.start,
- finish = info.finish,
- tags = { define.DiagnosticTag.Unnecessary },
- message = lang.script('DIAG_OVER_MAX_VALUES', info.max, info.passed)
- }
- end
-end
diff --git a/server-beta/src/core/diagnostics/trailing-space.lua b/server-beta/src/core/diagnostics/trailing-space.lua
deleted file mode 100644
index e54a6e60..00000000
--- a/server-beta/src/core/diagnostics/trailing-space.lua
+++ /dev/null
@@ -1,55 +0,0 @@
-local files = require 'files'
-local lang = require 'language'
-local guide = require 'parser.guide'
-
-local function isInString(ast, offset)
- local result = false
- guide.eachSourceType(ast, 'string', function (source)
- if offset >= source.start and offset <= source.finish then
- result = true
- end
- end)
- return result
-end
-
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
- local text = files.getText(uri)
- local lines = files.getLines(uri)
- for i = 1, #lines do
- local start = lines[i].start
- local range = lines[i].range
- local lastChar = text:sub(range, range)
- if lastChar ~= ' ' and lastChar ~= '\t' then
- goto NEXT_LINE
- end
- if isInString(ast.ast, range) then
- goto NEXT_LINE
- end
- local first = start
- for n = range - 1, start, -1 do
- local char = text:sub(n, n)
- if char ~= ' ' and char ~= '\t' then
- first = n + 1
- break
- end
- end
- if first == start then
- callback {
- start = first,
- finish = range,
- message = lang.script.DIAG_LINE_ONLY_SPACE,
- }
- else
- callback {
- start = first,
- finish = range,
- message = lang.script.DIAG_LINE_POST_SPACE,
- }
- end
- ::NEXT_LINE::
- end
-end
diff --git a/server-beta/src/core/diagnostics/undefined-env-child.lua b/server-beta/src/core/diagnostics/undefined-env-child.lua
deleted file mode 100644
index df096cb8..00000000
--- a/server-beta/src/core/diagnostics/undefined-env-child.lua
+++ /dev/null
@@ -1,32 +0,0 @@
-local files = require 'files'
-local guide = require 'parser.guide'
-local vm = require 'vm'
-local lang = require 'language'
-
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
- -- 再遍历一次 getglobal ,找出 _ENV 被重载的情况
- guide.eachSourceType(ast.ast, 'getglobal', function (source)
- -- 单独验证自己是否在重载过的 _ENV 中有定义
- if source.node.tag == '_ENV' then
- return
- end
- local setInENV = vm.eachRef(source, function (info)
- if info.mode == 'set' then
- return true
- end
- end)
- if setInENV then
- return
- end
- local key = source[1]
- callback {
- start = source.start,
- finish = source.finish,
- message = lang.script('DIAG_UNDEF_ENV_CHILD', key),
- }
- end)
-end
diff --git a/server-beta/src/core/diagnostics/undefined-global.lua b/server-beta/src/core/diagnostics/undefined-global.lua
deleted file mode 100644
index ed81ced3..00000000
--- a/server-beta/src/core/diagnostics/undefined-global.lua
+++ /dev/null
@@ -1,63 +0,0 @@
-local files = require 'files'
-local vm = require 'vm'
-local lang = require 'language'
-local library = require 'library'
-local config = require 'config'
-
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
-
- local globalCache = {}
-
- -- 遍历全局变量,检查所有没有 mode['set'] 的全局变量
- local globals = vm.getGlobals(ast.ast)
- for key, infos in pairs(globals) do
- if infos.mode['set'] == true then
- goto CONTINUE
- end
- if globalCache[key] then
- goto CONTINUE
- end
- local skey = key and key:match '^s|(.+)$'
- if not skey then
- goto CONTINUE
- end
- if library.global[skey] then
- goto CONTINUE
- end
- if config.config.diagnostics.globals[skey] then
- goto CONTINUE
- end
- if globalCache[key] == nil then
- local uris = files.findGlobals(key)
- for i = 1, #uris do
- local destAst = files.getAst(uris[i])
- local destGlobals = vm.getGlobals(destAst.ast)
- if destGlobals[key] and destGlobals[key].mode['set'] then
- globalCache[key] = true
- goto CONTINUE
- end
- end
- end
- globalCache[key] = false
- local message = lang.script('DIAG_UNDEF_GLOBAL', skey)
- local otherVersion = library.other[skey]
- local customVersion = library.custom[skey]
- if otherVersion then
- message = ('%s(%s)'):format(message, lang.script('DIAG_DEFINED_VERSION', table.concat(otherVersion, '/'), config.config.runtime.version))
- elseif customVersion then
- message = ('%s(%s)'):format(message, lang.script('DIAG_DEFINED_CUSTOM', table.concat(customVersion, '/')))
- end
- for _, info in ipairs(infos) do
- callback {
- start = info.source.start,
- finish = info.source.finish,
- message = message,
- }
- end
- ::CONTINUE::
- end
-end
diff --git a/server-beta/src/core/diagnostics/unused-function.lua b/server-beta/src/core/diagnostics/unused-function.lua
deleted file mode 100644
index 6c53cdf7..00000000
--- a/server-beta/src/core/diagnostics/unused-function.lua
+++ /dev/null
@@ -1,45 +0,0 @@
-local files = require 'files'
-local guide = require 'parser.guide'
-local vm = require 'vm'
-local define = require 'proto.define'
-local lang = require 'language'
-local await = require 'await'
-
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
- -- 只检查局部函数与全局函数
- guide.eachSourceType(ast.ast, 'function', function (source)
- local parent = source.parent
- if not parent then
- return
- end
- if parent.type ~= 'local'
- and parent.type ~= 'setlocal'
- and parent.type ~= 'setglobal' then
- return
- end
- local hasSet
- local hasGet = vm.eachRef(source, function (info)
- if info.mode == 'get' then
- return true
- elseif info.mode == 'set'
- or info.mode == 'declare' then
- hasSet = true
- end
- end)
- if not hasGet and hasSet then
- callback {
- start = source.start,
- finish = source.finish,
- tags = { define.DiagnosticTag.Unnecessary },
- message = lang.script.DIAG_UNUSED_FUNCTION,
- }
- end
- await.delay(function ()
- return files.globalVersion
- end)
- end)
-end
diff --git a/server-beta/src/core/diagnostics/unused-label.lua b/server-beta/src/core/diagnostics/unused-label.lua
deleted file mode 100644
index e6d998ba..00000000
--- a/server-beta/src/core/diagnostics/unused-label.lua
+++ /dev/null
@@ -1,22 +0,0 @@
-local files = require 'files'
-local guide = require 'parser.guide'
-local define = require 'proto.define'
-local lang = require 'language'
-
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
-
- guide.eachSourceType(ast.ast, 'label', function (source)
- if not source.ref then
- callback {
- start = source.start,
- finish = source.finish,
- tags = { define.DiagnosticTag.Unnecessary },
- message = lang.script('DIAG_UNUSED_LABEL', source[1]),
- }
- end
- end)
-end
diff --git a/server-beta/src/core/diagnostics/unused-local.lua b/server-beta/src/core/diagnostics/unused-local.lua
deleted file mode 100644
index 22b2e16b..00000000
--- a/server-beta/src/core/diagnostics/unused-local.lua
+++ /dev/null
@@ -1,46 +0,0 @@
-local files = require 'files'
-local guide = require 'parser.guide'
-local define = require 'proto.define'
-local lang = require 'language'
-
-local function hasGet(loc)
- if not loc.ref then
- return false
- end
- for _, ref in ipairs(loc.ref) do
- if ref.type == 'getlocal' then
- if not ref.next then
- return true
- end
- local nextType = ref.next.type
- if nextType ~= 'setmethod'
- and nextType ~= 'setfield'
- and nextType ~= 'setindex' then
- return true
- end
- end
- end
- return false
-end
-
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
- guide.eachSourceType(ast.ast, 'local', function (source)
- local name = source[1]
- if name == '_'
- or name == '_ENV' then
- return
- end
- if not hasGet(source) then
- callback {
- start = source.start,
- finish = source.finish,
- tags = { define.DiagnosticTag.Unnecessary },
- message = lang.script('DIAG_UNUSED_LOCAL', name),
- }
- end
- end)
-end
diff --git a/server-beta/src/core/diagnostics/unused-vararg.lua b/server-beta/src/core/diagnostics/unused-vararg.lua
deleted file mode 100644
index 74cc08e7..00000000
--- a/server-beta/src/core/diagnostics/unused-vararg.lua
+++ /dev/null
@@ -1,31 +0,0 @@
-local files = require 'files'
-local guide = require 'parser.guide'
-local define = require 'proto.define'
-local lang = require 'language'
-
-return function (uri, callback)
- local ast = files.getAst(uri)
- if not ast then
- return
- end
-
- guide.eachSourceType(ast.ast, 'function', function (source)
- local args = source.args
- if not args then
- return
- end
-
- for _, arg in ipairs(args) do
- if arg.type == '...' then
- if not arg.ref then
- callback {
- start = arg.start,
- finish = arg.finish,
- tags = { define.DiagnosticTag.Unnecessary },
- message = lang.script.DIAG_UNUSED_VARARG,
- }
- end
- end
- end
- end)
-end
diff --git a/server-beta/src/core/highlight.lua b/server-beta/src/core/highlight.lua
deleted file mode 100644
index 61e3f91a..00000000
--- a/server-beta/src/core/highlight.lua
+++ /dev/null
@@ -1,230 +0,0 @@
-local guide = require 'parser.guide'
-local files = require 'files'
-local vm = require 'vm'
-local define = require 'proto.define'
-
-local function ofLocal(source, callback)
- callback(source)
- if source.ref then
- for _, ref in ipairs(source.ref) do
- callback(ref)
- end
- end
-end
-
-local function ofField(source, uri, callback)
- local parent = source.parent
- if not parent then
- return
- end
- local myKey = guide.getKeyName(source)
- if parent.type == 'tableindex'
- or parent.type == 'tablefield' then
- local tbl = parent.parent
- vm.eachField(tbl, function (info)
- if info.key ~= myKey then
- return
- end
- local destUri = guide.getRoot(info.source).uri
- if destUri ~= uri then
- return
- end
- callback(info.source)
- end)
- else
- vm.eachField(parent.node, function (info)
- if info.key ~= myKey then
- return
- end
- local destUri = guide.getRoot(info.source).uri
- if destUri ~= uri then
- return
- end
- callback(info.source)
- end)
- end
-end
-
-local function ofIndex(source, uri, callback)
- local parent = source.parent
- if not parent then
- return
- end
- if parent.type == 'setindex'
- or parent.type == 'getindex'
- or parent.type == 'tableindex' then
- ofField(source, uri, callback)
- end
-end
-
-local function ofLabel(source, callback)
- vm.eachRef(source, function (info)
- callback(info.source)
- end)
-end
-
-local function find(source, uri, callback)
- if source.type == 'local' then
- ofLocal(source, callback)
- elseif source.type == 'getlocal'
- or source.type == 'setlocal' then
- ofLocal(source.node, callback)
- elseif source.type == 'field'
- or source.type == 'method' then
- ofField(source, uri, callback)
- elseif source.type == 'string'
- or source.type == 'boolean'
- or source.type == 'number' then
- ofIndex(source, uri, callback)
- callback(source)
- elseif source.type == 'nil' then
- callback(source)
- elseif source.type == 'goto'
- or source.type == 'label' then
- ofLabel(source, callback)
- end
-end
-
-local function checkInIf(source, text, offset)
- -- 检查 end
- local endA = source.finish - #'end' + 1
- local endB = source.finish
- if offset >= endA
- and offset <= endB
- and text:sub(endA, endB) == 'end' then
- return true
- end
- -- 检查每个子模块
- for _, block in ipairs(source) do
- for i = 1, #block.keyword, 2 do
- local start = block.keyword[i]
- local finish = block.keyword[i+1]
- if offset >= start and offset <= finish then
- return true
- end
- end
- end
- return false
-end
-
-local function makeIf(source, text, callback)
- -- end
- local endA = source.finish - #'end' + 1
- local endB = source.finish
- if text:sub(endA, endB) == 'end' then
- callback(endA, endB)
- end
- -- 每个子模块
- for _, block in ipairs(source) do
- for i = 1, #block.keyword, 2 do
- local start = block.keyword[i]
- local finish = block.keyword[i+1]
- callback(start, finish)
- end
- end
- return false
-end
-
-local function findKeyword(source, text, offset, callback)
- if source.type == 'do'
- or source.type == 'function'
- or source.type == 'loop'
- or source.type == 'in'
- or source.type == 'while'
- or source.type == 'repeat' then
- local ok
- for i = 1, #source.keyword, 2 do
- local start = source.keyword[i]
- local finish = source.keyword[i+1]
- if offset >= start and offset <= finish then
- ok = true
- break
- end
- end
- if ok then
- for i = 1, #source.keyword, 2 do
- local start = source.keyword[i]
- local finish = source.keyword[i+1]
- callback(start, finish)
- end
- end
- elseif source.type == 'if' then
- local ok = checkInIf(source, text, offset)
- if ok then
- makeIf(source, text, callback)
- end
- end
-end
-
-return function (uri, offset)
- local ast = files.getAst(uri)
- if not ast then
- return nil
- end
- local text = files.getText(uri)
- local results = {}
- local mark = {}
- guide.eachSourceContain(ast.ast, offset, function (source)
- find(source, uri, function (target)
- local kind
- if target.type == 'getfield' then
- target = target.field
- kind = define.DocumentHighlightKind.Read
- elseif target.type == 'setfield'
- or target.type == 'tablefield' then
- target = target.field
- kind = define.DocumentHighlightKind.Write
- elseif target.type == 'getmethod' then
- target = target.method
- kind = define.DocumentHighlightKind.Read
- elseif target.type == 'setmethod' then
- target = target.method
- kind = define.DocumentHighlightKind.Write
- elseif target.type == 'getindex' then
- target = target.index
- kind = define.DocumentHighlightKind.Read
- elseif target.type == 'setindex'
- or target.type == 'tableindex' then
- target = target.index
- kind = define.DocumentHighlightKind.Write
- elseif target.type == 'getlocal'
- or target.type == 'getglobal'
- or target.type == 'goto' then
- kind = define.DocumentHighlightKind.Read
- elseif target.type == 'setlocal'
- or target.type == 'local'
- or target.type == 'setglobal'
- or target.type == 'label' then
- kind = define.DocumentHighlightKind.Write
- elseif target.type == 'string'
- or target.type == 'boolean'
- or target.type == 'number'
- or target.type == 'nil' then
- kind = define.DocumentHighlightKind.Text
- else
- log.warn('Unknow target.type:', target.type)
- return
- end
- if mark[target] then
- return
- end
- mark[target] = true
- results[#results+1] = {
- start = target.start,
- finish = target.finish,
- kind = kind,
- }
- end)
- findKeyword(source, text, offset, function (start, finish)
- results[#results+1] = {
- start = start,
- finish = finish,
- kind = define.DocumentHighlightKind.Write
- }
- end)
- end)
- if #results == 0 then
- return nil
- end
- return results
-end
diff --git a/server-beta/src/core/hover/arg.lua b/server-beta/src/core/hover/arg.lua
deleted file mode 100644
index be344488..00000000
--- a/server-beta/src/core/hover/arg.lua
+++ /dev/null
@@ -1,20 +0,0 @@
-local guide = require 'parser.guide'
-local vm = require 'vm'
-
-local function asFunction(source)
- if not source.args then
- return ''
- end
- local args = {}
- for i = 1, #source.args do
- local arg = source.args[i]
- args[i] = ('%s: %s'):format(guide.getName(arg), vm.getType(arg))
- end
- return table.concat(args, ', ')
-end
-
-return function (source)
- if source.type == 'function' then
- return asFunction(source)
- end
-end
diff --git a/server-beta/src/core/hover/init.lua b/server-beta/src/core/hover/init.lua
deleted file mode 100644
index b99c14b2..00000000
--- a/server-beta/src/core/hover/init.lua
+++ /dev/null
@@ -1,56 +0,0 @@
-local files = require 'files'
-local guide = require 'parser.guide'
-local vm = require 'vm'
-local getLabel = require 'core.hover.label'
-
-local function getHoverAsFunction(source)
- local values = vm.getValue(source)
- local labels = {}
- for _, value in ipairs(values) do
- if value.type == 'function' then
- labels[#labels+1] = getLabel(value.source)
- end
- end
-
- local label = table.concat(labels, '\n')
- return {
- label = label,
- source = source,
- }
-end
-
-local function getHoverAsValue(source)
- local label = getLabel(source)
- return {
- label = label,
- source = source,
- }
-end
-
-local function getHover(source)
- local isFunction = vm.hasType(source, 'function')
- if isFunction then
- return getHoverAsFunction(source)
- else
- return getHoverAsValue(source)
- end
-end
-
-return function (uri, offset)
- local ast = files.getAst(uri)
- if not ast then
- return nil
- end
- local hover = guide.eachSourceContain(ast.ast, offset, function (source)
- if source.type == 'local'
- or source.type == 'setlocal'
- or source.type == 'getlocal'
- or source.type == 'setglobal'
- or source.type == 'getglobal'
- or source.type == 'field'
- or source.type == 'method' then
- return getHover(source)
- end
- end)
- return hover
-end
diff --git a/server-beta/src/core/hover/label.lua b/server-beta/src/core/hover/label.lua
deleted file mode 100644
index 72ce60f4..00000000
--- a/server-beta/src/core/hover/label.lua
+++ /dev/null
@@ -1,103 +0,0 @@
-local buildName = require 'core.hover.name'
-local buildArg = require 'core.hover.arg'
-local buildReturn = require 'core.hover.return'
-local buildTable = require 'core.hover.table'
-local vm = require 'vm'
-local util = require 'utility'
-
-local function asFunction(source)
- local name = buildName(source)
- local arg = buildArg(source)
- local rtn = buildReturn(source)
- local lines = {}
- lines[1] = ('function %s(%s)'):format(name, arg)
- lines[2] = rtn
- return table.concat(lines, '\n')
-end
-
-local function asLocal(source)
- local name = buildName(source)
- local type = vm.getType(source)
- local literal = vm.getLiteral(source)
- if type == 'table' then
- type = buildTable(source)
- end
- if literal == nil then
- return ('local %s: %s'):format(name, type)
- else
- return ('local %s: %s = %s'):format(name, type, util.viewLiteral(literal))
- end
-end
-
-local function asGlobal(source)
- local name = buildName(source)
- local type = vm.getType(source)
- local literal = vm.getLiteral(source)
- if type == 'table' then
- type = buildTable(source)
- end
- if literal == nil then
- return ('global %s: %s'):format(name, type)
- else
- return ('global %s: %s = %s'):format(name, type, util.viewLiteral(literal))
- end
-end
-
-local function isGlobalField(source)
- if source.type == 'field'
- or source.type == 'method' then
- source = source.parent
- end
- if source.type == 'setfield'
- or source.type == 'getfield'
- or source.type == 'setmethod'
- or source.type == 'getmethod'
- or source.type == 'tablefield' then
- local node = source.node
- if node.type == 'setglobal'
- or node.type == 'getglobal' then
- return true
- end
- return isGlobalField(node)
- else
- return false
- end
-end
-
-local function asField(source)
- if isGlobalField(source) then
- return asGlobal(source)
- end
- local name = buildName(source)
- local type = vm.getType(source)
- local literal = vm.getLiteral(source)
- if type == 'table' then
- type = buildTable(source)
- end
- if literal == nil then
- return ('field %s: %s'):format(name, type)
- else
- return ('field %s: %s = %s'):format(name, type, util.viewLiteral(literal))
- end
-end
-
-return function (source)
- if source.type == 'function' then
- return asFunction(source)
- elseif source.type == 'local'
- or source.type == 'getlocal'
- or source.type == 'setlocal' then
- return asLocal(source)
- elseif source.type == 'setglobal'
- or source.type == 'getglobal' then
- return asGlobal(source)
- elseif source.type == 'getfield'
- or source.type == 'setfield'
- or source.type == 'getmethod'
- or source.type == 'setmethod'
- or source.type == 'tablefield'
- or source.type == 'field'
- or source.type == 'method' then
- return asField(source)
- end
-end
diff --git a/server-beta/src/core/hover/name.lua b/server-beta/src/core/hover/name.lua
deleted file mode 100644
index a22a8b5a..00000000
--- a/server-beta/src/core/hover/name.lua
+++ /dev/null
@@ -1,64 +0,0 @@
-local guide = require 'parser.guide'
-local vm = require 'vm'
-
-local function asLocal(source)
- return guide.getName(source)
-end
-
-local function asMethod(source)
- local class = vm.eachField(source.node, function (info)
- if info.key == 's|type' or info.key == 's|__name' or info.key == 's|name' then
- if info.value and info.value.type == 'string' then
- return info.value[1]
- end
- end
- end)
- local node = class or guide.getName(source.node) or '?'
- local method = guide.getName(source)
- return ('%s:%s'):format(node, method)
-end
-
-local function asField(source)
- local class = vm.eachField(source.node, function (info)
- if info.key == 's|type' or info.key == 's|__name' or info.key == 's|name' then
- if info.value and info.value.type == 'string' then
- return info.value[1]
- end
- end
- end)
- local node = class or guide.getName(source.node) or '?'
- local method = guide.getName(source)
- return ('%s.%s'):format(node, method)
-end
-
-local function asGlobal(source)
- return guide.getName(source)
-end
-
-local function buildName(source)
- if source.type == 'local'
- or source.type == 'getlocal'
- or source.type == 'setlocal' then
- return asLocal(source) or ''
- end
- if source.type == 'setglobal'
- or source.type == 'getglobal' then
- return asGlobal(source) or ''
- end
- if source.type == 'setmethod'
- or source.type == 'getmethod' then
- return asMethod(source) or ''
- end
- if source.type == 'setfield'
- or source.tyoe == 'getfield'
- or source.type == 'tablefield' then
- return asField(source) or ''
- end
- local parent = source.parent
- if parent then
- return buildName(parent)
- end
- return ''
-end
-
-return buildName
diff --git a/server-beta/src/core/hover/return.lua b/server-beta/src/core/hover/return.lua
deleted file mode 100644
index c22626a6..00000000
--- a/server-beta/src/core/hover/return.lua
+++ /dev/null
@@ -1,34 +0,0 @@
-local guide = require 'parser.guide'
-local vm = require 'vm'
-
-local function asFunction(source)
- if not source.returns then
- return nil
- end
- local returns = {}
- for _, rtn in ipairs(source.returns) do
- for i = 1, #rtn do
- local values = vm.getValue(rtn[i])
- returns[#returns+1] = values
- end
- break
- end
- if #returns == 0 then
- return nil
- end
- local lines = {}
- for i = 1, #returns do
- if i == 1 then
- lines[i] = (' -> %s'):format(vm.viewType(returns[i]))
- else
- lines[i] = ('% 3d. %s'):format(i, returns[i])
- end
- end
- return table.concat(lines, '\n')
-end
-
-return function (source)
- if source.type == 'function' then
- return asFunction(source)
- end
-end
diff --git a/server-beta/src/core/hover/table.lua b/server-beta/src/core/hover/table.lua
deleted file mode 100644
index 9ed86692..00000000
--- a/server-beta/src/core/hover/table.lua
+++ /dev/null
@@ -1,35 +0,0 @@
-local vm = require 'vm'
-
-local function checkClass(source)
-end
-
-return function (source)
- local fields = {}
- local class
- vm.eachField(source, function (info)
- if info.key == 's|type' or info.key == 's|__name' or info.key == 's|name' then
- if info.value and info.value.type == 'string' then
- class = info.value[1]
- end
- end
- local type = vm.getType(info.source)
- fields[#fields+1] = ('%s'):format(type)
- end)
- local fieldsBuf
- if #fields == 0 then
- fieldsBuf = '{}'
- else
- local lines = {}
- lines[#lines+1] = '{'
- for _, field in ipairs(fields) do
- lines[#lines+1] = ' ' .. field
- end
- lines[#lines+1] = '}'
- fieldsBuf = table.concat(lines, '\n')
- end
- if class then
- return ('%s %s'):format(class, fieldsBuf)
- else
- return fieldsBuf
- end
-end
diff --git a/server-beta/src/core/reference.lua b/server-beta/src/core/reference.lua
deleted file mode 100644
index 7e265e97..00000000
--- a/server-beta/src/core/reference.lua
+++ /dev/null
@@ -1,84 +0,0 @@
-local guide = require 'parser.guide'
-local files = require 'files'
-local vm = require 'vm'
-
-local function isFunction(source, offset)
- if source.type ~= 'function' then
- return false
- end
- -- 必须点在 `function` 这个单词上才能查找函数引用
- return offset >= source.start and offset < source.start + #'function'
-end
-
-local function findRef(source, offset, callback)
- if source.type ~= 'local'
- and source.type ~= 'getlocal'
- and source.type ~= 'setlocal'
- and source.type ~= 'setglobal'
- and source.type ~= 'getglobal'
- and source.type ~= 'field'
- and source.type ~= 'tablefield'
- and source.type ~= 'method'
- and source.type ~= 'string'
- and source.type ~= 'number'
- and source.type ~= 'boolean'
- and source.type ~= 'goto'
- and source.type ~= 'label'
- and not isFunction(source, offset) then
- return
- end
- vm.eachRef(source, function (info)
- if info.mode == 'declare'
- or info.mode == 'set'
- or info.mode == 'get'
- or info.mode == 'return' then
- local src = info.source
- local root = guide.getRoot(src)
- local uri = root.uri
- if src.type == 'setfield'
- or src.type == 'getfield'
- or src.type == 'tablefield' then
- callback(src.field, uri)
- elseif src.type == 'setindex'
- or src.type == 'getindex'
- or src.type == 'tableindex' then
- callback(src.index, uri)
- elseif src.type == 'getmethod'
- or src.type == 'setmethod' then
- callback(src.method, uri)
- else
- callback(src, uri)
- end
- end
- if info.mode == 'value' then
- local src = info.source
- local root = guide.getRoot(src)
- local uri = root.uri
- if src.type == 'function' then
- if src.parent.type == 'return' then
- callback(src, uri)
- end
- end
- end
- end)
-end
-
-return function (uri, offset)
- local ast = files.getAst(uri)
- if not ast then
- return nil
- end
- local results = {}
- guide.eachSourceContain(ast.ast, offset, function (source)
- findRef(source, offset, function (target, uri)
- results[#results+1] = {
- target = target,
- uri = files.getOriginUri(uri),
- }
- end)
- end)
- if #results == 0 then
- return nil
- end
- return results
-end
diff --git a/server-beta/src/core/rename.lua b/server-beta/src/core/rename.lua
deleted file mode 100644
index 3e4512da..00000000
--- a/server-beta/src/core/rename.lua
+++ /dev/null
@@ -1,374 +0,0 @@
-local files = require 'files'
-local vm = require 'vm'
-local guide = require 'parser.guide'
-local proto = require 'proto'
-local define = require 'proto.define'
-local util = require 'utility'
-
-local Forcing
-
-local function askForcing(str)
- if TEST then
- return true
- end
- if Forcing == false then
- return false
- end
- local version = files.globalVersion
- -- TODO
- local item = proto.awaitRequest('window/showMessageRequest', {
- type = define.MessageType.Warning,
- message = ('[%s]不是有效的标识符,是否强制替换?'):format(str),
- actions = {
- {
- title = '强制替换',
- },
- {
- title = '取消',
- },
- }
- })
- if version ~= files.globalVersion then
- Forcing = false
- proto.notify('window/showMessage', {
- type = define.MessageType.Warning,
- message = '文件发生了变化,替换取消。'
- })
- return false
- end
- if not item then
- Forcing = false
- return false
- end
- if item.title == '强制替换' then
- Forcing = true
- return true
- else
- Forcing = false
- return false
- end
-end
-
-local function askForMultiChange(results, newname)
- if TEST then
- return true
- end
- local uris = {}
- for _, result in ipairs(results) do
- local uri = result.uri
- if not uris[uri] then
- uris[uri] = 0
- uris[#uris+1] = uri
- end
- uris[uri] = uris[uri] + 1
- end
- if #uris <= 1 then
- return true
- end
-
- local version = files.globalVersion
- -- TODO
- local item = proto.awaitRequest('window/showMessageRequest', {
- type = define.MessageType.Warning,
- message = ('将修改 %d 个文件,共 %d 处。'):format(
- #uris,
- #results
- ),
- actions = {
- {
- title = '继续',
- },
- {
- title = '放弃',
- },
- }
- })
- if version ~= files.globalVersion then
- proto.notify('window/showMessage', {
- type = define.MessageType.Warning,
- message = '文件发生了变化,替换取消。'
- })
- return false
- end
- if item and item.title == '继续' then
- local fileList = {}
- for _, uri in ipairs(uris) do
- fileList[#fileList+1] = ('%s (%d)'):format(uri, uris[uri])
- end
-
- log.debug(('Renamed [%s]\r\n%s'):format(newname, table.concat(fileList, '\r\n')))
- return true
- end
- return false
-end
-
-local function trim(str)
- return str:match '^%s*(%S+)%s*$'
-end
-
-local function isValidName(str)
- return str:match '^[%a_][%w_]*$'
-end
-
-local function isValidGlobal(str)
- for s in str:gmatch '[^%.]*' do
- if not isValidName(trim(s)) then
- return false
- end
- end
- return true
-end
-
-local function isValidFunctionName(str)
- if isValidGlobal(str) then
- return true
- end
- local pos = str:find(':', 1, true)
- if not pos then
- return false
- end
- return isValidGlobal(trim(str:sub(1, pos-1)))
- and isValidName(trim(str:sub(pos+1)))
-end
-
-local function isFunctionGlobalName(source)
- local parent = source.parent
- if parent.type ~= 'setglobal' then
- return false
- end
- local value = parent.value
- if not value.type ~= 'function' then
- return false
- end
- return value.start <= parent.start
-end
-
-local function renameLocal(source, newname, callback)
- if isValidName(newname) then
- callback(source, source.start, source.finish, newname)
- return
- end
- if askForcing(newname) then
- callback(source, source.start, source.finish, newname)
- end
-end
-
-local function renameField(source, newname, callback)
- if isValidName(newname) then
- callback(source, source.start, source.finish, newname)
- return true
- end
- local parent = source.parent
- if parent.type == 'setfield'
- or parent.type == 'getfield' then
- local dot = parent.dot
- local newstr = '[' .. util.viewString(newname) .. ']'
- callback(source, dot.start, source.finish, newstr)
- elseif parent.type == 'tablefield' then
- local newstr = '[' .. util.viewString(newname) .. ']'
- callback(source, source.start, source.finish, newstr)
- elseif parent.type == 'getmethod' then
- if not askForcing(newname) then
- return false
- end
- callback(source, source.start, source.finish, newname)
- elseif parent.type == 'setmethod' then
- local uri = guide.getRoot(source).uri
- local text = files.getText(uri)
- local func = parent.value
- -- function mt:name () end --> mt['newname'] = function (self) end
- local newstr = string.format('%s[%s] = function '
- , text:sub(parent.start, parent.node.finish)
- , util.viewString(newname)
- )
- callback(source, func.start, parent.finish, newstr)
- local pl = text:find('(', parent.finish, true)
- if pl then
- if func.args then
- callback(source, pl + 1, pl, 'self, ')
- else
- callback(source, pl + 1, pl, 'self')
- end
- end
- end
- return true
-end
-
-local function renameGlobal(source, newname, callback)
- if isValidGlobal(newname) then
- callback(source, source.start, source.finish, newname)
- return true
- end
- if isValidFunctionName(newname) then
- if not isFunctionGlobalName(source) then
- askForcing(newname)
- end
- callback(source, source.start, source.finish, newname)
- return true
- end
- local newstr = '_ENV[' .. util.viewString(newname) .. ']'
- -- function name () end --> _ENV['newname'] = function () end
- if source.value and source.value.type == 'function'
- and source.value.start < source.start then
- callback(source, source.value.start, source.finish, newstr .. ' = function ')
- return true
- end
- callback(source, source.start, source.finish, newstr)
- return true
-end
-
-local function ofLocal(source, newname, callback)
- renameLocal(source, newname, callback)
- if source.ref then
- for _, ref in ipairs(source.ref) do
- renameLocal(ref, newname, callback)
- end
- end
-end
-
-local function ofField(source, newname, callback)
- return vm.eachRef(source, function (info)
- local src = info.source
- if src.type == 'tablefield'
- or src.type == 'getfield'
- or src.type == 'setfield' then
- src = src.field
- elseif src.type == 'tableindex'
- or src.type == 'getindex'
- or src.type == 'setindex' then
- src = src.index
- elseif src.type == 'getmethod'
- or src.type == 'setmethod' then
- src = src.method
- end
- if src.type == 'string' then
- local quo = src[2]
- local text = util.viewString(newname, quo)
- callback(src, src.start, src.finish, text)
- return
- elseif src.type == 'field'
- or src.type == 'method' then
- local suc = renameField(src, newname, callback)
- if not suc then
- return false
- end
- elseif src.type == 'setglobal'
- or src.type == 'getglobal' then
- local suc = renameGlobal(src, newname, callback)
- if not suc then
- return false
- end
- end
- end)
-end
-
-local function rename(source, newname, callback)
- if source.type == 'label'
- or source.type == 'goto' then
- if not isValidName(newname) and not askForcing(newname)then
- return false
- end
- vm.eachRef(source, function (info)
- callback(info.source, info.source.start, info.source.finish, newname)
- end)
- elseif source.type == 'local' then
- return ofLocal(source, newname, callback)
- elseif source.type == 'setlocal'
- or source.type == 'getlocal' then
- return ofLocal(source.node, newname, callback)
- elseif source.type == 'field'
- or source.type == 'method'
- or source.type == 'tablefield'
- or source.type == 'string'
- or source.type == 'setglobal'
- or source.type == 'getglobal' then
- return ofField(source, newname, callback)
- end
- return true
-end
-
-local function prepareRename(source)
- if source.type == 'label'
- or source.type == 'goto'
- or source.type == 'local'
- or source.type == 'setlocal'
- or source.type == 'getlocal'
- or source.type == 'field'
- or source.type == 'method'
- or source.type == 'tablefield'
- or source.type == 'setglobal'
- or source.type == 'getglobal' then
- return source, source[1]
- elseif source.type == 'string' then
- local parent = source.parent
- if not parent then
- return nil
- end
- if parent.type == 'setindex'
- or parent.type == 'getindex'
- or parent.type == 'tableindex' then
- return source, source[1]
- end
- return nil
- end
- return nil
-end
-
-local m = {}
-
-function m.rename(uri, pos, newname)
- local ast = files.getAst(uri)
- if not ast then
- return nil
- end
- local results = {}
-
- guide.eachSourceContain(ast.ast, pos, function(source)
- rename(source, newname, function (target, start, finish, text)
- results[#results+1] = {
- start = start,
- finish = finish,
- text = text,
- uri = guide.getRoot(target).uri,
- }
- end)
- end)
-
- if Forcing == false then
- Forcing = nil
- return nil
- end
-
- if #results == 0 then
- return nil
- end
-
- if not askForMultiChange(results, newname) then
- return nil
- end
-
- return results
-end
-
-function m.prepareRename(uri, pos)
- local ast = files.getAst(uri)
- if not ast then
- return nil
- end
-
- local result
- guide.eachSourceContain(ast.ast, pos, function(source)
- local res, text = prepareRename(source)
- if res then
- result = {
- start = source.start,
- finish = source.finish,
- text = text,
- }
- end
- end)
-
- return result
-end
-
-return m
diff --git a/server-beta/src/define/DiagnosticDefaultSeverity.lua b/server-beta/src/define/DiagnosticDefaultSeverity.lua
deleted file mode 100644
index cc26cab2..00000000
--- a/server-beta/src/define/DiagnosticDefaultSeverity.lua
+++ /dev/null
@@ -1,21 +0,0 @@
-return {
- ['unused-local'] = 'Hint',
- ['unused-function'] = 'Hint',
- ['undefined-global'] = 'Warning',
- ['global-in-nil-env'] = 'Warning',
- ['unused-label'] = 'Hint',
- ['unused-vararg'] = 'Hint',
- ['trailing-space'] = 'Hint',
- ['redefined-local'] = 'Hint',
- ['newline-call'] = 'Information',
- ['redundant-parameter'] = 'Hint',
- ['ambiguity-1'] = 'Warning',
- ['lowercase-global'] = 'Information',
- ['undefined-env-child'] = 'Information',
- ['duplicate-index'] = 'Warning',
- ['duplicate-method'] = 'Warning',
- ['empty-block'] = 'Hint',
- ['redundant-value'] = 'Hint',
- ['emmy-lua'] = 'Warning',
- ['set-const'] = 'Error',
-}
diff --git a/server-beta/src/define/DiagnosticSeverity.lua b/server-beta/src/define/DiagnosticSeverity.lua
deleted file mode 100644
index 05bd3659..00000000
--- a/server-beta/src/define/DiagnosticSeverity.lua
+++ /dev/null
@@ -1,6 +0,0 @@
-return {
- Error = 1,
- Warning = 2,
- Information = 3,
- Hint = 4,
-}
diff --git a/server-beta/src/define/ErrorCodes.lua b/server-beta/src/define/ErrorCodes.lua
deleted file mode 100644
index befb5630..00000000
--- a/server-beta/src/define/ErrorCodes.lua
+++ /dev/null
@@ -1,16 +0,0 @@
-
-return {
- -- Defined by JSON RPC
- ParseError = -32700,
- InvalidRequest = -32600,
- MethodNotFound = -32601,
- InvalidParams = -32602,
- InternalError = -32603,
- serverErrorStart = -32099,
- serverErrorEnd = -32000,
- ServerNotInitialized = -32002,
- UnknownErrorCode = -32001,
-
- -- Defined by the protocol.
- RequestCancelled = -32800,
-}
diff --git a/server-beta/src/doctor.lua b/server-beta/src/doctor.lua
deleted file mode 100644
index 08ec69cf..00000000
--- a/server-beta/src/doctor.lua
+++ /dev/null
@@ -1,380 +0,0 @@
-local type = type
-local next = next
-local ipairs = ipairs
-local rawget = rawget
-local pcall = pcall
-local getregistry = debug.getregistry
-local getmetatable = debug.getmetatable
-local getupvalue = debug.getupvalue
-local getuservalue = debug.getuservalue
-local getlocal = debug.getlocal
-local getinfo = debug.getinfo
-local maxinterger = math.maxinteger
-local mathType = math.type
-local tableConcat = table.concat
-local _G = _G
-local registry = getregistry()
-local tableSort = table.sort
-
-_ENV = nil
-
-local m = {}
-
-local function getTostring(obj)
- local mt = getmetatable(obj)
- if not mt then
- return nil
- end
- local toString = rawget(mt, '__tostring')
- if not toString then
- return nil
- end
- local suc, str = pcall(toString, obj)
- if not suc then
- return nil
- end
- if type(str) ~= 'string' then
- return nil
- end
- return str
-end
-
-local function formatName(obj)
- local tp = type(obj)
- if tp == 'nil' then
- return 'nil:nil'
- elseif tp == 'boolean' then
- if obj == true then
- return 'boolean:true'
- else
- return 'boolean:false'
- end
- elseif tp == 'number' then
- if mathType(obj) == 'integer' then
- return ('number:%d'):format(obj)
- else
- -- 如果浮点数可以完全表示为整数,那么就转换为整数
- local str = ('%.10f'):format(obj):gsub('%.?[0]+$', '')
- if str:find('.', 1, true) then
- -- 如果浮点数不能表示为整数,那么再加上它的精确表示法
- str = ('%s(%q)'):format(str, obj)
- end
- return 'number:' .. str
- end
- elseif tp == 'string' then
- local str = ('%q'):format(obj)
- if #str > 100 then
- local new = ('%s...(len=%d)'):format(str:sub(1, 100), #str)
- if #new < #str then
- str = new
- end
- end
- return 'string:' .. str
- elseif tp == 'function' then
- local info = getinfo(obj, 'S')
- if info.what == 'c' then
- return ('function:%p(C)'):format(obj)
- elseif info.what == 'main' then
- return ('function:%p(main)'):format(obj)
- else
- return ('function:%p(%s:%d-%d)'):format(obj, info.source, info.linedefined, info.lastlinedefined)
- end
- elseif tp == 'table' then
- local id = getTostring(obj)
- if not id then
- if obj == _G then
- id = '_G'
- elseif obj == registry then
- id = 'registry'
- end
- end
- if id then
- return ('table:%p(%s)'):format(obj, id)
- else
- return ('table:%p'):format(obj)
- end
- elseif tp == 'userdata' then
- local id = getTostring(obj)
- if id then
- return ('userdata:%p(%s)'):format(obj, id)
- else
- return ('userdata:%p'):format(obj)
- end
- else
- return ('%s:%p'):format(tp, obj)
- end
-end
-
---- 内存快照
----@return table
-function m.snapshot()
- local mark = {}
- local find
-
- local function findTable(t, result)
- result = result or {}
- local mt = getmetatable(t)
- local wk, wv
- if mt then
- local mode = rawget(mt, '__mode')
- if type(mode) == 'string' then
- if mode:find('k', 1, true) then
- wk = true
- end
- if mode:find('v', 1, true) then
- wv = true
- end
- end
- end
- for k, v in next, t do
- if not wk then
- local keyInfo = find(k)
- if keyInfo then
- result[#result+1] = {
- type = 'key',
- name = formatName(k),
- info = keyInfo,
- }
- end
- end
- if not wv then
- local valueInfo = find(v)
- if valueInfo then
- result[#result+1] = {
- type = 'field',
- name = formatName(k) .. '|' .. formatName(v),
- info = valueInfo,
- }
- end
- end
- end
- local MTInfo = find(getmetatable(t))
- if MTInfo then
- result[#result+1] = {
- type = 'metatable',
- name = '',
- info = MTInfo,
- }
- end
- if #result == 0 then
- return nil
- end
- return result
- end
-
- local function findFunction(f, result, trd, stack)
- result = result or {}
- for i = 1, maxinterger do
- local n, v = getupvalue(f, i)
- if not n then
- break
- end
- local valueInfo = find(v)
- if valueInfo then
- result[#result+1] = {
- type = 'upvalue',
- name = n,
- info = valueInfo,
- }
- end
- end
- if trd then
- for i = 1, maxinterger do
- local n, l = getlocal(trd, stack, i)
- if not n then
- break
- end
- local valueInfo = find(l)
- if valueInfo then
- result[#result+1] = {
- type = 'local',
- name = n,
- info = valueInfo,
- }
- end
- end
- end
- if #result == 0 then
- return nil
- end
- return result
- end
-
- local function findUserData(u, result)
- result = result or {}
- for i = 1, maxinterger do
- local v, b = getuservalue(u, i)
- if not b then
- break
- end
- local valueInfo = find(v)
- if valueInfo then
- result[#result+1] = {
- type = 'uservalue',
- name = formatName(i),
- info = valueInfo,
- }
- end
- end
- local MTInfo = find(getmetatable(u))
- if MTInfo then
- result[#result+1] = {
- type = 'metatable',
- name = '',
- info = MTInfo,
- }
- end
- if #result == 0 then
- return nil
- end
- return result
- end
-
- local function findThread(trd, result)
- -- 不查找主线程,主线程一定是临时的(视为弱引用)
- if trd == registry[1] then
- return nil
- end
- result = result or {}
-
- for i = 1, maxinterger do
- local info = getinfo(trd, i, 'Sf')
- if not info then
- break
- end
- local funcInfo = find(info.func, trd, i)
- if funcInfo then
- result[#result+1] = {
- type = 'stack',
- name = i .. '@' .. formatName(info.func),
- info = funcInfo,
- }
- end
- end
-
- if #result == 0 then
- return nil
- end
- return result
- end
-
- function find(obj, trd, stack)
- if mark[obj] then
- return mark[obj]
- end
- local tp = type(obj)
- if tp == 'table' then
- mark[obj] = {}
- mark[obj] = findTable(obj, mark[obj])
- elseif tp == 'function' then
- mark[obj] = {}
- mark[obj] = findFunction(obj, mark[obj], trd, stack)
- elseif tp == 'userdata' then
- mark[obj] = {}
- mark[obj] = findUserData(obj, mark[obj])
- elseif tp == 'thread' then
- mark[obj] = {}
- mark[obj] = findThread(obj, mark[obj])
- else
- return nil
- end
- if mark[obj] then
- mark[obj].object = obj
- end
- return mark[obj]
- end
-
- return {
- name = formatName(registry),
- type = 'root',
- info = find(registry),
- }
-end
-
---- 寻找对象的引用
----@return string
-function m.catch(...)
- local targets = {}
- for _, target in ipairs {...} do
- targets[target] = true
- end
- local report = m.snapshot()
- local path = {}
- local result = {}
- local mark = {}
-
- local function push()
- result[#result+1] = tableConcat(path, ' => ')
- end
-
- local function search(t)
- path[#path+1] = ('(%s)%s'):format(t.type, t.name)
- local addTarget
- if targets[t.info.object] then
- targets[t.info.object] = nil
- addTarget = t.info.object
- push(t)
- end
- if not mark[t.info] then
- mark[t.info] = true
- for _, obj in ipairs(t.info) do
- search(obj)
- end
- end
- path[#path] = nil
- if addTarget then
- targets[addTarget] = true
- end
- end
-
- search(report)
-
- return result
-end
-
---- 生成一个报告
----@return string
-function m.report()
- local snapshot = m.snapshot()
- local cache = {}
- local mark = {}
-
- local function scan(t)
- local obj = t.info.object
- local tp = type(obj)
- if tp == 'table'
- or tp == 'userdata'
- or tp == 'function'
- or tp == 'string'
- or tp == 'thread' then
- local point = ('%p'):format(obj)
- if not cache[point] then
- cache[point] = {
- point = point,
- count = 0,
- name = formatName(obj),
- }
- end
- cache[point].count = cache[point].count + 1
- end
- if not mark[t.info] then
- mark[t.info] = true
- for _, child in ipairs(t.info) do
- scan(child)
- end
- end
- end
-
- scan(snapshot)
-
- local list = {}
- for _, info in next, cache do
- list[#list+1] = info
- end
- tableSort(list, function (a, b)
- return a.name < b.name
- end)
- return list
-end
-
-return m
diff --git a/server-beta/src/file-uri.lua b/server-beta/src/file-uri.lua
deleted file mode 100644
index 8acd4f64..00000000
--- a/server-beta/src/file-uri.lua
+++ /dev/null
@@ -1,108 +0,0 @@
-local platform = require 'bee.platform'
-
-local esc = {
- [':'] = '%3A',
- ['/'] = '%2F',
- ['?'] = '%3F',
- ['#'] = '%23',
- ['['] = '%5B',
- [']'] = '%5D',
- ['@'] = '%40',
-
- ['!'] = '%21', -- sub-delims
- ['$'] = '%24',
- ['&'] = '%26',
- ["'"] = '%27',
- ['('] = '%28',
- [')'] = '%29',
- ['*'] = '%2A',
- ['+'] = '%2B',
- [','] = '%2C',
- [';'] = '%3B',
- ['='] = '%3D',
-
- [' '] = '%20',
-}
-
-local escPatt = '[^%w%-%.%_%~%/]'
-
-local function normalize(str)
- return str:gsub('%%(%x%x)', function (n)
- return string.char(tonumber(n, 16))
- end)
-end
-
-local m = {}
-
--- c:\my\files --> file:///c%3A/my/files
--- /usr/home --> file:///usr/home
--- \\server\share\some\path --> file://server/share/some/path
-
---- path -> uri
----@param path string
----@return string uri
-function m.encode(path)
- local authority = ''
- if platform.OS == 'Windows' then
- path = path:gsub('\\', '/')
- end
-
- if path:sub(1, 2) == '//' then
- local idx = path:find('/', 3)
- if idx then
- authority = path:sub(3, idx)
- path = path:sub(idx + 1)
- if path == '' then
- path = '/'
- end
- else
- authority = path:sub(3)
- path = '/'
- end
- end
-
- if path:sub(1, 1) ~= '/' then
- path = '/' .. path
- end
-
- -- lower-case windows drive letters in /C:/fff or C:/fff
- if path:match '/%u:' then
- path = path:lower()
- end
-
- local uri = 'file://'
- .. authority:gsub(escPatt, esc)
- .. path:gsub(escPatt, esc)
- return uri
-end
-
--- file:///c%3A/my/files --> c:\my\files
--- file:///usr/home --> /usr/home
--- file://server/share/some/path --> \\server\share\some\path
-
---- uri -> path
----@param uri string
----@return string path
-function m.decode(uri)
- local scheme, authority, path = uri:match('([^:]*):?/?/?([^/]*)(.*)')
- if not scheme then
- return ''
- end
- scheme = normalize(scheme)
- authority = normalize(authority)
- path = normalize(path)
- local value
- if scheme == 'file' and #authority > 0 and #path > 1 then
- value = '//' .. authority .. path
- elseif path:match '/%a:' then
- value = path:sub(2, 2):lower() .. path:sub(3)
- else
- value = path
- end
- if platform.OS == 'Windows' then
- value = value:gsub('/', '\\')
- end
- return value
-end
-
-return m
diff --git a/server-beta/src/files.lua b/server-beta/src/files.lua
deleted file mode 100644
index ac27117c..00000000
--- a/server-beta/src/files.lua
+++ /dev/null
@@ -1,290 +0,0 @@
-local platform = require 'bee.platform'
-local config = require 'config'
-local glob = require 'glob'
-local furi = require 'file-uri'
-local parser = require 'parser'
-local vm = require 'vm.vm'
-local guide = require 'parser.guide'
-
-local m = {}
-
-m.openMap = {}
-m.fileMap = {}
-m.assocVersion = -1
-m.assocMatcher = nil
-m.globalVersion = 0
-
---- 打开文件
----@param uri string
-function m.open(uri)
- if platform.OS == 'Windows' then
- uri = uri:lower()
- end
- m.openMap[uri] = true
-end
-
---- 关闭文件
----@param uri string
-function m.close(uri)
- if platform.OS == 'Windows' then
- uri = uri:lower()
- end
- m.openMap[uri] = nil
-end
-
---- 是否打开
----@param uri string
----@return boolean
-function m.isOpen(uri)
- if platform.OS == 'Windows' then
- uri = uri:lower()
- end
- return m.openMap[uri] == true
-end
-
---- 是否存在
----@return boolean
-function m.exists(uri)
- if platform.OS == 'Windows' then
- uri = uri:lower()
- end
- return m.fileMap[uri] ~= nil
-end
-
---- 设置文件文本
----@param uri string
----@param text string
-function m.setText(uri, text)
- local originUri = uri
- if platform.OS == 'Windows' then
- uri = uri:lower()
- end
- if not m.fileMap[uri] then
- m.fileMap[uri] = {
- uri = originUri,
- }
- end
- local file = m.fileMap[uri]
- if file.text == text then
- return
- end
- file.text = text
- file.vm = nil
- file.lines = nil
- file.ast = nil
- file.globals = nil
- file.links = nil
- m.globalVersion = m.globalVersion + 1
- vm.refreshCache()
-
- local diagnostic = require 'provider.diagnostic'
- diagnostic.refresh(originUri)
-end
-
---- 监听编译完成
-function m.onCompiled(uri, callback)
- if platform.OS == 'Windows' then
- uri = uri:lower()
- end
- local file = m.fileMap[uri]
- if not file then
- return
- end
- if not file.onCompiledList then
- file.onCompiledList = {}
- end
- file.onCompiledList[#file.onCompiledList+1] = callback
-end
-
---- 获取文件文本
----@param uri string
----@return string text
-function m.getText(uri)
- if platform.OS == 'Windows' then
- uri = uri:lower()
- end
- local file = m.fileMap[uri]
- if not file then
- return nil
- end
- return file.text
-end
-
---- 移除文件
----@param uri string
-function m.remove(uri)
- if platform.OS == 'Windows' then
- uri = uri:lower()
- end
- local file = m.fileMap[uri]
- if not file then
- return
- end
- m.fileMap[uri] = nil
-
- m.globalVersion = m.globalVersion + 1
- vm.refreshCache()
-
- local diagnostic = require 'service.diagnostic'
- diagnostic.refresh(file.uri)
- diagnostic.clear(file.uri)
-end
-
---- 移除所有文件
-function m.removeAll()
- for uri in pairs(m.fileMap) do
- m.fileMap[uri] = nil
- end
- m.globalVersion = m.globalVersion + 1
- vm.refreshCache()
-end
-
---- 遍历文件
-function m.eachFile()
- return pairs(m.fileMap)
-end
-
---- 获取文件语法树
----@param uri string
----@return table ast
-function m.getAst(uri)
- if platform.OS == 'Windows' then
- uri = uri:lower()
- end
- local file = m.fileMap[uri]
- if file.ast == nil then
- local state, err = parser:compile(file.text, 'lua', config.config.runtime.version)
- if state then
- state.uri = file.uri
- state.ast.uri = file.uri
- file.ast = state
- else
- log.error(err)
- file.ast = false
- return nil
- end
- end
- return file.ast
-end
-
---- 获取文件行信息
----@param uri string
----@return table lines
-function m.getLines(uri)
- if platform.OS == 'Windows' then
- uri = uri:lower()
- end
- local file = m.fileMap[uri]
- if not file then
- return nil
- end
- if not file.lines then
- file.lines = parser:lines(file.text)
- end
- return file.lines
-end
-
---- 获取原始uri
-function m.getOriginUri(uri)
- if platform.OS == 'Windows' then
- uri = uri:lower()
- end
- local file = m.fileMap[uri]
- if not file then
- return nil
- end
- return file.uri
-end
-
---- 寻找全局变量
-function m.findGlobals(name)
- local uris = {}
- for uri, file in pairs(m.fileMap) do
- if not file.globals then
- file.globals = {}
- local ast = m.getAst(uri)
- if ast then
- local globals = vm.getGlobals(ast.ast)
- for name in pairs(globals) do
- file.globals[name] = true
- end
- end
- end
- if file.globals[name] then
- uris[#uris+1] = file.uri
- end
- end
- return uris
-end
-
---- 寻找link自己的其他文件
-function m.findLinkTo(uri)
- if platform.OS == 'Windows' then
- uri = uri:lower()
- end
- local result = {}
- for _, file in pairs(m.fileMap) do
- if file.links == nil then
- local ast = m.getAst(file.uri)
- if ast then
- file.links = vm.getLinks(ast.ast)
- else
- file.links = false
- end
- end
- if file.links then
- for linkUri in pairs(file.links) do
- if m.eq(uri, linkUri) then
- result[#result+1] = file.uri
- end
- end
- end
- end
- return result
-end
-
---- 判断文件名相等
-function m.eq(a, b)
- if platform.OS == 'Windows' then
- return a:lower() == b:lower()
- else
- return a == b
- end
-end
-
---- 获取文件关联
-function m.getAssoc()
- if m.assocVersion == config.version then
- return m.assocMatcher
- end
- m.assocVersion = config.version
- local patt = {}
- for k, v in pairs(config.other.associations) do
- if m.eq(v, 'lua') then
- patt[#patt+1] = k
- end
- end
- m.assocMatcher = glob.glob(patt)
- if platform.OS == 'Windows' then
- m.assocMatcher:setOption 'ignoreCase'
- end
- return m.assocMatcher
-end
-
---- 判断是否是Lua文件
----@param uri string
----@return boolean
-function m.isLua(uri)
- local ext = uri:match '%.([^%.%/%\\]-)$'
- if not ext then
- return false
- end
- if m.eq(ext, 'lua') then
- return true
- end
- local matcher = m.getAssoc()
- local path = furi.decode(uri)
- return matcher(path)
-end
-
-return m
diff --git a/server-beta/src/fs-utility.lua b/server-beta/src/fs-utility.lua
deleted file mode 100644
index 14dcb08f..00000000
--- a/server-beta/src/fs-utility.lua
+++ /dev/null
@@ -1,314 +0,0 @@
-local fs = require 'bee.filesystem'
-local platform = require 'bee.platform'
-
-local type = type
-local ioOpen = io.open
-local pcall = pcall
-local pairs = pairs
-local setmetatable = setmetatable
-local next = next
-
-_ENV = nil
-
-local m = {}
---- 读取文件
----@param path string
-function m.loadFile(path)
- if type(path) ~= 'string' then
- path = path:string()
- end
- local f, e = ioOpen(path, 'rb')
- if not f then
- return nil, e
- end
- if f:read(3) ~= '\xEF\xBB\xBF' then
- f:seek("set")
- end
- local buf = f:read 'a'
- f:close()
- return buf
-end
-
---- 写入文件
----@param path string
----@param content string
-function m.saveFile(path, content)
- if type(path) ~= 'string' then
- path = path:string()
- end
- local f, e = ioOpen(path, "wb")
-
- if f then
- f:write(content)
- f:close()
- return true
- else
- return false, e
- end
-end
-
-local function buildOptional(optional)
- optional = optional or {}
- optional.add = optional.add or {}
- optional.del = optional.del or {}
- optional.mod = optional.mod or {}
- optional.err = optional.err or {}
- return optional
-end
-
-local function fsAbsolute(path, optional)
- if type(path) == 'string' then
- local suc, res = pcall(fs.path, path)
- if not suc then
- optional.err[#optional.err+1] = res
- return nil
- end
- path = res
- end
- local suc, res = pcall(fs.absolute, path)
- if not suc then
- optional.err[#optional.err+1] = res
- return nil
- end
- return res
-end
-
-local function fsIsDirectory(path, optional)
- local suc, res = pcall(fs.is_directory, path)
- if not suc then
- optional.err[#optional.err+1] = res
- return false
- end
- return res
-end
-
-local function fsRemove(path, optional)
- local suc, res = pcall(fs.remove, path)
- if not suc then
- optional.err[#optional.err+1] = res
- end
- optional.del[#optional.del+1] = path:string()
-end
-
-local function fsExists(path, optional)
- local suc, res = pcall(fs.exists, path)
- if not suc then
- optional.err[#optional.err+1] = res
- return false
- end
- return res
-end
-
-local function fsCopy(source, target, optional)
- local suc, res = pcall(fs.copy_file, source, target, true)
- if not suc then
- optional.err[#optional.err+1] = res
- return false
- end
- return true
-end
-
-local function fsCreateDirectories(path, optional)
- local suc, res = pcall(fs.create_directories, path)
- if not suc then
- optional.err[#optional.err+1] = res
- return false
- end
- return true
-end
-
-local function fileRemove(path, optional)
- if optional.onRemove and optional.onRemove(path) == false then
- return
- end
- if fsIsDirectory(path, optional) then
- for child in path:list_directory() do
- fileRemove(child, optional)
- end
- end
- if fsRemove(path, optional) then
- optional.del[#optional.del+1] = path:string()
- end
-end
-
-local function fileCopy(source, target, optional)
- local isDir1 = fsIsDirectory(source, optional)
- local isDir2 = fsIsDirectory(target, optional)
- local isExists = fsExists(target, optional)
- if isDir1 then
- if isDir2 or fsCreateDirectories(target) then
- for filePath in source:list_directory() do
- local name = filePath:filename()
- fileCopy(filePath, target / name, optional)
- end
- end
- else
- if isExists and not isDir2 then
- local buf1, err1 = m.loadFile(source)
- local buf2, err2 = m.loadFile(target)
- if buf1 and buf2 then
- if buf1 ~= buf2 then
- if fsCopy(source, target, optional) then
- optional.mod[#optional.mod+1] = target:string()
- end
- end
- else
- if not buf1 then
- optional.err[#optional.err+1] = err1
- end
- if not buf2 then
- optional.err[#optional.err+1] = err2
- end
- end
- else
- if fsCopy(source, target, optional) then
- optional.add[#optional.add+1] = target:string()
- end
- end
- end
-end
-
-local function fileSync(source, target, optional)
- local isDir1 = fsIsDirectory(source, optional)
- local isDir2 = fsIsDirectory(target, optional)
- local isExists = fsExists(target, optional)
- if isDir1 then
- if isDir2 then
- local fileList = m.fileList()
- for filePath in target:list_directory() do
- fileList[filePath] = true
- end
- for filePath in source:list_directory() do
- local name = filePath:filename()
- local targetPath = target / name
- fileSync(filePath, targetPath, optional)
- fileList[targetPath] = nil
- end
- for path in pairs(fileList) do
- fileRemove(path, optional)
- end
- else
- if isExists then
- fileRemove(target, optional)
- end
- if fsCreateDirectories(target) then
- for filePath in source:list_directory() do
- local name = filePath:filename()
- fileCopy(filePath, target / name, optional)
- end
- end
- end
- else
- if isDir2 then
- fileRemove(target, optional)
- end
- if isExists then
- local buf1, err1 = m.loadFile(source)
- local buf2, err2 = m.loadFile(target)
- if buf1 and buf2 then
- if buf1 ~= buf2 then
- if fsCopy(source, target, optional) then
- optional.mod[#optional.mod+1] = target:string()
- end
- end
- else
- if not buf1 then
- optional.err[#optional.err+1] = err1
- end
- if not buf2 then
- optional.err[#optional.err+1] = err2
- end
- end
- else
- if fsCopy(source, target, optional) then
- optional.add[#optional.add+1] = target:string()
- end
- end
- end
-end
-
---- 文件列表
-function m.fileList(optional)
- optional = optional or buildOptional(optional)
- local os = platform.OS
- local keyMap = {}
- local fileList = {}
- local function computeKey(path)
- path = fsAbsolute(path, optional)
- if not path then
- return nil
- end
- local key
- if os == 'Windows' then
- key = path:string():lower()
- else
- key = path:string()
- end
- return key
- end
- return setmetatable({}, {
- __index = function (_, path)
- local key = computeKey(path)
- return fileList[key]
- end,
- __newindex = function (_, path, value)
- local key = computeKey(path)
- if not key then
- return
- end
- if value == nil then
- keyMap[key] = nil
- else
- keyMap[key] = path
- fileList[key] = value
- end
- end,
- __pairs = function ()
- local key, path
- return function ()
- key, path = next(keyMap, key)
- return path, fileList[key]
- end
- end,
- })
-end
-
---- 删除文件(夹)
-function m.fileRemove(path, optional)
- optional = buildOptional(optional)
- path = fsAbsolute(path, optional)
-
- fileRemove(path, optional)
-
- return optional
-end
-
---- 复制文件(夹)
----@param source string
----@param target string
----@return table
-function m.fileCopy(source, target, optional)
- optional = buildOptional(optional)
- source = fsAbsolute(source, optional)
- target = fsAbsolute(target, optional)
-
- fileCopy(source, target, optional)
-
- return optional
-end
-
---- 同步文件(夹)
----@param source string
----@param target string
----@return table
-function m.fileSync(source, target, optional)
- optional = buildOptional(optional)
- source = fsAbsolute(source, optional)
- target = fsAbsolute(target, optional)
-
- fileSync(source, target, optional)
-
- return optional
-end
-
-return m
diff --git a/server-beta/src/glob/gitignore.lua b/server-beta/src/glob/gitignore.lua
deleted file mode 100644
index f98a2f31..00000000
--- a/server-beta/src/glob/gitignore.lua
+++ /dev/null
@@ -1,221 +0,0 @@
-local m = require 'lpeglabel'
-local matcher = require 'glob.matcher'
-
-local function prop(name, pat)
- return m.Cg(m.Cc(true), name) * pat
-end
-
-local function object(type, pat)
- return m.Ct(
- m.Cg(m.Cc(type), 'type') *
- m.Cg(pat, 'value')
- )
-end
-
-local function expect(p, err)
- return p + m.T(err)
-end
-
-local parser = m.P {
- 'Main',
- ['Sp'] = m.S(' \t')^0,
- ['Slash'] = m.S('/\\')^1,
- ['Main'] = m.Ct(m.V'Sp' * m.P'{' * m.V'Pattern' * (',' * expect(m.V'Pattern', 'Miss exp after ","'))^0 * m.P'}')
- + m.Ct(m.V'Pattern')
- + m.T'Main Failed'
- ,
- ['Pattern'] = m.Ct(m.V'Sp' * prop('neg', m.P'!') * expect(m.V'Unit', 'Miss exp after "!"'))
- + m.Ct(m.V'Unit')
- ,
- ['NeedRoot'] = prop('root', (m.P'.' * m.V'Slash' + m.V'Slash')),
- ['Unit'] = m.V'Sp' * m.V'NeedRoot'^-1 * expect(m.V'Exp', 'Miss exp') * m.V'Sp',
- ['Exp'] = m.V'Sp' * (m.V'FSymbol' + object('/', m.V'Slash') + m.V'Word')^0 * m.V'Sp',
- ['Word'] = object('word', m.Ct((m.V'CSymbol' + m.V'Char' - m.V'FSymbol')^1)),
- ['CSymbol'] = object('*', m.P'*')
- + object('?', m.P'?')
- + object('[]', m.V'Range')
- ,
- ['Char'] = object('char', (1 - m.S',{}[]*?/\\')^1),
- ['FSymbol'] = object('**', m.P'**'),
- ['Range'] = m.P'[' * m.Ct(m.V'RangeUnit'^0) * m.P']'^-1,
- ['RangeUnit'] = m.Ct(- m.P']' * m.C(m.P(1)) * (m.P'-' * - m.P']' * m.C(m.P(1)))^-1),
-}
-
-local mt = {}
-mt.__index = mt
-mt.__name = 'gitignore'
-
-function mt:addPattern(pat)
- if type(pat) ~= 'string' then
- return
- end
- self.pattern[#self.pattern+1] = pat
- if self.options.ignoreCase then
- pat = pat:lower()
- end
- local states, err = parser:match(pat)
- if not states then
- self.errors[#self.errors+1] = {
- pattern = pat,
- message = err
- }
- return
- end
- for _, state in ipairs(states) do
- self.matcher[#self.matcher+1] = matcher(state)
- end
-end
-
-function mt:setOption(op, val)
- if val == nil then
- val = true
- end
- self.options[op] = val
-end
-
----@param key string | "'type'" | "'list'"
----@param func function | "function (path) end"
-function mt:setInterface(key, func)
- if type(func) ~= 'function' then
- return
- end
- self.interface[key] = func
-end
-
-function mt:callInterface(name, ...)
- local func = self.interface[name]
- return func(...)
-end
-
-function mt:hasInterface(name)
- return self.interface[name] ~= nil
-end
-
-function mt:checkDirectory(catch, path, matcher)
- if not self:hasInterface 'type' then
- return true
- end
- if not matcher:isNeedDirectory() then
- return true
- end
- if #catch < #path then
- -- if path is 'a/b/c' and catch is 'a/b'
- -- then the catch must be a directory
- return true
- else
- return self:callInterface('type', path) == 'directory'
- end
-end
-
-function mt:simpleMatch(path)
- for i = #self.matcher, 1, -1 do
- local matcher = self.matcher[i]
- local catch = matcher(path)
- if catch and self:checkDirectory(catch, path, matcher) then
- if matcher:isNegative() then
- return false
- else
- return true
- end
- end
- end
- return nil
-end
-
-function mt:finishMatch(path)
- local paths = {}
- for filename in path:gmatch '[^/\\]+' do
- paths[#paths+1] = filename
- end
- for i = 1, #paths do
- local newPath = table.concat(paths, '/', 1, i)
- local passed = self:simpleMatch(newPath)
- if passed == true then
- return true
- elseif passed == false then
- return false
- end
- end
- return false
-end
-
-function mt:scan(callback)
- local files = {}
- if type(callback) ~= 'function' then
- callback = nil
- end
- local list = {}
- local result = self:callInterface('list', '')
- if type(result) ~= 'table' then
- return files
- end
- for _, path in ipairs(result) do
- list[#list+1] = path:match '([^/\\]+)[/\\]*$'
- end
- while #list > 0 do
- local current = list[#list]
- if not current then
- break
- end
- list[#list] = nil
- if not self:simpleMatch(current) then
- local fileType = self:callInterface('type', current)
- if fileType == 'file' then
- if callback then
- callback(current)
- end
- files[#files+1] = current
- elseif fileType == 'directory' then
- local result = self:callInterface('list', current)
- if type(result) == 'table' then
- for _, path in ipairs(result) do
- local filename = path:match '([^/\\]+)[/\\]*$'
- if filename then
- list[#list+1] = current .. '/' .. filename
- end
- end
- end
- end
- end
- end
- return files
-end
-
-function mt:__call(path)
- if self.options.ignoreCase then
- path = path:lower()
- end
- return self:finishMatch(path)
-end
-
-return function (pattern, options, interface)
- local self = setmetatable({
- pattern = {},
- options = {},
- matcher = {},
- errors = {},
- interface = {},
- }, mt)
-
- if type(pattern) == 'table' then
- for _, pat in ipairs(pattern) do
- self:addPattern(pat)
- end
- else
- self:addPattern(pattern)
- end
-
- if type(options) == 'table' then
- for op, val in pairs(options) do
- self:setOption(op, val)
- end
- end
-
- if type(interface) == 'table' then
- for key, func in pairs(interface) do
- self:setInterface(key, func)
- end
- end
-
- return self
-end
diff --git a/server-beta/src/glob/glob.lua b/server-beta/src/glob/glob.lua
deleted file mode 100644
index aa8923f3..00000000
--- a/server-beta/src/glob/glob.lua
+++ /dev/null
@@ -1,122 +0,0 @@
-local m = require 'lpeglabel'
-local matcher = require 'glob.matcher'
-
-local function prop(name, pat)
- return m.Cg(m.Cc(true), name) * pat
-end
-
-local function object(type, pat)
- return m.Ct(
- m.Cg(m.Cc(type), 'type') *
- m.Cg(pat, 'value')
- )
-end
-
-local function expect(p, err)
- return p + m.T(err)
-end
-
-local parser = m.P {
- 'Main',
- ['Sp'] = m.S(' \t')^0,
- ['Slash'] = m.S('/\\')^1,
- ['Main'] = m.Ct(m.V'Sp' * m.P'{' * m.V'Pattern' * (',' * expect(m.V'Pattern', 'Miss exp after ","'))^0 * m.P'}')
- + m.Ct(m.V'Pattern')
- + m.T'Main Failed'
- ,
- ['Pattern'] = m.Ct(m.V'Sp' * prop('neg', m.P'!') * expect(m.V'Unit', 'Miss exp after "!"'))
- + m.Ct(m.V'Unit')
- ,
- ['NeedRoot'] = prop('root', (m.P'.' * m.V'Slash' + m.V'Slash')),
- ['Unit'] = m.V'Sp' * m.V'NeedRoot'^-1 * expect(m.V'Exp', 'Miss exp') * m.V'Sp',
- ['Exp'] = m.V'Sp' * (m.V'FSymbol' + object('/', m.V'Slash') + m.V'Word')^0 * m.V'Sp',
- ['Word'] = object('word', m.Ct((m.V'CSymbol' + m.V'Char' - m.V'FSymbol')^1)),
- ['CSymbol'] = object('*', m.P'*')
- + object('?', m.P'?')
- + object('[]', m.V'Range')
- ,
- ['Char'] = object('char', (1 - m.S',{}[]*?/\\')^1),
- ['FSymbol'] = object('**', m.P'**'),
- ['RangeWord'] = 1 - m.P']',
- ['Range'] = m.P'[' * m.Ct(m.V'RangeUnit'^0) * m.P']'^-1,
- ['RangeUnit'] = m.Ct(m.C(m.V'RangeWord') * m.P'-' * m.C(m.V'RangeWord'))
- + m.V'RangeWord',
-}
-
-local mt = {}
-mt.__index = mt
-mt.__name = 'glob'
-
-function mt:addPattern(pat)
- if type(pat) ~= 'string' then
- return
- end
- self.pattern[#self.pattern+1] = pat
- if self.options.ignoreCase then
- pat = pat:lower()
- end
- local states, err = parser:match(pat)
- if not states then
- self.errors[#self.errors+1] = {
- pattern = pat,
- message = err
- }
- return
- end
- for _, state in ipairs(states) do
- if state.neg then
- self.refused[#self.refused+1] = matcher(state)
- else
- self.passed[#self.passed+1] = matcher(state)
- end
- end
-end
-
-function mt:setOption(op, val)
- if val == nil then
- val = true
- end
- self.options[op] = val
-end
-
-function mt:__call(path)
- if self.options.ignoreCase then
- path = path:lower()
- end
- for _, refused in ipairs(self.refused) do
- if refused(path) then
- return false
- end
- end
- for _, passed in ipairs(self.passed) do
- if passed(path) then
- return true
- end
- end
- return false
-end
-
-return function (pattern, options)
- local self = setmetatable({
- pattern = {},
- options = {},
- passed = {},
- refused = {},
- errors = {},
- }, mt)
-
- if type(pattern) == 'table' then
- for _, pat in ipairs(pattern) do
- self:addPattern(pat)
- end
- else
- self:addPattern(pattern)
- end
-
- if type(options) == 'table' then
- for op, val in pairs(options) do
- self:setOption(op, val)
- end
- end
- return self
-end
diff --git a/server-beta/src/glob/init.lua b/server-beta/src/glob/init.lua
deleted file mode 100644
index 6578a0d4..00000000
--- a/server-beta/src/glob/init.lua
+++ /dev/null
@@ -1,4 +0,0 @@
-return {
- glob = require 'glob.glob',
- gitignore = require 'glob.gitignore',
-}
diff --git a/server-beta/src/glob/matcher.lua b/server-beta/src/glob/matcher.lua
deleted file mode 100644
index f4c2b12c..00000000
--- a/server-beta/src/glob/matcher.lua
+++ /dev/null
@@ -1,151 +0,0 @@
-local m = require 'lpeglabel'
-
-local Slash = m.S('/\\')^1
-local Symbol = m.S',{}[]*?/\\'
-local Char = 1 - Symbol
-local Path = Char^1 * Slash
-local NoWord = #(m.P(-1) + Symbol)
-local function whatHappened()
- return m.Cmt(m.P(1)^1, function (...)
- print(...)
- end)
-end
-
-local mt = {}
-mt.__index = mt
-mt.__name = 'matcher'
-
-function mt:exp(state, index)
- local exp = state[index]
- if not exp then
- return
- end
- if exp.type == 'word' then
- return self:word(exp, state, index + 1)
- elseif exp.type == 'char' then
- return self:char(exp, state, index + 1)
- elseif exp.type == '**' then
- return self:anyPath(exp, state, index + 1)
- elseif exp.type == '*' then
- return self:anyChar(exp, state, index + 1)
- elseif exp.type == '?' then
- return self:oneChar(exp, state, index + 1)
- elseif exp.type == '[]' then
- return self:range(exp, state, index + 1)
- elseif exp.type == '/' then
- return self:slash(exp, state, index + 1)
- end
-end
-
-function mt:word(exp, state, index)
- local current = self:exp(exp.value, 1)
- local after = self:exp(state, index)
- if after then
- return current * Slash * after
- else
- return current
- end
-end
-
-function mt:char(exp, state, index)
- local current = m.P(exp.value)
- local after = self:exp(state, index)
- if after then
- return current * after * NoWord
- else
- return current * NoWord
- end
-end
-
-function mt:anyPath(_, state, index)
- local after = self:exp(state, index)
- if after then
- return m.P {
- 'Main',
- Main = after
- + Path * m.V'Main'
- }
- else
- return Path^0
- end
-end
-
-function mt:anyChar(_, state, index)
- local after = self:exp(state, index)
- if after then
- return m.P {
- 'Main',
- Main = after
- + Char * m.V'Main'
- }
- else
- return Char^0
- end
-end
-
-function mt:oneChar(_, state, index)
- local after = self:exp(state, index)
- if after then
- return Char * after
- else
- return Char
- end
-end
-
-function mt:range(exp, state, index)
- local after = self:exp(state, index)
- local ranges = {}
- local selects = {}
- for _, range in ipairs(exp.value) do
- if #range == 1 then
- selects[#selects+1] = range[1]
- elseif #range == 2 then
- ranges[#ranges+1] = range[1] .. range[2]
- end
- end
- local current = m.S(table.concat(selects)) + m.R(table.unpack(ranges))
- if after then
- return current * after
- else
- return current
- end
-end
-
-function mt:slash(_, state, index)
- local after = self:exp(state, index)
- if after then
- return after
- else
- self.needDirectory = true
- return nil
- end
-end
-
-function mt:pattern(state)
- if state.root then
- return m.C(self:exp(state, 1))
- else
- return m.C(self:anyPath(nil, state, 1))
- end
-end
-
-function mt:isNeedDirectory()
- return self.needDirectory == true
-end
-
-function mt:isNegative()
- return self.state.neg == true
-end
-
-function mt:__call(path)
- return self.matcher:match(path)
-end
-
-return function (state, options)
- local self = setmetatable({
- options = options,
- state = state,
- }, mt)
- self.matcher = self:pattern(state)
- return self
-end
diff --git a/server-beta/src/json/decode.lua b/server-beta/src/json/decode.lua
deleted file mode 100644
index 36f8aa54..00000000
--- a/server-beta/src/json/decode.lua
+++ /dev/null
@@ -1,153 +0,0 @@
-local lpeg = require 'lpeglabel'
-local tablePack = table.pack
-local rawset = rawset
-local tointeger = math.tointeger
-local tonumber = tonumber
-local setmetatable = setmetatable
-local stringChar = string.char
-local error = error
-
-_ENV = nil
-
-local SaveSort
-local P = lpeg.P
-local S = lpeg.S
-local R = lpeg.R
-local V = lpeg.V
-local C = lpeg.C
-local Ct = lpeg.Ct
-local Cc = lpeg.Cc
-local Cp = lpeg.Cp
-local Cs = lpeg.Cs
-
-local EscMap = {
- ['t'] = '\t',
- ['r'] = '\r',
- ['n'] = '\n',
- ['"'] = '"',
- ['\\'] = '\\',
-}
-local BoolMap = {
- ['true'] = true,
- ['false'] = false,
-}
-
-local hashmt = {
- __pairs = function (self)
- local i = 1
- local function next()
- i = i + 1
- local k = self[i]
- if k == nil then
- return
- end
- local v = self[k]
- if v == nil then
- return next()
- end
- return k, v
- end
- return next
- end,
- __newindex = function (self, k, v)
- local i = 2
- while self[i] do
- i = i + 1
- end
- rawset(self, i, k)
- rawset(self, k, v)
- end,
-}
-
------------------------------------------------------------------------------
--- JSON4Lua: JSON encoding / decoding support for the Lua language.
--- json Module.
--- Author: Craig Mason-Jones
--- Homepage: http://github.com/craigmj/json4lua/
--- Version: 1.0.0
--- This module is released under the MIT License (MIT).
--- Please see LICENCE.txt for details.
---
-local function Utf8(str)
- local n = tonumber(str, 16)
- -- math.floor(x/2^y) == lazy right shift
- -- a % 2^b == bitwise_and(a, (2^b)-1)
- -- 64 = 2^6
- -- 4096 = 2^12 (or 2^6 * 2^6)
- local x
- if n < 0x80 then
- x = stringChar(n % 0x80)
- elseif n < 0x800 then
- -- [110x xxxx] [10xx xxxx]
- x = stringChar(0xC0 + ((n // 64) % 0x20), 0x80 + (n % 0x40))
- else
- -- [1110 xxxx] [10xx xxxx] [10xx xxxx]
- x = stringChar(0xE0 + ((n // 4096) % 0x10), 0x80 + ((n // 64) % 0x40), 0x80 + (n % 0x40))
- end
- return x
-end
-
-local function HashTable(patt)
- return C(patt) / function (_, ...)
- local hash = tablePack(...)
- local n = hash.n
- hash.n = nil
- if SaveSort then
- local max = n // 2
- for i = 1, max do
- local key, value = hash[2*i-1], hash[2*i]
- hash[key] = value
- hash[i+1] = key
- end
- hash[1] = nil
- for i = max+2, max*2 do
- hash[i] = nil
- end
- return setmetatable(hash, hashmt)
- else
- local max = n // 2
- for i = 1, max do
- local a = 2*i-1
- local b = 2*i
- local key, value = hash[a], hash[b]
- hash[key] = value
- hash[a] = nil
- hash[b] = nil
- end
- return hash
- end
- end
-end
-
-local Token = P
-{
- V'Value' * Cp(),
- Nl = P'\r\n' + S'\r\n',
- Sp = S' \t' + '//' * (1-V'Nl')^0,
- Spnl = (V'Sp' + V'Nl')^0,
- Bool = C(P'true' + P'false') / BoolMap,
- Int = C('0' + (P'-'^-1 * R'19' * R'09'^0)) / tointeger,
- Float = C(P'-'^-1 * ('0' + R'19' * R'09'^0) * '.' * R'09'^0) / tonumber,
- Null = P'null' * Cc(nil),
- String = '"' * Cs(V'Char'^0) * '"',
- Char = V'Esc' + V'Utf8' + (1 - P'"' - P'\t' - V'Nl'),
- Esc = P'\\' * C(S'tnr"\\') / EscMap,
- Utf8 = P'\\u' * C(P(4)) / Utf8,
- Hash = V'Spnl' * '{' * V'Spnl' * HashTable((V'Object' + P',' * V'Spnl')^0) * V'Spnl' * P'}' * V'Spnl',
- Array = V'Spnl' * '[' * V'Spnl' * Ct((V'Value' * V'Spnl' + P',' * V'Spnl')^0) * V'Spnl' * P']' * V'Spnl',
- Object = V'Spnl' * V'Key' * V'Spnl' * V'Value' * V'Spnl',
- Key = V'String' * V'Spnl' * ':',
- Value = V'Hash' + V'Array' + V'Bool' + V'Null' + V'String' + V'Float' + V'Int',
-}
-
-return function (str, save_sort_)
- SaveSort = save_sort_
- local table, res, pos = Token:match(str)
- if not table then
- if not pos or pos <= #str then
- pos = pos or 1
- error(('没匹配完[%s][%s]\n%s'):format(pos, res, str:sub(pos, pos+100)))
- end
- end
- return table
-end
diff --git a/server-beta/src/json/encode.lua b/server-beta/src/json/encode.lua
deleted file mode 100644
index 492c5a58..00000000
--- a/server-beta/src/json/encode.lua
+++ /dev/null
@@ -1,135 +0,0 @@
-local rep = string.rep
-local gsub = string.gsub
-local sort = table.sort
-local find = string.find
-local tostring = tostring
-local getmetatable = debug.getmetatable
-local type = type
-local next = next
-local pairs = pairs
-local tableConcat = table.concat
-
-_ENV = nil
-
-local index
-local lines
-local n = -1
-local tabs = {}
-
-local esc_map = {
- ['\\'] = '\\\\',
- ['\r'] = '\\r',
- ['\n'] = '\\n',
- ['\t'] = '\\t',
- ['"'] = '\\"',
-}
-
-local function encode(data, key)
- n = n + 1
- if not tabs[n] then
- tabs[n] = rep(' ', n)
- end
- local tp = type(data)
- if tp == 'table' then
- if not data[1] and next(data) then
- -- 认为这个是哈希表
- if key then
- index=index+1;lines[index] = tabs[n] .. '"' .. gsub(key, '[\\\r\n\t"]', esc_map) .. '": {\r\n'
- else
- index=index+1;lines[index] = tabs[n] .. '{\r\n'
- end
- local meta = getmetatable(data)
- local sep
- if meta and meta.__pairs then
- for k, v in meta.__pairs(data), data do
- if encode(v, k) then
- index=index+1;lines[index] = ',\r\n'
- sep = true
- end
- end
- else
- local list = {}
- local i = 0
- for k in next, data do
- i=i+1;list[i] = k
- end
- sort(list)
- for j = 1, i do
- local k = list[j]
- if encode(data[k], k) then
- index=index+1;lines[index] = ',\r\n'
- sep = true
- end
- end
- end
- if sep then
- lines[index] = '\r\n'
- end
- index=index+1;lines[index] = tabs[n] .. '}'
- else
- -- 认为这个是数组
- if key then
- index=index+1;lines[index] = tabs[n] .. '"' .. gsub(key, '[\\\r\n\t"]', esc_map) .. '": [\r\n'
- else
- index=index+1;lines[index] = tabs[n] .. '[\r\n'
- end
- local sep
- for k, v in pairs(data) do
- if encode(v) then
- index=index+1;lines[index] = ',\r\n'
- sep = true
- end
- end
- if sep then
- lines[index] = '\r\n'
- end
- index=index+1;lines[index] = tabs[n] .. ']'
- end
- elseif tp == 'number' then
- data = tostring(data)
- -- 判断 inf -inf -nan(ind) 1.#INF -1.#INF -1.#IND
- if find(data, '%a') then
- data = '0'
- end
- if key then
- index=index+1;lines[index] = tabs[n] .. '"' .. gsub(key, '[\\\r\n\t"]', esc_map) .. '": ' .. data
- else
- index=index+1;lines[index] = tabs[n] .. data
- end
- elseif tp == 'boolean' then
- if key then
- index=index+1;lines[index] = tabs[n] .. '"' .. gsub(key, '[\\\r\n\t"]', esc_map) .. '": ' .. tostring(data)
- else
- index=index+1;lines[index] = tabs[n] .. tostring(data)
- end
- elseif tp == 'nil' then
- if key then
- index=index+1;lines[index] = tabs[n] .. '"' .. gsub(key, '[\\\r\n\t"]', esc_map) .. '": null'
- else
- index=index+1;lines[index] = tabs[n] .. 'null'
- end
- elseif tp == 'string' then
- local str = gsub(data, '[\\\r\n\t"]', esc_map)
- if key then
- index=index+1;lines[index] = tabs[n] .. '"' .. gsub(key, '[\\\r\n\t"]', esc_map) .. '": "' .. str .. '"'
- else
- index=index+1;lines[index] = tabs[n] .. '"' .. str .. '"'
- end
- else
- n = n - 1
- return false
- end
- n = n - 1
- return true
-end
-
-local function json(t)
- lines = {}
- index = 0
-
- encode(t)
-
- return tableConcat(lines)
-end
-
-return json
diff --git a/server-beta/src/json/init.lua b/server-beta/src/json/init.lua
deleted file mode 100644
index c28e7aed..00000000
--- a/server-beta/src/json/init.lua
+++ /dev/null
@@ -1,6 +0,0 @@
-local api = {
- decode = require 'json.decode',
- encode = require 'json.encode',
-}
-
-return api
diff --git a/server-beta/src/jsonrpc.lua b/server-beta/src/jsonrpc.lua
deleted file mode 100644
index 5c73f54d..00000000
--- a/server-beta/src/jsonrpc.lua
+++ /dev/null
@@ -1,41 +0,0 @@
-local json = require 'json'
-local pcall = pcall
-
-_ENV = nil
-
----@class jsonrpc
-local m = {}
-m.type = 'jsonrpc'
-
-function m.encode(pack)
- pack.jsonrpc = '2.0'
- local content = json.encode(pack)
- local buf = ('Content-Length: %d\r\n\r\n%s'):format(#content, content)
- return buf
-end
-
-function m.decode(reader, errHandle)
- -- 读取协议头
- local line = reader 'l'
- -- 不支持修改文本编码
- if line:find('Content-Type', 1, true) then
- return nil
- end
- local len = line:match('Content%-Length%: (%d+)')
- if not len then
- errHandle('Error header: ' .. line)
- return nil
- end
- local content = reader(len + 2)
- if not content then
- return nil
- end
- local suc, res = pcall(json.decode, content)
- if not suc then
- errHandle('Proto parse error: ' .. res)
- return nil
- end
- return res
-end
-
-return m
diff --git a/server-beta/src/language.lua b/server-beta/src/language.lua
deleted file mode 100644
index d1a4b4cf..00000000
--- a/server-beta/src/language.lua
+++ /dev/null
@@ -1,137 +0,0 @@
-local fs = require 'bee.filesystem'
-local lni = require 'lni'
-local util = require 'utility'
-
-local function supportLanguage()
- local list = {}
- for path in (ROOT / 'locale'):list_directory() do
- if fs.is_directory(path) then
- list[#list+1] = path:filename():string():lower()
- end
- end
- return list
-end
-
-local function osLanguage()
- return LANG:lower()
-end
-
-local function getLanguage(id)
- local support = supportLanguage()
- -- 检查是否支持语言
- if support[id] then
- return id
- end
- -- 根据语言的前2个字母来找近似语言
- for _, lang in ipairs(support) do
- if lang:sub(1, 2) == id:sub(1, 2) then
- return lang
- end
- end
- -- 使用英文
- return 'enUS'
-end
-
-local function loadFileByLanguage(name, language)
- local path = ROOT / 'locale' / language / (name .. '.lni')
- local buf = util.loadFile(path:string())
- if not buf then
- return {}
- end
- local suc, tbl = xpcall(lni, log.error, buf, path:string())
- if not suc then
- return {}
- end
- return tbl
-end
-
-local function formatAsArray(str, ...)
- local index = 0
- local args = {...}
- return str:gsub('%{(.-)%}', function (pat)
- local id, fmt
- local pos = pat:find(':', 1, true)
- if pos then
- id = pat:sub(1, pos-1)
- fmt = pat:sub(pos+1)
- else
- id = pat
- fmt = 's'
- end
- id = tonumber(id)
- if not id then
- index = index + 1
- id = index
- end
- return ('%'..fmt):format(args[id])
- end)
-end
-
-local function formatAsTable(str, ...)
- local args = ...
- return str:gsub('%{(.-)%}', function (pat)
- local id, fmt
- local pos = pat:find(':', 1, true)
- if pos then
- id = pat:sub(1, pos-1)
- fmt = pat:sub(pos+1)
- else
- id = pat
- fmt = 's'
- end
- if not id then
- return
- end
- return ('%'..fmt):format(args[id])
- end)
-end
-
-local function loadLang(name, language)
- local tbl = loadFileByLanguage(name, 'en-US')
- if language ~= 'en-US' then
- local other = loadFileByLanguage(name, language)
- for k, v in pairs(other) do
- tbl[k] = v
- end
- end
- return setmetatable(tbl, {
- __index = function (self, key)
- self[key] = key
- return key
- end,
- __call = function (self, key, ...)
- local str = self[key]
- local suc, res
- if type(...) == 'table' then
- suc, res = pcall(formatAsTable, str, ...)
- else
- suc, res = pcall(formatAsArray, str, ...)
- end
- if suc then
- return res
- else
- -- 这里不能使用翻译,以免死循环
- log.warn(('[%s][%s-%s] formated error: %s'):format(
- language, name, key, str
- ))
- return str
- end
- end,
- })
-end
-
-local function init()
- local id = osLanguage()
- local language = getLanguage(id)
- log.info(('VSC language: %s'):format(id))
- log.info(('LS language: %s'):format(language))
- return setmetatable({ id = language }, {
- __index = function (self, name)
- local tbl = loadLang(name, language)
- self[name] = tbl
- return tbl
- end,
- })
-end
-
-return init()
diff --git a/server-beta/src/library.lua b/server-beta/src/library.lua
deleted file mode 100644
index d4dba7c9..00000000
--- a/server-beta/src/library.lua
+++ /dev/null
@@ -1,296 +0,0 @@
-local lni = require 'lni'
-local fs = require 'bee.filesystem'
-local config = require 'config'
-local util = require 'utility'
-
-local m = {}
-
-local function mergeEnum(lib, locale)
- if not lib or not locale then
- return
- end
- local pack = {}
- for _, enum in ipairs(lib) do
- if enum.enum then
- pack[enum.enum] = enum
- end
- if enum.code then
- pack[enum.code] = enum
- end
- end
- for _, enum in ipairs(locale) do
- if pack[enum.enum] then
- if enum.description then
- pack[enum.enum].description = enum.description
- end
- end
- if pack[enum.code] then
- if enum.description then
- pack[enum.code].description = enum.description
- end
- end
- end
-end
-
-local function mergeField(lib, locale)
- if not lib or not locale then
- return
- end
- local pack = {}
- for _, field in ipairs(lib) do
- if field.field then
- pack[field.field] = field
- end
- end
- for _, field in ipairs(locale) do
- if pack[field.field] then
- if field.description then
- pack[field.field].description = field.description
- end
- end
- end
-end
-
-local function mergeLocale(libs, locale)
- if not libs or not locale then
- return
- end
- for name in pairs(locale) do
- if libs[name] then
- if locale[name].description then
- libs[name].description = locale[name].description
- end
- mergeEnum(libs[name].enums, locale[name].enums)
- mergeField(libs[name].fields, locale[name].fields)
- end
- end
-end
-
-local function isMatchVersion(version)
- if not version then
- return true
- end
- local runtimeVersion = config.config.runtime.version
- if type(version) == 'table' then
- for i = 1, #version do
- if version[i] == runtimeVersion then
- return true
- end
- end
- else
- if version == runtimeVersion then
- return true
- end
- end
- return false
-end
-
-local function insertGlobal(tbl, key, value)
- if not isMatchVersion(value.version) then
- return false
- end
- if not value.doc then
- value.doc = key
- end
- tbl[key] = value
- return true
-end
-
-local function insertOther(tbl, key, value)
- if not value.version then
- return
- end
- if not tbl[key] then
- tbl[key] = {}
- end
- if type(value.version) == 'string' then
- tbl[key][#tbl[key]+1] = value.version
- elseif type(value.version) == 'table' then
- for _, version in ipairs(value.version) do
- if type(version) == 'string' then
- tbl[key][#tbl[key]+1] = version
- end
- end
- end
- table.sort(tbl[key])
-end
-
-local function insertCustom(tbl, key, value, libName)
- if not tbl[key] then
- tbl[key] = {}
- end
- tbl[key][#tbl[key]+1] = libName
- table.sort(tbl[key])
-end
-
-local function isEnableGlobal(libName)
- if config.config.runtime.library[libName] then
- return true
- end
- if libName:sub(1, 1) == '@' then
- return true
- end
- return false
-end
-
-local function mergeSource(alllibs, name, lib, libName)
- if not lib.source then
- if isEnableGlobal(libName) then
- local suc = insertGlobal(alllibs.global, name, lib)
- if not suc then
- insertOther(alllibs.other, name, lib)
- end
- else
- insertCustom(alllibs.custom, name, lib, libName)
- end
- return
- end
- for _, source in ipairs(lib.source) do
- local sourceName = source.name or name
- if source.type == 'global' then
- if isEnableGlobal(libName) then
- local suc = insertGlobal(alllibs.global, sourceName, lib)
- if not suc then
- insertOther(alllibs.other, sourceName, lib)
- end
- else
- insertCustom(alllibs.custom, sourceName, lib, libName)
- end
- elseif source.type == 'library' then
- insertGlobal(alllibs.library, sourceName, lib)
- elseif source.type == 'object' then
- insertGlobal(alllibs.object, sourceName, lib)
- end
- end
-end
-
-local function copy(t)
- local new = {}
- for k, v in pairs(t) do
- new[k] = v
- end
- return new
-end
-
-local function insertChild(tbl, name, key, value)
- if not name or not key then
- return
- end
- if not isMatchVersion(value.version) then
- return
- end
- if not value.doc then
- value.doc = ('%s.%s'):format(name, key)
- end
- if not tbl[name] then
- tbl[name] = {
- type = name,
- name = name,
- child = {},
- }
- end
- tbl[name].child[key] = copy(value)
-end
-
-local function mergeParent(alllibs, name, lib, libName)
- for _, parent in ipairs(lib.parent) do
- if parent.type == 'global' then
- if isEnableGlobal(libName) then
- insertChild(alllibs.global, parent.name, name, lib)
- end
- elseif parent.type == 'library' then
- insertChild(alllibs.library, parent.name, name, lib)
- elseif parent.type == 'object' then
- insertChild(alllibs.object, parent.name, name, lib)
- end
- end
-end
-
-local function mergeLibs(alllibs, libs, libName)
- if not libs then
- return
- end
- for _, lib in pairs(libs) do
- if lib.parent then
- mergeParent(alllibs, lib.name, lib, libName)
- else
- mergeSource(alllibs, lib.name, lib, libName)
- end
- end
-end
-
-local function loadLocale(language, relative)
- local localePath = ROOT / 'locale' / language / relative
- local localeBuf = util.loadFile(localePath:string())
- if localeBuf then
- local locale = util.container()
- xpcall(lni, log.error, localeBuf, localePath:string(), {locale})
- return locale
- end
- return nil
-end
-
-local function fix(libs)
- for name, lib in pairs(libs) do
- lib.name = lib.name or name
- lib.child = {}
- end
-end
-
-local function scan(path)
- local result = {path}
- local i = 0
- return function ()
- i = i + 1
- local current = result[i]
- if not current then
- return nil
- end
- if fs.is_directory(current) then
- for path in current:list_directory() do
- result[#result+1] = path
- end
- end
- return current
- end
-end
-
-local function init()
- local lang = require 'language'
- local id = lang.id
- m.global = util.container()
- m.library = util.container()
- m.object = util.container()
- m.other = util.container()
- m.custom = util.container()
-
- for libPath in (ROOT / 'libs'):list_directory() do
- local libName = libPath:filename():string()
- for path in scan(libPath) do
- local libs
- local buf = util.loadFile(path:string())
- if buf then
- libs = util.container()
- xpcall(lni, log.error, buf, path:string(), {libs})
- fix(libs)
- end
- local relative = fs.relative(path, ROOT)
-
- local locale = loadLocale('en-US', relative)
- mergeLocale(libs, locale)
- if id ~= 'en-US' then
- locale = loadLocale(id, relative)
- mergeLocale(libs, locale)
- end
- mergeLibs(m, libs, libName)
- end
- end
-end
-
-function m.reload()
- init()
-end
-
-init()
-
-return m
diff --git a/server-beta/src/log.lua b/server-beta/src/log.lua
deleted file mode 100644
index 1a66685a..00000000
--- a/server-beta/src/log.lua
+++ /dev/null
@@ -1,140 +0,0 @@
-local fs = require 'bee.filesystem'
-
-local osTime = os.time
-local osClock = os.clock
-local osDate = os.date
-local ioOpen = io.open
-local tablePack = table.pack
-local tableConcat = table.concat
-local tostring = tostring
-local debugTraceBack = debug.traceback
-local mathModf = math.modf
-local debugGetInfo = debug.getinfo
-local ioStdErr = io.stderr
-
-_ENV = nil
-
-local m = {}
-
-m.file = nil
-m.startTime = osTime() - osClock()
-m.size = 0
-m.maxSize = 100 * 1024 * 1024
-
-local function trimSrc(src)
- src = src:sub(m.prefixLen + 3, -5)
- src = src:gsub('^[/\\]+', '')
- src = src:gsub('[\\/]+', '.')
- return src
-end
-
-local function init_log_file()
- if not m.file then
- m.file = ioOpen(m.path, 'w')
- if not m.file then
- return
- end
- m.file:write('')
- m.file:close()
- m.file = ioOpen(m.path, 'ab')
- if not m.file then
- return
- end
- m.file:setvbuf 'no'
- end
-end
-
-local function pushLog(level, ...)
- if not m.path then
- return
- end
- if m.size > m.maxSize then
- return
- end
- local t = tablePack(...)
- for i = 1, t.n do
- t[i] = tostring(t[i])
- end
- local str = tableConcat(t, '\t', 1, t.n)
- if level == 'error' then
- str = str .. '\n' .. debugTraceBack(nil, 3)
- end
- local info = debugGetInfo(3, 'Sl')
- return m.raw(0, level, str, info.source, info.currentline)
-end
-
-function m.info(...)
- pushLog('info', ...)
-end
-
-function m.debug(...)
- pushLog('debug', ...)
-end
-
-function m.trace(...)
- pushLog('trace', ...)
-end
-
-function m.warn(...)
- pushLog('warn', ...)
-end
-
-function m.error(...)
- pushLog('error', ...)
-end
-
-function m.raw(thd, level, msg, source, currentline)
- if level == 'error' then
- ioStdErr:write(msg .. '\n')
- end
- init_log_file()
- if not m.file then
- return
- end
- local sec, ms = mathModf(m.startTime + osClock())
- local timestr = osDate('%H:%M:%S', sec)
- local agl = ''
- if #level < 5 then
- agl = (' '):rep(5 - #level)
- end
- local buf
- if currentline == -1 then
- buf = ('[%s.%03.f][%s]: %s[#%d]%s\n'):format(timestr, ms * 1000, level, agl, thd, msg)
- else
- buf = ('[%s.%03.f][%s]: %s[#%d:%s:%s]%s\n'):format(timestr, ms * 1000, level, agl, thd, trimSrc(source), currentline, msg)
- end
- m.file:write(buf)
- m.size = m.size + #buf
- if m.size > m.maxSize then
- m.file:write('[REACH MAX SIZE]')
- end
- return
-end
-
-function m.init(root, path)
- local lastBuf
- if m.file then
- m.file:close()
- m.file = nil
- local file = ioOpen(m.path, 'rb')
- if file then
- lastBuf = file:read 'a'
- file:close()
- end
- end
- m.path = path:string()
- m.prefixLen = #root:string()
- m.size = 0
- if not fs.exists(path:parent_path()) then
- fs.create_directories(path:parent_path())
- end
- if lastBuf then
- init_log_file()
- if m.file then
- m.file:write(lastBuf)
- m.size = m.size + #lastBuf
- end
- end
-end
-
-return m
diff --git a/server-beta/src/parser/ast.lua b/server-beta/src/parser/ast.lua
deleted file mode 100644
index dfd7656d..00000000
--- a/server-beta/src/parser/ast.lua
+++ /dev/null
@@ -1,1738 +0,0 @@
-local emmy = require 'parser.emmy'
-
-local tonumber = tonumber
-local stringChar = string.char
-local utf8Char = utf8.char
-local tableUnpack = table.unpack
-local mathType = math.type
-local tableRemove = table.remove
-local pairs = pairs
-local tableSort = table.sort
-
-_ENV = nil
-
-local State
-local PushError
-local PushDiag
-
--- goto 单独处理
-local RESERVED = {
- ['and'] = true,
- ['break'] = true,
- ['do'] = true,
- ['else'] = true,
- ['elseif'] = true,
- ['end'] = true,
- ['false'] = true,
- ['for'] = true,
- ['function'] = true,
- ['if'] = true,
- ['in'] = true,
- ['local'] = true,
- ['nil'] = true,
- ['not'] = true,
- ['or'] = true,
- ['repeat'] = true,
- ['return'] = true,
- ['then'] = true,
- ['true'] = true,
- ['until'] = true,
- ['while'] = true,
-}
-
-local VersionOp = {
- ['&'] = {'Lua 5.3', 'Lua 5.4'},
- ['~'] = {'Lua 5.3', 'Lua 5.4'},
- ['|'] = {'Lua 5.3', 'Lua 5.4'},
- ['<<'] = {'Lua 5.3', 'Lua 5.4'},
- ['>>'] = {'Lua 5.3', 'Lua 5.4'},
- ['//'] = {'Lua 5.3', 'Lua 5.4'},
-}
-
-local function checkOpVersion(op)
- local versions = VersionOp[op.type]
- if not versions then
- return
- end
- for i = 1, #versions do
- if versions[i] == State.version then
- return
- end
- end
- PushError {
- type = 'UNSUPPORT_SYMBOL',
- start = op.start,
- finish = op.finish,
- version = versions,
- info = {
- version = State.version,
- }
- }
-end
-
-local function checkMissEnd(start)
- if not State.MissEndErr then
- return
- end
- local err = State.MissEndErr
- State.MissEndErr = nil
- local _, finish = State.lua:find('[%w_]+', start)
- if not finish then
- return
- end
- err.info.related = {
- {
- start = start,
- finish = finish,
- }
- }
- PushError {
- type = 'MISS_END',
- start = start,
- finish = finish,
- }
-end
-
-local function getSelect(vararg, index)
- return {
- type = 'select',
- start = vararg.start,
- finish = vararg.finish,
- vararg = vararg,
- index = index,
- }
-end
-
-local function getValue(values, i)
- if not values then
- return nil, nil
- end
- local value = values[i]
- if not value then
- local last = values[#values]
- if not last then
- return nil, nil
- end
- if last.type == 'call' or last.type == 'varargs' then
- return getSelect(last, i - #values + 1)
- end
- return nil, nil
- end
- if value.type == 'call' or value.type == 'varargs' then
- value = getSelect(value, 1)
- end
- return value
-end
-
-local function createLocal(key, effect, value, attrs)
- if not key then
- return nil
- end
- key.type = 'local'
- key.effect = effect
- key.value = value
- key.attrs = attrs
- if value then
- key.range = value.finish
- end
- return key
-end
-
-local function createCall(args, start, finish)
- if args then
- args.type = 'callargs'
- args.start = start
- args.finish = finish
- end
- return {
- type = 'call',
- start = start,
- finish = finish,
- args = args,
- }
-end
-
-local function packList(start, list, finish)
- local lastFinish = start
- local wantName = true
- local count = 0
- for i = 1, #list do
- local ast = list[i]
- if ast.type == ',' then
- if wantName or i == #list then
- PushError {
- type = 'UNEXPECT_SYMBOL',
- start = ast.start,
- finish = ast.finish,
- info = {
- symbol = ',',
- }
- }
- end
- wantName = true
- else
- if not wantName then
- PushError {
- type = 'MISS_SYMBOL',
- start = lastFinish,
- finish = ast.start - 1,
- info = {
- symbol = ',',
- }
- }
- end
- wantName = false
- count = count + 1
- list[count] = list[i]
- end
- lastFinish = ast.finish + 1
- end
- for i = count + 1, #list do
- list[i] = nil
- end
- list.type = 'list'
- list.start = start
- list.finish = finish - 1
- return list
-end
-
-local BinaryLevel = {
- ['or'] = 1,
- ['and'] = 2,
- ['<='] = 3,
- ['>='] = 3,
- ['<'] = 3,
- ['>'] = 3,
- ['~='] = 3,
- ['=='] = 3,
- ['|'] = 4,
- ['~'] = 5,
- ['&'] = 6,
- ['<<'] = 7,
- ['>>'] = 7,
- ['..'] = 8,
- ['+'] = 9,
- ['-'] = 9,
- ['*'] = 10,
- ['//'] = 10,
- ['/'] = 10,
- ['%'] = 10,
- ['^'] = 11,
-}
-
-local BinaryForward = {
- [01] = true,
- [02] = true,
- [03] = true,
- [04] = true,
- [05] = true,
- [06] = true,
- [07] = true,
- [08] = false,
- [09] = true,
- [10] = true,
- [11] = false,
-}
-
-local Defs = {
- Nil = function (pos)
- return {
- type = 'nil',
- start = pos,
- finish = pos + 2,
- }
- end,
- True = function (pos)
- return {
- type = 'boolean',
- start = pos,
- finish = pos + 3,
- [1] = true,
- }
- end,
- False = function (pos)
- return {
- type = 'boolean',
- start = pos,
- finish = pos + 4,
- [1] = false,
- }
- end,
- LongComment = function (beforeEq, afterEq, str, missPos)
- if missPos then
- local endSymbol = ']' .. ('='):rep(afterEq-beforeEq) .. ']'
- local s, _, w = str:find('(%][%=]*%])[%c%s]*$')
- if s then
- PushError {
- type = 'ERR_LCOMMENT_END',
- start = missPos - #str + s - 1,
- finish = missPos - #str + s + #w - 2,
- info = {
- symbol = endSymbol,
- },
- fix = {
- title = 'FIX_LCOMMENT_END',
- {
- start = missPos - #str + s - 1,
- finish = missPos - #str + s + #w - 2,
- text = endSymbol,
- }
- },
- }
- end
- PushError {
- type = 'MISS_SYMBOL',
- start = missPos,
- finish = missPos,
- info = {
- symbol = endSymbol,
- },
- fix = {
- title = 'ADD_LCOMMENT_END',
- {
- start = missPos,
- finish = missPos,
- text = endSymbol,
- }
- },
- }
- end
- end,
- CLongComment = function (start1, finish1, start2, finish2)
- PushError {
- type = 'ERR_C_LONG_COMMENT',
- start = start1,
- finish = finish2 - 1,
- fix = {
- title = 'FIX_C_LONG_COMMENT',
- {
- start = start1,
- finish = finish1 - 1,
- text = '--[[',
- },
- {
- start = start2,
- finish = finish2 - 1,
- text = '--]]'
- },
- }
- }
- end,
- CCommentPrefix = function (start, finish)
- PushError {
- type = 'ERR_COMMENT_PREFIX',
- start = start,
- finish = finish - 1,
- fix = {
- title = 'FIX_COMMENT_PREFIX',
- {
- start = start,
- finish = finish - 1,
- text = '--',
- },
- }
- }
- end,
- String = function (start, quote, str, finish)
- return {
- type = 'string',
- start = start,
- finish = finish - 1,
- [1] = str,
- [2] = quote,
- }
- end,
- LongString = function (beforeEq, afterEq, str, missPos)
- if missPos then
- local endSymbol = ']' .. ('='):rep(afterEq-beforeEq) .. ']'
- local s, _, w = str:find('(%][%=]*%])[%c%s]*$')
- if s then
- PushError {
- type = 'ERR_LSTRING_END',
- start = missPos - #str + s - 1,
- finish = missPos - #str + s + #w - 2,
- info = {
- symbol = endSymbol,
- },
- fix = {
- title = 'FIX_LSTRING_END',
- {
- start = missPos - #str + s - 1,
- finish = missPos - #str + s + #w - 2,
- text = endSymbol,
- }
- },
- }
- end
- PushError {
- type = 'MISS_SYMBOL',
- start = missPos,
- finish = missPos,
- info = {
- symbol = endSymbol,
- },
- fix = {
- title = 'ADD_LSTRING_END',
- {
- start = missPos,
- finish = missPos,
- text = endSymbol,
- }
- },
- }
- end
- return '[' .. ('='):rep(afterEq-beforeEq) .. '[', str
- end,
- Char10 = function (char)
- char = tonumber(char)
- if not char or char < 0 or char > 255 then
- return ''
- end
- return stringChar(char)
- end,
- Char16 = function (pos, char)
- if State.version == 'Lua 5.1' then
- PushError {
- type = 'ERR_ESC',
- start = pos-1,
- finish = pos,
- version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4', 'LuaJIT'},
- info = {
- version = State.version,
- }
- }
- return char
- end
- return stringChar(tonumber(char, 16))
- end,
- CharUtf8 = function (pos, char)
- if State.version ~= 'Lua 5.3'
- and State.version ~= 'Lua 5.4'
- and State.version ~= 'LuaJIT'
- then
- PushError {
- type = 'ERR_ESC',
- start = pos-3,
- finish = pos-2,
- version = {'Lua 5.3', 'Lua 5.4', 'LuaJIT'},
- info = {
- version = State.version,
- }
- }
- return char
- end
- if #char == 0 then
- PushError {
- type = 'UTF8_SMALL',
- start = pos-3,
- finish = pos,
- }
- return ''
- end
- local v = tonumber(char, 16)
- if not v then
- for i = 1, #char do
- if not tonumber(char:sub(i, i), 16) then
- PushError {
- type = 'MUST_X16',
- start = pos + i - 1,
- finish = pos + i - 1,
- }
- end
- end
- return ''
- end
- if State.version == 'Lua 5.4' then
- if v < 0 or v > 0x7FFFFFFF then
- PushError {
- type = 'UTF8_MAX',
- start = pos-3,
- finish = pos+#char,
- info = {
- min = '00000000',
- max = '7FFFFFFF',
- }
- }
- end
- else
- if v < 0 or v > 0x10FFFF then
- PushError {
- type = 'UTF8_MAX',
- start = pos-3,
- finish = pos+#char,
- version = v <= 0x7FFFFFFF and 'Lua 5.4' or nil,
- info = {
- min = '000000',
- max = '10FFFF',
- }
- }
- end
- end
- if v >= 0 and v <= 0x10FFFF then
- return utf8Char(v)
- end
- return ''
- end,
- Number = function (start, number, finish)
- local n = tonumber(number)
- if n then
- State.LastNumber = {
- type = 'number',
- start = start,
- finish = finish - 1,
- [1] = n,
- }
- return State.LastNumber
- else
- PushError {
- type = 'MALFORMED_NUMBER',
- start = start,
- finish = finish - 1,
- }
- State.LastNumber = {
- type = 'number',
- start = start,
- finish = finish - 1,
- [1] = 0,
- }
- return State.LastNumber
- end
- end,
- FFINumber = function (start, symbol)
- local lastNumber = State.LastNumber
- if mathType(lastNumber[1]) == 'float' then
- PushError {
- type = 'UNKNOWN_SYMBOL',
- start = start,
- finish = start + #symbol - 1,
- info = {
- symbol = symbol,
- }
- }
- lastNumber[1] = 0
- return
- end
- if State.version ~= 'LuaJIT' then
- PushError {
- type = 'UNSUPPORT_SYMBOL',
- start = start,
- finish = start + #symbol - 1,
- version = 'LuaJIT',
- info = {
- version = State.version,
- }
- }
- lastNumber[1] = 0
- end
- end,
- ImaginaryNumber = function (start, symbol)
- local lastNumber = State.LastNumber
- if State.version ~= 'LuaJIT' then
- PushError {
- type = 'UNSUPPORT_SYMBOL',
- start = start,
- finish = start + #symbol - 1,
- version = 'LuaJIT',
- info = {
- version = State.version,
- }
- }
- end
- lastNumber[1] = 0
- end,
- Name = function (start, str, finish)
- local isKeyWord
- if RESERVED[str] then
- isKeyWord = true
- elseif str == 'goto' then
- if State.version ~= 'Lua 5.1' and State.version ~= 'LuaJIT' then
- isKeyWord = true
- end
- end
- if isKeyWord then
- PushError {
- type = 'KEYWORD',
- start = start,
- finish = finish - 1,
- }
- end
- return {
- type = 'name',
- start = start,
- finish = finish - 1,
- [1] = str,
- }
- end,
- GetField = function (dot, field)
- local obj = {
- type = 'getfield',
- field = field,
- dot = dot,
- start = dot.start,
- finish = (field or dot).finish,
- }
- if field then
- field.type = 'field'
- field.parent = obj
- end
- return obj
- end,
- GetIndex = function (start, index, finish)
- local obj = {
- type = 'getindex',
- start = start,
- finish = finish - 1,
- index = index,
- }
- if index then
- index.parent = obj
- end
- return obj
- end,
- GetMethod = function (colon, method)
- local obj = {
- type = 'getmethod',
- method = method,
- colon = colon,
- start = colon.start,
- finish = (method or colon).finish,
- }
- if method then
- method.type = 'method'
- method.parent = obj
- end
- return obj
- end,
- Single = function (unit)
- unit.type = 'getname'
- return unit
- end,
- Simple = function (units)
- local last = units[1]
- for i = 2, #units do
- local current = units[i]
- current.node = last
- current.start = last.start
- last.next = current
- last = units[i]
- end
- return last
- end,
- SimpleCall = function (call)
- if call.type ~= 'call' and call.type ~= 'getmethod' then
- PushError {
- type = 'EXP_IN_ACTION',
- start = call.start,
- finish = call.finish,
- }
- end
- return call
- end,
- BinaryOp = function (start, op)
- return {
- type = op,
- start = start,
- finish = start + #op - 1,
- }
- end,
- UnaryOp = function (start, op)
- return {
- type = op,
- start = start,
- finish = start + #op - 1,
- }
- end,
- Unary = function (first, ...)
- if not ... then
- return nil
- end
- local list = {first, ...}
- local e = list[#list]
- for i = #list - 1, 1, -1 do
- local op = list[i]
- checkOpVersion(op)
- e = {
- type = 'unary',
- op = op,
- start = op.start,
- finish = e.finish,
- [1] = e,
- }
- end
- return e
- end,
- SubBinary = function (op, symb)
- if symb then
- return op, symb
- end
- PushError {
- type = 'MISS_EXP',
- start = op.start,
- finish = op.finish,
- }
- end,
- Binary = function (first, op, second, ...)
- if not first then
- return second
- end
- if not op then
- return first
- end
- if not ... then
- checkOpVersion(op)
- return {
- type = 'binary',
- op = op,
- start = first.start,
- finish = second.finish,
- [1] = first,
- [2] = second,
- }
- end
- local list = {first, op, second, ...}
- local ops = {}
- for i = 2, #list, 2 do
- ops[#ops+1] = i
- end
- tableSort(ops, function (a, b)
- local op1 = list[a]
- local op2 = list[b]
- local lv1 = BinaryLevel[op1.type]
- local lv2 = BinaryLevel[op2.type]
- if lv1 == lv2 then
- local forward = BinaryForward[lv1]
- if forward then
- return op1.start > op2.start
- else
- return op1.start < op2.start
- end
- else
- return lv1 < lv2
- end
- end)
- local final
- for i = #ops, 1, -1 do
- local n = ops[i]
- local op = list[n]
- local left = list[n-1]
- local right = list[n+1]
- local exp = {
- type = 'binary',
- op = op,
- start = left.start,
- finish = right and right.finish or op.finish,
- [1] = left,
- [2] = right,
- }
- local leftIndex, rightIndex
- if list[left] then
- leftIndex = list[left[1]]
- else
- leftIndex = n - 1
- end
- if list[right] then
- rightIndex = list[right[2]]
- else
- rightIndex = n + 1
- end
-
- list[leftIndex] = exp
- list[rightIndex] = exp
- list[left] = leftIndex
- list[right] = rightIndex
- list[exp] = n
- final = exp
-
- checkOpVersion(op)
- end
- return final
- end,
- Paren = function (start, exp, finish)
- if exp and exp.type == 'paren' then
- exp.start = start
- exp.finish = finish - 1
- return exp
- end
- return {
- type = 'paren',
- start = start,
- finish = finish - 1,
- exp = exp
- }
- end,
- VarArgs = function (dots)
- dots.type = 'varargs'
- return dots
- end,
- PackLoopArgs = function (start, list, finish)
- local list = packList(start, list, finish)
- if #list == 0 then
- PushError {
- type = 'MISS_LOOP_MIN',
- start = finish,
- finish = finish,
- }
- elseif #list == 1 then
- PushError {
- type = 'MISS_LOOP_MAX',
- start = finish,
- finish = finish,
- }
- end
- return list
- end,
- PackInNameList = function (start, list, finish)
- local list = packList(start, list, finish)
- if #list == 0 then
- PushError {
- type = 'MISS_NAME',
- start = start,
- finish = finish,
- }
- end
- return list
- end,
- PackInExpList = function (start, list, finish)
- local list = packList(start, list, finish)
- if #list == 0 then
- PushError {
- type = 'MISS_EXP',
- start = start,
- finish = finish,
- }
- end
- return list
- end,
- PackExpList = function (start, list, finish)
- local list = packList(start, list, finish)
- return list
- end,
- PackNameList = function (start, list, finish)
- local list = packList(start, list, finish)
- return list
- end,
- Call = function (start, args, finish)
- return createCall(args, start, finish-1)
- end,
- COMMA = function (start)
- return {
- type = ',',
- start = start,
- finish = start,
- }
- end,
- SEMICOLON = function (start)
- return {
- type = ';',
- start = start,
- finish = start,
- }
- end,
- DOTS = function (start)
- return {
- type = '...',
- start = start,
- finish = start + 2,
- }
- end,
- COLON = function (start)
- return {
- type = ':',
- start = start,
- finish = start,
- }
- end,
- DOT = function (start)
- return {
- type = '.',
- start = start,
- finish = start,
- }
- end,
- Function = function (functionStart, functionFinish, args, actions, endStart, endFinish)
- actions.type = 'function'
- actions.start = functionStart
- actions.finish = endFinish - 1
- actions.args = args
- actions.keyword= {
- functionStart, functionFinish - 1,
- endStart, endFinish - 1,
- }
- checkMissEnd(functionStart)
- return actions
- end,
- NamedFunction = function (functionStart, functionFinish, name, args, actions, endStart, endFinish)
- actions.type = 'function'
- actions.start = functionStart
- actions.finish = endFinish - 1
- actions.args = args
- actions.keyword= {
- functionStart, functionFinish - 1,
- endStart, endFinish - 1,
- }
- checkMissEnd(functionStart)
- if not name then
- return
- end
- if name.type == 'getname' then
- name.type = 'setname'
- name.value = actions
- elseif name.type == 'getfield' then
- name.type = 'setfield'
- name.value = actions
- elseif name.type == 'getmethod' then
- name.type = 'setmethod'
- name.value = actions
- end
- name.range = actions.finish
- name.vstart = functionStart
- return name
- end,
- LocalFunction = function (start, functionStart, functionFinish, name, args, actions, endStart, endFinish)
- actions.type = 'function'
- actions.start = start
- actions.finish = endFinish - 1
- actions.args = args
- actions.keyword= {
- functionStart, functionFinish - 1,
- endStart, endFinish - 1,
- }
- checkMissEnd(start)
-
- if not name then
- return
- end
-
- if name.type ~= 'getname' then
- PushError {
- type = 'UNEXPECT_LFUNC_NAME',
- start = name.start,
- finish = name.finish,
- }
- return
- end
-
- local loc = createLocal(name, name.start, actions)
- loc.localfunction = true
- loc.vstart = functionStart
-
- return loc
- end,
- Table = function (start, tbl, finish)
- tbl.type = 'table'
- tbl.start = start
- tbl.finish = finish - 1
- local wantField = true
- local lastStart = start + 1
- local fieldCount = 0
- for i = 1, #tbl do
- local field = tbl[i]
- if field.type == ',' or field.type == ';' then
- if wantField then
- PushError {
- type = 'MISS_EXP',
- start = lastStart,
- finish = field.start - 1,
- }
- end
- wantField = true
- lastStart = field.finish + 1
- else
- if not wantField then
- PushError {
- type = 'MISS_SEP_IN_TABLE',
- start = lastStart,
- finish = field.start - 1,
- }
- end
- wantField = false
- lastStart = field.finish + 1
- fieldCount = fieldCount + 1
- tbl[fieldCount] = field
- end
- end
- for i = fieldCount + 1, #tbl do
- tbl[i] = nil
- end
- return tbl
- end,
- NewField = function (start, field, value, finish)
- local obj = {
- type = 'tablefield',
- start = start,
- finish = finish-1,
- field = field,
- value = value,
- }
- if field then
- field.type = 'field'
- field.parent = obj
- end
- return obj
- end,
- NewIndex = function (start, index, value, finish)
- local obj = {
- type = 'tableindex',
- start = start,
- finish = finish-1,
- index = index,
- value = value,
- }
- if index then
- index.parent = obj
- end
- return obj
- end,
- FuncArgs = function (start, args, finish)
- args.type = 'funcargs'
- args.start = start
- args.finish = finish - 1
- local lastStart = start + 1
- local wantName = true
- local argCount = 0
- for i = 1, #args do
- local arg = args[i]
- local argAst = arg
- if argAst.type == ',' then
- if wantName then
- PushError {
- type = 'MISS_NAME',
- start = lastStart,
- finish = argAst.start-1,
- }
- end
- wantName = true
- else
- if not wantName then
- PushError {
- type = 'MISS_SYMBOL',
- start = lastStart-1,
- finish = argAst.start-1,
- info = {
- symbol = ',',
- }
- }
- end
- wantName = false
- argCount = argCount + 1
-
- if argAst.type == '...' then
- args[argCount] = arg
- if i < #args then
- local a = args[i+1]
- local b = args[#args]
- PushError {
- type = 'ARGS_AFTER_DOTS',
- start = a.start,
- finish = b.finish,
- }
- end
- break
- else
- args[argCount] = createLocal(arg, arg.start)
- end
- end
- lastStart = argAst.finish + 1
- end
- for i = argCount + 1, #args do
- args[i] = nil
- end
- if wantName and argCount > 0 then
- PushError {
- type = 'MISS_NAME',
- start = lastStart,
- finish = finish - 1,
- }
- end
- return args
- end,
- Set = function (start, keys, values, finish)
- for i = 1, #keys do
- local key = keys[i]
- if key.type == 'getname' then
- key.type = 'setname'
- key.value = getValue(values, i)
- elseif key.type == 'getfield' then
- key.type = 'setfield'
- key.value = getValue(values, i)
- elseif key.type == 'getindex' then
- key.type = 'setindex'
- key.value = getValue(values, i)
- end
- if key.value then
- key.range = key.value.finish
- end
- end
- if values then
- for i = #keys+1, #values do
- local value = values[i]
- PushDiag('redundant-value', {
- start = value.start,
- finish = value.finish,
- max = #keys,
- passed = #values,
- })
- end
- end
- return tableUnpack(keys)
- end,
- LocalAttr = function (attrs)
- for i = 1, #attrs do
- local attr = attrs[i]
- local attrAst = attr
- attrAst.type = 'localattr'
- if State.version ~= 'Lua 5.4' then
- PushError {
- type = 'UNSUPPORT_SYMBOL',
- start = attrAst.start,
- finish = attrAst.finish,
- version = 'Lua 5.4',
- info = {
- version = State.version,
- }
- }
- elseif attrAst[1] ~= 'const' and attrAst[1] ~= 'close' then
- PushError {
- type = 'UNKNOWN_TAG',
- start = attrAst.start,
- finish = attrAst.finish,
- info = {
- tag = attrAst[1],
- }
- }
- elseif i > 1 then
- PushError {
- type = 'MULTI_TAG',
- start = attrAst.start,
- finish = attrAst.finish,
- info = {
- tag = attrAst[1],
- }
- }
- end
- end
- return attrs
- end,
- LocalName = function (name, attrs)
- if not name then
- return name
- end
- name.attrs = attrs
- return name
- end,
- Local = function (start, keys, values, finish)
- for i = 1, #keys do
- local key = keys[i]
- local attrs = key.attrs
- key.attrs = nil
- local value = getValue(values, i)
- createLocal(key, finish, value, attrs)
- end
- if values then
- for i = #keys+1, #values do
- local value = values[i]
- PushDiag('redundant-value', {
- start = value.start,
- finish = value.finish,
- max = #keys,
- passed = #values,
- })
- end
- end
- return tableUnpack(keys)
- end,
- Do = function (start, actions, endA, endB)
- actions.type = 'do'
- actions.start = start
- actions.finish = endB - 1
- actions.keyword= {
- start, start + #'do' - 1,
- endA , endB - 1,
- }
- checkMissEnd(start)
- return actions
- end,
- Break = function (start, finish)
- return {
- type = 'break',
- start = start,
- finish = finish - 1,
- }
- end,
- Return = function (start, exps, finish)
- exps.type = 'return'
- exps.start = start
- exps.finish = finish - 1
- return exps
- end,
- Label = function (start, name, finish)
- if State.version == 'Lua 5.1' then
- PushError {
- type = 'UNSUPPORT_SYMBOL',
- start = start,
- finish = finish - 1,
- version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4', 'LuaJIT'},
- info = {
- version = State.version,
- }
- }
- return
- end
- if not name then
- return nil
- end
- name.type = 'label'
- return name
- end,
- GoTo = function (start, name, finish)
- if State.version == 'Lua 5.1' then
- PushError {
- type = 'UNSUPPORT_SYMBOL',
- start = start,
- finish = finish - 1,
- version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4', 'LuaJIT'},
- info = {
- version = State.version,
- }
- }
- return
- end
- if not name then
- return nil
- end
- name.type = 'goto'
- return name
- end,
- IfBlock = function (ifStart, ifFinish, exp, thenStart, thenFinish, actions, finish)
- actions.type = 'ifblock'
- actions.start = ifStart
- actions.finish = finish - 1
- actions.filter = exp
- actions.keyword= {
- ifStart, ifFinish - 1,
- thenStart, thenFinish - 1,
- }
- return actions
- end,
- ElseIfBlock = function (elseifStart, elseifFinish, exp, thenStart, thenFinish, actions, finish)
- actions.type = 'elseifblock'
- actions.start = elseifStart
- actions.finish = finish - 1
- actions.filter = exp
- actions.keyword= {
- elseifStart, elseifFinish - 1,
- thenStart, thenFinish - 1,
- }
- return actions
- end,
- ElseBlock = function (elseStart, elseFinish, actions, finish)
- actions.type = 'elseblock'
- actions.start = elseStart
- actions.finish = finish - 1
- actions.keyword= {
- elseStart, elseFinish - 1,
- }
- return actions
- end,
- If = function (start, blocks, endStart, endFinish)
- blocks.type = 'if'
- blocks.start = start
- blocks.finish = endFinish - 1
- local hasElse
- for i = 1, #blocks do
- local block = blocks[i]
- if i == 1 and block.type ~= 'ifblock' then
- PushError {
- type = 'MISS_SYMBOL',
- start = block.start,
- finish = block.start,
- info = {
- symbol = 'if',
- }
- }
- end
- if hasElse then
- PushError {
- type = 'BLOCK_AFTER_ELSE',
- start = block.start,
- finish = block.finish,
- }
- end
- if block.type == 'elseblock' then
- hasElse = true
- end
- end
- checkMissEnd(start)
- return blocks
- end,
- Loop = function (forA, forB, arg, steps, doA, doB, blockStart, block, endA, endB)
- local loc = createLocal(arg, blockStart, steps[1])
- block.type = 'loop'
- block.start = forA
- block.finish = endB - 1
- block.loc = loc
- block.max = steps[2]
- block.step = steps[3]
- block.keyword= {
- forA, forB - 1,
- doA , doB - 1,
- endA, endB - 1,
- }
- checkMissEnd(forA)
- return block
- end,
- In = function (forA, forB, keys, inA, inB, exp, doA, doB, blockStart, block, endA, endB)
- local func = tableRemove(exp, 1)
- block.type = 'in'
- block.start = forA
- block.finish = endB - 1
- block.keys = keys
- block.keyword= {
- forA, forB - 1,
- inA , inB - 1,
- doA , doB - 1,
- endA, endB - 1,
- }
-
- local values
- if func then
- local call = createCall(exp, func.finish + 1, exp.finish)
- call.node = func
- call.start = func.start
- func.next = call
- values = { call }
- keys.range = call.finish
- end
- for i = 1, #keys do
- local loc = keys[i]
- if values then
- createLocal(loc, blockStart, getValue(values, i))
- else
- createLocal(loc, blockStart)
- end
- end
- checkMissEnd(forA)
- return block
- end,
- While = function (whileA, whileB, filter, doA, doB, block, endA, endB)
- block.type = 'while'
- block.start = whileA
- block.finish = endB - 1
- block.filter = filter
- block.keyword= {
- whileA, whileB - 1,
- doA , doB - 1,
- endA , endB - 1,
- }
- checkMissEnd(whileA)
- return block
- end,
- Repeat = function (repeatA, repeatB, block, untilA, untilB, filter, finish)
- block.type = 'repeat'
- block.start = repeatA
- block.finish = finish
- block.filter = filter
- block.keyword= {
- repeatA, repeatB - 1,
- untilA , untilB - 1,
- }
- return block
- end,
- Lua = function (start, actions, finish)
- actions.type = 'main'
- actions.start = start
- actions.finish = finish - 1
- return actions
- end,
-
- -- 捕获错误
- UnknownSymbol = function (start, symbol)
- PushError {
- type = 'UNKNOWN_SYMBOL',
- start = start,
- finish = start + #symbol - 1,
- info = {
- symbol = symbol,
- }
- }
- return
- end,
- UnknownAction = function (start, symbol)
- PushError {
- type = 'UNKNOWN_SYMBOL',
- start = start,
- finish = start + #symbol - 1,
- info = {
- symbol = symbol,
- }
- }
- end,
- DirtyName = function (pos)
- PushError {
- type = 'MISS_NAME',
- start = pos,
- finish = pos,
- }
- return nil
- end,
- DirtyExp = function (pos)
- PushError {
- type = 'MISS_EXP',
- start = pos,
- finish = pos,
- }
- return nil
- end,
- MissExp = function (pos)
- PushError {
- type = 'MISS_EXP',
- start = pos,
- finish = pos,
- }
- end,
- MissExponent = function (start, finish)
- PushError {
- type = 'MISS_EXPONENT',
- start = start,
- finish = finish - 1,
- }
- end,
- MissQuote1 = function (pos)
- PushError {
- type = 'MISS_SYMBOL',
- start = pos,
- finish = pos,
- info = {
- symbol = '"'
- }
- }
- end,
- MissQuote2 = function (pos)
- PushError {
- type = 'MISS_SYMBOL',
- start = pos,
- finish = pos,
- info = {
- symbol = "'"
- }
- }
- end,
- MissEscX = function (pos)
- PushError {
- type = 'MISS_ESC_X',
- start = pos-2,
- finish = pos+1,
- }
- end,
- MissTL = function (pos)
- PushError {
- type = 'MISS_SYMBOL',
- start = pos,
- finish = pos,
- info = {
- symbol = '{',
- }
- }
- end,
- MissTR = function (pos)
- PushError {
- type = 'MISS_SYMBOL',
- start = pos,
- finish = pos,
- info = {
- symbol = '}',
- }
- }
- end,
- MissBR = function (pos)
- PushError {
- type = 'MISS_SYMBOL',
- start = pos,
- finish = pos,
- info = {
- symbol = ']',
- }
- }
- end,
- MissPL = function (pos)
- PushError {
- type = 'MISS_SYMBOL',
- start = pos,
- finish = pos,
- info = {
- symbol = '(',
- }
- }
- end,
- MissPR = function (pos)
- PushError {
- type = 'MISS_SYMBOL',
- start = pos,
- finish = pos,
- info = {
- symbol = ')',
- }
- }
- end,
- ErrEsc = function (pos)
- PushError {
- type = 'ERR_ESC',
- start = pos-1,
- finish = pos,
- }
- end,
- MustX16 = function (pos, str)
- PushError {
- type = 'MUST_X16',
- start = pos,
- finish = pos + #str - 1,
- }
- end,
- MissAssign = function (pos)
- PushError {
- type = 'MISS_SYMBOL',
- start = pos,
- finish = pos,
- info = {
- symbol = '=',
- }
- }
- end,
- MissTableSep = function (pos)
- PushError {
- type = 'MISS_SYMBOL',
- start = pos,
- finish = pos,
- info = {
- symbol = ','
- }
- }
- end,
- MissField = function (pos)
- PushError {
- type = 'MISS_FIELD',
- start = pos,
- finish = pos,
- }
- end,
- MissMethod = function (pos)
- PushError {
- type = 'MISS_METHOD',
- start = pos,
- finish = pos,
- }
- end,
- MissLabel = function (pos)
- PushError {
- type = 'MISS_SYMBOL',
- start = pos,
- finish = pos,
- info = {
- symbol = '::',
- }
- }
- end,
- MissEnd = function (pos)
- State.MissEndErr = PushError {
- type = 'MISS_SYMBOL',
- start = pos,
- finish = pos,
- info = {
- symbol = 'end',
- }
- }
- return pos, pos
- end,
- MissDo = function (pos)
- PushError {
- type = 'MISS_SYMBOL',
- start = pos,
- finish = pos,
- info = {
- symbol = 'do',
- }
- }
- return pos, pos
- end,
- MissComma = function (pos)
- PushError {
- type = 'MISS_SYMBOL',
- start = pos,
- finish = pos,
- info = {
- symbol = ',',
- }
- }
- end,
- MissIn = function (pos)
- PushError {
- type = 'MISS_SYMBOL',
- start = pos,
- finish = pos,
- info = {
- symbol = 'in',
- }
- }
- return pos, pos
- end,
- MissUntil = function (pos)
- PushError {
- type = 'MISS_SYMBOL',
- start = pos,
- finish = pos,
- info = {
- symbol = 'until',
- }
- }
- return pos, pos
- end,
- MissThen = function (pos)
- PushError {
- type = 'MISS_SYMBOL',
- start = pos,
- finish = pos,
- info = {
- symbol = 'then',
- }
- }
- return pos, pos
- end,
- MissName = function (pos)
- PushError {
- type = 'MISS_NAME',
- start = pos,
- finish = pos,
- }
- end,
- ExpInAction = function (start, exp, finish)
- PushError {
- type = 'EXP_IN_ACTION',
- start = start,
- finish = finish - 1,
- }
- return exp
- end,
- MissIf = function (start, block)
- PushError {
- type = 'MISS_SYMBOL',
- start = start,
- finish = start,
- info = {
- symbol = 'if',
- }
- }
- return block
- end,
- MissGT = function (start)
- PushError {
- type = 'MISS_SYMBOL',
- start = start,
- finish = start,
- info = {
- symbol = '>'
- }
- }
- end,
- ErrAssign = function (start, finish)
- PushError {
- type = 'ERR_ASSIGN_AS_EQ',
- start = start,
- finish = finish - 1,
- fix = {
- title = 'FIX_ASSIGN_AS_EQ',
- {
- start = start,
- finish = finish - 1,
- text = '=',
- }
- }
- }
- end,
- ErrEQ = function (start, finish)
- PushError {
- type = 'ERR_EQ_AS_ASSIGN',
- start = start,
- finish = finish - 1,
- fix = {
- title = 'FIX_EQ_AS_ASSIGN',
- {
- start = start,
- finish = finish - 1,
- text = '==',
- }
- }
- }
- return '=='
- end,
- ErrUEQ = function (start, finish)
- PushError {
- type = 'ERR_UEQ',
- start = start,
- finish = finish - 1,
- fix = {
- title = 'FIX_UEQ',
- {
- start = start,
- finish = finish - 1,
- text = '~=',
- }
- }
- }
- return '=='
- end,
- ErrThen = function (start, finish)
- PushError {
- type = 'ERR_THEN_AS_DO',
- start = start,
- finish = finish - 1,
- fix = {
- title = 'FIX_THEN_AS_DO',
- {
- start = start,
- finish = finish - 1,
- text = 'then',
- }
- }
- }
- return start, finish
- end,
- ErrDo = function (start, finish)
- PushError {
- type = 'ERR_DO_AS_THEN',
- start = start,
- finish = finish - 1,
- fix = {
- title = 'FIX_DO_AS_THEN',
- {
- start = start,
- finish = finish - 1,
- text = 'do',
- }
- }
- }
- return start, finish
- end,
-}
-
---for k, v in pairs(emmy.ast) do
--- Defs[k] = v
---end
-
-local function init(state)
- State = state
- PushError = state.pushError
- PushDiag = state.pushDiag
- emmy.init(State)
-end
-
-local function close()
- State = nil
- PushError = nil
- PushDiag = nil
-end
-
-return {
- defs = Defs,
- init = init,
- close = close,
-}
diff --git a/server-beta/src/parser/calcline.lua b/server-beta/src/parser/calcline.lua
deleted file mode 100644
index 26f475d9..00000000
--- a/server-beta/src/parser/calcline.lua
+++ /dev/null
@@ -1,93 +0,0 @@
-local m = require 'lpeglabel'
-
-local row
-local fl
-local NL = (m.P'\r\n' + m.S'\r\n') * m.Cp() / function (pos)
- row = row + 1
- fl = pos
-end
-local ROWCOL = (NL + m.P(1))^0
-local function rowcol(str, n)
- row = 1
- fl = 1
- ROWCOL:match(str:sub(1, n))
- local col = n - fl + 1
- return row, col
-end
-
-local function rowcol_utf8(str, n)
- row = 1
- fl = 1
- ROWCOL:match(str:sub(1, n))
- return row, utf8.len(str, fl, n)
-end
-
-local function position(str, _row, _col)
- local cur = 1
- local row = 1
- while true do
- if row == _row then
- return cur + _col - 1
- elseif row > _row then
- return cur - 1
- end
- local pos = str:find('[\r\n]', cur)
- if not pos then
- return #str
- end
- row = row + 1
- if str:sub(pos, pos+1) == '\r\n' then
- cur = pos + 2
- else
- cur = pos + 1
- end
- end
-end
-
-local function position_utf8(str, _row, _col)
- local cur = 1
- local row = 1
- while true do
- if row == _row then
- return utf8.offset(str, _col, cur)
- elseif row > _row then
- return cur - 1
- end
- local pos = str:find('[\r\n]', cur)
- if not pos then
- return #str
- end
- row = row + 1
- if str:sub(pos, pos+1) == '\r\n' then
- cur = pos + 2
- else
- cur = pos + 1
- end
- end
-end
-
-local NL = m.P'\r\n' + m.S'\r\n'
-
-local function line(str, row)
- local count = 0
- local res
- local LINE = m.Cmt((1 - NL)^0, function (_, _, c)
- count = count + 1
- if count == row then
- res = c
- return false
- end
- return true
- end)
- local MATCH = (LINE * NL)^0 * LINE
- MATCH:match(str)
- return res
-end
-
-return {
- rowcol = rowcol,
- rowcol_utf8 = rowcol_utf8,
- position = position,
- position_utf8 = position_utf8,
- line = line,
-}
diff --git a/server-beta/src/parser/compile.lua b/server-beta/src/parser/compile.lua
deleted file mode 100644
index bcd9ecc8..00000000
--- a/server-beta/src/parser/compile.lua
+++ /dev/null
@@ -1,549 +0,0 @@
-local guide = require 'parser.guide'
-local type = type
-
-local specials = {
- ['_G'] = true,
- ['rawset'] = true,
- ['rawget'] = true,
- ['setmetatable'] = true,
- ['require'] = true,
- ['dofile'] = true,
- ['loadfile'] = true,
- ['pcall'] = true,
- ['xpcall'] = true,
-}
-
-_ENV = nil
-
-local LocalLimit = 200
-local pushError, Compile, CompileBlock, Block, GoToTag, ENVMode, Compiled, LocalCount, Version, Root
-
-local function addRef(node, obj)
- if not node.ref then
- node.ref = {}
- end
- node.ref[#node.ref+1] = obj
- obj.node = node
-end
-
-local function addSpecial(name, obj)
- if not Root.specials then
- Root.specials = {}
- end
- if not Root.specials[name] then
- Root.specials[name] = {}
- end
- Root.specials[name][#Root.specials[name]+1] = obj
- obj.special = name
-end
-
-local vmMap = {
- ['getname'] = function (obj)
- local loc = guide.getLocal(obj, obj[1], obj.start)
- if loc then
- obj.type = 'getlocal'
- obj.loc = loc
- addRef(loc, obj)
- if loc.special then
- addSpecial(loc.special, obj)
- end
- else
- obj.type = 'getglobal'
- if ENVMode == '_ENV' then
- local node = guide.getLocal(obj, '_ENV', obj.start)
- if node then
- addRef(node, obj)
- end
- end
- local name = obj[1]
- if specials[name] then
- addSpecial(name, obj)
- end
- end
- return obj
- end,
- ['getfield'] = function (obj)
- Compile(obj.node, obj)
- end,
- ['call'] = function (obj)
- Compile(obj.node, obj)
- Compile(obj.args, obj)
- end,
- ['callargs'] = function (obj)
- for i = 1, #obj do
- Compile(obj[i], obj)
- end
- end,
- ['binary'] = function (obj)
- Compile(obj[1], obj)
- Compile(obj[2], obj)
- end,
- ['unary'] = function (obj)
- Compile(obj[1], obj)
- end,
- ['varargs'] = function (obj)
- local func = guide.getParentFunction(obj)
- if func then
- local index, vararg = guide.getFunctionVarArgs(func)
- if not index then
- pushError {
- type = 'UNEXPECT_DOTS',
- start = obj.start,
- finish = obj.finish,
- }
- end
- if vararg then
- if not vararg.ref then
- vararg.ref = {}
- end
- vararg.ref[#vararg.ref+1] = obj
- end
- end
- end,
- ['paren'] = function (obj)
- Compile(obj.exp, obj)
- end,
- ['getindex'] = function (obj)
- Compile(obj.node, obj)
- Compile(obj.index, obj)
- end,
- ['setindex'] = function (obj)
- Compile(obj.node, obj)
- Compile(obj.index, obj)
- Compile(obj.value, obj)
- end,
- ['getmethod'] = function (obj)
- Compile(obj.node, obj)
- Compile(obj.method, obj)
- end,
- ['setmethod'] = function (obj)
- Compile(obj.node, obj)
- Compile(obj.method, obj)
- local value = obj.value
- value.localself = {
- type = 'local',
- start = 0,
- finish = 0,
- method = obj,
- effect = obj.finish,
- tag = 'self',
- [1] = 'self',
- }
- Compile(value, obj)
- end,
- ['function'] = function (obj)
- local lastBlock = Block
- local LastLocalCount = LocalCount
- Block = obj
- LocalCount = 0
- if obj.localself then
- Compile(obj.localself, obj)
- obj.localself = nil
- end
- Compile(obj.args, obj)
- for i = 1, #obj do
- Compile(obj[i], obj)
- end
- Block = lastBlock
- LocalCount = LastLocalCount
- end,
- ['funcargs'] = function (obj)
- for i = 1, #obj do
- Compile(obj[i], obj)
- end
- end,
- ['table'] = function (obj)
- for i = 1, #obj do
- Compile(obj[i], obj)
- end
- end,
- ['tablefield'] = function (obj)
- Compile(obj.value, obj)
- end,
- ['tableindex'] = function (obj)
- Compile(obj.index, obj)
- Compile(obj.value, obj)
- end,
- ['index'] = function (obj)
- Compile(obj.index, obj)
- end,
- ['select'] = function (obj)
- local vararg = obj.vararg
- if vararg.parent then
- if not vararg.extParent then
- vararg.extParent = {}
- end
- vararg.extParent[#vararg.extParent+1] = obj
- else
- Compile(vararg, obj)
- end
- end,
- ['setname'] = function (obj)
- Compile(obj.value, obj)
- local loc = guide.getLocal(obj, obj[1], obj.start)
- if loc then
- obj.type = 'setlocal'
- obj.loc = loc
- addRef(loc, obj)
- if loc.attrs then
- local const
- for i = 1, #loc.attrs do
- local attr = loc.attrs[i][1]
- if attr == 'const'
- or attr == 'close' then
- const = true
- break
- end
- end
- if const then
- pushError {
- type = 'SET_CONST',
- start = obj.start,
- finish = obj.finish,
- }
- end
- end
- else
- obj.type = 'setglobal'
- if ENVMode == '_ENV' then
- local node = guide.getLocal(obj, '_ENV', obj.start)
- if node then
- addRef(node, obj)
- end
- end
- end
- end,
- ['local'] = function (obj)
- local attrs = obj.attrs
- if attrs then
- for i = 1, #attrs do
- Compile(attrs[i], obj)
- end
- end
- if Block then
- if not Block.locals then
- Block.locals = {}
- end
- Block.locals[#Block.locals+1] = obj
- LocalCount = LocalCount + 1
- if LocalCount > LocalLimit then
- pushError {
- type = 'LOCAL_LIMIT',
- start = obj.start,
- finish = obj.finish,
- }
- end
- end
- if obj.localfunction then
- obj.localfunction = nil
- end
- Compile(obj.value, obj)
- if obj.value and obj.value.special then
- addSpecial(obj.value.special, obj)
- end
- end,
- ['setfield'] = function (obj)
- Compile(obj.node, obj)
- Compile(obj.value, obj)
- end,
- ['do'] = function (obj)
- local lastBlock = Block
- Block = obj
- CompileBlock(obj, obj)
- if Block.locals then
- LocalCount = LocalCount - #Block.locals
- end
- Block = lastBlock
- end,
- ['return'] = function (obj)
- for i = 1, #obj do
- Compile(obj[i], obj)
- end
- if Block and Block[#Block] ~= obj then
- pushError {
- type = 'ACTION_AFTER_RETURN',
- start = obj.start,
- finish = obj.finish,
- }
- end
- local func = guide.getParentFunction(obj)
- if func then
- if not func.returns then
- func.returns = {}
- end
- func.returns[#func.returns+1] = obj
- end
- end,
- ['label'] = function (obj)
- local block = guide.getBlock(obj)
- if block then
- if not block.labels then
- block.labels = {}
- end
- local name = obj[1]
- local label = guide.getLabel(block, name)
- if label then
- if Version == 'Lua 5.4'
- or block == guide.getBlock(label) then
- pushError {
- type = 'REDEFINED_LABEL',
- start = obj.start,
- finish = obj.finish,
- relative = {
- {
- label.start,
- label.finish,
- }
- }
- }
- end
- end
- block.labels[name] = obj
- end
- end,
- ['goto'] = function (obj)
- GoToTag[#GoToTag+1] = obj
- end,
- ['if'] = function (obj)
- for i = 1, #obj do
- Compile(obj[i], obj)
- end
- end,
- ['ifblock'] = function (obj)
- local lastBlock = Block
- Block = obj
- Compile(obj.filter, obj)
- CompileBlock(obj, obj)
- if Block.locals then
- LocalCount = LocalCount - #Block.locals
- end
- Block = lastBlock
- end,
- ['elseifblock'] = function (obj)
- local lastBlock = Block
- Block = obj
- Compile(obj.filter, obj)
- CompileBlock(obj, obj)
- if Block.locals then
- LocalCount = LocalCount - #Block.locals
- end
- Block = lastBlock
- end,
- ['elseblock'] = function (obj)
- local lastBlock = Block
- Block = obj
- CompileBlock(obj, obj)
- if Block.locals then
- LocalCount = LocalCount - #Block.locals
- end
- Block = lastBlock
- end,
- ['loop'] = function (obj)
- local lastBlock = Block
- Block = obj
- Compile(obj.loc, obj)
- Compile(obj.max, obj)
- Compile(obj.step, obj)
- CompileBlock(obj, obj)
- if Block.locals then
- LocalCount = LocalCount - #Block.locals
- end
- Block = lastBlock
- end,
- ['in'] = function (obj)
- local lastBlock = Block
- Block = obj
- local keys = obj.keys
- for i = 1, #keys do
- Compile(keys[i], obj)
- end
- CompileBlock(obj, obj)
- if Block.locals then
- LocalCount = LocalCount - #Block.locals
- end
- Block = lastBlock
- end,
- ['while'] = function (obj)
- local lastBlock = Block
- Block = obj
- Compile(obj.filter, obj)
- CompileBlock(obj, obj)
- if Block.locals then
- LocalCount = LocalCount - #Block.locals
- end
- Block = lastBlock
- end,
- ['repeat'] = function (obj)
- local lastBlock = Block
- Block = obj
- CompileBlock(obj, obj)
- Compile(obj.filter, obj)
- if Block.locals then
- LocalCount = LocalCount - #Block.locals
- end
- Block = lastBlock
- end,
- ['break'] = function (obj)
- local block = guide.getBreakBlock(obj)
- if block then
- if not block.breaks then
- block.breaks = {}
- end
- block.breaks[#block.breaks+1] = obj
- else
- pushError {
- type = 'BREAK_OUTSIDE',
- start = obj.start,
- finish = obj.finish,
- }
- end
- end,
- ['main'] = function (obj)
- Block = obj
- if ENVMode == '_ENV' then
- Compile({
- type = 'local',
- start = 0,
- finish = 0,
- effect = 0,
- tag = '_ENV',
- special= '_G',
- [1] = '_ENV',
- }, obj)
- end
- --- _ENV 是上值,不计入局部变量计数
- LocalCount = 0
- CompileBlock(obj, obj)
- Block = nil
- end,
-}
-
-function CompileBlock(obj, parent)
- for i = 1, #obj do
- local act = obj[i]
- local f = vmMap[act.type]
- if f then
- act.parent = parent
- f(act)
- end
- end
-end
-
-function Compile(obj, parent)
- if not obj then
- return nil
- end
- if Compiled[obj] then
- return
- end
- Compiled[obj] = true
- obj.parent = parent
- local f = vmMap[obj.type]
- if not f then
- return
- end
- f(obj)
-end
-
-local function compileGoTo(obj)
- local name = obj[1]
- local label = guide.getLabel(obj, name)
- if not label then
- pushError {
- type = 'NO_VISIBLE_LABEL',
- start = obj.start,
- finish = obj.finish,
- info = {
- label = name,
- }
- }
- return
- end
- if not label.ref then
- label.ref = {}
- end
- label.ref[#label.ref+1] = obj
-
- -- 如果有局部变量在 goto 与 label 之间声明,
- -- 并在 label 之后使用,则算作语法错误
-
- -- 如果 label 在 goto 之前声明,那么不会有中间声明的局部变量
- if obj.start > label.start then
- return
- end
-
- local block = guide.getBlock(obj)
- local locals = block and block.locals
- if not locals then
- return
- end
-
- for i = 1, #locals do
- local loc = locals[i]
- -- 检查局部变量声明位置为 goto 与 label 之间
- if loc.start < obj.start or loc.finish > label.finish then
- goto CONTINUE
- end
- -- 检查局部变量的使用位置在 label 之后
- local refs = loc.ref
- if not refs then
- goto CONTINUE
- end
- for j = 1, #refs do
- local ref = refs[j]
- if ref.finish > label.finish then
- pushError {
- type = 'JUMP_LOCAL_SCOPE',
- start = obj.start,
- finish = obj.finish,
- info = {
- loc = loc[1],
- },
- relative = {
- {
- start = label.start,
- finish = label.finish,
- },
- {
- start = loc.start,
- finish = loc.finish,
- }
- },
- }
- return
- end
- end
- ::CONTINUE::
- end
-end
-
-local function PostCompile()
- for i = 1, #GoToTag do
- compileGoTo(GoToTag[i])
- end
-end
-
-return function (self, lua, mode, version)
- local state, err = self:parse(lua, mode, version)
- if not state then
- return nil, err
- end
- pushError = state.pushError
- if version == 'Lua 5.1' or version == 'LuaJIT' then
- ENVMode = 'fenv'
- else
- ENVMode = '_ENV'
- end
- Compiled = {}
- GoToTag = {}
- LocalCount = 0
- Version = version
- Root = state.ast
- if type(state.ast) == 'table' then
- Compile(state.ast)
- end
- PostCompile()
- Compiled = nil
- GoToTag = nil
- return state
-end
diff --git a/server-beta/src/parser/emmy.lua b/server-beta/src/parser/emmy.lua
deleted file mode 100644
index 4c1e087a..00000000
--- a/server-beta/src/parser/emmy.lua
+++ /dev/null
@@ -1,321 +0,0 @@
-local State
-local pushError
-
-local grammar = [[
-EmmyLua <- ({} '---' EmmyBody {} ShortComment)
- -> EmmyLua
-EmmySp <- (!'---@' !'---' Comment / %s / %nl)*
-EmmyComments <- (EmmyComment (%nl EmmyComMulti / %nl EmmyComSingle)*)
-EmmyComment <- EmmySp %s* {(!%nl .)*}
-EmmyComMulti <- EmmySp '---|' {} -> en {(!%nl .)*}
-EmmyComSingle <- EmmySp '---' !'@' %s* {} -> ' ' {(!%nl .)*}
-EmmyBody <- '@class' %s+ EmmyClass -> EmmyClass
- / '@type' %s+ EmmyType -> EmmyType
- / '@alias' %s+ EmmyAlias -> EmmyAlias
- / '@param' %s+ EmmyParam -> EmmyParam
- / '@return' %s+ EmmyReturn -> EmmyReturn
- / '@field' %s+ EmmyField -> EmmyField
- / '@generic' %s+ EmmyGeneric -> EmmyGeneric
- / '@vararg' %s+ EmmyVararg -> EmmyVararg
- / '@language' %s+ EmmyLanguage -> EmmyLanguage
- / '@see' %s+ EmmySee -> EmmySee
- / '@overload' %s+ EmmyOverLoad -> EmmyOverLoad
- / %s* EmmyComments -> EmmyComment
- / EmmyIncomplete
-
-EmmyName <- ({} {[a-zA-Z_] [a-zA-Z0-9_]*})
- -> EmmyName
-MustEmmyName <- EmmyName / DirtyEmmyName
-DirtyEmmyName <- {} -> DirtyEmmyName
-EmmyLongName <- ({} {(!%nl .)+})
- -> EmmyName
-EmmyIncomplete <- MustEmmyName
- -> EmmyIncomplete
-
-EmmyClass <- (MustEmmyName EmmyParentClass?)
-EmmyParentClass <- %s* {} ':' %s* MustEmmyName
-
-EmmyType <- EmmyTypeUnits EmmyTypeEnums
-EmmyTypeUnits <- {|
- EmmyTypeUnit?
- (%s* '|' %s* !String EmmyTypeUnit)*
- |}
-EmmyTypeEnums <- {| EmmyTypeEnum* |}
-EmmyTypeUnit <- EmmyFunctionType
- / EmmyTableType
- / EmmyArrayType
- / EmmyCommonType
-EmmyCommonType <- EmmyName
- -> EmmyCommonType
-EmmyTypeEnum <- %s* (%nl %s* '---')? '|'? EmmyEnum
- -> EmmyTypeEnum
-EmmyEnum <- %s* {'>'?} %s* String (EmmyEnumComment / (!%nl !'|' .)*)
-EmmyEnumComment <- %s* '#' %s* {(!%nl .)*}
-
-EmmyAlias <- MustEmmyName %s* EmmyType EmmyTypeEnum*
-
-EmmyParam <- MustEmmyName %s* EmmyType %s* EmmyOption %s* EmmyTypeEnum*
-EmmyOption <- Table?
- -> EmmyOption
-
-EmmyReturn <- {} %nil {} Table -> EmmyOption
- / {} EmmyType {} EmmyOption
-
-EmmyField <- (EmmyFieldAccess MustEmmyName %s* EmmyType)
-EmmyFieldAccess <- ({'public'} Cut %s*)
- / ({'protected'} Cut %s*)
- / ({'private'} Cut %s*)
- / {} -> 'public'
-
-EmmyGeneric <- EmmyGenericBlock
- (%s* ',' %s* EmmyGenericBlock)*
-EmmyGenericBlock<- (MustEmmyName %s* (':' %s* EmmyType)?)
- -> EmmyGenericBlock
-
-EmmyVararg <- EmmyType
-
-EmmyLanguage <- MustEmmyName
-
-EmmyArrayType <- ({} MustEmmyName -> EmmyCommonType {} '[' DirtyBR)
- -> EmmyArrayType
- / ({} PL EmmyCommonType DirtyPR '[' DirtyBR)
- -> EmmyArrayType
-
-EmmyTableType <- ({} 'table' Cut '<' %s* EmmyType %s* ',' %s* EmmyType %s* '>' {})
- -> EmmyTableType
-
-EmmyFunctionType<- ({} 'fun' Cut %s* EmmyFunctionArgs %s* EmmyFunctionRtns {})
- -> EmmyFunctionType
-EmmyFunctionArgs<- ('(' %s* EmmyFunctionArg %s* (',' %s* EmmyFunctionArg %s*)* DirtyPR)
- -> EmmyFunctionArgs
- / '(' %nil DirtyPR -> None
- / %nil
-EmmyFunctionRtns<- (':' %s* EmmyType (%s* ',' %s* EmmyType)*)
- -> EmmyFunctionRtns
- / %nil
-EmmyFunctionArg <- MustEmmyName %s* ':' %s* EmmyType
-
-EmmySee <- {} MustEmmyName %s* '#' %s* MustEmmyName {}
-EmmyOverLoad <- EmmyFunctionType
-]]
-
-local ast = {
- EmmyLua = function (start, emmy, finish)
- emmy.start = start
- emmy.finish = finish - 1
- State.emmy[#State.emmy+1] = emmy
- end,
- EmmyName = function (start, str)
- return {
- type = 'name',
- start = start,
- finish = start + #str - 1,
- [1] = str,
- }
- end,
- DirtyEmmyName = function (pos)
- pushError {
- type = 'MISS_NAME',
- level = 'warning',
- start = pos,
- finish = pos,
- }
- return {
- type = 'emmyName',
- start = pos-1,
- finish = pos-1,
- [1] = ''
- }
- end,
- EmmyClass = function (class, startPos, extends)
- if extends and extends[1] == '' then
- extends.start = startPos
- end
- return {
- type = 'class',
- class = class,
- extends = extends,
- }
- end,
- EmmyType = function (types, enums)
- local result = {
- type = 'type',
- types = types,
- enums = enums,
- }
- return result
- end,
- EmmyCommonType = function (name)
- return {
- type = 'common',
- start = name.start,
- finish = name.finish,
- name = name,
- }
- end,
- EmmyArrayType = function (start, emmy, _, finish)
- emmy.type = 'emmyArrayType'
- emmy.start = start
- emmy.finish = finish - 1
- return emmy
- end,
- EmmyTableType = function (start, keyType, valueType, finish)
- return {
- type = 'emmyTableType',
- start = start,
- finish = finish - 1,
- [1] = keyType,
- [2] = valueType,
- }
- end,
- EmmyFunctionType = function (start, args, returns, finish)
- local result = {
- start = start,
- finish = finish - 1,
- type = 'emmyFunctionType',
- args = args,
- returns = returns,
- }
- return result
- end,
- EmmyFunctionRtns = function (...)
- return {...}
- end,
- EmmyFunctionArgs = function (...)
- local args = {...}
- args[#args] = nil
- return args
- end,
- EmmyAlias = function (name, emmyName, ...)
- return {
- type = 'emmyAlias',
- start = name.start,
- finish = emmyName.finish,
- name,
- emmyName,
- ...
- }
- end,
- EmmyParam = function (argName, emmyName, option, ...)
- local emmy = {
- type = 'emmyParam',
- option = option,
- argName,
- emmyName,
- ...
- }
- emmy.start = emmy[1].start
- emmy.finish = emmy[#emmy].finish
- return emmy
- end,
- EmmyReturn = function (start, type, finish, option)
- local emmy = {
- type = 'emmyReturn',
- option = option,
- start = start,
- finish = finish - 1,
- [1] = type,
- }
- return emmy
- end,
- EmmyField = function (access, fieldName, ...)
- local obj = {
- type = 'emmyField',
- access, fieldName,
- ...
- }
- obj.start = obj[2].start
- obj.finish = obj[3].finish
- return obj
- end,
- EmmyGenericBlock = function (genericName, parentName)
- return {
- start = genericName.start,
- finish = parentName and parentName.finish or genericName.finish,
- genericName,
- parentName,
- }
- end,
- EmmyGeneric = function (...)
- local emmy = {
- type = 'emmyGeneric',
- ...
- }
- emmy.start = emmy[1].start
- emmy.finish = emmy[#emmy].finish
- return emmy
- end,
- EmmyVararg = function (typeName)
- return {
- type = 'emmyVararg',
- start = typeName.start,
- finish = typeName.finish,
- typeName,
- }
- end,
- EmmyLanguage = function (language)
- return {
- type = 'emmyLanguage',
- start = language.start,
- finish = language.finish,
- language,
- }
- end,
- EmmySee = function (start, className, methodName, finish)
- return {
- type = 'emmySee',
- start = start,
- finish = finish - 1,
- className, methodName
- }
- end,
- EmmyOverLoad = function (EmmyFunctionType)
- EmmyFunctionType.type = 'emmyOverLoad'
- return EmmyFunctionType
- end,
- EmmyIncomplete = function (emmyName)
- emmyName.type = 'emmyIncomplete'
- return emmyName
- end,
- EmmyComment = function (...)
- return {
- type = 'emmyComment',
- [1] = table.concat({...}),
- }
- end,
- EmmyOption = function (options)
- if not options or options == '' then
- return nil
- end
- local option = {}
- for _, pair in ipairs(options) do
- if pair.type == 'pair' then
- local key = pair[1]
- local value = pair[2]
- if key.type == 'name' then
- option[key[1]] = value[1]
- end
- end
- end
- return option
- end,
- EmmyTypeEnum = function (default, enum, comment)
- enum.type = 'enum'
- if default ~= '' then
- enum.default = true
- end
- enum.comment = comment
- return enum
- end,
-}
-
-local function init(state)
- State = state
- pushError = state.pushError
-end
-
-return {
- grammar = grammar,
- ast = ast,
- init = init,
-}
diff --git a/server-beta/src/parser/grammar.lua b/server-beta/src/parser/grammar.lua
deleted file mode 100644
index fd699bd4..00000000
--- a/server-beta/src/parser/grammar.lua
+++ /dev/null
@@ -1,537 +0,0 @@
-local re = require 'parser.relabel'
-local m = require 'lpeglabel'
-local emmy = require 'parser.emmy'
-local ast = require 'parser.ast'
-
-local scriptBuf = ''
-local compiled = {}
-local defs = ast.defs
-
--- goto 可以作为名字,合法性之后处理
-local RESERVED = {
- ['and'] = true,
- ['break'] = true,
- ['do'] = true,
- ['else'] = true,
- ['elseif'] = true,
- ['end'] = true,
- ['false'] = true,
- ['for'] = true,
- ['function'] = true,
- ['if'] = true,
- ['in'] = true,
- ['local'] = true,
- ['nil'] = true,
- ['not'] = true,
- ['or'] = true,
- ['repeat'] = true,
- ['return'] = true,
- ['then'] = true,
- ['true'] = true,
- ['until'] = true,
- ['while'] = true,
-}
-
-defs.nl = (m.P'\r\n' + m.S'\r\n')
-defs.s = m.S' \t'
-defs.S = - defs.s
-defs.ea = '\a'
-defs.eb = '\b'
-defs.ef = '\f'
-defs.en = '\n'
-defs.er = '\r'
-defs.et = '\t'
-defs.ev = '\v'
-defs['nil'] = m.Cp() / function () return nil end
-defs['false'] = m.Cp() / function () return false end
-defs.NotReserved = function (_, _, str)
- if RESERVED[str] then
- return false
- end
- return true
-end
-defs.Reserved = function (_, _, str)
- if RESERVED[str] then
- return true
- end
- return false
-end
-defs.None = function () end
-defs.np = m.Cp() / function (n) return n+1 end
-
-m.setmaxstack(1000)
-
-local eof = re.compile '!. / %{SYNTAX_ERROR}'
-
-local function grammar(tag)
- return function (script)
- scriptBuf = script .. '\r\n' .. scriptBuf
- compiled[tag] = re.compile(scriptBuf, defs) * eof
- end
-end
-
-local function errorpos(pos, err)
- return {
- type = 'UNKNOWN',
- start = pos or 0,
- finish = pos or 0,
- err = err,
- }
-end
-
-grammar 'Comment' [[
-Comment <- LongComment
- / '--' ShortComment
-LongComment <- ('--[' {} {:eq: '='* :} {} '['
- {(!CommentClose .)*}
- (CommentClose / {}))
- -> LongComment
- / (
- {} '/*' {}
- (!'*/' .)*
- {} '*/' {}
- )
- -> CLongComment
-CommentClose <- ']' =eq ']'
-ShortComment <- (!%nl .)*
-]]
-
-grammar 'Sp' [[
-Sp <- (EmmyLua / Comment / %nl / %s)*
-Sps <- (EmmyLua / Comment / %nl / %s)+
-
--- 占位
-EmmyLua <- !. .
-]]
-
-grammar 'Common' [[
-Word <- [a-zA-Z0-9_]
-Cut <- !Word
-X16 <- [a-fA-F0-9]
-Rest <- (!%nl .)*
-
-AND <- Sp {'and'} Cut
-BREAK <- Sp 'break' Cut
-FALSE <- Sp 'false' Cut
-GOTO <- Sp 'goto' Cut
-LOCAL <- Sp 'local' Cut
-NIL <- Sp 'nil' Cut
-NOT <- Sp 'not' Cut
-OR <- Sp {'or'} Cut
-RETURN <- Sp 'return' Cut
-TRUE <- Sp 'true' Cut
-
-DO <- Sp {} 'do' {} Cut
- / Sp({} 'then' {} Cut) -> ErrDo
-IF <- Sp {} 'if' {} Cut
-ELSE <- Sp {} 'else' {} Cut
-ELSEIF <- Sp {} 'elseif' {} Cut
-END <- Sp {} 'end' {} Cut
-FOR <- Sp {} 'for' {} Cut
-FUNCTION <- Sp {} 'function' {} Cut
-IN <- Sp {} 'in' {} Cut
-REPEAT <- Sp {} 'repeat' {} Cut
-THEN <- Sp {} 'then' {} Cut
- / Sp({} 'do' {} Cut) -> ErrThen
-UNTIL <- Sp {} 'until' {} Cut
-WHILE <- Sp {} 'while' {} Cut
-
-
-Esc <- '\' -> ''
- EChar
-EChar <- 'a' -> ea
- / 'b' -> eb
- / 'f' -> ef
- / 'n' -> en
- / 'r' -> er
- / 't' -> et
- / 'v' -> ev
- / '\'
- / '"'
- / "'"
- / %nl
- / ('z' (%nl / %s)*) -> ''
- / ({} 'x' {X16 X16}) -> Char16
- / ([0-9] [0-9]? [0-9]?) -> Char10
- / ('u{' {} {Word*} '}') -> CharUtf8
- -- 错误处理
- / 'x' {} -> MissEscX
- / 'u' !'{' {} -> MissTL
- / 'u{' Word* !'}' {} -> MissTR
- / {} -> ErrEsc
-
-BOR <- Sp {'|'}
-BXOR <- Sp {'~'} !'='
-BAND <- Sp {'&'}
-Bshift <- Sp {BshiftList}
-BshiftList <- '<<'
- / '>>'
-Concat <- Sp {'..'}
-Adds <- Sp {AddsList}
-AddsList <- '+'
- / '-'
-Muls <- Sp {MulsList}
-MulsList <- '*'
- / '//'
- / '/'
- / '%'
-Unary <- Sp {} {UnaryList}
-UnaryList <- NOT
- / '#'
- / '-'
- / '~' !'='
-POWER <- Sp {'^'}
-
-BinaryOp <-( Sp {} {'or'} Cut
- / Sp {} {'and'} Cut
- / Sp {} {'<=' / '>=' / '<'!'<' / '>'!'>' / '~=' / '=='}
- / Sp {} ({} '=' {}) -> ErrEQ
- / Sp {} ({} '!=' {}) -> ErrUEQ
- / Sp {} {'|'}
- / Sp {} {'~'}
- / Sp {} {'&'}
- / Sp {} {'<<' / '>>'}
- / Sp {} {'..'} !'.'
- / Sp {} {'+' / '-'}
- / Sp {} {'*' / '//' / '/' / '%'}
- / Sp {} {'^'}
- )-> BinaryOp
-UnaryOp <-( Sp {} {'not' Cut / '#' / '~' !'=' / '-' !'-'}
- )-> UnaryOp
-
-PL <- Sp '('
-PR <- Sp ')'
-BL <- Sp '[' !'[' !'='
-BR <- Sp ']'
-TL <- Sp '{'
-TR <- Sp '}'
-COMMA <- Sp ({} ',')
- -> COMMA
-SEMICOLON <- Sp ({} ';')
- -> SEMICOLON
-DOTS <- Sp ({} '...')
- -> DOTS
-DOT <- Sp ({} '.' !'.')
- -> DOT
-COLON <- Sp ({} ':' !':')
- -> COLON
-LABEL <- Sp '::'
-ASSIGN <- Sp '=' !'='
-AssignOrEQ <- Sp ({} '==' {})
- -> ErrAssign
- / Sp '='
-
-DirtyBR <- BR / {} -> MissBR
-DirtyTR <- TR / {} -> MissTR
-DirtyPR <- PR / {} -> MissPR
-DirtyLabel <- LABEL / {} -> MissLabel
-NeedEnd <- END / {} -> MissEnd
-NeedDo <- DO / {} -> MissDo
-NeedAssign <- ASSIGN / {} -> MissAssign
-NeedComma <- COMMA / {} -> MissComma
-NeedIn <- IN / {} -> MissIn
-NeedUntil <- UNTIL / {} -> MissUntil
-NeedThen <- THEN / {} -> MissThen
-]]
-
-grammar 'Nil' [[
-Nil <- Sp ({} -> Nil) NIL
-]]
-
-grammar 'Boolean' [[
-Boolean <- Sp ({} -> True) TRUE
- / Sp ({} -> False) FALSE
-]]
-
-grammar 'String' [[
-String <- Sp ({} StringDef {})
- -> String
-StringDef <- {'"'}
- {~(Esc / !%nl !'"' .)*~} -> 1
- ('"' / {} -> MissQuote1)
- / {"'"}
- {~(Esc / !%nl !"'" .)*~} -> 1
- ("'" / {} -> MissQuote2)
- / ('[' {} {:eq: '='* :} {} '[' %nl?
- {(!StringClose .)*} -> 1
- (StringClose / {}))
- -> LongString
-StringClose <- ']' =eq ']'
-]]
-
-grammar 'Number' [[
-Number <- Sp ({} {NumberDef} {}) -> Number
- NumberSuffix?
- ErrNumber?
-NumberDef <- Number16 / Number10
-NumberSuffix<- ({} {[uU]? [lL] [lL]}) -> FFINumber
- / ({} {[iI]}) -> ImaginaryNumber
-ErrNumber <- ({} {([0-9a-zA-Z] / '.')+}) -> UnknownSymbol
-
-Number10 <- Float10 Float10Exp?
- / Integer10 Float10? Float10Exp?
-Integer10 <- [0-9]+ ('.' [0-9]*)?
-Float10 <- '.' [0-9]+
-Float10Exp <- [eE] [+-]? [0-9]+
- / ({} [eE] [+-]? {}) -> MissExponent
-
-Number16 <- '0' [xX] Float16 Float16Exp?
- / '0' [xX] Integer16 Float16? Float16Exp?
-Integer16 <- X16+ ('.' X16*)?
- / ({} {Word*}) -> MustX16
-Float16 <- '.' X16+
- / '.' ({} {Word*}) -> MustX16
-Float16Exp <- [pP] [+-]? [0-9]+
- / ({} [pP] [+-]? {}) -> MissExponent
-]]
-
-grammar 'Name' [[
-Name <- Sp ({} NameBody {})
- -> Name
-NameBody <- {[a-zA-Z_] [a-zA-Z0-9_]*}
-FreeName <- Sp ({} {NameBody=>NotReserved} {})
- -> Name
-KeyWord <- Sp NameBody=>Reserved
-MustName <- Name / DirtyName
-DirtyName <- {} -> DirtyName
-]]
-
-grammar 'Exp' [[
-Exp <- (UnUnit BinUnit*)
- -> Binary
-BinUnit <- (BinaryOp UnUnit?)
- -> SubBinary
-UnUnit <- ExpUnit
- / (UnaryOp+ (ExpUnit / MissExp))
- -> Unary
-ExpUnit <- Nil
- / Boolean
- / String
- / Number
- / Dots
- / Table
- / Function
- / Simple
-
-Simple <- {| Prefix (Sp Suffix)* |}
- -> Simple
-Prefix <- Sp ({} PL DirtyExp DirtyPR {})
- -> Paren
- / Single
-Single <- FreeName
- -> Single
-Suffix <- SuffixWithoutCall
- / ({} PL SuffixCall DirtyPR {})
- -> Call
-SuffixCall <- Sp ({} {| (COMMA / Exp)+ |} {})
- -> PackExpList
- / %nil
-SuffixWithoutCall
- <- (DOT (Name / MissField))
- -> GetField
- / ({} BL DirtyExp DirtyBR {})
- -> GetIndex
- / (COLON (Name / MissMethod) NeedCall)
- -> GetMethod
- / ({} {| Table |} {})
- -> Call
- / ({} {| String |} {})
- -> Call
-NeedCall <- (!(Sp CallStart) {} -> MissPL)?
-MissField <- {} -> MissField
-MissMethod <- {} -> MissMethod
-CallStart <- PL
- / TL
- / '"'
- / "'"
- / '[' '='* '['
-
-DirtyExp <- Exp
- / {} -> DirtyExp
-MaybeExp <- Exp / MissExp
-MissExp <- {} -> MissExp
-ExpList <- Sp {| MaybeExp (Sp ',' MaybeExp)* |}
-
-Dots <- DOTS
- -> VarArgs
-
-Table <- Sp ({} TL {| TableField* |} DirtyTR {})
- -> Table
-TableField <- COMMA
- / SEMICOLON
- / NewIndex
- / NewField
- / Exp
-Index <- BL DirtyExp DirtyBR
-NewIndex <- Sp ({} Index NeedAssign DirtyExp {})
- -> NewIndex
-NewField <- Sp ({} MustName ASSIGN DirtyExp {})
- -> NewField
-
-Function <- FunctionBody
- -> Function
-FuncArgs <- Sp ({} PL {| FuncArg+ |} DirtyPR {})
- -> FuncArgs
- / PL DirtyPR %nil
- / {} -> MissPL DirtyPR %nil
-FuncArg <- DOTS
- / Name
- / COMMA
-FunctionBody<- FUNCTION FuncArgs
- {| (!END Action)* |}
- NeedEnd
-
--- 纯占位,修改了 `relabel.lua` 使重复定义不抛错
-Action <- !END .
-]]
-
-grammar 'Action' [[
-Action <- Sp (CrtAction / UnkAction)
-CrtAction <- Semicolon
- / Do
- / Break
- / Return
- / Label
- / GoTo
- / If
- / For
- / While
- / Repeat
- / NamedFunction
- / LocalFunction
- / Local
- / Set
- / Call
- / ExpInAction
-UnkAction <- ({} {Word+})
- -> UnknownAction
- / ({} '//' {} (LongComment / ShortComment))
- -> CCommentPrefix
- / ({} {. (!Sps !CrtAction .)*})
- -> UnknownAction
-ExpInAction <- Sp ({} Exp {})
- -> ExpInAction
-
-Semicolon <- Sp ';'
-SimpleList <- {| Simple (Sp ',' Simple)* |}
-
-Do <- Sp ({}
- 'do' Cut
- {| (!END Action)* |}
- NeedEnd)
- -> Do
-
-Break <- Sp ({} BREAK {})
- -> Break
-
-Return <- Sp ({} RETURN ReturnExpList {})
- -> Return
-ReturnExpList
- <- Sp {| Exp (Sp ',' MaybeExp)* |}
- / Sp {| !Exp !',' |}
- / ExpList
-
-Label <- Sp ({} LABEL MustName DirtyLabel {})
- -> Label
-
-GoTo <- Sp ({} GOTO MustName {})
- -> GoTo
-
-If <- Sp ({} {| IfHead IfBody* |} NeedEnd)
- -> If
-
-IfHead <- Sp (IfPart {}) -> IfBlock
- / Sp (ElseIfPart {}) -> ElseIfBlock
- / Sp (ElsePart {}) -> ElseBlock
-IfBody <- Sp (ElseIfPart {}) -> ElseIfBlock
- / Sp (ElsePart {}) -> ElseBlock
-IfPart <- IF DirtyExp NeedThen
- {| (!ELSEIF !ELSE !END Action)* |}
-ElseIfPart <- ELSEIF DirtyExp NeedThen
- {| (!ELSEIF !ELSE !END Action)* |}
-ElsePart <- ELSE
- {| (!ELSEIF !ELSE !END Action)* |}
-
-For <- Loop / In
-
-Loop <- LoopBody
- -> Loop
-LoopBody <- FOR LoopArgs NeedDo
- {} {| (!END Action)* |}
- NeedEnd
-LoopArgs <- MustName AssignOrEQ
- ({} {| (COMMA / !DO !END Exp)* |} {})
- -> PackLoopArgs
-
-In <- InBody
- -> In
-InBody <- FOR InNameList NeedIn InExpList NeedDo
- {} {| (!END Action)* |}
- NeedEnd
-InNameList <- ({} {| (COMMA / !IN !DO !END Name)* |} {})
- -> PackInNameList
-InExpList <- ({} {| (COMMA / !DO !DO !END Exp)* |} {})
- -> PackInExpList
-
-While <- WhileBody
- -> While
-WhileBody <- WHILE DirtyExp NeedDo
- {| (!END Action)* |}
- NeedEnd
-
-Repeat <- (RepeatBody {})
- -> Repeat
-RepeatBody <- REPEAT
- {| (!UNTIL Action)* |}
- NeedUntil DirtyExp
-
-LocalAttr <- {| (Sp '<' Sp MustName Sp LocalAttrEnd)+ |}
- -> LocalAttr
-LocalAttrEnd<- '>' / {} -> MissGT
-Local <- Sp ({} LOCAL LocalNameList ((AssignOrEQ ExpList) / %nil) {})
- -> Local
-Set <- Sp ({} SimpleList AssignOrEQ ExpList {})
- -> Set
-LocalNameList
- <- {| LocalName (Sp ',' LocalName)* |}
-LocalName <- (MustName LocalAttr?)
- -> LocalName
-
-Call <- Simple
- -> SimpleCall
-
-LocalFunction
- <- Sp ({} LOCAL FunctionNamedBody)
- -> LocalFunction
-
-NamedFunction
- <- FunctionNamedBody
- -> NamedFunction
-FunctionNamedBody
- <- FUNCTION FuncName FuncArgs
- {| (!END Action)* |}
- NeedEnd
-FuncName <- {| Single (Sp SuffixWithoutCall)* |}
- -> Simple
- / {} -> MissName %nil
-]]
-
---grammar 'EmmyLua' (emmy.grammar)
-
-grammar 'Lua' [[
-Lua <- Head?
- ({} {| Action* |} {}) -> Lua
- Sp
-Head <- '#' (!%nl .)*
-]]
-
-return function (self, lua, mode)
- local gram = compiled[mode] or compiled['Lua']
- local r, _, pos = gram:match(lua)
- if not r then
- local err = errorpos(pos)
- return nil, err
- end
-
- return r
-end
diff --git a/server-beta/src/parser/guide.lua b/server-beta/src/parser/guide.lua
deleted file mode 100644
index af511555..00000000
--- a/server-beta/src/parser/guide.lua
+++ /dev/null
@@ -1,621 +0,0 @@
-local error = error
-local type = type
-local next = next
-local tostring = tostring
-
-_ENV = nil
-
-local m = {}
-
-local blockTypes = {
- ['while'] = true,
- ['in'] = true,
- ['loop'] = true,
- ['repeat'] = true,
- ['do'] = true,
- ['function'] = true,
- ['ifblock'] = true,
- ['elseblock'] = true,
- ['elseifblock'] = true,
- ['main'] = true,
-}
-
-local breakBlockTypes = {
- ['while'] = true,
- ['in'] = true,
- ['loop'] = true,
- ['repeat'] = true,
-}
-
-m.childMap = {
- ['main'] = {'#'},
- ['repeat'] = {'#', 'filter'},
- ['while'] = {'filter', '#'},
- ['in'] = {'keys', '#'},
- ['loop'] = {'loc', 'max', 'step', '#'},
- ['if'] = {'#'},
- ['ifblock'] = {'filter', '#'},
- ['elseifblock'] = {'filter', '#'},
- ['elseblock'] = {'#'},
- ['setfield'] = {'node', 'field', 'value'},
- ['setglobal'] = {'value'},
- ['local'] = {'attrs', 'value'},
- ['setlocal'] = {'value'},
- ['return'] = {'#'},
- ['do'] = {'#'},
- ['select'] = {'vararg'},
- ['table'] = {'#'},
- ['tableindex'] = {'index', 'value'},
- ['tablefield'] = {'field', 'value'},
- ['function'] = {'args', '#'},
- ['funcargs'] = {'#'},
- ['setmethod'] = {'node', 'method', 'value'},
- ['getmethod'] = {'node', 'method'},
- ['setindex'] = {'node', 'index', 'value'},
- ['getindex'] = {'node', 'index'},
- ['paren'] = {'exp'},
- ['call'] = {'node', 'args'},
- ['callargs'] = {'#'},
- ['getfield'] = {'node', 'field'},
- ['list'] = {'#'},
- ['binary'] = {1, 2},
- ['unary'] = {1}
-}
-
-m.actionMap = {
- ['main'] = {'#'},
- ['repeat'] = {'#'},
- ['while'] = {'#'},
- ['in'] = {'#'},
- ['loop'] = {'#'},
- ['if'] = {'#'},
- ['ifblock'] = {'#'},
- ['elseifblock'] = {'#'},
- ['elseblock'] = {'#'},
- ['do'] = {'#'},
- ['function'] = {'#'},
- ['funcargs'] = {'#'},
-}
-
---- 是否是字面量
-function m.isLiteral(obj)
- local tp = obj.type
- return tp == 'nil'
- or tp == 'boolean'
- or tp == 'string'
- or tp == 'number'
- or tp == 'table'
-end
-
---- 获取字面量
-function m.getLiteral(obj)
- local tp = obj.type
- if tp == 'boolean' then
- return obj[1]
- elseif tp == 'string' then
- return obj[1]
- elseif tp == 'number' then
- return obj[1]
- end
- return nil
-end
-
---- 寻找父函数
-function m.getParentFunction(obj)
- for _ = 1, 1000 do
- obj = obj.parent
- if not obj then
- break
- end
- local tp = obj.type
- if tp == 'function' or tp == 'main' then
- return obj
- end
- end
- return nil
-end
-
---- 寻找所在区块
-function m.getBlock(obj)
- for _ = 1, 1000 do
- if not obj then
- return nil
- end
- local tp = obj.type
- if blockTypes[tp] then
- return obj
- end
- obj = obj.parent
- end
- error('guide.getBlock overstack')
-end
-
---- 寻找所在父区块
-function m.getParentBlock(obj)
- for _ = 1, 1000 do
- obj = obj.parent
- if not obj then
- return nil
- end
- local tp = obj.type
- if blockTypes[tp] then
- return obj
- end
- end
- error('guide.getParentBlock overstack')
-end
-
---- 寻找所在可break的父区块
-function m.getBreakBlock(obj)
- for _ = 1, 1000 do
- obj = obj.parent
- if not obj then
- return nil
- end
- local tp = obj.type
- if breakBlockTypes[tp] then
- return obj
- end
- if tp == 'function' then
- return nil
- end
- end
- error('guide.getBreakBlock overstack')
-end
-
---- 寻找根区块
-function m.getRoot(obj)
- for _ = 1, 1000 do
- local parent = obj.parent
- if not parent then
- return obj
- end
- obj = parent
- end
- error('guide.getRoot overstack')
-end
-
---- 寻找函数的不定参数,返回不定参在第几个参数上,以及该参数对象。
---- 如果函数是主函数,则返回`0, nil`。
----@return table
----@return integer
-function m.getFunctionVarArgs(func)
- if func.type == 'main' then
- return 0, nil
- end
- if func.type ~= 'function' then
- return nil, nil
- end
- local args = func.args
- if not args then
- return nil, nil
- end
- for i = 1, #args do
- local arg = args[i]
- if arg.type == '...' then
- return i, arg
- end
- end
- return nil, nil
-end
-
---- 获取指定区块中可见的局部变量
----@param block table
----@param name string {comment = '变量名'}
----@param pos integer {comment = '可见位置'}
-function m.getLocal(block, name, pos)
- block = m.getBlock(block)
- for _ = 1, 1000 do
- if not block then
- return nil
- end
- local locals = block.locals
- local res
- if not locals then
- goto CONTINUE
- end
- for i = 1, #locals do
- local loc = locals[i]
- if loc.effect > pos then
- break
- end
- if loc[1] == name then
- if not res or res.effect < loc.effect then
- res = loc
- end
- end
- end
- if res then
- return res, res
- end
- ::CONTINUE::
- block = m.getParentBlock(block)
- end
- error('guide.getLocal overstack')
-end
-
---- 获取指定区块中可见的标签
----@param block table
----@param name string {comment = '标签名'}
-function m.getLabel(block, name)
- block = m.getBlock(block)
- for _ = 1, 1000 do
- if not block then
- return nil
- end
- local labels = block.labels
- if labels then
- local label = labels[name]
- if label then
- return label
- end
- end
- if block.type == 'function' then
- return nil
- end
- block = m.getParentBlock(block)
- end
- error('guide.getLocal overstack')
-end
-
---- 判断source是否包含offset
-function m.isContain(source, offset)
- return source.start <= offset and source.finish >= offset - 1
-end
-
---- 判断offset在source的影响范围内
----
---- 主要针对赋值等语句时,key包含value
-function m.isInRange(source, offset)
- return (source.vstart or source.start) <= offset and (source.range or source.finish) >= offset - 1
-end
-
---- 添加child
-function m.addChilds(list, obj, map)
- local keys = map[obj.type]
- if keys then
- for i = 1, #keys do
- local key = keys[i]
- if key == '#' then
- for i = 1, #obj do
- list[#list+1] = obj[i]
- end
- else
- list[#list+1] = obj[key]
- end
- end
- end
-end
-
---- 遍历所有包含offset的source
-function m.eachSourceContain(ast, offset, callback)
- local list = { ast }
- while true do
- local len = #list
- if len == 0 then
- return
- end
- local obj = list[len]
- list[len] = nil
- if m.isInRange(obj, offset) then
- if m.isContain(obj, offset) then
- local res = callback(obj)
- if res ~= nil then
- return res
- end
- end
- m.addChilds(list, obj, m.childMap)
- end
- end
-end
-
---- 遍历所有指定类型的source
-function m.eachSourceType(ast, type, callback)
- local cache = ast.typeCache
- if not cache then
- local mark = {}
- cache = {}
- ast.typeCache = cache
- m.eachSource(ast, function (source)
- if mark[source] then
- return
- end
- mark[source] = true
- local tp = source.type
- if not tp then
- return
- end
- local myCache = cache[tp]
- if not myCache then
- myCache = {}
- cache[tp] = myCache
- end
- myCache[#myCache+1] = source
- end)
- end
- local myCache = cache[type]
- if not myCache then
- return
- end
- for i = 1, #myCache do
- callback(myCache[i])
- end
-end
-
---- 遍历所有的source
-function m.eachSource(ast, callback)
- local list = { ast }
- while true do
- local len = #list
- if len == 0 then
- return
- end
- local obj = list[len]
- list[len] = nil
- callback(obj)
- m.addChilds(list, obj, m.childMap)
- end
-end
-
---- 获取指定的 special
-function m.eachSpecialOf(ast, name, callback)
- local root = m.getRoot(ast)
- if not root.specials then
- return
- end
- local specials = root.specials[name]
- if not specials then
- return
- end
- for i = 1, #specials do
- callback(specials[i])
- end
-end
-
---- 获取偏移对应的坐标
----@param lines table
----@return integer {name = 'row'}
----@return integer {name = 'col'}
-function m.positionOf(lines, offset)
- if offset < 1 then
- return 0, 0
- end
- local lastLine = lines[#lines]
- if offset > lastLine.finish then
- return #lines, lastLine.finish - lastLine.start + 1
- end
- local min = 1
- local max = #lines
- for _ = 1, 100 do
- if max <= min then
- local line = lines[min]
- return min, offset - line.start + 1
- end
- local row = (max - min) // 2 + min
- local line = lines[row]
- if offset < line.start then
- max = row - 1
- elseif offset > line.finish then
- min = row + 1
- else
- return row, offset - line.start + 1
- end
- end
- error('Stack overflow!')
-end
-
---- 获取坐标对应的偏移
----@param lines table
----@param row integer
----@param col integer
----@return integer {name = 'offset'}
-function m.offsetOf(lines, row, col)
- if row < 1 then
- return 0
- end
- if row > #lines then
- local lastLine = lines[#lines]
- return lastLine.finish
- end
- local line = lines[row]
- local len = line.finish - line.start + 1
- if col < 0 then
- return line.start
- elseif col > len then
- return line.finish
- else
- return line.start + col - 1
- end
-end
-
-function m.lineContent(lines, text, row)
- local line = lines[row]
- if not line then
- return ''
- end
- return text:sub(line.start, line.finish)
-end
-
-function m.lineRange(lines, row)
- local line = lines[row]
- if not line then
- return 0, 0
- end
- return line.start, line.finish
-end
-
-function m.getName(obj)
- local tp = obj.type
- if tp == 'getglobal'
- or tp == 'setglobal' then
- return obj[1]
- elseif tp == 'local'
- or tp == 'getlocal'
- or tp == 'setlocal' then
- return obj[1]
- elseif tp == 'getfield'
- or tp == 'setfield'
- or tp == 'tablefield' then
- return obj.field[1]
- elseif tp == 'getmethod'
- or tp == 'setmethod' then
- return obj.method[1]
- elseif tp == 'getindex'
- or tp == 'setindex'
- or tp == 'tableindex' then
- return m.getName(obj.index)
- elseif tp == 'field'
- or tp == 'method' then
- return obj[1]
- elseif tp == 'index' then
- return m.getName(obj.index)
- elseif tp == 'string' then
- return obj[1]
- end
- return nil
-end
-
-function m.getKeyName(obj)
- local tp = obj.type
- if tp == 'getglobal'
- or tp == 'setglobal' then
- return 's|' .. obj[1]
- elseif tp == 'getfield'
- or tp == 'setfield'
- or tp == 'tablefield' then
- if obj.field then
- return 's|' .. obj.field[1]
- end
- elseif tp == 'getmethod'
- or tp == 'setmethod' then
- if obj.method then
- return 's|' .. obj.method[1]
- end
- elseif tp == 'getindex'
- or tp == 'setindex'
- or tp == 'tableindex' then
- if obj.index then
- return m.getKeyName(obj.index)
- end
- elseif tp == 'field'
- or tp == 'method' then
- return 's|' .. obj[1]
- elseif tp == 'string' then
- local s = obj[1]
- if s then
- return 's|' .. s
- else
- return s
- end
- elseif tp == 'number' then
- local n = obj[1]
- if n then
- return ('n|%q'):format(obj[1])
- else
- return 'n'
- end
- elseif tp == 'boolean' then
- local b = obj[1]
- if b then
- return 'b|' .. tostring(b)
- else
- return 'b'
- end
- end
- return nil
-end
-
-function m.getENV(ast)
- if ast.type ~= 'main' then
- return nil
- end
- return ast.locals[1]
-end
-
---- 测试 a 到 b 的路径(不经过函数,不考虑 goto),
---- 每个路径是一个 block 。
----
---- 如果 a 在 b 的前面,返回 `"before"` 加上 2个`list<block>`
----
---- 如果 a 在 b 的后面,返回 `"after"` 加上 2个`list<block>`
----
---- 否则返回 `false`
----
---- 返回的2个 `list` 分别为基准block到达 a 与 b 的路径。
----@param a table
----@param b table
----@return string|boolean mode
----@return table|nil pathA
----@return table|nil pathB
-function m.getPath(a, b)
- --- 首先测试双方在同一个函数内
- if m.getParentFunction(a) ~= m.getParentFunction(b) then
- return false
- end
- local mode
- local objA
- local objB
- if a.finish < b.start then
- mode = 'before'
- objA = a
- objB = b
- elseif a.start > b.finish then
- mode = 'after'
- objA = b
- objB = a
- else
- return 'equal', {}, {}
- end
- local pathA = {}
- local pathB = {}
- for _ = 1, 1000 do
- objA = m.getParentBlock(objA)
- pathA[#pathA+1] = objA
- if objA.type == 'function' or objA.type == 'main' then
- break
- end
- end
- for _ = 1, 1000 do
- objB = m.getParentBlock(objB)
- pathB[#pathB+1] = objB
- if objB.type == 'function' or objB.type == 'main' then
- break
- end
- end
- -- pathA: {1, 2, 3, 4, 5}
- -- pathB: {5, 6, 2, 3}
- local top = #pathB
- local start
- for i = #pathA, 1, -1 do
- local currentBlock = pathA[i]
- if currentBlock == pathB[top] then
- start = i
- break
- end
- end
- -- pathA: { 1, 2, 3}
- -- pathB: {5, 6, 2, 3}
- local extra = 0
- local align = top - start
- for i = start, 1, -1 do
- local currentA = pathA[i]
- local currentB = pathB[i+align]
- if currentA ~= currentB then
- extra = i
- break
- end
- end
- -- pathA: {1}
- local resultA = {}
- for i = extra, 1, -1 do
- resultA[#resultA+1] = pathA[i]
- end
- -- pathB: {5, 6}
- local resultB = {}
- for i = extra + align, 1, -1 do
- resultB[#resultB+1] = pathB[i]
- end
- return mode, resultA, resultB
-end
-
-return m
diff --git a/server-beta/src/parser/init.lua b/server-beta/src/parser/init.lua
deleted file mode 100644
index 5eeb0da2..00000000
--- a/server-beta/src/parser/init.lua
+++ /dev/null
@@ -1,11 +0,0 @@
-local api = {
- grammar = require 'parser.grammar',
- parse = require 'parser.parse',
- compile = require 'parser.compile',
- split = require 'parser.split',
- calcline = require 'parser.calcline',
- lines = require 'parser.lines',
- guide = require 'parser.guide',
-}
-
-return api
diff --git a/server-beta/src/parser/lines.lua b/server-beta/src/parser/lines.lua
deleted file mode 100644
index c7961d13..00000000
--- a/server-beta/src/parser/lines.lua
+++ /dev/null
@@ -1,46 +0,0 @@
-local m = require 'lpeglabel'
-local utf8Len = utf8.len
-
-_ENV = nil
-
-local function Line(start, line, range, finish)
- line.start = start
- line.finish = finish - 1
- line.range = range - 1
- return line
-end
-
-local function Space(...)
- local line = {...}
- local sp = 0
- local tab = 0
- for i = 1, #line do
- if line[i] == ' ' then
- sp = sp + 1
- elseif line[i] == '\t' then
- tab = tab + 1
- end
- line[i] = nil
- end
- line.sp = sp
- line.tab = tab
- return line
-end
-
-local parser = m.P{
-'Lines',
-Lines = m.Ct(m.V'Line'^0 * m.V'LastLine'),
-Line = m.Cp() * m.V'Indent' * (1 - m.V'Nl')^0 * m.Cp() * m.V'Nl' * m.Cp() / Line,
-LastLine= m.Cp() * m.V'Indent' * (1 - m.V'Nl')^0 * m.Cp() * m.Cp() / Line,
-Nl = m.P'\r\n' + m.S'\r\n',
-Indent = m.C(m.S' \t')^0 / Space,
-}
-
-return function (self, text)
- local lines, err = parser:match(text)
- if not lines then
- return nil, err
- end
-
- return lines
-end
diff --git a/server-beta/src/parser/parse.lua b/server-beta/src/parser/parse.lua
deleted file mode 100644
index bbc01b10..00000000
--- a/server-beta/src/parser/parse.lua
+++ /dev/null
@@ -1,45 +0,0 @@
-local ast = require 'parser.ast'
-
-return function (self, lua, mode, version)
- local errs = {}
- local diags = {}
- local state = {
- version = version,
- lua = lua,
- emmy = {},
- root = {},
- errs = errs,
- diags = diags,
- pushError = function (err)
- if err.finish < err.start then
- err.finish = err.start
- end
- local last = errs[#errs]
- if last then
- if last.start <= err.start and last.finish >= err.finish then
- return
- end
- end
- err.level = err.level or 'error'
- errs[#errs+1] = err
- return err
- end,
- pushDiag = function (code, info)
- if not diags[code] then
- diags[code] = {}
- end
- diags[code][#diags[code]+1] = info
- end
- }
- ast.init(state)
- local suc, res, err = xpcall(self.grammar, debug.traceback, self, lua, mode)
- ast.close()
- if not suc then
- return nil, res
- end
- if not res then
- state.pushError(err)
- end
- state.ast = res
- return state
-end
diff --git a/server-beta/src/parser/relabel.lua b/server-beta/src/parser/relabel.lua
deleted file mode 100644
index ac902403..00000000
--- a/server-beta/src/parser/relabel.lua
+++ /dev/null
@@ -1,361 +0,0 @@
--- $Id: re.lua,v 1.44 2013/03/26 20:11:40 roberto Exp $
-
--- imported functions and modules
-local tonumber, type, print, error = tonumber, type, print, error
-local pcall = pcall
-local setmetatable = setmetatable
-local tinsert, concat = table.insert, table.concat
-local rep = string.rep
-local m = require"lpeglabel"
-
--- 'm' will be used to parse expressions, and 'mm' will be used to
--- create expressions; that is, 're' runs on 'm', creating patterns
--- on 'mm'
-local mm = m
-
--- pattern's metatable
-local mt = getmetatable(mm.P(0))
-
-
-
--- No more global accesses after this point
-_ENV = nil
-
-
-local any = m.P(1)
-local dummy = mm.P(false)
-
-
-local errinfo = {
- NoPatt = "no pattern found",
- ExtraChars = "unexpected characters after the pattern",
-
- ExpPatt1 = "expected a pattern after '/'",
-
- ExpPatt2 = "expected a pattern after '&'",
- ExpPatt3 = "expected a pattern after '!'",
-
- ExpPatt4 = "expected a pattern after '('",
- ExpPatt5 = "expected a pattern after ':'",
- ExpPatt6 = "expected a pattern after '{~'",
- ExpPatt7 = "expected a pattern after '{|'",
-
- ExpPatt8 = "expected a pattern after '<-'",
-
- ExpPattOrClose = "expected a pattern or closing '}' after '{'",
-
- ExpNumName = "expected a number, '+', '-' or a name (no space) after '^'",
- ExpCap = "expected a string, number, '{}' or name after '->'",
-
- ExpName1 = "expected the name of a rule after '=>'",
- ExpName2 = "expected the name of a rule after '=' (no space)",
- ExpName3 = "expected the name of a rule after '<' (no space)",
-
- ExpLab1 = "expected a label after '{'",
-
- ExpNameOrLab = "expected a name or label after '%' (no space)",
-
- ExpItem = "expected at least one item after '[' or '^'",
-
- MisClose1 = "missing closing ')'",
- MisClose2 = "missing closing ':}'",
- MisClose3 = "missing closing '~}'",
- MisClose4 = "missing closing '|}'",
- MisClose5 = "missing closing '}'", -- for the captures
-
- MisClose6 = "missing closing '>'",
- MisClose7 = "missing closing '}'", -- for the labels
-
- MisClose8 = "missing closing ']'",
-
- MisTerm1 = "missing terminating single quote",
- MisTerm2 = "missing terminating double quote",
-}
-
-local function expect (pattern, label)
- return pattern + m.T(label)
-end
-
-
--- Pre-defined names
-local Predef = { nl = m.P"\n" }
-
-
-local mem
-local fmem
-local gmem
-
-
-local function updatelocale ()
- mm.locale(Predef)
- Predef.a = Predef.alpha
- Predef.c = Predef.cntrl
- Predef.d = Predef.digit
- Predef.g = Predef.graph
- Predef.l = Predef.lower
- Predef.p = Predef.punct
- Predef.s = Predef.space
- Predef.u = Predef.upper
- Predef.w = Predef.alnum
- Predef.x = Predef.xdigit
- Predef.A = any - Predef.a
- Predef.C = any - Predef.c
- Predef.D = any - Predef.d
- Predef.G = any - Predef.g
- Predef.L = any - Predef.l
- Predef.P = any - Predef.p
- Predef.S = any - Predef.s
- Predef.U = any - Predef.u
- Predef.W = any - Predef.w
- Predef.X = any - Predef.x
- mem = {} -- restart memoization
- fmem = {}
- gmem = {}
- local mt = {__mode = "v"}
- setmetatable(mem, mt)
- setmetatable(fmem, mt)
- setmetatable(gmem, mt)
-end
-
-
-updatelocale()
-
-
-
-local I = m.P(function (s,i) print(i, s:sub(1, i-1)); return i end)
-
-
-local function getdef (id, defs)
- local c = defs and defs[id]
- if not c then
- error("undefined name: " .. id)
- end
- return c
-end
-
-
-local function mult (p, n)
- local np = mm.P(true)
- while n >= 1 do
- if n%2 >= 1 then np = np * p end
- p = p * p
- n = n/2
- end
- return np
-end
-
-local function equalcap (s, i, c)
- if type(c) ~= "string" then return nil end
- local e = #c + i
- if s:sub(i, e - 1) == c then return e else return nil end
-end
-
-
-local S = (Predef.space + "--" * (any - Predef.nl)^0)^0
-
-local name = m.C(m.R("AZ", "az", "__") * m.R("AZ", "az", "__", "09")^0)
-
-local arrow = S * "<-"
-
--- a defined name only have meaning in a given environment
-local Def = name * m.Carg(1)
-
-local num = m.C(m.R"09"^1) * S / tonumber
-
-local String = "'" * m.C((any - "'" - m.P"\n")^0) * expect("'", "MisTerm1")
- + '"' * m.C((any - '"' - m.P"\n")^0) * expect('"', "MisTerm2")
-
-
-local defined = "%" * Def / function (c,Defs)
- local cat = Defs and Defs[c] or Predef[c]
- if not cat then
- error("name '" .. c .. "' undefined")
- end
- return cat
-end
-
-local Range = m.Cs(any * (m.P"-"/"") * (any - "]")) / mm.R
-
-local item = defined + Range + m.C(any - m.P"\n")
-
-local Class =
- "["
- * (m.C(m.P"^"^-1)) -- optional complement symbol
- * m.Cf(expect(item, "ExpItem") * (item - "]")^0, mt.__add)
- / function (c, p) return c == "^" and any - p or p end
- * expect("]", "MisClose8")
-
-local function adddef (t, k, exp)
- if t[k] then
- -- TODO 改了一下这里的代码,重复定义不会抛错
- --error("'"..k.."' already defined as a rule")
- else
- t[k] = exp
- end
- return t
-end
-
-local function firstdef (n, r) return adddef({n}, n, r) end
-
-
-local function NT (n, b)
- if not b then
- error("rule '"..n.."' used outside a grammar")
- else return mm.V(n)
- end
-end
-
-
-local exp = m.P{ "Exp",
- Exp = S * ( m.V"Grammar"
- + m.Cf(m.V"Seq" * (S * "/" * expect(S * m.V"Seq", "ExpPatt1"))^0, mt.__add) );
- Seq = m.Cf(m.Cc(m.P"") * m.V"Prefix" * (S * m.V"Prefix")^0, mt.__mul);
- Prefix = "&" * expect(S * m.V"Prefix", "ExpPatt2") / mt.__len
- + "!" * expect(S * m.V"Prefix", "ExpPatt3") / mt.__unm
- + m.V"Suffix";
- Suffix = m.Cf(m.V"Primary" *
- ( S * ( m.P"+" * m.Cc(1, mt.__pow)
- + m.P"*" * m.Cc(0, mt.__pow)
- + m.P"?" * m.Cc(-1, mt.__pow)
- + "^" * expect( m.Cg(num * m.Cc(mult))
- + m.Cg(m.C(m.S"+-" * m.R"09"^1) * m.Cc(mt.__pow)
- + name * m.Cc"lab"
- ),
- "ExpNumName")
- + "->" * expect(S * ( m.Cg((String + num) * m.Cc(mt.__div))
- + m.P"{}" * m.Cc(nil, m.Ct)
- + m.Cg(Def / getdef * m.Cc(mt.__div))
- ),
- "ExpCap")
- + "=>" * expect(S * m.Cg(Def / getdef * m.Cc(m.Cmt)),
- "ExpName1")
- )
- )^0, function (a,b,f) if f == "lab" then return a + mm.T(b) else return f(a,b) end end );
- Primary = "(" * expect(m.V"Exp", "ExpPatt4") * expect(S * ")", "MisClose1")
- + String / mm.P
- + Class
- + defined
- + "%" * expect(m.P"{", "ExpNameOrLab")
- * expect(S * m.V"Label", "ExpLab1")
- * expect(S * "}", "MisClose7") / mm.T
- + "{:" * (name * ":" + m.Cc(nil)) * expect(m.V"Exp", "ExpPatt5")
- * expect(S * ":}", "MisClose2")
- / function (n, p) return mm.Cg(p, n) end
- + "=" * expect(name, "ExpName2")
- / function (n) return mm.Cmt(mm.Cb(n), equalcap) end
- + m.P"{}" / mm.Cp
- + "{~" * expect(m.V"Exp", "ExpPatt6")
- * expect(S * "~}", "MisClose3") / mm.Cs
- + "{|" * expect(m.V"Exp", "ExpPatt7")
- * expect(S * "|}", "MisClose4") / mm.Ct
- + "{" * expect(m.V"Exp", "ExpPattOrClose")
- * expect(S * "}", "MisClose5") / mm.C
- + m.P"." * m.Cc(any)
- + (name * -arrow + "<" * expect(name, "ExpName3")
- * expect(">", "MisClose6")) * m.Cb("G") / NT;
- Label = num + name;
- Definition = name * arrow * expect(m.V"Exp", "ExpPatt8");
- Grammar = m.Cg(m.Cc(true), "G")
- * m.Cf(m.V"Definition" / firstdef * (S * m.Cg(m.V"Definition"))^0,
- adddef) / mm.P;
-}
-
-local pattern = S * m.Cg(m.Cc(false), "G") * expect(exp, "NoPatt") / mm.P
- * S * expect(-any, "ExtraChars")
-
-local function lineno (s, i)
- if i == 1 then return 1, 1 end
- local adjustment = 0
- -- report the current line if at end of line, not the next
- if s:sub(i,i) == '\n' then
- i = i-1
- adjustment = 1
- end
- local rest, num = s:sub(1,i):gsub("[^\n]*\n", "")
- local r = #rest
- return 1 + num, (r ~= 0 and r or 1) + adjustment
-end
-
-local function calcline (s, i)
- if i == 1 then return 1, 1 end
- local rest, line = s:sub(1,i):gsub("[^\n]*\n", "")
- local col = #rest
- return 1 + line, col ~= 0 and col or 1
-end
-
-
-local function splitlines(str)
- local t = {}
- local function helper(line) tinsert(t, line) return "" end
- helper((str:gsub("(.-)\r?\n", helper)))
- return t
-end
-
-local function compile (p, defs)
- if mm.type(p) == "pattern" then return p end -- already compiled
- p = p .. " " -- for better reporting of column numbers in errors when at EOF
- local ok, cp, label, poserr = pcall(function() return pattern:match(p, 1, defs) end)
- if not ok and cp then
- if type(cp) == "string" then
- cp = cp:gsub("^[^:]+:[^:]+: ", "")
- end
- error(cp, 3)
- end
- if not cp then
- local lines = splitlines(p)
- local line, col = lineno(p, poserr)
- local err = {}
- tinsert(err, "L" .. line .. ":C" .. col .. ": " .. errinfo[label])
- tinsert(err, lines[line])
- tinsert(err, rep(" ", col-1) .. "^")
- error("syntax error(s) in pattern\n" .. concat(err, "\n"), 3)
- end
- return cp
-end
-
-local function match (s, p, i)
- local cp = mem[p]
- if not cp then
- cp = compile(p)
- mem[p] = cp
- end
- return cp:match(s, i or 1)
-end
-
-local function find (s, p, i)
- local cp = fmem[p]
- if not cp then
- cp = compile(p) / 0
- cp = mm.P{ mm.Cp() * cp * mm.Cp() + 1 * mm.V(1) }
- fmem[p] = cp
- end
- local i, e = cp:match(s, i or 1)
- if i then return i, e - 1
- else return i
- end
-end
-
-local function gsub (s, p, rep)
- local g = gmem[p] or {} -- ensure gmem[p] is not collected while here
- gmem[p] = g
- local cp = g[rep]
- if not cp then
- cp = compile(p)
- cp = mm.Cs((cp / rep + 1)^0)
- g[rep] = cp
- end
- return cp:match(s)
-end
-
-
--- exported names
-local re = {
- compile = compile,
- match = match,
- find = find,
- gsub = gsub,
- updatelocale = updatelocale,
- calcline = calcline
-}
-
-return re
diff --git a/server-beta/src/parser/split.lua b/server-beta/src/parser/split.lua
deleted file mode 100644
index 6ce4a4e7..00000000
--- a/server-beta/src/parser/split.lua
+++ /dev/null
@@ -1,9 +0,0 @@
-local m = require 'lpeglabel'
-
-local NL = m.P'\r\n' + m.S'\r\n'
-local LINE = m.C(1 - NL)
-
-return function (str)
- local MATCH = m.Ct((LINE * NL)^0 * LINE)
- return MATCH:match(str)
-end
diff --git a/server-beta/src/proto/define.lua b/server-beta/src/proto/define.lua
deleted file mode 100644
index 61c4037c..00000000
--- a/server-beta/src/proto/define.lua
+++ /dev/null
@@ -1,140 +0,0 @@
-local guide = require 'parser.guide'
-
-local m = {}
-
---- 获取 position 对应的光标位置
----@param lines table
----@param text string
----@param position position
----@return integer
-function m.offset(lines, text, position)
- local row = position.line + 1
- local start = guide.lineRange(lines, row)
- local offset = utf8.offset(text, position.character + 1, start)
- if text:sub(offset-1, offset):match '[%w_][^%w_]' then
- offset = offset - 1
- end
- return offset
-end
-
---- 将光标位置转化为 position
----@alias position table
----@param lines table
----@param text string
----@param offset integer
----@return position
-function m.position(lines, text, offset)
- local row, col = guide.positionOf(lines, offset)
- local start = guide.lineRange(lines, row)
- if start < 1 then
- start = 1
- end
- local ucol = utf8.len(text, start, start + col - 1, true)
- if row < 1 then
- row = 1
- end
- return {
- line = row - 1,
- character = ucol,
- }
-end
-
---- 将起点与终点位置转化为 range
----@alias range table
----@param lines table
----@param text string
----@param offset1 integer
----@param offset2 integer
-function m.range(lines, text, offset1, offset2)
- local range = {
- start = m.position(lines, text, offset1),
- ['end'] = m.position(lines, text, offset2),
- }
- if range.start.character > 0 then
- range.start.character = range.start.character - 1
- end
- return range
-end
-
----@alias location table
----@param uri string
----@param range range
----@return location
-function m.location(uri, range)
- return {
- uri = uri,
- range = range,
- }
-end
-
----@alias locationLink table
----@param uri string
----@param range range
----@param selection range
----@param origin range
-function m.locationLink(uri, range, selection, origin)
- return {
- targetUri = uri,
- targetRange = range,
- targetSelectionRange = selection,
- originSelectionRange = origin,
- }
-end
-
-function m.textEdit(range, newtext)
- return {
- range = range,
- newText = newtext,
- }
-end
-
---- 诊断等级
-m.DiagnosticSeverity = {
- Error = 1,
- Warning = 2,
- Information = 3,
- Hint = 4,
-}
-
---- 诊断类型与默认等级
-m.DiagnosticDefaultSeverity = {
- ['unused-local'] = 'Hint',
- ['unused-function'] = 'Hint',
- ['undefined-global'] = 'Warning',
- ['global-in-nil-env'] = 'Warning',
- ['unused-label'] = 'Hint',
- ['unused-vararg'] = 'Hint',
- ['trailing-space'] = 'Hint',
- ['redefined-local'] = 'Hint',
- ['newline-call'] = 'Information',
- ['newfield-call'] = 'Warning',
- ['redundant-parameter'] = 'Hint',
- ['ambiguity-1'] = 'Warning',
- ['lowercase-global'] = 'Information',
- ['undefined-env-child'] = 'Information',
- ['duplicate-index'] = 'Warning',
- ['empty-block'] = 'Hint',
- ['redundant-value'] = 'Hint',
- ['emmy-lua'] = 'Warning',
-}
-
---- 诊断报告标签
-m.DiagnosticTag = {
- Unnecessary = 1,
- Deprecated = 2,
-}
-
-m.DocumentHighlightKind = {
- Text = 1,
- Read = 2,
- Write = 3,
-}
-
-m.MessageType = {
- Error = 1,
- Warning = 2,
- Info = 3,
- Log = 4,
-}
-
-return m
diff --git a/server-beta/src/proto/init.lua b/server-beta/src/proto/init.lua
deleted file mode 100644
index 33e637f6..00000000
--- a/server-beta/src/proto/init.lua
+++ /dev/null
@@ -1,3 +0,0 @@
-local proto = require 'proto.proto'
-
-return proto
diff --git a/server-beta/src/proto/proto.lua b/server-beta/src/proto/proto.lua
deleted file mode 100644
index f04653d5..00000000
--- a/server-beta/src/proto/proto.lua
+++ /dev/null
@@ -1,133 +0,0 @@
-local subprocess = require 'bee.subprocess'
-local util = require 'utility'
-local await = require 'await'
-local pub = require 'pub'
-local jsonrpc = require 'jsonrpc'
-local ErrorCodes = require 'define.ErrorCodes'
-
-local reqCounter = util.counter()
-
-local m = {}
-
-m.ability = {}
-m.waiting = {}
-
-function m.getMethodName(proto)
- if proto.method:sub(1, 2) == '$/' then
- return proto.method:sub(3), true
- else
- return proto.method, false
- end
-end
-
-function m.on(method, callback)
- m.ability[method] = callback
-end
-
-function m.response(id, res)
- if id == nil then
- log.error('Response id is nil!', util.dump(res))
- return
- end
- -- res 可能是nil,为了转成json时保留nil,使用 container 容器
- local data = util.container()
- data.id = id
- data.result = res
- local buf = jsonrpc.encode(data)
- log.debug('Response', id, #buf)
- io.stdout:write(buf)
-end
-
-function m.responseErr(id, code, message)
- if id == nil then
- log.error('Response id is nil!', util.dump(message))
- return
- end
- local buf = jsonrpc.encode {
- id = id,
- error = {
- code = code,
- message = message,
- }
- }
- log.debug('ResponseErr', id, #buf)
- io.stdout:write(buf)
-end
-
-function m.notify(name, params)
- local buf = jsonrpc.encode {
- method = name,
- params = params,
- }
- log.debug('Notify', name, #buf)
- io.stdout:write(buf)
-end
-
-function m.awaitRequest(name, params)
- local id = reqCounter()
- local buf = jsonrpc.encode {
- id = id,
- method = name,
- params = params,
- }
- log.debug('Request', name, #buf)
- io.stdout:write(buf)
- return await.wait(function (waker)
- m.waiting[id] = waker
- end)
-end
-
-function m.doMethod(proto)
- local method, optional = m.getMethodName(proto)
- local abil = m.ability[method]
- if not abil then
- if not optional then
- log.warn('Recieved unknown proto: ' .. method)
- end
- if proto.id then
- m.responseErr(proto.id, ErrorCodes.MethodNotFound, method)
- end
- return
- end
- await.create(function ()
- local clock = os.clock()
- local ok, res = xpcall(abil, log.error, proto.params)
- local passed = os.clock() - clock
- if passed > 0.2 then
- log.debug(('Method [%s] takes [%.3f]sec.'):format(method, passed))
- end
- if not proto.id then
- return
- end
- if ok then
- m.response(proto.id, res)
- else
- m.responseErr(proto.id, ErrorCodes.InternalError, res)
- end
- end)
-end
-
-function m.doResponse(proto)
- local id = proto.id
- local waker = m.waiting[id]
- if not waker then
- log.warn('Response id not found: ' .. util.dump(proto))
- return
- end
- m.waiting[id] = nil
- if proto.error then
- log.warn(('Response error [%d]: %s'):format(proto.error.code, proto.error.message))
- return
- end
- waker(proto.result)
-end
-
-function m.listen()
- subprocess.filemode(io.stdin, 'b')
- subprocess.filemode(io.stdout, 'b')
- io.stdin:setvbuf 'no'
- io.stdout:setvbuf 'no'
- pub.task('loadProto')
-end
-
-return m
diff --git a/server-beta/src/provider/capability.lua b/server-beta/src/provider/capability.lua
deleted file mode 100644
index aa95c758..00000000
--- a/server-beta/src/provider/capability.lua
+++ /dev/null
@@ -1,42 +0,0 @@
-local m = {}
-
-m.initer = {
- -- 文本同步方式
- textDocumentSync = {
- -- 打开关闭文本时通知
- openClose = true,
- -- 文本改变时完全通知 TODO 支持差量更新(2)
- change = 1,
- },
-
- hoverProvider = true,
- definitionProvider = true,
- referencesProvider = true,
- renameProvider = {
- prepareProvider = true,
- },
- --documentSymbolProvider = true,
- documentHighlightProvider = true,
- --codeActionProvider = true,
- --signatureHelpProvider = {
- -- triggerCharacters = { '(', ',' },
- --},
- --workspace = {
- -- workspaceFolders = {
- -- supported = true,
- -- changeNotifications = true,
- -- }
- --},
- --documentOnTypeFormattingProvider = {
- -- firstTriggerCharacter = '}',
- --},
- --executeCommandProvider = {
- -- commands = {
- -- 'config',
- -- 'removeSpace',
- -- 'solve',
- -- },
- --},
-}
-
-return m
diff --git a/server-beta/src/provider/completion.lua b/server-beta/src/provider/completion.lua
deleted file mode 100644
index d2df44d2..00000000
--- a/server-beta/src/provider/completion.lua
+++ /dev/null
@@ -1,53 +0,0 @@
-local proto = require 'proto'
-
-local isEnable = false
-
-local function allWords()
- local str = [[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.:('"[,#*@| ]]
- local list = {}
- for c in str:gmatch '.' do
- list[#list+1] = c
- end
- return list
-end
-
-local function enable()
- if isEnable then
- return
- end
- isEnable = true
- log.debug('Enable completion.')
- proto.awaitRequest('client/registerCapability', {
- registrations = {
- {
- id = 'completion',
- method = 'textDocument/completion',
- registerOptions = {
- resolveProvider = false,
- triggerCharacters = allWords(),
- },
- },
- }
- })
-end
-
-local function disable()
- if not isEnable then
- return
- end
- isEnable = false
- log.debug('Disable completion.')
- proto.awaitRequest('client/unregisterCapability', {
- unregisterations = {
- {
- id = 'completion',
- method = 'textDocument/completion',
- },
- }
- })
-end
-
-return {
- enable = enable,
- disable = disable,
-}
diff --git a/server-beta/src/provider/diagnostic.lua b/server-beta/src/provider/diagnostic.lua
deleted file mode 100644
index ba95f2bf..00000000
--- a/server-beta/src/provider/diagnostic.lua
+++ /dev/null
@@ -1,209 +0,0 @@
-local await = require 'await'
-local proto = require 'proto.proto'
-local define = require 'proto.define'
-local lang = require 'language'
-local files = require 'files'
-local config = require 'config'
-local core = require 'core.diagnostics'
-local util = require 'utility'
-
-local m = {}
-m._start = false
-m.cache = {}
-
-local function concat(t, sep)
- if type(t) ~= 'table' then
- return t
- end
- return table.concat(t, sep)
-end
-
-local function buildSyntaxError(uri, err)
- local lines = files.getLines(uri)
- local text = files.getText(uri)
- local message = lang.script('PARSER_'..err.type, err.info)
-
- if err.version then
- local version = err.info and err.info.version or config.config.runtime.version
- message = message .. ('(%s)'):format(lang.script('DIAG_NEED_VERSION'
- , concat(err.version, '/')
- , version
- ))
- end
-
- local related = err.info and err.info.related
- local relatedInformation
- if related then
- relatedInformation = {}
- for _, rel in ipairs(related) do
- local rmessage
- if rel.message then
- rmessage = lang.script('PARSER_'..rel.message)
- else
- rmessage = text:sub(rel.start, rel.finish)
- end
- relatedInformation[#relatedInformation+1] = {
- message = rmessage,
- location = define.location(uri, define.range(lines, text, rel.start, rel.finish)),
- }
- end
- end
-
- return {
- range = define.range(lines, text, err.start, err.finish),
- severity = define.DiagnosticSeverity.Error,
- source = lang.script.DIAG_SYNTAX_CHECK,
- message = message,
- relatedInformation = relatedInformation,
- }
-end
-
-local function buildDiagnostic(uri, diag)
- local lines = files.getLines(uri)
- local text = files.getText(uri)
-
- local relatedInformation
- if diag.related then
- relatedInformation = {}
- for _, rel in ipairs(diag.related) do
- local rtext = files.getText(rel.uri)
- local rlines = files.getLines(rel.uri)
- relatedInformation[#relatedInformation+1] = {
- message = rel.message or rtext:sub(rel.start, rel.finish),
- location = define.location(rel.uri, define.range(rlines, rtext, rel.start, rel.finish))
- }
- end
- end
-
- return {
- range = define.range(lines, text, diag.start, diag.finish),
- source = lang.script.DIAG_DIAGNOSTICS,
- severity = diag.level,
- message = diag.message,
- code = diag.code,
- tags = diag.tags,
- relatedInformation = relatedInformation,
- }
-end
-
-local function merge(a, b)
- if not a and not b then
- return nil
- end
- local t = {}
- if a then
- for i = 1, #a do
- t[#t+1] = a[i]
- end
- end
- if b then
- for i = 1, #b do
- t[#t+1] = b[i]
- end
- end
- return t
-end
-
-function m.clear(uri)
- if not m.cache[uri] then
- return
- end
- m.cache[uri] = nil
- proto.notify('textDocument/publishDiagnostics', {
- uri = uri,
- diagnostics = {},
- })
-end
-
-function m.syntaxErrors(uri, ast)
- if #ast.errs == 0 then
- return nil
- end
-
- local results = {}
-
- for _, err in ipairs(ast.errs) do
- results[#results+1] = buildSyntaxError(uri, err)
- end
-
- return results
-end
-
-function m.diagnostics(uri, syntaxOnly)
- if syntaxOnly or not m._start then
- return m.cache[uri]
- end
-
- local diags = core(uri)
- if not diags then
- return nil
- end
-
- local results = {}
- for _, diag in ipairs(diags) do
- results[#results+1] = buildDiagnostic(uri, diag)
- end
-
- return results
-end
-
-function m.doDiagnostic(uri, syntaxOnly)
- local ast = files.getAst(uri)
- if not ast then
- m.clear(uri)
- return
- end
-
- local syntax = m.syntaxErrors(uri, ast)
- local diagnostics = m.diagnostics(uri, syntaxOnly)
- local full = merge(syntax, diagnostics)
- if not full then
- m.clear(uri)
- return
- end
-
- if util.equal(m.cache[uri], full) then
- return
- end
- m.cache[uri] = full
-
- proto.notify('textDocument/publishDiagnostics', {
- uri = uri,
- diagnostics = full,
- })
-end
-
-function m.refresh(uri)
- await.create(function ()
- await.delay(function ()
- return files.globalVersion
- end)
- if uri then
- m.doDiagnostic(uri, true)
- end
- if not m._start then
- return
- end
- local clock = os.clock()
- if uri then
- m.doDiagnostic(uri)
- end
- for destUri in files.eachFile() do
- if destUri ~= uri then
- m.doDiagnostic(files.getOriginUri(destUri))
- await.delay(function ()
- return files.globalVersion
- end)
- end
- end
- local passed = os.clock() - clock
- log.info(('Finish diagnostics, takes [%.3f] sec.'):format(passed))
- end)
-end
-
-function m.start()
- m._start = true
- m.refresh()
-end
-
-return m
diff --git a/server-beta/src/provider/init.lua b/server-beta/src/provider/init.lua
deleted file mode 100644
index 95f4b3d1..00000000
--- a/server-beta/src/provider/init.lua
+++ /dev/null
@@ -1,298 +0,0 @@
-local util = require 'utility'
-local cap = require 'provider.capability'
-local completion= require 'provider.completion'
-local await = require 'await'
-local files = require 'files'
-local proto = require 'proto.proto'
-local define = require 'proto.define'
-local workspace = require 'workspace'
-local config = require 'config'
-local library = require 'library'
-local markdown = require 'provider.markdown'
-
-local function updateConfig()
- local configs = proto.awaitRequest('workspace/configuration', {
- items = {
- {
- scopeUri = workspace.uri,
- section = 'Lua',
- },
- {
- scopeUri = workspace.uri,
- section = 'files.associations',
- },
- {
- scopeUri = workspace.uri,
- section = 'files.exclude',
- }
- },
- })
-
- local updated = configs[1]
- local other = {
- associations = configs[2],
- exclude = configs[3],
- }
-
- local oldConfig = util.deepCopy(config.config)
- local oldOther = util.deepCopy(config.other)
- config.setConfig(updated, other)
- local newConfig = config.config
- local newOther = config.other
- if not util.equal(oldConfig.runtime, newConfig.runtime) then
- library.reload()
- end
- if not util.equal(oldConfig.diagnostics, newConfig.diagnostics) then
- end
- if not util.equal(oldConfig.plugin, newConfig.plugin) then
- end
- if not util.equal(oldConfig.workspace, newConfig.workspace)
- or not util.equal(oldConfig.plugin, newConfig.plugin)
- or not util.equal(oldOther.associations, newOther.associations)
- or not util.equal(oldOther.exclude, newOther.exclude)
- then
- end
-
- if newConfig.completion.enable then
- --completion.enable()
- else
- completion.disable()
- end
-end
-
-proto.on('initialize', function (params)
- --log.debug(util.dump(params))
- if params.workspaceFolders then
- local name = params.workspaceFolders[1].name
- local uri = params.workspaceFolders[1].uri
- workspace.init(name, uri)
- end
- return {
- capabilities = cap.initer,
- }
-end)
-
-proto.on('initialized', function (params)
- updateConfig()
- proto.awaitRequest('client/registerCapability', {
- registrations = {
- -- 监视文件变化
- {
- id = '0',
- method = 'workspace/didChangeWatchedFiles',
- registerOptions = {
- watchers = {
- {
- globPattern = '**/',
- kind = 1 | 2 | 4,
- }
- },
- },
- },
- -- 配置变化
- {
- id = '1',
- method = 'workspace/didChangeConfiguration',
- }
- }
- })
- await.create(workspace.awaitPreload)
- return true
-end)
-
-proto.on('exit', function ()
- log.info('Server exited.')
- os.exit(true)
-end)
-
-proto.on('shutdown', function ()
- log.info('Server shutdown.')
- return true
-end)
-
-proto.on('workspace/configuration', function ()
- updateConfig()
-end)
-
-proto.on('workspace/didChangeWatchedFiles', function (params)
-end)
-
-proto.on('textDocument/didOpen', function (params)
- local doc = params.textDocument
- local uri = doc.uri
- local text = doc.text
- files.open(uri)
- files.setText(uri, text)
-end)
-
-proto.on('textDocument/didClose', function (params)
- local doc = params.textDocument
- local uri = doc.uri
- files.close(uri)
- if not files.isLua(uri) then
- files.remove(uri)
- end
-end)
-
-proto.on('textDocument/didChange', function (params)
- local doc = params.textDocument
- local change = params.contentChanges
- local uri = doc.uri
- local text = change[1].text
- if files.isLua(uri) or files.isOpen(uri) then
- files.setText(uri, text)
- end
-end)
-
-proto.on('textDocument/hover', function (params)
- local core = require 'core.hover'
- local doc = params.textDocument
- local uri = doc.uri
- if not files.exists(uri) then
- return nil
- end
- local lines = files.getLines(uri)
- local text = files.getText(uri)
- local offset = define.offset(lines, text, params.position)
- local hover = core(uri, offset)
- if not hover then
- return nil
- end
- local md = markdown()
- md:add('lua', hover.label)
- return {
- contents = {
- value = md:string(),
- kind = 'markdown',
- },
- range = define.range(lines, text, hover.source.start, hover.source.finish),
- }
-end)
-
-proto.on('textDocument/definition', function (params)
- local core = require 'core.definition'
- local uri = params.textDocument.uri
- if not files.exists(uri) then
- return nil
- end
- local lines = files.getLines(uri)
- local text = files.getText(uri)
- local offset = define.offset(lines, text, params.position)
- local result = core(uri, offset)
- if not result then
- return nil
- end
- local response = {}
- for i, info in ipairs(result) do
- local targetUri = info.uri
- local targetLines = files.getLines(targetUri)
- local targetText = files.getText(targetUri)
- response[i] = define.locationLink(targetUri
- , define.range(targetLines, targetText, info.target.start, info.target.finish)
- , define.range(targetLines, targetText, info.target.start, info.target.finish)
- , define.range(lines, text, info.source.start, info.source.finish)
- )
- end
- return response
-end)
-
-proto.on('textDocument/references', function (params)
- local core = require 'core.reference'
- local uri = params.textDocument.uri
- if not files.exists(uri) then
- return nil
- end
- local lines = files.getLines(uri)
- local text = files.getText(uri)
- local offset = define.offset(lines, text, params.position)
- local result = core(uri, offset)
- if not result then
- return nil
- end
- local response = {}
- for i, info in ipairs(result) do
- local targetUri = info.uri
- local targetLines = files.getLines(targetUri)
- local targetText = files.getText(targetUri)
- response[i] = define.location(targetUri
- , define.range(targetLines, targetText, info.target.start, info.target.finish)
- )
- end
- return response
-end)
-
-proto.on('textDocument/documentHighlight', function (params)
- local core = require 'core.highlight'
- local uri = params.textDocument.uri
- if not files.exists(uri) then
- return nil
- end
- local lines = files.getLines(uri)
- local text = files.getText(uri)
- local offset = define.offset(lines, text, params.position)
- local result = core(uri, offset)
- if not result then
- return nil
- end
- local response = {}
- for _, info in ipairs(result) do
- response[#response+1] = {
- range = define.range(lines, text, info.start, info.finish),
- kind = info.kind,
- }
- end
- return response
-end)
-
-proto.on('textDocument/rename', function (params)
- local core = require 'core.rename'
- local uri = params.textDocument.uri
- if not files.exists(uri) then
- return nil
- end
- local lines = files.getLines(uri)
- local text = files.getText(uri)
- local offset = define.offset(lines, text, params.position)
- local result = core.rename(uri, offset, params.newName)
- if not result then
- return nil
- end
- local workspaceEdit = {
- changes = {},
- }
- for _, info in ipairs(result) do
- local ruri = info.uri
- local rlines = files.getLines(ruri)
- local rtext = files.getText(ruri)
- if not workspaceEdit.changes[ruri] then
- workspaceEdit.changes[ruri] = {}
- end
- local textEdit = define.textEdit(define.range(rlines, rtext, info.start, info.finish), info.text)
- workspaceEdit.changes[ruri][#workspaceEdit.changes[ruri]+1] = textEdit
- end
- return workspaceEdit
-end)
-
-proto.on('textDocument/prepareRename', function (params)
- local core = require 'core.rename'
- local uri = params.textDocument.uri
- if not files.exists(uri) then
- return nil
- end
- local lines = files.getLines(uri)
- local text = files.getText(uri)
- local offset = define.offset(lines, text, params.position)
- local result = core.prepareRename(uri, offset)
- if not result then
- return nil
- end
- return {
- range = define.range(lines, text, result.start, result.finish),
- placeholder = result.text,
- }
-end)
-
-proto.on('textDocument/completion', function (params)
- --log.info(util.dump(params))
- return nil
-end)
diff --git a/server-beta/src/provider/markdown.lua b/server-beta/src/provider/markdown.lua
deleted file mode 100644
index 0f69ad87..00000000
--- a/server-beta/src/provider/markdown.lua
+++ /dev/null
@@ -1,22 +0,0 @@
-local mt = {}
-mt.__index = mt
-mt.__name = 'markdown'
-
-function mt:add(language, text)
- if not text then
- return
- end
- if language == 'lua' then
- self[#self+1] = ('```lua\n%s\n```'):format(text)
- else
- self[#self+1] = text:gsub('\n', '\n\n')
- end
-end
-
-function mt:string()
- return table.concat(self, '\n')
-end
-
-return function ()
- return setmetatable({}, mt)
-end
diff --git a/server-beta/src/pub/init.lua b/server-beta/src/pub/init.lua
deleted file mode 100644
index 61b43da7..00000000
--- a/server-beta/src/pub/init.lua
+++ /dev/null
@@ -1,4 +0,0 @@
-local pub = require 'pub.pub'
-require 'pub.report'
-
-return pub
diff --git a/server-beta/src/pub/pub.lua b/server-beta/src/pub/pub.lua
deleted file mode 100644
index 2cb1b4e8..00000000
--- a/server-beta/src/pub/pub.lua
+++ /dev/null
@@ -1,236 +0,0 @@
-local thread = require 'bee.thread'
-local utility = require 'utility'
-local await = require 'await'
-local timer = require 'timer'
-
-local errLog = thread.channel 'errlog'
-local type = type
-local counter = utility.counter()
-
-local braveTemplate = [[
-package.path = %q
-package.cpath = %q
-
-collectgarbage 'generational'
-
-log = require 'brave.log'
-
-dofile(%q)
-local brave = require 'brave'
-brave.register(%d)
-]]
-
----@class pub
-local m = {}
-m.type = 'pub'
-m.braves = {}
-m.ability = {}
-m.taskQueue = {}
-
---- 注册酒馆的功能
-function m.on(name, callback)
- m.ability[name] = callback
-end
-
---- 招募勇者,勇者会从公告板上领取任务,完成任务后到看板娘处交付任务
----@param num integer
-function m.recruitBraves(num)
- for _ = 1, num do
- local id = #m.braves + 1
- log.info('Create brave:', id)
- thread.newchannel('taskpad' .. id)
- thread.newchannel('waiter' .. id)
- m.braves[id] = {
- id = id,
- taskpad = thread.channel('taskpad' .. id),
- waiter = thread.channel('waiter' .. id),
- thread = thread.thread(braveTemplate:format(
- package.path,
- package.cpath,
- (ROOT / 'debugger.lua'):string(),
- id
- )),
- taskMap = {},
- currentTask = nil,
- memory = 0,
- }
- end
-end
-
---- 勇者是否有空
-function m.isIdle(brave)
- return next(brave.taskMap) == nil
-end
-
---- 给勇者推送任务
-function m.pushTask(brave, info)
- if info.removed then
- return false
- end
- brave.taskpad:push(info.name, info.id, info.params)
- brave.taskMap[info.id] = info
- --log.info(('Push task %q(%d) to # %d, queue length %d'):format(info.name, info.id, brave.id, #m.taskQueue))
- return true
-end
-
---- 从勇者处接收任务反馈
-function m.popTask(brave, id, result)
- local info = brave.taskMap[id]
- if not info then
- log.warn(('Brave pushed unknown task result: # %d => [%d]'):format(brave.id, id))
- return
- end
- brave.taskMap[id] = nil
- --log.info(('Pop task %q(%d) from # %d'):format(info.name, info.id, brave.id))
- m.checkWaitingTask(brave)
- if not info.removed then
- info.removed = true
- if info.callback then
- xpcall(info.callback, log.error, result)
- end
- end
-end
-
---- 从勇者处接收报告
-function m.popReport(brave, name, params)
- local abil = m.ability[name]
- if not abil then
- log.warn(('Brave pushed unknown report: # %d => %q'):format(brave.id, name))
- return
- end
- xpcall(abil, log.error, params, brave)
-end
-
---- 发布任务
----@parma name string
----@param params any
-function m.awaitTask(name, params)
- local info = {
- id = counter(),
- name = name,
- params = params,
- }
- for _, brave in ipairs(m.braves) do
- if m.isIdle(brave) then
- if m.pushTask(brave, info) then
- return await.wait(function (waker)
- info.callback = waker
- end)
- else
- return nil
- end
- end
- end
- -- 如果所有勇者都在战斗,那么把任务缓存到队列里
- -- 当有勇者提交任务反馈后,尝试把按顺序将堆积任务
- -- 交给该勇者
- m.taskQueue[#m.taskQueue+1] = info
- --log.info(('Add task %q(%d) in queue, length %d.'):format(name, info.id, #m.taskQueue))
- return await.wait(function (waker)
- info.callback = waker
- end)
-end
-
---- 发布同步任务,如果任务进入了队列,会返回执行器
---- 通过 jumpQueue 可以插队
----@parma name string
----@param params any
----@param callback function
-function m.task(name, params, callback)
- local info = {
- id = counter(),
- name = name,
- params = params,
- callback = callback,
- }
- for _, brave in ipairs(m.braves) do
- if m.isIdle(brave) then
- m.pushTask(brave, info)
- return nil
- end
- end
- -- 如果所有勇者都在战斗,那么把任务缓存到队列里
- -- 当有勇者提交任务反馈后,尝试把按顺序将堆积任务
- -- 交给该勇者
- m.taskQueue[#m.taskQueue+1] = info
- --log.info(('Add task %q(%d) in queue, length %d.'):format(name, info.id, #m.taskQueue))
- return info
-end
-
---- 插队
-function m.jumpQueue(info)
- for i = 2, #m.taskQueue do
- if m.taskQueue[i] == info then
- m.taskQueue[i] = nil
- table.move(m.taskQueue, 1, i - 1, 2)
- m.taskQueue[1] = info
- return
- end
- end
-end
-
---- 移除任务
-function m.remove(info)
- info.removed = true
- for i = 1, #m.taskQueue do
- if m.taskQueue[i] == info then
- table.remove(m.taskQueue[i], i)
- return
- end
- end
-end
-
---- 检查堆积任务
-function m.checkWaitingTask(brave)
- if #m.taskQueue == 0 then
- return
- end
- -- 如果勇者还有其他活要忙,那么让他继续忙去吧
- if next(brave.taskMap) then
- return
- end
- while #m.taskQueue > 0 do
- local info = table.remove(m.taskQueue, 1)
- if m.pushTask(brave, info) then
- break
- end
- end
-end
-
---- 接收反馈
----|返回接收到的反馈数量
----@return integer
-function m.recieve()
- for _, brave in ipairs(m.braves) do
- while true do
- local suc, id, result = brave.waiter:pop()
- if not suc then
- goto CONTINUE
- end
- if type(id) == 'string' then
- m.popReport(brave, id, result)
- else
- m.popTask(brave, id, result)
- end
- end
- ::CONTINUE::
- end
-end
-
---- 检查伤亡情况
-function m.checkDead()
- while true do
- local suc, err = errLog:pop()
- if not suc then
- break
- end
- log.error('Brave is dead!: ' .. err)
- end
-end
-
-function m.step()
- m.checkDead()
- m.recieve()
-end
-
-return m
diff --git a/server-beta/src/pub/report.lua b/server-beta/src/pub/report.lua
deleted file mode 100644
index edd3ee0e..00000000
--- a/server-beta/src/pub/report.lua
+++ /dev/null
@@ -1,21 +0,0 @@
-local pub = require 'pub.pub'
-local await = require 'await'
-
-pub.on('log', function (params, brave)
- log.raw(brave.id, params.level, params.msg, params.src, params.line)
-end)
-
-pub.on('mem', function (count, brave)
- brave.memory = count
-end)
-
-pub.on('proto', function (params)
- local proto = require 'proto'
- await.create(function ()
- if params.method then
- proto.doMethod(params)
- else
- proto.doResponse(params)
- end
- end)
-end)
diff --git a/server-beta/src/service/init.lua b/server-beta/src/service/init.lua
deleted file mode 100644
index eb0bd057..00000000
--- a/server-beta/src/service/init.lua
+++ /dev/null
@@ -1,3 +0,0 @@
-local service = require 'service.service'
-
-return service
diff --git a/server-beta/src/service/service.lua b/server-beta/src/service/service.lua
deleted file mode 100644
index e1cb604b..00000000
--- a/server-beta/src/service/service.lua
+++ /dev/null
@@ -1,137 +0,0 @@
-local pub = require 'pub'
-local thread = require 'bee.thread'
-local await = require 'await'
-local timer = require 'timer'
-local proto = require 'proto'
-local vm = require 'vm'
-
-local m = {}
-m.type = 'service'
-
-local function countMemory()
- local mems = {}
- local total = 0
- mems[0] = collectgarbage 'count'
- total = total + collectgarbage 'count'
- for id, brave in ipairs(pub.braves) do
- mems[id] = brave.memory
- total = total + brave.memory
- end
- return total, mems
-end
-
-function m.reportMemoryCollect()
- local totalMemBefore = countMemory()
- local clock = os.clock()
- collectgarbage()
- local passed = os.clock() - clock
- local totalMemAfter, mems = countMemory()
-
- local lines = {}
- lines[#lines+1] = ' --------------- Memory ---------------'
- lines[#lines+1] = (' Total: %.3f(%.3f) MB'):format(totalMemAfter / 1000.0, totalMemBefore / 1000.0)
- for i = 0, #mems do
- lines[#lines+1] = (' # %02d : %.3f MB'):format(i, mems[i] / 1000.0)
- end
- lines[#lines+1] = (' Collect garbage takes [%.3f] sec'):format(passed)
- return table.concat(lines, '\n')
-end
-
-function m.reportMemory()
- local totalMem, mems = countMemory()
-
- local lines = {}
- lines[#lines+1] = ' --------------- Memory ---------------'
- lines[#lines+1] = (' Total: %.3f MB'):format(totalMem / 1000.0)
- for i = 0, #mems do
- lines[#lines+1] = (' # %02d : %.3f MB'):format(i, mems[i] / 1000.0)
- end
- return table.concat(lines, '\n')
-end
-
-function m.reportTask()
- local total = 0
- local running = 0
- local suspended = 0
- local normal = 0
- local dead = 0
-
- for co in pairs(await.coTracker) do
- total = total + 1
- local status = coroutine.status(co)
- if status == 'running' then
- running = running + 1
- elseif status == 'suspended' then
- suspended = suspended + 1
- elseif status == 'normal' then
- normal = normal + 1
- elseif status == 'dead' then
- dead = dead + 1
- end
- end
-
- local lines = {}
- lines[#lines+1] = ' --------------- Coroutine ---------------'
- lines[#lines+1] = (' Total: %d'):format(total)
- lines[#lines+1] = (' Running: %d'):format(running)
- lines[#lines+1] = (' Suspended: %d'):format(suspended)
- lines[#lines+1] = (' Normal: %d'):format(normal)
- lines[#lines+1] = (' Dead: %d'):format(dead)
- return table.concat(lines, '\n')
-end
-
-function m.reportCache()
- local total = 0
- local dead = 0
-
- for cache in pairs(vm.cacheTracker) do
- total = total + 1
- if cache.dead then
- dead = dead + 1
- end
- end
-
- local lines = {}
- lines[#lines+1] = ' --------------- Cache ---------------'
- lines[#lines+1] = (' Total: %d'):format(total)
- lines[#lines+1] = (' Dead: %d'):format(dead)
- return table.concat(lines, '\n')
-end
-
-function m.report()
- local t = timer.loop(60.0, function ()
- local lines = {}
- lines[#lines+1] = ''
- lines[#lines+1] = '========= Medical Examination Report ========='
- lines[#lines+1] = m.reportMemory()
- lines[#lines+1] = m.reportTask()
- lines[#lines+1] = m.reportCache()
- lines[#lines+1] = '=============================================='
-
- log.debug(table.concat(lines, '\n'))
- end)
- t:onTimer()
-end
-
-function m.startTimer()
- while true do
- pub.step()
- if not await.step() then
- thread.sleep(0.001)
- timer.update()
- end
- end
-end
-
-function m.start()
- await.setErrorHandle(log.error)
- pub.recruitBraves(4)
- proto.listen()
- m.report()
-
- require 'provider'
-
- m.startTimer()
-end
-
-return m
diff --git a/server-beta/src/timer.lua b/server-beta/src/timer.lua
deleted file mode 100644
index 1d4343f1..00000000
--- a/server-beta/src/timer.lua
+++ /dev/null
@@ -1,218 +0,0 @@
-local setmetatable = setmetatable
-local mathMax = math.max
-local mathFloor = math.floor
-local osClock = os.clock
-
-_ENV = nil
-
-local curFrame = 0
-local maxFrame = 0
-local curIndex = 0
-local freeQueue = {}
-local timer = {}
-
-local function allocQueue()
- local n = #freeQueue
- if n > 0 then
- local r = freeQueue[n]
- freeQueue[n] = nil
- return r
- else
- return {}
- end
-end
-
-local function mTimeout(self, timeout)
- if self._pauseRemaining or self._running then
- return
- end
- local ti = curFrame + timeout
- local q = timer[ti]
- if q == nil then
- q = allocQueue()
- timer[ti] = q
- end
- self._timeoutFrame = ti
- self._running = true
- q[#q + 1] = self
-end
-
-local function mWakeup(self)
- if self._removed then
- return
- end
- self._running = false
- if self._onTimer then
- self:_onTimer()
- end
- if self._removed then
- return
- end
- if self._timerCount then
- if self._timerCount > 1 then
- self._timerCount = self._timerCount - 1
- mTimeout(self, self._timeout)
- else
- self._removed = true
- end
- else
- mTimeout(self, self._timeout)
- end
-end
-
-local function getRemaining(self)
- if self._removed then
- return 0
- end
- if self._pauseRemaining then
- return self._pauseRemaining
- end
- if self._timeoutFrame == curFrame then
- return self._timeout or 0
- end
- return self._timeoutFrame - curFrame
-end
-
-local function onTick()
- local q = timer[curFrame]
- if q == nil then
- curIndex = 0
- return
- end
- for i = curIndex + 1, #q do
- local callback = q[i]
- curIndex = i
- q[i] = nil
- if callback then
- mWakeup(callback)
- end
- end
- curIndex = 0
- timer[curFrame] = nil
- freeQueue[#freeQueue + 1] = q
-end
-
-local m = {}
-local mt = {}
-mt.__index = mt
-mt.type = 'timer'
-
-function mt:__tostring()
- return '[table:timer]'
-end
-
-function mt:__call()
- if self._onTimer then
- self:_onTimer()
- end
-end
-
-function mt:remove()
- self._removed = true
-end
-
-function mt:pause()
- if self._removed or self._pauseRemaining then
- return
- end
- self._pauseRemaining = getRemaining(self)
- self._running = false
- local ti = self._timeoutFrame
- local q = timer[ti]
- if q then
- for i = #q, 1, -1 do
- if q[i] == self then
- q[i] = false
- return
- end
- end
- end
-end
-
-function mt:resume()
- if self._removed or not self._pauseRemaining then
- return
- end
- local timeout = self._pauseRemaining
- self._pauseRemaining = nil
- mTimeout(self, timeout)
-end
-
-function mt:restart()
- if self._removed or self._pauseRemaining or not self._running then
- return
- end
- local ti = self._timeoutFrame
- local q = timer[ti]
- if q then
- for i = #q, 1, -1 do
- if q[i] == self then
- q[i] = false
- break
- end
- end
- end
- self._running = false
- mTimeout(self, self._timeout)
-end
-
-function mt:remaining()
- return getRemaining(self) / 1000.0
-end
-
-function mt:onTimer()
- self:_onTimer()
-end
-
-function m.wait(timeout, onTimer)
- local t = setmetatable({
- ['_timeout'] = mathMax(mathFloor(timeout * 1000.0), 1),
- ['_onTimer'] = onTimer,
- ['_timerCount'] = 1,
- }, mt)
- mTimeout(t, t._timeout)
- return t
-end
-
-function m.loop(timeout, onTimer)
- local t = setmetatable({
- ['_timeout'] = mathFloor(timeout * 1000.0),
- ['_onTimer'] = onTimer,
- }, mt)
- mTimeout(t, t._timeout)
- return t
-end
-
-function m.timer(timeout, count, onTimer)
- if count == 0 then
- return m.loop(timeout, onTimer)
- end
- local t = setmetatable({
- ['_timeout'] = mathFloor(timeout * 1000.0),
- ['_onTimer'] = onTimer,
- ['_timerCount'] = count,
- }, mt)
- mTimeout(t, t._timeout)
- return t
-end
-
-function m.clock()
- return curFrame / 1000.0
-end
-
-local lastClock = osClock()
-function m.update()
- local currentClock = osClock()
- local delta = currentClock - lastClock
- lastClock = currentClock
- if curIndex ~= 0 then
- curFrame = curFrame - 1
- end
- maxFrame = maxFrame + delta * 1000.0
- while curFrame < maxFrame do
- curFrame = curFrame + 1
- onTick()
- end
-end
-
-return m
diff --git a/server-beta/src/utility.lua b/server-beta/src/utility.lua
deleted file mode 100644
index c9defebc..00000000
--- a/server-beta/src/utility.lua
+++ /dev/null
@@ -1,452 +0,0 @@
-local tableSort = table.sort
-local stringRep = string.rep
-local tableConcat = table.concat
-local tostring = tostring
-local type = type
-local pairs = pairs
-local ipairs = ipairs
-local next = next
-local rawset = rawset
-local move = table.move
-local setmetatable = setmetatable
-local mathType = math.type
-local mathCeil = math.ceil
-local getmetatable = getmetatable
-local mathAbs = math.abs
-local ioOpen = io.open
-
-_ENV = nil
-
-local function formatNumber(n)
- local str = ('%.10f'):format(n)
- str = str:gsub('%.?0*$', '')
- return str
-end
-
-local function isInteger(n)
- if mathType then
- return mathType(n) == 'integer'
- else
- return type(n) == 'number' and n % 1 == 0
- end
-end
-
-local TAB = setmetatable({}, { __index = function (self, n)
- self[n] = stringRep(' ', n)
- return self[n]
-end})
-
-local RESERVED = {
- ['and'] = true,
- ['break'] = true,
- ['do'] = true,
- ['else'] = true,
- ['elseif'] = true,
- ['end'] = true,
- ['false'] = true,
- ['for'] = true,
- ['function'] = true,
- ['goto'] = true,
- ['if'] = true,
- ['in'] = true,
- ['local'] = true,
- ['nil'] = true,
- ['not'] = true,
- ['or'] = true,
- ['repeat'] = true,
- ['return'] = true,
- ['then'] = true,
- ['true'] = true,
- ['until'] = true,
- ['while'] = true,
-}
-
-local m = {}
-
---- 打印表的结构
----@param tbl table
----@param option table {optional = 'self'}
----@return string
-function m.dump(tbl, option)
- if not option then
- option = {}
- end
- if type(tbl) ~= 'table' then
- return ('%s'):format(tbl)
- end
- local lines = {}
- local mark = {}
- lines[#lines+1] = '{'
- local function unpack(tbl, tab)
- mark[tbl] = (mark[tbl] or 0) + 1
- local keys = {}
- local keymap = {}
- local integerFormat = '[%d]'
- local alignment = 0
- if #tbl >= 10 then
- local width = #tostring(#tbl)
- integerFormat = ('[%%0%dd]'):format(mathCeil(width))
- end
- for key in pairs(tbl) do
- if type(key) == 'string' then
- if not key:match('^[%a_][%w_]*$')
- or RESERVED[key]
- or option['longStringKey']
- then
- keymap[key] = ('[%q]'):format(key)
- else
- keymap[key] = ('%s'):format(key)
- end
- elseif isInteger(key) then
- keymap[key] = integerFormat:format(key)
- else
- keymap[key] = ('["<%s>"]'):format(tostring(key))
- end
- keys[#keys+1] = key
- if option['alignment'] then
- if #keymap[key] > alignment then
- alignment = #keymap[key]
- end
- end
- end
- local mt = getmetatable(tbl)
- if not mt or not mt.__pairs then
- if option['sorter'] then
- option['sorter'](keys, keymap)
- else
- tableSort(keys, function (a, b)
- return keymap[a] < keymap[b]
- end)
- end
- end
- for _, key in ipairs(keys) do
- local keyWord = keymap[key]
- if option['noArrayKey']
- and isInteger(key)
- and key <= #tbl
- then
- keyWord = ''
- else
- if #keyWord < alignment then
- keyWord = keyWord .. (' '):rep(alignment - #keyWord) .. ' = '
- else
- keyWord = keyWord .. ' = '
- end
- end
- local value = tbl[key]
- local tp = type(value)
- if option['format'] and option['format'][key] then
- lines[#lines+1] = ('%s%s%s,'):format(TAB[tab+1], keyWord, option['format'][key](value, unpack, tab+1))
- elseif tp == 'table' then
- if mark[value] and mark[value] > 0 then
- lines[#lines+1] = ('%s%s%s,'):format(TAB[tab+1], keyWord, option['loop'] or '"<Loop>"')
- else
- lines[#lines+1] = ('%s%s{'):format(TAB[tab+1], keyWord)
- unpack(value, tab+1)
- lines[#lines+1] = ('%s},'):format(TAB[tab+1])
- end
- elseif tp == 'string' then
- lines[#lines+1] = ('%s%s%q,'):format(TAB[tab+1], keyWord, value)
- elseif tp == 'number' then
- lines[#lines+1] = ('%s%s%s,'):format(TAB[tab+1], keyWord, (option['number'] or formatNumber)(value))
- elseif tp == 'nil' then
- else
- lines[#lines+1] = ('%s%s%s,'):format(TAB[tab+1], keyWord, tostring(value))
- end
- end
- mark[tbl] = mark[tbl] - 1
- end
- unpack(tbl, 0)
- lines[#lines+1] = '}'
- return tableConcat(lines, '\r\n')
-end
-
---- 递归判断A与B是否相等
----@param a any
----@param b any
----@return boolean
-function m.equal(a, b)
- local tp1 = type(a)
- local tp2 = type(b)
- if tp1 ~= tp2 then
- return false
- end
- if tp1 == 'table' then
- local mark = {}
- for k, v in pairs(a) do
- mark[k] = true
- local res = m.equal(v, b[k])
- if not res then
- return false
- end
- end
- for k in pairs(b) do
- if not mark[k] then
- return false
- end
- end
- return true
- elseif tp1 == 'number' then
- return mathAbs(a - b) <= 1e-10
- else
- return a == b
- end
-end
-
-local function sortTable(tbl)
- if not tbl then
- tbl = {}
- end
- local mt = {}
- local keys = {}
- local mark = {}
- local n = 0
- for key in next, tbl do
- n=n+1;keys[n] = key
- mark[key] = true
- end
- tableSort(keys)
- function mt:__newindex(key, value)
- rawset(self, key, value)
- n=n+1;keys[n] = key
- mark[key] = true
- if type(value) == 'table' then
- sortTable(value)
- end
- end
- function mt:__pairs()
- local list = {}
- local m = 0
- for key in next, self do
- if not mark[key] then
- m=m+1;list[m] = key
- end
- end
- if m > 0 then
- move(keys, 1, n, m+1)
- tableSort(list)
- for i = 1, m do
- local key = list[i]
- keys[i] = key
- mark[key] = true
- end
- n = n + m
- end
- local i = 0
- return function ()
- i = i + 1
- local key = keys[i]
- return key, self[key]
- end
- end
-
- return setmetatable(tbl, mt)
-end
-
---- 创建一个有序表
----@param tbl table {optional = 'self'}
----@return table
-function m.container(tbl)
- return sortTable(tbl)
-end
-
---- 读取文件
----@param path string
-function m.loadFile(path)
- local f, e = ioOpen(path, 'rb')
- if not f then
- return nil, e
- end
- if f:read(3) ~= '\xEF\xBB\xBF' then
- f:seek("set")
- end
- local buf = f:read 'a'
- f:close()
- return buf
-end
-
---- 写入文件
----@param path string
----@param content string
-function m.saveFile(path, content)
- local f, e = ioOpen(path, "wb")
-
- if f then
- f:write(content)
- f:close()
- return true
- else
- return false, e
- end
-end
-
---- 计数器
----@param init integer {optional = 'after'}
----@param step integer {optional = 'after'}
----@return fun():integer
-function m.counter(init, step)
- if not step then
- step = 1
- end
- local current = init and (init - 1) or 0
- return function ()
- current = current + step
- return current
- end
-end
-
---- 排序后遍历
----@param t table
-function m.sortPairs(t)
- local keys = {}
- for k in pairs(t) do
- keys[#keys+1] = k
- end
- tableSort(keys)
- local i = 0
- return function ()
- i = i + 1
- local k = keys[i]
- return k, t[k]
- end
-end
-
---- 深拷贝(不处理元表)
----@param source table
----@param target table {optional = 'self'}
-function m.deepCopy(source, target)
- local mark = {}
- local function copy(a, b)
- if type(a) ~= 'table' then
- return a
- end
- if mark[a] then
- return mark[a]
- end
- if not b then
- b = {}
- end
- mark[a] = b
- for k, v in pairs(a) do
- b[copy(k)] = copy(v)
- end
- return b
- end
- return copy(source, target)
-end
-
---- 序列化
-function m.unpack(t)
- local result = {}
- local tid = 0
- local cache = {}
- local function unpack(o)
- local id = cache[o]
- if not id then
- tid = tid + 1
- id = tid
- cache[o] = tid
- if type(o) == 'table' then
- local new = {}
- result[tid] = new
- for k, v in next, o do
- new[unpack(k)] = unpack(v)
- end
- else
- result[id] = o
- end
- end
- return id
- end
- unpack(t)
- return result
-end
-
---- 反序列化
-function m.pack(t)
- local cache = {}
- local function pack(id)
- local o = cache[id]
- if o then
- return o
- end
- o = t[id]
- if type(o) == 'table' then
- local new = {}
- cache[id] = new
- for k, v in next, o do
- new[pack(k)] = pack(v)
- end
- return new
- else
- cache[id] = o
- return o
- end
- end
- return pack(1)
-end
-
---- defer
-local deferMT = { __close = function (self) self[1]() end }
-function m.defer(callback)
- return setmetatable({ callback }, deferMT)
-end
-
-local esc = {
- ["'"] = [[\']],
- ['"'] = [[\"]],
- ['\r'] = [[\r]],
- ['\n'] = '\\\n',
-}
-
-function m.viewString(str, quo)
- if not quo then
- if not str:find("'", 1, true) and str:find('"', 1, true) then
- quo = "'"
- else
- quo = '"'
- end
- end
- if quo == "'" then
- return quo .. str:gsub([=[['\r\n]]=], esc) .. quo
- elseif quo == '"' then
- return quo .. str:gsub([=[["\r\n]]=], esc) .. quo
- else
- if str:find '\r' then
- return m.viewString(str)
- end
- local eqnum = #quo - 2
- local fsymb = ']' .. ('='):rep(eqnum) .. ']'
- if not str:find(fsymb, 1, true) then
- return quo .. str .. fsymb
- end
- for i = 0, 10 do
- local fsymb = ']' .. ('='):rep(i) .. ']'
- if not str:find(fsymb, 1, true) then
- local ssymb = '[' .. ('='):rep(i) .. '['
- return ssymb .. str .. fsymb
- end
- end
- return m.viewString(str)
- end
-end
-
-function m.viewLiteral(v)
- local tp = type(v)
- if tp == 'nil' then
- return 'nil'
- elseif tp == 'string' then
- return m.viewString(v)
- elseif tp == 'boolean' then
- return tostring(v)
- elseif tp == 'number' then
- if isInteger(v) then
- return tostring(v)
- else
- return formatNumber(v)
- end
- end
- return nil
-end
-
-return m
diff --git a/server-beta/src/vm/dummySource.lua b/server-beta/src/vm/dummySource.lua
deleted file mode 100644
index 50ff13e7..00000000
--- a/server-beta/src/vm/dummySource.lua
+++ /dev/null
@@ -1,13 +0,0 @@
-local vm = require 'vm.vm'
-
-vm.librarySourceCache = setmetatable({}, { __mode = 'kv'})
-
-function vm.librarySource(lib)
- if not vm.librarySourceCache[lib] then
- vm.librarySourceCache[lib] = {
- type = 'library',
- library = lib,
- }
- end
- return vm.librarySourceCache[lib]
-end
diff --git a/server-beta/src/vm/eachDef.lua b/server-beta/src/vm/eachDef.lua
deleted file mode 100644
index 0274cbee..00000000
--- a/server-beta/src/vm/eachDef.lua
+++ /dev/null
@@ -1,65 +0,0 @@
-local vm = require 'vm.vm'
-local guide = require 'parser.guide'
-local files = require 'files'
-
-local function checkPath(source, info)
- if source.type == 'goto' then
- return true
- end
- local src = info.source
- local mode = guide.getPath(source, src)
- if not mode then
- return true
- end
- if mode == 'before' then
- return false
- end
- return true
-end
-
-function vm.eachDef(source, callback)
- local results = {}
- local valueUris = {}
- local sourceUri = guide.getRoot(source).uri
- vm.eachRef(source, function (info)
- if info.mode == 'declare'
- or info.mode == 'set'
- or info.mode == 'return'
- or info.mode == 'value' then
- results[#results+1] = info
- local src = info.source
- if info.mode == 'return' then
- local uri = guide.getRoot(src).uri
- valueUris[uri] = info.source
- end
- end
- end)
-
- for _, info in ipairs(results) do
- local src = info.source
- local destUri = guide.getRoot(src).uri
- -- 如果是同一个文件,则检查位置关系后放行
- if sourceUri == destUri then
- if checkPath(source, info) then
- callback(info)
- end
- goto CONTINUE
- end
- -- 如果是global或field,则直接放行(因为无法确定顺序)
- if src.type == 'setindex'
- or src.type == 'setfield'
- or src.type == 'setmethod'
- or src.type == 'tablefield'
- or src.type == 'tableindex'
- or src.type == 'setglobal' then
- callback(info)
- goto CONTINUE
- end
- -- 如果不是同一个文件,则必须在该文件 return 后才放行
- if valueUris[destUri] then
- callback(info)
- goto CONTINUE
- end
- ::CONTINUE::
- end
-end
diff --git a/server-beta/src/vm/eachField.lua b/server-beta/src/vm/eachField.lua
deleted file mode 100644
index 1d3d222d..00000000
--- a/server-beta/src/vm/eachField.lua
+++ /dev/null
@@ -1,169 +0,0 @@
-local guide = require 'parser.guide'
-local vm = require 'vm.vm'
-
-local function ofTabel(value, callback)
- for _, field in ipairs(value) do
- if field.type == 'tablefield'
- or field.type == 'tableindex' then
- callback {
- source = field,
- key = guide.getKeyName(field),
- value = field.value,
- mode = 'set',
- }
- end
- end
-end
-
-local function ofENV(source, callback)
- if source.type == 'getlocal' then
- local parent = source.parent
- if parent.type == 'getfield'
- or parent.type == 'getmethod'
- or parent.type == 'getindex' then
- callback {
- source = parent,
- key = guide.getKeyName(parent),
- mode = 'get',
- }
- end
- elseif source.type == 'getglobal' then
- callback {
- source = source,
- key = guide.getKeyName(source),
- mode = 'get',
- }
- elseif source.type == 'setglobal' then
- callback {
- source = source,
- key = guide.getKeyName(source),
- mode = 'set',
- value = source.value,
- }
- end
-end
-
-local function ofSpecialArg(source, callback)
- local args = source.parent
- local call = args.parent
- local func = call.node
- local name = func.special
- if name == 'rawset' then
- if args[1] == source and args[2] then
- callback {
- source = call,
- key = guide.getKeyName(args[2]),
- value = args[3],
- mode = 'set',
- }
- end
- elseif name == 'rawget' then
- if args[1] == source and args[2] then
- callback {
- source = call,
- key = guide.getKeyName(args[2]),
- mode = 'get',
- }
- end
- elseif name == 'setmetatable' then
- if args[1] == source and args[2] then
- vm.eachField(args[2], function (info)
- if info.key == 's|__index' and info.value then
- vm.eachField(info.value, callback)
- end
- end)
- end
- end
-end
-
-local function ofVar(source, callback)
- local parent = source.parent
- if not parent then
- return
- end
- if parent.type == 'getfield'
- or parent.type == 'getmethod'
- or parent.type == 'getindex' then
- callback {
- source = parent,
- key = guide.getKeyName(parent),
- mode = 'get',
- }
- return
- end
- if parent.type == 'setfield'
- or parent.type == 'setmethod'
- or parent.type == 'setindex' then
- callback {
- source = parent,
- key = guide.getKeyName(parent),
- value = parent.value,
- mode = 'set',
- }
- return
- end
- if parent.type == 'callargs' then
- ofSpecialArg(source, callback)
- end
-end
-
-local function eachField(source, callback)
- vm.eachRef(source, function (info)
- local src = info.source
- if src.tag == '_ENV' then
- if src.ref then
- for _, ref in ipairs(src.ref) do
- ofENV(ref, callback)
- end
- end
- elseif src.type == 'getlocal'
- or src.type == 'getglobal'
- or src.type == 'getfield'
- or src.type == 'getmethod'
- or src.type == 'getindex' then
- ofVar(src, callback)
- elseif src.type == 'table' then
- ofTabel(src, callback)
- end
- end)
-end
-
---- 获取所有的field
-function vm.eachField(source, callback)
- local cache = vm.cache.eachField[source]
- if cache then
- for i = 1, #cache do
- local res = callback(cache[i])
- if res ~= nil then
- return res
- end
- end
- return
- end
- local unlock = vm.lock('eachField', source)
- if not unlock then
- return
- end
- cache = {}
- vm.cache.eachField[source] = cache
- local mark = {}
- eachField(source, function (info)
- local src = info.source
- if mark[src] then
- return
- end
- mark[src] = true
- cache[#cache+1] = info
- end)
- unlock()
- vm.eachRef(source, function (info)
- local src = info.source
- vm.cache.eachField[src] = cache
- end)
- for i = 1, #cache do
- local res = callback(cache[i])
- if res ~= nil then
- return res
- end
- end
-end
diff --git a/server-beta/src/vm/eachRef.lua b/server-beta/src/vm/eachRef.lua
deleted file mode 100644
index cfb2bef8..00000000
--- a/server-beta/src/vm/eachRef.lua
+++ /dev/null
@@ -1,500 +0,0 @@
-local guide = require 'parser.guide'
-local files = require 'files'
-local vm = require 'vm.vm'
-
-local function ofCall(func, index, callback)
- vm.eachRef(func, function (info)
- local src = info.source
- local returns
- if src.type == 'main' or src.type == 'function' then
- returns = src.returns
- end
- if returns then
- -- 搜索函数第 index 个返回值
- for _, rtn in ipairs(returns) do
- local val = rtn[index]
- if val then
- callback {
- source = val,
- mode = 'return',
- }
- vm.eachRef(val, callback)
- end
- end
- end
- end)
-end
-
-local function ofCallSelect(call, index, callback)
- local slc = call.parent
- if slc.index == index then
- vm.eachRef(slc.parent, callback)
- return
- end
- if call.extParent then
- for i = 1, #call.extParent do
- slc = call.extParent[i]
- if slc.index == index then
- vm.eachRef(slc.parent, callback)
- return
- end
- end
- end
-end
-
-local function ofReturn(rtn, index, callback)
- local func = guide.getParentFunction(rtn)
- if not func then
- return
- end
- -- 搜索函数调用的第 index 个接收值
- if func.type == 'main' then
- local myUri = func.uri
- local uris = files.findLinkTo(myUri)
- if not uris then
- return
- end
- for _, uri in ipairs(uris) do
- local ast = files.getAst(uri)
- if ast then
- local links = vm.getLinks(ast.ast)
- if links then
- for linkUri, calls in pairs(links) do
- if files.eq(linkUri, myUri) then
- for i = 1, #calls do
- ofCallSelect(calls[i], 1, callback)
- end
- end
- end
- end
- end
- end
- else
- vm.eachRef(func, function (info)
- local source = info.source
- local call = source.parent
- if not call or call.type ~= 'call' then
- return
- end
- ofCallSelect(call, index, callback)
- end)
- end
-end
-
-local function ofSpecialCall(call, func, index, callback)
- local name = func.special
- if name == 'setmetatable' then
- if index == 1 then
- local args = call.args
- if args[1] then
- vm.eachRef(args[1], callback)
- end
- if args[2] then
- vm.eachField(args[2], function (info)
- if info.key == 's|__index' then
- vm.eachRef(info.source, callback)
- if info.value then
- vm.eachRef(info.value, callback)
- end
- end
- end)
- end
- end
- elseif name == 'require' then
- if index == 1 then
- local result = vm.getLinkUris(call)
- if result then
- local myUri = guide.getRoot(call).uri
- for _, uri in ipairs(result) do
- if not files.eq(uri, myUri) then
- local ast = files.getAst(uri)
- if ast then
- ofCall(ast.ast, 1, callback)
- end
- end
- end
- end
- end
- end
-end
-
-local function ofValue(value, callback)
- if value.type == 'select' then
- -- 检查函数返回值
- local call = value.vararg
- if call.type == 'call' then
- ofCall(call.node, value.index, callback)
- ofSpecialCall(call, call.node, value.index, callback)
- end
- return
- end
-
- if value.type == 'table'
- or value.type == 'string'
- or value.type == 'number'
- or value.type == 'boolean'
- or value.type == 'nil'
- or value.type == 'function' then
- callback {
- source = value,
- mode = 'value',
- }
- end
-
- vm.eachRef(value, callback)
-
- local parent = value.parent
- if parent.type == 'local'
- or parent.type == 'setglobal'
- or parent.type == 'setlocal'
- or parent.type == 'setfield'
- or parent.type == 'setmethod'
- or parent.type == 'setindex'
- or parent.type == 'tablefield'
- or parent.type == 'tableindex' then
- if parent.value == value then
- vm.eachRef(parent, callback)
- end
- end
- if parent.type == 'return' then
- for i = 1, #parent do
- if parent[i] == value then
- ofReturn(parent, i, callback)
- break
- end
- end
- end
-end
-
-local function ofSelf(loc, callback)
- -- self 的2个特殊引用位置:
- -- 1. 当前方法定义时的对象(mt)
- local method = loc.method
- local node = method.node
- vm.eachRef(node, callback)
- -- 2. 调用该方法时传入的对象
-end
-
---- 自己作为赋值的值
-local function asValue(source, callback)
- local parent = source.parent
- if parent and parent.value == source then
- if guide.getName(parent) == '__index' then
- if parent.type == 'tablefield'
- or parent.type == 'tableindex' then
- local t = parent.parent
- local args = t.parent
- if args[2] == t then
- local call = args.parent
- local func = call.node
- if func.special == 'setmetatable' then
- vm.eachRef(args[1], callback)
- end
- end
- end
- end
- end
-end
-
-local function getCallRecvs(call)
- local parent = call.parent
- if parent.type ~= 'select' then
- return nil
- end
- local exParent = call.exParent
- local recvs = {}
- recvs[1] = parent.parent
- if exParent then
- for _, p in ipairs(exParent) do
- recvs[#recvs+1] = p.parent
- end
- end
- return recvs
-end
-
---- 自己作为函数的参数
-local function asArg(source, callback)
- local parent = source.parent
- if not parent then
- return
- end
- if parent.type == 'callargs' then
- local call = parent.parent
- local func = call.node
- local name = func.special
- if name == 'setmetatable' then
- if parent[1] == source then
- if parent[2] then
- vm.eachField(parent[2], function (info)
- if info.key == 's|__index' then
- vm.eachRef(info.source, callback)
- if info.value then
- vm.eachRef(info.value, callback)
- end
- end
- end)
- end
- end
- local recvs = getCallRecvs(call)
- if recvs and recvs[1] then
- vm.eachRef(recvs[1], callback)
- end
- end
- end
-end
-
-local function ofLocal(loc, callback)
- -- 方法中的 self 使用了一个虚拟的定义位置
- if loc.tag ~= 'self' then
- callback {
- source = loc,
- mode = 'declare',
- }
- end
- if loc.ref then
- for _, ref in ipairs(loc.ref) do
- if ref.type == 'getlocal' then
- callback {
- source = ref,
- mode = 'get',
- }
- asValue(ref, callback)
- elseif ref.type == 'setlocal' then
- callback {
- source = ref,
- mode = 'set',
- }
- if ref.value then
- ofValue(ref.value, callback)
- end
- end
- end
- end
- if loc.tag == 'self' then
- ofSelf(loc, callback)
- end
- if loc.value then
- ofValue(loc.value, callback)
- end
- if loc.tag == '_ENV' and loc.ref then
- for _, ref in ipairs(loc.ref) do
- if ref.type == 'getlocal' then
- local parent = ref.parent
- if parent.type == 'getfield'
- or parent.type == 'getindex' then
- if guide.getKeyName(parent) == '_G' then
- callback {
- source = parent,
- mode = 'get',
- }
- end
- end
- elseif ref.type == 'getglobal' then
- if guide.getName(ref) == '_G' then
- callback {
- source = ref,
- mode = 'get',
- }
- end
- end
- end
- end
-end
-
-local function ofGlobal(source, callback)
- local key = guide.getKeyName(source)
- local node = source.node
- if node.tag == '_ENV' then
- local uris = files.findGlobals(key)
- for _, uri in ipairs(uris) do
- local ast = files.getAst(uri)
- local globals = vm.getGlobals(ast.ast)
- if globals[key] then
- for _, info in ipairs(globals[key]) do
- callback(info)
- if info.value then
- ofValue(info.value, callback)
- end
- end
- end
- end
- else
- vm.eachField(node, function (info)
- if key == info.key then
- callback {
- source = info.source,
- mode = info.mode,
- }
- if info.value then
- ofValue(info.value, callback)
- end
- end
- end)
- end
-end
-
-local function ofField(source, callback)
- local parent = source.parent
- local key = guide.getKeyName(source)
- if parent.type == 'tablefield'
- or parent.type == 'tableindex' then
- local tbl = parent.parent
- vm.eachField(tbl, function (info)
- if key == info.key then
- callback {
- source = info.source,
- mode = info.mode,
- }
- if info.value then
- ofValue(info.value, callback)
- end
- end
- end)
- else
- local node = parent.node
- vm.eachField(node, function (info)
- if key == info.key then
- callback {
- source = info.source,
- mode = info.mode,
- }
- if info.value then
- ofValue(info.value, callback)
- end
- end
- end)
- end
-end
-
-local function ofLiteral(source, callback)
- local parent = source.parent
- if not parent then
- return
- end
- if parent.type == 'setindex'
- or parent.type == 'getindex'
- or parent.type == 'tableindex' then
- ofField(source, callback)
- end
-end
-
-local function ofLabel(source, callback)
- callback {
- source = source,
- mode = 'set',
- }
- if source.ref then
- for _, ref in ipairs(source.ref) do
- callback {
- source = ref,
- mode = 'get',
- }
- end
- end
-end
-
-local function ofGoTo(source, callback)
- local name = source[1]
- local label = guide.getLabel(source, name)
- if label then
- ofLabel(label, callback)
- end
-end
-
-local function ofMain(source, callback)
- callback {
- source = source,
- mode = 'main',
- }
-end
-
-local function eachRef(source, callback)
- local stype = source.type
- if stype == 'local' then
- ofLocal(source, callback)
- elseif stype == 'getlocal'
- or stype == 'setlocal' then
- ofLocal(source.node, callback)
- elseif stype == 'setglobal'
- or stype == 'getglobal' then
- ofGlobal(source, callback)
- elseif stype == 'field'
- or stype == 'method' then
- ofField(source, callback)
- elseif stype == 'setfield'
- or stype == 'getfield' then
- ofField(source.field, callback)
- elseif stype == 'setmethod'
- or stype == 'getmethod' then
- ofField(source.method, callback)
- elseif stype == 'number'
- or stype == 'boolean'
- or stype == 'string' then
- ofLiteral(source, callback)
- elseif stype == 'goto' then
- ofGoTo(source, callback)
- elseif stype == 'label' then
- ofLabel(source, callback)
- elseif stype == 'table'
- or stype == 'function' then
- ofValue(source, callback)
- elseif stype == 'main' then
- ofMain(source, callback)
- end
- asArg(source, callback)
-end
-
---- 判断2个对象是否拥有相同的引用
-function vm.isSameRef(a, b)
- local cache = vm.cache.eachRef[a]
- if cache then
- -- 相同引用的source共享同一份cache
- return cache == vm.cache.eachRef[b]
- else
- return vm.eachRef(a, function (info)
- if info.source == b then
- return true
- end
- end) or false
- end
-end
-
---- 获取所有的引用
-function vm.eachRef(source, callback)
- local cache = vm.cache.eachRef[source]
- if cache then
- for i = 1, #cache do
- local res = callback(cache[i])
- if res ~= nil then
- return res
- end
- end
- return
- end
- local unlock = vm.lock('eachRef', source)
- if not unlock then
- return
- end
- cache = {}
- vm.cache.eachRef[source] = cache
- local mark = {}
- eachRef(source, function (info)
- local src = info.source
- if mark[src] then
- return
- end
- mark[src] = true
- cache[#cache+1] = info
- end)
- unlock()
- for i = 1, #cache do
- local src = cache[i].source
- vm.cache.eachRef[src] = cache
- end
- for i = 1, #cache do
- local res = callback(cache[i])
- if res ~= nil then
- return res
- end
- end
-end
diff --git a/server-beta/src/vm/getGlobal.lua b/server-beta/src/vm/getGlobal.lua
deleted file mode 100644
index 373c907e..00000000
--- a/server-beta/src/vm/getGlobal.lua
+++ /dev/null
@@ -1,6 +0,0 @@
-local vm = require 'vm.vm'
-
-function vm.getGlobal(source)
- vm.getGlobals(source)
- return vm.cache.getGlobal[source]
-end
diff --git a/server-beta/src/vm/getGlobals.lua b/server-beta/src/vm/getGlobals.lua
deleted file mode 100644
index 699dd270..00000000
--- a/server-beta/src/vm/getGlobals.lua
+++ /dev/null
@@ -1,45 +0,0 @@
-local guide = require 'parser.guide'
-local vm = require 'vm.vm'
-
-local function getGlobals(root)
- local env = guide.getENV(root)
- local cache = {}
- local mark = {}
- vm.eachField(env, function (info)
- local src = info.source
- if mark[src] then
- return
- end
- mark[src] = true
- local name = info.key
- if not name then
- return
- end
- if not cache[name] then
- cache[name] = {
- key = name,
- mode = {},
- }
- end
- cache[name][#cache[name]+1] = info
- cache[name].mode[info.mode] = true
- vm.cache.getGlobal[src] = name
- end)
- return cache
-end
-
-function vm.getGlobals(source)
- source = guide.getRoot(source)
- local cache = vm.cache.getGlobals[source]
- if cache ~= nil then
- return cache
- end
- local unlock = vm.lock('getGlobals', source)
- if not unlock then
- return nil
- end
- cache = getGlobals(source) or false
- vm.cache.getGlobals[source] = cache
- unlock()
- return cache
-end
diff --git a/server-beta/src/vm/getLibrary.lua b/server-beta/src/vm/getLibrary.lua
deleted file mode 100644
index fd05347e..00000000
--- a/server-beta/src/vm/getLibrary.lua
+++ /dev/null
@@ -1,89 +0,0 @@
-local vm = require 'vm.vm'
-local library = require 'library'
-local guide = require 'parser.guide'
-
-local function checkStdLibrary(source)
- local globalName = vm.getGlobal(source)
- if not globalName then
- return nil
- end
- local name = globalName:match '^s|(.+)$'
- if library.global[name] then
- return library.global[name]
- end
-end
-
-local function getLibInNode(source, nodeLib)
- if not nodeLib then
- return nil
- end
- if not nodeLib.child then
- return nil
- end
- local key = guide.getName(source)
- local defLib = nodeLib.child[key]
- return defLib
-end
-
-local function getNodeAsTable(source)
- local node = source.node
- local nodeGlobalName = vm.getGlobal(node)
- if not nodeGlobalName then
- return nil
- end
- local nodeName = nodeGlobalName:match '^s|(.+)$'
- return getLibInNode(source, library.global[nodeName])
-end
-
-local function getNodeAsObject(source)
- local node = source.node
- local values = vm.getValue(node)
- if not values then
- return nil
- end
- for i = 1, #values do
- local value = values[i]
- local type = value.type
- local nodeLib = library.object[type]
- local lib = getLibInNode(source, nodeLib)
- if lib then
- return lib
- end
- end
- return nil
-end
-
-local function checkNode(source)
- if source.type ~= 'getfield'
- and source.type ~= 'getmethod'
- and source.type ~= 'getindex' then
- return nil
- end
- return getNodeAsTable(source)
- or getNodeAsObject(source)
-end
-
-local function getLibrary(source)
- local lib = checkStdLibrary(source)
- if lib then
- return lib
- end
- return checkNode(source) or vm.eachRef(source, function (info)
- return checkNode(info.source)
- end)
-end
-
-function vm.getLibrary(source)
- local cache = vm.cache.getLibrary[source]
- if cache ~= nil then
- return cache
- end
- local unlock = vm.lock('getLibrary', source)
- if not unlock then
- return
- end
- cache = getLibrary(source) or false
- vm.cache.getLibrary[source] = cache
- unlock()
- return cache
-end
diff --git a/server-beta/src/vm/getLinks.lua b/server-beta/src/vm/getLinks.lua
deleted file mode 100644
index 6875771f..00000000
--- a/server-beta/src/vm/getLinks.lua
+++ /dev/null
@@ -1,48 +0,0 @@
-local guide = require 'parser.guide'
-local vm = require 'vm.vm'
-
-local function getLinks(root)
- local cache = {}
- local ok
- guide.eachSpecialOf(root, 'require', function (source)
- local call = source.parent
- if call.type == 'call' then
- local uris = vm.getLinkUris(call)
- if uris then
- ok = true
- for i = 1, #uris do
- local uri = uris[i]
- if not cache[uri] then
- cache[uri] = {}
- end
- cache[uri][#cache[uri]+1] = call
- end
- end
- end
- end)
- if not ok then
- return nil
- end
- return cache
-end
-
-function vm.getLinks(source)
- source = guide.getRoot(source)
- local cache = vm.cache.getLinks[source]
- if cache ~= nil then
- return cache
- end
- local unlock = vm.lock('getLinks', source)
- if not unlock then
- return nil
- end
- local clock = os.clock()
- cache = getLinks(source) or false
- local passed = os.clock() - clock
- if passed > 0.1 then
- log.warn(('getLinks takes [%.3f] sec!'):format(passed))
- end
- vm.cache.getLinks[source] = cache
- unlock()
- return cache
-end
diff --git a/server-beta/src/vm/getValue.lua b/server-beta/src/vm/getValue.lua
deleted file mode 100644
index ee486a54..00000000
--- a/server-beta/src/vm/getValue.lua
+++ /dev/null
@@ -1,895 +0,0 @@
-local vm = require 'vm.vm'
-
-local typeSort = {
- ['boolean'] = 1,
- ['string'] = 2,
- ['integer'] = 3,
- ['number'] = 4,
- ['table'] = 5,
- ['function'] = 6,
- ['nil'] = math.maxinteger,
-}
-
-NIL = setmetatable({'<nil>'}, { __tostring = function () return 'nil' end })
-
-local function merge(t, b)
- if not t then
- t = {}
- end
- if not b then
- return t
- end
- for i = 1, #b do
- local o = b[i]
- if not t[o] then
- t[o] = true
- t[#t+1] = o
- end
- end
- return t
-end
-
-local function alloc(o)
- -- TODO
- assert(o.type)
- if type(o.type) == 'table' then
- local values = {}
- for i = 1, #o.type do
- local sub = {
- type = o.type[i],
- value = o.value,
- source = o.source,
- }
- values[i] = sub
- values[sub] = true
- end
- return values
- else
- return {
- [1] = o,
- [o] = true,
- }
- end
-end
-
-local function insert(t, o)
- if not o then
- return
- end
- if not t[o] then
- t[o] = true
- t[#t+1] = o
- end
- return t
-end
-
-local function checkLiteral(source)
- if source.type == 'string' then
- return alloc {
- type = 'string',
- value = source[1],
- source = source,
- }
- elseif source.type == 'nil' then
- return alloc {
- type = 'nil',
- value = NIL,
- source = source,
- }
- elseif source.type == 'boolean' then
- return alloc {
- type = 'boolean',
- value = source[1],
- source = source,
- }
- elseif source.type == 'number' then
- if math.type(source[1]) == 'integer' then
- return alloc {
- type = 'integer',
- value = source[1],
- source = source,
- }
- else
- return alloc {
- type = 'number',
- value = source[1],
- source = source,
- }
- end
- elseif source.type == 'table' then
- return alloc {
- type = 'table',
- source = source,
- }
- elseif source.type == 'function' then
- return alloc {
- type = 'function',
- source = source,
- }
- end
-end
-
-local function checkUnary(source)
- if source.type ~= 'unary' then
- return
- end
- local op = source.op
- if op.type == 'not' then
- local checkTrue = vm.checkTrue(source[1])
- local value = nil
- if checkTrue == true then
- value = false
- elseif checkTrue == false then
- value = true
- end
- return alloc {
- type = 'boolean',
- value = value,
- source = source,
- }
- elseif op.type == '#' then
- return alloc {
- type = 'integer',
- source = source,
- }
- elseif op.type == '~' then
- local l = vm.getLiteral(source[1], 'integer')
- return alloc {
- type = 'integer',
- value = l and ~l or nil,
- source = source,
- }
- elseif op.type == '-' then
- local v = vm.getLiteral(source[1], 'integer')
- if v then
- return alloc {
- type = 'integer',
- value = - v,
- source = source,
- }
- end
- v = vm.getLiteral(source[1], 'number')
- return alloc {
- type = 'number',
- value = v and -v or nil,
- source = source,
- }
- end
-end
-
-local function checkBinary(source)
- if source.type ~= 'binary' then
- return
- end
- local op = source.op
- if op.type == 'and' then
- local isTrue = vm.checkTrue(source[1])
- if isTrue == true then
- return vm.getValue(source[2])
- elseif isTrue == false then
- return vm.getValue(source[1])
- else
- return merge(
- vm.getValue(source[1]),
- vm.getValue(source[2])
- )
- end
- elseif op.type == 'or' then
- local isTrue = vm.checkTrue(source[1])
- if isTrue == true then
- return vm.getValue(source[1])
- elseif isTrue == false then
- return vm.getValue(source[2])
- else
- return merge(
- vm.getValue(source[1]),
- vm.getValue(source[2])
- )
- end
- elseif op.type == '==' then
- local value = vm.isSameValue(source[1], source[2])
- if value ~= nil then
- return alloc {
- type = 'boolean',
- value = value,
- source = source,
- }
- end
- local isSame = vm.isSameRef(source[1], source[2])
- if isSame == true then
- value = true
- else
- value = nil
- end
- return alloc {
- type = 'boolean',
- value = value,
- source = source,
- }
- elseif op.type == '~=' then
- local value = vm.isSameValue(source[1], source[2])
- if value ~= nil then
- return alloc {
- type = 'boolean',
- value = not value,
- source = source,
- }
- end
- local isSame = vm.isSameRef(source[1], source[2])
- if isSame == true then
- value = false
- else
- value = nil
- end
- return alloc {
- type = 'boolean',
- value = value,
- source = source,
- }
- elseif op.type == '<=' then
- local v1 = vm.getLiteral(source[1], 'integer') or vm.getLiteral(source[1], 'number')
- local v2 = vm.getLiteral(source[2], 'integer') or vm.getLiteral(source[2], 'number')
- local v
- if v1 and v2 then
- v = v1 <= v2
- end
- return alloc {
- type = 'boolean',
- value = v,
- source = source,
- }
- elseif op.type == '>=' then
- local v1 = vm.getLiteral(source[1], 'integer') or vm.getLiteral(source[1], 'number')
- local v2 = vm.getLiteral(source[2], 'integer') or vm.getLiteral(source[2], 'number')
- local v
- if v1 and v2 then
- v = v1 >= v2
- end
- return alloc {
- type = 'boolean',
- value = v,
- source = source,
- }
- elseif op.type == '<' then
- local v1 = vm.getLiteral(source[1], 'integer') or vm.getLiteral(source[1], 'number')
- local v2 = vm.getLiteral(source[2], 'integer') or vm.getLiteral(source[2], 'number')
- local v
- if v1 and v2 then
- v = v1 < v2
- end
- return alloc {
- type = 'boolean',
- value = v,
- source = source,
- }
- elseif op.type == '>' then
- local v1 = vm.getLiteral(source[1], 'integer') or vm.getLiteral(source[1], 'number')
- local v2 = vm.getLiteral(source[2], 'integer') or vm.getLiteral(source[2], 'number')
- local v
- if v1 and v2 then
- v = v1 > v2
- end
- return alloc {
- type = 'boolean',
- value = v,
- source = source,
- }
- elseif op.type == '|' then
- local v1 = vm.getLiteral(source[1], 'integer')
- local v2 = vm.getLiteral(source[2], 'integer')
- local v
- if v1 and v2 then
- v = v1 | v2
- end
- return alloc {
- type = 'integer',
- value = v,
- source = source,
- }
- elseif op.type == '~' then
- local v1 = vm.getLiteral(source[1], 'integer')
- local v2 = vm.getLiteral(source[2], 'integer')
- local v
- if v1 and v2 then
- v = v1 ~ v2
- end
- return alloc {
- type = 'integer',
- value = v,
- source = source,
- }
- elseif op.type == '&' then
- local v1 = vm.getLiteral(source[1], 'integer')
- local v2 = vm.getLiteral(source[2], 'integer')
- local v
- if v1 and v2 then
- v = v1 & v2
- end
- return alloc {
- type = 'integer',
- value = v,
- source = source,
- }
- elseif op.type == '<<' then
- local v1 = vm.getLiteral(source[1], 'integer')
- local v2 = vm.getLiteral(source[2], 'integer')
- local v
- if v1 and v2 then
- v = v1 << v2
- end
- return alloc {
- type = 'integer',
- value = v,
- source = source,
- }
- elseif op.type == '>>' then
- local v1 = vm.getLiteral(source[1], 'integer')
- local v2 = vm.getLiteral(source[2], 'integer')
- local v
- if v1 and v2 then
- v = v1 >> v2
- end
- return alloc {
- type = 'integer',
- value = v,
- source = source,
- }
- elseif op.type == '..' then
- local v1 = vm.getLiteral(source[1], 'string')
- local v2 = vm.getLiteral(source[2], 'string')
- local v
- if v1 and v2 then
- v = v1 .. v2
- end
- return alloc {
- type = 'string',
- value = v,
- source = source,
- }
- elseif op.type == '^' then
- local v1 = vm.getLiteral(source[1], 'integer') or vm.getLiteral(source[1], 'number')
- local v2 = vm.getLiteral(source[2], 'integer') or vm.getLiteral(source[2], 'number')
- local v
- if v1 and v2 then
- v = v1 ^ v2
- end
- return alloc {
- type = 'number',
- value = v,
- source = source,
- }
- elseif op.type == '/' then
- local v1 = vm.getLiteral(source[1], 'integer') or vm.getLiteral(source[1], 'number')
- local v2 = vm.getLiteral(source[2], 'integer') or vm.getLiteral(source[2], 'number')
- local v
- if v1 and v2 then
- v = v1 > v2
- end
- return alloc {
- type = 'number',
- value = v,
- source = source,
- }
- -- 其他数学运算根据2侧的值决定,当2侧的值均为整数时返回整数
- elseif op.type == '+' then
- local v1 = vm.getLiteral(source[1], 'integer')
- local v2 = vm.getLiteral(source[2], 'integer')
- if v1 and v2 then
- return alloc {
- type = 'integer',
- value = v1 + v2,
- source = source,
- }
- end
- v1 = v1 or vm.getLiteral(source[1], 'number')
- v2 = v2 or vm.getLiteral(source[1], 'number')
- return alloc {
- type = 'number',
- value = (v1 and v2) and (v1 + v2) or nil,
- source = source,
- }
- elseif op.type == '-' then
- local v1 = vm.getLiteral(source[1], 'integer')
- local v2 = vm.getLiteral(source[2], 'integer')
- if v1 and v2 then
- return alloc {
- type = 'integer',
- value = v1 - v2,
- source = source,
- }
- end
- v1 = v1 or vm.getLiteral(source[1], 'number')
- v2 = v2 or vm.getLiteral(source[1], 'number')
- return alloc {
- type = 'number',
- value = (v1 and v2) and (v1 - v2) or nil,
- source = source,
- }
- elseif op.type == '*' then
- local v1 = vm.getLiteral(source[1], 'integer')
- local v2 = vm.getLiteral(source[2], 'integer')
- if v1 and v2 then
- return alloc {
- type = 'integer',
- value = v1 * v2,
- source = source,
- }
- end
- v1 = v1 or vm.getLiteral(source[1], 'number')
- v2 = v2 or vm.getLiteral(source[1], 'number')
- return alloc {
- type = 'number',
- value = (v1 and v2) and (v1 * v2) or nil,
- source = source,
- }
- elseif op.type == '%' then
- local v1 = vm.getLiteral(source[1], 'integer')
- local v2 = vm.getLiteral(source[2], 'integer')
- if v1 and v2 then
- return alloc {
- type = 'integer',
- value = v1 % v2,
- source = source,
- }
- end
- v1 = v1 or vm.getLiteral(source[1], 'number')
- v2 = v2 or vm.getLiteral(source[1], 'number')
- return alloc {
- type = 'number',
- value = (v1 and v2) and (v1 % v2) or nil,
- source = source,
- }
- elseif op.type == '//' then
- local v1 = vm.getLiteral(source[1], 'integer')
- local v2 = vm.getLiteral(source[2], 'integer')
- if v1 and v2 then
- return alloc {
- type = 'integer',
- value = v1 // v2,
- source = source,
- }
- end
- v1 = v1 or vm.getLiteral(source[1], 'number')
- v2 = v2 or vm.getLiteral(source[1], 'number')
- return alloc {
- type = 'number',
- value = (v1 and v2) and (v1 // v2) or nil,
- source = source,
- }
- end
-end
-
-local function checkValue(source)
- if source.value then
- return vm.getValue(source.value)
- end
- if source.type == 'paren' then
- return vm.getValue(source.exp)
- end
-end
-
-local function hasTypeInResults(results, type)
- for i = 1, #results do
- if results[i].type == type then
- return true
- end
- end
- return false
-end
-
-local function inferByCall(results, source)
- if #results ~= 0 then
- return
- end
- if not source.parent then
- return
- end
- if source.parent.type ~= 'call' then
- return
- end
- if source.parent.node == source then
- insert(results, {
- type = 'function',
- source = source,
- })
- return
- end
-end
-
-local function inferByGetTable(results, source)
- if #results ~= 0 then
- return
- end
- local next = source.next
- if not next then
- return
- end
- if next.type == 'getfield'
- or next.type == 'getindex'
- or next.type == 'getmethod'
- or next.type == 'setfield'
- or next.type == 'setindex'
- or next.type == 'setmethod' then
- insert(results, {
- type = 'table',
- source = source,
- })
- end
-end
-
-local function checkDef(results, source)
- vm.eachDef(source, function (info)
- local src = info.source
- local tp = vm.getValue(src)
- if tp then
- merge(results, tp)
- end
- end)
-end
-
-local function checkLibrary(source)
- local lib = vm.getLibrary(source)
- if not lib then
- return nil
- end
- return alloc {
- type = lib.type,
- value = lib.value,
- source = vm.librarySource(lib),
- }
-end
-
-local function checkLibraryReturn(source)
- if source.type ~= 'select' then
- return nil
- end
- local index = source.index
- local call = source.vararg
- if call.type ~= 'call' then
- return nil
- end
- local func = call.node
- local lib = vm.getLibrary(func)
- if not lib then
- return nil
- end
- if lib.type ~= 'function' then
- return nil
- end
- if not lib.returns then
- return nil
- end
- local rtn = lib.returns[index]
- if not rtn then
- return nil
- end
- return alloc {
- type = rtn.type,
- value = rtn.value,
- source = vm.librarySource(rtn),
- }
-end
-
-local function checkLibraryArg(source)
- local args = source.parent
- if not args then
- return
- end
- if args.type ~= 'callargs' then
- return
- end
- local call = args.parent
- if not call then
- return
- end
- local func = call.node
- local index
- for i = 1, #args do
- if args[i] == source then
- index = i
- break
- end
- end
- if not index then
- return
- end
- local lib = vm.getLibrary(func)
- local arg = lib and lib.args and lib.args[index]
- if not arg then
- return
- end
- if arg.type == '...' then
- return
- end
- return alloc {
- type = arg.type,
- value = arg.value,
- source = vm.librarySource(arg),
- }
-end
-
-local function inferByUnary(results, source)
- if #results ~= 0 then
- return
- end
- local parent = source.parent
- if not parent or parent.type ~= 'unary' then
- return
- end
- local op = parent.op
- if op.type == '#' then
- insert(results, {
- type = 'string',
- source = vm.librarySource(source)
- })
- insert(results, {
- type = 'table',
- source = vm.librarySource(source)
- })
- elseif op.type == '~' then
- insert(results, {
- type = 'integer',
- source = vm.librarySource(source)
- })
- elseif op.type == '-' then
- insert(results, {
- type = 'number',
- source = vm.librarySource(source)
- })
- end
-end
-
-local function inferByBinary(results, source)
- if #results ~= 0 then
- return
- end
- local parent = source.parent
- if not parent or parent.type ~= 'binary' then
- return
- end
- local op = parent.op
- if op.type == '<='
- or op.type == '>='
- or op.type == '<'
- or op.type == '>'
- or op.type == '^'
- or op.type == '/'
- or op.type == '+'
- or op.type == '-'
- or op.type == '*'
- or op.type == '%' then
- insert(results, {
- type = 'number',
- source = vm.librarySource(source)
- })
- elseif op.type == '|'
- or op.type == '~'
- or op.type == '&'
- or op.type == '<<'
- or op.type == '>>'
- -- 整数的可能性比较高
- or op.type == '//' then
- insert(results, {
- type = 'integer',
- source = vm.librarySource(source)
- })
- elseif op.type == '..' then
- insert(results, {
- type = 'string',
- source = vm.librarySource(source)
- })
- end
-end
-
-local function inferBySetOfLocal(results, source)
- if source.ref then
- for i = 1, #source.ref do
- local ref = source.ref[i]
- if ref.type == 'setlocal' then
- break
- end
- merge(results, vm.getValue(ref))
- end
- end
-end
-
-local function inferBySet(results, source)
- if #results ~= 0 then
- return
- end
- if source.type == 'local' then
- inferBySetOfLocal(results, source)
- elseif source.type == 'setlocal'
- or source.type == 'getlocal' then
- inferBySetOfLocal(results, source.node)
- end
-end
-
-local function getValue(source)
- local results = checkLiteral(source)
- or checkValue(source)
- or checkUnary(source)
- or checkBinary(source)
- or checkLibrary(source)
- or checkLibraryReturn(source)
- or checkLibraryArg(source)
- if results then
- return results
- end
-
- results = {}
- checkDef(results, source)
- inferBySet(results, source)
- inferByCall(results, source)
- inferByGetTable(results, source)
- inferByUnary(results, source)
- inferByBinary(results, source)
-
- if #results == 0 then
- return nil
- end
-
- return results
-end
-
-function vm.checkTrue(source)
- local values = vm.getValue(source)
- if not values then
- return
- end
- -- 当前认为的结果
- local current
- for i = 1, #values do
- -- 新的结果
- local new
- local v = values[i]
- if v.type == 'nil' then
- new = false
- elseif v.type == 'boolean' then
- if v.value == true then
- new = true
- elseif v.value == false then
- new = false
- end
- end
- if new ~= nil then
- if current == nil then
- current = new
- else
- -- 如果2个结果完全相反,则返回 nil 表示不确定
- if new ~= current then
- return nil
- end
- end
- end
- end
- return current
-end
-
---- 获取特定类型的字面量值
-function vm.getLiteral(source, type)
- local values = vm.getValue(source)
- if not values then
- return nil
- end
- for i = 1, #values do
- local v = values[i]
- if v.value ~= nil then
- if type == nil or v.type == type then
- return v.value
- end
- end
- end
- return nil
-end
-
-function vm.isSameValue(a, b)
- local valuesA = vm.getValue(a)
- local valuesB = vm.getValue(b)
- if not valuesA or not valuesB then
- return false
- end
- if valuesA == valuesB then
- return true
- end
- local values = {}
- for i = 1, #valuesA do
- local value = valuesA[i]
- local literal = value.value
- if literal then
- values[literal] = false
- end
- end
- for i = 1, #valuesB do
- local value = valuesA[i]
- local literal = value.value
- if literal then
- if values[literal] == nil then
- return false
- end
- values[literal] = true
- end
- end
- for k, v in pairs(values) do
- if v == false then
- return false
- end
- end
- return true
-end
-
---- 是否包含某种类型
-function vm.hasType(source, type)
- local values = vm.getValue(source)
- if not values then
- return false
- end
- for i = 1, #values do
- local value = values[i]
- if value.type == type then
- return true
- end
- end
- return false
-end
-
-function vm.viewType(values)
- if not values then
- return 'any'
- end
- local types = {}
- for i = 1, #values do
- local tp = values[i].type
- if not types[tp] then
- types[tp] = true
- types[#types+1] = tp
- end
- end
- if #types == 0 then
- return 'any'
- end
- if #types == 1 then
- return types[1]
- end
- table.sort(types, function (a, b)
- local sa = typeSort[a]
- local sb = typeSort[b]
- if sa and sb then
- return sa < sb
- end
- if not sa and not sb then
- return a < b
- end
- if sa and not sb then
- return true
- end
- if not sa and sb then
- return false
- end
- return false
- end)
- return table.concat(types, '|')
-end
-
-function vm.getType(source)
- local values = vm.getValue(source)
- return vm.viewType(values)
-end
-
-function vm.getValue(source)
- if not source then
- return
- end
- local cache = vm.cache.getValue[source]
- if cache ~= nil then
- return cache
- end
- local unlock = vm.lock('getValue', source)
- if not unlock then
- return
- end
- cache = getValue(source) or false
- vm.cache.getValue[source] = cache
- unlock()
- return cache
-end
diff --git a/server-beta/src/vm/init.lua b/server-beta/src/vm/init.lua
deleted file mode 100644
index 4249de3d..00000000
--- a/server-beta/src/vm/init.lua
+++ /dev/null
@@ -1,11 +0,0 @@
-local vm = require 'vm.vm'
-require 'vm.eachField'
-require 'vm.eachRef'
-require 'vm.eachDef'
-require 'vm.getGlobals'
-require 'vm.getLinks'
-require 'vm.getGlobal'
-require 'vm.getLibrary'
-require 'vm.getValue'
-require 'vm.dummySource'
-return vm
diff --git a/server-beta/src/vm/special.lua b/server-beta/src/vm/special.lua
deleted file mode 100644
index e69de29b..00000000
--- a/server-beta/src/vm/special.lua
+++ /dev/null
diff --git a/server-beta/src/vm/vm.lua b/server-beta/src/vm/vm.lua
deleted file mode 100644
index 23a691df..00000000
--- a/server-beta/src/vm/vm.lua
+++ /dev/null
@@ -1,81 +0,0 @@
-local guide = require 'parser.guide'
-local util = require 'utility'
-
-local setmetatable = setmetatable
-local assert = assert
-local require = require
-local type = type
-
-_ENV = nil
-
-local specials = {
- ['_G'] = true,
- ['rawset'] = true,
- ['rawget'] = true,
- ['setmetatable'] = true,
- ['require'] = true,
- ['dofile'] = true,
- ['loadfile'] = true,
-}
-
----@class vm
-local m = {}
-
-function m.lock(tp, source)
- if m.locked[tp][source] then
- return nil
- end
- m.locked[tp][source] = true
- return function ()
- m.locked[tp][source] = nil
- end
-end
-
---- 获取link的uri
-function m.getLinkUris(call)
- local workspace = require 'workspace'
- local func = call.node
- local name = func.special
- if name == 'require' then
- local args = call.args
- if not args[1] then
- return nil
- end
- local literal = guide.getLiteral(args[1])
- if type(literal) ~= 'string' then
- return nil
- end
- return workspace.findUrisByRequirePath(literal, true)
- end
-end
-
-m.cacheTracker = setmetatable({}, { __mode = 'kv' })
-
---- 刷新缓存
-function m.refreshCache()
- if m.cache then
- m.cache.dead = true
- end
- m.cache = {
- eachRef = {},
- eachField = {},
- getGlobals = {},
- getLinks = {},
- getGlobal = {},
- specialName = {},
- getLibrary = {},
- getValue = {},
- specials = nil,
- }
- m.locked = {
- eachRef = {},
- eachField = {},
- getGlobals = {},
- getLinks = {},
- getLibrary = {},
- getValue = {},
- }
- m.cacheTracker[m.cache] = true
-end
-
-return m
diff --git a/server-beta/src/workspace/init.lua b/server-beta/src/workspace/init.lua
deleted file mode 100644
index 7cbe15d7..00000000
--- a/server-beta/src/workspace/init.lua
+++ /dev/null
@@ -1,3 +0,0 @@
-local workspace = require 'workspace.workspace'
-
-return workspace
diff --git a/server-beta/src/workspace/workspace.lua b/server-beta/src/workspace/workspace.lua
deleted file mode 100644
index 37ec2d7b..00000000
--- a/server-beta/src/workspace/workspace.lua
+++ /dev/null
@@ -1,194 +0,0 @@
-local pub = require 'pub'
-local fs = require 'bee.filesystem'
-local furi = require 'file-uri'
-local files = require 'files'
-local config = require 'config'
-local glob = require 'glob'
-local platform = require 'bee.platform'
-local await = require 'await'
-local diagnostic = require 'provider.diagnostic'
-
-local m = {}
-m.type = 'workspace'
-m.ignoreVersion = -1
-m.ignoreMatcher = nil
-
---- 初始化工作区
-function m.init(name, uri)
- m.name = name
- m.uri = uri
- m.path = furi.decode(uri)
- log.info('Workspace inited: ', uri)
- local logPath = ROOT / 'log' / (uri:gsub('[/:]+', '_') .. '.log')
- log.info('Log path: ', logPath)
- log.init(ROOT, logPath)
-end
-
---- 创建排除文件匹配器
-function m.getIgnoreMatcher()
- if m.ignoreVersion == config.version then
- return m.ignoreMatcher
- end
-
- local pattern = {}
- -- config.workspace.ignoreDir
- for path in pairs(config.config.workspace.ignoreDir) do
- log.info('Ignore directory:', path)
- pattern[#pattern+1] = path
- end
- -- config.files.exclude
- for path, ignore in pairs(config.other.exclude) do
- if ignore then
- log.info('Ignore by exclude:', path)
- pattern[#pattern+1] = path
- end
- end
- -- config.workspace.ignoreSubmodules
- if config.config.workspace.ignoreSubmodules then
- local buf = pub.awaitTask('loadFile', furi.encode(m.path .. '/.gitmodules'))
- if buf then
- for path in buf:gmatch('path = ([^\r\n]+)') do
- log.info('Ignore by .gitmodules:', path)
- pattern[#pattern+1] = path
- end
- end
- end
- -- config.workspace.useGitIgnore
- if config.config.workspace.useGitIgnore then
- local buf = pub.awaitTask('loadFile', furi.encode(m.path .. '/.gitignore'))
- if buf then
- for line in buf:gmatch '[^\r\n]+' do
- log.info('Ignore by .gitignore:', line)
- pattern[#pattern+1] = line
- end
- end
- end
- -- config.workspace.library
- for path in pairs(config.config.workspace.library) do
- log.info('Ignore by library:', path)
- pattern[#pattern+1] = path
- end
-
- m.ignoreMatcher = glob.gitignore(pattern)
-
- if platform.OS == "Windows" then
- m.ignoreMatcher:setOption 'ignoreCase'
- end
-
- m.ignoreVersion = config.version
- return m.ignoreMatcher
-end
-
---- 文件是否被忽略
-function m.isIgnored(uri)
- local path = furi.decode(uri)
- local ignore = m.getIgnoreMatcher()
- return ignore(path)
-end
-
---- 预读工作区内所有文件
-function m.awaitPreload()
- if not m.uri then
- return
- end
- local max = 0
- local read = 0
- log.info('Preload start.')
- local ignore = m.getIgnoreMatcher()
-
- ignore:setInterface('type', function (path)
- if fs.is_directory(fs.path(m.path .. '/' .. path)) then
- return 'directory'
- else
- return 'file'
- end
- end)
-
- ignore:setInterface('list', function (path)
- local paths = {}
- for fullpath in fs.path(m.path .. '/' .. path):list_directory() do
- paths[#paths+1] = fullpath:string()
- end
- return paths
- end)
-
- ignore:scan(function (path)
- local uri = furi.encode(m.path .. '/' .. path)
- if not files.isLua(uri) then
- return
- end
- max = max + 1
- pub.task('loadFile', uri, function (text)
- read = read + 1
- --log.info(('Preload file at: %s , size = %.3f KB'):format(uri, #text / 1000.0))
- files.setText(uri, text)
- end)
- end)
-
- log.info(('Found %d files.'):format(max))
- while true do
- log.info(('Loaded %d/%d files'):format(read, max))
- if read >= max then
- break
- end
- await.sleep(0.1)
- end
-
- log.info('Preload finish.')
- diagnostic.start()
-end
-
---- 查找符合指定file path的所有uri
----@param path string
----@param whole boolean
-function m.findUrisByFilePath(path, whole)
- local results = {}
- for uri in files.eachFile() do
- local pathLen = #path
- local uriLen = #uri
- if whole then
- local seg = uri:sub(uriLen - pathLen, uriLen - pathLen)
- if seg == '/' or seg == '\\' or seg == '' then
- local see = uri:sub(uriLen - pathLen + 1, uriLen)
- if files.eq(see, path) then
- results[#results+1] = uri
- end
- end
- else
- for i = uriLen, uriLen - pathLen + 1, -1 do
- local see = uri:sub(i - pathLen + 1, i)
- if files.eq(see, path) then
- results[#results+1] = uri
- end
- end
- end
- end
- return results
-end
-
---- 查找符合指定require path的所有uri
----@param path string
----@param whole boolean
-function m.findUrisByRequirePath(path, whole)
- local results = {}
- local mark = {}
- local input = path:gsub('%.', '/')
- for _, luapath in ipairs(config.config.runtime.path) do
- local part = luapath:gsub('%?', input)
- local uris = m.findUrisByFilePath(part, whole)
- for _, uri in ipairs(uris) do
- if not mark[uri] then
- mark[uri] = true
- results[#results+1] = uri
- end
- end
- end
- return results
-end
-
-function m.getRelativePath(uri)
- local path = furi.decode(uri)
- return fs.relative(fs.path(path), fs.path(m.path)):string()
-end
-
-return m
diff --git a/server-beta/test.lua b/server-beta/test.lua
deleted file mode 100644
index dc1023d6..00000000
--- a/server-beta/test.lua
+++ /dev/null
@@ -1,59 +0,0 @@
-local currentPath = debug.getinfo(1, 'S').source:sub(2)
-local rootPath = currentPath:gsub('[/\\]*[^/\\]-$', '')
-dofile(rootPath .. '/platform.lua')
-package.path = package.path
- .. ';' .. rootPath .. '\\test\\?.lua'
- .. ';' .. rootPath .. '\\test\\?\\init.lua'
-local fs = require 'bee.filesystem'
-ROOT = fs.path(rootPath)
-LANG = 'en-US'
-
-collectgarbage 'generational'
-
-log = require 'log'
-log.init(ROOT, ROOT / 'log' / 'test.log')
-log.debug('测试开始')
-ac = {}
-
-require 'utility'
---dofile((ROOT / 'build_package.lua'):string())
-
-local function loadAllLibs()
- assert(require 'bee.filesystem')
- assert(require 'bee.subprocess')
- assert(require 'bee.thread')
- assert(require 'bee.socket')
- assert(require 'lni')
- assert(require 'lpeglabel')
-end
-
-local function main()
- debug.setcstacklimit(1000)
- local function test(name)
- local clock = os.clock()
- print(('测试[%s]...'):format(name))
- require(name)
- print(('测试[%s]用时[%.3f]'):format(name, os.clock() - clock))
- end
-
- test 'references'
- test 'definition'
- test 'diagnostics'
- test 'highlight'
- test 'rename'
- test 'type_inference'
- test 'hover'
- --test 'completion'
- --test 'signature'
- --test 'document_symbol'
- test 'crossfile'
- test 'full'
- test 'other'
-
- print('测试完成')
-end
-
-loadAllLibs()
-main()
-
-log.debug('测试完成')
diff --git a/server-beta/test/completion/init.lua b/server-beta/test/completion/init.lua
deleted file mode 100644
index 12600e58..00000000
--- a/server-beta/test/completion/init.lua
+++ /dev/null
@@ -1,1494 +0,0 @@
-local core = require 'core'
-local parser = require 'parser'
-local buildVM = require 'vm'
-
-local CompletionItemKind = {
- Text = 1,
- Method = 2,
- Function = 3,
- Constructor = 4,
- Field = 5,
- Variable = 6,
- Class = 7,
- Interface = 8,
- Module = 9,
- Property = 10,
- Unit = 11,
- Value = 12,
- Enum = 13,
- Keyword = 14,
- Snippet = 15,
- Color = 16,
- File = 17,
- Reference = 18,
- Folder = 19,
- EnumMember = 20,
- Constant = 21,
- Struct = 22,
- Event = 23,
- Operator = 24,
- TypeParameter = 25,
-}
-
-local EXISTS = {'EXISTS'}
-
-local function eq(a, b)
- if a == EXISTS and b ~= nil then
- return true
- end
- local tp1, tp2 = type(a), type(b)
- if tp1 ~= tp2 then
- return false
- end
- if tp1 == 'table' then
- local mark = {}
- for k in pairs(a) do
- if not eq(a[k], b[k]) then
- return false
- end
- mark[k] = true
- end
- for k in pairs(b) do
- if not mark[k] then
- return false
- end
- end
- return true
- end
- return a == b
-end
-
-rawset(_G, 'TEST', true)
-
-function TEST(script)
- return function (expect)
- local pos = script:find('$', 1, true) - 1
- local new_script = script:gsub('%$', '')
- local ast = parser:parse(new_script, 'lua', 'Lua 5.4')
- local vm = buildVM(ast)
- assert(vm)
- local result = core.completion(vm, new_script, pos)
- if expect then
- assert(result)
- assert(eq(expect, result))
- else
- assert(result == nil)
- end
- end
-end
-
-TEST [[
-local zabcde
-za$
-]]
-{
- {
- label = 'zabcde',
- kind = CompletionItemKind.Variable,
- }
-}
-
-TEST [[
-local zabcdefg
-local zabcde
-zabcde$
-]]
-{
- {
- label = 'zabcdefg',
- kind = CompletionItemKind.Variable,
- },
- {
- label = 'zabcde',
- kind = CompletionItemKind.Variable,
- },
-}
-
-TEST [[
-local zabcdefg
-za$
-local zabcde
-]]
-{
- {
- label = 'zabcdefg',
- kind = CompletionItemKind.Variable,
- },
- {
- label = 'zabcde',
- kind = CompletionItemKind.Text,
- },
-}
-
-TEST [[
-local zabcde
-zace$
-]]
-{
- {
- label = 'zabcde',
- kind = CompletionItemKind.Variable,
- }
-}
-
-TEST [[
-ZABC
-local zabc
-zac$
-]]
-{
- {
- label = 'zabc',
- kind = CompletionItemKind.Variable,
- },
- {
- label = 'ZABC',
- kind = CompletionItemKind.Field,
- },
-}
-
-TEST [[
-ass$
-]]
-{
- {
- label = 'assert',
- kind = CompletionItemKind.Function,
- documentation = EXISTS,
- detail = '(function)',
- },
- {
- label = 'assert()',
- kind = CompletionItemKind.Snippet,
- documentation = EXISTS,
- insertText = EXISTS,
- detail = '(function)',
- },
-}
-
-TEST [[
-local zabc = 1
-z$
-]]
-{
- {
- label = 'zabc',
- kind = CompletionItemKind.Variable,
- detail = '(number) = 1',
- }
-}
-
-TEST [[
-local zabc = 1.0
-z$
-]]
-{
- {
- label = 'zabc',
- kind = CompletionItemKind.Variable,
- detail = '(number) = 1.0',
- }
-}
-
-TEST [[
-local t = {
- abc = 1,
-}
-t.a$
-]]
-{
- {
- label = 'abc',
- kind = CompletionItemKind.Enum,
- detail = '(number) = 1',
- }
-}
-
-TEST [[
-local mt = {}
-function mt:get(a, b)
- return 1
-end
-mt:g$
-]]
-{
- {
- label = 'get',
- kind = CompletionItemKind.Method,
- documentation = EXISTS,
- detail = EXISTS,
- },
- {
- label = 'get()',
- kind = CompletionItemKind.Snippet,
- documentation = EXISTS,
- insertText = EXISTS,
- detail = EXISTS,
- },
-}
-
-TEST [[
-loc$
-]]
-{
- {
- label = 'collectgarbage',
- kind = CompletionItemKind.Function,
- documentation = EXISTS,
- detail = EXISTS,
- },
- {
- label = 'collectgarbage()',
- kind = CompletionItemKind.Snippet,
- documentation = EXISTS,
- detail = EXISTS,
- insertText = EXISTS,
- },
- {
- label = 'local',
- kind = CompletionItemKind.Keyword,
- },
- {
- label = 'local function',
- kind = CompletionItemKind.Snippet,
- insertText = EXISTS,
- }
-}
-
-TEST [[
-t.a = {}
-t.b = {}
-t.$
-]]
-{
- {
- label = 'a',
- kind = CompletionItemKind.Field,
- detail = EXISTS,
- },
- {
- label = 'b',
- kind = CompletionItemKind.Field,
- detail = EXISTS,
- },
-}
-
-TEST [[
-t.a = {}
-t.b = {}
-t. $
-]]
-{
- {
- label = 'a',
- kind = CompletionItemKind.Field,
- detail = EXISTS,
- },
- {
- label = 'b',
- kind = CompletionItemKind.Field,
- detail = EXISTS,
- },
-}
-
-TEST [[
-t.a = {}
-function t:b()
-end
-t:$
-]]
-{
- {
- label = 'b',
- kind = CompletionItemKind.Method,
- documentation = EXISTS,
- detail = EXISTS,
- },
- {
- label = 'b()',
- kind = CompletionItemKind.Snippet,
- documentation = EXISTS,
- detail = EXISTS,
- insertText = EXISTS,
- },
-}
-
-TEST [[
-local t = {
- a = {},
-}
-t.$
-xxx()
-]]
-{
- {
- label = 'a',
- kind = CompletionItemKind.Field,
- detail = EXISTS,
- },
- {
- label = 'xxx',
- kind = CompletionItemKind.Function,
- documentation = EXISTS,
- detail = EXISTS,
- },
- {
- label = 'xxx()',
- kind = CompletionItemKind.Snippet,
- documentation = EXISTS,
- detail = EXISTS,
- insertText = EXISTS,
- },
-}
-
-TEST [[
-(''):$
-]]
-(EXISTS)
-
-TEST 'local s = "a:$"' (nil)
-
-TEST 'debug.$'
-(EXISTS)
-
-TEST [[
-local xxxx = {
- xxyy = 1,
- xxzz = 2,
-}
-
-local t = {
- x$
-}
-]]
-{
- {
- label = 'xxxx',
- kind = CompletionItemKind.Variable,
- detail = EXISTS,
- },
- {
- label = 'xxyy',
- kind = CompletionItemKind.Property,
- },
- {
- label = 'xxzz',
- kind = CompletionItemKind.Property,
- },
- {
- label = 'next',
- kind = CompletionItemKind.Function,
- documentation = EXISTS,
- detail = EXISTS,
- },
- {
- label = 'next()',
- kind = CompletionItemKind.Snippet,
- documentation = EXISTS,
- detail = EXISTS,
- insertText = EXISTS,
- },
- {
- label = 'xpcall',
- kind = CompletionItemKind.Function,
- documentation = EXISTS,
- detail = EXISTS,
- },
- {
- label = 'xpcall()',
- kind = CompletionItemKind.Snippet,
- documentation = EXISTS,
- detail = EXISTS,
- insertText = EXISTS,
- },
-}
-
-TEST [[
-print(ff2)
-local faa
-local f$
-print(fff)
-]]
-{
- {
- label = 'fff',
- kind = CompletionItemKind.Variable,
- },
- {
- label = 'function',
- kind = CompletionItemKind.Keyword,
- },
- {
- label = 'function name()',
- kind = CompletionItemKind.Snippet,
- insertText = EXISTS,
- },
- {
- label = 'ff2',
- kind = CompletionItemKind.Text,
- },
- {
- label = 'faa',
- kind = CompletionItemKind.Text,
- },
-}
-
-TEST [[
-local function f(ff$)
- print(fff)
-end
-]]
-{
- {
- label = 'fff',
- kind = CompletionItemKind.Variable,
- },
-}
-
-TEST [[
-collectgarbage('$')
-]]
-{
- {
- label = 'collect',
- filterText = 'collect',
- kind = CompletionItemKind.EnumMember,
- documentation = EXISTS,
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- {
- label = 'stop',
- filterText = 'stop',
- kind = CompletionItemKind.EnumMember,
- documentation = EXISTS,
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- {
- label = 'restart',
- filterText = 'restart',
- kind = CompletionItemKind.EnumMember,
- documentation = EXISTS,
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- {
- label = 'count',
- filterText = 'count',
- kind = CompletionItemKind.EnumMember,
- documentation = EXISTS,
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- {
- label = 'step',
- filterText = 'step',
- kind = CompletionItemKind.EnumMember,
- documentation = EXISTS,
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- {
- label = 'setpause',
- filterText = 'setpause',
- kind = CompletionItemKind.EnumMember,
- documentation = EXISTS,
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- {
- label = 'setstepmul',
- filterText = 'setstepmul',
- kind = CompletionItemKind.EnumMember,
- documentation = EXISTS,
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- {
- label = 'isrunning',
- filterText = 'isrunning',
- kind = CompletionItemKind.EnumMember,
- documentation = EXISTS,
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
-}
-
-TEST [[
-collectgarbage($)
-]]
-(EXISTS)
-
-TEST [[
-io.read($)
-]]
-{
- {
- label = '"n"',
- kind = CompletionItemKind.EnumMember,
- documentation = EXISTS,
- },
- {
- label = '"a"',
- kind = CompletionItemKind.EnumMember,
- documentation = EXISTS,
- },
- {
- label = '"l"',
- kind = CompletionItemKind.EnumMember,
- documentation = EXISTS,
- },
- {
- label = '"L"',
- kind = CompletionItemKind.EnumMember,
- documentation = EXISTS,
- },
-}
-
-TEST [[
-local function f(a, $)
-end
-]]
-(nil)
-
-TEST [[
-self.results.list[#$]
-]]
-{
- {
- label = 'self.results.list+1',
- kind = CompletionItemKind.Snippet,
- textEdit = {
- start = 20,
- finish = 20,
- newText = 'self.results.list+1] = ',
- },
- },
-}
-
-TEST [[
-self.results.list[#self.re$]
-]]
-{
- {
- label = 'self.results.list+1',
- kind = CompletionItemKind.Snippet,
- textEdit = {
- start = 20,
- finish = 27,
- newText = 'self.results.list+1] = ',
- },
- },
- {
- label = 'results',
- kind = CompletionItemKind.Field,
- detail = EXISTS,
- },
-}
-
-TEST [[
-fff[#ff$]
-]]
-{
- {
- label = 'fff+1',
- kind = CompletionItemKind.Snippet,
- textEdit = {
- start = 6,
- finish = 8,
- newText = 'fff+1] = ',
- },
- },
- {
- label = 'fff',
- kind = CompletionItemKind.Field,
- detail = EXISTS,
- }
-}
-
-TEST [[
-local _ = fff.kkk[#$]
-]]
-{
- {
- label = 'fff.kkk',
- kind = CompletionItemKind.Snippet,
- textEdit = {
- start = 20,
- finish = 20,
- newText = 'fff.kkk]',
- },
- },
-}
-
-TEST [[
-local t = {
- a = 1,
-}
-
-t . $
-]]
-(EXISTS)
-
-TEST [[
-local t = {
- a = 1,
-}
-
-t . $ b
-]]
-(EXISTS)
-
-TEST [[
-local t = {
- a = 1,
-}
-
-t $
-]]
-(nil)
-
-TEST [[
-local t = {
- a = 1,
-}
-
-t $.
-]]
-(nil)
-
-TEST [[
-local xxxx
-xxxx$
-]]
-{
- {
- label = 'xxxx',
- kind = CompletionItemKind.Variable,
- },
-}
-
-TEST [[
-local xxxx
-local XXXX
-xxxx$
-]]
-{
- {
- label = 'xxxx',
- kind = CompletionItemKind.Variable,
- },
- {
- label = 'XXXX',
- kind = CompletionItemKind.Variable,
- },
-}
-
-TEST [[
-local t = {
- xxxxx = 1,
-}
-xx$
-]]
-{
- {
- label = 'xxxxx',
- kind = CompletionItemKind.Text,
- },
-}
-
-TEST [[
-local index
-tbl[ind$]
-]]
-{
- {
- label = 'index',
- kind = CompletionItemKind.Variable,
- },
-}
-
-TEST [[
-return function ()
- local t = {
- a = {},
- b = {},
- }
- t.$
-end
-]]
-{
- {
- label = 'a',
- kind = CompletionItemKind.Field,
- detail = EXISTS,
- },
- {
- label = 'b',
- kind = CompletionItemKind.Field,
- detail = EXISTS,
- },
-}
-
-TEST [[
-local ast = 1
-local t = 'as$'
-local ask = 1
-]]
-(nil)
-
-TEST [[
-local add
-
-function f(a$)
- local _ = add
-end
-]]
-{
- {
- label = 'add',
- kind = CompletionItemKind.Variable,
- },
-}
-
-TEST [[
-function table.i$
-]]
-(EXISTS)
-
-TEST [[
-do
- xx.$
-end
-]]
-(nil)
-
-require 'config' .config.runtime.version = 'Lua 5.4'
---TEST [[
---local $
---]]
---{
--- {
--- label = '<toclose>',
--- kind = CompletionItemKind.Keyword,
--- },
--- {
--- label = '<const>',
--- kind = CompletionItemKind.Keyword,
--- },
---}
---
---TEST [[
---local <toc$
---]]
---{
--- {
--- label = '<toclose>',
--- kind = CompletionItemKind.Keyword,
--- }
---}
-
-TEST [[
-local mt = {}
-mt.__index = mt
-local t = setmetatable({}, mt)
-
-t.$
-]]
-{
- {
- label = '__index',
- kind = CompletionItemKind.Field,
- detail = EXISTS,
- }
-}
-
-TEST [[
-local elseaaa
-ELSE = 1
-if a then
-else$
-]]
-{
- {
- label = 'elseaaa',
- kind = CompletionItemKind.Variable,
- },
- {
- label = 'ELSE',
- kind = CompletionItemKind.Enum,
- detail = EXISTS,
- },
- {
- label = 'select',
- kind = CompletionItemKind.Function,
- documentation = EXISTS,
- detail = EXISTS,
- },
- {
- label = 'select()',
- kind = CompletionItemKind.Snippet,
- documentation = EXISTS,
- detail = EXISTS,
- insertText = EXISTS,
- },
- {
- label = 'setmetatable',
- kind = CompletionItemKind.Function,
- documentation = EXISTS,
- detail = EXISTS,
- },
- {
- label = 'setmetatable()',
- kind = CompletionItemKind.Snippet,
- documentation = EXISTS,
- detail = EXISTS,
- insertText = EXISTS,
- },
- {
- label = 'else',
- kind = CompletionItemKind.Keyword,
- },
- {
- label = 'elseif',
- kind = CompletionItemKind.Keyword,
- },
- {
- label = 'elseif .. then',
- kind = CompletionItemKind.Snippet,
- insertText = EXISTS,
- }
-}
-
-TEST [[
-local xpcal
-xpcal$
-]]
-{
- {
- label = 'xpcal',
- kind = CompletionItemKind.Variable,
- },
- {
- label = 'xpcall',
- kind = CompletionItemKind.Function,
- documentation = EXISTS,
- detail = EXISTS,
- },
- {
- label = 'xpcall()',
- kind = CompletionItemKind.Snippet,
- documentation = EXISTS,
- detail = EXISTS,
- insertText = EXISTS,
- },
-}
-
-TEST [[
-function mt:f(a, b, c)
-end
-
-mt:f$
-]]
-{
- {
- label = 'f',
- kind = CompletionItemKind.Method,
- documentation = EXISTS,
- detail = EXISTS,
- },
- {
- label = 'f()',
- kind = CompletionItemKind.Snippet,
- documentation = EXISTS,
- detail = EXISTS,
- insertText = 'f(${1:a: any}, ${2:b: any}, ${3:c: any})',
- },
-}
-
-TEST [[
----@$
-]]
-(EXISTS)
-
-TEST [[
----@cl$
-]]
-{
- {
- label = 'class',
- kind = CompletionItemKind.Keyword
- }
-}
-
-TEST [[
----@class ZABC
----@class ZBBC : Z$
-]]
-{
- {
- label = 'ZABC',
- kind = CompletionItemKind.Class,
- },
- {
- label = 'ZBBC',
- kind = CompletionItemKind.Class,
- },
-}
-
-TEST [[
----@class zabc
-local abcd
----@type za$
-]]
-{
- {
- label = 'zabc',
- kind = CompletionItemKind.Class,
- },
-}
-
-TEST [[
----@class abc
-local abcd
----@type $
-]]
-(EXISTS)
-
-TEST [[
----@class zabc
-local abcd
----@type zxxx|z$
-]]
-{
- {
- label = 'zabc',
- kind = CompletionItemKind.Class,
- }
-}
-
-TEST [[
----@alias zabc zabb
----@type za$
-]]
-{
- {
- label = 'zabc',
- kind = CompletionItemKind.Class,
- },
-}
-
-TEST [[
----@class Class
----@param x C$
-]]
-{
- {
- label = 'Class',
- kind = CompletionItemKind.Class,
- },
- {
- label = 'function',
- kind = CompletionItemKind.Class,
- },
-}
-
-TEST [[
----@param $
-function f(a, b, c)
-end
-]]
-{
- {
- label = 'a, b, c',
- kind = CompletionItemKind.Snippet,
- insertText = [[
-a any
----@param b any
----@param c any]]
- },
- {
- label = 'a',
- kind = CompletionItemKind.Interface,
- },
- {
- label = 'b',
- kind = CompletionItemKind.Interface,
- },
- {
- label = 'c',
- kind = CompletionItemKind.Interface,
- },
-}
-
-TEST [[
-local function f()
- ---@param $
- function f(a, b, c)
- end
-end
-]]
-{
- {
- label = 'a, b, c',
- kind = CompletionItemKind.Snippet,
- insertText = [[
-a any
----@param b any
----@param c any]]
- },
- {
- label = 'a',
- kind = CompletionItemKind.Interface,
- },
- {
- label = 'b',
- kind = CompletionItemKind.Interface,
- },
- {
- label = 'c',
- kind = CompletionItemKind.Interface,
- },
-}
-
-TEST [[
----@param $
-function mt:f(a, b, c)
-end
-]]
-{
- {
- label = 'a, b, c',
- kind = CompletionItemKind.Snippet,
- insertText = [[
-a any
----@param b any
----@param c any]]
- },
- {
- label = 'a',
- kind = CompletionItemKind.Interface,
- },
- {
- label = 'b',
- kind = CompletionItemKind.Interface,
- },
- {
- label = 'c',
- kind = CompletionItemKind.Interface,
- },
-}
-
-TEST [[
----@param xyz Class
----@param xxx Class
-function f(x$)
-]]
-{
- {
- label = 'xyz, xxx',
- kind = CompletionItemKind.Snippet,
- },
- {
- label = 'xyz',
- kind = CompletionItemKind.Interface,
- },
- {
- label = 'xxx',
- kind = CompletionItemKind.Interface,
- },
-}
-
-TEST [[
----@param xyz Class
----@param xxx Class
-function f($
-]]
-{
- {
- label = 'xyz, xxx',
- kind = CompletionItemKind.Snippet,
- },
- {
- label = 'xyz',
- kind = CompletionItemKind.Interface,
- },
- {
- label = 'xxx',
- kind = CompletionItemKind.Interface,
- },
-}
-
-TEST [[
----@param xyz Class
----@param xxx Class
-function f($)
-]]
-{
- {
- label = 'xyz, xxx',
- kind = CompletionItemKind.Snippet,
- },
- {
- label = 'xyz',
- kind = CompletionItemKind.Interface,
- },
- {
- label = 'xxx',
- kind = CompletionItemKind.Interface,
- },
-}
-
-TEST [[
-local function f()
- ---@t$
-end
-]]
-{
- {
- label = 'type',
- kind = CompletionItemKind.Keyword,
- },
- {
- label = 'return',
- kind = CompletionItemKind.Keyword,
- }
-}
-
-TEST [[
----@class Class
----@field name string
----@field id integer
-local mt = {}
-mt.$
-]]
-{
- {
- label = 'id',
- kind = CompletionItemKind.Field,
- detail = EXISTS,
- },
- {
- label = 'name',
- kind = CompletionItemKind.Field,
- detail = EXISTS,
- },
-}
-
-TEST [[
-local function f()
- if a then
- else$
-end
-]]
-{
- {
- label = 'select',
- kind = CompletionItemKind.Function,
- documentation = EXISTS,
- detail = EXISTS,
- },
- {
- label = 'select()',
- kind = CompletionItemKind.Snippet,
- documentation = EXISTS,
- detail = EXISTS,
- insertText = EXISTS,
- },
- {
- label = 'setmetatable',
- kind = CompletionItemKind.Function,
- documentation = EXISTS,
- detail = EXISTS,
- },
- {
- label = 'setmetatable()',
- kind = CompletionItemKind.Snippet,
- documentation = EXISTS,
- detail = EXISTS,
- insertText = EXISTS,
- },
- {
- label = 'else',
- kind = CompletionItemKind.Keyword,
- },
- {
- label = 'elseif',
- kind = CompletionItemKind.Keyword,
- },
- {
- label = 'elseif .. then',
- kind = CompletionItemKind.Snippet,
- insertText = EXISTS,
- },
-}
-
-TEST [[
----@param x string | "'AAA'" | "'BBB'" | "'CCC'"
-function f(y, x)
-end
-
-f(1, $)
-]]
-{
- {
- label = "'AAA'",
- kind = CompletionItemKind.EnumMember,
- },
- {
- label = "'BBB'",
- kind = CompletionItemKind.EnumMember,
- },
- {
- label = "'CCC'",
- kind = CompletionItemKind.EnumMember,
- }
-}
-
-TEST [[
----@param x string | "'AAA'" | "'BBB'" | "'CCC'"
-function f(y, x)
-end
-
-f(1,$)
-]]
-{
- {
- label = "'AAA'",
- kind = CompletionItemKind.EnumMember,
- },
- {
- label = "'BBB'",
- kind = CompletionItemKind.EnumMember,
- },
- {
- label = "'CCC'",
- kind = CompletionItemKind.EnumMember,
- }
-}
-
-TEST [[
----@param x string | "'AAA'" | "'BBB'" | "'CCC'"
-function f(x)
-end
-
-f($)
-]]
-{
- {
- label = "'AAA'",
- kind = CompletionItemKind.EnumMember,
- },
- {
- label = "'BBB'",
- kind = CompletionItemKind.EnumMember,
- },
- {
- label = "'CCC'",
- kind = CompletionItemKind.EnumMember,
- }
-}
-
-TEST [[
----@alias Option string | "'AAA'" | "'BBB'" | "'CCC'"
----@param x Option
-function f(x)
-end
-
-f($)
-]]
-{
- {
- label = "'AAA'",
- kind = CompletionItemKind.EnumMember,
- },
- {
- label = "'BBB'",
- kind = CompletionItemKind.EnumMember,
- },
- {
- label = "'CCC'",
- kind = CompletionItemKind.EnumMember,
- }
-}
-
-TEST [[
----@param x string | "'AAA'" | "'BBB'" | "'CCC'"
-function f(x)
-end
-
-f('$')
-]]
-{
- {
- label = "AAA",
- filterText = 'AAA',
- kind = CompletionItemKind.EnumMember,
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- {
- label = "BBB",
- filterText = 'BBB',
- kind = CompletionItemKind.EnumMember,
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- {
- label = "CCC",
- filterText = 'CCC',
- kind = CompletionItemKind.EnumMember,
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- }
-}
-
-TEST [[
----@param x function | 'function () end'
-function f(x)
-end
-
-f(function ()
- $
-end)
-]]
-(nil)
-
-TEST [[
-local t = {
- ['a.b.c'] = {}
-}
-
-t.$
-]]
-{
- {
- label = 'a.b.c',
- kind = CompletionItemKind.Field,
- detail = EXISTS,
- textEdit = {
- start = 37,
- finish = 36,
- newText = '["a.b.c"]',
- },
- additionalTextEdits = {
- {
- start = 36,
- finish = 36,
- newText = '',
- }
- }
- }
-}
-
-TEST [[
-_ENV['z.b.c'] = {}
-
-z$
-]]
-{
- {
- label = 'z.b.c',
- kind = CompletionItemKind.Field,
- detail = EXISTS,
- textEdit = {
- start = 22,
- finish = 21,
- newText = '_ENV["z.b.c"]',
- },
- additionalTextEdits = {
- {
- start = 21,
- finish = 21,
- newText = '',
- }
- }
- }
-}
-
-TEST [[
-io.close(1, $)
-]]
-(nil)
-
-TEST [[
---- JustTest
----@overload fun(list:table):string
----@overload fun(list:table, sep:string):string
----@overload fun(list:table, sep:string, i:number):string
----@param list table
----@param sep string
----@param i number
----@param j number
----@return string
-local function zzzzz(list, sep, i, j) end
-
-zzz$
-]]
-{
- {
- label = 'zzzzz',
- kind = CompletionItemKind.Function,
- detail = '(function)(4 prototypes)',
- documentation = {
- kind = 'markdown',
- value = [[
-```lua
-function zzzzz(list: table, sep: string, i: number, j: number)
- -> string
-```
-JustTest
-```lua
-
-```
-
-]]
- },
- },
- {
- label = 'zzzzz()',
- kind = CompletionItemKind.Snippet,
- detail = '(function)(4 prototypes)',
- insertText = EXISTS,
- documentation = EXISTS,
- }
-}
-
-TEST [[
---- abc
-zzz = 1
-zz$
-]]
-{
- {
- label = 'zzz',
- kind = CompletionItemKind.Enum,
- detail = '(number) = 1',
- documentation = {
- kind = 'markdown',
- value = 'abc',
- }
- }
-}
-
-TEST [[
----@param x string
----| "'选项1'" # 注释1
----| "'选项2'" # 注释2
-function f(x) end
-
-f($)
-]]
-{
- {
- label = "'选项1'",
- kind = CompletionItemKind.EnumMember,
- documentation = '注释1',
- },
- {
- label = "'选项2'",
- kind = CompletionItemKind.EnumMember,
- documentation = '注释2',
- },
-}
diff --git a/server-beta/test/crossfile/completion.lua b/server-beta/test/crossfile/completion.lua
deleted file mode 100644
index cb9f2f65..00000000
--- a/server-beta/test/crossfile/completion.lua
+++ /dev/null
@@ -1,621 +0,0 @@
-local service = require 'service'
-local workspace = require 'workspace'
-local fs = require 'bee.filesystem'
-local core = require 'core'
-local uric = require 'uri'
-
-rawset(_G, 'TEST', true)
-
-local CompletionItemKind = {
- Text = 1,
- Method = 2,
- Function = 3,
- Constructor = 4,
- Field = 5,
- Variable = 6,
- Class = 7,
- Interface = 8,
- Module = 9,
- Property = 10,
- Unit = 11,
- Value = 12,
- Enum = 13,
- Keyword = 14,
- Snippet = 15,
- Color = 16,
- File = 17,
- Reference = 18,
- Folder = 19,
- EnumMember = 20,
- Constant = 21,
- Struct = 22,
- Event = 23,
- Operator = 24,
- TypeParameter = 25,
-}
-
-local EXISTS = {}
-
-local function eq(a, b)
- if a == EXISTS and b ~= nil then
- return true
- end
- local tp1, tp2 = type(a), type(b)
- if tp1 ~= tp2 then
- return false
- end
- if tp1 == 'table' then
- local mark = {}
- for k in pairs(a) do
- if not eq(a[k], b[k]) then
- return false
- end
- mark[k] = true
- end
- for k in pairs(b) do
- if not mark[k] then
- return false
- end
- end
- return true
- end
- return a == b
-end
-
-function TEST(data)
- local lsp = service()
- local ws = workspace(lsp, 'test')
- lsp.workspace = ws
- ws.root = ROOT
-
- local mainUri
- local mainBuf
- local pos
- for _, info in ipairs(data) do
- local uri = uric.encode(fs.path(info.path))
- local script = info.content
- if info.main then
- pos = script:find('$', 1, true) - 1
- script = script:gsub('%$', '')
- mainUri = uri
- mainBuf = script
- end
- lsp:saveText(uri, 1, script)
- ws:addFile(uric.decode(uri))
-
- while lsp._needCompile[1] do
- lsp:compileVM(lsp._needCompile[1])
- end
- end
-
- local vm = lsp:loadVM(mainUri)
- assert(vm)
- local result = core.completion(vm, mainBuf, pos)
- local expect = data.completion
- if expect then
- assert(result)
- assert(eq(expect, result))
- else
- assert(result == nil)
- end
-end
-
-if require'bee.platform'.OS == 'Windows' then
-
-TEST {
- {
- path = 'abc.lua',
- content = '',
- },
- {
- path = 'abc/aaa.lua',
- content = '',
- },
- {
- path = 'xxx/abcde.lua',
- content = '',
- },
- {
- path = 'test.lua',
- content = 'require "a$"',
- main = true,
- },
- completion = {
- {
- label = 'abc',
- filterText = 'abc',
- kind = CompletionItemKind.Reference,
- documentation = 'abc.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- {
- label = 'abc.aaa',
- filterText = 'abc.aaa',
- kind = CompletionItemKind.Reference,
- documentation = 'abc/aaa.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- {
- label = 'abcde',
- filterText = 'abcde',
- kind = CompletionItemKind.Reference,
- documentation = 'xxx/abcde.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- }
-}
-
-TEST {
- {
- path = 'abc.lua',
- content = '',
- },
- {
- path = 'test.lua',
- content = 'require "A$"',
- main = true,
- },
- completion = {
- {
- label = 'abc',
- filterText = 'abc',
- kind = CompletionItemKind.Reference,
- documentation = 'abc.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- }
-}
-
-TEST {
- {
- path = 'abc.lua',
- content = '',
- },
- {
- path = 'ABCD.lua',
- content = '',
- },
- {
- path = 'test.lua',
- content = 'require "a$"',
- main = true,
- },
- completion = {
- {
- label = 'ABCD',
- filterText = 'ABCD',
- kind = CompletionItemKind.Reference,
- documentation = 'ABCD.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- {
- label = 'abc',
- filterText = 'abc',
- kind = CompletionItemKind.Reference,
- documentation = 'abc.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- }
-}
-
-else
-
-TEST {
- {
- path = 'abc.lua',
- content = '',
- },
- {
- path = 'ABCD.lua',
- content = '',
- },
- {
- path = 'test.lua',
- content = 'require "a$"',
- main = true,
- },
- completion = {
- {
- label = 'abc',
- filterText = 'abc',
- kind = CompletionItemKind.Reference,
- documentation = 'abc.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- }
-}
-
-end
-
-TEST {
- {
- path = 'abc.lua',
- content = '',
- },
- {
- path = 'abc/init.lua',
- content = '',
- },
- {
- path = 'test.lua',
- content = 'require "abc$"',
- main = true,
- },
- completion = {
- {
- label = 'abc',
- filterText = 'abc',
- kind = CompletionItemKind.Reference,
- documentation = 'abc.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- {
- label = 'abc.init',
- filterText = 'abc.init',
- kind = CompletionItemKind.Reference,
- documentation = 'abc/init.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- }
-}
-
-TEST {
- {
- path = 'abc/init.lua',
- content = '',
- },
- {
- path = 'abc/bbc.lua',
- content = '',
- },
- {
- path = 'test.lua',
- content = 'require "abc$"',
- main = true,
- },
- completion = {
- {
- label = 'abc',
- filterText = 'abc',
- kind = CompletionItemKind.Reference,
- documentation = 'abc/init.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- {
- label = 'abc.bbc',
- filterText = 'abc.bbc',
- kind = CompletionItemKind.Reference,
- documentation = 'abc/bbc.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- {
- label = 'abc.init',
- filterText = 'abc.init',
- kind = CompletionItemKind.Reference,
- documentation = 'abc/init.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- }
-}
-
-TEST {
- {
- path = 'abc.lua',
- content = '',
- },
- {
- path = 'abc/init.lua',
- content = '',
- },
- {
- path = 'test.lua',
- content = 'require "abc.$"',
- main = true,
- },
- completion = {
- {
- label = 'abc.init',
- filterText = 'abc.init',
- kind = CompletionItemKind.Reference,
- documentation = 'abc/init.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- }
-}
-
-TEST {
- {
- path = 'abc.lua',
- content = '',
- },
- {
- path = 'abc/init.lua',
- content = '',
- },
- {
- path = 'test.lua',
- content = 'require "abc.i$"',
- main = true,
- },
- completion = {
- {
- label = 'abc.init',
- filterText = 'abc.init',
- kind = CompletionItemKind.Reference,
- documentation = 'abc/init.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- }
-}
-
-TEST {
- {
- path = 'core/core.lua',
- content = '',
- },
- {
- path = 'core/xxx.lua',
- content = '',
- },
- {
- path = 'test.lua',
- content = 'require "core.co$"',
- main = true,
- },
- completion = {
- {
- label = 'core.core',
- filterText = 'core.core',
- kind = CompletionItemKind.Reference,
- documentation = 'core/core.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- }
-}
-
-TEST {
- {
- path = 'x000.lua',
- content = '',
- },
- {
- path = 'abc/x111.lua',
- content = '',
- },
- {
- path = 'abc/test.lua',
- content = 'require "x$"',
- main = true,
- },
- completion = {
- {
- label = 'x000',
- filterText = 'x000',
- kind = CompletionItemKind.Reference,
- documentation = 'x000.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- {
- label = 'x111',
- filterText = 'x111',
- kind = CompletionItemKind.Reference,
- documentation = 'abc/x111.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- }
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- return {
- a = 1,
- b = 2,
- c = 3,
- }
- ]]
- },
- {
- path = 'b.lua',
- content = [[
- local t = require 'a'
- t.$
- ]],
- main = true,
- },
- completion = {
- {
- label = 'a',
- kind = CompletionItemKind.Enum,
- detail = '(number) = 1',
- },
- {
- label = 'b',
- kind = CompletionItemKind.Enum,
- detail = '(number) = 2',
- },
- {
- label = 'c',
- kind = CompletionItemKind.Enum,
- detail = '(number) = 3',
- },
- }
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- zabc = 1
- ]]
- },
- {
- path = 'a.lua',
- content = [[
- zabcd = print
- ]]
- },
- {
- path = 'a.lua',
- content = [[
- zabcdef = 1
- ]]
- },
- {
- path = 'b.lua',
- content = [[
- zab$
- ]],
- main = true,
- },
- completion = {
- {
- label = 'zabcdef',
- kind = CompletionItemKind.Enum,
- detail = '(number) = 1',
- },
- }
-}
-
-TEST {
- {
- path = 'init.lua',
- content = [[
- setmetatable(_G, {__index = {}})
- ]]
- },
- {
- path = 'a.lua',
- content = [[
- print(zabc)
- ]]
- },
- {
- path = 'a.lua',
- content = [[
- zabcdef = 1
- ]]
- },
- {
- path = 'b.lua',
- content = [[
- zab$
- ]],
- main = true,
- },
- completion = {
- {
- label = 'zabcdef',
- kind = CompletionItemKind.Enum,
- detail = '(number) = 1',
- },
- }
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- local japi = require 'jass.japi'
- japi.xxxaaaaxxxx
- ]]
- },
- {
- path = 'a.lua',
- content = [[
- local japi = require 'jass.japi'
- japi.xxxaaaax$
- ]],
- main = true,
- },
-}
-
-TEST {
- {
- path = 'xxx.lua',
- content = ''
- },
- {
- path = 'xxxx.lua',
- content = [[
- require 'xx$'
- ]],
- main = true,
- },
- completion = {
- {
- label = 'xxx',
- filterText = 'xxx',
- kind = CompletionItemKind.Reference,
- documentation = 'xxx.lua',
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- }
-}
-
-TEST {
- {
- path = [[xx'xx.lua]],
- content = ''
- },
- {
- path = 'main.lua',
- content = [[
- require 'xx$'
- ]],
- main = true,
- },
- completion = {
- {
- label = [[xx'xx]],
- filterText = [[xx'xx]],
- kind = CompletionItemKind.Reference,
- documentation = [[xx'xx.lua]],
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- }
-}
-
-TEST {
- {
- path = [[xx]=]xx.lua]],
- content = ''
- },
- {
- path = 'main.lua',
- content = [[
- require [=[xx$]=]'
- ]],
- main = true,
- },
- completion = {
- {
- label = [[xx]=]xx]],
- filterText = [[xx]=]xx]],
- kind = CompletionItemKind.Reference,
- documentation = [[xx]=]xx.lua]],
- textEdit = EXISTS,
- additionalTextEdits = EXISTS,
- },
- }
-}
diff --git a/server-beta/test/crossfile/definition.lua b/server-beta/test/crossfile/definition.lua
deleted file mode 100644
index 7cf12c74..00000000
--- a/server-beta/test/crossfile/definition.lua
+++ /dev/null
@@ -1,448 +0,0 @@
-local files = require 'files'
-local furi = require 'file-uri'
-local core = require 'core.definition'
-
-rawset(_G, 'TEST', true)
-
-local function catch_target(script, sep)
- local list = {}
- local cur = 1
- local cut = 0
- while true do
- local start, finish = script:find(('<%%%s.-%%%s>'):format(sep, sep), cur)
- if not start then
- break
- end
- list[#list+1] = { start - cut, finish - 4 - cut }
- cur = finish + 1
- cut = cut + 4
- end
- local new_script = script:gsub(('<%%%s(.-)%%%s>'):format(sep, sep), '%1')
- return new_script, list
-end
-
-local function founded(targets, results)
- if #targets ~= #results then
- return false
- end
- for _, target in ipairs(targets) do
- for _, result in ipairs(results) do
- if target[1] == result[1]
- and target[2] == result[2]
- and target[3] == result[3]
- then
- goto NEXT
- end
- end
- do return false end
- ::NEXT::
- end
- return true
-end
-
-function TEST(datas)
- files.removeAll()
-
- local targetList = {}
- local sourceList
- local sourceUri
- for i, data in ipairs(datas) do
- local uri = furi.encode(data.path)
- local new, list = catch_target(data.content, '!')
- if new ~= data.content or data.target then
- if data.target then
- targetList[#targetList+1] = {
- data.target[1],
- data.target[2],
- uri,
- }
- else
- for _, position in ipairs(list) do
- targetList[#targetList+1] = {
- position[1],
- position[2],
- uri,
- }
- end
- end
- data.content = new
- end
- new, list = catch_target(data.content, '?')
- if new ~= data.content then
- sourceList = list
- sourceUri = uri
- data.content = new
- end
- files.setText(uri, data.content)
- end
-
- local sourcePos = (sourceList[1][1] + sourceList[1][2]) // 2
- local positions = core(sourceUri, sourcePos)
- if positions then
- local result = {}
- for i, position in ipairs(positions) do
- result[i] = {
- position.target.start,
- position.target.finish,
- position.uri,
- }
- end
- assert(founded(targetList, result))
- else
- assert(#targetList == 0)
- end
-end
-
-TEST {
- {
- path = 'a.lua',
- content = '',
- target = {0, 0},
- },
- {
- path = 'b.lua',
- content = 'require <?"a"?>',
- },
-}
-
-TEST {
- {
- path = 'aaa/bbb.lua',
- content = '',
- target = {0, 0},
- },
- {
- path = 'b.lua',
- content = 'require "aaa.<?bbb?>"',
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = 'local <!t!> = 1; return <!t!>',
- },
- {
- path = 'b.lua',
- content = 'local <?t?> = require "a"',
- target = {7, 7},
- },
-}
-
-if require 'bee.platform'.OS == 'Windows' then
-TEST {
- {
- path = 'a.lua',
- content = '',
- target = {0, 0},
- },
- {
- path = 'b.lua',
- content = 'require <?"A"?>',
- },
-}
-end
-
-TEST {
- {
- path = 'a.lua',
- content = 'local <!t!> = 1; return <!t!>',
- },
- {
- path = 'b.lua',
- content = 'local <?t?> = require "a"',
- target = {7, 7},
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- local t = {
- <!x!> = 1,
- }
- return t
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- local t = require "a"
- t.<?x?>()
- ]],
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- return {
- <!x!> = 1,
- }
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- local t = require "a"
- t.<?x?>()
- ]],
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- return <!function ()
- end!>
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- local <!f!> = require "a"
- <?f?>()
- ]],
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- return <!a():b():c()!>
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- local <?t?> = require 'a'
- ]],
- target = {19, 19},
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- <!global!> = 1
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- print(<?global?>)
- ]],
- }
-}
-
-TEST {
- {
- path = 'b.lua',
- content = [[
- print(<?global?>)
- ]],
- },
- {
- path = 'a.lua',
- content = [[
- <!global!> = 1
- ]],
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- x = {}
- x.<!global!> = 1
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- print(x.<?global?>)
- ]],
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- x.<!global!> = 1
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- print(x.<?global?>)
- ]],
- },
- {
- path = 'c.lua',
- content = [[
- x = {}
- ]]
- }
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- return function (<!arg!>)
- print(<?arg?>)
- end
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- local f = require 'a'
- local v = 1
- f(v)
- ]],
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- return <!{
- a = 1,
- }!>
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- local <!t!> = require 'a'
- <?t?>
- ]],
- }
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- return <!function () end!>
- ]]
- },
- {
- path = 'b.lua',
- content = [[
- local f = require 'a'
- ]]
- },
- {
- path = 'c.lua',
- content = [[
- local <!f!> = require 'a'
- <?f?>
- ]]
- }
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- local function <!f!>()
- end
- return <!f!>
- ]]
- },
- {
- path = 'b.lua',
- content = [[
- local f = require 'a'
- ]]
- },
- {
- path = 'c.lua',
- content = [[
- local <!f!> = require 'a'
- <?f?>
- ]]
- }
-}
-
-TEST {
- {
- path = 'a/xxx.lua',
- content = [[
- return <!function () end!>
- ]]
- },
- {
- path = 'b/xxx.lua',
- content = [[
- local <!f!> = require 'xxx'
- <?f?>
- return function () end
- ]]
- }
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- local x
- return {
- <!x!> = x,
- }
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- local t = require 'a'
- print(t.<?x?>)
- ]],
- },
-}
-
---TEST {
--- {
--- path = 'a.lua',
--- content = [[
--- ---@class Class
--- local <!obj!>
--- ]]
--- },
--- {
--- path = 'b.lua',
--- content = [[
--- ---@type Class
--- local <!obj!>
--- <?obj?>
--- ]]
--- },
---}
-
---TEST {
--- {
--- path = 'a.lua',
--- content = [[
--- ---@type Class
--- local <!obj!>
--- <?obj?>
--- ]]
--- },
--- {
--- path = 'b.lua',
--- content = [[
--- ---@class Class
--- local <!obj!>
--- ]]
--- },
---}
diff --git a/server-beta/test/crossfile/hover.lua b/server-beta/test/crossfile/hover.lua
deleted file mode 100644
index 1d4328e1..00000000
--- a/server-beta/test/crossfile/hover.lua
+++ /dev/null
@@ -1,347 +0,0 @@
-local service = require 'service'
-local workspace = require 'workspace'
-local fs = require 'bee.filesystem'
-local core = require 'core'
-local uric = require 'uri'
-
-rawset(_G, 'TEST', true)
-
-local EXISTS = {}
-
-local function eq(a, b)
- if a == EXISTS and b ~= nil then
- return true
- end
- if b == EXISTS and a ~= nil then
- return true
- end
- local tp1, tp2 = type(a), type(b)
- if tp1 ~= tp2 then
- return false
- end
- if tp1 == 'table' then
- local mark = {}
- for k in pairs(a) do
- if not eq(a[k], b[k]) then
- return false
- end
- mark[k] = true
- end
- for k in pairs(b) do
- if not mark[k] then
- return false
- end
- end
- return true
- end
- return a == b
-end
-
-local function catch_target(script, sep)
- local list = {}
- local cur = 1
- local cut = 0
- while true do
- local start, finish = script:find(('<%%%s.-%%%s>'):format(sep, sep), cur)
- if not start then
- break
- end
- list[#list+1] = { start - cut, finish - 4 - cut }
- cur = finish + 1
- cut = cut + 4
- end
- local new_script = script:gsub(('<%%%s(.-)%%%s>'):format(sep, sep), '%1')
- return new_script, list
-end
-
-function TEST(data)
- local lsp = service()
- local ws = workspace(lsp, 'test')
- lsp.workspace = ws
- ws.root = ROOT
-
- local targetScript = data[1].content
- local targetUri = uric.encode(fs.path(data[1].path))
-
- local sourceScript, sourceList = catch_target(data[2].content, '?')
- local sourceUri = uric.encode(fs.path(data[2].path))
-
- lsp:saveText(targetUri, 1, targetScript)
- ws:addFile(uric.decode(targetUri))
- lsp:compileVM(targetUri)
- lsp:saveText(sourceUri, 1, sourceScript)
- ws:addFile(uric.decode(sourceUri))
- lsp:compileVM(sourceUri)
-
- local sourceVM = lsp:loadVM(sourceUri)
- assert(sourceVM)
- local sourcePos = (sourceList[1][1] + sourceList[1][2]) // 2
- local source = core.findSource(sourceVM, sourcePos)
- local hover = core.hover(source, lsp)
- assert(hover)
- if data.hover.description then
- local uriROOT = uric.encode(ROOT):gsub('%%', '%%%%')
- data.hover.description = data.hover.description:gsub('%$ROOT%$', uriROOT)
- end
- if hover.label then
- hover.label = hover.label:gsub('\r\n', '\n')
- end
- assert(eq(hover, data.hover))
-end
-
-TEST {
- {
- path = 'a.lua',
- content = '',
- },
- {
- path = 'b.lua',
- content = 'require <?"a"?>',
- },
- hover = {
- description = [[[a.lua]($ROOT$/a.lua)]],
- }
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- local function f(a, b)
- end
- return f
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- local x = require 'a'
- <?x?>()
- ]]
- },
- hover = {
- label = 'function f(a: any, b: any)',
- name = 'f',
- args = EXISTS,
- }
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- return function (a, b)
- end
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- local f = require 'a'
- <?f?>()
- ]]
- },
- hover = {
- label = 'function (a: any, b: any)',
- name = '',
- args = EXISTS,
- }
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- local mt = {}
- mt.__index = mt
-
- function mt:add(a, b)
- end
-
- return function ()
- return setmetatable({}, mt)
- end
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- local m = require 'a'
- local obj = m()
- obj:<?add?>()
- ]]
- },
- hover = {
- label = 'function mt:add(a: any, b: any)',
- name = 'mt:add',
- args = EXISTS,
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- t = {
- [{}] = 1,
- }
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- <?t?>[{}] = 2
- ]]
- },
- hover = {
- label = [[
-global t: {
- [*table]: number = 1,
- [*table]: number = 2,
-}]],
- name = 't',
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- t = {
- [{}] = 1,
- }
- ]],
- },
- {
- path = 'a.lua',
- content = [[
- <?t?>[{}] = 2
- ]]
- },
- hover = {
- label = [[
-global t: {
- [*table]: number = 2,
-}]],
- name = 't',
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = '',
- },
- {
- path = 'b.lua',
- content = [[
- --- abc
- ---@param x number
- function <?f?>(x) end
- ]],
- },
- hover = {
- label = [[function f(x: number)]],
- name = 'f',
- description = 'abc',
- args = EXISTS,
- }
-}
-
-TEST {
- {
- path = 'a.lua',
- content = '',
- },
- {
- path = 'b.lua',
- content = [[
- --- abc
- <?x?> = 1
- ]],
- },
- hover = {
- label = [[global x: number = 1]],
- name = 'x',
- description = 'abc',
- }
-}
-
-TEST {
- {
- path = 'a.lua',
- content = '',
- },
- {
- path = 'b.lua',
- content = [[
- ---@param x string
- ---| "'选项1'" # 注释1
- ---| > "'选项2'" # 注释2
- function <?f?>(x) end
- ]]
- },
- hover = {
- label = 'function f(x: string)',
- name = 'f',
- args = EXISTS,
- rawEnum = EXISTS,
- enum = [[
-
-x: string
- | '选项1' -- 注释1
- |>'选项2' -- 注释2]]
- }
-}
-
-TEST {
- {
- path = 'a.lua',
- content = '',
- },
- {
- path = 'b.lua',
- content = [[
- ---@alias option
- ---| "'选项1'" # 注释1
- ---| > "'选项2'" # 注释2
- ---@param x option
- function <?f?>(x) end
- ]]
- },
- hover = {
- label = 'function f(x: option)',
- name = 'f',
- args = EXISTS,
- rawEnum = EXISTS,
- enum = [[
-
-x: option
- | '选项1' -- 注释1
- |>'选项2' -- 注释2]]
- }
-}
-
-TEST {
- {
- path = 'a.lua',
- content = '',
- },
- {
- path = 'b.lua',
- content = [[
- ---@param x string {comment = 'aaaa'}
- ---@param y string {comment = 'bbbb'}
- local function <?f?>(x, y) end
- ]]
- },
- hover = {
- label = 'function f(x: string, y: string)',
- name = 'f',
- args = EXISTS,
- description = [[
-+ `x`*(string)*: aaaa
-
-+ `y`*(string)*: bbbb]]
- }
-}
diff --git a/server-beta/test/crossfile/init.lua b/server-beta/test/crossfile/init.lua
deleted file mode 100644
index c67b3b8f..00000000
--- a/server-beta/test/crossfile/init.lua
+++ /dev/null
@@ -1,4 +0,0 @@
-require 'crossfile.references'
-require 'crossfile.definition'
---require 'crossfile.hover'
---require 'crossfile.completion'
diff --git a/server-beta/test/crossfile/references.lua b/server-beta/test/crossfile/references.lua
deleted file mode 100644
index a1747dac..00000000
--- a/server-beta/test/crossfile/references.lua
+++ /dev/null
@@ -1,249 +0,0 @@
-local files = require 'files'
-local furi = require 'file-uri'
-local core = require 'core.reference'
-
-rawset(_G, 'TEST', true)
-
-local EXISTS = {}
-
-local function eq(a, b)
- if a == EXISTS and b ~= nil then
- return true
- end
- local tp1, tp2 = type(a), type(b)
- if tp1 ~= tp2 then
- return false
- end
- if tp1 == 'table' then
- local mark = {}
- for k in pairs(a) do
- if not eq(a[k], b[k]) then
- return false
- end
- mark[k] = true
- end
- for k in pairs(b) do
- if not mark[k] then
- return false
- end
- end
- return true
- end
- return a == b
-end
-
-local function catch_target(script, sep)
- local list = {}
- local cur = 1
- local cut = 0
- while true do
- local start, finish = script:find(('<%%%s.-%%%s>'):format(sep, sep), cur)
- if not start then
- break
- end
- list[#list+1] = { start - cut, finish - 4 - cut }
- cur = finish + 1
- cut = cut + 4
- end
- local new_script = script:gsub(('<%%%s(.-)%%%s>'):format(sep, sep), '%1')
- return new_script, list
-end
-
-local function founded(targets, results)
- if #targets ~= #results then
- return false
- end
- for _, target in ipairs(targets) do
- for _, result in ipairs(results) do
- if target[1] == result[1]
- and target[2] == result[2]
- and target[3] == result[3]
- then
- goto NEXT
- end
- end
- do return false end
- ::NEXT::
- end
- return true
-end
-
-function TEST(datas)
- files.removeAll()
-
- local targetList = {}
- local sourceList
- local sourceUri
- for i, data in ipairs(datas) do
- local uri = furi.encode(data.path)
- local new, list = catch_target(data.content, '!')
- if new ~= data.content or data.target then
- if data.target then
- targetList[#targetList+1] = {
- data.target[1],
- data.target[2],
- uri,
- }
- else
- for _, position in ipairs(list) do
- targetList[#targetList+1] = {
- position[1],
- position[2],
- uri,
- }
- end
- end
- data.content = new
- end
- new, list = catch_target(data.content, '~')
- if new ~= data.content then
- sourceList = list
- sourceUri = uri
- data.content = new
- end
- new, list = catch_target(data.content, '?')
- if new ~= data.content then
- sourceList = list
- sourceUri = uri
- data.content = new
- for _, position in ipairs(list) do
- targetList[#targetList+1] = {
- position[1],
- position[2],
- uri,
- }
- end
- end
- files.setText(uri, data.content)
- end
-
- local sourcePos = (sourceList[1][1] + sourceList[1][2]) // 2
- local positions = core(sourceUri, sourcePos)
- if positions then
- local result = {}
- for i, position in ipairs(positions) do
- result[i] = {
- position.target.start,
- position.target.finish,
- position.uri,
- }
- end
- assert(founded(targetList, result))
- else
- assert(#targetList == 0)
- end
-end
-
-TEST {
- {
- path = 'lib.lua',
- content = [[
- return <!function ()
- end!>
- ]],
- },
- {
- path = 'a.lua',
- content = [[
- local <?f?> = require 'lib'
- ]],
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- local <!f!> = require 'lib'
- ]],
- },
- {
- path = 'lib.lua',
- content = [[
- return <~function~> ()
- end
- ]],
- target = {20, 46},
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- <!ROOT!> = 1
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- print(<?ROOT?>)
- ]],
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- <?ROOT?> = 1
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- print(<!ROOT!>)
- ]],
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- return <?function () end?>
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- local t = require 'a'
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- local t = require 'a'
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- local t = require 'a'
- ]],
- },
- {
- path = 'b.lua',
- content = [[
- local <!t!> = require 'a'
- ]],
- },
-}
-
-TEST {
- {
- path = 'a.lua',
- content = [[
- local f = require 'lib'
- local <?o?> = f()
- ]],
- },
- {
- path = 'lib.lua',
- content = [[
- return function ()
- return <!{}!>
- end
- ]],
- },
-}
diff --git a/server-beta/test/definition/arg.lua b/server-beta/test/definition/arg.lua
deleted file mode 100644
index 9e88b2bf..00000000
--- a/server-beta/test/definition/arg.lua
+++ /dev/null
@@ -1,19 +0,0 @@
-TEST [[
-local function xx (<!xx!>)
- <?xx?>()
-end
-]]
-
-TEST [[
-local <!mt!>
-function mt:x()
- <?self?>()
-end
-mt:x()
-]]
-
-TEST [[
-function mt:x(<!self!>)
- <?self?>()
-end
-]]
diff --git a/server-beta/test/definition/bug.lua b/server-beta/test/definition/bug.lua
deleted file mode 100644
index 823db46d..00000000
--- a/server-beta/test/definition/bug.lua
+++ /dev/null
@@ -1,102 +0,0 @@
-TEST [[
-local <!x!>
-function _(x)
-end
-function _()
- <?x?>()
-end
-]]
-
-TEST [[
-function _(<!x!>)
- do return end
- <?x?>()
-end
-]]
-
-TEST [[
-local <!a!>
-function a:b()
- a:b()
- <?self?>()
-end
-]]
-
-TEST [[
-function _(...)
- function _()
- print(<?...?>)
- end
-end
-]]
-
-TEST [[
-local <!a!>
-(<?a?> / b)()
-]]
-
-TEST [[
-local <!args!>
-io.load(root / <?args?>.source / 'API' / path)
-]]
-
-TEST [[
-obj[#<?obj?>+1] = {}
-]]
-
-TEST [[
-self = {
- results = {
- <!labels!> = {},
- }
-}
-self[self.results.<?labels?>] = lbl
-]]
-
-TEST [[
-self.results = {
- <!labels!> = {},
-}
-self[self.results.<?labels?>] = lbl
-]]
-
-TEST [[
-self.results.<!labels!> = {}
-self[self.results.<?labels?>] = lbl
-]]
-
-TEST [[
-local mt = {}
-function mt:<!x!>()
-end
-mt:x()
-mt:<?x?>()
-]]
-
-TEST [[
-local function func(<!a!>)
- x = {
- xx(),
- <?a?>,
- }
-end
-]]
-
-TEST [[
-local <!x!>
-local t = {
- ...,
- <?x?>,
-}
-]]
-
-TEST [[
-local a
-local <!b!>
-return f(), <?b?>
-]]
-
-TEST [[
-local a = os.clock()
-local <?<!b!>?> = os.clock()
-]]
diff --git a/server-beta/test/definition/call.lua b/server-beta/test/definition/call.lua
deleted file mode 100644
index 42502f40..00000000
--- a/server-beta/test/definition/call.lua
+++ /dev/null
@@ -1,8 +0,0 @@
-TEST [[
-function f()
- local <!x!>
- return <!x!>
-end
-local <!y!> = f()
-print(<?y?>)
-]]
diff --git a/server-beta/test/definition/emmy.lua b/server-beta/test/definition/emmy.lua
deleted file mode 100644
index ee8fa6a7..00000000
--- a/server-beta/test/definition/emmy.lua
+++ /dev/null
@@ -1,91 +0,0 @@
-TEST [[
----@class <!A!>
----@class B : <?A?>
-]]
-
-TEST [[
----@class <!A!>
----@type B|<?A?>
-]]
-
-TEST [[
----@class A
-local mt = {}
-function mt:<!cast!>()
-end
-
----@type A
-local obj
-obj:<?cast?>()
-]]
-
-TEST [[
----@class A
-local <!mt!> = {}
-function mt:cast()
-end
-
----@type A
-local <!obj!>
-<?obj?>:cast()
-]]
-
-TEST [[
----@type A
-local <?<!obj!>?>
-
----@class A
-local <!mt!>
-]]
-
-TEST [[
----@type A
-local obj
-obj:<?func?>()
-
----@class A
-local mt
-function mt:<!func!>()
-end
-]]
-
-TEST [[
----@type A
-local obj
-obj:<?func?>()
-
-local mt = {}
-mt.__index = mt
-function mt:<!func!>()
-end
----@class A
-local obj = setmetatable({}, mt)
-]]
-
-TEST [[
----@alias <!B A!>
----@type <?B?>
-]]
-
-TEST [[
----@class <!Class!>
----@param a <?Class?>
-]]
-
-TEST [[
----@class Class
----@field <!name string!>
----@field id integer
-local mt = {}
-mt.<?name?>
-]]
-
-TEST [[
----@class loli
-local unit
-
-function unit:<!pants!>()
-end
-
----@see loli#<?pants?>
-]]
diff --git a/server-beta/test/definition/function.lua b/server-beta/test/definition/function.lua
deleted file mode 100644
index ce20f50b..00000000
--- a/server-beta/test/definition/function.lua
+++ /dev/null
@@ -1,24 +0,0 @@
-
-TEST [[
-function <!x!> () end
-<?x?>()
-]]
-
-TEST [[
-local function <!x!> () end
-<?x?>()
-]]
-
-TEST [[
-local x
-local function <!x!> ()
- <?x?>()
-end
-]]
-
-TEST [[
-local <!x!>
-function <!x!>()
-end
-<?x?>()
-]]
diff --git a/server-beta/test/definition/init.lua b/server-beta/test/definition/init.lua
deleted file mode 100644
index 645765a2..00000000
--- a/server-beta/test/definition/init.lua
+++ /dev/null
@@ -1,67 +0,0 @@
-local core = require 'core.definition'
-local files = require 'files'
-
-rawset(_G, 'TEST', true)
-
-local function catch_target(script)
- local list = {}
- local cur = 1
- while true do
- local start, finish = script:find('<!.-!>', cur)
- if not start then
- break
- end
- list[#list+1] = { start + 2, finish - 2 }
- cur = finish + 1
- end
- return list
-end
-
-local function founded(targets, results)
- if #targets ~= #results then
- return false
- end
- for _, target in ipairs(targets) do
- for _, result in ipairs(results) do
- if target[1] == result[1] and target[2] == result[2] then
- goto NEXT
- end
- end
- do return false end
- ::NEXT::
- end
- return true
-end
-
-function TEST(script)
- files.removeAll()
- local target = catch_target(script)
- local start = script:find('<?', 1, true)
- local finish = script:find('?>', 1, true)
- local pos = (start + finish) // 2 + 1
- local new_script = script:gsub('<[!?]', ' '):gsub('[!?]>', ' ')
- files.setText('', new_script)
-
- local results = core('', pos)
- if results then
- local positions = {}
- for i, result in ipairs(results) do
- positions[i] = { result.target.start, result.target.finish }
- end
- assert(founded(target, positions))
- else
- assert(#target == 0)
- end
-end
-
-require 'definition.local'
-require 'definition.set'
-require 'definition.arg'
-require 'definition.function'
-require 'definition.table'
-require 'definition.method'
-require 'definition.label'
-require 'definition.call'
-require 'definition.bug'
-require 'definition.special'
---require 'definition.emmy'
diff --git a/server-beta/test/definition/label.lua b/server-beta/test/definition/label.lua
deleted file mode 100644
index 205915b6..00000000
--- a/server-beta/test/definition/label.lua
+++ /dev/null
@@ -1,29 +0,0 @@
-TEST [[
-::<!LABEL!>::
-goto <?LABEL?>
-]]
-
-TEST [[
-goto <?LABEL?>
-::<!LABEL!>::
-]]
-
-TEST [[
-::LABEL::
-function _()
- goto <?LABEL?>
-end
-]]
-
-TEST [[
-do
- goto <?LABEL?>
-end
-::<!LABEL!>::
-]]
-
-TEST [[
-::LABEL::
-goto <?LABEL?>
-::<!LABEL!>::
-]]
diff --git a/server-beta/test/definition/local.lua b/server-beta/test/definition/local.lua
deleted file mode 100644
index 4153bfa0..00000000
--- a/server-beta/test/definition/local.lua
+++ /dev/null
@@ -1,195 +0,0 @@
-TEST [[
-local <!x!>
-<?x?>()
-]]
-
-TEST [[
-local z, y, <!x!>
-<?x?>()
-]]
-
-TEST [[
-local <!x!> = 1
-<?x?>()
-]]
-
-TEST [[
-local z, y, <!x!> = 1
-<?x?>()
-]]
-
-TEST [[
-local x
-local <!x!>
-<?x?>()
-]]
-
-TEST [[
-local <!x!>
-do
- <?x?>()
-end
-]]
-
-TEST [[
-local <!x!>
-do
- local x
-end
-<?x?>()
-]]
-
-TEST [[
-local <!x!>
-if <?x?> then
- local x
-end
-]]
-
-TEST [[
-local <!x!>
-if x then
- local x
-elseif <?x?> then
- local x
-end
-]]
-
-TEST [[
-local <!x!>
-if x then
- local x
-elseif x then
- local x
-else
- local x
-end
-<?x?>()
-]]
-
-TEST [[
-local <!x!>
-if x then
- <?x?>()
-elseif x then
- local x
-else
- local x
-end
-]]
-
-TEST [[
-local <!x!>
-for x = 1, 10 do
-end
-<?x?>()
-]]
-
-TEST [[
-local x
-for <!x!> = 1, 10 do
- <?x?>()
-end
-]]
-
-TEST [[
-local <!x!>
-for x in x do
-end
-<?x?>()
-]]
-
-TEST [[
-local <!x!>
-for x in <?x?> do
-end
-]]
-
-TEST [[
-local x
-for <!x!> in x do
- <?x?>()
-end
-]]
-
-TEST [[
-local x
-for z, y, <!x!> in x do
- <?x?>()
-end
-]]
-
-TEST [[
-local <!x!>
-while <?x?> do
-end
-]]
-
-TEST [[
-local <!x!>
-while x do
- <?x?>()
-end
-]]
-
-TEST [[
-local <!x!>
-while x do
- local x
-end
-<?x?>()
-]]
-
-TEST [[
-local <!x!>
-repeat
- <?x?>()
-until true
-]]
-
-TEST [[
-local <!x!>
-repeat
- local x
-until true
-<?x?>()
-]]
-
-TEST [[
-local <!x!>
-repeat
-until <?x?>
-]]
-
-TEST [[
-local x
-repeat
- local <!x!>
-until <?x?>
-]]
-
-TEST [[
-local <!x!>
-function _()
- local x
-end
-<?x?>()
-]]
-
-TEST [[
-local <!x!>
-return function ()
- <?x?>()
-end
-]]
-
-TEST [[
-local <!x!>
-local x = function ()
- <?x?>()
-end
-]]
-
-TEST [[
-local <?<!x!>?>
-]]
diff --git a/server-beta/test/definition/method.lua b/server-beta/test/definition/method.lua
deleted file mode 100644
index aa7aacdc..00000000
--- a/server-beta/test/definition/method.lua
+++ /dev/null
@@ -1,31 +0,0 @@
-TEST [[
-function mt:<!a!>()
-end
-function mt:b()
- mt:<?a?>()
-end
-]]
-
-TEST [[
-function mt:<!m1!>()
-end
-function mt:m2()
- self:<?m1?>()
-end
-]]
-
-TEST [[
-function mt:m3()
- mt:<?m4?>()
-end
-function mt:<!m4!>()
-end
-]]
-
-TEST [[
-function mt:m3()
- self:<?m4?>()
-end
-function mt:<!m4!>()
-end
-]]
diff --git a/server-beta/test/definition/set.lua b/server-beta/test/definition/set.lua
deleted file mode 100644
index f36be078..00000000
--- a/server-beta/test/definition/set.lua
+++ /dev/null
@@ -1,40 +0,0 @@
-TEST [[
-<!x!> = 1
-<?x?>()
-]]
-
-TEST [[
-do
- <!global!> = 1
-end
-<?global?>()
-]]
-
-TEST [[
-<!x!> = 1
-do
- local x = 1
-end
-<?x?>()
-]]
-
-TEST [[
-x = 1
-do
- local <!x!> = 1
- do
- <!x!> = 2
- end
- <?x?>()
-end
-]]
-
-TEST [[
-<!x!> = 1
-if y then
- <!x!> = 2
-else
- <!x!> = 3
-end
-print(<?x?>)
-]]
diff --git a/server-beta/test/definition/special.lua b/server-beta/test/definition/special.lua
deleted file mode 100644
index 6bbf104c..00000000
--- a/server-beta/test/definition/special.lua
+++ /dev/null
@@ -1,124 +0,0 @@
-TEST [[
-_ENV.<!x!> = 1
-print(<?x?>)
-]]
-
-TEST [[
-_G.<!x!> = 1
-print(<?x?>)
-]]
-
-TEST [[
-<!rawset(_G, 'x', 1)!>
-print(<?x?>)
-]]
-
-TEST [[
-local mt
-mt.__index = mt
-function mt:<!method1!>()
-end
-
-local obj = setmetatable({}, mt)
-obj:<?method1?>()
-]]
-
-TEST [[
-local mt
-function mt:<!method1!>()
-end
-
-local obj = setmetatable({}, { __index = mt })
-obj:<?method1?>()
-]]
-
-TEST [[
-local mt
-function mt:<!method1!>()
-end
-
-setmetatable(api, { __index = mt })
-api:<?method1?>()
-]]
-
-TEST [[
-local mt
-local api
-function mt:<!method1!>()
-end
-
-setmetatable(api, { __index = mt })
-api:<?method1?>()
-]]
-
-TEST [[
-local mt
-function mt:x()
- self.<?init?>()
-end
-
-local obj, _ = setmetatable({}, { __index = mt })
-obj.<!init!> = 1
-obj:x()
-]]
-
-TEST [[
-local mt
-function mt:x()
- self.<?init?>()
-end
-
-local obj = setmetatable({ <!init!> = 1 }, { __index = mt })
-obj:x()
-]]
-
-TEST [[
-local mt
-function mt:x()
- self.a.<?out?>()
-end
-
-local obj = setmetatable({
- a = {
- <!out!> = 1,
- }
-}, { __index = mt })
-obj:x()
-]]
-
-TEST [[
-local sm = setmetatable
-local mt
-mt.__index = mt
-function mt:<!method1!>()
-end
-
-local obj = sm({}, mt)
-obj:<?method1?>()
-]]
-
--- TODO
---TEST [[
---local mt = {}
---function mt:<!x!>()
---end
---
---local obj = setmetatable({}, {__index = mt})
---function obj:x()
---end
---
---mt:<?x?>()
---]]
-
--- TODO 通过代码执行顺序来判断
---TEST [[
---local mt = {}
---function mt:x()
---end
---
---local obj = setmetatable({}, {__index = mt})
---function obj:<!x!>()
---end
---
---obj:<?x?>()
---]]
diff --git a/server-beta/test/definition/table.lua b/server-beta/test/definition/table.lua
deleted file mode 100644
index 34078413..00000000
--- a/server-beta/test/definition/table.lua
+++ /dev/null
@@ -1,135 +0,0 @@
-TEST [[
-local <!t!>
-a = {
- <?t?>
-}
-]]
-
-TEST [[
-local t
-t.<!x!> = 1
-t.<?x?>()
-]]
-
-TEST [[
-t.<!x!> = 1
-t.<?x?>()
-]]
-
-TEST [[
-local <!t!>
-t.x = 1
-<?t?>.x = 1
-]]
-
-TEST [[
-t.<!x!> = 1
-t.<?x?>.y = 1
-]]
-
-TEST [[
-local t
-t.<!x!> = 1
-t.<?x?>()
-]]
-
-TEST [[
-local t
-t[<!1!>] = 1
-t[<?1?>]()
-]]
-
-TEST [[
-local t
-t[<!true!>] = 1
-t[<?true?>]()
-]]
-
-TEST [[
-local t
-t[<!"method"!>] = 1
-t[<?"method"?>]()
-]]
-
-TEST [[
-local t
-t[<!"longString"!>] = 1
-t[<?[==[longString]==]?>]()
-]]
-
-TEST [[
-local t
-t.<!x!> = 1
-t[<?'x'?>]()
-]]
-
-TEST [[
-local t
-t.<!a!> = 1
-t.<?a?>.b()
-]]
-
-TEST [[
-local t
-local <!x!>
-t[<?x?>]()
-]]
-
-TEST[[
-local <!t!>
-local _ = {
- _ = <?t?>
-}
-]]
-
-TEST[[
-local <!t!>
-t {
- _ = <?t?>.x
-}
-]]
-
-TEST[[
-local t = {
- <!insert!> = 1,
-}
-t.<?insert?>()
-]]
-
-TEST[[
-local t = {
- [<!'insert'!>] = 1,
-}
-t.<?insert?>()
-]]
-
-TEST[[
-local t;t = {
- <!insert!> = 1,
-}
-t.<?insert?>()
-]]
-
-TEST[[
-local t;t = {
- <!insert!> = 1,
-}
-t.<?insert?>()
-]]
-
---TEST[[
---local t = {
--- <!insert!> = 1,
---}
---y.<?insert?>()
---]]
-
---TEST[[
---local t = {
--- <!insert!> = 1,
---}
---local y = {
--- insert = 1,
---}
---t.<?insert?>()
---]]
diff --git a/server-beta/test/diagnostics/init.lua b/server-beta/test/diagnostics/init.lua
deleted file mode 100644
index 0a38bce9..00000000
--- a/server-beta/test/diagnostics/init.lua
+++ /dev/null
@@ -1,689 +0,0 @@
-local core = require 'core.diagnostics'
-local files = require 'files'
-local config = require 'config'
-local util = require 'utility'
-
-rawset(_G, 'TEST', true)
-
-local function catch_target(script, ...)
- local list = {}
- local function catch(buf)
- local cur = 1
- local cut = 0
- while true do
- local start, finish = buf:find('<!.-!>', cur)
- if not start then
- break
- end
- list[#list+1] = { start - cut, finish - 4 - cut }
- cur = finish + 1
- cut = cut + 4
- end
- end
- catch(script)
- if ... then
- for _, buf in ipairs {...} do
- catch(buf)
- end
- end
- local new_script = script:gsub('<!(.-)!>', '%1')
- return new_script, list
-end
-
-local function founded(targets, results)
- if #targets ~= #results then
- return false
- end
- for _, target in ipairs(targets) do
- for _, result in ipairs(results) do
- if target[1] == result[1] and target[2] == result[2] then
- goto NEXT
- end
- end
- do return false end
- ::NEXT::
- end
- return true
-end
-
-function TEST(script, ...)
- files.removeAll()
- local new_script, target = catch_target(script, ...)
- files.setText('', new_script)
- local datas = core('') or {}
- local results = {}
- for i, data in ipairs(datas) do
- results[i] = { data.start, data.finish }
- end
-
- if results[1] then
- if not founded(target, results) then
- error(('%s\n%s'):format(util.dump(target), util.dump(results)))
- end
- else
- assert(#target == 0)
- end
-end
-
-TEST [[
-local <!x!>
-]]
-
-TEST [[
-local function x()
-end
-x()
-]]
-
-TEST([[
-<!local function x()
-end!>
-]],
-[[
-local function <!x!>()
-end
-]]
-)
-
-TEST [[
-local <!x!> = <!function () end!>
-]]
-
-TEST [[
-local <!x!>
-x = <!function () end!>
-]]
-
-
-TEST [[
-print(<!x!>)
-print(<!log!>)
-print(<!X!>)
-print(<!Log!>)
-print(_VERSION)
-print(<!y!>)
-print(Z)
-Z = 1
-]]
-
-TEST [[
-::<!LABEL!>::
-]]
-
-TEST [[
-<! !>
-]]
-
-TEST [[
-X = 1<! !>
-]]
-
-TEST [[
-X = [=[
- ]=]
-]]
-
-TEST [[
-local x
-print(x)
-local <!x!>
-print(x)
-]]
-
-TEST [[
-local x
-print(x)
-local <!x!>
-print(x)
-local <!x!>
-print(x)
-]]
-
-TEST [[
-local _
-print(_)
-local _
-print(_)
-local _ENV
-<!print!>(_ENV) -- 由于重定义了_ENV,因此print变为了未定义全局变量
-]]
-
-TEST [[
-local x
-return x, function (<!x!>)
- return x
-end
-]]
-
-TEST [[
-print(1)
-_ENV = nil
-]]
-
-TEST [[
-local _ENV = { print = print }
-print(1)
-]]
-
-config.config.diagnostics.disable['undefined-env-child'] = true
-TEST [[
-_ENV = nil
-<!GLOBAL!> = 1 --> _ENV.GLOBAL = 1
-]]
-
-TEST [[
-_ENV = nil
-local _ = <!print!> --> local _ = _ENV.print
-]]
-
-TEST [[
-_ENV = {}
-GLOBAL = 1 --> _ENV.GLOBAL = 1
-]]
-
-TEST [[
-_ENV = {}
-local _ = print --> local _ = _ENV.print
-]]
-
-TEST [[
-GLOBAL = 1
-_ENV = nil
-]]
-
-config.config.diagnostics.disable['undefined-env-child'] = nil
-TEST [[
-print()
-<!('string')!>:sub(1, 1)
-]]
-
-TEST [[
-print()
-('string')
-]]
-
-TEST [[
-local x
-return x
- : f(1)
- : f(1)
-]]
-
-TEST [[
-return {
- <!print
- 'string'!>
-}
-]]
-
-TEST [[
-return {
- <!print
- {
- x = 1,
- }!>
-}
-]]
-
-TEST [[
-print()
-'string'
-]]
-
-TEST [[
-print
-{
- x = 1,
-}
-]]
-
-TEST [[
-local function x(a, b)
- return a, b
-end
-x(1, 2, <!3!>)
-]]
-
-TEST [[
-local function x(a, b, ...)
- return a, b, ...
-end
-x(1, 2, 3, 4, 5)
-]]
-
-TEST [[
-local m = {}
-function m:x(a, b)
- return a, b
-end
-m:x(1, 2, <!3!>)
-]]
-
-TEST [[
-local m = {}
-function m:x(a, b)
- return a, b
-end
-m.x(1, 2, 3, <!4!>)
-]]
-
-TEST [[
-local m = {}
-function m.x(a, b)
- return a, b
-end
-m:x(1, <!2!>, <!3!>, <!4!>)
-]]
-
-TEST [[
-local m = {}
-function m.x()
-end
-m:x()
-]]
-
-TEST [[
-InstanceName = 1
-Instance = _G[InstanceName]
-]]
-
-TEST [[
-(''):sub(1, 2)
-]]
-
-TEST [=[
-return [[
-
-]]
-]=]
-
-config.config.diagnostics.disable['unused-local'] = true
-TEST [[
-local f = <!function () end!>
-]]
-
-TEST [[
-local f;f = <!function () end!>
-]]
-
-TEST [[
-<!local function f() end!>
-]]
-
-TEST [[
-F = <!function () end!>
-]]
-
-TEST [[
-<!function F() end!>
-]]
-
-config.config.diagnostics.disable['unused-local'] = false
-config.config.diagnostics.disable['unused-function'] = true
-TEST [[
-local mt, x
-function mt:m()
- function x:m()
- end
-end
-return mt, x
-]]
-
-TEST [[
-local mt = {}
-function mt:f()
-end
-return mt
-]]
-
-TEST [[
-local <!mt!> = {}
-function mt:f()
-end
-]]
-
-TEST [[
-local <!x!> = {}
-x.a = 1
-]]
-
-TEST [[
-local <!x!> = {}
-x['a'] = 1
-]]
-
-TEST [[
-local function f(<!self!>)
-end
-f()
-]]
-
-TEST [[
-local function f(<!...!>)
-end
-f()
-]]
-
-TEST [[
-local function f(var)
- print(var)
-end
-local var
-f(var)
-]]
-
-TEST [[
-local function f(a, b)
- return a, b
-end
-f(1, 2, <!3!>, <!4!>)
-]]
-
-TEST [[
-local mt = {}
-function mt:f(a, b)
- return a, b
-end
-mt.f(1, 2, 3, <!4!>)
-]]
-
-
-TEST [[
-local mt = {}
-function mt.f(a, b)
- return a, b
-end
-mt:f(1, <!2!>, <!3!>, <!4!>)
-]]
-
-TEST [[
-local mt = {}
-function mt:f(a, b)
- return a, b
-end
-mt:f(1, 2, <!3!>, <!4!>)
-]]
-
-TEST [[
-local function f(a, b, ...)
- return a, b, ...
-end
-f(1, 2, 3, 4)
-]]
-
-TEST [[
-next({}, 1, <!2!>)
-print(1, 2, 3, 4, 5)
-]]
-
-TEST [[
-local function f(callback)
- callback(1, 2, 3)
-end
-f(function () end)
-]]
-
---TEST [[
---local realTostring = tostring
---tostring = function () end
---tostring(<!1!>)
---tostring = realTostring
---tostring(1)
---]]
-
-TEST [[
-<!aa!> = 1
-tostring = 1
-ROOT = 1
-_G.bb = 1
-]]
-
-TEST [[
-local f = load('')
-f(1, 2, 3)
-]]
-
-require 'config' .config.runtime.version = 'Lua 5.3'
-TEST [[
-<!warn!>(1)
-]]
-
-TEST [[
-X = table[<!x!>]
-]]
-
-TEST [[
-return {
- <!x!> = 1,
- y = 2,
- <!x!> = 3,
-}
-]]
-
-TEST [[
-return {
- x = 1,
- y = 2,
-}, {
- x = 1,
- y = 2,
-}
-]]
-
-TEST [[
-local m = {}
-function m.open()
-end
-
-m:open()
-]]
-
-TEST [[
-<!if true then
-end!>
-]]
-
-TEST [[
-<!if true then
-else
-end!>
-]]
-
-TEST [[
-if true then
-else
- return
-end
-]]
-
-TEST [[
-while true do
-end
-]]
-
-TEST [[
-<!for _ = 1, 10 do
-end!>
-]]
-
-TEST [[
-<!for _ in pairs(_VERSION) do
-end!>
-]]
-
-TEST [[
-local _ = 1, <!2!>
-]]
-
-TEST [[
-_ = 1, <!2!>
-]]
-
-TEST [[
-local function x()
- do
- local k
- print(k)
- x()
- end
- local k = 1
- print(k)
-end
-]]
-
-TEST [[
-local function x()
- local loc
- x()
- print(loc)
-end
-]]
-
-TEST [[
-local <!t!> = {}
-t[1] = 1
-]]
-
---TEST [[
------@class <!Class!>
------@class <!Class!>
---]]
---
---TEST [[
------@class A : <!B!>
---]]
---
---TEST [[
------@class <!A : B!>
------@class <!B : C!>
------@class <!C : D!>
------@class <!D : A!>
---]]
---
---TEST [[
------@class A : B
------@class B : C
------@class C : D
------@class D
---]]
---
---TEST [[
------@type <!A!>
---]]
---
---TEST [[
------@class A
------@type A|<!B!>|<!C!>
---]]
---
---TEST [[
------@class AAA
------@alias B AAA
---
------@type B
---]]
---
---TEST [[
------@alias B <!AAA!>
---]]
---
---TEST [[
------@class <!A!>
------@class B
------@alias <!A B!>
---]]
---
---TEST [[
------@param x <!Class!>
---]]
---
---TEST [[
------@class Class
------@param <!y!> Class
---local function f(x)
--- return x
---end
---f()
---]]
---
---TEST [[
------@class Class
------@param <!y!> Class
---function F(x)
--- return x
---end
---F()
---]]
---
---TEST [[
------@class Class
------@param <!x!> Class
------@param y Class
------@param <!x!> Class
---local function f(x, y)
--- return x, y
---end
---f()
---]]
---
---TEST [[
------@field <!x Class!>
------@class Class
---]]
---
---TEST [[
------@class Class
------@field <!x!> Class
------@field <!x!> Class
---]]
---
---TEST [[
------@class Class : any
---]]
---
---TEST [[
------@type fun(a: integer)
---local f
---f()
---]]
-
-TEST [[
-local x
-x = <!x or 0 + 1!>
-]]
-
-TEST [[
-local x, y
-x = <!x + y or 0!>
-]]
-
-TEST [[
-local x, y, z
-x = x and y or '' .. z
-]]
-
-TEST [[
-local x
-x = x or -1
-]]
-
-TEST [[
-local x
-x = x or (0 + 1)
-]]
-
-TEST [[
-local x, y
-x = (x + y) or 0
-]]
-
-TEST [[
-local t = {}
-t.a = 1
-t.a = 2
-return t
-]]
-
-TEST [[
-table.insert({}, 1, 2, <!3!>)
-]]
diff --git a/server-beta/test/document_symbol/init.lua b/server-beta/test/document_symbol/init.lua
deleted file mode 100644
index f677d857..00000000
--- a/server-beta/test/document_symbol/init.lua
+++ /dev/null
@@ -1,478 +0,0 @@
-local parser = require 'parser'
-local core = require 'core'
-local buildVM = require 'vm'
-
-local SymbolKind = {
- File = 1,
- Module = 2,
- Namespace = 3,
- Package = 4,
- Class = 5,
- Method = 6,
- Property = 7,
- Field = 8,
- Constructor = 9,
- Enum = 10,
- Interface = 11,
- Function = 12,
- Variable = 13,
- Constant = 14,
- String = 15,
- Number = 16,
- Boolean = 17,
- Array = 18,
- Object = 19,
- Key = 20,
- Null = 21,
- EnumMember = 22,
- Struct = 23,
- Event = 24,
- Operator = 25,
- TypeParameter = 26,
-}
-
-rawset(_G, 'TEST', true)
-
-local EXISTS = {}
-
-local function eq(a, b)
- if a == EXISTS and b ~= nil then
- return true
- end
- local tp1, tp2 = type(a), type(b)
- if tp1 ~= tp2 then
- return false
- end
- if tp1 == 'table' then
- local mark = {}
- for k in pairs(a) do
- if not eq(a[k], b[k]) then
- return false
- end
- mark[k] = true
- end
- for k in pairs(b) do
- if not mark[k] then
- return false
- end
- end
- return true
- end
- return a == b
-end
-
-local function checkArcoss(symbols)
- local lastFinish = 0
- for _, symbol in ipairs(symbols) do
- assert(symbol.range[1] <= symbol.selectionRange[1])
- assert(symbol.range[2] >= symbol.selectionRange[2])
- assert(symbol.range[2] > lastFinish)
- lastFinish = symbol.range[2]
- if symbol.children then
- checkArcoss(symbol.children)
- end
- end
-end
-
-function TEST(script)
- return function (expect)
- local ast = parser:parse(script, 'lua', 'Lua 5.3')
- local vm = buildVM(ast)
- assert(vm)
- local result = core.documentSymbol(vm)
- assert(eq(expect, result))
- checkArcoss(result)
- end
-end
-
-TEST [[
-local function f()
-end
-]]
-{
- [1] = {
- name = 'f',
- detail = 'function f()',
- kind = SymbolKind.Function,
- range = {1, 22},
- selectionRange = {16, 16},
- valueRange = {1, 22},
- }
-}
-
-TEST [[
-function f()
-end
-]]
-{
- [1] = {
- name = 'f',
- detail = 'function f()',
- kind = SymbolKind.Function,
- range = {1, 16},
- selectionRange = {10, 10},
- valueRange = {1, 16},
- }
-}
-
-TEST [[
-return function ()
-end
-]]
-{
- [1] = {
- name = '',
- detail = 'function ()',
- kind = SymbolKind.Function,
- range = {8, 22},
- selectionRange = {8, 8},
- valueRange = {8, 22},
- }
-}
-
-TEST [[
-f = function ()
-end
-]]
-{
- [1] = {
- name = 'f',
- detail = 'function f()',
- kind = SymbolKind.Function,
- range = {1, 1},
- selectionRange = {1, 1},
- valueRange = {5, 19},
- }
-}
-
-TEST [[
-local f = function ()
-end
-]]
-{
- [1] = {
- name = 'f',
- detail = 'function f()',
- kind = SymbolKind.Function,
- range = {7, 7},
- selectionRange = {7, 7},
- valueRange = {11, 25},
- }
-}
-
-TEST [[
-function mt:add()
-end
-]]
-{
- [1] = {
- name = 'mt:add',
- detail = 'function mt:add()',
- kind = SymbolKind.Field,
- range = {1, 21},
- selectionRange = {10, 15},
- valueRange = {1, 21},
- }
-}
-
-TEST [[
-function A()
- function A1()
- end
- function A2()
- end
-end
-function B()
-end
-]]
-{
- [1] = {
- name = 'A',
- detail = 'function A()',
- kind = SymbolKind.Function,
- range = {1, 68},
- selectionRange = {10, 10},
- valueRange = {1, 68},
- children = {
- [1] = {
- name = 'A1',
- detail = 'function A1()',
- kind = SymbolKind.Function,
- range = {18, 38},
- selectionRange = {27, 28},
- valueRange = {18, 38},
- },
- [2] = {
- name = 'A2',
- detail = 'function A2()',
- kind = SymbolKind.Function,
- range = {44, 64},
- selectionRange = {53, 54},
- valueRange = {44, 64},
- },
- },
- },
- [2] = {
- name = 'B',
- detail = 'function B()',
- kind = SymbolKind.Function,
- range = {70, 85},
- selectionRange = {79, 79},
- valueRange = {70, 85},
- },
-}
-
-TEST [[
-local x = 1
-local function f()
- local x = 'x'
- local y = {}
- --= 1
-end
-local y = true
-local z
-]]
-{
- [1] = {
- name = 'x',
- detail = 'local x: number = 1',
- kind = SymbolKind.Variable,
- range = {7, 7},
- selectionRange = {7, 7},
- valueRange = {11, 11},
- },
- [2] = {
- name = 'f',
- detail = 'function f()',
- kind = SymbolKind.Function,
- range = {13, 79},
- selectionRange = {28, 28},
- valueRange = {13, 79},
- children = {
- [1] = {
- name = 'x',
- detail = 'local x: string = "x"',
- kind = SymbolKind.Variable,
- range = {42, 42},
- selectionRange = {42, 42},
- valueRange = {46, 48},
- },
- [2] = {
- name = 'y',
- detail = 'local y: {}',
- kind = SymbolKind.Variable,
- range = {60, 60},
- selectionRange = {60, 60},
- valueRange = {64, 65},
- },
- --[3] = {
- -- name = 'z',
- -- detail = 'global z: number = 1',
- -- kind = SymbolKind.Object,
- -- range = {71, 71},
- -- selectionRange = {71, 71},
- -- valueRange = {75, 75},
- --},
- },
- },
- [3] = {
- name = 'y',
- detail = 'local y: boolean = true',
- kind = SymbolKind.Variable,
- range = {87, 87},
- selectionRange = {87, 87},
- valueRange = {91, 94},
- },
- [4] = {
- name = 'z',
- detail = '',
- kind = SymbolKind.Variable,
- range = {102, 102},
- selectionRange = {102, 102},
- valueRange = {102, 102},
- },
-}
-
-TEST [[
-local t = {
- a = 1,
- b = 2,
- c = 3,
-}
-]]
-{
- [1] = {
- name = 't',
- detail = EXISTS,
- kind = SymbolKind.Variable,
- range = {7, 7},
- selectionRange = {7, 7},
- valueRange = {11, 46},
- children = {
- [1] = {
- name = 'a',
- detail = 'field a: number = 1',
- kind = SymbolKind.Class,
- range = {17, 17},
- selectionRange = {17, 17},
- valueRange = {21, 21},
- },
- [2] = {
- name = 'b',
- detail = 'field b: number = 2',
- kind = SymbolKind.Class,
- range = {28, 28},
- selectionRange = {28, 28},
- valueRange = {32, 32},
- },
- [3] = {
- name = 'c',
- detail = 'field c: number = 3',
- kind = SymbolKind.Class,
- range = {39, 39},
- selectionRange = {39, 39},
- valueRange = {43, 43},
- },
- }
- }
-}
-
-TEST [[
-local t = {
- a = {
- b = 1,
- }
-}
-]]
-{
- [1] = {
- name = 't',
- detail = EXISTS,
- kind = SymbolKind.Variable,
- range = {7, 7},
- selectionRange = {7, 7},
- valueRange = {11, 44},
- children = {
- [1] = {
- name = 'a',
- detail = EXISTS,
- kind = SymbolKind.Class,
- range = {17, 17},
- selectionRange = {17, 17},
- valueRange = {21, 42},
- children = {
- [1] = {
- name = 'b',
- detail = EXISTS,
- kind = SymbolKind.Class,
- range = {31, 31},
- selectionRange = {31, 31},
- valueRange = {35, 35},
- }
- }
- },
- }
- }
-}
-
-TEST[[
-local function g()
-end
-
-g = 1
-]]{
- [1] = {
- name = 'g',
- detail = 'function g()',
- kind = SymbolKind.Function,
- range = {1, 22},
- selectionRange = {16, 16},
- valueRange = {1, 22},
- }
-}
-
-TEST[[
-function f(...)
- local x = ...
- print(x.a)
-end
-]]{
- [1] = {
- name = 'f',
- detail = 'function f(...)',
- kind = SymbolKind.Function,
- range = {1, 52},
- selectionRange = {10, 10},
- valueRange = {1, 52},
- children = {
- [1] = {
- name = 'x',
- detail = EXISTS,
- kind = SymbolKind.Variable,
- range = {27, 27},
- selectionRange = {27, 27},
- valueRange = {31, 33},
- }
- }
- },
-}
-
-TEST [[
-local t = {
- a = 1,
- b = 2,
-}
-
-local v = t
-]]{
- [1] = {
- name = 't',
- detail = EXISTS,
- kind = SymbolKind.Variable,
- range = {7, 7},
- selectionRange = {7, 7},
- valueRange = {11, 35},
- children = EXISTS,
- },
- [2] = {
- name = 'v',
- detail = EXISTS,
- kind = SymbolKind.Variable,
- range = {44, 44},
- selectionRange = {44, 44},
- valueRange = {48, 48},
- },
-}
-
-TEST [[
-local x
-local function
-]]{
- [1] = {
- name = 'x',
- detail = EXISTS,
- kind = SymbolKind.Variable,
- range = {7, 7},
- selectionRange = {7, 7},
- valueRange = {7, 7},
- },
- [2] = {
- name = '',
- detail = EXISTS,
- kind = SymbolKind.Function,
- range = {9, 22},
- selectionRange = {22, 22},
- valueRange = {9, 22},
- }
-}
-
--- 临时
-local fs = require 'bee.filesystem'
-local function testIfExit(path)
- local buf = io.load(fs.path(path))
- if buf then
- TEST(buf)(EXISTS)
- end
-end
-testIfExit[[D:\Github\lua\testes\coroutine.lua]]
-testIfExit[[D:\Github\War3-lua-map\scripts\game\init.lua]]
diff --git a/server-beta/test/example/largeGlobal.txt b/server-beta/test/example/largeGlobal.txt
deleted file mode 100644
index 23c93d6a..00000000
--- a/server-beta/test/example/largeGlobal.txt
+++ /dev/null
@@ -1,28101 +0,0 @@
---Generated By protoc-gen-lua Do not Edit
-local protobuf = require "protobuf.protobuf"
-local config_predefine_pb = require("Protol.config_predefine_pb")
-module('Protol.config_pb')
-
-ARENA_DATA_CFG = protobuf.Descriptor();
-ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD = protobuf.FieldDescriptor();
-ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD = protobuf.FieldDescriptor();
-ARENA_DATA_CFG_DURATION_FIELD = protobuf.FieldDescriptor();
-ARENA_DATA_CFG_DAY_LIST_FIELD = protobuf.FieldDescriptor();
-ARENA_DATA_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-ARENA_DATA_CFG_SPAN_TIME_FIELD = protobuf.FieldDescriptor();
-ARENA_DATA_CFG_MIN_RATIO_FIELD = protobuf.FieldDescriptor();
-ARENA_DATA_CFG_RATIO_ADDITION_FIELD = protobuf.FieldDescriptor();
-ARENA_DATA_CFG_MAX_RATIO_FIELD = protobuf.FieldDescriptor();
-ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD = protobuf.FieldDescriptor();
-ARENA_DATA_CFG_DIFF_OPPONENT_FIELD = protobuf.FieldDescriptor();
-ARENA_DATA_CFGS = protobuf.Descriptor();
-ARENA_DATA_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ARENA_REWARD_CFG = protobuf.Descriptor();
-ARENA_REWARD_CFG_ID_FIELD = protobuf.FieldDescriptor();
-ARENA_REWARD_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-ARENA_REWARD_CFG_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
-ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD = protobuf.FieldDescriptor();
-ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
-ARENA_REWARD_CFGS = protobuf.Descriptor();
-ARENA_REWARD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-BOSS_SHOWINFO_CFG = protobuf.Descriptor();
-BOSS_SHOWINFO_CFG_ID_FIELD = protobuf.FieldDescriptor();
-BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD = protobuf.FieldDescriptor();
-BOSS_SHOWINFO_CFGS = protobuf.Descriptor();
-BOSS_SHOWINFO_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-BOSS_SHOW_UI_CFG = protobuf.Descriptor();
-BOSS_SHOW_UI_CFG_ID_FIELD = protobuf.FieldDescriptor();
-BOSS_SHOW_UI_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-BOSS_SHOW_UI_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-BOSS_SHOW_UI_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-BOSS_SHOW_UI_CFG_PAINT_FIELD = protobuf.FieldDescriptor();
-BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD = protobuf.FieldDescriptor();
-BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD = protobuf.FieldDescriptor();
-BOSS_SHOW_UI_CFGS = protobuf.Descriptor();
-BOSS_SHOW_UI_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-BOSS_SHOW_CAM_CFG = protobuf.Descriptor();
-BOSS_SHOW_CAM_CFG_ID_FIELD = protobuf.FieldDescriptor();
-BOSS_SHOW_CAM_CFG_POS_FIELD = protobuf.FieldDescriptor();
-BOSS_SHOW_CAM_CFG_DURATION_FIELD = protobuf.FieldDescriptor();
-BOSS_SHOW_CAM_CFG_ROLL_FIELD = protobuf.FieldDescriptor();
-BOSS_SHOW_CAM_CFGS = protobuf.Descriptor();
-BOSS_SHOW_CAM_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG = protobuf.Descriptor();
-BUFF_CFG_ID_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_NAME_TIPS_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_DESC_TIPS_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_ICON_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_VISUABLE_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_COUNTDOWN_TYPE_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_BUFF_TYPE_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_EXIST_TIME_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_ATK_LV_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_AM_BEATEN_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_AM_BEATEN_EFF_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_BEATEN_TIME_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_BEAT_BACK_TYPE_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_BEAT_DIS_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_AM_DEAD_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_DEAD_BACK_TYPE_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_DEAD_DIS_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_CRIT_EFFECT_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_BUFF_WORD_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_BUFF_IDLE_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_BUFF_RUN_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_BUFF_EFFECT_FIELD = protobuf.FieldDescriptor();
-BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD = protobuf.FieldDescriptor();
-BUFF_CFGS = protobuf.Descriptor();
-BUFF_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-BUFF_EFFECT_CFG = protobuf.Descriptor();
-BUFF_EFFECT_CFG_ID_FIELD = protobuf.FieldDescriptor();
-BUFF_EFFECT_CFG_FORMULA_ID_FIELD = protobuf.FieldDescriptor();
-BUFF_EFFECT_CFGS = protobuf.Descriptor();
-BUFF_EFFECT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG = protobuf.Descriptor();
-CHAR_DEFAULT_CFG_PROF_TYPE_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_GENDER_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_PROF_ICON_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_MODEL_PATH_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_PROP_STARS_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_PROF_HEAD_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_POS_DES_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_PROF_NAME_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_PROF_RES_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_SKILL_RES_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_IS_OPEN_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_MP_TYPE_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFG_IS_MINISTER_FIELD = protobuf.FieldDescriptor();
-CHAR_DEFAULT_CFGS = protobuf.Descriptor();
-CHAR_DEFAULT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-COOLDOWN_CFG = protobuf.Descriptor();
-COOLDOWN_CFG_ID_FIELD = protobuf.FieldDescriptor();
-COOLDOWN_CFG_TATOL_TIME_FIELD = protobuf.FieldDescriptor();
-COOLDOWN_CFGS = protobuf.Descriptor();
-COOLDOWN_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG = protobuf.Descriptor();
-MONSTER_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_SHOW_NAME_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_SHOW_ICON_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_WHETHER_SHOWNAME_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_MONSTER_DESC_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_CAMP_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_CAMP_RELATION_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_PROPS_ID_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_SKILLS_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_AVATAR_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_AVATAR_SCALE_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_ACT_IDLE_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_ACT_MOVE_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_ACT_IDLE_BATTLE_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_ACT_MOVE_BATTLE_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_ACT_BORN_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_BORN_TIME_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_ACT_DEAD_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_RANGE_TYPE_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_RANGE_PARA1_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_RANGE_PARA2_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_DROP_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_HEAD_PORTRAIT_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_RADIUS_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_MONSTER_TYPE_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_LOCK_SIZE_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_HALO_SWITCH_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD = protobuf.FieldDescriptor();
-MONSTER_CFGS = protobuf.Descriptor();
-MONSTER_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-BUSINESS_ACTIVITY_CFG = protobuf.Descriptor();
-BUSINESS_ACTIVITY_CFG_GUID_FIELD = protobuf.FieldDescriptor();
-BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD = protobuf.FieldDescriptor();
-BUSINESS_ACTIVITY_CFGS = protobuf.Descriptor();
-BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG = protobuf.Descriptor();
-ACTIVITY_CFG_GUID_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_DACTIVITY_NAME_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_ACTIVITY_PLAY_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_NEED_LEVEL_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_TOTAL_TIMES_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_ACTIVATION_POINT_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_ACTIVATION_MODE_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_START_WEEKS_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_SIGNUP_TIME_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_SIGNDOWN_TIME_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_BEGIN_TIME_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_END_TIME_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_DAILY_TYPE_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_WHETHER_BATTLE_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_DACTIVITY_ICON_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_PARTAKE_MODE_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_TICKETITEM_ID_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_TICKETITEM_COUNT_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_CONDUCT_SCENEID_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_FINDING_PATH_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_OPEN_FUNC_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_TIME_SHOW_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_FORM_SHOW_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_TIPS_SHOW_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_CRYSTAL_SHOW_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_ITEMS_SHOW_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_CUE_SHOW_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_CUE_TEXT_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_CORRECT_TEXT_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFG_NEGATE_TEXT_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_CFGS = protobuf.Descriptor();
-ACTIVITY_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ACTIVATION_CFG = protobuf.Descriptor();
-ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD = protobuf.FieldDescriptor();
-ACTIVATION_CFG_RESET_TIME_FIELD = protobuf.FieldDescriptor();
-ACTIVATION_CFG_DEPOSIT_LV_FIELD = protobuf.FieldDescriptor();
-ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD = protobuf.FieldDescriptor();
-ACTIVATION_CFGS = protobuf.Descriptor();
-ACTIVATION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ACTIVATION_REWARD_CFG = protobuf.Descriptor();
-ACTIVATION_REWARD_CFG_ID_FIELD = protobuf.FieldDescriptor();
-ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD = protobuf.FieldDescriptor();
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD = protobuf.FieldDescriptor();
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
-ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
-ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD = protobuf.FieldDescriptor();
-ACTIVATION_REWARD_CFGS = protobuf.Descriptor();
-ACTIVATION_REWARD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-TRADE_TOP_TABS_CFG = protobuf.Descriptor();
-TRADE_TOP_TABS_CFG_ID_FIELD = protobuf.FieldDescriptor();
-TRADE_TOP_TABS_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-TRADE_TOP_TABS_CFG_TABS_FIELD = protobuf.FieldDescriptor();
-TRADE_TOP_TABS_CFGS = protobuf.Descriptor();
-TRADE_TOP_TABS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-TRADE_SUB_TABS_CFG = protobuf.Descriptor();
-TRADE_SUB_TABS_CFG_ID_FIELD = protobuf.FieldDescriptor();
-TRADE_SUB_TABS_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-TRADE_SUB_TABS_CFG_RULES_FIELD = protobuf.FieldDescriptor();
-TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD = protobuf.FieldDescriptor();
-TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD = protobuf.FieldDescriptor();
-TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD = protobuf.FieldDescriptor();
-TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD = protobuf.FieldDescriptor();
-TRADE_SUB_TABS_CFG_SORT_RULES_FIELD = protobuf.FieldDescriptor();
-TRADE_SUB_TABS_CFGS = protobuf.Descriptor();
-TRADE_SUB_TABS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-TRADE_FILTER_RULES_CFG = protobuf.Descriptor();
-TRADE_FILTER_RULES_CFG_ID_FIELD = protobuf.FieldDescriptor();
-TRADE_FILTER_RULES_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-TRADE_FILTER_RULES_CFG_FIELDS_FIELD = protobuf.FieldDescriptor();
-TRADE_FILTER_RULES_CFG_VALUES_FIELD = protobuf.FieldDescriptor();
-TRADE_FILTER_RULES_CFGS = protobuf.Descriptor();
-TRADE_FILTER_RULES_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-TRADE_SORT_RULES_CFG = protobuf.Descriptor();
-TRADE_SORT_RULES_CFG_ID_FIELD = protobuf.FieldDescriptor();
-TRADE_SORT_RULES_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-TRADE_SORT_RULES_CFG_PROP_FIELD = protobuf.FieldDescriptor();
-TRADE_SORT_RULES_CFG_UP_FIELD = protobuf.FieldDescriptor();
-TRADE_SORT_RULES_CFGS = protobuf.Descriptor();
-TRADE_SORT_RULES_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG = protobuf.Descriptor();
-BASE_PROP_CFG_PROF_TYPE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_HP_MAX_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_MP_MAX_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_ATTACK_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_DEFENSE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_HIT_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_DODGE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_CRITICAL_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_ANTI_CRITICAL_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_CRITICAL_POWER_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_XP_MAX_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_HIT_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_DODGE_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_CRITICAL_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_DECELERATTE_POWER_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_SLEEP_POWER_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_HOLD_POWER_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_CHARM_POWER_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_SILENCE_POWER_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_SPEED_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_HP_SELF_HEAL_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_MP_SELF_HEAL_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_HP_HIT_RETURN_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_MP_HIT_RETURN_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_MAUD_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_MIND_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_CONSTITUTION_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_INTENSITY_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_DEADLY_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_BLOCK_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_HP_KILL_RETURN_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_EXP_KILL_RETURN_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_XP_SELF_HEAL_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD = protobuf.FieldDescriptor();
-BASE_PROP_CFGS = protobuf.Descriptor();
-BASE_PROP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-LEVEL_EXP_CFG = protobuf.Descriptor();
-LEVEL_EXP_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-LEVEL_EXP_CFG_NEED_EXP_FIELD = protobuf.FieldDescriptor();
-LEVEL_EXP_CFG_CAMP_FIELD = protobuf.FieldDescriptor();
-LEVEL_EXP_CFG_COMBAT_POINT_FIELD = protobuf.FieldDescriptor();
-LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD = protobuf.FieldDescriptor();
-LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD = protobuf.FieldDescriptor();
-LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD = protobuf.FieldDescriptor();
-LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD = protobuf.FieldDescriptor();
-LEVEL_EXP_CFG_EXP_MAX_FIELD = protobuf.FieldDescriptor();
-LEVEL_EXP_CFG_POPULARITY_MAX_FIELD = protobuf.FieldDescriptor();
-LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD = protobuf.FieldDescriptor();
-LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD = protobuf.FieldDescriptor();
-LEVEL_EXP_CFGS = protobuf.Descriptor();
-LEVEL_EXP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-LANGUAGE_CFG = protobuf.Descriptor();
-LANGUAGE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-LANGUAGE_CFG_TEXT_FIELD = protobuf.FieldDescriptor();
-LANGUAGE_CFGS = protobuf.Descriptor();
-LANGUAGE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG = protobuf.Descriptor();
-MISSION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_MISSION_GROUPID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_MISSION_COLOUR_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_MISSION_NAME_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_MISSION_TEXT_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_MISSION_TARGET1_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_MISSION_TARGET2_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_MISSION_TARGET3_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_MISSION_TYPE_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_MISSION_TARGETTYPE_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_MISSION_OCCUPATION_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_REPEAT_WHETHER_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_DIRECTACCE_WHETHER_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_AUTO_WHETHER_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_AUTO_COMMIT_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_MISSION_FRONTID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_MISSION_TRIGGERLV_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_MISSION_GIVEUP_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_MISSIONNODE_LIST_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_DAILY_TIMES_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_RESET_TIME_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_MISSION_DURATION_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_ACCEPT_SCENEID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_ACCEPT_NPCID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_CONDUCT_SCENEID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_CONDUCT_NPCID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_SUBMIT_SCENEID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_SUBMIT_NPCID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_SUBMITSEAT_PLOTID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_KILL_NPCID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_KILL_NPCNUM_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_KILL_NPCDROP_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_TALK_PLOTID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_COLLECT_ITEMID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_COLLECT_ITEMNUM_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_COLLECTION_NPCID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_COLLECTION_NPCNUM_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_USED_ITEMID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_INTO_BATTLEID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_TARGET_GRADE_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_FUNCTION_SCRIPT_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_ACCEPT_PLOTID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_CONDUCT_PLOTID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_SUBMIT_PLOTID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_TRIGGER_BLUR_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_ACCEPT_BLUR_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_CONDUCT_BLUR_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_REWARD_ITEMID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_FAILED_ITEMID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_DISPLAY_WHETHER_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_ACCEPT_DELIVERY_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_MISSION_CONVOYS_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_BIAOCHE_MOUNT_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_SCENE_IS_COPY_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_ALLOW_SHOW_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_ACCEPTED_SHOW_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_COMMIT_SHOW_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_ACCEPTED_INEXECUTION_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_OPEN_FUNC_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_BTN_NAME_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_EVENT_TYPE_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_KILL_PLAYER_NUM_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_KILL_PLAYER_LEVEL_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_KILL_PLAYER_MAP_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_SUPPORT_PAUSE_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_SUBMISSION_HEAD_FIELD = protobuf.FieldDescriptor();
-MISSION_CFG_ROUTE_MARK_ID_FIELD = protobuf.FieldDescriptor();
-MISSION_CFGS = protobuf.Descriptor();
-MISSION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MISSION_GROUP_CFG = protobuf.Descriptor();
-MISSION_GROUP_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD = protobuf.FieldDescriptor();
-MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD = protobuf.FieldDescriptor();
-MISSION_GROUP_CFGS = protobuf.Descriptor();
-MISSION_GROUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-NPC_SPAWN_METHOD_CFG = protobuf.Descriptor();
-NPC_SPAWN_METHOD_CFG_ID_FIELD = protobuf.FieldDescriptor();
-NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD = protobuf.FieldDescriptor();
-NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD = protobuf.FieldDescriptor();
-NPC_SPAWN_METHOD_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
-NPC_SPAWN_METHOD_CFG_POS_Y_FIELD = protobuf.FieldDescriptor();
-NPC_SPAWN_METHOD_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
-NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD = protobuf.FieldDescriptor();
-NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD = protobuf.FieldDescriptor();
-NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD = protobuf.FieldDescriptor();
-NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD = protobuf.FieldDescriptor();
-NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD = protobuf.FieldDescriptor();
-NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD = protobuf.FieldDescriptor();
-NPC_SPAWN_METHOD_CFGS = protobuf.Descriptor();
-NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-NPC_FUNCTION_CFG = protobuf.Descriptor();
-NPC_FUNCTION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-NPC_FUNCTION_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
-NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD = protobuf.FieldDescriptor();
-NPC_FUNCTION_CFG_BUTTONS_FIELD = protobuf.FieldDescriptor();
-NPC_FUNCTION_CFG_CONTENT_FIELD = protobuf.FieldDescriptor();
-NPC_FUNCTION_CFG_FUNCTIONS_FIELD = protobuf.FieldDescriptor();
-NPC_FUNCTION_CFG_FUNC_PARA_FIELD = protobuf.FieldDescriptor();
-NPC_FUNCTION_CFG_SHOW_SCALE_FIELD = protobuf.FieldDescriptor();
-NPC_FUNCTION_CFGS = protobuf.Descriptor();
-NPC_FUNCTION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PLAYSCG_CFG = protobuf.Descriptor();
-PLAYSCG_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PLAYSCG_CFG_STATE_FIELD = protobuf.FieldDescriptor();
-PLAYSCG_CFGS = protobuf.Descriptor();
-PLAYSCG_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG = protobuf.Descriptor();
-PLOT_DATA_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_NEXT_PLOT_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_CONTENT_ID_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_CAN_SKIP_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_SHOW_ID_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_IMAGE_ID_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_STAY_TIME_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_AUDIORES_ID_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_SHOW_POS_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_SHOW_SCALE_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_SHOW_BG_ID_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFG_INSERT_NAME_FIELD = protobuf.FieldDescriptor();
-PLOT_DATA_CFGS = protobuf.Descriptor();
-PLOT_DATA_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-GLOBAL_PARAM_CFG = protobuf.Descriptor();
-GLOBAL_PARAM_CFG_ID_FIELD = protobuf.FieldDescriptor();
-GLOBAL_PARAM_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-GLOBAL_PARAM_CFG_VALUE_FIELD = protobuf.FieldDescriptor();
-GLOBAL_PARAM_CFGS = protobuf.Descriptor();
-GLOBAL_PARAM_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PROP_TYPE_CFG = protobuf.Descriptor();
-PROP_TYPE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PROP_TYPE_CFG_IS_RATE_FIELD = protobuf.FieldDescriptor();
-PROP_TYPE_CFG_ATTRIBUTE_FIELD = protobuf.FieldDescriptor();
-PROP_TYPE_CFGS = protobuf.Descriptor();
-PROP_TYPE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ATTRIBUTE_SHOW_CFG = protobuf.Descriptor();
-ATTRIBUTE_SHOW_CFG_ID_FIELD = protobuf.FieldDescriptor();
-ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-ATTRIBUTE_SHOW_CFGS = protobuf.Descriptor();
-ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-RES_PATH_CFG = protobuf.Descriptor();
-RES_PATH_CFG_ID_FIELD = protobuf.FieldDescriptor();
-RES_PATH_CFG_RES_PATH_FIELD = protobuf.FieldDescriptor();
-RES_PATH_CFG_ONE_BUNDLE_FIELD = protobuf.FieldDescriptor();
-RES_PATH_CFGS = protobuf.Descriptor();
-RES_PATH_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG = protobuf.Descriptor();
-SCENE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_MAPID_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_IS_SAME_SCENE_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_SCENE_ROUTE_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_CAMERA_PATH_RES_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_SCENE_RECAST_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_SCENE_LENGTH_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_SCENE_WIDTH_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_REFRESH_TYPE_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_REFRESH_PARAMETER_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_PARTNER_CARRY_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_SHOW_CG_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_RES_PATH_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_BORN_X_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_BORN_Y_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_BORN_Z_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_BORN_ROTATION_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_GOAL_X_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_GOAL_Y_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_GOAL_Z_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_CAN_TEAM_CALL_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_IS_BATTLE_FIELD_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_CAM_OPTIONS_ID_FIELD = protobuf.FieldDescriptor();
-SCENE_CFG_CAN_USE_WORLDMAP_FIELD = protobuf.FieldDescriptor();
-SCENE_CFGS = protobuf.Descriptor();
-SCENE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG = protobuf.Descriptor();
-SKILL_CFG_ID_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_NAME_TIP_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_SKILL_LEVEL_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_PLAYER_LEVEL_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LEVELUP_COST_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_NEXT_LEVEL_ID_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_SKILL_ICON_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_SKILL_PROF_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_TIPS2_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_TIPS_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_TIPS3_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_TIPS_PARA1_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_TIPS_PARA2_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_TIPS_PARA3_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_TIPS_PARA4_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_TIPS_PARA5_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_TIPS_PARA6_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_NEXT_SKILL_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_NEXT_CHANGE_SKILL_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_AUTO_SKILL_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_NEXT_SKILL_TIME_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_SKILL_TYPE_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_ENERGY_COST_TYPE_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_ENERGY_VALUE_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MAX_ENERGY_VALUE_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_RET_ENERGY_VALUE_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_RET_HP_EFFECT_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_SHOW_PROGRESS_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_PROGRESS_WORD_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_IS_PASSIVE_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_TRIGGER_TYPE_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_ACCELERATE_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_IS_CONCURRENCY_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_IS_CHANNEL_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_CHANNEL_TIME_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_CAN_CANCEL_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_BASE_POS_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_TARGET_TYPE_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_WORK_WHEN_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_CD_GROUP_ID_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_CD_TIME_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_CD_NUM_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_CAST_DISTANCE_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOCKED_BY_SERVER_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_RANGE_TYPE_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_RANGE_PARA1_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_RANGE_PARA2_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOCK_MAX_COUNT_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_CAST_SWING_TIME_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_CAST_STIFF_TIME_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_CAST_BACK_SWING_TIME_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_HIT_EFFECT_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_HIT_EFFECT_TIME_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_TYPE1_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_POINT1_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_ADJUST_DISTANCE1_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_DISTANCE1_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_TIME1_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_TYPE2_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_POINT2_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_ADJUST_DISTANCE2_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_DISTANCE2_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_TIME2_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_TYPE3_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_POINT3_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_ADJUST_DISTANCE3_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_DISTANCE3_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_TIME3_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_TYPE4_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_POINT4_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_ADJUST_DISTANCE4_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_DISTANCE4_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_TIME4_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_TYPE5_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_POINT5_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_ADJUST_DISTANCE5_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_DISTANCE5_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_TIME5_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_TYPE6_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_POINT6_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_ADJUST_DISTANCE6_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_DISTANCE6_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_TIME6_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_TYPE7_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_POINT7_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_ADJUST_DISTANCE7_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_DISTANCE7_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_TIME7_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_TYPE8_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_POINT8_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_ADJUST_DISTANCE8_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_DISTANCE8_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_MOVE_TIME8_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TYPE_1_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TIME_1_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_ID_1_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TYPE_2_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TIME_2_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_ID_2_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TYPE_3_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TIME_3_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_ID_3_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TYPE_4_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TIME_4_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_ID_4_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TYPE_5_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TIME_5_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_ID_5_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TYPE_6_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TIME_6_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_ID_6_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TYPE_7_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TIME_7_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_ID_7_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TYPE_8_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TIME_8_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_ID_8_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TYPE_9_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TIME_9_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_ID_9_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TYPE_10_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TIME_10_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_ID_10_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TYPE_11_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TIME_11_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_ID_11_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TYPE_12_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_TIME_12_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_LOGIC_ID_12_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_AFFECT_RANGE_TYPE_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_ART_PARA1_FIELD = protobuf.FieldDescriptor();
-SKILL_CFG_ART_PARA2_FIELD = protobuf.FieldDescriptor();
-SKILL_CFGS = protobuf.Descriptor();
-SKILL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SKILL_ID_CFG = protobuf.Descriptor();
-SKILL_ID_CFG_ID_FIELD = protobuf.FieldDescriptor();
-SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD = protobuf.FieldDescriptor();
-SKILL_ID_CFGS = protobuf.Descriptor();
-SKILL_ID_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG = protobuf.Descriptor();
-SKILL_CONDITION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_RANGE_TYPE_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_RANGE_PARA1_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_RANGE_PARA2_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_TARGET_NUM_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_REPEAT_NUM_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_HIT_RATE_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_ATK_LV_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_AM_BEATEN_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_BEATEN_TIME_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_BEAT_DIS_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_AM_DEAD_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_DEAD_DIS_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_HIT_BUFF1_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_HIT_BUFF2_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_HIT_BUFF3_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD = protobuf.FieldDescriptor();
-SKILL_CONDITION_CFGS = protobuf.Descriptor();
-SKILL_CONDITION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-TEST_CFG = protobuf.Descriptor();
-TEST_CFG_ID_FIELD = protobuf.FieldDescriptor();
-TEST_CFG_TESTSTRUCT1_FIELD = protobuf.FieldDescriptor();
-TEST_CFG_TES_FIELD = protobuf.FieldDescriptor();
-TEST_CFGS = protobuf.Descriptor();
-TEST_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG = protobuf.Descriptor();
-ITEM_CFG_ID_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_ITEM_NAME_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_FORMULA_ID_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_ITEM_DESC_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_STACK_MAX_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_NEED_LEVEL_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_NEED_PROF_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_ITEM_TYPE_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_ITEM_SUB_TYPE_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_ITEM_PART_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_DISPLAY_TYPE_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_ITEM_COLOR_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_ITEM_ICON_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_ITEM_MARK_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_OWN_MAX_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_COULD_TRADE_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_TRADE_COOLDOWN_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_COULD_SELL_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_SELL_COST_TYPE_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_SELL_COST_NUM_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_COULD_USE_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_COULD_WINDOWUSE_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_WINDOWUSE_MAX_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_COULD_SHOW_USE_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_USE_DELAY_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_COULD_BULK_USE_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_CD_GROUP_ID_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_CD_TIME_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_COULD_IN_STORAGE_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_COULD_OBTAIN_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_OBTAIN_LIST_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_PROP_EFFECT1_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_PROP_EFFECT2_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_PROP_EFFECT3_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_PROP_EFFECT4_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_PROP_EFFECT5_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_PROP_EFFECT6_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_PROP_EFFECT7_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_PROP_EFFECT8_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_PRICE_GOLD_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_LUCK_VALUE_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_POP_VALUE_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_COMBAT_POINT_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_EFFECT_TIMELIMITED_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_DROP_ID_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_COST_TYPE_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_COST_COUNT_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_HOLE_NUM_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_INLAY_TYPE_FIELD = protobuf.FieldDescriptor();
-ITEM_CFG_INLAY_LEVEL_FIELD = protobuf.FieldDescriptor();
-ITEM_CFGS = protobuf.Descriptor();
-ITEM_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-FIGHTCRIME_CFG = protobuf.Descriptor();
-FIGHTCRIME_CFG_ID_FIELD = protobuf.FieldDescriptor();
-FIGHTCRIME_CFG_VALUE_FIELD = protobuf.FieldDescriptor();
-FIGHTCRIME_CFG_COLOR_FIELD = protobuf.FieldDescriptor();
-FIGHTCRIME_CFG_IMGBG_FIELD = protobuf.FieldDescriptor();
-FIGHTCRIME_CFG_IMGICON_FIELD = protobuf.FieldDescriptor();
-FIGHTCRIME_CFG_IMGFRAME_FIELD = protobuf.FieldDescriptor();
-FIGHTCRIME_CFG_IMGNUMBER_FIELD = protobuf.FieldDescriptor();
-FIGHTCRIME_CFGS = protobuf.Descriptor();
-FIGHTCRIME_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-FIGHTCIRME_REWARD_CFG = protobuf.Descriptor();
-FIGHTCIRME_REWARD_CFG_ID_FIELD = protobuf.FieldDescriptor();
-FIGHTCIRME_REWARD_CFG_ITEMS_FIELD = protobuf.FieldDescriptor();
-FIGHTCIRME_REWARD_CFGS = protobuf.Descriptor();
-FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-FIGHTCRIME_MONSTER_CFG = protobuf.Descriptor();
-FIGHTCRIME_MONSTER_CFG_ID_FIELD = protobuf.FieldDescriptor();
-FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD = protobuf.FieldDescriptor();
-FIGHTCRIME_MONSTER_CFG_ICONS_FIELD = protobuf.FieldDescriptor();
-FIGHTCRIME_MONSTER_CFG_TIME_FIELD = protobuf.FieldDescriptor();
-FIGHTCRIME_MONSTER_CFGS = protobuf.Descriptor();
-FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-EQUIP_CFG = protobuf.Descriptor();
-EQUIP_CFG_ID_FIELD = protobuf.FieldDescriptor();
-EQUIP_CFG_UPGRADE_ID_FIELD = protobuf.FieldDescriptor();
-EQUIP_CFG_UPGRADE_MATERIAL_FIELD = protobuf.FieldDescriptor();
-EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD = protobuf.FieldDescriptor();
-EQUIP_CFG_REFINE_MATERIAL_FIELD = protobuf.FieldDescriptor();
-EQUIP_CFG_REFINE_COUNT_FIELD = protobuf.FieldDescriptor();
-EQUIP_CFG_REFINE_COST_FIELD = protobuf.FieldDescriptor();
-EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD = protobuf.FieldDescriptor();
-EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD = protobuf.FieldDescriptor();
-EQUIP_CFG_ACTIVE_COST_FIELD = protobuf.FieldDescriptor();
-EQUIP_CFGS = protobuf.Descriptor();
-EQUIP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-EQUIP_SET_CFG = protobuf.Descriptor();
-EQUIP_SET_CFG_ID_FIELD = protobuf.FieldDescriptor();
-EQUIP_SET_CFG_EQUIP_IDS_FIELD = protobuf.FieldDescriptor();
-EQUIP_SET_CFG_SET_NAME_FIELD = protobuf.FieldDescriptor();
-EQUIP_SET_CFG_EQUIP_LEVEL_FIELD = protobuf.FieldDescriptor();
-EQUIP_SET_CFGS = protobuf.Descriptor();
-EQUIP_SET_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-EQUIP_SET_PROP_CFG = protobuf.Descriptor();
-EQUIP_SET_PROP_CFG_ID_FIELD = protobuf.FieldDescriptor();
-EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD = protobuf.FieldDescriptor();
-EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD = protobuf.FieldDescriptor();
-EQUIP_SET_PROP_CFGS = protobuf.Descriptor();
-EQUIP_SET_PROP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-STRENGTHEN_CFG = protobuf.Descriptor();
-STRENGTHEN_CFG_ID_FIELD = protobuf.FieldDescriptor();
-STRENGTHEN_CFG_SEG_LIMIT_FIELD = protobuf.FieldDescriptor();
-STRENGTHEN_CFG_RATE_FIELD = protobuf.FieldDescriptor();
-STRENGTHEN_CFG_REQ_LEVEL_FIELD = protobuf.FieldDescriptor();
-STRENGTHEN_CFG_MAT_ID_FIELD = protobuf.FieldDescriptor();
-STRENGTHEN_CFG_MAT_NUM_FIELD = protobuf.FieldDescriptor();
-STRENGTHEN_CFG_PROP_EFFECT1_FIELD = protobuf.FieldDescriptor();
-STRENGTHEN_CFG_PROP_EFFECT2_FIELD = protobuf.FieldDescriptor();
-STRENGTHEN_CFG_PROP_EFFECT3_FIELD = protobuf.FieldDescriptor();
-STRENGTHEN_CFG_PROP_EFFECT4_FIELD = protobuf.FieldDescriptor();
-STRENGTHEN_CFG_EXTRA_EFFECT_FIELD = protobuf.FieldDescriptor();
-STRENGTHEN_CFG_BLESSING_LIMIT_FIELD = protobuf.FieldDescriptor();
-STRENGTHEN_CFG_ASSIST_JEWEL_FIELD = protobuf.FieldDescriptor();
-STRENGTHEN_CFG_COMBAT_POINT_FIELD = protobuf.FieldDescriptor();
-STRENGTHEN_CFGS = protobuf.Descriptor();
-STRENGTHEN_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_LIST_CFG = protobuf.Descriptor();
-RUNE_MAKE_LIST_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_LIST_CFG_WEAPON_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_LIST_CFG_HEAD_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_LIST_CFG_CLOTHES_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_LIST_CFG_TROUSERS_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_LIST_CFG_SHOES_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_LIST_CFGS = protobuf.Descriptor();
-RUNE_MAKE_LIST_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_CFG = protobuf.Descriptor();
-RUNE_MAKE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_CFG_COST_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_CFG_PROP_COUNT_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_CFG_SPELL_RATE_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD = protobuf.FieldDescriptor();
-RUNE_MAKE_CFGS = protobuf.Descriptor();
-RUNE_MAKE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFG = protobuf.Descriptor();
-RUNE_PROP_GROUP_CFG_ID_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFG_PROP_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_GROUP_CFGS = protobuf.Descriptor();
-RUNE_PROP_GROUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-EQUIP_LIST_CFG = protobuf.Descriptor();
-EQUIP_LIST_CFG_ID_FIELD = protobuf.FieldDescriptor();
-EQUIP_LIST_CFG_EQUIP_LIST_FIELD = protobuf.FieldDescriptor();
-EQUIP_LIST_CFGS = protobuf.Descriptor();
-EQUIP_LIST_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-RUNE_SKILL_GROUP_CFG = protobuf.Descriptor();
-RUNE_SKILL_GROUP_CFG_ID_FIELD = protobuf.FieldDescriptor();
-RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD = protobuf.FieldDescriptor();
-RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD = protobuf.FieldDescriptor();
-RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD = protobuf.FieldDescriptor();
-RUNE_SKILL_GROUP_CFG_RATE_1_FIELD = protobuf.FieldDescriptor();
-RUNE_SKILL_GROUP_CFG_RATE_2_FIELD = protobuf.FieldDescriptor();
-RUNE_SKILL_GROUP_CFG_RATE_3_FIELD = protobuf.FieldDescriptor();
-RUNE_SKILL_GROUP_CFG_RATE_4_FIELD = protobuf.FieldDescriptor();
-RUNE_SKILL_GROUP_CFG_RATE_5_FIELD = protobuf.FieldDescriptor();
-RUNE_SKILL_GROUP_CFGS = protobuf.Descriptor();
-RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-RUNE_DECOMPOSE_CFG = protobuf.Descriptor();
-RUNE_DECOMPOSE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-RUNE_DECOMPOSE_CFG_SILVER_FIELD = protobuf.FieldDescriptor();
-RUNE_DECOMPOSE_CFG_GOLD_FIELD = protobuf.FieldDescriptor();
-RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD = protobuf.FieldDescriptor();
-RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD = protobuf.FieldDescriptor();
-RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD = protobuf.FieldDescriptor();
-RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD = protobuf.FieldDescriptor();
-RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD = protobuf.FieldDescriptor();
-RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD = protobuf.FieldDescriptor();
-RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD = protobuf.FieldDescriptor();
-RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD = protobuf.FieldDescriptor();
-RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD = protobuf.FieldDescriptor();
-RUNE_DECOMPOSE_CFGS = protobuf.Descriptor();
-RUNE_DECOMPOSE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-JEWELRY_MAKE_CFG = protobuf.Descriptor();
-JEWELRY_MAKE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-JEWELRY_MAKE_CFG_POP_COST_FIELD = protobuf.FieldDescriptor();
-JEWELRY_MAKE_CFG_MONEY_COST_FIELD = protobuf.FieldDescriptor();
-JEWELRY_MAKE_CFGS = protobuf.Descriptor();
-JEWELRY_MAKE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-WORLD_MAP_CFG = protobuf.Descriptor();
-WORLD_MAP_CFG_ID_FIELD = protobuf.FieldDescriptor();
-WORLD_MAP_CFG_SCENE_NAME_FIELD = protobuf.FieldDescriptor();
-WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD = protobuf.FieldDescriptor();
-WORLD_MAP_CFG_OPEN_LV_FIELD = protobuf.FieldDescriptor();
-WORLD_MAP_CFG_OPENLV_SHOW_FIELD = protobuf.FieldDescriptor();
-WORLD_MAP_CFG_LANGUAGE_ID_FIELD = protobuf.FieldDescriptor();
-WORLD_MAP_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
-WORLD_MAP_CFG_INITIAL_WHETHER_FIELD = protobuf.FieldDescriptor();
-WORLD_MAP_CFG_SCENE_ICON_FIELD = protobuf.FieldDescriptor();
-WORLD_MAP_CFGS = protobuf.Descriptor();
-WORLD_MAP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PARTNER_CURRENCY_CFG = protobuf.Descriptor();
-PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD = protobuf.FieldDescriptor();
-PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD = protobuf.FieldDescriptor();
-PARTNER_CURRENCY_CFGS = protobuf.Descriptor();
-PARTNER_CURRENCY_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG = protobuf.Descriptor();
-PARTNER_ACTIVATION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_PLOTID_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_PARTNERID_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_ICON_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_MOODIDS_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_GITS_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD = protobuf.FieldDescriptor();
-PARTNER_ACTIVATION_CFGS = protobuf.Descriptor();
-PARTNER_ACTIVATION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PARTNER_MOOD_CFG = protobuf.Descriptor();
-PARTNER_MOOD_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_MOOD_CFG_GIFTID_FIELD = protobuf.FieldDescriptor();
-PARTNER_MOOD_CFG_MOODTEXT_FIELD = protobuf.FieldDescriptor();
-PARTNER_MOOD_CFG_MULTIPLE_FIELD = protobuf.FieldDescriptor();
-PARTNER_MOOD_CFGS = protobuf.Descriptor();
-PARTNER_MOOD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PARTNER_IMPRESSION_CFG = protobuf.Descriptor();
-PARTNER_IMPRESSION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_IMPRESSION_CFG_PARTNERID_FIELD = protobuf.FieldDescriptor();
-PARTNER_IMPRESSION_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD = protobuf.FieldDescriptor();
-PARTNER_IMPRESSION_CFGS = protobuf.Descriptor();
-PARTNER_IMPRESSION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PARTNER_IMPRE_LEVELUP_CFG = protobuf.Descriptor();
-PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD = protobuf.FieldDescriptor();
-PARTNER_IMPRE_LEVELUP_CFGS = protobuf.Descriptor();
-PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PARTNER_MULTIPLE_CFG = protobuf.Descriptor();
-PARTNER_MULTIPLE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD = protobuf.FieldDescriptor();
-PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD = protobuf.FieldDescriptor();
-PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD = protobuf.FieldDescriptor();
-PARTNER_MULTIPLE_CFGS = protobuf.Descriptor();
-PARTNER_MULTIPLE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG = protobuf.Descriptor();
-PARTNER_STAR_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG_PARTNER_TYPE_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG_STAR_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG_STUDY_GROUP_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG_STUDY_LIMIT_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG_STUDY_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG_STUDY_ITEM_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG_STUDY_COST_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG_EXCLUDE_COST_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG_STAR_PROP1_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG_STAR_PROP2_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG_STAR_PROP3_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG_UPSTAR_COST_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG_REBUILD_ITEM_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFG_REBUILD_COST_FIELD = protobuf.FieldDescriptor();
-PARTNER_STAR_CFGS = protobuf.Descriptor();
-PARTNER_STAR_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PARTNER_STUDY_CFG = protobuf.Descriptor();
-PARTNER_STUDY_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_STUDY_CFG_STUDY_GROUP_FIELD = protobuf.FieldDescriptor();
-PARTNER_STUDY_CFG_STUDY_PROP_FIELD = protobuf.FieldDescriptor();
-PARTNER_STUDY_CFGS = protobuf.Descriptor();
-PARTNER_STUDY_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PARTNER_ITEM_COMPOUND_CFG = protobuf.Descriptor();
-PARTNER_ITEM_COMPOUND_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD = protobuf.FieldDescriptor();
-PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD = protobuf.FieldDescriptor();
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD = protobuf.FieldDescriptor();
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD = protobuf.FieldDescriptor();
-PARTNER_ITEM_COMPOUND_CFGS = protobuf.Descriptor();
-PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PARTENR_EXPERIENCE_CFG = protobuf.Descriptor();
-PARTENR_EXPERIENCE_CFG_KEY_FIELD = protobuf.FieldDescriptor();
-PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD = protobuf.FieldDescriptor();
-PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD = protobuf.FieldDescriptor();
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD = protobuf.FieldDescriptor();
-PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD = protobuf.FieldDescriptor();
-PARTENR_EXPERIENCE_CFGS = protobuf.Descriptor();
-PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG = protobuf.Descriptor();
-PARTNER_BASE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_SHOW_NAME_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_LOCK_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_HEAD_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_DRAW_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_POKEDEX_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_SKILLS_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_AVATAR_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_ACT_IDLE_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_ACT_MOVE_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_ACT_BORN_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_ACT_DEAD_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_RESURRECTION_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_ADDITION_RATIO_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_QUALITY_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_GROWTH_CAP_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_USE_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_END_SKILLS_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_RESOURCES_NUM_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_RESOURCES_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_ITEMS_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_ITEMS_COUNT_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_RANGE_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_FETTERS_NUM_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_PARTNER_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_IS_RARE_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFG_DIVINE_GROUP_FIELD = protobuf.FieldDescriptor();
-PARTNER_BASE_CFGS = protobuf.Descriptor();
-PARTNER_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PARTNER_ATTRIBUTE_CFG = protobuf.Descriptor();
-PARTNER_ATTRIBUTE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD = protobuf.FieldDescriptor();
-PARTNER_ATTRIBUTE_CFGS = protobuf.Descriptor();
-PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PARTNER_PASSIVESKILL_CFG = protobuf.Descriptor();
-PARTNER_PASSIVESKILL_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_PASSIVESKILL_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-PARTNER_PASSIVESKILL_CFG_ICON_FIELD = protobuf.FieldDescriptor();
-PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD = protobuf.FieldDescriptor();
-PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD = protobuf.FieldDescriptor();
-PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD = protobuf.FieldDescriptor();
-PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD = protobuf.FieldDescriptor();
-PARTNER_PASSIVESKILL_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD = protobuf.FieldDescriptor();
-PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD = protobuf.FieldDescriptor();
-PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD = protobuf.FieldDescriptor();
-PARTNER_PASSIVESKILL_CFGS = protobuf.Descriptor();
-PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PARTNER_CHIP_CFG = protobuf.Descriptor();
-PARTNER_CHIP_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_CHIP_CFG_CHIP_NAME_FIELD = protobuf.FieldDescriptor();
-PARTNER_CHIP_CFG_ICON_FIELD = protobuf.FieldDescriptor();
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD = protobuf.FieldDescriptor();
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD = protobuf.FieldDescriptor();
-PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD = protobuf.FieldDescriptor();
-PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD = protobuf.FieldDescriptor();
-PARTNER_CHIP_CFGS = protobuf.Descriptor();
-PARTNER_CHIP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-FETTER_CFG = protobuf.Descriptor();
-FETTER_CFG_ID_FIELD = protobuf.FieldDescriptor();
-FETTER_CFG_TID_FIELD = protobuf.FieldDescriptor();
-FETTER_CFG_FETTER_NAME_FIELD = protobuf.FieldDescriptor();
-FETTER_CFG_FETTER_DESC_FIELD = protobuf.FieldDescriptor();
-FETTER_CFG_FETTER_OBJECT_FIELD = protobuf.FieldDescriptor();
-FETTER_CFGS = protobuf.Descriptor();
-FETTER_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PARTNER_EQUIPHECHENG_CFG = protobuf.Descriptor();
-PARTNER_EQUIPHECHENG_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_EQUIPHECHENG_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD = protobuf.FieldDescriptor();
-PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD = protobuf.FieldDescriptor();
-PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD = protobuf.FieldDescriptor();
-PARTNER_EQUIPHECHENG_CFGS = protobuf.Descriptor();
-PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-PARTNER_FORMATION_CFG = protobuf.Descriptor();
-PARTNER_FORMATION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-PARTNER_FORMATION_CFG_PROP_ADD1_FIELD = protobuf.FieldDescriptor();
-PARTNER_FORMATION_CFG_PROP_ADD2_FIELD = protobuf.FieldDescriptor();
-PARTNER_FORMATION_CFG_PROP_ADD3_FIELD = protobuf.FieldDescriptor();
-PARTNER_FORMATION_CFGS = protobuf.Descriptor();
-PARTNER_FORMATION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_CFG = protobuf.Descriptor();
-GUILD_MISSION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_CFGS = protobuf.Descriptor();
-GUILD_MISSION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-GUILD_BUILDING_MISSION_CFG = protobuf.Descriptor();
-GUILD_BUILDING_MISSION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD = protobuf.FieldDescriptor();
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD = protobuf.FieldDescriptor();
-GUILD_BUILDING_MISSION_CFGS = protobuf.Descriptor();
-GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-BUILDING_MISSION_POOL_CFG = protobuf.Descriptor();
-BUILDING_MISSION_POOL_CFG_ID_FIELD = protobuf.FieldDescriptor();
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD = protobuf.FieldDescriptor();
-BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD = protobuf.FieldDescriptor();
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD = protobuf.FieldDescriptor();
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD = protobuf.FieldDescriptor();
-BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD = protobuf.FieldDescriptor();
-BUILDING_MISSION_POOL_CFGS = protobuf.Descriptor();
-BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_BASE_CFG = protobuf.Descriptor();
-GUILD_MISSION_BASE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD = protobuf.FieldDescriptor();
-GUILD_MISSION_BASE_CFGS = protobuf.Descriptor();
-GUILD_MISSION_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG = protobuf.Descriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CONT_CFGS = protobuf.Descriptor();
-GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CFG = protobuf.Descriptor();
-GUILD_PRACTICE_GROUP_CFG_ID_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD = protobuf.FieldDescriptor();
-GUILD_PRACTICE_GROUP_CFGS = protobuf.Descriptor();
-GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG = protobuf.Descriptor();
-GUILD_BASE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_DAY_COST_MONEY_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD = protobuf.FieldDescriptor();
-GUILD_BASE_CFGS = protobuf.Descriptor();
-GUILD_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-GUILD_FLAG_CFG = protobuf.Descriptor();
-GUILD_FLAG_CFG_ID_FIELD = protobuf.FieldDescriptor();
-GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD = protobuf.FieldDescriptor();
-GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD = protobuf.FieldDescriptor();
-GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD = protobuf.FieldDescriptor();
-GUILD_FLAG_CFGS = protobuf.Descriptor();
-GUILD_FLAG_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-GUIL_POST_CFG = protobuf.Descriptor();
-GUIL_POST_CFG_ID_FIELD = protobuf.FieldDescriptor();
-GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD = protobuf.FieldDescriptor();
-GUIL_POST_CFG_GUILD_REMOVE_FIELD = protobuf.FieldDescriptor();
-GUIL_POST_CFG_GUILD_MAIL_FIELD = protobuf.FieldDescriptor();
-GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD = protobuf.FieldDescriptor();
-GUIL_POST_CFG_GUILD_EXPEL_FIELD = protobuf.FieldDescriptor();
-GUIL_POST_CFG_GUILD_INVITATION_FIELD = protobuf.FieldDescriptor();
-GUIL_POST_CFG_GUILD_APPROVAL_FIELD = protobuf.FieldDescriptor();
-GUIL_POST_CFG_GUILD_TEAM_FIELD = protobuf.FieldDescriptor();
-GUIL_POST_CFG_GUILD_CALL_FIELD = protobuf.FieldDescriptor();
-GUIL_POST_CFG_GUILD_HOSTILE_FIELD = protobuf.FieldDescriptor();
-GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD = protobuf.FieldDescriptor();
-GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD = protobuf.FieldDescriptor();
-GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD = protobuf.FieldDescriptor();
-GUIL_POST_CFG_GUILD_NOTICE_FIELD = protobuf.FieldDescriptor();
-GUIL_POST_CFGS = protobuf.Descriptor();
-GUIL_POST_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG = protobuf.Descriptor();
-INNER_ALCHEMY_CFG_ID_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_ITEM_ICON_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_ICON_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_OCCUPATION_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_CFGS = protobuf.Descriptor();
-INNER_ALCHEMY_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_GROUP_CFG = protobuf.Descriptor();
-INNER_ALCHEMY_GROUP_CFG_ID_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_GROUP_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD = protobuf.FieldDescriptor();
-INNER_ALCHEMY_GROUP_CFGS = protobuf.Descriptor();
-INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MEDAL_GROUP_CFG = protobuf.Descriptor();
-MEDAL_GROUP_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MEDAL_GROUP_CFG_STARLEVEL_FIELD = protobuf.FieldDescriptor();
-MEDAL_GROUP_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-MEDAL_GROUP_CFG_GROUP_NAME_FIELD = protobuf.FieldDescriptor();
-MEDAL_GROUP_CFG_MEMBER_ID_FIELD = protobuf.FieldDescriptor();
-MEDAL_GROUP_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD = protobuf.FieldDescriptor();
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD = protobuf.FieldDescriptor();
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD = protobuf.FieldDescriptor();
-MEDAL_GROUP_CFGS = protobuf.Descriptor();
-MEDAL_GROUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MEDAL_BASE_CFG = protobuf.Descriptor();
-MEDAL_BASE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MEDAL_BASE_CFG_MEDAL_NAME_FIELD = protobuf.FieldDescriptor();
-MEDAL_BASE_CFG_ICON_FIELD = protobuf.FieldDescriptor();
-MEDAL_BASE_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD = protobuf.FieldDescriptor();
-MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD = protobuf.FieldDescriptor();
-MEDAL_BASE_CFGS = protobuf.Descriptor();
-MEDAL_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MEDAL_COMPOSITE_ADDITION_CFG = protobuf.Descriptor();
-MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD = protobuf.FieldDescriptor();
-MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD = protobuf.FieldDescriptor();
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD = protobuf.FieldDescriptor();
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD = protobuf.FieldDescriptor();
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD = protobuf.FieldDescriptor();
-MEDAL_COMPOSITE_ADDITION_CFGS = protobuf.Descriptor();
-MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MEDAL_OPEN_LEVEL_CFG = protobuf.Descriptor();
-MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-MEDAL_OPEN_LEVEL_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-MEDAL_OPEN_LEVEL_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-MEDAL_OPEN_LEVEL_CFGS = protobuf.Descriptor();
-MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MEDAL_STAR_OPEN_LEVEL_CFG = protobuf.Descriptor();
-MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD = protobuf.FieldDescriptor();
-MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD = protobuf.FieldDescriptor();
-MEDAL_STAR_OPEN_LEVEL_CFGS = protobuf.Descriptor();
-MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-FORMULA_CFG = protobuf.Descriptor();
-FORMULA_CFG_FORMULA_ID_FIELD = protobuf.FieldDescriptor();
-FORMULA_CFG_COST_IDS_FIELD = protobuf.FieldDescriptor();
-FORMULA_CFG_COST_COUNTS_FIELD = protobuf.FieldDescriptor();
-FORMULA_CFG_ITEM_IDS_FIELD = protobuf.FieldDescriptor();
-FORMULA_CFG_ITEM_COUNTS_FIELD = protobuf.FieldDescriptor();
-FORMULA_CFGS = protobuf.Descriptor();
-FORMULA_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MALL_ITEM_CFG = protobuf.Descriptor();
-MALL_ITEM_CFG_GUID_FIELD = protobuf.FieldDescriptor();
-MALL_ITEM_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-MALL_ITEM_CFG_REAL_GUID_FIELD = protobuf.FieldDescriptor();
-MALL_ITEM_CFG_COST_TYPE_FIELD = protobuf.FieldDescriptor();
-MALL_ITEM_CFG_COST_ORIGINAL_FIELD = protobuf.FieldDescriptor();
-MALL_ITEM_CFG_COST_CURRENT_FIELD = protobuf.FieldDescriptor();
-MALL_ITEM_CFGS = protobuf.Descriptor();
-MALL_ITEM_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SHOP_TYPE_CFG = protobuf.Descriptor();
-SHOP_TYPE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-SHOP_TYPE_CFG_SHOP_NAME_FIELD = protobuf.FieldDescriptor();
-SHOP_TYPE_CFG_OPEN_LVL_FIELD = protobuf.FieldDescriptor();
-SHOP_TYPE_CFG_SHOP_TYPE_FIELD = protobuf.FieldDescriptor();
-SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD = protobuf.FieldDescriptor();
-SHOP_TYPE_CFG_SHOP_ITEMS_FIELD = protobuf.FieldDescriptor();
-SHOP_TYPE_CFG_ISTAB_FIELD = protobuf.FieldDescriptor();
-SHOP_TYPE_CFG_TAB_NAME1_FIELD = protobuf.FieldDescriptor();
-SHOP_TYPE_CFG_TAB_NAME2_FIELD = protobuf.FieldDescriptor();
-SHOP_TYPE_CFG_TAB_NAME3_FIELD = protobuf.FieldDescriptor();
-SHOP_TYPE_CFG_TAB_ITEMS1_FIELD = protobuf.FieldDescriptor();
-SHOP_TYPE_CFG_TAB_ITEMS2_FIELD = protobuf.FieldDescriptor();
-SHOP_TYPE_CFG_TAB_ITEMS3_FIELD = protobuf.FieldDescriptor();
-SHOP_TYPE_CFGS = protobuf.Descriptor();
-SHOP_TYPE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SCENE_EVENT_CFG = protobuf.Descriptor();
-SCENE_EVENT_CFG_ID_FIELD = protobuf.FieldDescriptor();
-SCENE_EVENT_CFG_STEP_ID_FIELD = protobuf.FieldDescriptor();
-SCENE_EVENT_CFG_EVENT_TYPE_FIELD = protobuf.FieldDescriptor();
-SCENE_EVENT_CFG_CONDIDITON1_FIELD = protobuf.FieldDescriptor();
-SCENE_EVENT_CFG_CONDIDITON2_FIELD = protobuf.FieldDescriptor();
-SCENE_EVENT_CFG_CONDIDITON3_FIELD = protobuf.FieldDescriptor();
-SCENE_EVENT_CFG_CONDIDITON4_FIELD = protobuf.FieldDescriptor();
-SCENE_EVENT_CFG_RESULT_TYPE_FIELD = protobuf.FieldDescriptor();
-SCENE_EVENT_CFG_RESULT1_FIELD = protobuf.FieldDescriptor();
-SCENE_EVENT_CFG_RESULT2_FIELD = protobuf.FieldDescriptor();
-SCENE_EVENT_CFG_RESULT3_FIELD = protobuf.FieldDescriptor();
-SCENE_EVENT_CFG_RESULT4_FIELD = protobuf.FieldDescriptor();
-SCENE_EVENT_CFGS = protobuf.Descriptor();
-SCENE_EVENT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SCENE_PORTAL_CFG = protobuf.Descriptor();
-SCENE_PORTAL_CFG_ID_FIELD = protobuf.FieldDescriptor();
-SCENE_PORTAL_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-SCENE_PORTAL_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
-SCENE_PORTAL_CFG_POS_Y_FIELD = protobuf.FieldDescriptor();
-SCENE_PORTAL_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
-SCENE_PORTAL_CFG_RADIUS_FIELD = protobuf.FieldDescriptor();
-SCENE_PORTAL_CFG_ORIENTATION_FIELD = protobuf.FieldDescriptor();
-SCENE_PORTAL_CFG_ENABLED_FIELD = protobuf.FieldDescriptor();
-SCENE_PORTAL_CFG_RESID_FIELD = protobuf.FieldDescriptor();
-SCENE_PORTAL_CFGS = protobuf.Descriptor();
-SCENE_PORTAL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SCENE_FUNCTION_CFG = protobuf.Descriptor();
-SCENE_FUNCTION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD = protobuf.FieldDescriptor();
-SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD = protobuf.FieldDescriptor();
-SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD = protobuf.FieldDescriptor();
-SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD = protobuf.FieldDescriptor();
-SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD = protobuf.FieldDescriptor();
-SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD = protobuf.FieldDescriptor();
-SCENE_FUNCTION_CFG_BACK_SCENE_FIELD = protobuf.FieldDescriptor();
-SCENE_FUNCTION_CFG_RANK_IDS_FIELD = protobuf.FieldDescriptor();
-SCENE_FUNCTION_CFG_RANK_TYPE_FIELD = protobuf.FieldDescriptor();
-SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD = protobuf.FieldDescriptor();
-SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD = protobuf.FieldDescriptor();
-SCENE_FUNCTION_CFGS = protobuf.Descriptor();
-SCENE_FUNCTION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SCENE_AREA_CFG = protobuf.Descriptor();
-SCENE_AREA_CFG_AREA_ID_FIELD = protobuf.FieldDescriptor();
-SCENE_AREA_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-SCENE_AREA_CFG_AREA_TYPE_FIELD = protobuf.FieldDescriptor();
-SCENE_AREA_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
-SCENE_AREA_CFG_POS_Y_FIELD = protobuf.FieldDescriptor();
-SCENE_AREA_CFG_RADIUS_FIELD = protobuf.FieldDescriptor();
-SCENE_AREA_CFG_WIDTH_FIELD = protobuf.FieldDescriptor();
-SCENE_AREA_CFG_HEIGHT_FIELD = protobuf.FieldDescriptor();
-SCENE_AREA_CFG_ACTION_FIELD = protobuf.FieldDescriptor();
-SCENE_AREA_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
-SCENE_AREA_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
-SCENE_AREA_CFGS = protobuf.Descriptor();
-SCENE_AREA_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CFG = protobuf.Descriptor();
-CLIENT_TRIGGER_CFG_ID_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CFG_EVENTS_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CFG_CONDITIONS_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CFG_ACTIONS_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CFG_OPENED_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CFGS = protobuf.Descriptor();
-CLIENT_TRIGGER_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_EVENT_CFG = protobuf.Descriptor();
-CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_EVENT_CFGS = protobuf.Descriptor();
-CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CONDITION_CFG = protobuf.Descriptor();
-CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_CONDITION_CFGS = protobuf.Descriptor();
-CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_ACTION_CFG = protobuf.Descriptor();
-CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_ACTION_CFGS = protobuf.Descriptor();
-CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_VARIABLE_CFG = protobuf.Descriptor();
-CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
-CLIENT_TRIGGER_VARIABLE_CFGS = protobuf.Descriptor();
-CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SCENE_ORGAN_CFG = protobuf.Descriptor();
-SCENE_ORGAN_CFG_ID_FIELD = protobuf.FieldDescriptor();
-SCENE_ORGAN_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-SCENE_ORGAN_CFG_MODULE_FIELD = protobuf.FieldDescriptor();
-SCENE_ORGAN_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-SCENE_ORGAN_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
-SCENE_ORGAN_CFG_POS_Y_FIELD = protobuf.FieldDescriptor();
-SCENE_ORGAN_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
-SCENE_ORGAN_CFG_ORIENTATION_FIELD = protobuf.FieldDescriptor();
-SCENE_ORGAN_CFG_SKILL_ID_FIELD = protobuf.FieldDescriptor();
-SCENE_ORGAN_CFG_ENABLED_FIELD = protobuf.FieldDescriptor();
-SCENE_ORGAN_CFG_SHOW_NAME_FIELD = protobuf.FieldDescriptor();
-SCENE_ORGAN_CFGS = protobuf.Descriptor();
-SCENE_ORGAN_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MAP_SIGNS_CFG = protobuf.Descriptor();
-MAP_SIGNS_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MAP_SIGNS_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-MAP_SIGNS_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-MAP_SIGNS_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-MAP_SIGNS_CFG_SUB_TYPE_FIELD = protobuf.FieldDescriptor();
-MAP_SIGNS_CFG_AUTO_ID_FIELD = protobuf.FieldDescriptor();
-MAP_SIGNS_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
-MAP_SIGNS_CFG_POS_Y_FIELD = protobuf.FieldDescriptor();
-MAP_SIGNS_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
-MAP_SIGNS_CFG_IS_AUTO_FIELD = protobuf.FieldDescriptor();
-MAP_SIGNS_CFG_IS_SHOW_FIELD = protobuf.FieldDescriptor();
-MAP_SIGNS_CFGS = protobuf.Descriptor();
-MAP_SIGNS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SCENE_TRIGGER_CFG = protobuf.Descriptor();
-SCENE_TRIGGER_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-SCENE_TRIGGER_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-SCENE_TRIGGER_CFG_EVENTS_FIELD = protobuf.FieldDescriptor();
-SCENE_TRIGGER_CFG_CONDITIONS_FIELD = protobuf.FieldDescriptor();
-SCENE_TRIGGER_CFG_ACTIONS_FIELD = protobuf.FieldDescriptor();
-SCENE_TRIGGER_CFG_OPENED_FIELD = protobuf.FieldDescriptor();
-SCENE_TRIGGER_CFGS = protobuf.Descriptor();
-SCENE_TRIGGER_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-TRIGGER_EVENT_CFG = protobuf.Descriptor();
-TRIGGER_EVENT_CFG_EVENT_ID_FIELD = protobuf.FieldDescriptor();
-TRIGGER_EVENT_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-TRIGGER_EVENT_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
-TRIGGER_EVENT_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
-TRIGGER_EVENT_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
-TRIGGER_EVENT_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
-TRIGGER_EVENT_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
-TRIGGER_EVENT_CFG_PARAM6_FIELD = protobuf.FieldDescriptor();
-TRIGGER_EVENT_CFG_PARAM7_FIELD = protobuf.FieldDescriptor();
-TRIGGER_EVENT_CFG_PARAM8_FIELD = protobuf.FieldDescriptor();
-TRIGGER_EVENT_CFG_PARAM9_FIELD = protobuf.FieldDescriptor();
-TRIGGER_EVENT_CFG_PARAM10_FIELD = protobuf.FieldDescriptor();
-TRIGGER_EVENT_CFGS = protobuf.Descriptor();
-TRIGGER_EVENT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-TRIGGER_CONDITION_CFG = protobuf.Descriptor();
-TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD = protobuf.FieldDescriptor();
-TRIGGER_CONDITION_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-TRIGGER_CONDITION_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
-TRIGGER_CONDITION_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
-TRIGGER_CONDITION_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
-TRIGGER_CONDITION_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
-TRIGGER_CONDITION_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
-TRIGGER_CONDITION_CFG_PARAM6_FIELD = protobuf.FieldDescriptor();
-TRIGGER_CONDITION_CFG_PARAM7_FIELD = protobuf.FieldDescriptor();
-TRIGGER_CONDITION_CFG_PARAM8_FIELD = protobuf.FieldDescriptor();
-TRIGGER_CONDITION_CFG_PARAM9_FIELD = protobuf.FieldDescriptor();
-TRIGGER_CONDITION_CFG_PARAM10_FIELD = protobuf.FieldDescriptor();
-TRIGGER_CONDITION_CFGS = protobuf.Descriptor();
-TRIGGER_CONDITION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-TRIGGER_ACTION_CFG = protobuf.Descriptor();
-TRIGGER_ACTION_CFG_ACTION_ID_FIELD = protobuf.FieldDescriptor();
-TRIGGER_ACTION_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-TRIGGER_ACTION_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
-TRIGGER_ACTION_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
-TRIGGER_ACTION_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
-TRIGGER_ACTION_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
-TRIGGER_ACTION_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
-TRIGGER_ACTION_CFG_PARAM6_FIELD = protobuf.FieldDescriptor();
-TRIGGER_ACTION_CFG_PARAM7_FIELD = protobuf.FieldDescriptor();
-TRIGGER_ACTION_CFG_PARAM8_FIELD = protobuf.FieldDescriptor();
-TRIGGER_ACTION_CFG_PARAM9_FIELD = protobuf.FieldDescriptor();
-TRIGGER_ACTION_CFG_PARAM10_FIELD = protobuf.FieldDescriptor();
-TRIGGER_ACTION_CFGS = protobuf.Descriptor();
-TRIGGER_ACTION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-TRIGGER_VARIABLE_CFG = protobuf.Descriptor();
-TRIGGER_VARIABLE_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-TRIGGER_VARIABLE_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-TRIGGER_VARIABLE_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-TRIGGER_VARIABLE_CFG_IS_VEC_FIELD = protobuf.FieldDescriptor();
-TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD = protobuf.FieldDescriptor();
-TRIGGER_VARIABLE_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
-TRIGGER_VARIABLE_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
-TRIGGER_VARIABLE_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
-TRIGGER_VARIABLE_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
-TRIGGER_VARIABLE_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
-TRIGGER_VARIABLE_CFGS = protobuf.Descriptor();
-TRIGGER_VARIABLE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SCENE_DOOR_CFG = protobuf.Descriptor();
-SCENE_DOOR_CFG_ID_FIELD = protobuf.FieldDescriptor();
-SCENE_DOOR_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-SCENE_DOOR_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
-SCENE_DOOR_CFG_POS_Y_FIELD = protobuf.FieldDescriptor();
-SCENE_DOOR_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
-SCENE_DOOR_CFG_WIDTH_FIELD = protobuf.FieldDescriptor();
-SCENE_DOOR_CFG_ORIENTATION_FIELD = protobuf.FieldDescriptor();
-SCENE_DOOR_CFG_OPENED_FIELD = protobuf.FieldDescriptor();
-SCENE_DOOR_CFG_RESID_FIELD = protobuf.FieldDescriptor();
-SCENE_DOOR_CFGS = protobuf.Descriptor();
-SCENE_DOOR_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-REVIVE_SHOW_CFG = protobuf.Descriptor();
-REVIVE_SHOW_CFG_ID_FIELD = protobuf.FieldDescriptor();
-REVIVE_SHOW_CFG_INDEX_FIELD = protobuf.FieldDescriptor();
-REVIVE_SHOW_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-REVIVE_SHOW_CFGS = protobuf.Descriptor();
-REVIVE_SHOW_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-FASHION_APPRECIATION_CFG = protobuf.Descriptor();
-FASHION_APPRECIATION_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD = protobuf.FieldDescriptor();
-FASHION_APPRECIATION_CFG_NEED_POINT_FIELD = protobuf.FieldDescriptor();
-FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
-FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD = protobuf.FieldDescriptor();
-FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD = protobuf.FieldDescriptor();
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD = protobuf.FieldDescriptor();
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
-FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD = protobuf.FieldDescriptor();
-FASHION_APPRECIATION_CFGS = protobuf.Descriptor();
-FASHION_APPRECIATION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-FASHION_CFG = protobuf.Descriptor();
-FASHION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-FASHION_CFG_ID_GROUP_FIELD = protobuf.FieldDescriptor();
-FASHION_CFG_FASHION_COST_FIELD = protobuf.FieldDescriptor();
-FASHION_CFG_FASHION_TYPE_FIELD = protobuf.FieldDescriptor();
-FASHION_CFG_VOCATION_LIMIT_FIELD = protobuf.FieldDescriptor();
-FASHION_CFG_FASHION_NAME_FIELD = protobuf.FieldDescriptor();
-FASHION_CFG_FASHION_ICON_FIELD = protobuf.FieldDescriptor();
-FASHION_CFG_FASHION_PARTS_FIELD = protobuf.FieldDescriptor();
-FASHION_CFG_FASHION_COLOUR_FIELD = protobuf.FieldDescriptor();
-FASHION_CFG_FASHION_TIPS_FIELD = protobuf.FieldDescriptor();
-FASHION_CFG_ATTRIBUTE_TYPE_FIELD = protobuf.FieldDescriptor();
-FASHION_CFG_ATTRIBUTE_MODE_FIELD = protobuf.FieldDescriptor();
-FASHION_CFG_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
-FASHION_CFGS = protobuf.Descriptor();
-FASHION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-FASHION_COST_CFG = protobuf.Descriptor();
-FASHION_COST_CFG_ID_FIELD = protobuf.FieldDescriptor();
-FASHION_COST_CFG_FASHION_TIME_FIELD = protobuf.FieldDescriptor();
-FASHION_COST_CFG_FASHION_POINT_FIELD = protobuf.FieldDescriptor();
-FASHION_COST_CFG_UNLOCK_LEVEL_FIELD = protobuf.FieldDescriptor();
-FASHION_COST_CFG_UNLOCK_FRONTID_FIELD = protobuf.FieldDescriptor();
-FASHION_COST_CFG_UNLOCK_ITEMID_FIELD = protobuf.FieldDescriptor();
-FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD = protobuf.FieldDescriptor();
-FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD = protobuf.FieldDescriptor();
-FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD = protobuf.FieldDescriptor();
-FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD = protobuf.FieldDescriptor();
-FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD = protobuf.FieldDescriptor();
-FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD = protobuf.FieldDescriptor();
-FASHION_COST_CFG_UNLOCK_QUALITY_FIELD = protobuf.FieldDescriptor();
-FASHION_COST_CFG_UNLOCK_POWER_FIELD = protobuf.FieldDescriptor();
-FASHION_COST_CFGS = protobuf.Descriptor();
-FASHION_COST_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MOUNTEQUIP_CFG = protobuf.Descriptor();
-MOUNTEQUIP_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MOUNTEQUIP_CFG_ITEM_NAME_FIELD = protobuf.FieldDescriptor();
-MOUNTEQUIP_CFG_ITEM_DESC_FIELD = protobuf.FieldDescriptor();
-MOUNTEQUIP_CFG_NEED_LEVEL_FIELD = protobuf.FieldDescriptor();
-MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD = protobuf.FieldDescriptor();
-MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD = protobuf.FieldDescriptor();
-MOUNTEQUIP_CFG_ITEM_COLOR_FIELD = protobuf.FieldDescriptor();
-MOUNTEQUIP_CFG_ITEM_ICON_FIELD = protobuf.FieldDescriptor();
-MOUNTEQUIP_CFG_COULD_TRADE_FIELD = protobuf.FieldDescriptor();
-MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD = protobuf.FieldDescriptor();
-MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD = protobuf.FieldDescriptor();
-MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD = protobuf.FieldDescriptor();
-MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
-MOUNTEQUIP_CFG_COMBAT_POINT_FIELD = protobuf.FieldDescriptor();
-MOUNTEQUIP_CFGS = protobuf.Descriptor();
-MOUNTEQUIP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-INDEPENDENT_RANDOM_REWARD_CFG = protobuf.Descriptor();
-INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD = protobuf.FieldDescriptor();
-INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD = protobuf.FieldDescriptor();
-INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD = protobuf.FieldDescriptor();
-INDEPENDENT_RANDOM_REWARD_CFGS = protobuf.Descriptor();
-INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-WEIGHT_RANDOM_REWARD_CFG = protobuf.Descriptor();
-WEIGHT_RANDOM_REWARD_CFG_ID_FIELD = protobuf.FieldDescriptor();
-WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD = protobuf.FieldDescriptor();
-WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD = protobuf.FieldDescriptor();
-WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD = protobuf.FieldDescriptor();
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD = protobuf.FieldDescriptor();
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD = protobuf.FieldDescriptor();
-WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD = protobuf.FieldDescriptor();
-WEIGHT_RANDOM_REWARD_CFGS = protobuf.Descriptor();
-WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG = protobuf.Descriptor();
-REWARD_CFG_ID_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_REWARD_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_REWARD_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_REWARD_SOUL_ID_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_REWARD_SOUL_COUNT_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_REWARD_PARTNER_ID_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_REWARD_PARTNER_COUNT_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD = protobuf.FieldDescriptor();
-REWARD_CFGS = protobuf.Descriptor();
-REWARD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-FUNC_TYPE_WEIGHT_CFG = protobuf.Descriptor();
-FUNC_TYPE_WEIGHT_CFG_ID_FIELD = protobuf.FieldDescriptor();
-FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD = protobuf.FieldDescriptor();
-FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD = protobuf.FieldDescriptor();
-FUNC_TYPE_WEIGHT_CFGS = protobuf.Descriptor();
-FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ZONE_LOCATION_CFG = protobuf.Descriptor();
-ZONE_LOCATION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-ZONE_LOCATION_CFG_PROVINCE_ID_FIELD = protobuf.FieldDescriptor();
-ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD = protobuf.FieldDescriptor();
-ZONE_LOCATION_CFG_CITY_ID_FIELD = protobuf.FieldDescriptor();
-ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD = protobuf.FieldDescriptor();
-ZONE_LOCATION_CFGS = protobuf.Descriptor();
-ZONE_LOCATION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-GIFT_GIVING_CFG = protobuf.Descriptor();
-GIFT_GIVING_CFG_ID_FIELD = protobuf.FieldDescriptor();
-GIFT_GIVING_CFG_GIFT_TYPE_FIELD = protobuf.FieldDescriptor();
-GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD = protobuf.FieldDescriptor();
-GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD = protobuf.FieldDescriptor();
-GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD = protobuf.FieldDescriptor();
-GIFT_GIVING_CFGS = protobuf.Descriptor();
-GIFT_GIVING_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-FRIEND_TITLE_CFG = protobuf.Descriptor();
-FRIEND_TITLE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD = protobuf.FieldDescriptor();
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD = protobuf.FieldDescriptor();
-FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD = protobuf.FieldDescriptor();
-FRIEND_TITLE_CFGS = protobuf.Descriptor();
-FRIEND_TITLE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-FATE_VALUE_REWARD_CFG = protobuf.Descriptor();
-FATE_VALUE_REWARD_CFG_FATE_ID_FIELD = protobuf.FieldDescriptor();
-FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD = protobuf.FieldDescriptor();
-FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD = protobuf.FieldDescriptor();
-FATE_VALUE_REWARD_CFGS = protobuf.Descriptor();
-FATE_VALUE_REWARD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-GEMSTONE_INLAY_CFG = protobuf.Descriptor();
-GEMSTONE_INLAY_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
-GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD = protobuf.FieldDescriptor();
-GEMSTONE_INLAY_CFG_RANGE_FIELD = protobuf.FieldDescriptor();
-GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD = protobuf.FieldDescriptor();
-GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD = protobuf.FieldDescriptor();
-GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD = protobuf.FieldDescriptor();
-GEMSTONE_INLAY_CFGS = protobuf.Descriptor();
-GEMSTONE_INLAY_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-GEMSTONE_LIST_CFG = protobuf.Descriptor();
-GEMSTONE_LIST_CFG_GEM_ID_FIELD = protobuf.FieldDescriptor();
-GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD = protobuf.FieldDescriptor();
-GEMSTONE_LIST_CFG_GEM_PICID_FIELD = protobuf.FieldDescriptor();
-GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD = protobuf.FieldDescriptor();
-GEMSTONE_LIST_CFGS = protobuf.Descriptor();
-GEMSTONE_LIST_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-CHEST_DROP_CFG = protobuf.Descriptor();
-CHEST_DROP_CFG_ID_FIELD = protobuf.FieldDescriptor();
-CHEST_DROP_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-CHEST_DROP_CFG_COUNT_FIELD = protobuf.FieldDescriptor();
-CHEST_DROP_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-CHEST_DROP_CFG_RES_ID_FIELD = protobuf.FieldDescriptor();
-CHEST_DROP_CFG_RADIUS_FIELD = protobuf.FieldDescriptor();
-CHEST_DROP_CFG_SPACE_ROWS_FIELD = protobuf.FieldDescriptor();
-CHEST_DROP_CFG_SPACE_COLS_FIELD = protobuf.FieldDescriptor();
-CHEST_DROP_CFG_LIVE_TIME_FIELD = protobuf.FieldDescriptor();
-CHEST_DROP_CFG_REFRESH_TIME_FIELD = protobuf.FieldDescriptor();
-CHEST_DROP_CFGS = protobuf.Descriptor();
-CHEST_DROP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MINIMAP_CFG = protobuf.Descriptor();
-MINIMAP_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MINIMAP_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
-MINIMAP_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
-MINIMAP_CFG_WIDTH_FIELD = protobuf.FieldDescriptor();
-MINIMAP_CFG_HEIGHT_FIELD = protobuf.FieldDescriptor();
-MINIMAP_CFG_TEX_WIDTH_FIELD = protobuf.FieldDescriptor();
-MINIMAP_CFG_TEX_HEIGHT_FIELD = protobuf.FieldDescriptor();
-MINIMAP_CFG_RES_ID_FIELD = protobuf.FieldDescriptor();
-MINIMAP_CFG_ROTATION_FIELD = protobuf.FieldDescriptor();
-MINIMAP_CFG_MINIMAP_RADIUS_FIELD = protobuf.FieldDescriptor();
-MINIMAP_CFGS = protobuf.Descriptor();
-MINIMAP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-TREASURE_ROOMS_CFG = protobuf.Descriptor();
-TREASURE_ROOMS_CFG_GROUPID_FIELD = protobuf.FieldDescriptor();
-TREASURE_ROOMS_CFG_AREA_ID_FIELD = protobuf.FieldDescriptor();
-TREASURE_ROOMS_CFG_RED_NUM_FIELD = protobuf.FieldDescriptor();
-TREASURE_ROOMS_CFG_BLUE_NUM_FIELD = protobuf.FieldDescriptor();
-TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD = protobuf.FieldDescriptor();
-TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD = protobuf.FieldDescriptor();
-TREASURE_ROOMS_CFGS = protobuf.Descriptor();
-TREASURE_ROOMS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-CRUSADE_BASE_CFG = protobuf.Descriptor();
-CRUSADE_BASE_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-CRUSADE_BASE_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-CRUSADE_BASE_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
-CRUSADE_BASE_CFG_NPC_ID_FIELD = protobuf.FieldDescriptor();
-CRUSADE_BASE_CFG_GROUP_ID_FIELD = protobuf.FieldDescriptor();
-CRUSADE_BASE_CFGS = protobuf.Descriptor();
-CRUSADE_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-CRUSADE_DUNGON_CFG = protobuf.Descriptor();
-CRUSADE_DUNGON_CFG_NPCID_FIELD = protobuf.FieldDescriptor();
-CRUSADE_DUNGON_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD = protobuf.FieldDescriptor();
-CRUSADE_DUNGON_CFG_REWARD_ID_FIELD = protobuf.FieldDescriptor();
-CRUSADE_DUNGON_CFG_BIRTH_X_FIELD = protobuf.FieldDescriptor();
-CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD = protobuf.FieldDescriptor();
-CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD = protobuf.FieldDescriptor();
-CRUSADE_DUNGON_CFG_DIFFICULT_FIELD = protobuf.FieldDescriptor();
-CRUSADE_DUNGON_CFGS = protobuf.Descriptor();
-CRUSADE_DUNGON_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-STRENGTH_CONVERT_CFG = protobuf.Descriptor();
-STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD = protobuf.FieldDescriptor();
-STRENGTH_CONVERT_CFG_FACTOR_FIELD = protobuf.FieldDescriptor();
-STRENGTH_CONVERT_CFGS = protobuf.Descriptor();
-STRENGTH_CONVERT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_NPC_CFG = protobuf.Descriptor();
-SKILL_SUMMONED_NPC_CFG_ID_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_NPC_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_NPC_CFGS = protobuf.Descriptor();
-SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_CFG = protobuf.Descriptor();
-SKILL_SUMMONED_CFG_ID_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_CFG_RING_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_CFG_EXIST_TIME_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_CFG_SPEED_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_CFG_EFF_START_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_CFG_EFF_KEEP_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD = protobuf.FieldDescriptor();
-SKILL_SUMMONED_CFGS = protobuf.Descriptor();
-SKILL_SUMMONED_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-CLUE_CFG = protobuf.Descriptor();
-CLUE_CFG_CLUE_ID_FIELD = protobuf.FieldDescriptor();
-CLUE_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-CLUE_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
-CLUE_CFG_POS_FIELD = protobuf.FieldDescriptor();
-CLUE_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-CLUE_CFG_BOXES_POS_X_FIELD = protobuf.FieldDescriptor();
-CLUE_CFG_BOXES_POS_Z_FIELD = protobuf.FieldDescriptor();
-CLUE_CFG_COST_ID_FIELD = protobuf.FieldDescriptor();
-CLUE_CFG_CORE_COORDINATE_FIELD = protobuf.FieldDescriptor();
-CLUE_CFG_MAP_RANGE_FIELD = protobuf.FieldDescriptor();
-CLUE_CFGS = protobuf.Descriptor();
-CLUE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-BOXS_CFG = protobuf.Descriptor();
-BOXS_CFG_BOXES_ID_FIELD = protobuf.FieldDescriptor();
-BOXS_CFG_BOX_ID_FIELD = protobuf.FieldDescriptor();
-BOXS_CFG_BOX_RATE_FIELD = protobuf.FieldDescriptor();
-BOXS_CFGS = protobuf.Descriptor();
-BOXS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-BOX_COLLECT_CFG = protobuf.Descriptor();
-BOX_COLLECT_CFG_BOX_ID_FIELD = protobuf.FieldDescriptor();
-BOX_COLLECT_CFG_BOX_RES_FIELD = protobuf.FieldDescriptor();
-BOX_COLLECT_CFG_ITEM_TYPE_FIELD = protobuf.FieldDescriptor();
-BOX_COLLECT_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-BOX_COLLECT_CFG_ITEM_RATE_FIELD = protobuf.FieldDescriptor();
-BOX_COLLECT_CFG_SHOW_TYPE_FIELD = protobuf.FieldDescriptor();
-BOX_COLLECT_CFG_MODEL_SCALE_FIELD = protobuf.FieldDescriptor();
-BOX_COLLECT_CFGS = protobuf.Descriptor();
-BOX_COLLECT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-DIG_TREASURE_EVENT_CFG = protobuf.Descriptor();
-DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD = protobuf.FieldDescriptor();
-DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD = protobuf.FieldDescriptor();
-DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD = protobuf.FieldDescriptor();
-DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD = protobuf.FieldDescriptor();
-DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD = protobuf.FieldDescriptor();
-DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD = protobuf.FieldDescriptor();
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD = protobuf.FieldDescriptor();
-DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD = protobuf.FieldDescriptor();
-DIG_TREASURE_EVENT_CFG_BROAD_FIELD = protobuf.FieldDescriptor();
-DIG_TREASURE_EVENT_CFGS = protobuf.Descriptor();
-DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-DROP_POINT_CFG = protobuf.Descriptor();
-DROP_POINT_CFG_ID_FIELD = protobuf.FieldDescriptor();
-DROP_POINT_CFG_MODULE_FIELD = protobuf.FieldDescriptor();
-DROP_POINT_CFG_MINDISTANCE_FIELD = protobuf.FieldDescriptor();
-DROP_POINT_CFG_PICKTYPE_FIELD = protobuf.FieldDescriptor();
-DROP_POINT_CFG_BSHOW_FIELD = protobuf.FieldDescriptor();
-DROP_POINT_CFG_TEXTID_FIELD = protobuf.FieldDescriptor();
-DROP_POINT_CFGS = protobuf.Descriptor();
-DROP_POINT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-RANK_FUNCTION_CFG = protobuf.Descriptor();
-RANK_FUNCTION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-RANK_FUNCTION_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-RANK_FUNCTION_CFG_SELECT_SHOW_FIELD = protobuf.FieldDescriptor();
-RANK_FUNCTION_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-RANK_FUNCTION_CFG_CHILD_NAMES_FIELD = protobuf.FieldDescriptor();
-RANK_FUNCTION_CFG_CHILD_TYPES_FIELD = protobuf.FieldDescriptor();
-RANK_FUNCTION_CFG_CHILD_VALUES_FIELD = protobuf.FieldDescriptor();
-RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD = protobuf.FieldDescriptor();
-RANK_FUNCTION_CFG_HOST_FIELD_FIELD = protobuf.FieldDescriptor();
-RANK_FUNCTION_CFGS = protobuf.Descriptor();
-RANK_FUNCTION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-RANK_FIELD_CFG = protobuf.Descriptor();
-RANK_FIELD_CFG_ID_FIELD = protobuf.FieldDescriptor();
-RANK_FIELD_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-RANK_FIELD_CFG_FIELD_NAME_FIELD = protobuf.FieldDescriptor();
-RANK_FIELD_CFG_CHILD_NAMES_FIELD = protobuf.FieldDescriptor();
-RANK_FIELD_CFG_CHILD_TYPES_FIELD = protobuf.FieldDescriptor();
-RANK_FIELD_CFG_CHILD_VALUES_FIELD = protobuf.FieldDescriptor();
-RANK_FIELD_CFG_HOST_FIELD_FIELD = protobuf.FieldDescriptor();
-RANK_FIELD_CFGS = protobuf.Descriptor();
-RANK_FIELD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-EDN_CFG = protobuf.Descriptor();
-EDN_CFG_LVL_FIELD = protobuf.FieldDescriptor();
-EDN_CFG_LVLUP_EXP_FIELD = protobuf.FieldDescriptor();
-EDN_CFGS = protobuf.Descriptor();
-EDN_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-EDN_SCENE_CFG = protobuf.Descriptor();
-EDN_SCENE_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
-EDN_SCENE_CFG_OPEN_LVL_FIELD = protobuf.FieldDescriptor();
-EDN_SCENE_CFG_MAPNAME_ID_FIELD = protobuf.FieldDescriptor();
-EDN_SCENE_CFG_MAP_NAME_FIELD = protobuf.FieldDescriptor();
-EDN_SCENE_CFG_MAP_IMGID_FIELD = protobuf.FieldDescriptor();
-EDN_SCENE_CFG_MAP_RELICSIDS_FIELD = protobuf.FieldDescriptor();
-EDN_SCENE_CFGS = protobuf.Descriptor();
-EDN_SCENE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-EDN_RELIC_CFG = protobuf.Descriptor();
-EDN_RELIC_CFG_ID_FIELD = protobuf.FieldDescriptor();
-EDN_RELIC_CFG_NAME_ID_FIELD = protobuf.FieldDescriptor();
-EDN_RELIC_CFG_NAME_STRING_FIELD = protobuf.FieldDescriptor();
-EDN_RELIC_CFG_IMAGE_ID_FIELD = protobuf.FieldDescriptor();
-EDN_RELIC_CFG_REWARDS_FIELD = protobuf.FieldDescriptor();
-EDN_RELIC_CFG_TIPS_ID_FIELD = protobuf.FieldDescriptor();
-EDN_RELIC_CFGS = protobuf.Descriptor();
-EDN_RELIC_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG = protobuf.Descriptor();
-TOWER_BASE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_RAID_ITEMID_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_MONEYTYPE_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_MONEYCOUNT_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_ITEMID_CROSS_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_EXP_CROSS_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_BIRTH_X_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_BIRTH_Y_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFG_BIRTH_Z_FIELD = protobuf.FieldDescriptor();
-TOWER_BASE_CFGS = protobuf.Descriptor();
-TOWER_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG = protobuf.Descriptor();
-STARSPIRIT_DUNGOEN_CFG_ID_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-STARSPIRIT_DUNGOEN_CFGS = protobuf.Descriptor();
-STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-RUNE_QUALITY_CFG = protobuf.Descriptor();
-RUNE_QUALITY_CFG_RUNE_ID_FIELD = protobuf.FieldDescriptor();
-RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD = protobuf.FieldDescriptor();
-RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD = protobuf.FieldDescriptor();
-RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD = protobuf.FieldDescriptor();
-RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD = protobuf.FieldDescriptor();
-RUNE_QUALITY_CFGS = protobuf.Descriptor();
-RUNE_QUALITY_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_REFINE_CFG = protobuf.Descriptor();
-RUNE_PROP_REFINE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_REFINE_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD = protobuf.FieldDescriptor();
-RUNE_PROP_REFINE_CFGS = protobuf.Descriptor();
-RUNE_PROP_REFINE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-RUNE_SKILL_REFINE_CFG = protobuf.Descriptor();
-RUNE_SKILL_REFINE_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
-RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD = protobuf.FieldDescriptor();
-RUNE_SKILL_REFINE_CFGS = protobuf.Descriptor();
-RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MONTHCARD_BASE_CFG = protobuf.Descriptor();
-MONTHCARD_BASE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD = protobuf.FieldDescriptor();
-MONTHCARD_BASE_CFG_PRICE_FIELD = protobuf.FieldDescriptor();
-MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD = protobuf.FieldDescriptor();
-MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD = protobuf.FieldDescriptor();
-MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD = protobuf.FieldDescriptor();
-MONTHCARD_BASE_CFGS = protobuf.Descriptor();
-MONTHCARD_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SIGNUP_BASE_CFG = protobuf.Descriptor();
-SIGNUP_BASE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD = protobuf.FieldDescriptor();
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD = protobuf.FieldDescriptor();
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD = protobuf.FieldDescriptor();
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD = protobuf.FieldDescriptor();
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD = protobuf.FieldDescriptor();
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD = protobuf.FieldDescriptor();
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD = protobuf.FieldDescriptor();
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD = protobuf.FieldDescriptor();
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD = protobuf.FieldDescriptor();
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD = protobuf.FieldDescriptor();
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD = protobuf.FieldDescriptor();
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD = protobuf.FieldDescriptor();
-SIGNUP_BASE_CFGS = protobuf.Descriptor();
-SIGNUP_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SIGNUP_ACCUMULATION_CFG = protobuf.Descriptor();
-SIGNUP_ACCUMULATION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD = protobuf.FieldDescriptor();
-SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD = protobuf.FieldDescriptor();
-SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD = protobuf.FieldDescriptor();
-SIGNUP_ACCUMULATION_CFGS = protobuf.Descriptor();
-SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SERVICE_CFG = protobuf.Descriptor();
-SERVICE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-SERVICE_CFG_SERVICE_ID_FIELD = protobuf.FieldDescriptor();
-SERVICE_CFG_PARAM1_FIELD = protobuf.FieldDescriptor();
-SERVICE_CFG_PARAM2_FIELD = protobuf.FieldDescriptor();
-SERVICE_CFG_PARAM3_FIELD = protobuf.FieldDescriptor();
-SERVICE_CFG_PARAM4_FIELD = protobuf.FieldDescriptor();
-SERVICE_CFG_PARAM5_FIELD = protobuf.FieldDescriptor();
-SERVICE_CFGS = protobuf.Descriptor();
-SERVICE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MATERIAL_ITEM_CFG = protobuf.Descriptor();
-MATERIAL_ITEM_CFG_NUM_FIELD = protobuf.FieldDescriptor();
-MATERIAL_ITEM_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MATERIAL_ITEM_CFG_WEIGHT_FIELD = protobuf.FieldDescriptor();
-MATERIAL_ITEM_CFG_REWARD_ID_FIELD = protobuf.FieldDescriptor();
-MATERIAL_ITEM_CFGS = protobuf.Descriptor();
-MATERIAL_ITEM_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-STATE_CFG = protobuf.Descriptor();
-STATE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-STATE_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-STATE_CFG_ACTIONS_FIELD = protobuf.FieldDescriptor();
-STATE_CFGS = protobuf.Descriptor();
-STATE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-CAM_OPTIONS_CFG = protobuf.Descriptor();
-CAM_OPTIONS_CFG_ID_FIELD = protobuf.FieldDescriptor();
-CAM_OPTIONS_CFG_MIN_PITCH_FIELD = protobuf.FieldDescriptor();
-CAM_OPTIONS_CFG_MAX_PITCH_FIELD = protobuf.FieldDescriptor();
-CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD = protobuf.FieldDescriptor();
-CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD = protobuf.FieldDescriptor();
-CAM_OPTIONS_CFG_DEF_YAW_FIELD = protobuf.FieldDescriptor();
-CAM_OPTIONS_CFG_DEF_PITCH_FIELD = protobuf.FieldDescriptor();
-CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD = protobuf.FieldDescriptor();
-CAM_OPTIONS_CFG_OFFSET_X_FIELD = protobuf.FieldDescriptor();
-CAM_OPTIONS_CFG_OFFSET_Y_FIELD = protobuf.FieldDescriptor();
-CAM_OPTIONS_CFG_OFFSET_Z_FIELD = protobuf.FieldDescriptor();
-CAM_OPTIONS_CFG_FOV_FIELD = protobuf.FieldDescriptor();
-CAM_OPTIONS_CFGS = protobuf.Descriptor();
-CAM_OPTIONS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-LEVEL_PACKAGE_CFG = protobuf.Descriptor();
-LEVEL_PACKAGE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD = protobuf.FieldDescriptor();
-LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD = protobuf.FieldDescriptor();
-LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD = protobuf.FieldDescriptor();
-LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD = protobuf.FieldDescriptor();
-LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD = protobuf.FieldDescriptor();
-LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD = protobuf.FieldDescriptor();
-LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD = protobuf.FieldDescriptor();
-LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD = protobuf.FieldDescriptor();
-LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD = protobuf.FieldDescriptor();
-LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD = protobuf.FieldDescriptor();
-LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD = protobuf.FieldDescriptor();
-LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD = protobuf.FieldDescriptor();
-LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD = protobuf.FieldDescriptor();
-LEVEL_PACKAGE_CFGS = protobuf.Descriptor();
-LEVEL_PACKAGE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-BATTLE_CRYSTAL_INFO_CFG = protobuf.Descriptor();
-BATTLE_CRYSTAL_INFO_CFG_ID_FIELD = protobuf.FieldDescriptor();
-BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD = protobuf.FieldDescriptor();
-BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD = protobuf.FieldDescriptor();
-BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD = protobuf.FieldDescriptor();
-BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD = protobuf.FieldDescriptor();
-BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD = protobuf.FieldDescriptor();
-BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD = protobuf.FieldDescriptor();
-BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD = protobuf.FieldDescriptor();
-BATTLE_CRYSTAL_INFO_CFGS = protobuf.Descriptor();
-BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-BATTLE_CRYSTAL_ROOMS_CFG = protobuf.Descriptor();
-BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD = protobuf.FieldDescriptor();
-BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD = protobuf.FieldDescriptor();
-BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD = protobuf.FieldDescriptor();
-BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD = protobuf.FieldDescriptor();
-BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD = protobuf.FieldDescriptor();
-BATTLE_CRYSTAL_ROOMS_CFGS = protobuf.Descriptor();
-BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-BATTLE_COLLECT_CRYSTAL_CFG = protobuf.Descriptor();
-BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD = protobuf.FieldDescriptor();
-BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD = protobuf.FieldDescriptor();
-BATTLE_COLLECT_CRYSTAL_CFGS = protobuf.Descriptor();
-BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ELITE_LEVEL_CFG = protobuf.Descriptor();
-ELITE_LEVEL_CFG_LEVEL_ID_FIELD = protobuf.FieldDescriptor();
-ELITE_LEVEL_CFG_LEVEL_MIN_FIELD = protobuf.FieldDescriptor();
-ELITE_LEVEL_CFG_LEVEL_MAX_FIELD = protobuf.FieldDescriptor();
-ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD = protobuf.FieldDescriptor();
-ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD = protobuf.FieldDescriptor();
-ELITE_LEVEL_CFGS = protobuf.Descriptor();
-ELITE_LEVEL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ELITE_COMMON_INFO_CFG = protobuf.Descriptor();
-ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD = protobuf.FieldDescriptor();
-ELITE_COMMON_INFO_CFG_GAME_ID_FIELD = protobuf.FieldDescriptor();
-ELITE_COMMON_INFO_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-ELITE_COMMON_INFO_CFG_NODE_FIELD = protobuf.FieldDescriptor();
-ELITE_COMMON_INFO_CFG_TIME_FIELD = protobuf.FieldDescriptor();
-ELITE_COMMON_INFO_CFG_GRADE_FIELD = protobuf.FieldDescriptor();
-ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD = protobuf.FieldDescriptor();
-ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD = protobuf.FieldDescriptor();
-ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD = protobuf.FieldDescriptor();
-ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD = protobuf.FieldDescriptor();
-ELITE_COMMON_INFO_CFGS = protobuf.Descriptor();
-ELITE_COMMON_INFO_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ELITE_HELL_INFO_CFG = protobuf.Descriptor();
-ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD = protobuf.FieldDescriptor();
-ELITE_HELL_INFO_CFG_GAME_ID_FIELD = protobuf.FieldDescriptor();
-ELITE_HELL_INFO_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-ELITE_HELL_INFO_CFG_NODE_FIELD = protobuf.FieldDescriptor();
-ELITE_HELL_INFO_CFG_TIME_FIELD = protobuf.FieldDescriptor();
-ELITE_HELL_INFO_CFG_GRADE_FIELD = protobuf.FieldDescriptor();
-ELITE_HELL_INFO_CFG_REWARD_ID_FIELD = protobuf.FieldDescriptor();
-ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD = protobuf.FieldDescriptor();
-ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD = protobuf.FieldDescriptor();
-ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD = protobuf.FieldDescriptor();
-ELITE_HELL_INFO_CFGS = protobuf.Descriptor();
-ELITE_HELL_INFO_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ELITE_REWARD_CFG = protobuf.Descriptor();
-ELITE_REWARD_CFG_ID_FIELD = protobuf.FieldDescriptor();
-ELITE_REWARD_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-ELITE_REWARD_CFG_ITEM_COUNT_FIELD = protobuf.FieldDescriptor();
-ELITE_REWARD_CFGS = protobuf.Descriptor();
-ELITE_REWARD_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SUBSYS_CFG = protobuf.Descriptor();
-SUBSYS_CFG_ID_FIELD = protobuf.FieldDescriptor();
-SUBSYS_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-SUBSYS_CFG_TITLE_ID_FIELD = protobuf.FieldDescriptor();
-SUBSYS_CFG_DESC_ID_FIELD = protobuf.FieldDescriptor();
-SUBSYS_CFG_UI_STYLE_FIELD = protobuf.FieldDescriptor();
-SUBSYS_CFG_NOTES_FIELD = protobuf.FieldDescriptor();
-SUBSYS_CFGS = protobuf.Descriptor();
-SUBSYS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-BAG_ROUTINE_CFG = protobuf.Descriptor();
-BAG_ROUTINE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-BAG_ROUTINE_CFG_BAG_TYPE_FIELD = protobuf.FieldDescriptor();
-BAG_ROUTINE_CFG_BAG_INITIAL_FIELD = protobuf.FieldDescriptor();
-BAG_ROUTINE_CFG_BAG_MAX_FIELD = protobuf.FieldDescriptor();
-BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD = protobuf.FieldDescriptor();
-BAG_ROUTINE_CFGS = protobuf.Descriptor();
-BAG_ROUTINE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-DEPOT_UNLOCK_CFG = protobuf.Descriptor();
-DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD = protobuf.FieldDescriptor();
-DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD = protobuf.FieldDescriptor();
-DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD = protobuf.FieldDescriptor();
-DEPOT_UNLOCK_CFGS = protobuf.Descriptor();
-DEPOT_UNLOCK_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ROLE_PARTS_CFG = protobuf.Descriptor();
-ROLE_PARTS_CFG_ID_FIELD = protobuf.FieldDescriptor();
-ROLE_PARTS_CFG_NAME_ID_FIELD = protobuf.FieldDescriptor();
-ROLE_PARTS_CFG_SLOT_FIELD = protobuf.FieldDescriptor();
-ROLE_PARTS_CFG_RES_ID_FIELD = protobuf.FieldDescriptor();
-ROLE_PARTS_CFGS = protobuf.Descriptor();
-ROLE_PARTS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SUPPRESS_CFG = protobuf.Descriptor();
-SUPPRESS_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
-SUPPRESS_CFG_FIT_LVL_FIELD = protobuf.FieldDescriptor();
-SUPPRESS_CFG_GROUP_COUNT_FIELD = protobuf.FieldDescriptor();
-SUPPRESS_CFG_KILL_BOS_CHEST_FIELD = protobuf.FieldDescriptor();
-SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD = protobuf.FieldDescriptor();
-SUPPRESS_CFGS = protobuf.Descriptor();
-SUPPRESS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SUPPRESS_GROUP_CFG = protobuf.Descriptor();
-SUPPRESS_GROUP_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
-SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD = protobuf.FieldDescriptor();
-SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD = protobuf.FieldDescriptor();
-SUPPRESS_GROUP_CFGS = protobuf.Descriptor();
-SUPPRESS_GROUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-UI_CONTRIBUTION_CFG = protobuf.Descriptor();
-UI_CONTRIBUTION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-UI_CONTRIBUTION_CFG_TITLEID_FIELD = protobuf.FieldDescriptor();
-UI_CONTRIBUTION_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-UI_CONTRIBUTION_CFG_IMAGEID_FIELD = protobuf.FieldDescriptor();
-UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD = protobuf.FieldDescriptor();
-UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD = protobuf.FieldDescriptor();
-UI_CONTRIBUTION_CFG_ATLASID_FIELD = protobuf.FieldDescriptor();
-UI_CONTRIBUTION_CFG_ICONNAME_FIELD = protobuf.FieldDescriptor();
-UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD = protobuf.FieldDescriptor();
-UI_CONTRIBUTION_CFG_TIPSID_FIELD = protobuf.FieldDescriptor();
-UI_CONTRIBUTION_CFGS = protobuf.Descriptor();
-UI_CONTRIBUTION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG = protobuf.Descriptor();
-ACTIVITY_DUNGEON_CFG_ID_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_TIMES_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_DUNGEON_CFGS = protobuf.Descriptor();
-ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-RESOURCE_COMPUND_CFG = protobuf.Descriptor();
-RESOURCE_COMPUND_CFG_ID_FIELD = protobuf.FieldDescriptor();
-RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
-RESOURCE_COMPUND_CFGS = protobuf.Descriptor();
-RESOURCE_COMPUND_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ROUTE_MARK_CFG = protobuf.Descriptor();
-ROUTE_MARK_CFG_ID_FIELD = protobuf.FieldDescriptor();
-ROUTE_MARK_CFG_MODEL_ID_FIELD = protobuf.FieldDescriptor();
-ROUTE_MARK_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
-ROUTE_MARK_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
-ROUTE_MARK_CFG_POS_Y_FIELD = protobuf.FieldDescriptor();
-ROUTE_MARK_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
-ROUTE_MARK_CFGS = protobuf.Descriptor();
-ROUTE_MARK_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-JUMP_CFG = protobuf.Descriptor();
-JUMP_CFG_ID_FIELD = protobuf.FieldDescriptor();
-JUMP_CFG_WAY_POINTS_FIELD = protobuf.FieldDescriptor();
-JUMP_CFG_JUMP_ACTION_ID_FIELD = protobuf.FieldDescriptor();
-JUMP_CFGS = protobuf.Descriptor();
-JUMP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-JUMP_ACTION_CFG = protobuf.Descriptor();
-JUMP_ACTION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-JUMP_ACTION_CFG_ANIMATION_NAME_FIELD = protobuf.FieldDescriptor();
-JUMP_ACTION_CFG_SPLITES_FIELD = protobuf.FieldDescriptor();
-JUMP_ACTION_CFG_DURATION_FIELD = protobuf.FieldDescriptor();
-JUMP_ACTION_CFGS = protobuf.Descriptor();
-JUMP_ACTION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MAGIC_ATT_CFG = protobuf.Descriptor();
-MAGIC_ATT_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MAGIC_ATT_CFG_MAGIC_TYPE_FIELD = protobuf.FieldDescriptor();
-MAGIC_ATT_CFG_RANGE_FIELD = protobuf.FieldDescriptor();
-MAGIC_ATT_CFG_PROP_TYPE_FIELD = protobuf.FieldDescriptor();
-MAGIC_ATT_CFG_ATT_TYPE_FIELD = protobuf.FieldDescriptor();
-MAGIC_ATT_CFG_ATT_VALUE_FIELD = protobuf.FieldDescriptor();
-MAGIC_ATT_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-MAGIC_ATT_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-MAGIC_ATT_CFG_ICON_FIELD = protobuf.FieldDescriptor();
-MAGIC_ATT_CFGS = protobuf.Descriptor();
-MAGIC_ATT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MAGIC_OSTIOLE_CFG = protobuf.Descriptor();
-MAGIC_OSTIOLE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MAGIC_OSTIOLE_CFG_POS_FIELD = protobuf.FieldDescriptor();
-MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD = protobuf.FieldDescriptor();
-MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD = protobuf.FieldDescriptor();
-MAGIC_OSTIOLE_CFG_RANGE_FIELD = protobuf.FieldDescriptor();
-MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
-MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD = protobuf.FieldDescriptor();
-MAGIC_OSTIOLE_CFGS = protobuf.Descriptor();
-MAGIC_OSTIOLE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MAGIC_LEVELUP_CFG = protobuf.Descriptor();
-MAGIC_LEVELUP_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD = protobuf.FieldDescriptor();
-MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD = protobuf.FieldDescriptor();
-MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD = protobuf.FieldDescriptor();
-MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD = protobuf.FieldDescriptor();
-MAGIC_LEVELUP_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
-MAGIC_LEVELUP_CFG_RANGE_FIELD = protobuf.FieldDescriptor();
-MAGIC_LEVELUP_CFGS = protobuf.Descriptor();
-MAGIC_LEVELUP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MAGIC_COMBINATION_CFG = protobuf.Descriptor();
-MAGIC_COMBINATION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD = protobuf.FieldDescriptor();
-MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD = protobuf.FieldDescriptor();
-MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD = protobuf.FieldDescriptor();
-MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD = protobuf.FieldDescriptor();
-MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD = protobuf.FieldDescriptor();
-MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD = protobuf.FieldDescriptor();
-MAGIC_COMBINATION_CFG_MG_NAME_FIELD = protobuf.FieldDescriptor();
-MAGIC_COMBINATION_CFGS = protobuf.Descriptor();
-MAGIC_COMBINATION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_CFG = protobuf.Descriptor();
-CONVOY_BIAOCHE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_CFGS = protobuf.Descriptor();
-CONVOY_BIAOCHE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG = protobuf.Descriptor();
-CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD = protobuf.FieldDescriptor();
-CONVOY_BIAOCHE_SCENE_CFGS = protobuf.Descriptor();
-CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_INFO_CFG = protobuf.Descriptor();
-ACTIVITY_INFO_CFG_ID_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_INFO_CFG_START_TIME_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_INFO_CFG_END_TIME_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_INFO_CFG_TIMES_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_INFO_CFGS = protobuf.Descriptor();
-ACTIVITY_INFO_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_ROOMS_CFG = protobuf.Descriptor();
-ACTIVITY_ROOMS_CFG_ID_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_ROOMS_CFG_AREA_ID_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_ROOMS_CFG_RED_NUM_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD = protobuf.FieldDescriptor();
-ACTIVITY_ROOMS_CFGS = protobuf.Descriptor();
-ACTIVITY_ROOMS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-GROW_POINT_CFG = protobuf.Descriptor();
-GROW_POINT_CFG_ID_FIELD = protobuf.FieldDescriptor();
-GROW_POINT_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-GROW_POINT_CFG_MODULE_FIELD = protobuf.FieldDescriptor();
-GROW_POINT_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-GROW_POINT_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-GROW_POINT_CFG_POS_X_FIELD = protobuf.FieldDescriptor();
-GROW_POINT_CFG_POS_Y_FIELD = protobuf.FieldDescriptor();
-GROW_POINT_CFG_POS_Z_FIELD = protobuf.FieldDescriptor();
-GROW_POINT_CFG_MAX_COUNT_FIELD = protobuf.FieldDescriptor();
-GROW_POINT_CFG_SHOW_COUNT_FIELD = protobuf.FieldDescriptor();
-GROW_POINT_CFG_QUALITY_FIELD = protobuf.FieldDescriptor();
-GROW_POINT_CFG_SKILL_INDEX_FIELD = protobuf.FieldDescriptor();
-GROW_POINT_CFGS = protobuf.Descriptor();
-GROW_POINT_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-ERRORCODE_NOTIFY_CFG = protobuf.Descriptor();
-ERRORCODE_NOTIFY_CFG_ID_FIELD = protobuf.FieldDescriptor();
-ERRORCODE_NOTIFY_CFG_CONTENT_FIELD = protobuf.FieldDescriptor();
-ERRORCODE_NOTIFY_CFGS = protobuf.Descriptor();
-ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-OPEN_RULES_DATA_CFG = protobuf.Descriptor();
-OPEN_RULES_DATA_CFG_ID_FIELD = protobuf.FieldDescriptor();
-OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD = protobuf.FieldDescriptor();
-OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD = protobuf.FieldDescriptor();
-OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD = protobuf.FieldDescriptor();
-OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD = protobuf.FieldDescriptor();
-OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD = protobuf.FieldDescriptor();
-OPEN_RULES_DATA_CFG_END_HOUR_FIELD = protobuf.FieldDescriptor();
-OPEN_RULES_DATA_CFG_END_MIN_FIELD = protobuf.FieldDescriptor();
-OPEN_RULES_DATA_CFGS = protobuf.Descriptor();
-OPEN_RULES_DATA_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-CAMPBOSS_CFG = protobuf.Descriptor();
-CAMPBOSS_CFG_ID_FIELD = protobuf.FieldDescriptor();
-CAMPBOSS_CFG_NEED_LEVEL_FIELD = protobuf.FieldDescriptor();
-CAMPBOSS_CFG_SCENE_ID_FIELD = protobuf.FieldDescriptor();
-CAMPBOSS_CFG_MAP_ID_FIELD = protobuf.FieldDescriptor();
-CAMPBOSS_CFG_X_POINT_FIELD = protobuf.FieldDescriptor();
-CAMPBOSS_CFG_Y_POINT_FIELD = protobuf.FieldDescriptor();
-CAMPBOSS_CFG_Z_POINT_FIELD = protobuf.FieldDescriptor();
-CAMPBOSS_CFGS = protobuf.Descriptor();
-CAMPBOSS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-TIPS_CFG = protobuf.Descriptor();
-TIPS_CFG_ID_FIELD = protobuf.FieldDescriptor();
-TIPS_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-TIPS_CFG_CONTENT_FIELD = protobuf.FieldDescriptor();
-TIPS_CFGS = protobuf.Descriptor();
-TIPS_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG = protobuf.Descriptor();
-CAMP_RELATION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_SCRIP_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE_SCRIP_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE0_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE1_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE2_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE3_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE4_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE5_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE6_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE7_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE8_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE9_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE10_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE11_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE12_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE13_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE14_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFG_TYPE15_FIELD = protobuf.FieldDescriptor();
-CAMP_RELATION_CFGS = protobuf.Descriptor();
-CAMP_RELATION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-CAMP_CHANGE_COST_CFG = protobuf.Descriptor();
-CAMP_CHANGE_COST_CFG_ID_FIELD = protobuf.FieldDescriptor();
-CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD = protobuf.FieldDescriptor();
-CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD = protobuf.FieldDescriptor();
-CAMP_CHANGE_COST_CFGS = protobuf.Descriptor();
-CAMP_CHANGE_COST_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-RANDOMMAN_CFG = protobuf.Descriptor();
-RANDOMMAN_CFG_NAME0_FIELD = protobuf.FieldDescriptor();
-RANDOMMAN_CFG_NAME1_FIELD = protobuf.FieldDescriptor();
-RANDOMMAN_CFGS = protobuf.Descriptor();
-RANDOMMAN_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-RANDOMWOMAN_CFG = protobuf.Descriptor();
-RANDOMWOMAN_CFG_NAME0_FIELD = protobuf.FieldDescriptor();
-RANDOMWOMAN_CFG_NAME1_FIELD = protobuf.FieldDescriptor();
-RANDOMWOMAN_CFGS = protobuf.Descriptor();
-RANDOMWOMAN_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG = protobuf.Descriptor();
-SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_ATTACK_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_DEFENSE_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_MAXHP_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_HITRATE_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_MAUD_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_MIND_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_DODGERATE_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_INTENSITY_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD = protobuf.FieldDescriptor();
-SOUL_BASE_ATTR_CFGS = protobuf.Descriptor();
-SOUL_BASE_ATTR_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SOUL_MAGIC_ATTR_CFG = protobuf.Descriptor();
-SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD = protobuf.FieldDescriptor();
-SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD = protobuf.FieldDescriptor();
-SOUL_MAGIC_ATTR_CFGS = protobuf.Descriptor();
-SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SOUL_SUIT_ATTR_CFG = protobuf.Descriptor();
-SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD = protobuf.FieldDescriptor();
-SOUL_SUIT_ATTR_CFG_SUITID_FIELD = protobuf.FieldDescriptor();
-SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD = protobuf.FieldDescriptor();
-SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD = protobuf.FieldDescriptor();
-SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD = protobuf.FieldDescriptor();
-SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD = protobuf.FieldDescriptor();
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD = protobuf.FieldDescriptor();
-SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD = protobuf.FieldDescriptor();
-SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD = protobuf.FieldDescriptor();
-SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD = protobuf.FieldDescriptor();
-SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD = protobuf.FieldDescriptor();
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD = protobuf.FieldDescriptor();
-SOUL_SUIT_ATTR_CFGS = protobuf.Descriptor();
-SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SOUL_LEVEL_UP_CFG = protobuf.Descriptor();
-SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD = protobuf.FieldDescriptor();
-SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD = protobuf.FieldDescriptor();
-SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD = protobuf.FieldDescriptor();
-SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD = protobuf.FieldDescriptor();
-SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD = protobuf.FieldDescriptor();
-SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD = protobuf.FieldDescriptor();
-SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD = protobuf.FieldDescriptor();
-SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD = protobuf.FieldDescriptor();
-SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD = protobuf.FieldDescriptor();
-SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD = protobuf.FieldDescriptor();
-SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD = protobuf.FieldDescriptor();
-SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD = protobuf.FieldDescriptor();
-SOUL_LEVEL_UP_CFGS = protobuf.Descriptor();
-SOUL_LEVEL_UP_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SOUL_MAGIC_ROCK_CFG = protobuf.Descriptor();
-SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD = protobuf.FieldDescriptor();
-SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD = protobuf.FieldDescriptor();
-SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD = protobuf.FieldDescriptor();
-SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD = protobuf.FieldDescriptor();
-SOUL_MAGIC_ROCK_CFG_TYPE_FIELD = protobuf.FieldDescriptor();
-SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD = protobuf.FieldDescriptor();
-SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD = protobuf.FieldDescriptor();
-SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD = protobuf.FieldDescriptor();
-SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD = protobuf.FieldDescriptor();
-SOUL_MAGIC_ROCK_CFG_ICON_FIELD = protobuf.FieldDescriptor();
-SOUL_MAGIC_ROCK_CFGS = protobuf.Descriptor();
-SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-SOUL_REFINE_ROCK_CFG = protobuf.Descriptor();
-SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD = protobuf.FieldDescriptor();
-SOUL_REFINE_ROCK_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-SOUL_REFINE_ROCK_CFG_COUNT_FIELD = protobuf.FieldDescriptor();
-SOUL_REFINE_ROCK_CFG_ICON_FIELD = protobuf.FieldDescriptor();
-SOUL_REFINE_ROCK_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-SOUL_REFINE_ROCK_CFG_DESC_FIELD = protobuf.FieldDescriptor();
-SOUL_REFINE_ROCK_CFG_POSITION_FIELD = protobuf.FieldDescriptor();
-SOUL_REFINE_ROCK_CFGS = protobuf.Descriptor();
-SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-WIZARD_TASK_CFG = protobuf.Descriptor();
-WIZARD_TASK_CFG_LEVEL_ID_FIELD = protobuf.FieldDescriptor();
-WIZARD_TASK_CFG_LEVEL_MIN_FIELD = protobuf.FieldDescriptor();
-WIZARD_TASK_CFG_USE_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
-WIZARD_TASK_CFGS = protobuf.Descriptor();
-WIZARD_TASK_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-WIZARD_LEVEL_CFG = protobuf.Descriptor();
-WIZARD_LEVEL_CFG_ID_FIELD = protobuf.FieldDescriptor();
-WIZARD_LEVEL_CFG_LEGENDARY_FIELD = protobuf.FieldDescriptor();
-WIZARD_LEVEL_CFG_ICON_ID_FIELD = protobuf.FieldDescriptor();
-WIZARD_LEVEL_CFG_NAME_FIELD = protobuf.FieldDescriptor();
-WIZARD_LEVEL_CFG_REWARD_ID_FIELD = protobuf.FieldDescriptor();
-WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD = protobuf.FieldDescriptor();
-WIZARD_LEVEL_CFGS = protobuf.Descriptor();
-WIZARD_LEVEL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-WIZARD_BASE_CFG = protobuf.Descriptor();
-WIZARD_BASE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-WIZARD_BASE_CFG_DATA_FIELD = protobuf.FieldDescriptor();
-WIZARD_BASE_CFGS = protobuf.Descriptor();
-WIZARD_BASE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MAGIC_DIVINE_CFG = protobuf.Descriptor();
-MAGIC_DIVINE_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MAGIC_DIVINE_CFG_PROP_ID_FIELD = protobuf.FieldDescriptor();
-MAGIC_DIVINE_CFG_PROP_NUM_FIELD = protobuf.FieldDescriptor();
-MAGIC_DIVINE_CFG_WEEK_DAY_FIELD = protobuf.FieldDescriptor();
-MAGIC_DIVINE_CFG_TIMES_FIELD = protobuf.FieldDescriptor();
-MAGIC_DIVINE_CFG_SECTION_ID_FIELD = protobuf.FieldDescriptor();
-MAGIC_DIVINE_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-MAGIC_DIVINE_CFGS = protobuf.Descriptor();
-MAGIC_DIVINE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-DIVINE_SECTION_CFG = protobuf.Descriptor();
-DIVINE_SECTION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-DIVINE_SECTION_CFG_GROUP_FIELD = protobuf.FieldDescriptor();
-DIVINE_SECTION_CFG_GROUP_NAME_FIELD = protobuf.FieldDescriptor();
-DIVINE_SECTION_CFG_SECTION_FIELD = protobuf.FieldDescriptor();
-DIVINE_SECTION_CFG_SECTION_NAME_FIELD = protobuf.FieldDescriptor();
-DIVINE_SECTION_CFG_SECTION_DESC_FIELD = protobuf.FieldDescriptor();
-DIVINE_SECTION_CFG_MISSION_ID_FIELD = protobuf.FieldDescriptor();
-DIVINE_SECTION_CFG_PARTNER_ID_FIELD = protobuf.FieldDescriptor();
-DIVINE_SECTION_CFGS = protobuf.Descriptor();
-DIVINE_SECTION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-DIVINE_MISSION_CFG = protobuf.Descriptor();
-DIVINE_MISSION_CFG_ID_FIELD = protobuf.FieldDescriptor();
-DIVINE_MISSION_CFG_MISSION_ID_FIELD = protobuf.FieldDescriptor();
-DIVINE_MISSION_CFG_RANGE_FIELD = protobuf.FieldDescriptor();
-DIVINE_MISSION_CFG_QUALITY_FIELD = protobuf.FieldDescriptor();
-DIVINE_MISSION_CFG_FETTERS_NUM_FIELD = protobuf.FieldDescriptor();
-DIVINE_MISSION_CFG_QUALITYRANGE_FIELD = protobuf.FieldDescriptor();
-DIVINE_MISSION_CFGS = protobuf.Descriptor();
-DIVINE_MISSION_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_CFG = protobuf.Descriptor();
-MAGIC_SKILL_CFG_ID_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_CFG_LAYERID_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_CFG_MAX_LEVEL_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_CFG_MAGICID_ARR_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_CFG_SKILL_POSITION_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_CFG_SKILL_ICON_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_CFG_SKILL_NAME_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_CFGS = protobuf.Descriptor();
-MAGIC_SKILL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_UPLEVEL_CFG = protobuf.Descriptor();
-MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_UPLEVEL_CFGS = protobuf.Descriptor();
-MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_LAYER_CFG = protobuf.Descriptor();
-MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD = protobuf.FieldDescriptor();
-MAGIC_SKILL_LAYER_CFGS = protobuf.Descriptor();
-MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-MAGIC_POINT_REFINE_CFG = protobuf.Descriptor();
-MAGIC_POINT_REFINE_CFG_CONFID_FIELD = protobuf.FieldDescriptor();
-MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD = protobuf.FieldDescriptor();
-MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD = protobuf.FieldDescriptor();
-MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD = protobuf.FieldDescriptor();
-MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD = protobuf.FieldDescriptor();
-MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD = protobuf.FieldDescriptor();
-MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD = protobuf.FieldDescriptor();
-MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD = protobuf.FieldDescriptor();
-MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD = protobuf.FieldDescriptor();
-MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD = protobuf.FieldDescriptor();
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD = protobuf.FieldDescriptor();
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD = protobuf.FieldDescriptor();
-MAGIC_POINT_REFINE_CFGS = protobuf.Descriptor();
-MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD = protobuf.FieldDescriptor();
-
-ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.name = "activity_level"
-ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.full_name = ".ftcfg.arena_data_cfg.activity_level"
-ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.number = 1
-ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.index = 0
-ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.label = 2
-ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.has_default_value = false
-ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.default_value = 0
-ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.type = 5
-ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD.cpp_type = 1
-
-ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.name = "activity_cycle"
-ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.full_name = ".ftcfg.arena_data_cfg.activity_cycle"
-ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.number = 2
-ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.index = 1
-ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.label = 2
-ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.has_default_value = false
-ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.default_value = 0
-ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.type = 5
-ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD.cpp_type = 1
-
-ARENA_DATA_CFG_DURATION_FIELD.name = "duration"
-ARENA_DATA_CFG_DURATION_FIELD.full_name = ".ftcfg.arena_data_cfg.duration"
-ARENA_DATA_CFG_DURATION_FIELD.number = 3
-ARENA_DATA_CFG_DURATION_FIELD.index = 2
-ARENA_DATA_CFG_DURATION_FIELD.label = 2
-ARENA_DATA_CFG_DURATION_FIELD.has_default_value = false
-ARENA_DATA_CFG_DURATION_FIELD.default_value = 0
-ARENA_DATA_CFG_DURATION_FIELD.type = 5
-ARENA_DATA_CFG_DURATION_FIELD.cpp_type = 1
-
-ARENA_DATA_CFG_DAY_LIST_FIELD.name = "day_list"
-ARENA_DATA_CFG_DAY_LIST_FIELD.full_name = ".ftcfg.arena_data_cfg.day_list"
-ARENA_DATA_CFG_DAY_LIST_FIELD.number = 4
-ARENA_DATA_CFG_DAY_LIST_FIELD.index = 3
-ARENA_DATA_CFG_DAY_LIST_FIELD.label = 3
-ARENA_DATA_CFG_DAY_LIST_FIELD.has_default_value = false
-ARENA_DATA_CFG_DAY_LIST_FIELD.default_value = {}
-ARENA_DATA_CFG_DAY_LIST_FIELD.type = 2
-ARENA_DATA_CFG_DAY_LIST_FIELD.cpp_type = 6
-
-ARENA_DATA_CFG_MAP_ID_FIELD.name = "map_id"
-ARENA_DATA_CFG_MAP_ID_FIELD.full_name = ".ftcfg.arena_data_cfg.map_id"
-ARENA_DATA_CFG_MAP_ID_FIELD.number = 5
-ARENA_DATA_CFG_MAP_ID_FIELD.index = 4
-ARENA_DATA_CFG_MAP_ID_FIELD.label = 2
-ARENA_DATA_CFG_MAP_ID_FIELD.has_default_value = false
-ARENA_DATA_CFG_MAP_ID_FIELD.default_value = 0
-ARENA_DATA_CFG_MAP_ID_FIELD.type = 5
-ARENA_DATA_CFG_MAP_ID_FIELD.cpp_type = 1
-
-ARENA_DATA_CFG_SPAN_TIME_FIELD.name = "span_time"
-ARENA_DATA_CFG_SPAN_TIME_FIELD.full_name = ".ftcfg.arena_data_cfg.span_time"
-ARENA_DATA_CFG_SPAN_TIME_FIELD.number = 6
-ARENA_DATA_CFG_SPAN_TIME_FIELD.index = 5
-ARENA_DATA_CFG_SPAN_TIME_FIELD.label = 2
-ARENA_DATA_CFG_SPAN_TIME_FIELD.has_default_value = false
-ARENA_DATA_CFG_SPAN_TIME_FIELD.default_value = 0
-ARENA_DATA_CFG_SPAN_TIME_FIELD.type = 5
-ARENA_DATA_CFG_SPAN_TIME_FIELD.cpp_type = 1
-
-ARENA_DATA_CFG_MIN_RATIO_FIELD.name = "min_ratio"
-ARENA_DATA_CFG_MIN_RATIO_FIELD.full_name = ".ftcfg.arena_data_cfg.min_ratio"
-ARENA_DATA_CFG_MIN_RATIO_FIELD.number = 7
-ARENA_DATA_CFG_MIN_RATIO_FIELD.index = 6
-ARENA_DATA_CFG_MIN_RATIO_FIELD.label = 2
-ARENA_DATA_CFG_MIN_RATIO_FIELD.has_default_value = false
-ARENA_DATA_CFG_MIN_RATIO_FIELD.default_value = 0.0
-ARENA_DATA_CFG_MIN_RATIO_FIELD.type = 2
-ARENA_DATA_CFG_MIN_RATIO_FIELD.cpp_type = 6
-
-ARENA_DATA_CFG_RATIO_ADDITION_FIELD.name = "ratio_addition"
-ARENA_DATA_CFG_RATIO_ADDITION_FIELD.full_name = ".ftcfg.arena_data_cfg.ratio_addition"
-ARENA_DATA_CFG_RATIO_ADDITION_FIELD.number = 8
-ARENA_DATA_CFG_RATIO_ADDITION_FIELD.index = 7
-ARENA_DATA_CFG_RATIO_ADDITION_FIELD.label = 2
-ARENA_DATA_CFG_RATIO_ADDITION_FIELD.has_default_value = false
-ARENA_DATA_CFG_RATIO_ADDITION_FIELD.default_value = 0.0
-ARENA_DATA_CFG_RATIO_ADDITION_FIELD.type = 2
-ARENA_DATA_CFG_RATIO_ADDITION_FIELD.cpp_type = 6
-
-ARENA_DATA_CFG_MAX_RATIO_FIELD.name = "max_ratio"
-ARENA_DATA_CFG_MAX_RATIO_FIELD.full_name = ".ftcfg.arena_data_cfg.max_ratio"
-ARENA_DATA_CFG_MAX_RATIO_FIELD.number = 9
-ARENA_DATA_CFG_MAX_RATIO_FIELD.index = 8
-ARENA_DATA_CFG_MAX_RATIO_FIELD.label = 2
-ARENA_DATA_CFG_MAX_RATIO_FIELD.has_default_value = false
-ARENA_DATA_CFG_MAX_RATIO_FIELD.default_value = 0.0
-ARENA_DATA_CFG_MAX_RATIO_FIELD.type = 2
-ARENA_DATA_CFG_MAX_RATIO_FIELD.cpp_type = 6
-
-ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.name = "diff_teammate"
-ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.full_name = ".ftcfg.arena_data_cfg.diff_teammate"
-ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.number = 10
-ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.index = 9
-ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.label = 2
-ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.has_default_value = false
-ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.default_value = 0.0
-ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.type = 2
-ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD.cpp_type = 6
-
-ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.name = "diff_opponent"
-ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.full_name = ".ftcfg.arena_data_cfg.diff_opponent"
-ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.number = 11
-ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.index = 10
-ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.label = 2
-ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.has_default_value = false
-ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.default_value = 0.0
-ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.type = 2
-ARENA_DATA_CFG_DIFF_OPPONENT_FIELD.cpp_type = 6
-
-ARENA_DATA_CFG.name = "arena_data_cfg"
-ARENA_DATA_CFG.full_name = ".ftcfg.arena_data_cfg"
-ARENA_DATA_CFG.nested_types = {}
-ARENA_DATA_CFG.enum_types = {}
-ARENA_DATA_CFG.fields = {ARENA_DATA_CFG_ACTIVITY_LEVEL_FIELD, ARENA_DATA_CFG_ACTIVITY_CYCLE_FIELD, ARENA_DATA_CFG_DURATION_FIELD, ARENA_DATA_CFG_DAY_LIST_FIELD, ARENA_DATA_CFG_MAP_ID_FIELD, ARENA_DATA_CFG_SPAN_TIME_FIELD, ARENA_DATA_CFG_MIN_RATIO_FIELD, ARENA_DATA_CFG_RATIO_ADDITION_FIELD, ARENA_DATA_CFG_MAX_RATIO_FIELD, ARENA_DATA_CFG_DIFF_TEAMMATE_FIELD, ARENA_DATA_CFG_DIFF_OPPONENT_FIELD}
-ARENA_DATA_CFG.is_extendable = false
-ARENA_DATA_CFG.extensions = {}
-ARENA_DATA_CFGS_ITEMS_FIELD.name = "items"
-ARENA_DATA_CFGS_ITEMS_FIELD.full_name = ".ftcfg.arena_data_cfgs.items"
-ARENA_DATA_CFGS_ITEMS_FIELD.number = 1
-ARENA_DATA_CFGS_ITEMS_FIELD.index = 0
-ARENA_DATA_CFGS_ITEMS_FIELD.label = 3
-ARENA_DATA_CFGS_ITEMS_FIELD.has_default_value = false
-ARENA_DATA_CFGS_ITEMS_FIELD.default_value = {}
-ARENA_DATA_CFGS_ITEMS_FIELD.message_type = ARENA_DATA_CFG
-ARENA_DATA_CFGS_ITEMS_FIELD.type = 11
-ARENA_DATA_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ARENA_DATA_CFGS.name = "arena_data_cfgs"
-ARENA_DATA_CFGS.full_name = ".ftcfg.arena_data_cfgs"
-ARENA_DATA_CFGS.nested_types = {}
-ARENA_DATA_CFGS.enum_types = {}
-ARENA_DATA_CFGS.fields = {ARENA_DATA_CFGS_ITEMS_FIELD}
-ARENA_DATA_CFGS.is_extendable = false
-ARENA_DATA_CFGS.extensions = {}
-ARENA_REWARD_CFG_ID_FIELD.name = "id"
-ARENA_REWARD_CFG_ID_FIELD.full_name = ".ftcfg.arena_reward_cfg.id"
-ARENA_REWARD_CFG_ID_FIELD.number = 1
-ARENA_REWARD_CFG_ID_FIELD.index = 0
-ARENA_REWARD_CFG_ID_FIELD.label = 2
-ARENA_REWARD_CFG_ID_FIELD.has_default_value = false
-ARENA_REWARD_CFG_ID_FIELD.default_value = 0
-ARENA_REWARD_CFG_ID_FIELD.type = 5
-ARENA_REWARD_CFG_ID_FIELD.cpp_type = 1
-
-ARENA_REWARD_CFG_ITEM_ID_FIELD.name = "item_id"
-ARENA_REWARD_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.arena_reward_cfg.item_id"
-ARENA_REWARD_CFG_ITEM_ID_FIELD.number = 2
-ARENA_REWARD_CFG_ITEM_ID_FIELD.index = 1
-ARENA_REWARD_CFG_ITEM_ID_FIELD.label = 3
-ARENA_REWARD_CFG_ITEM_ID_FIELD.has_default_value = false
-ARENA_REWARD_CFG_ITEM_ID_FIELD.default_value = {}
-ARENA_REWARD_CFG_ITEM_ID_FIELD.type = 13
-ARENA_REWARD_CFG_ITEM_ID_FIELD.cpp_type = 3
-
-ARENA_REWARD_CFG_ITEM_COUNT_FIELD.name = "item_count"
-ARENA_REWARD_CFG_ITEM_COUNT_FIELD.full_name = ".ftcfg.arena_reward_cfg.item_count"
-ARENA_REWARD_CFG_ITEM_COUNT_FIELD.number = 3
-ARENA_REWARD_CFG_ITEM_COUNT_FIELD.index = 2
-ARENA_REWARD_CFG_ITEM_COUNT_FIELD.label = 3
-ARENA_REWARD_CFG_ITEM_COUNT_FIELD.has_default_value = false
-ARENA_REWARD_CFG_ITEM_COUNT_FIELD.default_value = {}
-ARENA_REWARD_CFG_ITEM_COUNT_FIELD.type = 5
-ARENA_REWARD_CFG_ITEM_COUNT_FIELD.cpp_type = 1
-
-ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.name = "attribute_type"
-ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.full_name = ".ftcfg.arena_reward_cfg.attribute_type"
-ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.number = 4
-ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.index = 3
-ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.label = 3
-ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.has_default_value = false
-ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.default_value = {}
-ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.type = 5
-ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD.cpp_type = 1
-
-ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.name = "attribute_count"
-ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.arena_reward_cfg.attribute_count"
-ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.number = 5
-ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.index = 4
-ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.label = 3
-ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.has_default_value = false
-ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.default_value = {}
-ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.type = 5
-ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD.cpp_type = 1
-
-ARENA_REWARD_CFG.name = "arena_reward_cfg"
-ARENA_REWARD_CFG.full_name = ".ftcfg.arena_reward_cfg"
-ARENA_REWARD_CFG.nested_types = {}
-ARENA_REWARD_CFG.enum_types = {}
-ARENA_REWARD_CFG.fields = {ARENA_REWARD_CFG_ID_FIELD, ARENA_REWARD_CFG_ITEM_ID_FIELD, ARENA_REWARD_CFG_ITEM_COUNT_FIELD, ARENA_REWARD_CFG_ATTRIBUTE_TYPE_FIELD, ARENA_REWARD_CFG_ATTRIBUTE_COUNT_FIELD}
-ARENA_REWARD_CFG.is_extendable = false
-ARENA_REWARD_CFG.extensions = {}
-ARENA_REWARD_CFGS_ITEMS_FIELD.name = "items"
-ARENA_REWARD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.arena_reward_cfgs.items"
-ARENA_REWARD_CFGS_ITEMS_FIELD.number = 1
-ARENA_REWARD_CFGS_ITEMS_FIELD.index = 0
-ARENA_REWARD_CFGS_ITEMS_FIELD.label = 3
-ARENA_REWARD_CFGS_ITEMS_FIELD.has_default_value = false
-ARENA_REWARD_CFGS_ITEMS_FIELD.default_value = {}
-ARENA_REWARD_CFGS_ITEMS_FIELD.message_type = ARENA_REWARD_CFG
-ARENA_REWARD_CFGS_ITEMS_FIELD.type = 11
-ARENA_REWARD_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ARENA_REWARD_CFGS.name = "arena_reward_cfgs"
-ARENA_REWARD_CFGS.full_name = ".ftcfg.arena_reward_cfgs"
-ARENA_REWARD_CFGS.nested_types = {}
-ARENA_REWARD_CFGS.enum_types = {}
-ARENA_REWARD_CFGS.fields = {ARENA_REWARD_CFGS_ITEMS_FIELD}
-ARENA_REWARD_CFGS.is_extendable = false
-ARENA_REWARD_CFGS.extensions = {}
-BOSS_SHOWINFO_CFG_ID_FIELD.name = "id"
-BOSS_SHOWINFO_CFG_ID_FIELD.full_name = ".ftcfg.boss_showinfo_cfg.id"
-BOSS_SHOWINFO_CFG_ID_FIELD.number = 1
-BOSS_SHOWINFO_CFG_ID_FIELD.index = 0
-BOSS_SHOWINFO_CFG_ID_FIELD.label = 2
-BOSS_SHOWINFO_CFG_ID_FIELD.has_default_value = false
-BOSS_SHOWINFO_CFG_ID_FIELD.default_value = 0
-BOSS_SHOWINFO_CFG_ID_FIELD.type = 5
-BOSS_SHOWINFO_CFG_ID_FIELD.cpp_type = 1
-
-BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.name = "show_equ"
-BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.full_name = ".ftcfg.boss_showinfo_cfg.show_equ"
-BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.number = 2
-BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.index = 1
-BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.label = 3
-BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.has_default_value = false
-BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.default_value = {}
-BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.type = 9
-BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD.cpp_type = 9
-
-BOSS_SHOWINFO_CFG.name = "boss_showinfo_cfg"
-BOSS_SHOWINFO_CFG.full_name = ".ftcfg.boss_showinfo_cfg"
-BOSS_SHOWINFO_CFG.nested_types = {}
-BOSS_SHOWINFO_CFG.enum_types = {}
-BOSS_SHOWINFO_CFG.fields = {BOSS_SHOWINFO_CFG_ID_FIELD, BOSS_SHOWINFO_CFG_SHOW_EQU_FIELD}
-BOSS_SHOWINFO_CFG.is_extendable = false
-BOSS_SHOWINFO_CFG.extensions = {}
-BOSS_SHOWINFO_CFGS_ITEMS_FIELD.name = "items"
-BOSS_SHOWINFO_CFGS_ITEMS_FIELD.full_name = ".ftcfg.boss_showinfo_cfgs.items"
-BOSS_SHOWINFO_CFGS_ITEMS_FIELD.number = 1
-BOSS_SHOWINFO_CFGS_ITEMS_FIELD.index = 0
-BOSS_SHOWINFO_CFGS_ITEMS_FIELD.label = 3
-BOSS_SHOWINFO_CFGS_ITEMS_FIELD.has_default_value = false
-BOSS_SHOWINFO_CFGS_ITEMS_FIELD.default_value = {}
-BOSS_SHOWINFO_CFGS_ITEMS_FIELD.message_type = BOSS_SHOWINFO_CFG
-BOSS_SHOWINFO_CFGS_ITEMS_FIELD.type = 11
-BOSS_SHOWINFO_CFGS_ITEMS_FIELD.cpp_type = 10
-
-BOSS_SHOWINFO_CFGS.name = "boss_showinfo_cfgs"
-BOSS_SHOWINFO_CFGS.full_name = ".ftcfg.boss_showinfo_cfgs"
-BOSS_SHOWINFO_CFGS.nested_types = {}
-BOSS_SHOWINFO_CFGS.enum_types = {}
-BOSS_SHOWINFO_CFGS.fields = {BOSS_SHOWINFO_CFGS_ITEMS_FIELD}
-BOSS_SHOWINFO_CFGS.is_extendable = false
-BOSS_SHOWINFO_CFGS.extensions = {}
-BOSS_SHOW_UI_CFG_ID_FIELD.name = "id"
-BOSS_SHOW_UI_CFG_ID_FIELD.full_name = ".ftcfg.boss_show_ui_cfg.id"
-BOSS_SHOW_UI_CFG_ID_FIELD.number = 1
-BOSS_SHOW_UI_CFG_ID_FIELD.index = 0
-BOSS_SHOW_UI_CFG_ID_FIELD.label = 2
-BOSS_SHOW_UI_CFG_ID_FIELD.has_default_value = false
-BOSS_SHOW_UI_CFG_ID_FIELD.default_value = 0
-BOSS_SHOW_UI_CFG_ID_FIELD.type = 5
-BOSS_SHOW_UI_CFG_ID_FIELD.cpp_type = 1
-
-BOSS_SHOW_UI_CFG_NAME_FIELD.name = "name"
-BOSS_SHOW_UI_CFG_NAME_FIELD.full_name = ".ftcfg.boss_show_ui_cfg.name"
-BOSS_SHOW_UI_CFG_NAME_FIELD.number = 2
-BOSS_SHOW_UI_CFG_NAME_FIELD.index = 1
-BOSS_SHOW_UI_CFG_NAME_FIELD.label = 2
-BOSS_SHOW_UI_CFG_NAME_FIELD.has_default_value = false
-BOSS_SHOW_UI_CFG_NAME_FIELD.default_value = 0
-BOSS_SHOW_UI_CFG_NAME_FIELD.type = 5
-BOSS_SHOW_UI_CFG_NAME_FIELD.cpp_type = 1
-
-BOSS_SHOW_UI_CFG_LEVEL_FIELD.name = "level"
-BOSS_SHOW_UI_CFG_LEVEL_FIELD.full_name = ".ftcfg.boss_show_ui_cfg.level"
-BOSS_SHOW_UI_CFG_LEVEL_FIELD.number = 3
-BOSS_SHOW_UI_CFG_LEVEL_FIELD.index = 2
-BOSS_SHOW_UI_CFG_LEVEL_FIELD.label = 2
-BOSS_SHOW_UI_CFG_LEVEL_FIELD.has_default_value = false
-BOSS_SHOW_UI_CFG_LEVEL_FIELD.default_value = 0
-BOSS_SHOW_UI_CFG_LEVEL_FIELD.type = 5
-BOSS_SHOW_UI_CFG_LEVEL_FIELD.cpp_type = 1
-
-BOSS_SHOW_UI_CFG_DESC_FIELD.name = "desc"
-BOSS_SHOW_UI_CFG_DESC_FIELD.full_name = ".ftcfg.boss_show_ui_cfg.desc"
-BOSS_SHOW_UI_CFG_DESC_FIELD.number = 4
-BOSS_SHOW_UI_CFG_DESC_FIELD.index = 3
-BOSS_SHOW_UI_CFG_DESC_FIELD.label = 2
-BOSS_SHOW_UI_CFG_DESC_FIELD.has_default_value = false
-BOSS_SHOW_UI_CFG_DESC_FIELD.default_value = 0
-BOSS_SHOW_UI_CFG_DESC_FIELD.type = 5
-BOSS_SHOW_UI_CFG_DESC_FIELD.cpp_type = 1
-
-BOSS_SHOW_UI_CFG_PAINT_FIELD.name = "paint"
-BOSS_SHOW_UI_CFG_PAINT_FIELD.full_name = ".ftcfg.boss_show_ui_cfg.paint"
-BOSS_SHOW_UI_CFG_PAINT_FIELD.number = 5
-BOSS_SHOW_UI_CFG_PAINT_FIELD.index = 4
-BOSS_SHOW_UI_CFG_PAINT_FIELD.label = 2
-BOSS_SHOW_UI_CFG_PAINT_FIELD.has_default_value = false
-BOSS_SHOW_UI_CFG_PAINT_FIELD.default_value = 0
-BOSS_SHOW_UI_CFG_PAINT_FIELD.type = 5
-BOSS_SHOW_UI_CFG_PAINT_FIELD.cpp_type = 1
-
-BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.name = "close_timer"
-BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.full_name = ".ftcfg.boss_show_ui_cfg.close_timer"
-BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.number = 6
-BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.index = 5
-BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.label = 2
-BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.has_default_value = false
-BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.default_value = 0
-BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.type = 5
-BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD.cpp_type = 1
-
-BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.name = "cam_motion"
-BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.full_name = ".ftcfg.boss_show_ui_cfg.cam_motion"
-BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.number = 7
-BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.index = 6
-BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.label = 2
-BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.has_default_value = false
-BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.default_value = 0
-BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.type = 5
-BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD.cpp_type = 1
-
-BOSS_SHOW_UI_CFG.name = "boss_show_ui_cfg"
-BOSS_SHOW_UI_CFG.full_name = ".ftcfg.boss_show_ui_cfg"
-BOSS_SHOW_UI_CFG.nested_types = {}
-BOSS_SHOW_UI_CFG.enum_types = {}
-BOSS_SHOW_UI_CFG.fields = {BOSS_SHOW_UI_CFG_ID_FIELD, BOSS_SHOW_UI_CFG_NAME_FIELD, BOSS_SHOW_UI_CFG_LEVEL_FIELD, BOSS_SHOW_UI_CFG_DESC_FIELD, BOSS_SHOW_UI_CFG_PAINT_FIELD, BOSS_SHOW_UI_CFG_CLOSE_TIMER_FIELD, BOSS_SHOW_UI_CFG_CAM_MOTION_FIELD}
-BOSS_SHOW_UI_CFG.is_extendable = false
-BOSS_SHOW_UI_CFG.extensions = {}
-BOSS_SHOW_UI_CFGS_ITEMS_FIELD.name = "items"
-BOSS_SHOW_UI_CFGS_ITEMS_FIELD.full_name = ".ftcfg.boss_show_ui_cfgs.items"
-BOSS_SHOW_UI_CFGS_ITEMS_FIELD.number = 1
-BOSS_SHOW_UI_CFGS_ITEMS_FIELD.index = 0
-BOSS_SHOW_UI_CFGS_ITEMS_FIELD.label = 3
-BOSS_SHOW_UI_CFGS_ITEMS_FIELD.has_default_value = false
-BOSS_SHOW_UI_CFGS_ITEMS_FIELD.default_value = {}
-BOSS_SHOW_UI_CFGS_ITEMS_FIELD.message_type = BOSS_SHOW_UI_CFG
-BOSS_SHOW_UI_CFGS_ITEMS_FIELD.type = 11
-BOSS_SHOW_UI_CFGS_ITEMS_FIELD.cpp_type = 10
-
-BOSS_SHOW_UI_CFGS.name = "boss_show_ui_cfgs"
-BOSS_SHOW_UI_CFGS.full_name = ".ftcfg.boss_show_ui_cfgs"
-BOSS_SHOW_UI_CFGS.nested_types = {}
-BOSS_SHOW_UI_CFGS.enum_types = {}
-BOSS_SHOW_UI_CFGS.fields = {BOSS_SHOW_UI_CFGS_ITEMS_FIELD}
-BOSS_SHOW_UI_CFGS.is_extendable = false
-BOSS_SHOW_UI_CFGS.extensions = {}
-BOSS_SHOW_CAM_CFG_ID_FIELD.name = "id"
-BOSS_SHOW_CAM_CFG_ID_FIELD.full_name = ".ftcfg.boss_show_cam_cfg.id"
-BOSS_SHOW_CAM_CFG_ID_FIELD.number = 1
-BOSS_SHOW_CAM_CFG_ID_FIELD.index = 0
-BOSS_SHOW_CAM_CFG_ID_FIELD.label = 2
-BOSS_SHOW_CAM_CFG_ID_FIELD.has_default_value = false
-BOSS_SHOW_CAM_CFG_ID_FIELD.default_value = 0
-BOSS_SHOW_CAM_CFG_ID_FIELD.type = 5
-BOSS_SHOW_CAM_CFG_ID_FIELD.cpp_type = 1
-
-BOSS_SHOW_CAM_CFG_POS_FIELD.name = "pos"
-BOSS_SHOW_CAM_CFG_POS_FIELD.full_name = ".ftcfg.boss_show_cam_cfg.pos"
-BOSS_SHOW_CAM_CFG_POS_FIELD.number = 2
-BOSS_SHOW_CAM_CFG_POS_FIELD.index = 1
-BOSS_SHOW_CAM_CFG_POS_FIELD.label = 3
-BOSS_SHOW_CAM_CFG_POS_FIELD.has_default_value = false
-BOSS_SHOW_CAM_CFG_POS_FIELD.default_value = {}
-BOSS_SHOW_CAM_CFG_POS_FIELD.type = 2
-BOSS_SHOW_CAM_CFG_POS_FIELD.cpp_type = 6
-
-BOSS_SHOW_CAM_CFG_DURATION_FIELD.name = "duration"
-BOSS_SHOW_CAM_CFG_DURATION_FIELD.full_name = ".ftcfg.boss_show_cam_cfg.duration"
-BOSS_SHOW_CAM_CFG_DURATION_FIELD.number = 3
-BOSS_SHOW_CAM_CFG_DURATION_FIELD.index = 2
-BOSS_SHOW_CAM_CFG_DURATION_FIELD.label = 2
-BOSS_SHOW_CAM_CFG_DURATION_FIELD.has_default_value = false
-BOSS_SHOW_CAM_CFG_DURATION_FIELD.default_value = 0.0
-BOSS_SHOW_CAM_CFG_DURATION_FIELD.type = 2
-BOSS_SHOW_CAM_CFG_DURATION_FIELD.cpp_type = 6
-
-BOSS_SHOW_CAM_CFG_ROLL_FIELD.name = "roll"
-BOSS_SHOW_CAM_CFG_ROLL_FIELD.full_name = ".ftcfg.boss_show_cam_cfg.roll"
-BOSS_SHOW_CAM_CFG_ROLL_FIELD.number = 4
-BOSS_SHOW_CAM_CFG_ROLL_FIELD.index = 3
-BOSS_SHOW_CAM_CFG_ROLL_FIELD.label = 2
-BOSS_SHOW_CAM_CFG_ROLL_FIELD.has_default_value = false
-BOSS_SHOW_CAM_CFG_ROLL_FIELD.default_value = 0.0
-BOSS_SHOW_CAM_CFG_ROLL_FIELD.type = 2
-BOSS_SHOW_CAM_CFG_ROLL_FIELD.cpp_type = 6
-
-BOSS_SHOW_CAM_CFG.name = "boss_show_cam_cfg"
-BOSS_SHOW_CAM_CFG.full_name = ".ftcfg.boss_show_cam_cfg"
-BOSS_SHOW_CAM_CFG.nested_types = {}
-BOSS_SHOW_CAM_CFG.enum_types = {}
-BOSS_SHOW_CAM_CFG.fields = {BOSS_SHOW_CAM_CFG_ID_FIELD, BOSS_SHOW_CAM_CFG_POS_FIELD, BOSS_SHOW_CAM_CFG_DURATION_FIELD, BOSS_SHOW_CAM_CFG_ROLL_FIELD}
-BOSS_SHOW_CAM_CFG.is_extendable = false
-BOSS_SHOW_CAM_CFG.extensions = {}
-BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.name = "items"
-BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.full_name = ".ftcfg.boss_show_cam_cfgs.items"
-BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.number = 1
-BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.index = 0
-BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.label = 3
-BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.has_default_value = false
-BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.default_value = {}
-BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.message_type = BOSS_SHOW_CAM_CFG
-BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.type = 11
-BOSS_SHOW_CAM_CFGS_ITEMS_FIELD.cpp_type = 10
-
-BOSS_SHOW_CAM_CFGS.name = "boss_show_cam_cfgs"
-BOSS_SHOW_CAM_CFGS.full_name = ".ftcfg.boss_show_cam_cfgs"
-BOSS_SHOW_CAM_CFGS.nested_types = {}
-BOSS_SHOW_CAM_CFGS.enum_types = {}
-BOSS_SHOW_CAM_CFGS.fields = {BOSS_SHOW_CAM_CFGS_ITEMS_FIELD}
-BOSS_SHOW_CAM_CFGS.is_extendable = false
-BOSS_SHOW_CAM_CFGS.extensions = {}
-BUFF_CFG_ID_FIELD.name = "id"
-BUFF_CFG_ID_FIELD.full_name = ".ftcfg.buff_cfg.id"
-BUFF_CFG_ID_FIELD.number = 1
-BUFF_CFG_ID_FIELD.index = 0
-BUFF_CFG_ID_FIELD.label = 2
-BUFF_CFG_ID_FIELD.has_default_value = false
-BUFF_CFG_ID_FIELD.default_value = 0
-BUFF_CFG_ID_FIELD.type = 5
-BUFF_CFG_ID_FIELD.cpp_type = 1
-
-BUFF_CFG_NAME_TIPS_FIELD.name = "name_tips"
-BUFF_CFG_NAME_TIPS_FIELD.full_name = ".ftcfg.buff_cfg.name_tips"
-BUFF_CFG_NAME_TIPS_FIELD.number = 2
-BUFF_CFG_NAME_TIPS_FIELD.index = 1
-BUFF_CFG_NAME_TIPS_FIELD.label = 2
-BUFF_CFG_NAME_TIPS_FIELD.has_default_value = false
-BUFF_CFG_NAME_TIPS_FIELD.default_value = ""
-BUFF_CFG_NAME_TIPS_FIELD.type = 9
-BUFF_CFG_NAME_TIPS_FIELD.cpp_type = 9
-
-BUFF_CFG_DESC_TIPS_FIELD.name = "desc_tips"
-BUFF_CFG_DESC_TIPS_FIELD.full_name = ".ftcfg.buff_cfg.desc_tips"
-BUFF_CFG_DESC_TIPS_FIELD.number = 3
-BUFF_CFG_DESC_TIPS_FIELD.index = 2
-BUFF_CFG_DESC_TIPS_FIELD.label = 2
-BUFF_CFG_DESC_TIPS_FIELD.has_default_value = false
-BUFF_CFG_DESC_TIPS_FIELD.default_value = ""
-BUFF_CFG_DESC_TIPS_FIELD.type = 9
-BUFF_CFG_DESC_TIPS_FIELD.cpp_type = 9
-
-BUFF_CFG_NAME_FIELD.name = "name"
-BUFF_CFG_NAME_FIELD.full_name = ".ftcfg.buff_cfg.name"
-BUFF_CFG_NAME_FIELD.number = 4
-BUFF_CFG_NAME_FIELD.index = 3
-BUFF_CFG_NAME_FIELD.label = 2
-BUFF_CFG_NAME_FIELD.has_default_value = false
-BUFF_CFG_NAME_FIELD.default_value = 0
-BUFF_CFG_NAME_FIELD.type = 5
-BUFF_CFG_NAME_FIELD.cpp_type = 1
-
-BUFF_CFG_DESC_FIELD.name = "desc"
-BUFF_CFG_DESC_FIELD.full_name = ".ftcfg.buff_cfg.desc"
-BUFF_CFG_DESC_FIELD.number = 5
-BUFF_CFG_DESC_FIELD.index = 4
-BUFF_CFG_DESC_FIELD.label = 2
-BUFF_CFG_DESC_FIELD.has_default_value = false
-BUFF_CFG_DESC_FIELD.default_value = 0
-BUFF_CFG_DESC_FIELD.type = 5
-BUFF_CFG_DESC_FIELD.cpp_type = 1
-
-BUFF_CFG_ICON_FIELD.name = "icon"
-BUFF_CFG_ICON_FIELD.full_name = ".ftcfg.buff_cfg.icon"
-BUFF_CFG_ICON_FIELD.number = 6
-BUFF_CFG_ICON_FIELD.index = 5
-BUFF_CFG_ICON_FIELD.label = 2
-BUFF_CFG_ICON_FIELD.has_default_value = false
-BUFF_CFG_ICON_FIELD.default_value = 0
-BUFF_CFG_ICON_FIELD.type = 5
-BUFF_CFG_ICON_FIELD.cpp_type = 1
-
-BUFF_CFG_VISUABLE_FIELD.name = "visuable"
-BUFF_CFG_VISUABLE_FIELD.full_name = ".ftcfg.buff_cfg.visuable"
-BUFF_CFG_VISUABLE_FIELD.number = 7
-BUFF_CFG_VISUABLE_FIELD.index = 6
-BUFF_CFG_VISUABLE_FIELD.label = 2
-BUFF_CFG_VISUABLE_FIELD.has_default_value = false
-BUFF_CFG_VISUABLE_FIELD.default_value = false
-BUFF_CFG_VISUABLE_FIELD.type = 8
-BUFF_CFG_VISUABLE_FIELD.cpp_type = 7
-
-BUFF_CFG_COUNTDOWN_TYPE_FIELD.name = "countdown_type"
-BUFF_CFG_COUNTDOWN_TYPE_FIELD.full_name = ".ftcfg.buff_cfg.countdown_type"
-BUFF_CFG_COUNTDOWN_TYPE_FIELD.number = 8
-BUFF_CFG_COUNTDOWN_TYPE_FIELD.index = 7
-BUFF_CFG_COUNTDOWN_TYPE_FIELD.label = 2
-BUFF_CFG_COUNTDOWN_TYPE_FIELD.has_default_value = false
-BUFF_CFG_COUNTDOWN_TYPE_FIELD.default_value = 0
-BUFF_CFG_COUNTDOWN_TYPE_FIELD.type = 5
-BUFF_CFG_COUNTDOWN_TYPE_FIELD.cpp_type = 1
-
-BUFF_CFG_BUFF_TYPE_FIELD.name = "buff_type"
-BUFF_CFG_BUFF_TYPE_FIELD.full_name = ".ftcfg.buff_cfg.buff_type"
-BUFF_CFG_BUFF_TYPE_FIELD.number = 9
-BUFF_CFG_BUFF_TYPE_FIELD.index = 8
-BUFF_CFG_BUFF_TYPE_FIELD.label = 2
-BUFF_CFG_BUFF_TYPE_FIELD.has_default_value = false
-BUFF_CFG_BUFF_TYPE_FIELD.default_value = 0
-BUFF_CFG_BUFF_TYPE_FIELD.type = 5
-BUFF_CFG_BUFF_TYPE_FIELD.cpp_type = 1
-
-BUFF_CFG_EXIST_TIME_FIELD.name = "exist_time"
-BUFF_CFG_EXIST_TIME_FIELD.full_name = ".ftcfg.buff_cfg.exist_time"
-BUFF_CFG_EXIST_TIME_FIELD.number = 10
-BUFF_CFG_EXIST_TIME_FIELD.index = 9
-BUFF_CFG_EXIST_TIME_FIELD.label = 2
-BUFF_CFG_EXIST_TIME_FIELD.has_default_value = false
-BUFF_CFG_EXIST_TIME_FIELD.default_value = 0
-BUFF_CFG_EXIST_TIME_FIELD.type = 5
-BUFF_CFG_EXIST_TIME_FIELD.cpp_type = 1
-
-BUFF_CFG_ATK_LV_FIELD.name = "atk_lv"
-BUFF_CFG_ATK_LV_FIELD.full_name = ".ftcfg.buff_cfg.atk_lv"
-BUFF_CFG_ATK_LV_FIELD.number = 11
-BUFF_CFG_ATK_LV_FIELD.index = 10
-BUFF_CFG_ATK_LV_FIELD.label = 2
-BUFF_CFG_ATK_LV_FIELD.has_default_value = false
-BUFF_CFG_ATK_LV_FIELD.default_value = 0
-BUFF_CFG_ATK_LV_FIELD.type = 5
-BUFF_CFG_ATK_LV_FIELD.cpp_type = 1
-
-BUFF_CFG_AM_BEATEN_FIELD.name = "am_beaten"
-BUFF_CFG_AM_BEATEN_FIELD.full_name = ".ftcfg.buff_cfg.am_beaten"
-BUFF_CFG_AM_BEATEN_FIELD.number = 12
-BUFF_CFG_AM_BEATEN_FIELD.index = 11
-BUFF_CFG_AM_BEATEN_FIELD.label = 2
-BUFF_CFG_AM_BEATEN_FIELD.has_default_value = false
-BUFF_CFG_AM_BEATEN_FIELD.default_value = ""
-BUFF_CFG_AM_BEATEN_FIELD.type = 9
-BUFF_CFG_AM_BEATEN_FIELD.cpp_type = 9
-
-BUFF_CFG_AM_BEATEN_EFF_FIELD.name = "am_beaten_eff"
-BUFF_CFG_AM_BEATEN_EFF_FIELD.full_name = ".ftcfg.buff_cfg.am_beaten_eff"
-BUFF_CFG_AM_BEATEN_EFF_FIELD.number = 13
-BUFF_CFG_AM_BEATEN_EFF_FIELD.index = 12
-BUFF_CFG_AM_BEATEN_EFF_FIELD.label = 2
-BUFF_CFG_AM_BEATEN_EFF_FIELD.has_default_value = false
-BUFF_CFG_AM_BEATEN_EFF_FIELD.default_value = ""
-BUFF_CFG_AM_BEATEN_EFF_FIELD.type = 9
-BUFF_CFG_AM_BEATEN_EFF_FIELD.cpp_type = 9
-
-BUFF_CFG_BEATEN_TIME_FIELD.name = "beaten_time"
-BUFF_CFG_BEATEN_TIME_FIELD.full_name = ".ftcfg.buff_cfg.beaten_time"
-BUFF_CFG_BEATEN_TIME_FIELD.number = 14
-BUFF_CFG_BEATEN_TIME_FIELD.index = 13
-BUFF_CFG_BEATEN_TIME_FIELD.label = 2
-BUFF_CFG_BEATEN_TIME_FIELD.has_default_value = false
-BUFF_CFG_BEATEN_TIME_FIELD.default_value = 0
-BUFF_CFG_BEATEN_TIME_FIELD.type = 5
-BUFF_CFG_BEATEN_TIME_FIELD.cpp_type = 1
-
-BUFF_CFG_BEAT_BACK_TYPE_FIELD.name = "beat_back_type"
-BUFF_CFG_BEAT_BACK_TYPE_FIELD.full_name = ".ftcfg.buff_cfg.beat_back_type"
-BUFF_CFG_BEAT_BACK_TYPE_FIELD.number = 15
-BUFF_CFG_BEAT_BACK_TYPE_FIELD.index = 14
-BUFF_CFG_BEAT_BACK_TYPE_FIELD.label = 2
-BUFF_CFG_BEAT_BACK_TYPE_FIELD.has_default_value = false
-BUFF_CFG_BEAT_BACK_TYPE_FIELD.default_value = 0
-BUFF_CFG_BEAT_BACK_TYPE_FIELD.type = 5
-BUFF_CFG_BEAT_BACK_TYPE_FIELD.cpp_type = 1
-
-BUFF_CFG_BEAT_DIS_FIELD.name = "beat_dis"
-BUFF_CFG_BEAT_DIS_FIELD.full_name = ".ftcfg.buff_cfg.beat_dis"
-BUFF_CFG_BEAT_DIS_FIELD.number = 16
-BUFF_CFG_BEAT_DIS_FIELD.index = 15
-BUFF_CFG_BEAT_DIS_FIELD.label = 2
-BUFF_CFG_BEAT_DIS_FIELD.has_default_value = false
-BUFF_CFG_BEAT_DIS_FIELD.default_value = 0.0
-BUFF_CFG_BEAT_DIS_FIELD.type = 2
-BUFF_CFG_BEAT_DIS_FIELD.cpp_type = 6
-
-BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.name = "beat_back_move_time"
-BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.full_name = ".ftcfg.buff_cfg.beat_back_move_time"
-BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.number = 17
-BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.index = 16
-BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.label = 2
-BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.has_default_value = false
-BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.default_value = 0
-BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.type = 5
-BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD.cpp_type = 1
-
-BUFF_CFG_AM_DEAD_FIELD.name = "am_dead"
-BUFF_CFG_AM_DEAD_FIELD.full_name = ".ftcfg.buff_cfg.am_dead"
-BUFF_CFG_AM_DEAD_FIELD.number = 18
-BUFF_CFG_AM_DEAD_FIELD.index = 17
-BUFF_CFG_AM_DEAD_FIELD.label = 2
-BUFF_CFG_AM_DEAD_FIELD.has_default_value = false
-BUFF_CFG_AM_DEAD_FIELD.default_value = 0
-BUFF_CFG_AM_DEAD_FIELD.type = 5
-BUFF_CFG_AM_DEAD_FIELD.cpp_type = 1
-
-BUFF_CFG_DEAD_BACK_TYPE_FIELD.name = "dead_back_type"
-BUFF_CFG_DEAD_BACK_TYPE_FIELD.full_name = ".ftcfg.buff_cfg.dead_back_type"
-BUFF_CFG_DEAD_BACK_TYPE_FIELD.number = 19
-BUFF_CFG_DEAD_BACK_TYPE_FIELD.index = 18
-BUFF_CFG_DEAD_BACK_TYPE_FIELD.label = 2
-BUFF_CFG_DEAD_BACK_TYPE_FIELD.has_default_value = false
-BUFF_CFG_DEAD_BACK_TYPE_FIELD.default_value = 0
-BUFF_CFG_DEAD_BACK_TYPE_FIELD.type = 5
-BUFF_CFG_DEAD_BACK_TYPE_FIELD.cpp_type = 1
-
-BUFF_CFG_DEAD_DIS_FIELD.name = "dead_dis"
-BUFF_CFG_DEAD_DIS_FIELD.full_name = ".ftcfg.buff_cfg.dead_dis"
-BUFF_CFG_DEAD_DIS_FIELD.number = 20
-BUFF_CFG_DEAD_DIS_FIELD.index = 19
-BUFF_CFG_DEAD_DIS_FIELD.label = 2
-BUFF_CFG_DEAD_DIS_FIELD.has_default_value = false
-BUFF_CFG_DEAD_DIS_FIELD.default_value = 0.0
-BUFF_CFG_DEAD_DIS_FIELD.type = 2
-BUFF_CFG_DEAD_DIS_FIELD.cpp_type = 6
-
-BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.name = "dead_back_move_time"
-BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.full_name = ".ftcfg.buff_cfg.dead_back_move_time"
-BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.number = 21
-BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.index = 20
-BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.label = 2
-BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.has_default_value = false
-BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.default_value = 0
-BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.type = 5
-BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD.cpp_type = 1
-
-BUFF_CFG_CRIT_EFFECT_FIELD.name = "crit_effect"
-BUFF_CFG_CRIT_EFFECT_FIELD.full_name = ".ftcfg.buff_cfg.crit_effect"
-BUFF_CFG_CRIT_EFFECT_FIELD.number = 22
-BUFF_CFG_CRIT_EFFECT_FIELD.index = 21
-BUFF_CFG_CRIT_EFFECT_FIELD.label = 2
-BUFF_CFG_CRIT_EFFECT_FIELD.has_default_value = false
-BUFF_CFG_CRIT_EFFECT_FIELD.default_value = 0
-BUFF_CFG_CRIT_EFFECT_FIELD.type = 5
-BUFF_CFG_CRIT_EFFECT_FIELD.cpp_type = 1
-
-BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.name = "dead_strike_effect"
-BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.full_name = ".ftcfg.buff_cfg.dead_strike_effect"
-BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.number = 23
-BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.index = 22
-BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.label = 2
-BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.has_default_value = false
-BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.default_value = 0
-BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.type = 5
-BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD.cpp_type = 1
-
-BUFF_CFG_BUFF_WORD_FIELD.name = "buff_word"
-BUFF_CFG_BUFF_WORD_FIELD.full_name = ".ftcfg.buff_cfg.buff_word"
-BUFF_CFG_BUFF_WORD_FIELD.number = 24
-BUFF_CFG_BUFF_WORD_FIELD.index = 23
-BUFF_CFG_BUFF_WORD_FIELD.label = 2
-BUFF_CFG_BUFF_WORD_FIELD.has_default_value = false
-BUFF_CFG_BUFF_WORD_FIELD.default_value = 0
-BUFF_CFG_BUFF_WORD_FIELD.type = 5
-BUFF_CFG_BUFF_WORD_FIELD.cpp_type = 1
-
-BUFF_CFG_BUFF_IDLE_FIELD.name = "buff_idle"
-BUFF_CFG_BUFF_IDLE_FIELD.full_name = ".ftcfg.buff_cfg.buff_idle"
-BUFF_CFG_BUFF_IDLE_FIELD.number = 25
-BUFF_CFG_BUFF_IDLE_FIELD.index = 24
-BUFF_CFG_BUFF_IDLE_FIELD.label = 2
-BUFF_CFG_BUFF_IDLE_FIELD.has_default_value = false
-BUFF_CFG_BUFF_IDLE_FIELD.default_value = ""
-BUFF_CFG_BUFF_IDLE_FIELD.type = 9
-BUFF_CFG_BUFF_IDLE_FIELD.cpp_type = 9
-
-BUFF_CFG_BUFF_RUN_FIELD.name = "buff_run"
-BUFF_CFG_BUFF_RUN_FIELD.full_name = ".ftcfg.buff_cfg.buff_run"
-BUFF_CFG_BUFF_RUN_FIELD.number = 26
-BUFF_CFG_BUFF_RUN_FIELD.index = 25
-BUFF_CFG_BUFF_RUN_FIELD.label = 2
-BUFF_CFG_BUFF_RUN_FIELD.has_default_value = false
-BUFF_CFG_BUFF_RUN_FIELD.default_value = ""
-BUFF_CFG_BUFF_RUN_FIELD.type = 9
-BUFF_CFG_BUFF_RUN_FIELD.cpp_type = 9
-
-BUFF_CFG_BUFF_EFFECT_FIELD.name = "buff_effect"
-BUFF_CFG_BUFF_EFFECT_FIELD.full_name = ".ftcfg.buff_cfg.buff_effect"
-BUFF_CFG_BUFF_EFFECT_FIELD.number = 27
-BUFF_CFG_BUFF_EFFECT_FIELD.index = 26
-BUFF_CFG_BUFF_EFFECT_FIELD.label = 2
-BUFF_CFG_BUFF_EFFECT_FIELD.has_default_value = false
-BUFF_CFG_BUFF_EFFECT_FIELD.default_value = ""
-BUFF_CFG_BUFF_EFFECT_FIELD.type = 9
-BUFF_CFG_BUFF_EFFECT_FIELD.cpp_type = 9
-
-BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.name = "buff_trigger_effect"
-BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.full_name = ".ftcfg.buff_cfg.buff_trigger_effect"
-BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.number = 28
-BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.index = 27
-BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.label = 2
-BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.has_default_value = false
-BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.default_value = ""
-BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.type = 9
-BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD.cpp_type = 9
-
-BUFF_CFG.name = "buff_cfg"
-BUFF_CFG.full_name = ".ftcfg.buff_cfg"
-BUFF_CFG.nested_types = {}
-BUFF_CFG.enum_types = {}
-BUFF_CFG.fields = {BUFF_CFG_ID_FIELD, BUFF_CFG_NAME_TIPS_FIELD, BUFF_CFG_DESC_TIPS_FIELD, BUFF_CFG_NAME_FIELD, BUFF_CFG_DESC_FIELD, BUFF_CFG_ICON_FIELD, BUFF_CFG_VISUABLE_FIELD, BUFF_CFG_COUNTDOWN_TYPE_FIELD, BUFF_CFG_BUFF_TYPE_FIELD, BUFF_CFG_EXIST_TIME_FIELD, BUFF_CFG_ATK_LV_FIELD, BUFF_CFG_AM_BEATEN_FIELD, BUFF_CFG_AM_BEATEN_EFF_FIELD, BUFF_CFG_BEATEN_TIME_FIELD, BUFF_CFG_BEAT_BACK_TYPE_FIELD, BUFF_CFG_BEAT_DIS_FIELD, BUFF_CFG_BEAT_BACK_MOVE_TIME_FIELD, BUFF_CFG_AM_DEAD_FIELD, BUFF_CFG_DEAD_BACK_TYPE_FIELD, BUFF_CFG_DEAD_DIS_FIELD, BUFF_CFG_DEAD_BACK_MOVE_TIME_FIELD, BUFF_CFG_CRIT_EFFECT_FIELD, BUFF_CFG_DEAD_STRIKE_EFFECT_FIELD, BUFF_CFG_BUFF_WORD_FIELD, BUFF_CFG_BUFF_IDLE_FIELD, BUFF_CFG_BUFF_RUN_FIELD, BUFF_CFG_BUFF_EFFECT_FIELD, BUFF_CFG_BUFF_TRIGGER_EFFECT_FIELD}
-BUFF_CFG.is_extendable = false
-BUFF_CFG.extensions = {}
-BUFF_CFGS_ITEMS_FIELD.name = "items"
-BUFF_CFGS_ITEMS_FIELD.full_name = ".ftcfg.buff_cfgs.items"
-BUFF_CFGS_ITEMS_FIELD.number = 1
-BUFF_CFGS_ITEMS_FIELD.index = 0
-BUFF_CFGS_ITEMS_FIELD.label = 3
-BUFF_CFGS_ITEMS_FIELD.has_default_value = false
-BUFF_CFGS_ITEMS_FIELD.default_value = {}
-BUFF_CFGS_ITEMS_FIELD.message_type = BUFF_CFG
-BUFF_CFGS_ITEMS_FIELD.type = 11
-BUFF_CFGS_ITEMS_FIELD.cpp_type = 10
-
-BUFF_CFGS.name = "buff_cfgs"
-BUFF_CFGS.full_name = ".ftcfg.buff_cfgs"
-BUFF_CFGS.nested_types = {}
-BUFF_CFGS.enum_types = {}
-BUFF_CFGS.fields = {BUFF_CFGS_ITEMS_FIELD}
-BUFF_CFGS.is_extendable = false
-BUFF_CFGS.extensions = {}
-BUFF_EFFECT_CFG_ID_FIELD.name = "id"
-BUFF_EFFECT_CFG_ID_FIELD.full_name = ".ftcfg.buff_effect_cfg.id"
-BUFF_EFFECT_CFG_ID_FIELD.number = 1
-BUFF_EFFECT_CFG_ID_FIELD.index = 0
-BUFF_EFFECT_CFG_ID_FIELD.label = 2
-BUFF_EFFECT_CFG_ID_FIELD.has_default_value = false
-BUFF_EFFECT_CFG_ID_FIELD.default_value = 0
-BUFF_EFFECT_CFG_ID_FIELD.type = 5
-BUFF_EFFECT_CFG_ID_FIELD.cpp_type = 1
-
-BUFF_EFFECT_CFG_FORMULA_ID_FIELD.name = "formula_id"
-BUFF_EFFECT_CFG_FORMULA_ID_FIELD.full_name = ".ftcfg.buff_effect_cfg.formula_id"
-BUFF_EFFECT_CFG_FORMULA_ID_FIELD.number = 2
-BUFF_EFFECT_CFG_FORMULA_ID_FIELD.index = 1
-BUFF_EFFECT_CFG_FORMULA_ID_FIELD.label = 2
-BUFF_EFFECT_CFG_FORMULA_ID_FIELD.has_default_value = false
-BUFF_EFFECT_CFG_FORMULA_ID_FIELD.default_value = nil
-BUFF_EFFECT_CFG_FORMULA_ID_FIELD.enum_type = config_predefine_pb.EEFFECTFORMULATYPE
-BUFF_EFFECT_CFG_FORMULA_ID_FIELD.type = 14
-BUFF_EFFECT_CFG_FORMULA_ID_FIELD.cpp_type = 8
-
-BUFF_EFFECT_CFG.name = "buff_effect_cfg"
-BUFF_EFFECT_CFG.full_name = ".ftcfg.buff_effect_cfg"
-BUFF_EFFECT_CFG.nested_types = {}
-BUFF_EFFECT_CFG.enum_types = {}
-BUFF_EFFECT_CFG.fields = {BUFF_EFFECT_CFG_ID_FIELD, BUFF_EFFECT_CFG_FORMULA_ID_FIELD}
-BUFF_EFFECT_CFG.is_extendable = false
-BUFF_EFFECT_CFG.extensions = {}
-BUFF_EFFECT_CFGS_ITEMS_FIELD.name = "items"
-BUFF_EFFECT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.buff_effect_cfgs.items"
-BUFF_EFFECT_CFGS_ITEMS_FIELD.number = 1
-BUFF_EFFECT_CFGS_ITEMS_FIELD.index = 0
-BUFF_EFFECT_CFGS_ITEMS_FIELD.label = 3
-BUFF_EFFECT_CFGS_ITEMS_FIELD.has_default_value = false
-BUFF_EFFECT_CFGS_ITEMS_FIELD.default_value = {}
-BUFF_EFFECT_CFGS_ITEMS_FIELD.message_type = BUFF_EFFECT_CFG
-BUFF_EFFECT_CFGS_ITEMS_FIELD.type = 11
-BUFF_EFFECT_CFGS_ITEMS_FIELD.cpp_type = 10
-
-BUFF_EFFECT_CFGS.name = "buff_effect_cfgs"
-BUFF_EFFECT_CFGS.full_name = ".ftcfg.buff_effect_cfgs"
-BUFF_EFFECT_CFGS.nested_types = {}
-BUFF_EFFECT_CFGS.enum_types = {}
-BUFF_EFFECT_CFGS.fields = {BUFF_EFFECT_CFGS_ITEMS_FIELD}
-BUFF_EFFECT_CFGS.is_extendable = false
-BUFF_EFFECT_CFGS.extensions = {}
-CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.name = "prof_type"
-CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.full_name = ".ftcfg.char_default_cfg.prof_type"
-CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.number = 1
-CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.index = 0
-CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.label = 2
-CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.default_value = nil
-CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.enum_type = config_predefine_pb.EPROFTYPE
-CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.type = 14
-CHAR_DEFAULT_CFG_PROF_TYPE_FIELD.cpp_type = 8
-
-CHAR_DEFAULT_CFG_GENDER_FIELD.name = "gender"
-CHAR_DEFAULT_CFG_GENDER_FIELD.full_name = ".ftcfg.char_default_cfg.gender"
-CHAR_DEFAULT_CFG_GENDER_FIELD.number = 2
-CHAR_DEFAULT_CFG_GENDER_FIELD.index = 1
-CHAR_DEFAULT_CFG_GENDER_FIELD.label = 2
-CHAR_DEFAULT_CFG_GENDER_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_GENDER_FIELD.default_value = nil
-CHAR_DEFAULT_CFG_GENDER_FIELD.enum_type = config_predefine_pb.EGENDERTYPE
-CHAR_DEFAULT_CFG_GENDER_FIELD.type = 14
-CHAR_DEFAULT_CFG_GENDER_FIELD.cpp_type = 8
-
-CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.name = "show_index"
-CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.full_name = ".ftcfg.char_default_cfg.show_index"
-CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.number = 3
-CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.index = 2
-CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.label = 2
-CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.default_value = 0
-CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.type = 5
-CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD.cpp_type = 1
-
-CHAR_DEFAULT_CFG_PROF_ICON_FIELD.name = "prof_icon"
-CHAR_DEFAULT_CFG_PROF_ICON_FIELD.full_name = ".ftcfg.char_default_cfg.prof_icon"
-CHAR_DEFAULT_CFG_PROF_ICON_FIELD.number = 4
-CHAR_DEFAULT_CFG_PROF_ICON_FIELD.index = 3
-CHAR_DEFAULT_CFG_PROF_ICON_FIELD.label = 2
-CHAR_DEFAULT_CFG_PROF_ICON_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_PROF_ICON_FIELD.default_value = ""
-CHAR_DEFAULT_CFG_PROF_ICON_FIELD.type = 9
-CHAR_DEFAULT_CFG_PROF_ICON_FIELD.cpp_type = 9
-
-CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.name = "model_path"
-CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.full_name = ".ftcfg.char_default_cfg.model_path"
-CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.number = 5
-CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.index = 4
-CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.label = 2
-CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.default_value = 0
-CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.type = 5
-CHAR_DEFAULT_CFG_MODEL_PATH_FIELD.cpp_type = 1
-
-CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.name = "profname_icon"
-CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.full_name = ".ftcfg.char_default_cfg.profname_icon"
-CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.number = 6
-CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.index = 5
-CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.label = 2
-CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.default_value = ""
-CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.type = 9
-CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD.cpp_type = 9
-
-CHAR_DEFAULT_CFG_PROP_STARS_FIELD.name = "prop_stars"
-CHAR_DEFAULT_CFG_PROP_STARS_FIELD.full_name = ".ftcfg.char_default_cfg.prop_stars"
-CHAR_DEFAULT_CFG_PROP_STARS_FIELD.number = 7
-CHAR_DEFAULT_CFG_PROP_STARS_FIELD.index = 6
-CHAR_DEFAULT_CFG_PROP_STARS_FIELD.label = 3
-CHAR_DEFAULT_CFG_PROP_STARS_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_PROP_STARS_FIELD.default_value = {}
-CHAR_DEFAULT_CFG_PROP_STARS_FIELD.type = 5
-CHAR_DEFAULT_CFG_PROP_STARS_FIELD.cpp_type = 1
-
-CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.name = "prof_head"
-CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.full_name = ".ftcfg.char_default_cfg.prof_head"
-CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.number = 8
-CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.index = 7
-CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.label = 2
-CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.default_value = ""
-CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.type = 9
-CHAR_DEFAULT_CFG_PROF_HEAD_FIELD.cpp_type = 9
-
-CHAR_DEFAULT_CFG_POS_DES_FIELD.name = "pos_des"
-CHAR_DEFAULT_CFG_POS_DES_FIELD.full_name = ".ftcfg.char_default_cfg.pos_des"
-CHAR_DEFAULT_CFG_POS_DES_FIELD.number = 9
-CHAR_DEFAULT_CFG_POS_DES_FIELD.index = 8
-CHAR_DEFAULT_CFG_POS_DES_FIELD.label = 2
-CHAR_DEFAULT_CFG_POS_DES_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_POS_DES_FIELD.default_value = 0
-CHAR_DEFAULT_CFG_POS_DES_FIELD.type = 5
-CHAR_DEFAULT_CFG_POS_DES_FIELD.cpp_type = 1
-
-CHAR_DEFAULT_CFG_PROF_NAME_FIELD.name = "prof_name"
-CHAR_DEFAULT_CFG_PROF_NAME_FIELD.full_name = ".ftcfg.char_default_cfg.prof_name"
-CHAR_DEFAULT_CFG_PROF_NAME_FIELD.number = 10
-CHAR_DEFAULT_CFG_PROF_NAME_FIELD.index = 9
-CHAR_DEFAULT_CFG_PROF_NAME_FIELD.label = 2
-CHAR_DEFAULT_CFG_PROF_NAME_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_PROF_NAME_FIELD.default_value = 0
-CHAR_DEFAULT_CFG_PROF_NAME_FIELD.type = 5
-CHAR_DEFAULT_CFG_PROF_NAME_FIELD.cpp_type = 1
-
-CHAR_DEFAULT_CFG_PROF_RES_FIELD.name = "prof_res"
-CHAR_DEFAULT_CFG_PROF_RES_FIELD.full_name = ".ftcfg.char_default_cfg.prof_res"
-CHAR_DEFAULT_CFG_PROF_RES_FIELD.number = 11
-CHAR_DEFAULT_CFG_PROF_RES_FIELD.index = 10
-CHAR_DEFAULT_CFG_PROF_RES_FIELD.label = 2
-CHAR_DEFAULT_CFG_PROF_RES_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_PROF_RES_FIELD.default_value = 0
-CHAR_DEFAULT_CFG_PROF_RES_FIELD.type = 5
-CHAR_DEFAULT_CFG_PROF_RES_FIELD.cpp_type = 1
-
-CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.name = "prof_anim1"
-CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.full_name = ".ftcfg.char_default_cfg.prof_anim1"
-CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.number = 12
-CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.index = 11
-CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.label = 2
-CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.default_value = ""
-CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.type = 9
-CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD.cpp_type = 9
-
-CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.name = "prof_anim2"
-CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.full_name = ".ftcfg.char_default_cfg.prof_anim2"
-CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.number = 13
-CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.index = 12
-CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.label = 2
-CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.default_value = ""
-CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.type = 9
-CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD.cpp_type = 9
-
-CHAR_DEFAULT_CFG_SKILL_RES_FIELD.name = "skill_res"
-CHAR_DEFAULT_CFG_SKILL_RES_FIELD.full_name = ".ftcfg.char_default_cfg.skill_res"
-CHAR_DEFAULT_CFG_SKILL_RES_FIELD.number = 14
-CHAR_DEFAULT_CFG_SKILL_RES_FIELD.index = 13
-CHAR_DEFAULT_CFG_SKILL_RES_FIELD.label = 2
-CHAR_DEFAULT_CFG_SKILL_RES_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_SKILL_RES_FIELD.default_value = 0
-CHAR_DEFAULT_CFG_SKILL_RES_FIELD.type = 5
-CHAR_DEFAULT_CFG_SKILL_RES_FIELD.cpp_type = 1
-
-CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.name = "random_cfg"
-CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.full_name = ".ftcfg.char_default_cfg.random_cfg"
-CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.number = 15
-CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.index = 14
-CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.label = 2
-CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.default_value = ""
-CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.type = 9
-CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD.cpp_type = 9
-
-CHAR_DEFAULT_CFG_IS_OPEN_FIELD.name = "is_open"
-CHAR_DEFAULT_CFG_IS_OPEN_FIELD.full_name = ".ftcfg.char_default_cfg.is_open"
-CHAR_DEFAULT_CFG_IS_OPEN_FIELD.number = 16
-CHAR_DEFAULT_CFG_IS_OPEN_FIELD.index = 15
-CHAR_DEFAULT_CFG_IS_OPEN_FIELD.label = 2
-CHAR_DEFAULT_CFG_IS_OPEN_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_IS_OPEN_FIELD.default_value = false
-CHAR_DEFAULT_CFG_IS_OPEN_FIELD.type = 8
-CHAR_DEFAULT_CFG_IS_OPEN_FIELD.cpp_type = 7
-
-CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.name = "default_parts"
-CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.full_name = ".ftcfg.char_default_cfg.default_parts"
-CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.number = 17
-CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.index = 16
-CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.label = 3
-CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.default_value = {}
-CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.type = 5
-CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD.cpp_type = 1
-
-CHAR_DEFAULT_CFG_MP_TYPE_FIELD.name = "mp_type"
-CHAR_DEFAULT_CFG_MP_TYPE_FIELD.full_name = ".ftcfg.char_default_cfg.mp_type"
-CHAR_DEFAULT_CFG_MP_TYPE_FIELD.number = 18
-CHAR_DEFAULT_CFG_MP_TYPE_FIELD.index = 17
-CHAR_DEFAULT_CFG_MP_TYPE_FIELD.label = 2
-CHAR_DEFAULT_CFG_MP_TYPE_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_MP_TYPE_FIELD.default_value = 0
-CHAR_DEFAULT_CFG_MP_TYPE_FIELD.type = 5
-CHAR_DEFAULT_CFG_MP_TYPE_FIELD.cpp_type = 1
-
-CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.name = "is_minister"
-CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.full_name = ".ftcfg.char_default_cfg.is_minister"
-CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.number = 19
-CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.index = 18
-CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.label = 2
-CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.has_default_value = false
-CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.default_value = false
-CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.type = 8
-CHAR_DEFAULT_CFG_IS_MINISTER_FIELD.cpp_type = 7
-
-CHAR_DEFAULT_CFG.name = "char_default_cfg"
-CHAR_DEFAULT_CFG.full_name = ".ftcfg.char_default_cfg"
-CHAR_DEFAULT_CFG.nested_types = {}
-CHAR_DEFAULT_CFG.enum_types = {}
-CHAR_DEFAULT_CFG.fields = {CHAR_DEFAULT_CFG_PROF_TYPE_FIELD, CHAR_DEFAULT_CFG_GENDER_FIELD, CHAR_DEFAULT_CFG_SHOW_INDEX_FIELD, CHAR_DEFAULT_CFG_PROF_ICON_FIELD, CHAR_DEFAULT_CFG_MODEL_PATH_FIELD, CHAR_DEFAULT_CFG_PROFNAME_ICON_FIELD, CHAR_DEFAULT_CFG_PROP_STARS_FIELD, CHAR_DEFAULT_CFG_PROF_HEAD_FIELD, CHAR_DEFAULT_CFG_POS_DES_FIELD, CHAR_DEFAULT_CFG_PROF_NAME_FIELD, CHAR_DEFAULT_CFG_PROF_RES_FIELD, CHAR_DEFAULT_CFG_PROF_ANIM1_FIELD, CHAR_DEFAULT_CFG_PROF_ANIM2_FIELD, CHAR_DEFAULT_CFG_SKILL_RES_FIELD, CHAR_DEFAULT_CFG_RANDOM_CFG_FIELD, CHAR_DEFAULT_CFG_IS_OPEN_FIELD, CHAR_DEFAULT_CFG_DEFAULT_PARTS_FIELD, CHAR_DEFAULT_CFG_MP_TYPE_FIELD, CHAR_DEFAULT_CFG_IS_MINISTER_FIELD}
-CHAR_DEFAULT_CFG.is_extendable = false
-CHAR_DEFAULT_CFG.extensions = {}
-CHAR_DEFAULT_CFGS_ITEMS_FIELD.name = "items"
-CHAR_DEFAULT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.char_default_cfgs.items"
-CHAR_DEFAULT_CFGS_ITEMS_FIELD.number = 1
-CHAR_DEFAULT_CFGS_ITEMS_FIELD.index = 0
-CHAR_DEFAULT_CFGS_ITEMS_FIELD.label = 3
-CHAR_DEFAULT_CFGS_ITEMS_FIELD.has_default_value = false
-CHAR_DEFAULT_CFGS_ITEMS_FIELD.default_value = {}
-CHAR_DEFAULT_CFGS_ITEMS_FIELD.message_type = CHAR_DEFAULT_CFG
-CHAR_DEFAULT_CFGS_ITEMS_FIELD.type = 11
-CHAR_DEFAULT_CFGS_ITEMS_FIELD.cpp_type = 10
-
-CHAR_DEFAULT_CFGS.name = "char_default_cfgs"
-CHAR_DEFAULT_CFGS.full_name = ".ftcfg.char_default_cfgs"
-CHAR_DEFAULT_CFGS.nested_types = {}
-CHAR_DEFAULT_CFGS.enum_types = {}
-CHAR_DEFAULT_CFGS.fields = {CHAR_DEFAULT_CFGS_ITEMS_FIELD}
-CHAR_DEFAULT_CFGS.is_extendable = false
-CHAR_DEFAULT_CFGS.extensions = {}
-COOLDOWN_CFG_ID_FIELD.name = "id"
-COOLDOWN_CFG_ID_FIELD.full_name = ".ftcfg.cooldown_cfg.id"
-COOLDOWN_CFG_ID_FIELD.number = 1
-COOLDOWN_CFG_ID_FIELD.index = 0
-COOLDOWN_CFG_ID_FIELD.label = 2
-COOLDOWN_CFG_ID_FIELD.has_default_value = false
-COOLDOWN_CFG_ID_FIELD.default_value = 0
-COOLDOWN_CFG_ID_FIELD.type = 5
-COOLDOWN_CFG_ID_FIELD.cpp_type = 1
-
-COOLDOWN_CFG_TATOL_TIME_FIELD.name = "tatol_time"
-COOLDOWN_CFG_TATOL_TIME_FIELD.full_name = ".ftcfg.cooldown_cfg.tatol_time"
-COOLDOWN_CFG_TATOL_TIME_FIELD.number = 2
-COOLDOWN_CFG_TATOL_TIME_FIELD.index = 1
-COOLDOWN_CFG_TATOL_TIME_FIELD.label = 2
-COOLDOWN_CFG_TATOL_TIME_FIELD.has_default_value = false
-COOLDOWN_CFG_TATOL_TIME_FIELD.default_value = 0
-COOLDOWN_CFG_TATOL_TIME_FIELD.type = 5
-COOLDOWN_CFG_TATOL_TIME_FIELD.cpp_type = 1
-
-COOLDOWN_CFG.name = "cooldown_cfg"
-COOLDOWN_CFG.full_name = ".ftcfg.cooldown_cfg"
-COOLDOWN_CFG.nested_types = {}
-COOLDOWN_CFG.enum_types = {}
-COOLDOWN_CFG.fields = {COOLDOWN_CFG_ID_FIELD, COOLDOWN_CFG_TATOL_TIME_FIELD}
-COOLDOWN_CFG.is_extendable = false
-COOLDOWN_CFG.extensions = {}
-COOLDOWN_CFGS_ITEMS_FIELD.name = "items"
-COOLDOWN_CFGS_ITEMS_FIELD.full_name = ".ftcfg.cooldown_cfgs.items"
-COOLDOWN_CFGS_ITEMS_FIELD.number = 1
-COOLDOWN_CFGS_ITEMS_FIELD.index = 0
-COOLDOWN_CFGS_ITEMS_FIELD.label = 3
-COOLDOWN_CFGS_ITEMS_FIELD.has_default_value = false
-COOLDOWN_CFGS_ITEMS_FIELD.default_value = {}
-COOLDOWN_CFGS_ITEMS_FIELD.message_type = COOLDOWN_CFG
-COOLDOWN_CFGS_ITEMS_FIELD.type = 11
-COOLDOWN_CFGS_ITEMS_FIELD.cpp_type = 10
-
-COOLDOWN_CFGS.name = "cooldown_cfgs"
-COOLDOWN_CFGS.full_name = ".ftcfg.cooldown_cfgs"
-COOLDOWN_CFGS.nested_types = {}
-COOLDOWN_CFGS.enum_types = {}
-COOLDOWN_CFGS.fields = {COOLDOWN_CFGS_ITEMS_FIELD}
-COOLDOWN_CFGS.is_extendable = false
-COOLDOWN_CFGS.extensions = {}
-MONSTER_CFG_ID_FIELD.name = "id"
-MONSTER_CFG_ID_FIELD.full_name = ".ftcfg.monster_cfg.id"
-MONSTER_CFG_ID_FIELD.number = 1
-MONSTER_CFG_ID_FIELD.index = 0
-MONSTER_CFG_ID_FIELD.label = 2
-MONSTER_CFG_ID_FIELD.has_default_value = false
-MONSTER_CFG_ID_FIELD.default_value = 0
-MONSTER_CFG_ID_FIELD.type = 13
-MONSTER_CFG_ID_FIELD.cpp_type = 3
-
-MONSTER_CFG_SHOW_NAME_FIELD.name = "show_name"
-MONSTER_CFG_SHOW_NAME_FIELD.full_name = ".ftcfg.monster_cfg.show_name"
-MONSTER_CFG_SHOW_NAME_FIELD.number = 2
-MONSTER_CFG_SHOW_NAME_FIELD.index = 1
-MONSTER_CFG_SHOW_NAME_FIELD.label = 2
-MONSTER_CFG_SHOW_NAME_FIELD.has_default_value = false
-MONSTER_CFG_SHOW_NAME_FIELD.default_value = 0
-MONSTER_CFG_SHOW_NAME_FIELD.type = 5
-MONSTER_CFG_SHOW_NAME_FIELD.cpp_type = 1
-
-MONSTER_CFG_SHOW_ICON_FIELD.name = "show_icon"
-MONSTER_CFG_SHOW_ICON_FIELD.full_name = ".ftcfg.monster_cfg.show_icon"
-MONSTER_CFG_SHOW_ICON_FIELD.number = 3
-MONSTER_CFG_SHOW_ICON_FIELD.index = 2
-MONSTER_CFG_SHOW_ICON_FIELD.label = 2
-MONSTER_CFG_SHOW_ICON_FIELD.has_default_value = false
-MONSTER_CFG_SHOW_ICON_FIELD.default_value = 0
-MONSTER_CFG_SHOW_ICON_FIELD.type = 5
-MONSTER_CFG_SHOW_ICON_FIELD.cpp_type = 1
-
-MONSTER_CFG_WHETHER_SHOWNAME_FIELD.name = "whether_showname"
-MONSTER_CFG_WHETHER_SHOWNAME_FIELD.full_name = ".ftcfg.monster_cfg.whether_showname"
-MONSTER_CFG_WHETHER_SHOWNAME_FIELD.number = 4
-MONSTER_CFG_WHETHER_SHOWNAME_FIELD.index = 3
-MONSTER_CFG_WHETHER_SHOWNAME_FIELD.label = 2
-MONSTER_CFG_WHETHER_SHOWNAME_FIELD.has_default_value = false
-MONSTER_CFG_WHETHER_SHOWNAME_FIELD.default_value = 0
-MONSTER_CFG_WHETHER_SHOWNAME_FIELD.type = 5
-MONSTER_CFG_WHETHER_SHOWNAME_FIELD.cpp_type = 1
-
-MONSTER_CFG_MONSTER_DESC_FIELD.name = "monster_desc"
-MONSTER_CFG_MONSTER_DESC_FIELD.full_name = ".ftcfg.monster_cfg.monster_desc"
-MONSTER_CFG_MONSTER_DESC_FIELD.number = 5
-MONSTER_CFG_MONSTER_DESC_FIELD.index = 4
-MONSTER_CFG_MONSTER_DESC_FIELD.label = 2
-MONSTER_CFG_MONSTER_DESC_FIELD.has_default_value = false
-MONSTER_CFG_MONSTER_DESC_FIELD.default_value = 0
-MONSTER_CFG_MONSTER_DESC_FIELD.type = 5
-MONSTER_CFG_MONSTER_DESC_FIELD.cpp_type = 1
-
-MONSTER_CFG_TYPE_FIELD.name = "type"
-MONSTER_CFG_TYPE_FIELD.full_name = ".ftcfg.monster_cfg.type"
-MONSTER_CFG_TYPE_FIELD.number = 6
-MONSTER_CFG_TYPE_FIELD.index = 5
-MONSTER_CFG_TYPE_FIELD.label = 2
-MONSTER_CFG_TYPE_FIELD.has_default_value = false
-MONSTER_CFG_TYPE_FIELD.default_value = 0
-MONSTER_CFG_TYPE_FIELD.type = 5
-MONSTER_CFG_TYPE_FIELD.cpp_type = 1
-
-MONSTER_CFG_CAMP_FIELD.name = "camp"
-MONSTER_CFG_CAMP_FIELD.full_name = ".ftcfg.monster_cfg.camp"
-MONSTER_CFG_CAMP_FIELD.number = 7
-MONSTER_CFG_CAMP_FIELD.index = 6
-MONSTER_CFG_CAMP_FIELD.label = 2
-MONSTER_CFG_CAMP_FIELD.has_default_value = false
-MONSTER_CFG_CAMP_FIELD.default_value = 0
-MONSTER_CFG_CAMP_FIELD.type = 5
-MONSTER_CFG_CAMP_FIELD.cpp_type = 1
-
-MONSTER_CFG_CAMP_RELATION_FIELD.name = "camp_relation"
-MONSTER_CFG_CAMP_RELATION_FIELD.full_name = ".ftcfg.monster_cfg.camp_relation"
-MONSTER_CFG_CAMP_RELATION_FIELD.number = 8
-MONSTER_CFG_CAMP_RELATION_FIELD.index = 7
-MONSTER_CFG_CAMP_RELATION_FIELD.label = 2
-MONSTER_CFG_CAMP_RELATION_FIELD.has_default_value = false
-MONSTER_CFG_CAMP_RELATION_FIELD.default_value = 0
-MONSTER_CFG_CAMP_RELATION_FIELD.type = 5
-MONSTER_CFG_CAMP_RELATION_FIELD.cpp_type = 1
-
-MONSTER_CFG_PROPS_ID_FIELD.name = "props_id"
-MONSTER_CFG_PROPS_ID_FIELD.full_name = ".ftcfg.monster_cfg.props_id"
-MONSTER_CFG_PROPS_ID_FIELD.number = 9
-MONSTER_CFG_PROPS_ID_FIELD.index = 8
-MONSTER_CFG_PROPS_ID_FIELD.label = 2
-MONSTER_CFG_PROPS_ID_FIELD.has_default_value = false
-MONSTER_CFG_PROPS_ID_FIELD.default_value = 0
-MONSTER_CFG_PROPS_ID_FIELD.type = 5
-MONSTER_CFG_PROPS_ID_FIELD.cpp_type = 1
-
-MONSTER_CFG_LEVEL_FIELD.name = "level"
-MONSTER_CFG_LEVEL_FIELD.full_name = ".ftcfg.monster_cfg.level"
-MONSTER_CFG_LEVEL_FIELD.number = 10
-MONSTER_CFG_LEVEL_FIELD.index = 9
-MONSTER_CFG_LEVEL_FIELD.label = 2
-MONSTER_CFG_LEVEL_FIELD.has_default_value = false
-MONSTER_CFG_LEVEL_FIELD.default_value = 0
-MONSTER_CFG_LEVEL_FIELD.type = 5
-MONSTER_CFG_LEVEL_FIELD.cpp_type = 1
-
-MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.name = "attack_level_limit"
-MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.full_name = ".ftcfg.monster_cfg.attack_level_limit"
-MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.number = 11
-MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.index = 10
-MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.label = 2
-MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.has_default_value = false
-MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.default_value = 0
-MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.type = 5
-MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD.cpp_type = 1
-
-MONSTER_CFG_SKILLS_FIELD.name = "skills"
-MONSTER_CFG_SKILLS_FIELD.full_name = ".ftcfg.monster_cfg.skills"
-MONSTER_CFG_SKILLS_FIELD.number = 12
-MONSTER_CFG_SKILLS_FIELD.index = 11
-MONSTER_CFG_SKILLS_FIELD.label = 3
-MONSTER_CFG_SKILLS_FIELD.has_default_value = false
-MONSTER_CFG_SKILLS_FIELD.default_value = {}
-MONSTER_CFG_SKILLS_FIELD.type = 5
-MONSTER_CFG_SKILLS_FIELD.cpp_type = 1
-
-MONSTER_CFG_AVATAR_FIELD.name = "avatar"
-MONSTER_CFG_AVATAR_FIELD.full_name = ".ftcfg.monster_cfg.avatar"
-MONSTER_CFG_AVATAR_FIELD.number = 13
-MONSTER_CFG_AVATAR_FIELD.index = 12
-MONSTER_CFG_AVATAR_FIELD.label = 2
-MONSTER_CFG_AVATAR_FIELD.has_default_value = false
-MONSTER_CFG_AVATAR_FIELD.default_value = 0
-MONSTER_CFG_AVATAR_FIELD.type = 5
-MONSTER_CFG_AVATAR_FIELD.cpp_type = 1
-
-MONSTER_CFG_AVATAR_SCALE_FIELD.name = "avatar_scale"
-MONSTER_CFG_AVATAR_SCALE_FIELD.full_name = ".ftcfg.monster_cfg.avatar_scale"
-MONSTER_CFG_AVATAR_SCALE_FIELD.number = 14
-MONSTER_CFG_AVATAR_SCALE_FIELD.index = 13
-MONSTER_CFG_AVATAR_SCALE_FIELD.label = 2
-MONSTER_CFG_AVATAR_SCALE_FIELD.has_default_value = false
-MONSTER_CFG_AVATAR_SCALE_FIELD.default_value = 0.0
-MONSTER_CFG_AVATAR_SCALE_FIELD.type = 2
-MONSTER_CFG_AVATAR_SCALE_FIELD.cpp_type = 6
-
-MONSTER_CFG_ACT_IDLE_FIELD.name = "act_idle"
-MONSTER_CFG_ACT_IDLE_FIELD.full_name = ".ftcfg.monster_cfg.act_idle"
-MONSTER_CFG_ACT_IDLE_FIELD.number = 15
-MONSTER_CFG_ACT_IDLE_FIELD.index = 14
-MONSTER_CFG_ACT_IDLE_FIELD.label = 2
-MONSTER_CFG_ACT_IDLE_FIELD.has_default_value = false
-MONSTER_CFG_ACT_IDLE_FIELD.default_value = ""
-MONSTER_CFG_ACT_IDLE_FIELD.type = 9
-MONSTER_CFG_ACT_IDLE_FIELD.cpp_type = 9
-
-MONSTER_CFG_ACT_MOVE_FIELD.name = "act_move"
-MONSTER_CFG_ACT_MOVE_FIELD.full_name = ".ftcfg.monster_cfg.act_move"
-MONSTER_CFG_ACT_MOVE_FIELD.number = 16
-MONSTER_CFG_ACT_MOVE_FIELD.index = 15
-MONSTER_CFG_ACT_MOVE_FIELD.label = 2
-MONSTER_CFG_ACT_MOVE_FIELD.has_default_value = false
-MONSTER_CFG_ACT_MOVE_FIELD.default_value = ""
-MONSTER_CFG_ACT_MOVE_FIELD.type = 9
-MONSTER_CFG_ACT_MOVE_FIELD.cpp_type = 9
-
-MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.name = "act_idle_battle"
-MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.full_name = ".ftcfg.monster_cfg.act_idle_battle"
-MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.number = 17
-MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.index = 16
-MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.label = 2
-MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.has_default_value = false
-MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.default_value = ""
-MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.type = 9
-MONSTER_CFG_ACT_IDLE_BATTLE_FIELD.cpp_type = 9
-
-MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.name = "act_move_battle"
-MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.full_name = ".ftcfg.monster_cfg.act_move_battle"
-MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.number = 18
-MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.index = 17
-MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.label = 2
-MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.has_default_value = false
-MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.default_value = ""
-MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.type = 9
-MONSTER_CFG_ACT_MOVE_BATTLE_FIELD.cpp_type = 9
-
-MONSTER_CFG_ACT_BORN_FIELD.name = "act_born"
-MONSTER_CFG_ACT_BORN_FIELD.full_name = ".ftcfg.monster_cfg.act_born"
-MONSTER_CFG_ACT_BORN_FIELD.number = 19
-MONSTER_CFG_ACT_BORN_FIELD.index = 18
-MONSTER_CFG_ACT_BORN_FIELD.label = 2
-MONSTER_CFG_ACT_BORN_FIELD.has_default_value = false
-MONSTER_CFG_ACT_BORN_FIELD.default_value = ""
-MONSTER_CFG_ACT_BORN_FIELD.type = 9
-MONSTER_CFG_ACT_BORN_FIELD.cpp_type = 9
-
-MONSTER_CFG_BORN_TIME_FIELD.name = "born_time"
-MONSTER_CFG_BORN_TIME_FIELD.full_name = ".ftcfg.monster_cfg.born_time"
-MONSTER_CFG_BORN_TIME_FIELD.number = 20
-MONSTER_CFG_BORN_TIME_FIELD.index = 19
-MONSTER_CFG_BORN_TIME_FIELD.label = 2
-MONSTER_CFG_BORN_TIME_FIELD.has_default_value = false
-MONSTER_CFG_BORN_TIME_FIELD.default_value = 0.0
-MONSTER_CFG_BORN_TIME_FIELD.type = 1
-MONSTER_CFG_BORN_TIME_FIELD.cpp_type = 5
-
-MONSTER_CFG_ACT_DEAD_FIELD.name = "act_dead"
-MONSTER_CFG_ACT_DEAD_FIELD.full_name = ".ftcfg.monster_cfg.act_dead"
-MONSTER_CFG_ACT_DEAD_FIELD.number = 21
-MONSTER_CFG_ACT_DEAD_FIELD.index = 20
-MONSTER_CFG_ACT_DEAD_FIELD.label = 3
-MONSTER_CFG_ACT_DEAD_FIELD.has_default_value = false
-MONSTER_CFG_ACT_DEAD_FIELD.default_value = {}
-MONSTER_CFG_ACT_DEAD_FIELD.type = 9
-MONSTER_CFG_ACT_DEAD_FIELD.cpp_type = 9
-
-MONSTER_CFG_RANGE_TYPE_FIELD.name = "range_type"
-MONSTER_CFG_RANGE_TYPE_FIELD.full_name = ".ftcfg.monster_cfg.range_type"
-MONSTER_CFG_RANGE_TYPE_FIELD.number = 22
-MONSTER_CFG_RANGE_TYPE_FIELD.index = 21
-MONSTER_CFG_RANGE_TYPE_FIELD.label = 2
-MONSTER_CFG_RANGE_TYPE_FIELD.has_default_value = false
-MONSTER_CFG_RANGE_TYPE_FIELD.default_value = nil
-MONSTER_CFG_RANGE_TYPE_FIELD.enum_type = config_predefine_pb.EAREATYPE
-MONSTER_CFG_RANGE_TYPE_FIELD.type = 14
-MONSTER_CFG_RANGE_TYPE_FIELD.cpp_type = 8
-
-MONSTER_CFG_RANGE_PARA1_FIELD.name = "range_para1"
-MONSTER_CFG_RANGE_PARA1_FIELD.full_name = ".ftcfg.monster_cfg.range_para1"
-MONSTER_CFG_RANGE_PARA1_FIELD.number = 23
-MONSTER_CFG_RANGE_PARA1_FIELD.index = 22
-MONSTER_CFG_RANGE_PARA1_FIELD.label = 2
-MONSTER_CFG_RANGE_PARA1_FIELD.has_default_value = false
-MONSTER_CFG_RANGE_PARA1_FIELD.default_value = 0.0
-MONSTER_CFG_RANGE_PARA1_FIELD.type = 2
-MONSTER_CFG_RANGE_PARA1_FIELD.cpp_type = 6
-
-MONSTER_CFG_RANGE_PARA2_FIELD.name = "range_para2"
-MONSTER_CFG_RANGE_PARA2_FIELD.full_name = ".ftcfg.monster_cfg.range_para2"
-MONSTER_CFG_RANGE_PARA2_FIELD.number = 24
-MONSTER_CFG_RANGE_PARA2_FIELD.index = 23
-MONSTER_CFG_RANGE_PARA2_FIELD.label = 2
-MONSTER_CFG_RANGE_PARA2_FIELD.has_default_value = false
-MONSTER_CFG_RANGE_PARA2_FIELD.default_value = 0.0
-MONSTER_CFG_RANGE_PARA2_FIELD.type = 2
-MONSTER_CFG_RANGE_PARA2_FIELD.cpp_type = 6
-
-MONSTER_CFG_DROP_FIELD.name = "drop"
-MONSTER_CFG_DROP_FIELD.full_name = ".ftcfg.monster_cfg.drop"
-MONSTER_CFG_DROP_FIELD.number = 25
-MONSTER_CFG_DROP_FIELD.index = 24
-MONSTER_CFG_DROP_FIELD.label = 2
-MONSTER_CFG_DROP_FIELD.has_default_value = false
-MONSTER_CFG_DROP_FIELD.default_value = 0
-MONSTER_CFG_DROP_FIELD.type = 5
-MONSTER_CFG_DROP_FIELD.cpp_type = 1
-
-MONSTER_CFG_HEAD_PORTRAIT_FIELD.name = "head_portrait"
-MONSTER_CFG_HEAD_PORTRAIT_FIELD.full_name = ".ftcfg.monster_cfg.head_portrait"
-MONSTER_CFG_HEAD_PORTRAIT_FIELD.number = 26
-MONSTER_CFG_HEAD_PORTRAIT_FIELD.index = 25
-MONSTER_CFG_HEAD_PORTRAIT_FIELD.label = 2
-MONSTER_CFG_HEAD_PORTRAIT_FIELD.has_default_value = false
-MONSTER_CFG_HEAD_PORTRAIT_FIELD.default_value = 0
-MONSTER_CFG_HEAD_PORTRAIT_FIELD.type = 5
-MONSTER_CFG_HEAD_PORTRAIT_FIELD.cpp_type = 1
-
-MONSTER_CFG_RADIUS_FIELD.name = "radius"
-MONSTER_CFG_RADIUS_FIELD.full_name = ".ftcfg.monster_cfg.radius"
-MONSTER_CFG_RADIUS_FIELD.number = 27
-MONSTER_CFG_RADIUS_FIELD.index = 26
-MONSTER_CFG_RADIUS_FIELD.label = 2
-MONSTER_CFG_RADIUS_FIELD.has_default_value = false
-MONSTER_CFG_RADIUS_FIELD.default_value = 0.0
-MONSTER_CFG_RADIUS_FIELD.type = 2
-MONSTER_CFG_RADIUS_FIELD.cpp_type = 6
-
-MONSTER_CFG_MONSTER_TYPE_FIELD.name = "monster_type"
-MONSTER_CFG_MONSTER_TYPE_FIELD.full_name = ".ftcfg.monster_cfg.monster_type"
-MONSTER_CFG_MONSTER_TYPE_FIELD.number = 28
-MONSTER_CFG_MONSTER_TYPE_FIELD.index = 27
-MONSTER_CFG_MONSTER_TYPE_FIELD.label = 2
-MONSTER_CFG_MONSTER_TYPE_FIELD.has_default_value = false
-MONSTER_CFG_MONSTER_TYPE_FIELD.default_value = 0
-MONSTER_CFG_MONSTER_TYPE_FIELD.type = 5
-MONSTER_CFG_MONSTER_TYPE_FIELD.cpp_type = 1
-
-MONSTER_CFG_LOCK_SIZE_FIELD.name = "lock_size"
-MONSTER_CFG_LOCK_SIZE_FIELD.full_name = ".ftcfg.monster_cfg.lock_size"
-MONSTER_CFG_LOCK_SIZE_FIELD.number = 29
-MONSTER_CFG_LOCK_SIZE_FIELD.index = 28
-MONSTER_CFG_LOCK_SIZE_FIELD.label = 2
-MONSTER_CFG_LOCK_SIZE_FIELD.has_default_value = false
-MONSTER_CFG_LOCK_SIZE_FIELD.default_value = 0.0
-MONSTER_CFG_LOCK_SIZE_FIELD.type = 2
-MONSTER_CFG_LOCK_SIZE_FIELD.cpp_type = 6
-
-MONSTER_CFG_HALO_SWITCH_FIELD.name = "halo_switch"
-MONSTER_CFG_HALO_SWITCH_FIELD.full_name = ".ftcfg.monster_cfg.halo_switch"
-MONSTER_CFG_HALO_SWITCH_FIELD.number = 30
-MONSTER_CFG_HALO_SWITCH_FIELD.index = 29
-MONSTER_CFG_HALO_SWITCH_FIELD.label = 2
-MONSTER_CFG_HALO_SWITCH_FIELD.has_default_value = false
-MONSTER_CFG_HALO_SWITCH_FIELD.default_value = 0.0
-MONSTER_CFG_HALO_SWITCH_FIELD.type = 2
-MONSTER_CFG_HALO_SWITCH_FIELD.cpp_type = 6
-
-MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.name = "activity_exclusive"
-MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.full_name = ".ftcfg.monster_cfg.activity_exclusive"
-MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.number = 31
-MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.index = 30
-MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.label = 2
-MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.has_default_value = false
-MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.default_value = 0
-MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.type = 5
-MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD.cpp_type = 1
-
-MONSTER_CFG.name = "monster_cfg"
-MONSTER_CFG.full_name = ".ftcfg.monster_cfg"
-MONSTER_CFG.nested_types = {}
-MONSTER_CFG.enum_types = {}
-MONSTER_CFG.fields = {MONSTER_CFG_ID_FIELD, MONSTER_CFG_SHOW_NAME_FIELD, MONSTER_CFG_SHOW_ICON_FIELD, MONSTER_CFG_WHETHER_SHOWNAME_FIELD, MONSTER_CFG_MONSTER_DESC_FIELD, MONSTER_CFG_TYPE_FIELD, MONSTER_CFG_CAMP_FIELD, MONSTER_CFG_CAMP_RELATION_FIELD, MONSTER_CFG_PROPS_ID_FIELD, MONSTER_CFG_LEVEL_FIELD, MONSTER_CFG_ATTACK_LEVEL_LIMIT_FIELD, MONSTER_CFG_SKILLS_FIELD, MONSTER_CFG_AVATAR_FIELD, MONSTER_CFG_AVATAR_SCALE_FIELD, MONSTER_CFG_ACT_IDLE_FIELD, MONSTER_CFG_ACT_MOVE_FIELD, MONSTER_CFG_ACT_IDLE_BATTLE_FIELD, MONSTER_CFG_ACT_MOVE_BATTLE_FIELD, MONSTER_CFG_ACT_BORN_FIELD, MONSTER_CFG_BORN_TIME_FIELD, MONSTER_CFG_ACT_DEAD_FIELD, MONSTER_CFG_RANGE_TYPE_FIELD, MONSTER_CFG_RANGE_PARA1_FIELD, MONSTER_CFG_RANGE_PARA2_FIELD, MONSTER_CFG_DROP_FIELD, MONSTER_CFG_HEAD_PORTRAIT_FIELD, MONSTER_CFG_RADIUS_FIELD, MONSTER_CFG_MONSTER_TYPE_FIELD, MONSTER_CFG_LOCK_SIZE_FIELD, MONSTER_CFG_HALO_SWITCH_FIELD, MONSTER_CFG_ACTIVITY_EXCLUSIVE_FIELD}
-MONSTER_CFG.is_extendable = false
-MONSTER_CFG.extensions = {}
-MONSTER_CFGS_ITEMS_FIELD.name = "items"
-MONSTER_CFGS_ITEMS_FIELD.full_name = ".ftcfg.monster_cfgs.items"
-MONSTER_CFGS_ITEMS_FIELD.number = 1
-MONSTER_CFGS_ITEMS_FIELD.index = 0
-MONSTER_CFGS_ITEMS_FIELD.label = 3
-MONSTER_CFGS_ITEMS_FIELD.has_default_value = false
-MONSTER_CFGS_ITEMS_FIELD.default_value = {}
-MONSTER_CFGS_ITEMS_FIELD.message_type = MONSTER_CFG
-MONSTER_CFGS_ITEMS_FIELD.type = 11
-MONSTER_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MONSTER_CFGS.name = "monster_cfgs"
-MONSTER_CFGS.full_name = ".ftcfg.monster_cfgs"
-MONSTER_CFGS.nested_types = {}
-MONSTER_CFGS.enum_types = {}
-MONSTER_CFGS.fields = {MONSTER_CFGS_ITEMS_FIELD}
-MONSTER_CFGS.is_extendable = false
-MONSTER_CFGS.extensions = {}
-BUSINESS_ACTIVITY_CFG_GUID_FIELD.name = "guid"
-BUSINESS_ACTIVITY_CFG_GUID_FIELD.full_name = ".ftcfg.business_activity_cfg.guid"
-BUSINESS_ACTIVITY_CFG_GUID_FIELD.number = 1
-BUSINESS_ACTIVITY_CFG_GUID_FIELD.index = 0
-BUSINESS_ACTIVITY_CFG_GUID_FIELD.label = 2
-BUSINESS_ACTIVITY_CFG_GUID_FIELD.has_default_value = false
-BUSINESS_ACTIVITY_CFG_GUID_FIELD.default_value = 0
-BUSINESS_ACTIVITY_CFG_GUID_FIELD.type = 13
-BUSINESS_ACTIVITY_CFG_GUID_FIELD.cpp_type = 3
-
-BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.name = "business_id"
-BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.full_name = ".ftcfg.business_activity_cfg.business_id"
-BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.number = 2
-BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.index = 1
-BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.label = 2
-BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.has_default_value = false
-BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.default_value = 0
-BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.type = 13
-BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD.cpp_type = 3
-
-BUSINESS_ACTIVITY_CFG.name = "business_activity_cfg"
-BUSINESS_ACTIVITY_CFG.full_name = ".ftcfg.business_activity_cfg"
-BUSINESS_ACTIVITY_CFG.nested_types = {}
-BUSINESS_ACTIVITY_CFG.enum_types = {}
-BUSINESS_ACTIVITY_CFG.fields = {BUSINESS_ACTIVITY_CFG_GUID_FIELD, BUSINESS_ACTIVITY_CFG_BUSINESS_ID_FIELD}
-BUSINESS_ACTIVITY_CFG.is_extendable = false
-BUSINESS_ACTIVITY_CFG.extensions = {}
-BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.name = "items"
-BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.full_name = ".ftcfg.business_activity_cfgs.items"
-BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.number = 1
-BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.index = 0
-BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.label = 3
-BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.has_default_value = false
-BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.default_value = {}
-BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.message_type = BUSINESS_ACTIVITY_CFG
-BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.type = 11
-BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD.cpp_type = 10
-
-BUSINESS_ACTIVITY_CFGS.name = "business_activity_cfgs"
-BUSINESS_ACTIVITY_CFGS.full_name = ".ftcfg.business_activity_cfgs"
-BUSINESS_ACTIVITY_CFGS.nested_types = {}
-BUSINESS_ACTIVITY_CFGS.enum_types = {}
-BUSINESS_ACTIVITY_CFGS.fields = {BUSINESS_ACTIVITY_CFGS_ITEMS_FIELD}
-BUSINESS_ACTIVITY_CFGS.is_extendable = false
-BUSINESS_ACTIVITY_CFGS.extensions = {}
-ACTIVITY_CFG_GUID_FIELD.name = "guid"
-ACTIVITY_CFG_GUID_FIELD.full_name = ".ftcfg.activity_cfg.guid"
-ACTIVITY_CFG_GUID_FIELD.number = 1
-ACTIVITY_CFG_GUID_FIELD.index = 0
-ACTIVITY_CFG_GUID_FIELD.label = 2
-ACTIVITY_CFG_GUID_FIELD.has_default_value = false
-ACTIVITY_CFG_GUID_FIELD.default_value = 0
-ACTIVITY_CFG_GUID_FIELD.type = 13
-ACTIVITY_CFG_GUID_FIELD.cpp_type = 3
-
-ACTIVITY_CFG_DACTIVITY_NAME_FIELD.name = "dactivity_name"
-ACTIVITY_CFG_DACTIVITY_NAME_FIELD.full_name = ".ftcfg.activity_cfg.dactivity_name"
-ACTIVITY_CFG_DACTIVITY_NAME_FIELD.number = 2
-ACTIVITY_CFG_DACTIVITY_NAME_FIELD.index = 1
-ACTIVITY_CFG_DACTIVITY_NAME_FIELD.label = 2
-ACTIVITY_CFG_DACTIVITY_NAME_FIELD.has_default_value = false
-ACTIVITY_CFG_DACTIVITY_NAME_FIELD.default_value = 0
-ACTIVITY_CFG_DACTIVITY_NAME_FIELD.type = 5
-ACTIVITY_CFG_DACTIVITY_NAME_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_NAME_FIELD.name = "name"
-ACTIVITY_CFG_NAME_FIELD.full_name = ".ftcfg.activity_cfg.name"
-ACTIVITY_CFG_NAME_FIELD.number = 3
-ACTIVITY_CFG_NAME_FIELD.index = 2
-ACTIVITY_CFG_NAME_FIELD.label = 2
-ACTIVITY_CFG_NAME_FIELD.has_default_value = false
-ACTIVITY_CFG_NAME_FIELD.default_value = ""
-ACTIVITY_CFG_NAME_FIELD.type = 9
-ACTIVITY_CFG_NAME_FIELD.cpp_type = 9
-
-ACTIVITY_CFG_TYPE_FIELD.name = "type"
-ACTIVITY_CFG_TYPE_FIELD.full_name = ".ftcfg.activity_cfg.type"
-ACTIVITY_CFG_TYPE_FIELD.number = 4
-ACTIVITY_CFG_TYPE_FIELD.index = 3
-ACTIVITY_CFG_TYPE_FIELD.label = 2
-ACTIVITY_CFG_TYPE_FIELD.has_default_value = false
-ACTIVITY_CFG_TYPE_FIELD.default_value = 0
-ACTIVITY_CFG_TYPE_FIELD.type = 13
-ACTIVITY_CFG_TYPE_FIELD.cpp_type = 3
-
-ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.name = "activity_play"
-ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.full_name = ".ftcfg.activity_cfg.activity_play"
-ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.number = 5
-ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.index = 4
-ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.label = 2
-ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.has_default_value = false
-ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.default_value = 0
-ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.type = 13
-ACTIVITY_CFG_ACTIVITY_PLAY_FIELD.cpp_type = 3
-
-ACTIVITY_CFG_NEED_LEVEL_FIELD.name = "need_level"
-ACTIVITY_CFG_NEED_LEVEL_FIELD.full_name = ".ftcfg.activity_cfg.need_level"
-ACTIVITY_CFG_NEED_LEVEL_FIELD.number = 6
-ACTIVITY_CFG_NEED_LEVEL_FIELD.index = 5
-ACTIVITY_CFG_NEED_LEVEL_FIELD.label = 2
-ACTIVITY_CFG_NEED_LEVEL_FIELD.has_default_value = false
-ACTIVITY_CFG_NEED_LEVEL_FIELD.default_value = 0
-ACTIVITY_CFG_NEED_LEVEL_FIELD.type = 13
-ACTIVITY_CFG_NEED_LEVEL_FIELD.cpp_type = 3
-
-ACTIVITY_CFG_TOTAL_TIMES_FIELD.name = "total_times"
-ACTIVITY_CFG_TOTAL_TIMES_FIELD.full_name = ".ftcfg.activity_cfg.total_times"
-ACTIVITY_CFG_TOTAL_TIMES_FIELD.number = 7
-ACTIVITY_CFG_TOTAL_TIMES_FIELD.index = 6
-ACTIVITY_CFG_TOTAL_TIMES_FIELD.label = 2
-ACTIVITY_CFG_TOTAL_TIMES_FIELD.has_default_value = false
-ACTIVITY_CFG_TOTAL_TIMES_FIELD.default_value = 0
-ACTIVITY_CFG_TOTAL_TIMES_FIELD.type = 13
-ACTIVITY_CFG_TOTAL_TIMES_FIELD.cpp_type = 3
-
-ACTIVITY_CFG_ACTIVATION_POINT_FIELD.name = "activation_point"
-ACTIVITY_CFG_ACTIVATION_POINT_FIELD.full_name = ".ftcfg.activity_cfg.activation_point"
-ACTIVITY_CFG_ACTIVATION_POINT_FIELD.number = 8
-ACTIVITY_CFG_ACTIVATION_POINT_FIELD.index = 7
-ACTIVITY_CFG_ACTIVATION_POINT_FIELD.label = 2
-ACTIVITY_CFG_ACTIVATION_POINT_FIELD.has_default_value = false
-ACTIVITY_CFG_ACTIVATION_POINT_FIELD.default_value = 0
-ACTIVITY_CFG_ACTIVATION_POINT_FIELD.type = 13
-ACTIVITY_CFG_ACTIVATION_POINT_FIELD.cpp_type = 3
-
-ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.name = "activation_toplimit"
-ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.full_name = ".ftcfg.activity_cfg.activation_toplimit"
-ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.number = 9
-ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.index = 8
-ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.label = 2
-ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.has_default_value = false
-ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.default_value = 0
-ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.type = 13
-ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD.cpp_type = 3
-
-ACTIVITY_CFG_ACTIVATION_MODE_FIELD.name = "activation_mode"
-ACTIVITY_CFG_ACTIVATION_MODE_FIELD.full_name = ".ftcfg.activity_cfg.activation_mode"
-ACTIVITY_CFG_ACTIVATION_MODE_FIELD.number = 10
-ACTIVITY_CFG_ACTIVATION_MODE_FIELD.index = 9
-ACTIVITY_CFG_ACTIVATION_MODE_FIELD.label = 2
-ACTIVITY_CFG_ACTIVATION_MODE_FIELD.has_default_value = false
-ACTIVITY_CFG_ACTIVATION_MODE_FIELD.default_value = 0
-ACTIVITY_CFG_ACTIVATION_MODE_FIELD.type = 13
-ACTIVITY_CFG_ACTIVATION_MODE_FIELD.cpp_type = 3
-
-ACTIVITY_CFG_START_WEEKS_FIELD.name = "start_weeks"
-ACTIVITY_CFG_START_WEEKS_FIELD.full_name = ".ftcfg.activity_cfg.start_weeks"
-ACTIVITY_CFG_START_WEEKS_FIELD.number = 11
-ACTIVITY_CFG_START_WEEKS_FIELD.index = 10
-ACTIVITY_CFG_START_WEEKS_FIELD.label = 3
-ACTIVITY_CFG_START_WEEKS_FIELD.has_default_value = false
-ACTIVITY_CFG_START_WEEKS_FIELD.default_value = {}
-ACTIVITY_CFG_START_WEEKS_FIELD.type = 13
-ACTIVITY_CFG_START_WEEKS_FIELD.cpp_type = 3
-
-ACTIVITY_CFG_SIGNUP_TIME_FIELD.name = "signup_time"
-ACTIVITY_CFG_SIGNUP_TIME_FIELD.full_name = ".ftcfg.activity_cfg.signup_time"
-ACTIVITY_CFG_SIGNUP_TIME_FIELD.number = 12
-ACTIVITY_CFG_SIGNUP_TIME_FIELD.index = 11
-ACTIVITY_CFG_SIGNUP_TIME_FIELD.label = 3
-ACTIVITY_CFG_SIGNUP_TIME_FIELD.has_default_value = false
-ACTIVITY_CFG_SIGNUP_TIME_FIELD.default_value = {}
-ACTIVITY_CFG_SIGNUP_TIME_FIELD.type = 9
-ACTIVITY_CFG_SIGNUP_TIME_FIELD.cpp_type = 9
-
-ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.name = "signdown_time"
-ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.full_name = ".ftcfg.activity_cfg.signdown_time"
-ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.number = 13
-ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.index = 12
-ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.label = 3
-ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.has_default_value = false
-ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.default_value = {}
-ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.type = 9
-ACTIVITY_CFG_SIGNDOWN_TIME_FIELD.cpp_type = 9
-
-ACTIVITY_CFG_BEGIN_TIME_FIELD.name = "begin_time"
-ACTIVITY_CFG_BEGIN_TIME_FIELD.full_name = ".ftcfg.activity_cfg.begin_time"
-ACTIVITY_CFG_BEGIN_TIME_FIELD.number = 14
-ACTIVITY_CFG_BEGIN_TIME_FIELD.index = 13
-ACTIVITY_CFG_BEGIN_TIME_FIELD.label = 3
-ACTIVITY_CFG_BEGIN_TIME_FIELD.has_default_value = false
-ACTIVITY_CFG_BEGIN_TIME_FIELD.default_value = {}
-ACTIVITY_CFG_BEGIN_TIME_FIELD.type = 9
-ACTIVITY_CFG_BEGIN_TIME_FIELD.cpp_type = 9
-
-ACTIVITY_CFG_END_TIME_FIELD.name = "end_time"
-ACTIVITY_CFG_END_TIME_FIELD.full_name = ".ftcfg.activity_cfg.end_time"
-ACTIVITY_CFG_END_TIME_FIELD.number = 15
-ACTIVITY_CFG_END_TIME_FIELD.index = 14
-ACTIVITY_CFG_END_TIME_FIELD.label = 3
-ACTIVITY_CFG_END_TIME_FIELD.has_default_value = false
-ACTIVITY_CFG_END_TIME_FIELD.default_value = {}
-ACTIVITY_CFG_END_TIME_FIELD.type = 9
-ACTIVITY_CFG_END_TIME_FIELD.cpp_type = 9
-
-ACTIVITY_CFG_DAILY_TYPE_FIELD.name = "daily_type"
-ACTIVITY_CFG_DAILY_TYPE_FIELD.full_name = ".ftcfg.activity_cfg.daily_type"
-ACTIVITY_CFG_DAILY_TYPE_FIELD.number = 16
-ACTIVITY_CFG_DAILY_TYPE_FIELD.index = 15
-ACTIVITY_CFG_DAILY_TYPE_FIELD.label = 2
-ACTIVITY_CFG_DAILY_TYPE_FIELD.has_default_value = false
-ACTIVITY_CFG_DAILY_TYPE_FIELD.default_value = 0
-ACTIVITY_CFG_DAILY_TYPE_FIELD.type = 5
-ACTIVITY_CFG_DAILY_TYPE_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_WHETHER_BATTLE_FIELD.name = "whether_battle"
-ACTIVITY_CFG_WHETHER_BATTLE_FIELD.full_name = ".ftcfg.activity_cfg.whether_battle"
-ACTIVITY_CFG_WHETHER_BATTLE_FIELD.number = 17
-ACTIVITY_CFG_WHETHER_BATTLE_FIELD.index = 16
-ACTIVITY_CFG_WHETHER_BATTLE_FIELD.label = 2
-ACTIVITY_CFG_WHETHER_BATTLE_FIELD.has_default_value = false
-ACTIVITY_CFG_WHETHER_BATTLE_FIELD.default_value = 0
-ACTIVITY_CFG_WHETHER_BATTLE_FIELD.type = 5
-ACTIVITY_CFG_WHETHER_BATTLE_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_DACTIVITY_ICON_FIELD.name = "dactivity_icon"
-ACTIVITY_CFG_DACTIVITY_ICON_FIELD.full_name = ".ftcfg.activity_cfg.dactivity_icon"
-ACTIVITY_CFG_DACTIVITY_ICON_FIELD.number = 18
-ACTIVITY_CFG_DACTIVITY_ICON_FIELD.index = 17
-ACTIVITY_CFG_DACTIVITY_ICON_FIELD.label = 2
-ACTIVITY_CFG_DACTIVITY_ICON_FIELD.has_default_value = false
-ACTIVITY_CFG_DACTIVITY_ICON_FIELD.default_value = 0
-ACTIVITY_CFG_DACTIVITY_ICON_FIELD.type = 5
-ACTIVITY_CFG_DACTIVITY_ICON_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_PARTAKE_MODE_FIELD.name = "partake_mode"
-ACTIVITY_CFG_PARTAKE_MODE_FIELD.full_name = ".ftcfg.activity_cfg.partake_mode"
-ACTIVITY_CFG_PARTAKE_MODE_FIELD.number = 19
-ACTIVITY_CFG_PARTAKE_MODE_FIELD.index = 18
-ACTIVITY_CFG_PARTAKE_MODE_FIELD.label = 2
-ACTIVITY_CFG_PARTAKE_MODE_FIELD.has_default_value = false
-ACTIVITY_CFG_PARTAKE_MODE_FIELD.default_value = 0
-ACTIVITY_CFG_PARTAKE_MODE_FIELD.type = 5
-ACTIVITY_CFG_PARTAKE_MODE_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.name = "partake_subtype"
-ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.full_name = ".ftcfg.activity_cfg.partake_subtype"
-ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.number = 20
-ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.index = 19
-ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.label = 2
-ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.has_default_value = false
-ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.default_value = 0
-ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.type = 5
-ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_TICKETITEM_ID_FIELD.name = "ticketitem_id"
-ACTIVITY_CFG_TICKETITEM_ID_FIELD.full_name = ".ftcfg.activity_cfg.ticketitem_id"
-ACTIVITY_CFG_TICKETITEM_ID_FIELD.number = 21
-ACTIVITY_CFG_TICKETITEM_ID_FIELD.index = 20
-ACTIVITY_CFG_TICKETITEM_ID_FIELD.label = 2
-ACTIVITY_CFG_TICKETITEM_ID_FIELD.has_default_value = false
-ACTIVITY_CFG_TICKETITEM_ID_FIELD.default_value = 0
-ACTIVITY_CFG_TICKETITEM_ID_FIELD.type = 5
-ACTIVITY_CFG_TICKETITEM_ID_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.name = "ticketitem_count"
-ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.full_name = ".ftcfg.activity_cfg.ticketitem_count"
-ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.number = 22
-ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.index = 21
-ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.label = 2
-ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.has_default_value = false
-ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.default_value = 0
-ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.type = 5
-ACTIVITY_CFG_TICKETITEM_COUNT_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.name = "conduct_sceneid"
-ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.full_name = ".ftcfg.activity_cfg.conduct_sceneid"
-ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.number = 23
-ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.index = 22
-ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.label = 2
-ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.has_default_value = false
-ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.default_value = 0
-ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.type = 5
-ACTIVITY_CFG_CONDUCT_SCENEID_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_FINDING_PATH_FIELD.name = "finding_path"
-ACTIVITY_CFG_FINDING_PATH_FIELD.full_name = ".ftcfg.activity_cfg.finding_path"
-ACTIVITY_CFG_FINDING_PATH_FIELD.number = 24
-ACTIVITY_CFG_FINDING_PATH_FIELD.index = 23
-ACTIVITY_CFG_FINDING_PATH_FIELD.label = 2
-ACTIVITY_CFG_FINDING_PATH_FIELD.has_default_value = false
-ACTIVITY_CFG_FINDING_PATH_FIELD.default_value = 0
-ACTIVITY_CFG_FINDING_PATH_FIELD.type = 5
-ACTIVITY_CFG_FINDING_PATH_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_OPEN_FUNC_FIELD.name = "open_func"
-ACTIVITY_CFG_OPEN_FUNC_FIELD.full_name = ".ftcfg.activity_cfg.open_func"
-ACTIVITY_CFG_OPEN_FUNC_FIELD.number = 25
-ACTIVITY_CFG_OPEN_FUNC_FIELD.index = 24
-ACTIVITY_CFG_OPEN_FUNC_FIELD.label = 2
-ACTIVITY_CFG_OPEN_FUNC_FIELD.has_default_value = false
-ACTIVITY_CFG_OPEN_FUNC_FIELD.default_value = nil
-ACTIVITY_CFG_OPEN_FUNC_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
-ACTIVITY_CFG_OPEN_FUNC_FIELD.type = 14
-ACTIVITY_CFG_OPEN_FUNC_FIELD.cpp_type = 8
-
-ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.name = "open_func_param"
-ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.full_name = ".ftcfg.activity_cfg.open_func_param"
-ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.number = 26
-ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.index = 25
-ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.label = 2
-ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.has_default_value = false
-ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.default_value = 0
-ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.type = 5
-ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_ITEM_ID_FIELD.name = "item_id"
-ACTIVITY_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.activity_cfg.item_id"
-ACTIVITY_CFG_ITEM_ID_FIELD.number = 27
-ACTIVITY_CFG_ITEM_ID_FIELD.index = 26
-ACTIVITY_CFG_ITEM_ID_FIELD.label = 2
-ACTIVITY_CFG_ITEM_ID_FIELD.has_default_value = false
-ACTIVITY_CFG_ITEM_ID_FIELD.default_value = 0
-ACTIVITY_CFG_ITEM_ID_FIELD.type = 5
-ACTIVITY_CFG_ITEM_ID_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_ITEM_COUNT_FIELD.name = "item_count"
-ACTIVITY_CFG_ITEM_COUNT_FIELD.full_name = ".ftcfg.activity_cfg.item_count"
-ACTIVITY_CFG_ITEM_COUNT_FIELD.number = 28
-ACTIVITY_CFG_ITEM_COUNT_FIELD.index = 27
-ACTIVITY_CFG_ITEM_COUNT_FIELD.label = 2
-ACTIVITY_CFG_ITEM_COUNT_FIELD.has_default_value = false
-ACTIVITY_CFG_ITEM_COUNT_FIELD.default_value = 0
-ACTIVITY_CFG_ITEM_COUNT_FIELD.type = 5
-ACTIVITY_CFG_ITEM_COUNT_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_TIME_SHOW_FIELD.name = "time_show"
-ACTIVITY_CFG_TIME_SHOW_FIELD.full_name = ".ftcfg.activity_cfg.time_show"
-ACTIVITY_CFG_TIME_SHOW_FIELD.number = 29
-ACTIVITY_CFG_TIME_SHOW_FIELD.index = 28
-ACTIVITY_CFG_TIME_SHOW_FIELD.label = 2
-ACTIVITY_CFG_TIME_SHOW_FIELD.has_default_value = false
-ACTIVITY_CFG_TIME_SHOW_FIELD.default_value = 0
-ACTIVITY_CFG_TIME_SHOW_FIELD.type = 5
-ACTIVITY_CFG_TIME_SHOW_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_FORM_SHOW_FIELD.name = "form_show"
-ACTIVITY_CFG_FORM_SHOW_FIELD.full_name = ".ftcfg.activity_cfg.form_show"
-ACTIVITY_CFG_FORM_SHOW_FIELD.number = 30
-ACTIVITY_CFG_FORM_SHOW_FIELD.index = 29
-ACTIVITY_CFG_FORM_SHOW_FIELD.label = 2
-ACTIVITY_CFG_FORM_SHOW_FIELD.has_default_value = false
-ACTIVITY_CFG_FORM_SHOW_FIELD.default_value = 0
-ACTIVITY_CFG_FORM_SHOW_FIELD.type = 5
-ACTIVITY_CFG_FORM_SHOW_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_TIPS_SHOW_FIELD.name = "tips_show"
-ACTIVITY_CFG_TIPS_SHOW_FIELD.full_name = ".ftcfg.activity_cfg.tips_show"
-ACTIVITY_CFG_TIPS_SHOW_FIELD.number = 31
-ACTIVITY_CFG_TIPS_SHOW_FIELD.index = 30
-ACTIVITY_CFG_TIPS_SHOW_FIELD.label = 2
-ACTIVITY_CFG_TIPS_SHOW_FIELD.has_default_value = false
-ACTIVITY_CFG_TIPS_SHOW_FIELD.default_value = 0
-ACTIVITY_CFG_TIPS_SHOW_FIELD.type = 5
-ACTIVITY_CFG_TIPS_SHOW_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.name = "crystal_show"
-ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.full_name = ".ftcfg.activity_cfg.crystal_show"
-ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.number = 32
-ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.index = 31
-ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.label = 3
-ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.has_default_value = false
-ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.default_value = {}
-ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.type = 5
-ACTIVITY_CFG_CRYSTAL_SHOW_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_ITEMS_SHOW_FIELD.name = "items_show"
-ACTIVITY_CFG_ITEMS_SHOW_FIELD.full_name = ".ftcfg.activity_cfg.items_show"
-ACTIVITY_CFG_ITEMS_SHOW_FIELD.number = 33
-ACTIVITY_CFG_ITEMS_SHOW_FIELD.index = 32
-ACTIVITY_CFG_ITEMS_SHOW_FIELD.label = 3
-ACTIVITY_CFG_ITEMS_SHOW_FIELD.has_default_value = false
-ACTIVITY_CFG_ITEMS_SHOW_FIELD.default_value = {}
-ACTIVITY_CFG_ITEMS_SHOW_FIELD.type = 5
-ACTIVITY_CFG_ITEMS_SHOW_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_CUE_SHOW_FIELD.name = "cue_show"
-ACTIVITY_CFG_CUE_SHOW_FIELD.full_name = ".ftcfg.activity_cfg.cue_show"
-ACTIVITY_CFG_CUE_SHOW_FIELD.number = 34
-ACTIVITY_CFG_CUE_SHOW_FIELD.index = 33
-ACTIVITY_CFG_CUE_SHOW_FIELD.label = 2
-ACTIVITY_CFG_CUE_SHOW_FIELD.has_default_value = false
-ACTIVITY_CFG_CUE_SHOW_FIELD.default_value = 0
-ACTIVITY_CFG_CUE_SHOW_FIELD.type = 5
-ACTIVITY_CFG_CUE_SHOW_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_CUE_TEXT_FIELD.name = "cue_text"
-ACTIVITY_CFG_CUE_TEXT_FIELD.full_name = ".ftcfg.activity_cfg.cue_text"
-ACTIVITY_CFG_CUE_TEXT_FIELD.number = 35
-ACTIVITY_CFG_CUE_TEXT_FIELD.index = 34
-ACTIVITY_CFG_CUE_TEXT_FIELD.label = 2
-ACTIVITY_CFG_CUE_TEXT_FIELD.has_default_value = false
-ACTIVITY_CFG_CUE_TEXT_FIELD.default_value = 0
-ACTIVITY_CFG_CUE_TEXT_FIELD.type = 5
-ACTIVITY_CFG_CUE_TEXT_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_CORRECT_TEXT_FIELD.name = "correct_text"
-ACTIVITY_CFG_CORRECT_TEXT_FIELD.full_name = ".ftcfg.activity_cfg.correct_text"
-ACTIVITY_CFG_CORRECT_TEXT_FIELD.number = 36
-ACTIVITY_CFG_CORRECT_TEXT_FIELD.index = 35
-ACTIVITY_CFG_CORRECT_TEXT_FIELD.label = 2
-ACTIVITY_CFG_CORRECT_TEXT_FIELD.has_default_value = false
-ACTIVITY_CFG_CORRECT_TEXT_FIELD.default_value = 0
-ACTIVITY_CFG_CORRECT_TEXT_FIELD.type = 5
-ACTIVITY_CFG_CORRECT_TEXT_FIELD.cpp_type = 1
-
-ACTIVITY_CFG_NEGATE_TEXT_FIELD.name = "negate_text"
-ACTIVITY_CFG_NEGATE_TEXT_FIELD.full_name = ".ftcfg.activity_cfg.negate_text"
-ACTIVITY_CFG_NEGATE_TEXT_FIELD.number = 37
-ACTIVITY_CFG_NEGATE_TEXT_FIELD.index = 36
-ACTIVITY_CFG_NEGATE_TEXT_FIELD.label = 2
-ACTIVITY_CFG_NEGATE_TEXT_FIELD.has_default_value = false
-ACTIVITY_CFG_NEGATE_TEXT_FIELD.default_value = 0
-ACTIVITY_CFG_NEGATE_TEXT_FIELD.type = 5
-ACTIVITY_CFG_NEGATE_TEXT_FIELD.cpp_type = 1
-
-ACTIVITY_CFG.name = "activity_cfg"
-ACTIVITY_CFG.full_name = ".ftcfg.activity_cfg"
-ACTIVITY_CFG.nested_types = {}
-ACTIVITY_CFG.enum_types = {}
-ACTIVITY_CFG.fields = {ACTIVITY_CFG_GUID_FIELD, ACTIVITY_CFG_DACTIVITY_NAME_FIELD, ACTIVITY_CFG_NAME_FIELD, ACTIVITY_CFG_TYPE_FIELD, ACTIVITY_CFG_ACTIVITY_PLAY_FIELD, ACTIVITY_CFG_NEED_LEVEL_FIELD, ACTIVITY_CFG_TOTAL_TIMES_FIELD, ACTIVITY_CFG_ACTIVATION_POINT_FIELD, ACTIVITY_CFG_ACTIVATION_TOPLIMIT_FIELD, ACTIVITY_CFG_ACTIVATION_MODE_FIELD, ACTIVITY_CFG_START_WEEKS_FIELD, ACTIVITY_CFG_SIGNUP_TIME_FIELD, ACTIVITY_CFG_SIGNDOWN_TIME_FIELD, ACTIVITY_CFG_BEGIN_TIME_FIELD, ACTIVITY_CFG_END_TIME_FIELD, ACTIVITY_CFG_DAILY_TYPE_FIELD, ACTIVITY_CFG_WHETHER_BATTLE_FIELD, ACTIVITY_CFG_DACTIVITY_ICON_FIELD, ACTIVITY_CFG_PARTAKE_MODE_FIELD, ACTIVITY_CFG_PARTAKE_SUBTYPE_FIELD, ACTIVITY_CFG_TICKETITEM_ID_FIELD, ACTIVITY_CFG_TICKETITEM_COUNT_FIELD, ACTIVITY_CFG_CONDUCT_SCENEID_FIELD, ACTIVITY_CFG_FINDING_PATH_FIELD, ACTIVITY_CFG_OPEN_FUNC_FIELD, ACTIVITY_CFG_OPEN_FUNC_PARAM_FIELD, ACTIVITY_CFG_ITEM_ID_FIELD, ACTIVITY_CFG_ITEM_COUNT_FIELD, ACTIVITY_CFG_TIME_SHOW_FIELD, ACTIVITY_CFG_FORM_SHOW_FIELD, ACTIVITY_CFG_TIPS_SHOW_FIELD, ACTIVITY_CFG_CRYSTAL_SHOW_FIELD, ACTIVITY_CFG_ITEMS_SHOW_FIELD, ACTIVITY_CFG_CUE_SHOW_FIELD, ACTIVITY_CFG_CUE_TEXT_FIELD, ACTIVITY_CFG_CORRECT_TEXT_FIELD, ACTIVITY_CFG_NEGATE_TEXT_FIELD}
-ACTIVITY_CFG.is_extendable = false
-ACTIVITY_CFG.extensions = {}
-ACTIVITY_CFGS_ITEMS_FIELD.name = "items"
-ACTIVITY_CFGS_ITEMS_FIELD.full_name = ".ftcfg.activity_cfgs.items"
-ACTIVITY_CFGS_ITEMS_FIELD.number = 1
-ACTIVITY_CFGS_ITEMS_FIELD.index = 0
-ACTIVITY_CFGS_ITEMS_FIELD.label = 3
-ACTIVITY_CFGS_ITEMS_FIELD.has_default_value = false
-ACTIVITY_CFGS_ITEMS_FIELD.default_value = {}
-ACTIVITY_CFGS_ITEMS_FIELD.message_type = ACTIVITY_CFG
-ACTIVITY_CFGS_ITEMS_FIELD.type = 11
-ACTIVITY_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ACTIVITY_CFGS.name = "activity_cfgs"
-ACTIVITY_CFGS.full_name = ".ftcfg.activity_cfgs"
-ACTIVITY_CFGS.nested_types = {}
-ACTIVITY_CFGS.enum_types = {}
-ACTIVITY_CFGS.fields = {ACTIVITY_CFGS_ITEMS_FIELD}
-ACTIVITY_CFGS.is_extendable = false
-ACTIVITY_CFGS.extensions = {}
-ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.name = "everyday_toplimit"
-ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.full_name = ".ftcfg.activation_cfg.everyday_toplimit"
-ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.number = 1
-ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.index = 0
-ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.label = 2
-ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.has_default_value = false
-ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.default_value = 0
-ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.type = 13
-ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD.cpp_type = 3
-
-ACTIVATION_CFG_RESET_TIME_FIELD.name = "reset_time"
-ACTIVATION_CFG_RESET_TIME_FIELD.full_name = ".ftcfg.activation_cfg.reset_time"
-ACTIVATION_CFG_RESET_TIME_FIELD.number = 2
-ACTIVATION_CFG_RESET_TIME_FIELD.index = 1
-ACTIVATION_CFG_RESET_TIME_FIELD.label = 3
-ACTIVATION_CFG_RESET_TIME_FIELD.has_default_value = false
-ACTIVATION_CFG_RESET_TIME_FIELD.default_value = {}
-ACTIVATION_CFG_RESET_TIME_FIELD.type = 9
-ACTIVATION_CFG_RESET_TIME_FIELD.cpp_type = 9
-
-ACTIVATION_CFG_DEPOSIT_LV_FIELD.name = "deposit_lv"
-ACTIVATION_CFG_DEPOSIT_LV_FIELD.full_name = ".ftcfg.activation_cfg.deposit_lv"
-ACTIVATION_CFG_DEPOSIT_LV_FIELD.number = 3
-ACTIVATION_CFG_DEPOSIT_LV_FIELD.index = 2
-ACTIVATION_CFG_DEPOSIT_LV_FIELD.label = 3
-ACTIVATION_CFG_DEPOSIT_LV_FIELD.has_default_value = false
-ACTIVATION_CFG_DEPOSIT_LV_FIELD.default_value = {}
-ACTIVATION_CFG_DEPOSIT_LV_FIELD.type = 13
-ACTIVATION_CFG_DEPOSIT_LV_FIELD.cpp_type = 3
-
-ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.name = "deposit_toplimit"
-ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.full_name = ".ftcfg.activation_cfg.deposit_toplimit"
-ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.number = 4
-ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.index = 3
-ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.label = 3
-ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.has_default_value = false
-ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.default_value = {}
-ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.type = 13
-ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD.cpp_type = 3
-
-ACTIVATION_CFG.name = "activation_cfg"
-ACTIVATION_CFG.full_name = ".ftcfg.activation_cfg"
-ACTIVATION_CFG.nested_types = {}
-ACTIVATION_CFG.enum_types = {}
-ACTIVATION_CFG.fields = {ACTIVATION_CFG_EVERYDAY_TOPLIMIT_FIELD, ACTIVATION_CFG_RESET_TIME_FIELD, ACTIVATION_CFG_DEPOSIT_LV_FIELD, ACTIVATION_CFG_DEPOSIT_TOPLIMIT_FIELD}
-ACTIVATION_CFG.is_extendable = false
-ACTIVATION_CFG.extensions = {}
-ACTIVATION_CFGS_ITEMS_FIELD.name = "items"
-ACTIVATION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.activation_cfgs.items"
-ACTIVATION_CFGS_ITEMS_FIELD.number = 1
-ACTIVATION_CFGS_ITEMS_FIELD.index = 0
-ACTIVATION_CFGS_ITEMS_FIELD.label = 3
-ACTIVATION_CFGS_ITEMS_FIELD.has_default_value = false
-ACTIVATION_CFGS_ITEMS_FIELD.default_value = {}
-ACTIVATION_CFGS_ITEMS_FIELD.message_type = ACTIVATION_CFG
-ACTIVATION_CFGS_ITEMS_FIELD.type = 11
-ACTIVATION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ACTIVATION_CFGS.name = "activation_cfgs"
-ACTIVATION_CFGS.full_name = ".ftcfg.activation_cfgs"
-ACTIVATION_CFGS.nested_types = {}
-ACTIVATION_CFGS.enum_types = {}
-ACTIVATION_CFGS.fields = {ACTIVATION_CFGS_ITEMS_FIELD}
-ACTIVATION_CFGS.is_extendable = false
-ACTIVATION_CFGS.extensions = {}
-ACTIVATION_REWARD_CFG_ID_FIELD.name = "id"
-ACTIVATION_REWARD_CFG_ID_FIELD.full_name = ".ftcfg.activation_reward_cfg.id"
-ACTIVATION_REWARD_CFG_ID_FIELD.number = 1
-ACTIVATION_REWARD_CFG_ID_FIELD.index = 0
-ACTIVATION_REWARD_CFG_ID_FIELD.label = 2
-ACTIVATION_REWARD_CFG_ID_FIELD.has_default_value = false
-ACTIVATION_REWARD_CFG_ID_FIELD.default_value = 0
-ACTIVATION_REWARD_CFG_ID_FIELD.type = 13
-ACTIVATION_REWARD_CFG_ID_FIELD.cpp_type = 3
-
-ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.name = "activation_stage"
-ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.full_name = ".ftcfg.activation_reward_cfg.activation_stage"
-ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.number = 2
-ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.index = 1
-ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.label = 2
-ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.has_default_value = false
-ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.default_value = 0
-ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.type = 13
-ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD.cpp_type = 3
-
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.name = "reward_attribute_id"
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.full_name = ".ftcfg.activation_reward_cfg.reward_attribute_id"
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.number = 3
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.index = 2
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.label = 2
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.has_default_value = false
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.default_value = 0
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.type = 13
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.cpp_type = 3
-
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.name = "reward_attribute_count"
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.activation_reward_cfg.reward_attribute_count"
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.number = 4
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.index = 3
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.label = 2
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.has_default_value = false
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.default_value = 0
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.type = 13
-ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.cpp_type = 3
-
-ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.name = "reward_item_id"
-ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.full_name = ".ftcfg.activation_reward_cfg.reward_item_id"
-ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.number = 5
-ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.index = 4
-ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.label = 2
-ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.has_default_value = false
-ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.default_value = 0
-ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.type = 13
-ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD.cpp_type = 3
-
-ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.name = "reward_item_count"
-ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.full_name = ".ftcfg.activation_reward_cfg.reward_item_count"
-ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.number = 6
-ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.index = 5
-ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.label = 2
-ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.has_default_value = false
-ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.default_value = 0
-ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.type = 13
-ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD.cpp_type = 3
-
-ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.name = "reward_plus"
-ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.full_name = ".ftcfg.activation_reward_cfg.reward_plus"
-ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.number = 7
-ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.index = 6
-ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.label = 2
-ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.has_default_value = false
-ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.default_value = 0
-ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.type = 13
-ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD.cpp_type = 3
-
-ACTIVATION_REWARD_CFG.name = "activation_reward_cfg"
-ACTIVATION_REWARD_CFG.full_name = ".ftcfg.activation_reward_cfg"
-ACTIVATION_REWARD_CFG.nested_types = {}
-ACTIVATION_REWARD_CFG.enum_types = {}
-ACTIVATION_REWARD_CFG.fields = {ACTIVATION_REWARD_CFG_ID_FIELD, ACTIVATION_REWARD_CFG_ACTIVATION_STAGE_FIELD, ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD, ACTIVATION_REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD, ACTIVATION_REWARD_CFG_REWARD_ITEM_ID_FIELD, ACTIVATION_REWARD_CFG_REWARD_ITEM_COUNT_FIELD, ACTIVATION_REWARD_CFG_REWARD_PLUS_FIELD}
-ACTIVATION_REWARD_CFG.is_extendable = false
-ACTIVATION_REWARD_CFG.extensions = {}
-ACTIVATION_REWARD_CFGS_ITEMS_FIELD.name = "items"
-ACTIVATION_REWARD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.activation_reward_cfgs.items"
-ACTIVATION_REWARD_CFGS_ITEMS_FIELD.number = 1
-ACTIVATION_REWARD_CFGS_ITEMS_FIELD.index = 0
-ACTIVATION_REWARD_CFGS_ITEMS_FIELD.label = 3
-ACTIVATION_REWARD_CFGS_ITEMS_FIELD.has_default_value = false
-ACTIVATION_REWARD_CFGS_ITEMS_FIELD.default_value = {}
-ACTIVATION_REWARD_CFGS_ITEMS_FIELD.message_type = ACTIVATION_REWARD_CFG
-ACTIVATION_REWARD_CFGS_ITEMS_FIELD.type = 11
-ACTIVATION_REWARD_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ACTIVATION_REWARD_CFGS.name = "activation_reward_cfgs"
-ACTIVATION_REWARD_CFGS.full_name = ".ftcfg.activation_reward_cfgs"
-ACTIVATION_REWARD_CFGS.nested_types = {}
-ACTIVATION_REWARD_CFGS.enum_types = {}
-ACTIVATION_REWARD_CFGS.fields = {ACTIVATION_REWARD_CFGS_ITEMS_FIELD}
-ACTIVATION_REWARD_CFGS.is_extendable = false
-ACTIVATION_REWARD_CFGS.extensions = {}
-TRADE_TOP_TABS_CFG_ID_FIELD.name = "id"
-TRADE_TOP_TABS_CFG_ID_FIELD.full_name = ".ftcfg.trade_top_tabs_cfg.id"
-TRADE_TOP_TABS_CFG_ID_FIELD.number = 1
-TRADE_TOP_TABS_CFG_ID_FIELD.index = 0
-TRADE_TOP_TABS_CFG_ID_FIELD.label = 2
-TRADE_TOP_TABS_CFG_ID_FIELD.has_default_value = false
-TRADE_TOP_TABS_CFG_ID_FIELD.default_value = 0
-TRADE_TOP_TABS_CFG_ID_FIELD.type = 5
-TRADE_TOP_TABS_CFG_ID_FIELD.cpp_type = 1
-
-TRADE_TOP_TABS_CFG_NAME_FIELD.name = "name"
-TRADE_TOP_TABS_CFG_NAME_FIELD.full_name = ".ftcfg.trade_top_tabs_cfg.name"
-TRADE_TOP_TABS_CFG_NAME_FIELD.number = 2
-TRADE_TOP_TABS_CFG_NAME_FIELD.index = 1
-TRADE_TOP_TABS_CFG_NAME_FIELD.label = 2
-TRADE_TOP_TABS_CFG_NAME_FIELD.has_default_value = false
-TRADE_TOP_TABS_CFG_NAME_FIELD.default_value = ""
-TRADE_TOP_TABS_CFG_NAME_FIELD.type = 9
-TRADE_TOP_TABS_CFG_NAME_FIELD.cpp_type = 9
-
-TRADE_TOP_TABS_CFG_TABS_FIELD.name = "tabs"
-TRADE_TOP_TABS_CFG_TABS_FIELD.full_name = ".ftcfg.trade_top_tabs_cfg.tabs"
-TRADE_TOP_TABS_CFG_TABS_FIELD.number = 3
-TRADE_TOP_TABS_CFG_TABS_FIELD.index = 2
-TRADE_TOP_TABS_CFG_TABS_FIELD.label = 3
-TRADE_TOP_TABS_CFG_TABS_FIELD.has_default_value = false
-TRADE_TOP_TABS_CFG_TABS_FIELD.default_value = {}
-TRADE_TOP_TABS_CFG_TABS_FIELD.type = 5
-TRADE_TOP_TABS_CFG_TABS_FIELD.cpp_type = 1
-
-TRADE_TOP_TABS_CFG.name = "trade_top_tabs_cfg"
-TRADE_TOP_TABS_CFG.full_name = ".ftcfg.trade_top_tabs_cfg"
-TRADE_TOP_TABS_CFG.nested_types = {}
-TRADE_TOP_TABS_CFG.enum_types = {}
-TRADE_TOP_TABS_CFG.fields = {TRADE_TOP_TABS_CFG_ID_FIELD, TRADE_TOP_TABS_CFG_NAME_FIELD, TRADE_TOP_TABS_CFG_TABS_FIELD}
-TRADE_TOP_TABS_CFG.is_extendable = false
-TRADE_TOP_TABS_CFG.extensions = {}
-TRADE_TOP_TABS_CFGS_ITEMS_FIELD.name = "items"
-TRADE_TOP_TABS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.trade_top_tabs_cfgs.items"
-TRADE_TOP_TABS_CFGS_ITEMS_FIELD.number = 1
-TRADE_TOP_TABS_CFGS_ITEMS_FIELD.index = 0
-TRADE_TOP_TABS_CFGS_ITEMS_FIELD.label = 3
-TRADE_TOP_TABS_CFGS_ITEMS_FIELD.has_default_value = false
-TRADE_TOP_TABS_CFGS_ITEMS_FIELD.default_value = {}
-TRADE_TOP_TABS_CFGS_ITEMS_FIELD.message_type = TRADE_TOP_TABS_CFG
-TRADE_TOP_TABS_CFGS_ITEMS_FIELD.type = 11
-TRADE_TOP_TABS_CFGS_ITEMS_FIELD.cpp_type = 10
-
-TRADE_TOP_TABS_CFGS.name = "trade_top_tabs_cfgs"
-TRADE_TOP_TABS_CFGS.full_name = ".ftcfg.trade_top_tabs_cfgs"
-TRADE_TOP_TABS_CFGS.nested_types = {}
-TRADE_TOP_TABS_CFGS.enum_types = {}
-TRADE_TOP_TABS_CFGS.fields = {TRADE_TOP_TABS_CFGS_ITEMS_FIELD}
-TRADE_TOP_TABS_CFGS.is_extendable = false
-TRADE_TOP_TABS_CFGS.extensions = {}
-TRADE_SUB_TABS_CFG_ID_FIELD.name = "id"
-TRADE_SUB_TABS_CFG_ID_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfg.id"
-TRADE_SUB_TABS_CFG_ID_FIELD.number = 1
-TRADE_SUB_TABS_CFG_ID_FIELD.index = 0
-TRADE_SUB_TABS_CFG_ID_FIELD.label = 2
-TRADE_SUB_TABS_CFG_ID_FIELD.has_default_value = false
-TRADE_SUB_TABS_CFG_ID_FIELD.default_value = 0
-TRADE_SUB_TABS_CFG_ID_FIELD.type = 5
-TRADE_SUB_TABS_CFG_ID_FIELD.cpp_type = 1
-
-TRADE_SUB_TABS_CFG_NAME_FIELD.name = "name"
-TRADE_SUB_TABS_CFG_NAME_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfg.name"
-TRADE_SUB_TABS_CFG_NAME_FIELD.number = 2
-TRADE_SUB_TABS_CFG_NAME_FIELD.index = 1
-TRADE_SUB_TABS_CFG_NAME_FIELD.label = 2
-TRADE_SUB_TABS_CFG_NAME_FIELD.has_default_value = false
-TRADE_SUB_TABS_CFG_NAME_FIELD.default_value = ""
-TRADE_SUB_TABS_CFG_NAME_FIELD.type = 9
-TRADE_SUB_TABS_CFG_NAME_FIELD.cpp_type = 9
-
-TRADE_SUB_TABS_CFG_RULES_FIELD.name = "rules"
-TRADE_SUB_TABS_CFG_RULES_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfg.rules"
-TRADE_SUB_TABS_CFG_RULES_FIELD.number = 3
-TRADE_SUB_TABS_CFG_RULES_FIELD.index = 2
-TRADE_SUB_TABS_CFG_RULES_FIELD.label = 3
-TRADE_SUB_TABS_CFG_RULES_FIELD.has_default_value = false
-TRADE_SUB_TABS_CFG_RULES_FIELD.default_value = {}
-TRADE_SUB_TABS_CFG_RULES_FIELD.type = 5
-TRADE_SUB_TABS_CFG_RULES_FIELD.cpp_type = 1
-
-TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.name = "filter_rules1"
-TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfg.filter_rules1"
-TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.number = 4
-TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.index = 3
-TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.label = 3
-TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.has_default_value = false
-TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.default_value = {}
-TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.type = 5
-TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD.cpp_type = 1
-
-TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.name = "filter_rules2"
-TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfg.filter_rules2"
-TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.number = 5
-TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.index = 4
-TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.label = 3
-TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.has_default_value = false
-TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.default_value = {}
-TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.type = 5
-TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD.cpp_type = 1
-
-TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.name = "filter_rules3"
-TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfg.filter_rules3"
-TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.number = 6
-TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.index = 5
-TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.label = 3
-TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.has_default_value = false
-TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.default_value = {}
-TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.type = 5
-TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD.cpp_type = 1
-
-TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.name = "filter_rules4"
-TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfg.filter_rules4"
-TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.number = 7
-TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.index = 6
-TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.label = 3
-TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.has_default_value = false
-TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.default_value = {}
-TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.type = 5
-TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD.cpp_type = 1
-
-TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.name = "sort_rules"
-TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfg.sort_rules"
-TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.number = 8
-TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.index = 7
-TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.label = 3
-TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.has_default_value = false
-TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.default_value = {}
-TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.type = 5
-TRADE_SUB_TABS_CFG_SORT_RULES_FIELD.cpp_type = 1
-
-TRADE_SUB_TABS_CFG.name = "trade_sub_tabs_cfg"
-TRADE_SUB_TABS_CFG.full_name = ".ftcfg.trade_sub_tabs_cfg"
-TRADE_SUB_TABS_CFG.nested_types = {}
-TRADE_SUB_TABS_CFG.enum_types = {}
-TRADE_SUB_TABS_CFG.fields = {TRADE_SUB_TABS_CFG_ID_FIELD, TRADE_SUB_TABS_CFG_NAME_FIELD, TRADE_SUB_TABS_CFG_RULES_FIELD, TRADE_SUB_TABS_CFG_FILTER_RULES1_FIELD, TRADE_SUB_TABS_CFG_FILTER_RULES2_FIELD, TRADE_SUB_TABS_CFG_FILTER_RULES3_FIELD, TRADE_SUB_TABS_CFG_FILTER_RULES4_FIELD, TRADE_SUB_TABS_CFG_SORT_RULES_FIELD}
-TRADE_SUB_TABS_CFG.is_extendable = false
-TRADE_SUB_TABS_CFG.extensions = {}
-TRADE_SUB_TABS_CFGS_ITEMS_FIELD.name = "items"
-TRADE_SUB_TABS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.trade_sub_tabs_cfgs.items"
-TRADE_SUB_TABS_CFGS_ITEMS_FIELD.number = 1
-TRADE_SUB_TABS_CFGS_ITEMS_FIELD.index = 0
-TRADE_SUB_TABS_CFGS_ITEMS_FIELD.label = 3
-TRADE_SUB_TABS_CFGS_ITEMS_FIELD.has_default_value = false
-TRADE_SUB_TABS_CFGS_ITEMS_FIELD.default_value = {}
-TRADE_SUB_TABS_CFGS_ITEMS_FIELD.message_type = TRADE_SUB_TABS_CFG
-TRADE_SUB_TABS_CFGS_ITEMS_FIELD.type = 11
-TRADE_SUB_TABS_CFGS_ITEMS_FIELD.cpp_type = 10
-
-TRADE_SUB_TABS_CFGS.name = "trade_sub_tabs_cfgs"
-TRADE_SUB_TABS_CFGS.full_name = ".ftcfg.trade_sub_tabs_cfgs"
-TRADE_SUB_TABS_CFGS.nested_types = {}
-TRADE_SUB_TABS_CFGS.enum_types = {}
-TRADE_SUB_TABS_CFGS.fields = {TRADE_SUB_TABS_CFGS_ITEMS_FIELD}
-TRADE_SUB_TABS_CFGS.is_extendable = false
-TRADE_SUB_TABS_CFGS.extensions = {}
-TRADE_FILTER_RULES_CFG_ID_FIELD.name = "id"
-TRADE_FILTER_RULES_CFG_ID_FIELD.full_name = ".ftcfg.trade_filter_rules_cfg.id"
-TRADE_FILTER_RULES_CFG_ID_FIELD.number = 1
-TRADE_FILTER_RULES_CFG_ID_FIELD.index = 0
-TRADE_FILTER_RULES_CFG_ID_FIELD.label = 2
-TRADE_FILTER_RULES_CFG_ID_FIELD.has_default_value = false
-TRADE_FILTER_RULES_CFG_ID_FIELD.default_value = 0
-TRADE_FILTER_RULES_CFG_ID_FIELD.type = 5
-TRADE_FILTER_RULES_CFG_ID_FIELD.cpp_type = 1
-
-TRADE_FILTER_RULES_CFG_NAME_FIELD.name = "name"
-TRADE_FILTER_RULES_CFG_NAME_FIELD.full_name = ".ftcfg.trade_filter_rules_cfg.name"
-TRADE_FILTER_RULES_CFG_NAME_FIELD.number = 2
-TRADE_FILTER_RULES_CFG_NAME_FIELD.index = 1
-TRADE_FILTER_RULES_CFG_NAME_FIELD.label = 2
-TRADE_FILTER_RULES_CFG_NAME_FIELD.has_default_value = false
-TRADE_FILTER_RULES_CFG_NAME_FIELD.default_value = ""
-TRADE_FILTER_RULES_CFG_NAME_FIELD.type = 9
-TRADE_FILTER_RULES_CFG_NAME_FIELD.cpp_type = 9
-
-TRADE_FILTER_RULES_CFG_FIELDS_FIELD.name = "fields"
-TRADE_FILTER_RULES_CFG_FIELDS_FIELD.full_name = ".ftcfg.trade_filter_rules_cfg.fields"
-TRADE_FILTER_RULES_CFG_FIELDS_FIELD.number = 3
-TRADE_FILTER_RULES_CFG_FIELDS_FIELD.index = 2
-TRADE_FILTER_RULES_CFG_FIELDS_FIELD.label = 3
-TRADE_FILTER_RULES_CFG_FIELDS_FIELD.has_default_value = false
-TRADE_FILTER_RULES_CFG_FIELDS_FIELD.default_value = {}
-TRADE_FILTER_RULES_CFG_FIELDS_FIELD.type = 9
-TRADE_FILTER_RULES_CFG_FIELDS_FIELD.cpp_type = 9
-
-TRADE_FILTER_RULES_CFG_VALUES_FIELD.name = "values"
-TRADE_FILTER_RULES_CFG_VALUES_FIELD.full_name = ".ftcfg.trade_filter_rules_cfg.values"
-TRADE_FILTER_RULES_CFG_VALUES_FIELD.number = 4
-TRADE_FILTER_RULES_CFG_VALUES_FIELD.index = 3
-TRADE_FILTER_RULES_CFG_VALUES_FIELD.label = 3
-TRADE_FILTER_RULES_CFG_VALUES_FIELD.has_default_value = false
-TRADE_FILTER_RULES_CFG_VALUES_FIELD.default_value = {}
-TRADE_FILTER_RULES_CFG_VALUES_FIELD.type = 5
-TRADE_FILTER_RULES_CFG_VALUES_FIELD.cpp_type = 1
-
-TRADE_FILTER_RULES_CFG.name = "trade_filter_rules_cfg"
-TRADE_FILTER_RULES_CFG.full_name = ".ftcfg.trade_filter_rules_cfg"
-TRADE_FILTER_RULES_CFG.nested_types = {}
-TRADE_FILTER_RULES_CFG.enum_types = {}
-TRADE_FILTER_RULES_CFG.fields = {TRADE_FILTER_RULES_CFG_ID_FIELD, TRADE_FILTER_RULES_CFG_NAME_FIELD, TRADE_FILTER_RULES_CFG_FIELDS_FIELD, TRADE_FILTER_RULES_CFG_VALUES_FIELD}
-TRADE_FILTER_RULES_CFG.is_extendable = false
-TRADE_FILTER_RULES_CFG.extensions = {}
-TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.name = "items"
-TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.full_name = ".ftcfg.trade_filter_rules_cfgs.items"
-TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.number = 1
-TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.index = 0
-TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.label = 3
-TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.has_default_value = false
-TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.default_value = {}
-TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.message_type = TRADE_FILTER_RULES_CFG
-TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.type = 11
-TRADE_FILTER_RULES_CFGS_ITEMS_FIELD.cpp_type = 10
-
-TRADE_FILTER_RULES_CFGS.name = "trade_filter_rules_cfgs"
-TRADE_FILTER_RULES_CFGS.full_name = ".ftcfg.trade_filter_rules_cfgs"
-TRADE_FILTER_RULES_CFGS.nested_types = {}
-TRADE_FILTER_RULES_CFGS.enum_types = {}
-TRADE_FILTER_RULES_CFGS.fields = {TRADE_FILTER_RULES_CFGS_ITEMS_FIELD}
-TRADE_FILTER_RULES_CFGS.is_extendable = false
-TRADE_FILTER_RULES_CFGS.extensions = {}
-TRADE_SORT_RULES_CFG_ID_FIELD.name = "id"
-TRADE_SORT_RULES_CFG_ID_FIELD.full_name = ".ftcfg.trade_sort_rules_cfg.id"
-TRADE_SORT_RULES_CFG_ID_FIELD.number = 1
-TRADE_SORT_RULES_CFG_ID_FIELD.index = 0
-TRADE_SORT_RULES_CFG_ID_FIELD.label = 2
-TRADE_SORT_RULES_CFG_ID_FIELD.has_default_value = false
-TRADE_SORT_RULES_CFG_ID_FIELD.default_value = 0
-TRADE_SORT_RULES_CFG_ID_FIELD.type = 5
-TRADE_SORT_RULES_CFG_ID_FIELD.cpp_type = 1
-
-TRADE_SORT_RULES_CFG_NAME_FIELD.name = "name"
-TRADE_SORT_RULES_CFG_NAME_FIELD.full_name = ".ftcfg.trade_sort_rules_cfg.name"
-TRADE_SORT_RULES_CFG_NAME_FIELD.number = 2
-TRADE_SORT_RULES_CFG_NAME_FIELD.index = 1
-TRADE_SORT_RULES_CFG_NAME_FIELD.label = 2
-TRADE_SORT_RULES_CFG_NAME_FIELD.has_default_value = false
-TRADE_SORT_RULES_CFG_NAME_FIELD.default_value = ""
-TRADE_SORT_RULES_CFG_NAME_FIELD.type = 9
-TRADE_SORT_RULES_CFG_NAME_FIELD.cpp_type = 9
-
-TRADE_SORT_RULES_CFG_PROP_FIELD.name = "prop"
-TRADE_SORT_RULES_CFG_PROP_FIELD.full_name = ".ftcfg.trade_sort_rules_cfg.prop"
-TRADE_SORT_RULES_CFG_PROP_FIELD.number = 3
-TRADE_SORT_RULES_CFG_PROP_FIELD.index = 2
-TRADE_SORT_RULES_CFG_PROP_FIELD.label = 2
-TRADE_SORT_RULES_CFG_PROP_FIELD.has_default_value = false
-TRADE_SORT_RULES_CFG_PROP_FIELD.default_value = 0
-TRADE_SORT_RULES_CFG_PROP_FIELD.type = 5
-TRADE_SORT_RULES_CFG_PROP_FIELD.cpp_type = 1
-
-TRADE_SORT_RULES_CFG_UP_FIELD.name = "up"
-TRADE_SORT_RULES_CFG_UP_FIELD.full_name = ".ftcfg.trade_sort_rules_cfg.up"
-TRADE_SORT_RULES_CFG_UP_FIELD.number = 4
-TRADE_SORT_RULES_CFG_UP_FIELD.index = 3
-TRADE_SORT_RULES_CFG_UP_FIELD.label = 2
-TRADE_SORT_RULES_CFG_UP_FIELD.has_default_value = false
-TRADE_SORT_RULES_CFG_UP_FIELD.default_value = false
-TRADE_SORT_RULES_CFG_UP_FIELD.type = 8
-TRADE_SORT_RULES_CFG_UP_FIELD.cpp_type = 7
-
-TRADE_SORT_RULES_CFG.name = "trade_sort_rules_cfg"
-TRADE_SORT_RULES_CFG.full_name = ".ftcfg.trade_sort_rules_cfg"
-TRADE_SORT_RULES_CFG.nested_types = {}
-TRADE_SORT_RULES_CFG.enum_types = {}
-TRADE_SORT_RULES_CFG.fields = {TRADE_SORT_RULES_CFG_ID_FIELD, TRADE_SORT_RULES_CFG_NAME_FIELD, TRADE_SORT_RULES_CFG_PROP_FIELD, TRADE_SORT_RULES_CFG_UP_FIELD}
-TRADE_SORT_RULES_CFG.is_extendable = false
-TRADE_SORT_RULES_CFG.extensions = {}
-TRADE_SORT_RULES_CFGS_ITEMS_FIELD.name = "items"
-TRADE_SORT_RULES_CFGS_ITEMS_FIELD.full_name = ".ftcfg.trade_sort_rules_cfgs.items"
-TRADE_SORT_RULES_CFGS_ITEMS_FIELD.number = 1
-TRADE_SORT_RULES_CFGS_ITEMS_FIELD.index = 0
-TRADE_SORT_RULES_CFGS_ITEMS_FIELD.label = 3
-TRADE_SORT_RULES_CFGS_ITEMS_FIELD.has_default_value = false
-TRADE_SORT_RULES_CFGS_ITEMS_FIELD.default_value = {}
-TRADE_SORT_RULES_CFGS_ITEMS_FIELD.message_type = TRADE_SORT_RULES_CFG
-TRADE_SORT_RULES_CFGS_ITEMS_FIELD.type = 11
-TRADE_SORT_RULES_CFGS_ITEMS_FIELD.cpp_type = 10
-
-TRADE_SORT_RULES_CFGS.name = "trade_sort_rules_cfgs"
-TRADE_SORT_RULES_CFGS.full_name = ".ftcfg.trade_sort_rules_cfgs"
-TRADE_SORT_RULES_CFGS.nested_types = {}
-TRADE_SORT_RULES_CFGS.enum_types = {}
-TRADE_SORT_RULES_CFGS.fields = {TRADE_SORT_RULES_CFGS_ITEMS_FIELD}
-TRADE_SORT_RULES_CFGS.is_extendable = false
-TRADE_SORT_RULES_CFGS.extensions = {}
-BASE_PROP_CFG_PROF_TYPE_FIELD.name = "prof_type"
-BASE_PROP_CFG_PROF_TYPE_FIELD.full_name = ".ftcfg.base_prop_cfg.prof_type"
-BASE_PROP_CFG_PROF_TYPE_FIELD.number = 1
-BASE_PROP_CFG_PROF_TYPE_FIELD.index = 0
-BASE_PROP_CFG_PROF_TYPE_FIELD.label = 2
-BASE_PROP_CFG_PROF_TYPE_FIELD.has_default_value = false
-BASE_PROP_CFG_PROF_TYPE_FIELD.default_value = nil
-BASE_PROP_CFG_PROF_TYPE_FIELD.enum_type = config_predefine_pb.EPROFTYPE
-BASE_PROP_CFG_PROF_TYPE_FIELD.type = 14
-BASE_PROP_CFG_PROF_TYPE_FIELD.cpp_type = 8
-
-BASE_PROP_CFG_LEVEL_FIELD.name = "level"
-BASE_PROP_CFG_LEVEL_FIELD.full_name = ".ftcfg.base_prop_cfg.level"
-BASE_PROP_CFG_LEVEL_FIELD.number = 2
-BASE_PROP_CFG_LEVEL_FIELD.index = 1
-BASE_PROP_CFG_LEVEL_FIELD.label = 2
-BASE_PROP_CFG_LEVEL_FIELD.has_default_value = false
-BASE_PROP_CFG_LEVEL_FIELD.default_value = 0
-BASE_PROP_CFG_LEVEL_FIELD.type = 5
-BASE_PROP_CFG_LEVEL_FIELD.cpp_type = 1
-
-BASE_PROP_CFG_HP_MAX_FIELD.name = "hp_max"
-BASE_PROP_CFG_HP_MAX_FIELD.full_name = ".ftcfg.base_prop_cfg.hp_max"
-BASE_PROP_CFG_HP_MAX_FIELD.number = 3
-BASE_PROP_CFG_HP_MAX_FIELD.index = 2
-BASE_PROP_CFG_HP_MAX_FIELD.label = 2
-BASE_PROP_CFG_HP_MAX_FIELD.has_default_value = false
-BASE_PROP_CFG_HP_MAX_FIELD.default_value = 0.0
-BASE_PROP_CFG_HP_MAX_FIELD.type = 1
-BASE_PROP_CFG_HP_MAX_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_MP_MAX_FIELD.name = "mp_max"
-BASE_PROP_CFG_MP_MAX_FIELD.full_name = ".ftcfg.base_prop_cfg.mp_max"
-BASE_PROP_CFG_MP_MAX_FIELD.number = 4
-BASE_PROP_CFG_MP_MAX_FIELD.index = 3
-BASE_PROP_CFG_MP_MAX_FIELD.label = 2
-BASE_PROP_CFG_MP_MAX_FIELD.has_default_value = false
-BASE_PROP_CFG_MP_MAX_FIELD.default_value = 0.0
-BASE_PROP_CFG_MP_MAX_FIELD.type = 1
-BASE_PROP_CFG_MP_MAX_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_ATTACK_FIELD.name = "attack"
-BASE_PROP_CFG_ATTACK_FIELD.full_name = ".ftcfg.base_prop_cfg.attack"
-BASE_PROP_CFG_ATTACK_FIELD.number = 5
-BASE_PROP_CFG_ATTACK_FIELD.index = 4
-BASE_PROP_CFG_ATTACK_FIELD.label = 2
-BASE_PROP_CFG_ATTACK_FIELD.has_default_value = false
-BASE_PROP_CFG_ATTACK_FIELD.default_value = 0.0
-BASE_PROP_CFG_ATTACK_FIELD.type = 1
-BASE_PROP_CFG_ATTACK_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_DEFENSE_FIELD.name = "defense"
-BASE_PROP_CFG_DEFENSE_FIELD.full_name = ".ftcfg.base_prop_cfg.defense"
-BASE_PROP_CFG_DEFENSE_FIELD.number = 6
-BASE_PROP_CFG_DEFENSE_FIELD.index = 5
-BASE_PROP_CFG_DEFENSE_FIELD.label = 2
-BASE_PROP_CFG_DEFENSE_FIELD.has_default_value = false
-BASE_PROP_CFG_DEFENSE_FIELD.default_value = 0.0
-BASE_PROP_CFG_DEFENSE_FIELD.type = 1
-BASE_PROP_CFG_DEFENSE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_HIT_FIELD.name = "hit"
-BASE_PROP_CFG_HIT_FIELD.full_name = ".ftcfg.base_prop_cfg.hit"
-BASE_PROP_CFG_HIT_FIELD.number = 7
-BASE_PROP_CFG_HIT_FIELD.index = 6
-BASE_PROP_CFG_HIT_FIELD.label = 2
-BASE_PROP_CFG_HIT_FIELD.has_default_value = false
-BASE_PROP_CFG_HIT_FIELD.default_value = 0.0
-BASE_PROP_CFG_HIT_FIELD.type = 1
-BASE_PROP_CFG_HIT_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_DODGE_FIELD.name = "dodge"
-BASE_PROP_CFG_DODGE_FIELD.full_name = ".ftcfg.base_prop_cfg.dodge"
-BASE_PROP_CFG_DODGE_FIELD.number = 8
-BASE_PROP_CFG_DODGE_FIELD.index = 7
-BASE_PROP_CFG_DODGE_FIELD.label = 2
-BASE_PROP_CFG_DODGE_FIELD.has_default_value = false
-BASE_PROP_CFG_DODGE_FIELD.default_value = 0.0
-BASE_PROP_CFG_DODGE_FIELD.type = 1
-BASE_PROP_CFG_DODGE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_CRITICAL_FIELD.name = "critical"
-BASE_PROP_CFG_CRITICAL_FIELD.full_name = ".ftcfg.base_prop_cfg.critical"
-BASE_PROP_CFG_CRITICAL_FIELD.number = 9
-BASE_PROP_CFG_CRITICAL_FIELD.index = 8
-BASE_PROP_CFG_CRITICAL_FIELD.label = 2
-BASE_PROP_CFG_CRITICAL_FIELD.has_default_value = false
-BASE_PROP_CFG_CRITICAL_FIELD.default_value = 0.0
-BASE_PROP_CFG_CRITICAL_FIELD.type = 1
-BASE_PROP_CFG_CRITICAL_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_ANTI_CRITICAL_FIELD.name = "anti_critical"
-BASE_PROP_CFG_ANTI_CRITICAL_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_critical"
-BASE_PROP_CFG_ANTI_CRITICAL_FIELD.number = 10
-BASE_PROP_CFG_ANTI_CRITICAL_FIELD.index = 9
-BASE_PROP_CFG_ANTI_CRITICAL_FIELD.label = 2
-BASE_PROP_CFG_ANTI_CRITICAL_FIELD.has_default_value = false
-BASE_PROP_CFG_ANTI_CRITICAL_FIELD.default_value = 0.0
-BASE_PROP_CFG_ANTI_CRITICAL_FIELD.type = 1
-BASE_PROP_CFG_ANTI_CRITICAL_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_CRITICAL_POWER_FIELD.name = "critical_power"
-BASE_PROP_CFG_CRITICAL_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.critical_power"
-BASE_PROP_CFG_CRITICAL_POWER_FIELD.number = 11
-BASE_PROP_CFG_CRITICAL_POWER_FIELD.index = 10
-BASE_PROP_CFG_CRITICAL_POWER_FIELD.label = 2
-BASE_PROP_CFG_CRITICAL_POWER_FIELD.has_default_value = false
-BASE_PROP_CFG_CRITICAL_POWER_FIELD.default_value = 0.0
-BASE_PROP_CFG_CRITICAL_POWER_FIELD.type = 1
-BASE_PROP_CFG_CRITICAL_POWER_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.name = "anti_critical_power"
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_critical_power"
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.number = 12
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.index = 11
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.label = 2
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.has_default_value = false
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.default_value = 0.0
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.type = 1
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_XP_MAX_FIELD.name = "xp_max"
-BASE_PROP_CFG_XP_MAX_FIELD.full_name = ".ftcfg.base_prop_cfg.xp_max"
-BASE_PROP_CFG_XP_MAX_FIELD.number = 13
-BASE_PROP_CFG_XP_MAX_FIELD.index = 12
-BASE_PROP_CFG_XP_MAX_FIELD.label = 2
-BASE_PROP_CFG_XP_MAX_FIELD.has_default_value = false
-BASE_PROP_CFG_XP_MAX_FIELD.default_value = 0.0
-BASE_PROP_CFG_XP_MAX_FIELD.type = 1
-BASE_PROP_CFG_XP_MAX_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_HIT_RATE_FIELD.name = "hit_rate"
-BASE_PROP_CFG_HIT_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.hit_rate"
-BASE_PROP_CFG_HIT_RATE_FIELD.number = 14
-BASE_PROP_CFG_HIT_RATE_FIELD.index = 13
-BASE_PROP_CFG_HIT_RATE_FIELD.label = 2
-BASE_PROP_CFG_HIT_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_HIT_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_HIT_RATE_FIELD.type = 1
-BASE_PROP_CFG_HIT_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_DODGE_RATE_FIELD.name = "dodge_rate"
-BASE_PROP_CFG_DODGE_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.dodge_rate"
-BASE_PROP_CFG_DODGE_RATE_FIELD.number = 15
-BASE_PROP_CFG_DODGE_RATE_FIELD.index = 14
-BASE_PROP_CFG_DODGE_RATE_FIELD.label = 2
-BASE_PROP_CFG_DODGE_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_DODGE_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_DODGE_RATE_FIELD.type = 1
-BASE_PROP_CFG_DODGE_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_CRITICAL_RATE_FIELD.name = "critical_rate"
-BASE_PROP_CFG_CRITICAL_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.critical_rate"
-BASE_PROP_CFG_CRITICAL_RATE_FIELD.number = 16
-BASE_PROP_CFG_CRITICAL_RATE_FIELD.index = 15
-BASE_PROP_CFG_CRITICAL_RATE_FIELD.label = 2
-BASE_PROP_CFG_CRITICAL_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_CRITICAL_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_CRITICAL_RATE_FIELD.type = 1
-BASE_PROP_CFG_CRITICAL_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.name = "anti_critical_rate"
-BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_critical_rate"
-BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.number = 17
-BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.index = 16
-BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.label = 2
-BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.type = 1
-BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.name = "critical_power_rate"
-BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.critical_power_rate"
-BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.number = 18
-BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.index = 17
-BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.label = 2
-BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.type = 1
-BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.name = "anti_critical_power_rate"
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_critical_power_rate"
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.number = 19
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.index = 18
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.label = 2
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.type = 1
-BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_DECELERATTE_POWER_FIELD.name = "deceleratte_power"
-BASE_PROP_CFG_DECELERATTE_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.deceleratte_power"
-BASE_PROP_CFG_DECELERATTE_POWER_FIELD.number = 20
-BASE_PROP_CFG_DECELERATTE_POWER_FIELD.index = 19
-BASE_PROP_CFG_DECELERATTE_POWER_FIELD.label = 2
-BASE_PROP_CFG_DECELERATTE_POWER_FIELD.has_default_value = false
-BASE_PROP_CFG_DECELERATTE_POWER_FIELD.default_value = 0.0
-BASE_PROP_CFG_DECELERATTE_POWER_FIELD.type = 1
-BASE_PROP_CFG_DECELERATTE_POWER_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.name = "anti_deceleratte_power"
-BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_deceleratte_power"
-BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.number = 21
-BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.index = 20
-BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.label = 2
-BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.has_default_value = false
-BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.default_value = 0.0
-BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.type = 1
-BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_SLEEP_POWER_FIELD.name = "sleep_power"
-BASE_PROP_CFG_SLEEP_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.sleep_power"
-BASE_PROP_CFG_SLEEP_POWER_FIELD.number = 22
-BASE_PROP_CFG_SLEEP_POWER_FIELD.index = 21
-BASE_PROP_CFG_SLEEP_POWER_FIELD.label = 2
-BASE_PROP_CFG_SLEEP_POWER_FIELD.has_default_value = false
-BASE_PROP_CFG_SLEEP_POWER_FIELD.default_value = 0.0
-BASE_PROP_CFG_SLEEP_POWER_FIELD.type = 1
-BASE_PROP_CFG_SLEEP_POWER_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.name = "anti_sleep_power"
-BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_sleep_power"
-BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.number = 23
-BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.index = 22
-BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.label = 2
-BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.has_default_value = false
-BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.default_value = 0.0
-BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.type = 1
-BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_HOLD_POWER_FIELD.name = "hold_power"
-BASE_PROP_CFG_HOLD_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.hold_power"
-BASE_PROP_CFG_HOLD_POWER_FIELD.number = 24
-BASE_PROP_CFG_HOLD_POWER_FIELD.index = 23
-BASE_PROP_CFG_HOLD_POWER_FIELD.label = 2
-BASE_PROP_CFG_HOLD_POWER_FIELD.has_default_value = false
-BASE_PROP_CFG_HOLD_POWER_FIELD.default_value = 0.0
-BASE_PROP_CFG_HOLD_POWER_FIELD.type = 1
-BASE_PROP_CFG_HOLD_POWER_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.name = "anti_hold_power"
-BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_hold_power"
-BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.number = 25
-BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.index = 24
-BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.label = 2
-BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.has_default_value = false
-BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.default_value = 0.0
-BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.type = 1
-BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_CHARM_POWER_FIELD.name = "charm_power"
-BASE_PROP_CFG_CHARM_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.charm_power"
-BASE_PROP_CFG_CHARM_POWER_FIELD.number = 26
-BASE_PROP_CFG_CHARM_POWER_FIELD.index = 25
-BASE_PROP_CFG_CHARM_POWER_FIELD.label = 2
-BASE_PROP_CFG_CHARM_POWER_FIELD.has_default_value = false
-BASE_PROP_CFG_CHARM_POWER_FIELD.default_value = 0.0
-BASE_PROP_CFG_CHARM_POWER_FIELD.type = 1
-BASE_PROP_CFG_CHARM_POWER_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.name = "anti_charm_power"
-BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_charm_power"
-BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.number = 27
-BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.index = 26
-BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.label = 2
-BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.has_default_value = false
-BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.default_value = 0.0
-BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.type = 1
-BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_SILENCE_POWER_FIELD.name = "silence_power"
-BASE_PROP_CFG_SILENCE_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.silence_power"
-BASE_PROP_CFG_SILENCE_POWER_FIELD.number = 28
-BASE_PROP_CFG_SILENCE_POWER_FIELD.index = 27
-BASE_PROP_CFG_SILENCE_POWER_FIELD.label = 2
-BASE_PROP_CFG_SILENCE_POWER_FIELD.has_default_value = false
-BASE_PROP_CFG_SILENCE_POWER_FIELD.default_value = 0.0
-BASE_PROP_CFG_SILENCE_POWER_FIELD.type = 1
-BASE_PROP_CFG_SILENCE_POWER_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.name = "anti_silence_power"
-BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.full_name = ".ftcfg.base_prop_cfg.anti_silence_power"
-BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.number = 29
-BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.index = 28
-BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.label = 2
-BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.has_default_value = false
-BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.default_value = 0.0
-BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.type = 1
-BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_SPEED_FIELD.name = "speed"
-BASE_PROP_CFG_SPEED_FIELD.full_name = ".ftcfg.base_prop_cfg.speed"
-BASE_PROP_CFG_SPEED_FIELD.number = 30
-BASE_PROP_CFG_SPEED_FIELD.index = 29
-BASE_PROP_CFG_SPEED_FIELD.label = 2
-BASE_PROP_CFG_SPEED_FIELD.has_default_value = false
-BASE_PROP_CFG_SPEED_FIELD.default_value = 0.0
-BASE_PROP_CFG_SPEED_FIELD.type = 1
-BASE_PROP_CFG_SPEED_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_HP_SELF_HEAL_FIELD.name = "hp_self_heal"
-BASE_PROP_CFG_HP_SELF_HEAL_FIELD.full_name = ".ftcfg.base_prop_cfg.hp_self_heal"
-BASE_PROP_CFG_HP_SELF_HEAL_FIELD.number = 31
-BASE_PROP_CFG_HP_SELF_HEAL_FIELD.index = 30
-BASE_PROP_CFG_HP_SELF_HEAL_FIELD.label = 2
-BASE_PROP_CFG_HP_SELF_HEAL_FIELD.has_default_value = false
-BASE_PROP_CFG_HP_SELF_HEAL_FIELD.default_value = 0.0
-BASE_PROP_CFG_HP_SELF_HEAL_FIELD.type = 1
-BASE_PROP_CFG_HP_SELF_HEAL_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_MP_SELF_HEAL_FIELD.name = "mp_self_heal"
-BASE_PROP_CFG_MP_SELF_HEAL_FIELD.full_name = ".ftcfg.base_prop_cfg.mp_self_heal"
-BASE_PROP_CFG_MP_SELF_HEAL_FIELD.number = 32
-BASE_PROP_CFG_MP_SELF_HEAL_FIELD.index = 31
-BASE_PROP_CFG_MP_SELF_HEAL_FIELD.label = 2
-BASE_PROP_CFG_MP_SELF_HEAL_FIELD.has_default_value = false
-BASE_PROP_CFG_MP_SELF_HEAL_FIELD.default_value = 0.0
-BASE_PROP_CFG_MP_SELF_HEAL_FIELD.type = 1
-BASE_PROP_CFG_MP_SELF_HEAL_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_HP_HIT_RETURN_FIELD.name = "hp_hit_return"
-BASE_PROP_CFG_HP_HIT_RETURN_FIELD.full_name = ".ftcfg.base_prop_cfg.hp_hit_return"
-BASE_PROP_CFG_HP_HIT_RETURN_FIELD.number = 33
-BASE_PROP_CFG_HP_HIT_RETURN_FIELD.index = 32
-BASE_PROP_CFG_HP_HIT_RETURN_FIELD.label = 2
-BASE_PROP_CFG_HP_HIT_RETURN_FIELD.has_default_value = false
-BASE_PROP_CFG_HP_HIT_RETURN_FIELD.default_value = 0.0
-BASE_PROP_CFG_HP_HIT_RETURN_FIELD.type = 1
-BASE_PROP_CFG_HP_HIT_RETURN_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_MP_HIT_RETURN_FIELD.name = "mp_hit_return"
-BASE_PROP_CFG_MP_HIT_RETURN_FIELD.full_name = ".ftcfg.base_prop_cfg.mp_hit_return"
-BASE_PROP_CFG_MP_HIT_RETURN_FIELD.number = 34
-BASE_PROP_CFG_MP_HIT_RETURN_FIELD.index = 33
-BASE_PROP_CFG_MP_HIT_RETURN_FIELD.label = 2
-BASE_PROP_CFG_MP_HIT_RETURN_FIELD.has_default_value = false
-BASE_PROP_CFG_MP_HIT_RETURN_FIELD.default_value = 0.0
-BASE_PROP_CFG_MP_HIT_RETURN_FIELD.type = 1
-BASE_PROP_CFG_MP_HIT_RETURN_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.name = "hp_damage_return_rate"
-BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.hp_damage_return_rate"
-BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.number = 35
-BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.index = 34
-BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.label = 2
-BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.type = 1
-BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.name = "mp_damage_return_rate"
-BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.mp_damage_return_rate"
-BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.number = 36
-BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.index = 35
-BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.label = 2
-BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.type = 1
-BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.name = "extra_damage_rate"
-BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.extra_damage_rate"
-BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.number = 37
-BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.index = 36
-BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.label = 2
-BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.type = 1
-BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.name = "reduce_damage_rate"
-BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.reduce_damage_rate"
-BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.number = 38
-BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.index = 37
-BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.label = 2
-BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.type = 1
-BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.name = "extra_heal_rate"
-BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.extra_heal_rate"
-BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.number = 39
-BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.index = 38
-BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.label = 2
-BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.type = 1
-BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.name = "extra_healed_rate"
-BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.extra_healed_rate"
-BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.number = 40
-BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.index = 39
-BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.label = 2
-BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.type = 1
-BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_MAUD_FIELD.name = "maud"
-BASE_PROP_CFG_MAUD_FIELD.full_name = ".ftcfg.base_prop_cfg.maud"
-BASE_PROP_CFG_MAUD_FIELD.number = 41
-BASE_PROP_CFG_MAUD_FIELD.index = 40
-BASE_PROP_CFG_MAUD_FIELD.label = 2
-BASE_PROP_CFG_MAUD_FIELD.has_default_value = false
-BASE_PROP_CFG_MAUD_FIELD.default_value = 0.0
-BASE_PROP_CFG_MAUD_FIELD.type = 1
-BASE_PROP_CFG_MAUD_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_MIND_FIELD.name = "mind"
-BASE_PROP_CFG_MIND_FIELD.full_name = ".ftcfg.base_prop_cfg.mind"
-BASE_PROP_CFG_MIND_FIELD.number = 42
-BASE_PROP_CFG_MIND_FIELD.index = 41
-BASE_PROP_CFG_MIND_FIELD.label = 2
-BASE_PROP_CFG_MIND_FIELD.has_default_value = false
-BASE_PROP_CFG_MIND_FIELD.default_value = 0.0
-BASE_PROP_CFG_MIND_FIELD.type = 1
-BASE_PROP_CFG_MIND_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_CONSTITUTION_FIELD.name = "constitution"
-BASE_PROP_CFG_CONSTITUTION_FIELD.full_name = ".ftcfg.base_prop_cfg.constitution"
-BASE_PROP_CFG_CONSTITUTION_FIELD.number = 43
-BASE_PROP_CFG_CONSTITUTION_FIELD.index = 42
-BASE_PROP_CFG_CONSTITUTION_FIELD.label = 2
-BASE_PROP_CFG_CONSTITUTION_FIELD.has_default_value = false
-BASE_PROP_CFG_CONSTITUTION_FIELD.default_value = 0.0
-BASE_PROP_CFG_CONSTITUTION_FIELD.type = 1
-BASE_PROP_CFG_CONSTITUTION_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_INTENSITY_FIELD.name = "intensity"
-BASE_PROP_CFG_INTENSITY_FIELD.full_name = ".ftcfg.base_prop_cfg.intensity"
-BASE_PROP_CFG_INTENSITY_FIELD.number = 44
-BASE_PROP_CFG_INTENSITY_FIELD.index = 43
-BASE_PROP_CFG_INTENSITY_FIELD.label = 2
-BASE_PROP_CFG_INTENSITY_FIELD.has_default_value = false
-BASE_PROP_CFG_INTENSITY_FIELD.default_value = 0.0
-BASE_PROP_CFG_INTENSITY_FIELD.type = 1
-BASE_PROP_CFG_INTENSITY_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_DEADLY_RATE_FIELD.name = "deadly_rate"
-BASE_PROP_CFG_DEADLY_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.deadly_rate"
-BASE_PROP_CFG_DEADLY_RATE_FIELD.number = 45
-BASE_PROP_CFG_DEADLY_RATE_FIELD.index = 44
-BASE_PROP_CFG_DEADLY_RATE_FIELD.label = 2
-BASE_PROP_CFG_DEADLY_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_DEADLY_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_DEADLY_RATE_FIELD.type = 1
-BASE_PROP_CFG_DEADLY_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.name = "defy_defense_rate"
-BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.defy_defense_rate"
-BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.number = 46
-BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.index = 45
-BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.label = 2
-BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.type = 1
-BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_BLOCK_RATE_FIELD.name = "block_rate"
-BASE_PROP_CFG_BLOCK_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.block_rate"
-BASE_PROP_CFG_BLOCK_RATE_FIELD.number = 47
-BASE_PROP_CFG_BLOCK_RATE_FIELD.index = 46
-BASE_PROP_CFG_BLOCK_RATE_FIELD.label = 2
-BASE_PROP_CFG_BLOCK_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_BLOCK_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_BLOCK_RATE_FIELD.type = 1
-BASE_PROP_CFG_BLOCK_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.name = "defy_block_rate"
-BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.defy_block_rate"
-BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.number = 48
-BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.index = 47
-BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.label = 2
-BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.type = 1
-BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_HP_KILL_RETURN_FIELD.name = "hp_kill_return"
-BASE_PROP_CFG_HP_KILL_RETURN_FIELD.full_name = ".ftcfg.base_prop_cfg.hp_kill_return"
-BASE_PROP_CFG_HP_KILL_RETURN_FIELD.number = 49
-BASE_PROP_CFG_HP_KILL_RETURN_FIELD.index = 48
-BASE_PROP_CFG_HP_KILL_RETURN_FIELD.label = 2
-BASE_PROP_CFG_HP_KILL_RETURN_FIELD.has_default_value = false
-BASE_PROP_CFG_HP_KILL_RETURN_FIELD.default_value = 0.0
-BASE_PROP_CFG_HP_KILL_RETURN_FIELD.type = 1
-BASE_PROP_CFG_HP_KILL_RETURN_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.name = "exp_kill_return"
-BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.full_name = ".ftcfg.base_prop_cfg.exp_kill_return"
-BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.number = 50
-BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.index = 49
-BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.label = 2
-BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.has_default_value = false
-BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.default_value = 0.0
-BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.type = 1
-BASE_PROP_CFG_EXP_KILL_RETURN_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.name = "reduce_skill_cd"
-BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.full_name = ".ftcfg.base_prop_cfg.reduce_skill_cd"
-BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.number = 51
-BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.index = 50
-BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.label = 2
-BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.has_default_value = false
-BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.default_value = 0.0
-BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.type = 1
-BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.name = "reduce_skill_cost"
-BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.full_name = ".ftcfg.base_prop_cfg.reduce_skill_cost"
-BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.number = 52
-BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.index = 51
-BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.label = 2
-BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.has_default_value = false
-BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.default_value = 0.0
-BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.type = 1
-BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.name = "npc_extra_damage"
-BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.full_name = ".ftcfg.base_prop_cfg.npc_extra_damage"
-BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.number = 53
-BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.index = 52
-BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.label = 2
-BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.has_default_value = false
-BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.default_value = 0.0
-BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.type = 1
-BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.name = "reduce_npc_damage"
-BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.full_name = ".ftcfg.base_prop_cfg.reduce_npc_damage"
-BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.number = 54
-BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.index = 53
-BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.label = 2
-BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.has_default_value = false
-BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.default_value = 0.0
-BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.type = 1
-BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_XP_SELF_HEAL_FIELD.name = "xp_self_heal"
-BASE_PROP_CFG_XP_SELF_HEAL_FIELD.full_name = ".ftcfg.base_prop_cfg.xp_self_heal"
-BASE_PROP_CFG_XP_SELF_HEAL_FIELD.number = 55
-BASE_PROP_CFG_XP_SELF_HEAL_FIELD.index = 54
-BASE_PROP_CFG_XP_SELF_HEAL_FIELD.label = 2
-BASE_PROP_CFG_XP_SELF_HEAL_FIELD.has_default_value = false
-BASE_PROP_CFG_XP_SELF_HEAL_FIELD.default_value = 0.0
-BASE_PROP_CFG_XP_SELF_HEAL_FIELD.type = 1
-BASE_PROP_CFG_XP_SELF_HEAL_FIELD.cpp_type = 5
-
-BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.name = "logic_repeat3_rate"
-BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.full_name = ".ftcfg.base_prop_cfg.logic_repeat3_rate"
-BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.number = 56
-BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.index = 55
-BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.label = 2
-BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.has_default_value = false
-BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.default_value = 0.0
-BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.type = 1
-BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD.cpp_type = 5
-
-BASE_PROP_CFG.name = "base_prop_cfg"
-BASE_PROP_CFG.full_name = ".ftcfg.base_prop_cfg"
-BASE_PROP_CFG.nested_types = {}
-BASE_PROP_CFG.enum_types = {}
-BASE_PROP_CFG.fields = {BASE_PROP_CFG_PROF_TYPE_FIELD, BASE_PROP_CFG_LEVEL_FIELD, BASE_PROP_CFG_HP_MAX_FIELD, BASE_PROP_CFG_MP_MAX_FIELD, BASE_PROP_CFG_ATTACK_FIELD, BASE_PROP_CFG_DEFENSE_FIELD, BASE_PROP_CFG_HIT_FIELD, BASE_PROP_CFG_DODGE_FIELD, BASE_PROP_CFG_CRITICAL_FIELD, BASE_PROP_CFG_ANTI_CRITICAL_FIELD, BASE_PROP_CFG_CRITICAL_POWER_FIELD, BASE_PROP_CFG_ANTI_CRITICAL_POWER_FIELD, BASE_PROP_CFG_XP_MAX_FIELD, BASE_PROP_CFG_HIT_RATE_FIELD, BASE_PROP_CFG_DODGE_RATE_FIELD, BASE_PROP_CFG_CRITICAL_RATE_FIELD, BASE_PROP_CFG_ANTI_CRITICAL_RATE_FIELD, BASE_PROP_CFG_CRITICAL_POWER_RATE_FIELD, BASE_PROP_CFG_ANTI_CRITICAL_POWER_RATE_FIELD, BASE_PROP_CFG_DECELERATTE_POWER_FIELD, BASE_PROP_CFG_ANTI_DECELERATTE_POWER_FIELD, BASE_PROP_CFG_SLEEP_POWER_FIELD, BASE_PROP_CFG_ANTI_SLEEP_POWER_FIELD, BASE_PROP_CFG_HOLD_POWER_FIELD, BASE_PROP_CFG_ANTI_HOLD_POWER_FIELD, BASE_PROP_CFG_CHARM_POWER_FIELD, BASE_PROP_CFG_ANTI_CHARM_POWER_FIELD, BASE_PROP_CFG_SILENCE_POWER_FIELD, BASE_PROP_CFG_ANTI_SILENCE_POWER_FIELD, BASE_PROP_CFG_SPEED_FIELD, BASE_PROP_CFG_HP_SELF_HEAL_FIELD, BASE_PROP_CFG_MP_SELF_HEAL_FIELD, BASE_PROP_CFG_HP_HIT_RETURN_FIELD, BASE_PROP_CFG_MP_HIT_RETURN_FIELD, BASE_PROP_CFG_HP_DAMAGE_RETURN_RATE_FIELD, BASE_PROP_CFG_MP_DAMAGE_RETURN_RATE_FIELD, BASE_PROP_CFG_EXTRA_DAMAGE_RATE_FIELD, BASE_PROP_CFG_REDUCE_DAMAGE_RATE_FIELD, BASE_PROP_CFG_EXTRA_HEAL_RATE_FIELD, BASE_PROP_CFG_EXTRA_HEALED_RATE_FIELD, BASE_PROP_CFG_MAUD_FIELD, BASE_PROP_CFG_MIND_FIELD, BASE_PROP_CFG_CONSTITUTION_FIELD, BASE_PROP_CFG_INTENSITY_FIELD, BASE_PROP_CFG_DEADLY_RATE_FIELD, BASE_PROP_CFG_DEFY_DEFENSE_RATE_FIELD, BASE_PROP_CFG_BLOCK_RATE_FIELD, BASE_PROP_CFG_DEFY_BLOCK_RATE_FIELD, BASE_PROP_CFG_HP_KILL_RETURN_FIELD, BASE_PROP_CFG_EXP_KILL_RETURN_FIELD, BASE_PROP_CFG_REDUCE_SKILL_CD_FIELD, BASE_PROP_CFG_REDUCE_SKILL_COST_FIELD, BASE_PROP_CFG_NPC_EXTRA_DAMAGE_FIELD, BASE_PROP_CFG_REDUCE_NPC_DAMAGE_FIELD, BASE_PROP_CFG_XP_SELF_HEAL_FIELD, BASE_PROP_CFG_LOGIC_REPEAT3_RATE_FIELD}
-BASE_PROP_CFG.is_extendable = false
-BASE_PROP_CFG.extensions = {}
-BASE_PROP_CFGS_ITEMS_FIELD.name = "items"
-BASE_PROP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.base_prop_cfgs.items"
-BASE_PROP_CFGS_ITEMS_FIELD.number = 1
-BASE_PROP_CFGS_ITEMS_FIELD.index = 0
-BASE_PROP_CFGS_ITEMS_FIELD.label = 3
-BASE_PROP_CFGS_ITEMS_FIELD.has_default_value = false
-BASE_PROP_CFGS_ITEMS_FIELD.default_value = {}
-BASE_PROP_CFGS_ITEMS_FIELD.message_type = BASE_PROP_CFG
-BASE_PROP_CFGS_ITEMS_FIELD.type = 11
-BASE_PROP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-BASE_PROP_CFGS.name = "base_prop_cfgs"
-BASE_PROP_CFGS.full_name = ".ftcfg.base_prop_cfgs"
-BASE_PROP_CFGS.nested_types = {}
-BASE_PROP_CFGS.enum_types = {}
-BASE_PROP_CFGS.fields = {BASE_PROP_CFGS_ITEMS_FIELD}
-BASE_PROP_CFGS.is_extendable = false
-BASE_PROP_CFGS.extensions = {}
-LEVEL_EXP_CFG_LEVEL_FIELD.name = "level"
-LEVEL_EXP_CFG_LEVEL_FIELD.full_name = ".ftcfg.level_exp_cfg.level"
-LEVEL_EXP_CFG_LEVEL_FIELD.number = 1
-LEVEL_EXP_CFG_LEVEL_FIELD.index = 0
-LEVEL_EXP_CFG_LEVEL_FIELD.label = 2
-LEVEL_EXP_CFG_LEVEL_FIELD.has_default_value = false
-LEVEL_EXP_CFG_LEVEL_FIELD.default_value = 0
-LEVEL_EXP_CFG_LEVEL_FIELD.type = 5
-LEVEL_EXP_CFG_LEVEL_FIELD.cpp_type = 1
-
-LEVEL_EXP_CFG_NEED_EXP_FIELD.name = "need_exp"
-LEVEL_EXP_CFG_NEED_EXP_FIELD.full_name = ".ftcfg.level_exp_cfg.need_exp"
-LEVEL_EXP_CFG_NEED_EXP_FIELD.number = 2
-LEVEL_EXP_CFG_NEED_EXP_FIELD.index = 1
-LEVEL_EXP_CFG_NEED_EXP_FIELD.label = 2
-LEVEL_EXP_CFG_NEED_EXP_FIELD.has_default_value = false
-LEVEL_EXP_CFG_NEED_EXP_FIELD.default_value = 0
-LEVEL_EXP_CFG_NEED_EXP_FIELD.type = 5
-LEVEL_EXP_CFG_NEED_EXP_FIELD.cpp_type = 1
-
-LEVEL_EXP_CFG_CAMP_FIELD.name = "camp"
-LEVEL_EXP_CFG_CAMP_FIELD.full_name = ".ftcfg.level_exp_cfg.camp"
-LEVEL_EXP_CFG_CAMP_FIELD.number = 3
-LEVEL_EXP_CFG_CAMP_FIELD.index = 2
-LEVEL_EXP_CFG_CAMP_FIELD.label = 2
-LEVEL_EXP_CFG_CAMP_FIELD.has_default_value = false
-LEVEL_EXP_CFG_CAMP_FIELD.default_value = 0
-LEVEL_EXP_CFG_CAMP_FIELD.type = 5
-LEVEL_EXP_CFG_CAMP_FIELD.cpp_type = 1
-
-LEVEL_EXP_CFG_COMBAT_POINT_FIELD.name = "combat_point"
-LEVEL_EXP_CFG_COMBAT_POINT_FIELD.full_name = ".ftcfg.level_exp_cfg.combat_point"
-LEVEL_EXP_CFG_COMBAT_POINT_FIELD.number = 4
-LEVEL_EXP_CFG_COMBAT_POINT_FIELD.index = 3
-LEVEL_EXP_CFG_COMBAT_POINT_FIELD.label = 2
-LEVEL_EXP_CFG_COMBAT_POINT_FIELD.has_default_value = false
-LEVEL_EXP_CFG_COMBAT_POINT_FIELD.default_value = 0
-LEVEL_EXP_CFG_COMBAT_POINT_FIELD.type = 5
-LEVEL_EXP_CFG_COMBAT_POINT_FIELD.cpp_type = 1
-
-LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.name = "kill_popularity_min"
-LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.full_name = ".ftcfg.level_exp_cfg.kill_popularity_min"
-LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.number = 5
-LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.index = 4
-LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.label = 2
-LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.has_default_value = false
-LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.default_value = 0
-LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.type = 5
-LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD.cpp_type = 1
-
-LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.name = "kill_popularity_max"
-LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.full_name = ".ftcfg.level_exp_cfg.kill_popularity_max"
-LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.number = 6
-LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.index = 5
-LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.label = 2
-LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.has_default_value = false
-LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.default_value = 0
-LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.type = 5
-LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD.cpp_type = 1
-
-LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.name = "assists_popularity_min"
-LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.full_name = ".ftcfg.level_exp_cfg.assists_popularity_min"
-LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.number = 7
-LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.index = 6
-LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.label = 2
-LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.has_default_value = false
-LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.default_value = 0
-LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.type = 5
-LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD.cpp_type = 1
-
-LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.name = "gold_coupon_max"
-LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.full_name = ".ftcfg.level_exp_cfg.gold_coupon_max"
-LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.number = 8
-LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.index = 7
-LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.label = 2
-LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.has_default_value = false
-LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.default_value = 0
-LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.type = 5
-LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD.cpp_type = 1
-
-LEVEL_EXP_CFG_EXP_MAX_FIELD.name = "exp_max"
-LEVEL_EXP_CFG_EXP_MAX_FIELD.full_name = ".ftcfg.level_exp_cfg.exp_max"
-LEVEL_EXP_CFG_EXP_MAX_FIELD.number = 9
-LEVEL_EXP_CFG_EXP_MAX_FIELD.index = 8
-LEVEL_EXP_CFG_EXP_MAX_FIELD.label = 2
-LEVEL_EXP_CFG_EXP_MAX_FIELD.has_default_value = false
-LEVEL_EXP_CFG_EXP_MAX_FIELD.default_value = 0
-LEVEL_EXP_CFG_EXP_MAX_FIELD.type = 5
-LEVEL_EXP_CFG_EXP_MAX_FIELD.cpp_type = 1
-
-LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.name = "popularity_max"
-LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.full_name = ".ftcfg.level_exp_cfg.popularity_max"
-LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.number = 10
-LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.index = 9
-LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.label = 2
-LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.has_default_value = false
-LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.default_value = 0
-LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.type = 5
-LEVEL_EXP_CFG_POPULARITY_MAX_FIELD.cpp_type = 1
-
-LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.name = "bind_popularity_max"
-LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.full_name = ".ftcfg.level_exp_cfg.bind_popularity_max"
-LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.number = 11
-LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.index = 10
-LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.label = 2
-LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.has_default_value = false
-LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.default_value = 0
-LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.type = 5
-LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD.cpp_type = 1
-
-LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.name = "annihilation_reward"
-LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.full_name = ".ftcfg.level_exp_cfg.annihilation_reward"
-LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.number = 12
-LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.index = 11
-LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.label = 2
-LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.has_default_value = false
-LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.default_value = 0
-LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.type = 5
-LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD.cpp_type = 1
-
-LEVEL_EXP_CFG.name = "level_exp_cfg"
-LEVEL_EXP_CFG.full_name = ".ftcfg.level_exp_cfg"
-LEVEL_EXP_CFG.nested_types = {}
-LEVEL_EXP_CFG.enum_types = {}
-LEVEL_EXP_CFG.fields = {LEVEL_EXP_CFG_LEVEL_FIELD, LEVEL_EXP_CFG_NEED_EXP_FIELD, LEVEL_EXP_CFG_CAMP_FIELD, LEVEL_EXP_CFG_COMBAT_POINT_FIELD, LEVEL_EXP_CFG_KILL_POPULARITY_MIN_FIELD, LEVEL_EXP_CFG_KILL_POPULARITY_MAX_FIELD, LEVEL_EXP_CFG_ASSISTS_POPULARITY_MIN_FIELD, LEVEL_EXP_CFG_GOLD_COUPON_MAX_FIELD, LEVEL_EXP_CFG_EXP_MAX_FIELD, LEVEL_EXP_CFG_POPULARITY_MAX_FIELD, LEVEL_EXP_CFG_BIND_POPULARITY_MAX_FIELD, LEVEL_EXP_CFG_ANNIHILATION_REWARD_FIELD}
-LEVEL_EXP_CFG.is_extendable = false
-LEVEL_EXP_CFG.extensions = {}
-LEVEL_EXP_CFGS_ITEMS_FIELD.name = "items"
-LEVEL_EXP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.level_exp_cfgs.items"
-LEVEL_EXP_CFGS_ITEMS_FIELD.number = 1
-LEVEL_EXP_CFGS_ITEMS_FIELD.index = 0
-LEVEL_EXP_CFGS_ITEMS_FIELD.label = 3
-LEVEL_EXP_CFGS_ITEMS_FIELD.has_default_value = false
-LEVEL_EXP_CFGS_ITEMS_FIELD.default_value = {}
-LEVEL_EXP_CFGS_ITEMS_FIELD.message_type = LEVEL_EXP_CFG
-LEVEL_EXP_CFGS_ITEMS_FIELD.type = 11
-LEVEL_EXP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-LEVEL_EXP_CFGS.name = "level_exp_cfgs"
-LEVEL_EXP_CFGS.full_name = ".ftcfg.level_exp_cfgs"
-LEVEL_EXP_CFGS.nested_types = {}
-LEVEL_EXP_CFGS.enum_types = {}
-LEVEL_EXP_CFGS.fields = {LEVEL_EXP_CFGS_ITEMS_FIELD}
-LEVEL_EXP_CFGS.is_extendable = false
-LEVEL_EXP_CFGS.extensions = {}
-LANGUAGE_CFG_ID_FIELD.name = "id"
-LANGUAGE_CFG_ID_FIELD.full_name = ".ftcfg.language_cfg.id"
-LANGUAGE_CFG_ID_FIELD.number = 1
-LANGUAGE_CFG_ID_FIELD.index = 0
-LANGUAGE_CFG_ID_FIELD.label = 2
-LANGUAGE_CFG_ID_FIELD.has_default_value = false
-LANGUAGE_CFG_ID_FIELD.default_value = 0
-LANGUAGE_CFG_ID_FIELD.type = 5
-LANGUAGE_CFG_ID_FIELD.cpp_type = 1
-
-LANGUAGE_CFG_TEXT_FIELD.name = "text"
-LANGUAGE_CFG_TEXT_FIELD.full_name = ".ftcfg.language_cfg.text"
-LANGUAGE_CFG_TEXT_FIELD.number = 2
-LANGUAGE_CFG_TEXT_FIELD.index = 1
-LANGUAGE_CFG_TEXT_FIELD.label = 2
-LANGUAGE_CFG_TEXT_FIELD.has_default_value = false
-LANGUAGE_CFG_TEXT_FIELD.default_value = ""
-LANGUAGE_CFG_TEXT_FIELD.type = 9
-LANGUAGE_CFG_TEXT_FIELD.cpp_type = 9
-
-LANGUAGE_CFG.name = "language_cfg"
-LANGUAGE_CFG.full_name = ".ftcfg.language_cfg"
-LANGUAGE_CFG.nested_types = {}
-LANGUAGE_CFG.enum_types = {}
-LANGUAGE_CFG.fields = {LANGUAGE_CFG_ID_FIELD, LANGUAGE_CFG_TEXT_FIELD}
-LANGUAGE_CFG.is_extendable = false
-LANGUAGE_CFG.extensions = {}
-LANGUAGE_CFGS_ITEMS_FIELD.name = "items"
-LANGUAGE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.language_cfgs.items"
-LANGUAGE_CFGS_ITEMS_FIELD.number = 1
-LANGUAGE_CFGS_ITEMS_FIELD.index = 0
-LANGUAGE_CFGS_ITEMS_FIELD.label = 3
-LANGUAGE_CFGS_ITEMS_FIELD.has_default_value = false
-LANGUAGE_CFGS_ITEMS_FIELD.default_value = {}
-LANGUAGE_CFGS_ITEMS_FIELD.message_type = LANGUAGE_CFG
-LANGUAGE_CFGS_ITEMS_FIELD.type = 11
-LANGUAGE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-LANGUAGE_CFGS.name = "language_cfgs"
-LANGUAGE_CFGS.full_name = ".ftcfg.language_cfgs"
-LANGUAGE_CFGS.nested_types = {}
-LANGUAGE_CFGS.enum_types = {}
-LANGUAGE_CFGS.fields = {LANGUAGE_CFGS_ITEMS_FIELD}
-LANGUAGE_CFGS.is_extendable = false
-LANGUAGE_CFGS.extensions = {}
-MISSION_CFG_ID_FIELD.name = "id"
-MISSION_CFG_ID_FIELD.full_name = ".ftcfg.mission_cfg.id"
-MISSION_CFG_ID_FIELD.number = 1
-MISSION_CFG_ID_FIELD.index = 0
-MISSION_CFG_ID_FIELD.label = 2
-MISSION_CFG_ID_FIELD.has_default_value = false
-MISSION_CFG_ID_FIELD.default_value = 0
-MISSION_CFG_ID_FIELD.type = 5
-MISSION_CFG_ID_FIELD.cpp_type = 1
-
-MISSION_CFG_MISSION_GROUPID_FIELD.name = "mission_groupid"
-MISSION_CFG_MISSION_GROUPID_FIELD.full_name = ".ftcfg.mission_cfg.mission_groupid"
-MISSION_CFG_MISSION_GROUPID_FIELD.number = 2
-MISSION_CFG_MISSION_GROUPID_FIELD.index = 1
-MISSION_CFG_MISSION_GROUPID_FIELD.label = 2
-MISSION_CFG_MISSION_GROUPID_FIELD.has_default_value = false
-MISSION_CFG_MISSION_GROUPID_FIELD.default_value = 0
-MISSION_CFG_MISSION_GROUPID_FIELD.type = 5
-MISSION_CFG_MISSION_GROUPID_FIELD.cpp_type = 1
-
-MISSION_CFG_MISSION_COLOUR_FIELD.name = "mission_colour"
-MISSION_CFG_MISSION_COLOUR_FIELD.full_name = ".ftcfg.mission_cfg.mission_colour"
-MISSION_CFG_MISSION_COLOUR_FIELD.number = 3
-MISSION_CFG_MISSION_COLOUR_FIELD.index = 2
-MISSION_CFG_MISSION_COLOUR_FIELD.label = 2
-MISSION_CFG_MISSION_COLOUR_FIELD.has_default_value = false
-MISSION_CFG_MISSION_COLOUR_FIELD.default_value = 0
-MISSION_CFG_MISSION_COLOUR_FIELD.type = 5
-MISSION_CFG_MISSION_COLOUR_FIELD.cpp_type = 1
-
-MISSION_CFG_MISSION_NAME_FIELD.name = "mission_name"
-MISSION_CFG_MISSION_NAME_FIELD.full_name = ".ftcfg.mission_cfg.mission_name"
-MISSION_CFG_MISSION_NAME_FIELD.number = 4
-MISSION_CFG_MISSION_NAME_FIELD.index = 3
-MISSION_CFG_MISSION_NAME_FIELD.label = 2
-MISSION_CFG_MISSION_NAME_FIELD.has_default_value = false
-MISSION_CFG_MISSION_NAME_FIELD.default_value = 0
-MISSION_CFG_MISSION_NAME_FIELD.type = 5
-MISSION_CFG_MISSION_NAME_FIELD.cpp_type = 1
-
-MISSION_CFG_MISSION_TEXT_FIELD.name = "mission_text"
-MISSION_CFG_MISSION_TEXT_FIELD.full_name = ".ftcfg.mission_cfg.mission_text"
-MISSION_CFG_MISSION_TEXT_FIELD.number = 5
-MISSION_CFG_MISSION_TEXT_FIELD.index = 4
-MISSION_CFG_MISSION_TEXT_FIELD.label = 2
-MISSION_CFG_MISSION_TEXT_FIELD.has_default_value = false
-MISSION_CFG_MISSION_TEXT_FIELD.default_value = 0
-MISSION_CFG_MISSION_TEXT_FIELD.type = 5
-MISSION_CFG_MISSION_TEXT_FIELD.cpp_type = 1
-
-MISSION_CFG_MISSION_TARGET1_FIELD.name = "mission_target1"
-MISSION_CFG_MISSION_TARGET1_FIELD.full_name = ".ftcfg.mission_cfg.mission_target1"
-MISSION_CFG_MISSION_TARGET1_FIELD.number = 6
-MISSION_CFG_MISSION_TARGET1_FIELD.index = 5
-MISSION_CFG_MISSION_TARGET1_FIELD.label = 2
-MISSION_CFG_MISSION_TARGET1_FIELD.has_default_value = false
-MISSION_CFG_MISSION_TARGET1_FIELD.default_value = 0
-MISSION_CFG_MISSION_TARGET1_FIELD.type = 5
-MISSION_CFG_MISSION_TARGET1_FIELD.cpp_type = 1
-
-MISSION_CFG_MISSION_TARGET2_FIELD.name = "mission_target2"
-MISSION_CFG_MISSION_TARGET2_FIELD.full_name = ".ftcfg.mission_cfg.mission_target2"
-MISSION_CFG_MISSION_TARGET2_FIELD.number = 7
-MISSION_CFG_MISSION_TARGET2_FIELD.index = 6
-MISSION_CFG_MISSION_TARGET2_FIELD.label = 2
-MISSION_CFG_MISSION_TARGET2_FIELD.has_default_value = false
-MISSION_CFG_MISSION_TARGET2_FIELD.default_value = 0
-MISSION_CFG_MISSION_TARGET2_FIELD.type = 5
-MISSION_CFG_MISSION_TARGET2_FIELD.cpp_type = 1
-
-MISSION_CFG_MISSION_TARGET3_FIELD.name = "mission_target3"
-MISSION_CFG_MISSION_TARGET3_FIELD.full_name = ".ftcfg.mission_cfg.mission_target3"
-MISSION_CFG_MISSION_TARGET3_FIELD.number = 8
-MISSION_CFG_MISSION_TARGET3_FIELD.index = 7
-MISSION_CFG_MISSION_TARGET3_FIELD.label = 2
-MISSION_CFG_MISSION_TARGET3_FIELD.has_default_value = false
-MISSION_CFG_MISSION_TARGET3_FIELD.default_value = 0
-MISSION_CFG_MISSION_TARGET3_FIELD.type = 5
-MISSION_CFG_MISSION_TARGET3_FIELD.cpp_type = 1
-
-MISSION_CFG_MISSION_TYPE_FIELD.name = "mission_type"
-MISSION_CFG_MISSION_TYPE_FIELD.full_name = ".ftcfg.mission_cfg.mission_type"
-MISSION_CFG_MISSION_TYPE_FIELD.number = 9
-MISSION_CFG_MISSION_TYPE_FIELD.index = 8
-MISSION_CFG_MISSION_TYPE_FIELD.label = 2
-MISSION_CFG_MISSION_TYPE_FIELD.has_default_value = false
-MISSION_CFG_MISSION_TYPE_FIELD.default_value = 0
-MISSION_CFG_MISSION_TYPE_FIELD.type = 5
-MISSION_CFG_MISSION_TYPE_FIELD.cpp_type = 1
-
-MISSION_CFG_MISSION_TARGETTYPE_FIELD.name = "mission_targettype"
-MISSION_CFG_MISSION_TARGETTYPE_FIELD.full_name = ".ftcfg.mission_cfg.mission_targettype"
-MISSION_CFG_MISSION_TARGETTYPE_FIELD.number = 10
-MISSION_CFG_MISSION_TARGETTYPE_FIELD.index = 9
-MISSION_CFG_MISSION_TARGETTYPE_FIELD.label = 2
-MISSION_CFG_MISSION_TARGETTYPE_FIELD.has_default_value = false
-MISSION_CFG_MISSION_TARGETTYPE_FIELD.default_value = 0
-MISSION_CFG_MISSION_TARGETTYPE_FIELD.type = 5
-MISSION_CFG_MISSION_TARGETTYPE_FIELD.cpp_type = 1
-
-MISSION_CFG_MISSION_OCCUPATION_FIELD.name = "mission_occupation"
-MISSION_CFG_MISSION_OCCUPATION_FIELD.full_name = ".ftcfg.mission_cfg.mission_occupation"
-MISSION_CFG_MISSION_OCCUPATION_FIELD.number = 11
-MISSION_CFG_MISSION_OCCUPATION_FIELD.index = 10
-MISSION_CFG_MISSION_OCCUPATION_FIELD.label = 3
-MISSION_CFG_MISSION_OCCUPATION_FIELD.has_default_value = false
-MISSION_CFG_MISSION_OCCUPATION_FIELD.default_value = {}
-MISSION_CFG_MISSION_OCCUPATION_FIELD.type = 5
-MISSION_CFG_MISSION_OCCUPATION_FIELD.cpp_type = 1
-
-MISSION_CFG_REPEAT_WHETHER_FIELD.name = "repeat_whether"
-MISSION_CFG_REPEAT_WHETHER_FIELD.full_name = ".ftcfg.mission_cfg.repeat_whether"
-MISSION_CFG_REPEAT_WHETHER_FIELD.number = 12
-MISSION_CFG_REPEAT_WHETHER_FIELD.index = 11
-MISSION_CFG_REPEAT_WHETHER_FIELD.label = 2
-MISSION_CFG_REPEAT_WHETHER_FIELD.has_default_value = false
-MISSION_CFG_REPEAT_WHETHER_FIELD.default_value = 0
-MISSION_CFG_REPEAT_WHETHER_FIELD.type = 5
-MISSION_CFG_REPEAT_WHETHER_FIELD.cpp_type = 1
-
-MISSION_CFG_DIRECTACCE_WHETHER_FIELD.name = "directacce_whether"
-MISSION_CFG_DIRECTACCE_WHETHER_FIELD.full_name = ".ftcfg.mission_cfg.directacce_whether"
-MISSION_CFG_DIRECTACCE_WHETHER_FIELD.number = 13
-MISSION_CFG_DIRECTACCE_WHETHER_FIELD.index = 12
-MISSION_CFG_DIRECTACCE_WHETHER_FIELD.label = 2
-MISSION_CFG_DIRECTACCE_WHETHER_FIELD.has_default_value = false
-MISSION_CFG_DIRECTACCE_WHETHER_FIELD.default_value = 0
-MISSION_CFG_DIRECTACCE_WHETHER_FIELD.type = 5
-MISSION_CFG_DIRECTACCE_WHETHER_FIELD.cpp_type = 1
-
-MISSION_CFG_AUTO_WHETHER_FIELD.name = "auto_whether"
-MISSION_CFG_AUTO_WHETHER_FIELD.full_name = ".ftcfg.mission_cfg.auto_whether"
-MISSION_CFG_AUTO_WHETHER_FIELD.number = 14
-MISSION_CFG_AUTO_WHETHER_FIELD.index = 13
-MISSION_CFG_AUTO_WHETHER_FIELD.label = 2
-MISSION_CFG_AUTO_WHETHER_FIELD.has_default_value = false
-MISSION_CFG_AUTO_WHETHER_FIELD.default_value = 0
-MISSION_CFG_AUTO_WHETHER_FIELD.type = 5
-MISSION_CFG_AUTO_WHETHER_FIELD.cpp_type = 1
-
-MISSION_CFG_AUTO_COMMIT_FIELD.name = "auto_commit"
-MISSION_CFG_AUTO_COMMIT_FIELD.full_name = ".ftcfg.mission_cfg.auto_commit"
-MISSION_CFG_AUTO_COMMIT_FIELD.number = 15
-MISSION_CFG_AUTO_COMMIT_FIELD.index = 14
-MISSION_CFG_AUTO_COMMIT_FIELD.label = 2
-MISSION_CFG_AUTO_COMMIT_FIELD.has_default_value = false
-MISSION_CFG_AUTO_COMMIT_FIELD.default_value = 0
-MISSION_CFG_AUTO_COMMIT_FIELD.type = 5
-MISSION_CFG_AUTO_COMMIT_FIELD.cpp_type = 1
-
-MISSION_CFG_MISSION_FRONTID_FIELD.name = "mission_frontid"
-MISSION_CFG_MISSION_FRONTID_FIELD.full_name = ".ftcfg.mission_cfg.mission_frontid"
-MISSION_CFG_MISSION_FRONTID_FIELD.number = 16
-MISSION_CFG_MISSION_FRONTID_FIELD.index = 15
-MISSION_CFG_MISSION_FRONTID_FIELD.label = 2
-MISSION_CFG_MISSION_FRONTID_FIELD.has_default_value = false
-MISSION_CFG_MISSION_FRONTID_FIELD.default_value = 0
-MISSION_CFG_MISSION_FRONTID_FIELD.type = 5
-MISSION_CFG_MISSION_FRONTID_FIELD.cpp_type = 1
-
-MISSION_CFG_MISSION_TRIGGERLV_FIELD.name = "mission_triggerlv"
-MISSION_CFG_MISSION_TRIGGERLV_FIELD.full_name = ".ftcfg.mission_cfg.mission_triggerlv"
-MISSION_CFG_MISSION_TRIGGERLV_FIELD.number = 17
-MISSION_CFG_MISSION_TRIGGERLV_FIELD.index = 16
-MISSION_CFG_MISSION_TRIGGERLV_FIELD.label = 2
-MISSION_CFG_MISSION_TRIGGERLV_FIELD.has_default_value = false
-MISSION_CFG_MISSION_TRIGGERLV_FIELD.default_value = 0
-MISSION_CFG_MISSION_TRIGGERLV_FIELD.type = 5
-MISSION_CFG_MISSION_TRIGGERLV_FIELD.cpp_type = 1
-
-MISSION_CFG_MISSION_GIVEUP_FIELD.name = "mission_giveup"
-MISSION_CFG_MISSION_GIVEUP_FIELD.full_name = ".ftcfg.mission_cfg.mission_giveup"
-MISSION_CFG_MISSION_GIVEUP_FIELD.number = 18
-MISSION_CFG_MISSION_GIVEUP_FIELD.index = 17
-MISSION_CFG_MISSION_GIVEUP_FIELD.label = 2
-MISSION_CFG_MISSION_GIVEUP_FIELD.has_default_value = false
-MISSION_CFG_MISSION_GIVEUP_FIELD.default_value = 0
-MISSION_CFG_MISSION_GIVEUP_FIELD.type = 5
-MISSION_CFG_MISSION_GIVEUP_FIELD.cpp_type = 1
-
-MISSION_CFG_MISSIONNODE_LIST_FIELD.name = "missionnode_list"
-MISSION_CFG_MISSIONNODE_LIST_FIELD.full_name = ".ftcfg.mission_cfg.missionnode_list"
-MISSION_CFG_MISSIONNODE_LIST_FIELD.number = 19
-MISSION_CFG_MISSIONNODE_LIST_FIELD.index = 18
-MISSION_CFG_MISSIONNODE_LIST_FIELD.label = 3
-MISSION_CFG_MISSIONNODE_LIST_FIELD.has_default_value = false
-MISSION_CFG_MISSIONNODE_LIST_FIELD.default_value = {}
-MISSION_CFG_MISSIONNODE_LIST_FIELD.type = 5
-MISSION_CFG_MISSIONNODE_LIST_FIELD.cpp_type = 1
-
-MISSION_CFG_DAILY_TIMES_FIELD.name = "daily_times"
-MISSION_CFG_DAILY_TIMES_FIELD.full_name = ".ftcfg.mission_cfg.daily_times"
-MISSION_CFG_DAILY_TIMES_FIELD.number = 20
-MISSION_CFG_DAILY_TIMES_FIELD.index = 19
-MISSION_CFG_DAILY_TIMES_FIELD.label = 2
-MISSION_CFG_DAILY_TIMES_FIELD.has_default_value = false
-MISSION_CFG_DAILY_TIMES_FIELD.default_value = 0
-MISSION_CFG_DAILY_TIMES_FIELD.type = 5
-MISSION_CFG_DAILY_TIMES_FIELD.cpp_type = 1
-
-MISSION_CFG_RESET_TIME_FIELD.name = "reset_time"
-MISSION_CFG_RESET_TIME_FIELD.full_name = ".ftcfg.mission_cfg.reset_time"
-MISSION_CFG_RESET_TIME_FIELD.number = 21
-MISSION_CFG_RESET_TIME_FIELD.index = 20
-MISSION_CFG_RESET_TIME_FIELD.label = 2
-MISSION_CFG_RESET_TIME_FIELD.has_default_value = false
-MISSION_CFG_RESET_TIME_FIELD.default_value = 0
-MISSION_CFG_RESET_TIME_FIELD.type = 5
-MISSION_CFG_RESET_TIME_FIELD.cpp_type = 1
-
-MISSION_CFG_MISSION_DURATION_FIELD.name = "mission_duration"
-MISSION_CFG_MISSION_DURATION_FIELD.full_name = ".ftcfg.mission_cfg.mission_duration"
-MISSION_CFG_MISSION_DURATION_FIELD.number = 22
-MISSION_CFG_MISSION_DURATION_FIELD.index = 21
-MISSION_CFG_MISSION_DURATION_FIELD.label = 2
-MISSION_CFG_MISSION_DURATION_FIELD.has_default_value = false
-MISSION_CFG_MISSION_DURATION_FIELD.default_value = 0
-MISSION_CFG_MISSION_DURATION_FIELD.type = 5
-MISSION_CFG_MISSION_DURATION_FIELD.cpp_type = 1
-
-MISSION_CFG_ACCEPT_SCENEID_FIELD.name = "accept_sceneid"
-MISSION_CFG_ACCEPT_SCENEID_FIELD.full_name = ".ftcfg.mission_cfg.accept_sceneid"
-MISSION_CFG_ACCEPT_SCENEID_FIELD.number = 23
-MISSION_CFG_ACCEPT_SCENEID_FIELD.index = 22
-MISSION_CFG_ACCEPT_SCENEID_FIELD.label = 2
-MISSION_CFG_ACCEPT_SCENEID_FIELD.has_default_value = false
-MISSION_CFG_ACCEPT_SCENEID_FIELD.default_value = 0
-MISSION_CFG_ACCEPT_SCENEID_FIELD.type = 5
-MISSION_CFG_ACCEPT_SCENEID_FIELD.cpp_type = 1
-
-MISSION_CFG_ACCEPT_NPCID_FIELD.name = "accept_npcid"
-MISSION_CFG_ACCEPT_NPCID_FIELD.full_name = ".ftcfg.mission_cfg.accept_npcid"
-MISSION_CFG_ACCEPT_NPCID_FIELD.number = 24
-MISSION_CFG_ACCEPT_NPCID_FIELD.index = 23
-MISSION_CFG_ACCEPT_NPCID_FIELD.label = 2
-MISSION_CFG_ACCEPT_NPCID_FIELD.has_default_value = false
-MISSION_CFG_ACCEPT_NPCID_FIELD.default_value = 0
-MISSION_CFG_ACCEPT_NPCID_FIELD.type = 5
-MISSION_CFG_ACCEPT_NPCID_FIELD.cpp_type = 1
-
-MISSION_CFG_CONDUCT_SCENEID_FIELD.name = "conduct_sceneid"
-MISSION_CFG_CONDUCT_SCENEID_FIELD.full_name = ".ftcfg.mission_cfg.conduct_sceneid"
-MISSION_CFG_CONDUCT_SCENEID_FIELD.number = 25
-MISSION_CFG_CONDUCT_SCENEID_FIELD.index = 24
-MISSION_CFG_CONDUCT_SCENEID_FIELD.label = 2
-MISSION_CFG_CONDUCT_SCENEID_FIELD.has_default_value = false
-MISSION_CFG_CONDUCT_SCENEID_FIELD.default_value = 0
-MISSION_CFG_CONDUCT_SCENEID_FIELD.type = 5
-MISSION_CFG_CONDUCT_SCENEID_FIELD.cpp_type = 1
-
-MISSION_CFG_CONDUCT_NPCID_FIELD.name = "conduct_npcid"
-MISSION_CFG_CONDUCT_NPCID_FIELD.full_name = ".ftcfg.mission_cfg.conduct_npcid"
-MISSION_CFG_CONDUCT_NPCID_FIELD.number = 26
-MISSION_CFG_CONDUCT_NPCID_FIELD.index = 25
-MISSION_CFG_CONDUCT_NPCID_FIELD.label = 2
-MISSION_CFG_CONDUCT_NPCID_FIELD.has_default_value = false
-MISSION_CFG_CONDUCT_NPCID_FIELD.default_value = 0
-MISSION_CFG_CONDUCT_NPCID_FIELD.type = 5
-MISSION_CFG_CONDUCT_NPCID_FIELD.cpp_type = 1
-
-MISSION_CFG_SUBMIT_SCENEID_FIELD.name = "submit_sceneid"
-MISSION_CFG_SUBMIT_SCENEID_FIELD.full_name = ".ftcfg.mission_cfg.submit_sceneid"
-MISSION_CFG_SUBMIT_SCENEID_FIELD.number = 27
-MISSION_CFG_SUBMIT_SCENEID_FIELD.index = 26
-MISSION_CFG_SUBMIT_SCENEID_FIELD.label = 2
-MISSION_CFG_SUBMIT_SCENEID_FIELD.has_default_value = false
-MISSION_CFG_SUBMIT_SCENEID_FIELD.default_value = 0
-MISSION_CFG_SUBMIT_SCENEID_FIELD.type = 5
-MISSION_CFG_SUBMIT_SCENEID_FIELD.cpp_type = 1
-
-MISSION_CFG_SUBMIT_NPCID_FIELD.name = "submit_npcid"
-MISSION_CFG_SUBMIT_NPCID_FIELD.full_name = ".ftcfg.mission_cfg.submit_npcid"
-MISSION_CFG_SUBMIT_NPCID_FIELD.number = 28
-MISSION_CFG_SUBMIT_NPCID_FIELD.index = 27
-MISSION_CFG_SUBMIT_NPCID_FIELD.label = 2
-MISSION_CFG_SUBMIT_NPCID_FIELD.has_default_value = false
-MISSION_CFG_SUBMIT_NPCID_FIELD.default_value = 0
-MISSION_CFG_SUBMIT_NPCID_FIELD.type = 5
-MISSION_CFG_SUBMIT_NPCID_FIELD.cpp_type = 1
-
-MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.name = "acceptseat_plotid"
-MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.full_name = ".ftcfg.mission_cfg.acceptseat_plotid"
-MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.number = 29
-MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.index = 28
-MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.label = 2
-MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.has_default_value = false
-MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.default_value = 0
-MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.type = 5
-MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD.cpp_type = 1
-
-MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.name = "conductseat_plotid"
-MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.full_name = ".ftcfg.mission_cfg.conductseat_plotid"
-MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.number = 30
-MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.index = 29
-MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.label = 2
-MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.has_default_value = false
-MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.default_value = 0
-MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.type = 5
-MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD.cpp_type = 1
-
-MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.name = "submitseat_plotid"
-MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.full_name = ".ftcfg.mission_cfg.submitseat_plotid"
-MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.number = 31
-MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.index = 30
-MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.label = 2
-MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.has_default_value = false
-MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.default_value = 0
-MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.type = 5
-MISSION_CFG_SUBMITSEAT_PLOTID_FIELD.cpp_type = 1
-
-MISSION_CFG_KILL_NPCID_FIELD.name = "kill_npcid"
-MISSION_CFG_KILL_NPCID_FIELD.full_name = ".ftcfg.mission_cfg.kill_npcid"
-MISSION_CFG_KILL_NPCID_FIELD.number = 32
-MISSION_CFG_KILL_NPCID_FIELD.index = 31
-MISSION_CFG_KILL_NPCID_FIELD.label = 3
-MISSION_CFG_KILL_NPCID_FIELD.has_default_value = false
-MISSION_CFG_KILL_NPCID_FIELD.default_value = {}
-MISSION_CFG_KILL_NPCID_FIELD.type = 5
-MISSION_CFG_KILL_NPCID_FIELD.cpp_type = 1
-
-MISSION_CFG_KILL_NPCNUM_FIELD.name = "kill_npcnum"
-MISSION_CFG_KILL_NPCNUM_FIELD.full_name = ".ftcfg.mission_cfg.kill_npcnum"
-MISSION_CFG_KILL_NPCNUM_FIELD.number = 33
-MISSION_CFG_KILL_NPCNUM_FIELD.index = 32
-MISSION_CFG_KILL_NPCNUM_FIELD.label = 3
-MISSION_CFG_KILL_NPCNUM_FIELD.has_default_value = false
-MISSION_CFG_KILL_NPCNUM_FIELD.default_value = {}
-MISSION_CFG_KILL_NPCNUM_FIELD.type = 5
-MISSION_CFG_KILL_NPCNUM_FIELD.cpp_type = 1
-
-MISSION_CFG_KILL_NPCDROP_FIELD.name = "kill_npcdrop"
-MISSION_CFG_KILL_NPCDROP_FIELD.full_name = ".ftcfg.mission_cfg.kill_npcdrop"
-MISSION_CFG_KILL_NPCDROP_FIELD.number = 34
-MISSION_CFG_KILL_NPCDROP_FIELD.index = 33
-MISSION_CFG_KILL_NPCDROP_FIELD.label = 3
-MISSION_CFG_KILL_NPCDROP_FIELD.has_default_value = false
-MISSION_CFG_KILL_NPCDROP_FIELD.default_value = {}
-MISSION_CFG_KILL_NPCDROP_FIELD.type = 5
-MISSION_CFG_KILL_NPCDROP_FIELD.cpp_type = 1
-
-MISSION_CFG_TALK_PLOTID_FIELD.name = "talk_plotid"
-MISSION_CFG_TALK_PLOTID_FIELD.full_name = ".ftcfg.mission_cfg.talk_plotid"
-MISSION_CFG_TALK_PLOTID_FIELD.number = 35
-MISSION_CFG_TALK_PLOTID_FIELD.index = 34
-MISSION_CFG_TALK_PLOTID_FIELD.label = 2
-MISSION_CFG_TALK_PLOTID_FIELD.has_default_value = false
-MISSION_CFG_TALK_PLOTID_FIELD.default_value = 0
-MISSION_CFG_TALK_PLOTID_FIELD.type = 5
-MISSION_CFG_TALK_PLOTID_FIELD.cpp_type = 1
-
-MISSION_CFG_COLLECT_ITEMID_FIELD.name = "collect_itemid"
-MISSION_CFG_COLLECT_ITEMID_FIELD.full_name = ".ftcfg.mission_cfg.collect_itemid"
-MISSION_CFG_COLLECT_ITEMID_FIELD.number = 36
-MISSION_CFG_COLLECT_ITEMID_FIELD.index = 35
-MISSION_CFG_COLLECT_ITEMID_FIELD.label = 3
-MISSION_CFG_COLLECT_ITEMID_FIELD.has_default_value = false
-MISSION_CFG_COLLECT_ITEMID_FIELD.default_value = {}
-MISSION_CFG_COLLECT_ITEMID_FIELD.type = 5
-MISSION_CFG_COLLECT_ITEMID_FIELD.cpp_type = 1
-
-MISSION_CFG_COLLECT_ITEMNUM_FIELD.name = "collect_itemnum"
-MISSION_CFG_COLLECT_ITEMNUM_FIELD.full_name = ".ftcfg.mission_cfg.collect_itemnum"
-MISSION_CFG_COLLECT_ITEMNUM_FIELD.number = 37
-MISSION_CFG_COLLECT_ITEMNUM_FIELD.index = 36
-MISSION_CFG_COLLECT_ITEMNUM_FIELD.label = 3
-MISSION_CFG_COLLECT_ITEMNUM_FIELD.has_default_value = false
-MISSION_CFG_COLLECT_ITEMNUM_FIELD.default_value = {}
-MISSION_CFG_COLLECT_ITEMNUM_FIELD.type = 5
-MISSION_CFG_COLLECT_ITEMNUM_FIELD.cpp_type = 1
-
-MISSION_CFG_SCENE_ID_FIELD.name = "scene_id"
-MISSION_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.mission_cfg.scene_id"
-MISSION_CFG_SCENE_ID_FIELD.number = 38
-MISSION_CFG_SCENE_ID_FIELD.index = 37
-MISSION_CFG_SCENE_ID_FIELD.label = 2
-MISSION_CFG_SCENE_ID_FIELD.has_default_value = false
-MISSION_CFG_SCENE_ID_FIELD.default_value = 0
-MISSION_CFG_SCENE_ID_FIELD.type = 5
-MISSION_CFG_SCENE_ID_FIELD.cpp_type = 1
-
-MISSION_CFG_POS_X_FIELD.name = "pos_x"
-MISSION_CFG_POS_X_FIELD.full_name = ".ftcfg.mission_cfg.pos_x"
-MISSION_CFG_POS_X_FIELD.number = 39
-MISSION_CFG_POS_X_FIELD.index = 38
-MISSION_CFG_POS_X_FIELD.label = 2
-MISSION_CFG_POS_X_FIELD.has_default_value = false
-MISSION_CFG_POS_X_FIELD.default_value = 0
-MISSION_CFG_POS_X_FIELD.type = 5
-MISSION_CFG_POS_X_FIELD.cpp_type = 1
-
-MISSION_CFG_POS_Z_FIELD.name = "pos_z"
-MISSION_CFG_POS_Z_FIELD.full_name = ".ftcfg.mission_cfg.pos_z"
-MISSION_CFG_POS_Z_FIELD.number = 40
-MISSION_CFG_POS_Z_FIELD.index = 39
-MISSION_CFG_POS_Z_FIELD.label = 2
-MISSION_CFG_POS_Z_FIELD.has_default_value = false
-MISSION_CFG_POS_Z_FIELD.default_value = 0
-MISSION_CFG_POS_Z_FIELD.type = 5
-MISSION_CFG_POS_Z_FIELD.cpp_type = 1
-
-MISSION_CFG_COLLECTION_NPCID_FIELD.name = "collection_npcid"
-MISSION_CFG_COLLECTION_NPCID_FIELD.full_name = ".ftcfg.mission_cfg.collection_npcid"
-MISSION_CFG_COLLECTION_NPCID_FIELD.number = 41
-MISSION_CFG_COLLECTION_NPCID_FIELD.index = 40
-MISSION_CFG_COLLECTION_NPCID_FIELD.label = 3
-MISSION_CFG_COLLECTION_NPCID_FIELD.has_default_value = false
-MISSION_CFG_COLLECTION_NPCID_FIELD.default_value = {}
-MISSION_CFG_COLLECTION_NPCID_FIELD.type = 5
-MISSION_CFG_COLLECTION_NPCID_FIELD.cpp_type = 1
-
-MISSION_CFG_COLLECTION_NPCNUM_FIELD.name = "collection_npcnum"
-MISSION_CFG_COLLECTION_NPCNUM_FIELD.full_name = ".ftcfg.mission_cfg.collection_npcnum"
-MISSION_CFG_COLLECTION_NPCNUM_FIELD.number = 42
-MISSION_CFG_COLLECTION_NPCNUM_FIELD.index = 41
-MISSION_CFG_COLLECTION_NPCNUM_FIELD.label = 3
-MISSION_CFG_COLLECTION_NPCNUM_FIELD.has_default_value = false
-MISSION_CFG_COLLECTION_NPCNUM_FIELD.default_value = {}
-MISSION_CFG_COLLECTION_NPCNUM_FIELD.type = 5
-MISSION_CFG_COLLECTION_NPCNUM_FIELD.cpp_type = 1
-
-MISSION_CFG_USED_ITEMID_FIELD.name = "used_itemid"
-MISSION_CFG_USED_ITEMID_FIELD.full_name = ".ftcfg.mission_cfg.used_itemid"
-MISSION_CFG_USED_ITEMID_FIELD.number = 43
-MISSION_CFG_USED_ITEMID_FIELD.index = 42
-MISSION_CFG_USED_ITEMID_FIELD.label = 2
-MISSION_CFG_USED_ITEMID_FIELD.has_default_value = false
-MISSION_CFG_USED_ITEMID_FIELD.default_value = 0
-MISSION_CFG_USED_ITEMID_FIELD.type = 5
-MISSION_CFG_USED_ITEMID_FIELD.cpp_type = 1
-
-MISSION_CFG_INTO_BATTLEID_FIELD.name = "into_battleid"
-MISSION_CFG_INTO_BATTLEID_FIELD.full_name = ".ftcfg.mission_cfg.into_battleid"
-MISSION_CFG_INTO_BATTLEID_FIELD.number = 44
-MISSION_CFG_INTO_BATTLEID_FIELD.index = 43
-MISSION_CFG_INTO_BATTLEID_FIELD.label = 2
-MISSION_CFG_INTO_BATTLEID_FIELD.has_default_value = false
-MISSION_CFG_INTO_BATTLEID_FIELD.default_value = 0
-MISSION_CFG_INTO_BATTLEID_FIELD.type = 5
-MISSION_CFG_INTO_BATTLEID_FIELD.cpp_type = 1
-
-MISSION_CFG_TARGET_GRADE_FIELD.name = "target_grade"
-MISSION_CFG_TARGET_GRADE_FIELD.full_name = ".ftcfg.mission_cfg.target_grade"
-MISSION_CFG_TARGET_GRADE_FIELD.number = 45
-MISSION_CFG_TARGET_GRADE_FIELD.index = 44
-MISSION_CFG_TARGET_GRADE_FIELD.label = 2
-MISSION_CFG_TARGET_GRADE_FIELD.has_default_value = false
-MISSION_CFG_TARGET_GRADE_FIELD.default_value = 0
-MISSION_CFG_TARGET_GRADE_FIELD.type = 5
-MISSION_CFG_TARGET_GRADE_FIELD.cpp_type = 1
-
-MISSION_CFG_FUNCTION_SCRIPT_FIELD.name = "function_script"
-MISSION_CFG_FUNCTION_SCRIPT_FIELD.full_name = ".ftcfg.mission_cfg.function_script"
-MISSION_CFG_FUNCTION_SCRIPT_FIELD.number = 46
-MISSION_CFG_FUNCTION_SCRIPT_FIELD.index = 45
-MISSION_CFG_FUNCTION_SCRIPT_FIELD.label = 2
-MISSION_CFG_FUNCTION_SCRIPT_FIELD.has_default_value = false
-MISSION_CFG_FUNCTION_SCRIPT_FIELD.default_value = ""
-MISSION_CFG_FUNCTION_SCRIPT_FIELD.type = 9
-MISSION_CFG_FUNCTION_SCRIPT_FIELD.cpp_type = 9
-
-MISSION_CFG_ACCEPT_PLOTID_FIELD.name = "accept_plotid"
-MISSION_CFG_ACCEPT_PLOTID_FIELD.full_name = ".ftcfg.mission_cfg.accept_plotid"
-MISSION_CFG_ACCEPT_PLOTID_FIELD.number = 47
-MISSION_CFG_ACCEPT_PLOTID_FIELD.index = 46
-MISSION_CFG_ACCEPT_PLOTID_FIELD.label = 2
-MISSION_CFG_ACCEPT_PLOTID_FIELD.has_default_value = false
-MISSION_CFG_ACCEPT_PLOTID_FIELD.default_value = 0
-MISSION_CFG_ACCEPT_PLOTID_FIELD.type = 5
-MISSION_CFG_ACCEPT_PLOTID_FIELD.cpp_type = 1
-
-MISSION_CFG_CONDUCT_PLOTID_FIELD.name = "conduct_plotid"
-MISSION_CFG_CONDUCT_PLOTID_FIELD.full_name = ".ftcfg.mission_cfg.conduct_plotid"
-MISSION_CFG_CONDUCT_PLOTID_FIELD.number = 48
-MISSION_CFG_CONDUCT_PLOTID_FIELD.index = 47
-MISSION_CFG_CONDUCT_PLOTID_FIELD.label = 2
-MISSION_CFG_CONDUCT_PLOTID_FIELD.has_default_value = false
-MISSION_CFG_CONDUCT_PLOTID_FIELD.default_value = 0
-MISSION_CFG_CONDUCT_PLOTID_FIELD.type = 5
-MISSION_CFG_CONDUCT_PLOTID_FIELD.cpp_type = 1
-
-MISSION_CFG_SUBMIT_PLOTID_FIELD.name = "submit_plotid"
-MISSION_CFG_SUBMIT_PLOTID_FIELD.full_name = ".ftcfg.mission_cfg.submit_plotid"
-MISSION_CFG_SUBMIT_PLOTID_FIELD.number = 49
-MISSION_CFG_SUBMIT_PLOTID_FIELD.index = 48
-MISSION_CFG_SUBMIT_PLOTID_FIELD.label = 2
-MISSION_CFG_SUBMIT_PLOTID_FIELD.has_default_value = false
-MISSION_CFG_SUBMIT_PLOTID_FIELD.default_value = 0
-MISSION_CFG_SUBMIT_PLOTID_FIELD.type = 5
-MISSION_CFG_SUBMIT_PLOTID_FIELD.cpp_type = 1
-
-MISSION_CFG_TRIGGER_BLUR_FIELD.name = "trigger_blur"
-MISSION_CFG_TRIGGER_BLUR_FIELD.full_name = ".ftcfg.mission_cfg.trigger_blur"
-MISSION_CFG_TRIGGER_BLUR_FIELD.number = 50
-MISSION_CFG_TRIGGER_BLUR_FIELD.index = 49
-MISSION_CFG_TRIGGER_BLUR_FIELD.label = 2
-MISSION_CFG_TRIGGER_BLUR_FIELD.has_default_value = false
-MISSION_CFG_TRIGGER_BLUR_FIELD.default_value = 0
-MISSION_CFG_TRIGGER_BLUR_FIELD.type = 5
-MISSION_CFG_TRIGGER_BLUR_FIELD.cpp_type = 1
-
-MISSION_CFG_ACCEPT_BLUR_FIELD.name = "accept_blur"
-MISSION_CFG_ACCEPT_BLUR_FIELD.full_name = ".ftcfg.mission_cfg.accept_blur"
-MISSION_CFG_ACCEPT_BLUR_FIELD.number = 51
-MISSION_CFG_ACCEPT_BLUR_FIELD.index = 50
-MISSION_CFG_ACCEPT_BLUR_FIELD.label = 2
-MISSION_CFG_ACCEPT_BLUR_FIELD.has_default_value = false
-MISSION_CFG_ACCEPT_BLUR_FIELD.default_value = 0
-MISSION_CFG_ACCEPT_BLUR_FIELD.type = 5
-MISSION_CFG_ACCEPT_BLUR_FIELD.cpp_type = 1
-
-MISSION_CFG_CONDUCT_BLUR_FIELD.name = "conduct_blur"
-MISSION_CFG_CONDUCT_BLUR_FIELD.full_name = ".ftcfg.mission_cfg.conduct_blur"
-MISSION_CFG_CONDUCT_BLUR_FIELD.number = 52
-MISSION_CFG_CONDUCT_BLUR_FIELD.index = 51
-MISSION_CFG_CONDUCT_BLUR_FIELD.label = 2
-MISSION_CFG_CONDUCT_BLUR_FIELD.has_default_value = false
-MISSION_CFG_CONDUCT_BLUR_FIELD.default_value = 0
-MISSION_CFG_CONDUCT_BLUR_FIELD.type = 5
-MISSION_CFG_CONDUCT_BLUR_FIELD.cpp_type = 1
-
-MISSION_CFG_REWARD_ITEMID_FIELD.name = "reward_itemid"
-MISSION_CFG_REWARD_ITEMID_FIELD.full_name = ".ftcfg.mission_cfg.reward_itemid"
-MISSION_CFG_REWARD_ITEMID_FIELD.number = 53
-MISSION_CFG_REWARD_ITEMID_FIELD.index = 52
-MISSION_CFG_REWARD_ITEMID_FIELD.label = 2
-MISSION_CFG_REWARD_ITEMID_FIELD.has_default_value = false
-MISSION_CFG_REWARD_ITEMID_FIELD.default_value = 0
-MISSION_CFG_REWARD_ITEMID_FIELD.type = 5
-MISSION_CFG_REWARD_ITEMID_FIELD.cpp_type = 1
-
-MISSION_CFG_FAILED_ITEMID_FIELD.name = "failed_itemid"
-MISSION_CFG_FAILED_ITEMID_FIELD.full_name = ".ftcfg.mission_cfg.failed_itemid"
-MISSION_CFG_FAILED_ITEMID_FIELD.number = 54
-MISSION_CFG_FAILED_ITEMID_FIELD.index = 53
-MISSION_CFG_FAILED_ITEMID_FIELD.label = 2
-MISSION_CFG_FAILED_ITEMID_FIELD.has_default_value = false
-MISSION_CFG_FAILED_ITEMID_FIELD.default_value = 0
-MISSION_CFG_FAILED_ITEMID_FIELD.type = 5
-MISSION_CFG_FAILED_ITEMID_FIELD.cpp_type = 1
-
-MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.name = "exclusive4_itemid"
-MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.full_name = ".ftcfg.mission_cfg.exclusive4_itemid"
-MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.number = 55
-MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.index = 54
-MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.label = 3
-MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.has_default_value = false
-MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.default_value = {}
-MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.type = 5
-MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD.cpp_type = 1
-
-MISSION_CFG_DISPLAY_WHETHER_FIELD.name = "display_whether"
-MISSION_CFG_DISPLAY_WHETHER_FIELD.full_name = ".ftcfg.mission_cfg.display_whether"
-MISSION_CFG_DISPLAY_WHETHER_FIELD.number = 56
-MISSION_CFG_DISPLAY_WHETHER_FIELD.index = 55
-MISSION_CFG_DISPLAY_WHETHER_FIELD.label = 2
-MISSION_CFG_DISPLAY_WHETHER_FIELD.has_default_value = false
-MISSION_CFG_DISPLAY_WHETHER_FIELD.default_value = 0
-MISSION_CFG_DISPLAY_WHETHER_FIELD.type = 5
-MISSION_CFG_DISPLAY_WHETHER_FIELD.cpp_type = 1
-
-MISSION_CFG_ACCEPT_DELIVERY_FIELD.name = "accept_delivery"
-MISSION_CFG_ACCEPT_DELIVERY_FIELD.full_name = ".ftcfg.mission_cfg.accept_delivery"
-MISSION_CFG_ACCEPT_DELIVERY_FIELD.number = 57
-MISSION_CFG_ACCEPT_DELIVERY_FIELD.index = 56
-MISSION_CFG_ACCEPT_DELIVERY_FIELD.label = 3
-MISSION_CFG_ACCEPT_DELIVERY_FIELD.has_default_value = false
-MISSION_CFG_ACCEPT_DELIVERY_FIELD.default_value = {}
-MISSION_CFG_ACCEPT_DELIVERY_FIELD.type = 5
-MISSION_CFG_ACCEPT_DELIVERY_FIELD.cpp_type = 1
-
-MISSION_CFG_MISSION_CONVOYS_FIELD.name = "mission_convoys"
-MISSION_CFG_MISSION_CONVOYS_FIELD.full_name = ".ftcfg.mission_cfg.mission_convoys"
-MISSION_CFG_MISSION_CONVOYS_FIELD.number = 58
-MISSION_CFG_MISSION_CONVOYS_FIELD.index = 57
-MISSION_CFG_MISSION_CONVOYS_FIELD.label = 3
-MISSION_CFG_MISSION_CONVOYS_FIELD.has_default_value = false
-MISSION_CFG_MISSION_CONVOYS_FIELD.default_value = {}
-MISSION_CFG_MISSION_CONVOYS_FIELD.type = 5
-MISSION_CFG_MISSION_CONVOYS_FIELD.cpp_type = 1
-
-MISSION_CFG_BIAOCHE_MOUNT_FIELD.name = "biaoche_mount"
-MISSION_CFG_BIAOCHE_MOUNT_FIELD.full_name = ".ftcfg.mission_cfg.biaoche_mount"
-MISSION_CFG_BIAOCHE_MOUNT_FIELD.number = 59
-MISSION_CFG_BIAOCHE_MOUNT_FIELD.index = 58
-MISSION_CFG_BIAOCHE_MOUNT_FIELD.label = 2
-MISSION_CFG_BIAOCHE_MOUNT_FIELD.has_default_value = false
-MISSION_CFG_BIAOCHE_MOUNT_FIELD.default_value = 0
-MISSION_CFG_BIAOCHE_MOUNT_FIELD.type = 5
-MISSION_CFG_BIAOCHE_MOUNT_FIELD.cpp_type = 1
-
-MISSION_CFG_SCENE_IS_COPY_FIELD.name = "scene_is_copy"
-MISSION_CFG_SCENE_IS_COPY_FIELD.full_name = ".ftcfg.mission_cfg.scene_is_copy"
-MISSION_CFG_SCENE_IS_COPY_FIELD.number = 60
-MISSION_CFG_SCENE_IS_COPY_FIELD.index = 59
-MISSION_CFG_SCENE_IS_COPY_FIELD.label = 2
-MISSION_CFG_SCENE_IS_COPY_FIELD.has_default_value = false
-MISSION_CFG_SCENE_IS_COPY_FIELD.default_value = 0
-MISSION_CFG_SCENE_IS_COPY_FIELD.type = 5
-MISSION_CFG_SCENE_IS_COPY_FIELD.cpp_type = 1
-
-MISSION_CFG_ALLOW_SHOW_FIELD.name = "allow_show"
-MISSION_CFG_ALLOW_SHOW_FIELD.full_name = ".ftcfg.mission_cfg.allow_show"
-MISSION_CFG_ALLOW_SHOW_FIELD.number = 61
-MISSION_CFG_ALLOW_SHOW_FIELD.index = 60
-MISSION_CFG_ALLOW_SHOW_FIELD.label = 2
-MISSION_CFG_ALLOW_SHOW_FIELD.has_default_value = false
-MISSION_CFG_ALLOW_SHOW_FIELD.default_value = 0
-MISSION_CFG_ALLOW_SHOW_FIELD.type = 5
-MISSION_CFG_ALLOW_SHOW_FIELD.cpp_type = 1
-
-MISSION_CFG_ACCEPTED_SHOW_FIELD.name = "accepted_show"
-MISSION_CFG_ACCEPTED_SHOW_FIELD.full_name = ".ftcfg.mission_cfg.accepted_show"
-MISSION_CFG_ACCEPTED_SHOW_FIELD.number = 62
-MISSION_CFG_ACCEPTED_SHOW_FIELD.index = 61
-MISSION_CFG_ACCEPTED_SHOW_FIELD.label = 2
-MISSION_CFG_ACCEPTED_SHOW_FIELD.has_default_value = false
-MISSION_CFG_ACCEPTED_SHOW_FIELD.default_value = 0
-MISSION_CFG_ACCEPTED_SHOW_FIELD.type = 5
-MISSION_CFG_ACCEPTED_SHOW_FIELD.cpp_type = 1
-
-MISSION_CFG_COMMIT_SHOW_FIELD.name = "commit_show"
-MISSION_CFG_COMMIT_SHOW_FIELD.full_name = ".ftcfg.mission_cfg.commit_show"
-MISSION_CFG_COMMIT_SHOW_FIELD.number = 63
-MISSION_CFG_COMMIT_SHOW_FIELD.index = 62
-MISSION_CFG_COMMIT_SHOW_FIELD.label = 2
-MISSION_CFG_COMMIT_SHOW_FIELD.has_default_value = false
-MISSION_CFG_COMMIT_SHOW_FIELD.default_value = 0
-MISSION_CFG_COMMIT_SHOW_FIELD.type = 5
-MISSION_CFG_COMMIT_SHOW_FIELD.cpp_type = 1
-
-MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.name = "accepted_inexecution"
-MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.full_name = ".ftcfg.mission_cfg.accepted_inexecution"
-MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.number = 64
-MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.index = 63
-MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.label = 2
-MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.has_default_value = false
-MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.default_value = 0
-MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.type = 5
-MISSION_CFG_ACCEPTED_INEXECUTION_FIELD.cpp_type = 1
-
-MISSION_CFG_OPEN_FUNC_FIELD.name = "open_func"
-MISSION_CFG_OPEN_FUNC_FIELD.full_name = ".ftcfg.mission_cfg.open_func"
-MISSION_CFG_OPEN_FUNC_FIELD.number = 65
-MISSION_CFG_OPEN_FUNC_FIELD.index = 64
-MISSION_CFG_OPEN_FUNC_FIELD.label = 2
-MISSION_CFG_OPEN_FUNC_FIELD.has_default_value = false
-MISSION_CFG_OPEN_FUNC_FIELD.default_value = nil
-MISSION_CFG_OPEN_FUNC_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
-MISSION_CFG_OPEN_FUNC_FIELD.type = 14
-MISSION_CFG_OPEN_FUNC_FIELD.cpp_type = 8
-
-MISSION_CFG_BTN_NAME_FIELD.name = "btn_name"
-MISSION_CFG_BTN_NAME_FIELD.full_name = ".ftcfg.mission_cfg.btn_name"
-MISSION_CFG_BTN_NAME_FIELD.number = 66
-MISSION_CFG_BTN_NAME_FIELD.index = 65
-MISSION_CFG_BTN_NAME_FIELD.label = 2
-MISSION_CFG_BTN_NAME_FIELD.has_default_value = false
-MISSION_CFG_BTN_NAME_FIELD.default_value = 0
-MISSION_CFG_BTN_NAME_FIELD.type = 5
-MISSION_CFG_BTN_NAME_FIELD.cpp_type = 1
-
-MISSION_CFG_EVENT_TYPE_FIELD.name = "event_type"
-MISSION_CFG_EVENT_TYPE_FIELD.full_name = ".ftcfg.mission_cfg.event_type"
-MISSION_CFG_EVENT_TYPE_FIELD.number = 67
-MISSION_CFG_EVENT_TYPE_FIELD.index = 66
-MISSION_CFG_EVENT_TYPE_FIELD.label = 2
-MISSION_CFG_EVENT_TYPE_FIELD.has_default_value = false
-MISSION_CFG_EVENT_TYPE_FIELD.default_value = 0
-MISSION_CFG_EVENT_TYPE_FIELD.type = 5
-MISSION_CFG_EVENT_TYPE_FIELD.cpp_type = 1
-
-MISSION_CFG_KILL_PLAYER_NUM_FIELD.name = "kill_player_num"
-MISSION_CFG_KILL_PLAYER_NUM_FIELD.full_name = ".ftcfg.mission_cfg.kill_player_num"
-MISSION_CFG_KILL_PLAYER_NUM_FIELD.number = 68
-MISSION_CFG_KILL_PLAYER_NUM_FIELD.index = 67
-MISSION_CFG_KILL_PLAYER_NUM_FIELD.label = 2
-MISSION_CFG_KILL_PLAYER_NUM_FIELD.has_default_value = false
-MISSION_CFG_KILL_PLAYER_NUM_FIELD.default_value = 0
-MISSION_CFG_KILL_PLAYER_NUM_FIELD.type = 5
-MISSION_CFG_KILL_PLAYER_NUM_FIELD.cpp_type = 1
-
-MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.name = "kill_player_level"
-MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.full_name = ".ftcfg.mission_cfg.kill_player_level"
-MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.number = 69
-MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.index = 68
-MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.label = 2
-MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.has_default_value = false
-MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.default_value = 0
-MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.type = 5
-MISSION_CFG_KILL_PLAYER_LEVEL_FIELD.cpp_type = 1
-
-MISSION_CFG_KILL_PLAYER_MAP_FIELD.name = "kill_player_map"
-MISSION_CFG_KILL_PLAYER_MAP_FIELD.full_name = ".ftcfg.mission_cfg.kill_player_map"
-MISSION_CFG_KILL_PLAYER_MAP_FIELD.number = 70
-MISSION_CFG_KILL_PLAYER_MAP_FIELD.index = 69
-MISSION_CFG_KILL_PLAYER_MAP_FIELD.label = 3
-MISSION_CFG_KILL_PLAYER_MAP_FIELD.has_default_value = false
-MISSION_CFG_KILL_PLAYER_MAP_FIELD.default_value = {}
-MISSION_CFG_KILL_PLAYER_MAP_FIELD.type = 5
-MISSION_CFG_KILL_PLAYER_MAP_FIELD.cpp_type = 1
-
-MISSION_CFG_SUPPORT_PAUSE_FIELD.name = "support_pause"
-MISSION_CFG_SUPPORT_PAUSE_FIELD.full_name = ".ftcfg.mission_cfg.support_pause"
-MISSION_CFG_SUPPORT_PAUSE_FIELD.number = 71
-MISSION_CFG_SUPPORT_PAUSE_FIELD.index = 70
-MISSION_CFG_SUPPORT_PAUSE_FIELD.label = 2
-MISSION_CFG_SUPPORT_PAUSE_FIELD.has_default_value = false
-MISSION_CFG_SUPPORT_PAUSE_FIELD.default_value = 0
-MISSION_CFG_SUPPORT_PAUSE_FIELD.type = 5
-MISSION_CFG_SUPPORT_PAUSE_FIELD.cpp_type = 1
-
-MISSION_CFG_SUBMISSION_HEAD_FIELD.name = "submission_head"
-MISSION_CFG_SUBMISSION_HEAD_FIELD.full_name = ".ftcfg.mission_cfg.submission_head"
-MISSION_CFG_SUBMISSION_HEAD_FIELD.number = 72
-MISSION_CFG_SUBMISSION_HEAD_FIELD.index = 71
-MISSION_CFG_SUBMISSION_HEAD_FIELD.label = 2
-MISSION_CFG_SUBMISSION_HEAD_FIELD.has_default_value = false
-MISSION_CFG_SUBMISSION_HEAD_FIELD.default_value = 0
-MISSION_CFG_SUBMISSION_HEAD_FIELD.type = 5
-MISSION_CFG_SUBMISSION_HEAD_FIELD.cpp_type = 1
-
-MISSION_CFG_ROUTE_MARK_ID_FIELD.name = "route_mark_id"
-MISSION_CFG_ROUTE_MARK_ID_FIELD.full_name = ".ftcfg.mission_cfg.route_mark_id"
-MISSION_CFG_ROUTE_MARK_ID_FIELD.number = 73
-MISSION_CFG_ROUTE_MARK_ID_FIELD.index = 72
-MISSION_CFG_ROUTE_MARK_ID_FIELD.label = 2
-MISSION_CFG_ROUTE_MARK_ID_FIELD.has_default_value = false
-MISSION_CFG_ROUTE_MARK_ID_FIELD.default_value = 0
-MISSION_CFG_ROUTE_MARK_ID_FIELD.type = 5
-MISSION_CFG_ROUTE_MARK_ID_FIELD.cpp_type = 1
-
-MISSION_CFG.name = "mission_cfg"
-MISSION_CFG.full_name = ".ftcfg.mission_cfg"
-MISSION_CFG.nested_types = {}
-MISSION_CFG.enum_types = {}
-MISSION_CFG.fields = {MISSION_CFG_ID_FIELD, MISSION_CFG_MISSION_GROUPID_FIELD, MISSION_CFG_MISSION_COLOUR_FIELD, MISSION_CFG_MISSION_NAME_FIELD, MISSION_CFG_MISSION_TEXT_FIELD, MISSION_CFG_MISSION_TARGET1_FIELD, MISSION_CFG_MISSION_TARGET2_FIELD, MISSION_CFG_MISSION_TARGET3_FIELD, MISSION_CFG_MISSION_TYPE_FIELD, MISSION_CFG_MISSION_TARGETTYPE_FIELD, MISSION_CFG_MISSION_OCCUPATION_FIELD, MISSION_CFG_REPEAT_WHETHER_FIELD, MISSION_CFG_DIRECTACCE_WHETHER_FIELD, MISSION_CFG_AUTO_WHETHER_FIELD, MISSION_CFG_AUTO_COMMIT_FIELD, MISSION_CFG_MISSION_FRONTID_FIELD, MISSION_CFG_MISSION_TRIGGERLV_FIELD, MISSION_CFG_MISSION_GIVEUP_FIELD, MISSION_CFG_MISSIONNODE_LIST_FIELD, MISSION_CFG_DAILY_TIMES_FIELD, MISSION_CFG_RESET_TIME_FIELD, MISSION_CFG_MISSION_DURATION_FIELD, MISSION_CFG_ACCEPT_SCENEID_FIELD, MISSION_CFG_ACCEPT_NPCID_FIELD, MISSION_CFG_CONDUCT_SCENEID_FIELD, MISSION_CFG_CONDUCT_NPCID_FIELD, MISSION_CFG_SUBMIT_SCENEID_FIELD, MISSION_CFG_SUBMIT_NPCID_FIELD, MISSION_CFG_ACCEPTSEAT_PLOTID_FIELD, MISSION_CFG_CONDUCTSEAT_PLOTID_FIELD, MISSION_CFG_SUBMITSEAT_PLOTID_FIELD, MISSION_CFG_KILL_NPCID_FIELD, MISSION_CFG_KILL_NPCNUM_FIELD, MISSION_CFG_KILL_NPCDROP_FIELD, MISSION_CFG_TALK_PLOTID_FIELD, MISSION_CFG_COLLECT_ITEMID_FIELD, MISSION_CFG_COLLECT_ITEMNUM_FIELD, MISSION_CFG_SCENE_ID_FIELD, MISSION_CFG_POS_X_FIELD, MISSION_CFG_POS_Z_FIELD, MISSION_CFG_COLLECTION_NPCID_FIELD, MISSION_CFG_COLLECTION_NPCNUM_FIELD, MISSION_CFG_USED_ITEMID_FIELD, MISSION_CFG_INTO_BATTLEID_FIELD, MISSION_CFG_TARGET_GRADE_FIELD, MISSION_CFG_FUNCTION_SCRIPT_FIELD, MISSION_CFG_ACCEPT_PLOTID_FIELD, MISSION_CFG_CONDUCT_PLOTID_FIELD, MISSION_CFG_SUBMIT_PLOTID_FIELD, MISSION_CFG_TRIGGER_BLUR_FIELD, MISSION_CFG_ACCEPT_BLUR_FIELD, MISSION_CFG_CONDUCT_BLUR_FIELD, MISSION_CFG_REWARD_ITEMID_FIELD, MISSION_CFG_FAILED_ITEMID_FIELD, MISSION_CFG_EXCLUSIVE4_ITEMID_FIELD, MISSION_CFG_DISPLAY_WHETHER_FIELD, MISSION_CFG_ACCEPT_DELIVERY_FIELD, MISSION_CFG_MISSION_CONVOYS_FIELD, MISSION_CFG_BIAOCHE_MOUNT_FIELD, MISSION_CFG_SCENE_IS_COPY_FIELD, MISSION_CFG_ALLOW_SHOW_FIELD, MISSION_CFG_ACCEPTED_SHOW_FIELD, MISSION_CFG_COMMIT_SHOW_FIELD, MISSION_CFG_ACCEPTED_INEXECUTION_FIELD, MISSION_CFG_OPEN_FUNC_FIELD, MISSION_CFG_BTN_NAME_FIELD, MISSION_CFG_EVENT_TYPE_FIELD, MISSION_CFG_KILL_PLAYER_NUM_FIELD, MISSION_CFG_KILL_PLAYER_LEVEL_FIELD, MISSION_CFG_KILL_PLAYER_MAP_FIELD, MISSION_CFG_SUPPORT_PAUSE_FIELD, MISSION_CFG_SUBMISSION_HEAD_FIELD, MISSION_CFG_ROUTE_MARK_ID_FIELD}
-MISSION_CFG.is_extendable = false
-MISSION_CFG.extensions = {}
-MISSION_CFGS_ITEMS_FIELD.name = "items"
-MISSION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.mission_cfgs.items"
-MISSION_CFGS_ITEMS_FIELD.number = 1
-MISSION_CFGS_ITEMS_FIELD.index = 0
-MISSION_CFGS_ITEMS_FIELD.label = 3
-MISSION_CFGS_ITEMS_FIELD.has_default_value = false
-MISSION_CFGS_ITEMS_FIELD.default_value = {}
-MISSION_CFGS_ITEMS_FIELD.message_type = MISSION_CFG
-MISSION_CFGS_ITEMS_FIELD.type = 11
-MISSION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MISSION_CFGS.name = "mission_cfgs"
-MISSION_CFGS.full_name = ".ftcfg.mission_cfgs"
-MISSION_CFGS.nested_types = {}
-MISSION_CFGS.enum_types = {}
-MISSION_CFGS.fields = {MISSION_CFGS_ITEMS_FIELD}
-MISSION_CFGS.is_extendable = false
-MISSION_CFGS.extensions = {}
-MISSION_GROUP_CFG_ID_FIELD.name = "id"
-MISSION_GROUP_CFG_ID_FIELD.full_name = ".ftcfg.mission_group_cfg.id"
-MISSION_GROUP_CFG_ID_FIELD.number = 1
-MISSION_GROUP_CFG_ID_FIELD.index = 0
-MISSION_GROUP_CFG_ID_FIELD.label = 2
-MISSION_GROUP_CFG_ID_FIELD.has_default_value = false
-MISSION_GROUP_CFG_ID_FIELD.default_value = 0
-MISSION_GROUP_CFG_ID_FIELD.type = 5
-MISSION_GROUP_CFG_ID_FIELD.cpp_type = 1
-
-MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.name = "quest_groupname"
-MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.full_name = ".ftcfg.mission_group_cfg.quest_groupname"
-MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.number = 2
-MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.index = 1
-MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.label = 2
-MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.has_default_value = false
-MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.default_value = 0
-MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.type = 5
-MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD.cpp_type = 1
-
-MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.name = "quest_grouptips"
-MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.full_name = ".ftcfg.mission_group_cfg.quest_grouptips"
-MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.number = 3
-MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.index = 2
-MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.label = 2
-MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.has_default_value = false
-MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.default_value = 0
-MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.type = 5
-MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD.cpp_type = 1
-
-MISSION_GROUP_CFG.name = "mission_group_cfg"
-MISSION_GROUP_CFG.full_name = ".ftcfg.mission_group_cfg"
-MISSION_GROUP_CFG.nested_types = {}
-MISSION_GROUP_CFG.enum_types = {}
-MISSION_GROUP_CFG.fields = {MISSION_GROUP_CFG_ID_FIELD, MISSION_GROUP_CFG_QUEST_GROUPNAME_FIELD, MISSION_GROUP_CFG_QUEST_GROUPTIPS_FIELD}
-MISSION_GROUP_CFG.is_extendable = false
-MISSION_GROUP_CFG.extensions = {}
-MISSION_GROUP_CFGS_ITEMS_FIELD.name = "items"
-MISSION_GROUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.mission_group_cfgs.items"
-MISSION_GROUP_CFGS_ITEMS_FIELD.number = 1
-MISSION_GROUP_CFGS_ITEMS_FIELD.index = 0
-MISSION_GROUP_CFGS_ITEMS_FIELD.label = 3
-MISSION_GROUP_CFGS_ITEMS_FIELD.has_default_value = false
-MISSION_GROUP_CFGS_ITEMS_FIELD.default_value = {}
-MISSION_GROUP_CFGS_ITEMS_FIELD.message_type = MISSION_GROUP_CFG
-MISSION_GROUP_CFGS_ITEMS_FIELD.type = 11
-MISSION_GROUP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MISSION_GROUP_CFGS.name = "mission_group_cfgs"
-MISSION_GROUP_CFGS.full_name = ".ftcfg.mission_group_cfgs"
-MISSION_GROUP_CFGS.nested_types = {}
-MISSION_GROUP_CFGS.enum_types = {}
-MISSION_GROUP_CFGS.fields = {MISSION_GROUP_CFGS_ITEMS_FIELD}
-MISSION_GROUP_CFGS.is_extendable = false
-MISSION_GROUP_CFGS.extensions = {}
-NPC_SPAWN_METHOD_CFG_ID_FIELD.name = "id"
-NPC_SPAWN_METHOD_CFG_ID_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.id"
-NPC_SPAWN_METHOD_CFG_ID_FIELD.number = 1
-NPC_SPAWN_METHOD_CFG_ID_FIELD.index = 0
-NPC_SPAWN_METHOD_CFG_ID_FIELD.label = 2
-NPC_SPAWN_METHOD_CFG_ID_FIELD.has_default_value = false
-NPC_SPAWN_METHOD_CFG_ID_FIELD.default_value = 0
-NPC_SPAWN_METHOD_CFG_ID_FIELD.type = 5
-NPC_SPAWN_METHOD_CFG_ID_FIELD.cpp_type = 1
-
-NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.name = "group_id"
-NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.group_id"
-NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.number = 2
-NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.index = 1
-NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.label = 2
-NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.has_default_value = false
-NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.default_value = 0
-NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.type = 5
-NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD.cpp_type = 1
-
-NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.name = "map_id"
-NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.map_id"
-NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.number = 3
-NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.index = 2
-NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.label = 2
-NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.has_default_value = false
-NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.default_value = 0
-NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.type = 5
-NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD.cpp_type = 1
-
-NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.name = "npc_id"
-NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.npc_id"
-NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.number = 4
-NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.index = 3
-NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.label = 2
-NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.has_default_value = false
-NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.default_value = 0
-NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.type = 5
-NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD.cpp_type = 1
-
-NPC_SPAWN_METHOD_CFG_POS_X_FIELD.name = "pos_x"
-NPC_SPAWN_METHOD_CFG_POS_X_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.pos_x"
-NPC_SPAWN_METHOD_CFG_POS_X_FIELD.number = 5
-NPC_SPAWN_METHOD_CFG_POS_X_FIELD.index = 4
-NPC_SPAWN_METHOD_CFG_POS_X_FIELD.label = 2
-NPC_SPAWN_METHOD_CFG_POS_X_FIELD.has_default_value = false
-NPC_SPAWN_METHOD_CFG_POS_X_FIELD.default_value = 0.0
-NPC_SPAWN_METHOD_CFG_POS_X_FIELD.type = 2
-NPC_SPAWN_METHOD_CFG_POS_X_FIELD.cpp_type = 6
-
-NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.name = "pos_y"
-NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.pos_y"
-NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.number = 6
-NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.index = 5
-NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.label = 2
-NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.has_default_value = false
-NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.default_value = 0.0
-NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.type = 2
-NPC_SPAWN_METHOD_CFG_POS_Y_FIELD.cpp_type = 6
-
-NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.name = "pos_z"
-NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.pos_z"
-NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.number = 7
-NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.index = 6
-NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.label = 2
-NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.has_default_value = false
-NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.default_value = 0.0
-NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.type = 2
-NPC_SPAWN_METHOD_CFG_POS_Z_FIELD.cpp_type = 6
-
-NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.name = "orientation"
-NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.orientation"
-NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.number = 8
-NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.index = 7
-NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.label = 2
-NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.has_default_value = false
-NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.default_value = 0.0
-NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.type = 2
-NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD.cpp_type = 6
-
-NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.name = "relive_type"
-NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.relive_type"
-NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.number = 9
-NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.index = 8
-NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.label = 2
-NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.has_default_value = false
-NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.default_value = 0
-NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.type = 5
-NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD.cpp_type = 1
-
-NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.name = "relive_time"
-NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.relive_time"
-NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.number = 10
-NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.index = 9
-NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.label = 2
-NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.has_default_value = false
-NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.default_value = 0
-NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.type = 5
-NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD.cpp_type = 1
-
-NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.name = "service_list"
-NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.service_list"
-NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.number = 11
-NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.index = 10
-NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.label = 3
-NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.has_default_value = false
-NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.default_value = {}
-NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.type = 5
-NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD.cpp_type = 1
-
-NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.name = "npc_type"
-NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.npc_type"
-NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.number = 12
-NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.index = 11
-NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.label = 2
-NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.has_default_value = false
-NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.default_value = nil
-NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.enum_type = config_predefine_pb.EENTITYTYPE
-NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.type = 14
-NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD.cpp_type = 8
-
-NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.name = "mission_ids"
-NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.full_name = ".ftcfg.npc_spawn_method_cfg.mission_ids"
-NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.number = 13
-NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.index = 12
-NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.label = 3
-NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.has_default_value = false
-NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.default_value = {}
-NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.type = 5
-NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD.cpp_type = 1
-
-NPC_SPAWN_METHOD_CFG.name = "npc_spawn_method_cfg"
-NPC_SPAWN_METHOD_CFG.full_name = ".ftcfg.npc_spawn_method_cfg"
-NPC_SPAWN_METHOD_CFG.nested_types = {}
-NPC_SPAWN_METHOD_CFG.enum_types = {}
-NPC_SPAWN_METHOD_CFG.fields = {NPC_SPAWN_METHOD_CFG_ID_FIELD, NPC_SPAWN_METHOD_CFG_GROUP_ID_FIELD, NPC_SPAWN_METHOD_CFG_MAP_ID_FIELD, NPC_SPAWN_METHOD_CFG_NPC_ID_FIELD, NPC_SPAWN_METHOD_CFG_POS_X_FIELD, NPC_SPAWN_METHOD_CFG_POS_Y_FIELD, NPC_SPAWN_METHOD_CFG_POS_Z_FIELD, NPC_SPAWN_METHOD_CFG_ORIENTATION_FIELD, NPC_SPAWN_METHOD_CFG_RELIVE_TYPE_FIELD, NPC_SPAWN_METHOD_CFG_RELIVE_TIME_FIELD, NPC_SPAWN_METHOD_CFG_SERVICE_LIST_FIELD, NPC_SPAWN_METHOD_CFG_NPC_TYPE_FIELD, NPC_SPAWN_METHOD_CFG_MISSION_IDS_FIELD}
-NPC_SPAWN_METHOD_CFG.is_extendable = false
-NPC_SPAWN_METHOD_CFG.extensions = {}
-NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.name = "items"
-NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.npc_spawn_method_cfgs.items"
-NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.number = 1
-NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.index = 0
-NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.label = 3
-NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.has_default_value = false
-NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.default_value = {}
-NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.message_type = NPC_SPAWN_METHOD_CFG
-NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.type = 11
-NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD.cpp_type = 10
-
-NPC_SPAWN_METHOD_CFGS.name = "npc_spawn_method_cfgs"
-NPC_SPAWN_METHOD_CFGS.full_name = ".ftcfg.npc_spawn_method_cfgs"
-NPC_SPAWN_METHOD_CFGS.nested_types = {}
-NPC_SPAWN_METHOD_CFGS.enum_types = {}
-NPC_SPAWN_METHOD_CFGS.fields = {NPC_SPAWN_METHOD_CFGS_ITEMS_FIELD}
-NPC_SPAWN_METHOD_CFGS.is_extendable = false
-NPC_SPAWN_METHOD_CFGS.extensions = {}
-NPC_FUNCTION_CFG_ID_FIELD.name = "id"
-NPC_FUNCTION_CFG_ID_FIELD.full_name = ".ftcfg.npc_function_cfg.id"
-NPC_FUNCTION_CFG_ID_FIELD.number = 1
-NPC_FUNCTION_CFG_ID_FIELD.index = 0
-NPC_FUNCTION_CFG_ID_FIELD.label = 2
-NPC_FUNCTION_CFG_ID_FIELD.has_default_value = false
-NPC_FUNCTION_CFG_ID_FIELD.default_value = 0
-NPC_FUNCTION_CFG_ID_FIELD.type = 5
-NPC_FUNCTION_CFG_ID_FIELD.cpp_type = 1
-
-NPC_FUNCTION_CFG_SCENE_ID_FIELD.name = "scene_id"
-NPC_FUNCTION_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.npc_function_cfg.scene_id"
-NPC_FUNCTION_CFG_SCENE_ID_FIELD.number = 2
-NPC_FUNCTION_CFG_SCENE_ID_FIELD.index = 1
-NPC_FUNCTION_CFG_SCENE_ID_FIELD.label = 2
-NPC_FUNCTION_CFG_SCENE_ID_FIELD.has_default_value = false
-NPC_FUNCTION_CFG_SCENE_ID_FIELD.default_value = 0
-NPC_FUNCTION_CFG_SCENE_ID_FIELD.type = 5
-NPC_FUNCTION_CFG_SCENE_ID_FIELD.cpp_type = 1
-
-NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.name = "open_dialog"
-NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.full_name = ".ftcfg.npc_function_cfg.open_dialog"
-NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.number = 3
-NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.index = 2
-NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.label = 2
-NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.has_default_value = false
-NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.default_value = false
-NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.type = 8
-NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD.cpp_type = 7
-
-NPC_FUNCTION_CFG_BUTTONS_FIELD.name = "buttons"
-NPC_FUNCTION_CFG_BUTTONS_FIELD.full_name = ".ftcfg.npc_function_cfg.buttons"
-NPC_FUNCTION_CFG_BUTTONS_FIELD.number = 4
-NPC_FUNCTION_CFG_BUTTONS_FIELD.index = 3
-NPC_FUNCTION_CFG_BUTTONS_FIELD.label = 3
-NPC_FUNCTION_CFG_BUTTONS_FIELD.has_default_value = false
-NPC_FUNCTION_CFG_BUTTONS_FIELD.default_value = {}
-NPC_FUNCTION_CFG_BUTTONS_FIELD.type = 5
-NPC_FUNCTION_CFG_BUTTONS_FIELD.cpp_type = 1
-
-NPC_FUNCTION_CFG_CONTENT_FIELD.name = "content"
-NPC_FUNCTION_CFG_CONTENT_FIELD.full_name = ".ftcfg.npc_function_cfg.content"
-NPC_FUNCTION_CFG_CONTENT_FIELD.number = 5
-NPC_FUNCTION_CFG_CONTENT_FIELD.index = 4
-NPC_FUNCTION_CFG_CONTENT_FIELD.label = 2
-NPC_FUNCTION_CFG_CONTENT_FIELD.has_default_value = false
-NPC_FUNCTION_CFG_CONTENT_FIELD.default_value = 0
-NPC_FUNCTION_CFG_CONTENT_FIELD.type = 5
-NPC_FUNCTION_CFG_CONTENT_FIELD.cpp_type = 1
-
-NPC_FUNCTION_CFG_FUNCTIONS_FIELD.name = "functions"
-NPC_FUNCTION_CFG_FUNCTIONS_FIELD.full_name = ".ftcfg.npc_function_cfg.functions"
-NPC_FUNCTION_CFG_FUNCTIONS_FIELD.number = 6
-NPC_FUNCTION_CFG_FUNCTIONS_FIELD.index = 5
-NPC_FUNCTION_CFG_FUNCTIONS_FIELD.label = 3
-NPC_FUNCTION_CFG_FUNCTIONS_FIELD.has_default_value = false
-NPC_FUNCTION_CFG_FUNCTIONS_FIELD.default_value = {}
-NPC_FUNCTION_CFG_FUNCTIONS_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
-NPC_FUNCTION_CFG_FUNCTIONS_FIELD.type = 14
-NPC_FUNCTION_CFG_FUNCTIONS_FIELD.cpp_type = 8
-
-NPC_FUNCTION_CFG_FUNC_PARA_FIELD.name = "func_para"
-NPC_FUNCTION_CFG_FUNC_PARA_FIELD.full_name = ".ftcfg.npc_function_cfg.func_para"
-NPC_FUNCTION_CFG_FUNC_PARA_FIELD.number = 7
-NPC_FUNCTION_CFG_FUNC_PARA_FIELD.index = 6
-NPC_FUNCTION_CFG_FUNC_PARA_FIELD.label = 3
-NPC_FUNCTION_CFG_FUNC_PARA_FIELD.has_default_value = false
-NPC_FUNCTION_CFG_FUNC_PARA_FIELD.default_value = {}
-NPC_FUNCTION_CFG_FUNC_PARA_FIELD.type = 5
-NPC_FUNCTION_CFG_FUNC_PARA_FIELD.cpp_type = 1
-
-NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.name = "show_scale"
-NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.full_name = ".ftcfg.npc_function_cfg.show_scale"
-NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.number = 8
-NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.index = 7
-NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.label = 2
-NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.has_default_value = false
-NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.default_value = 0.0
-NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.type = 2
-NPC_FUNCTION_CFG_SHOW_SCALE_FIELD.cpp_type = 6
-
-NPC_FUNCTION_CFG.name = "npc_function_cfg"
-NPC_FUNCTION_CFG.full_name = ".ftcfg.npc_function_cfg"
-NPC_FUNCTION_CFG.nested_types = {}
-NPC_FUNCTION_CFG.enum_types = {}
-NPC_FUNCTION_CFG.fields = {NPC_FUNCTION_CFG_ID_FIELD, NPC_FUNCTION_CFG_SCENE_ID_FIELD, NPC_FUNCTION_CFG_OPEN_DIALOG_FIELD, NPC_FUNCTION_CFG_BUTTONS_FIELD, NPC_FUNCTION_CFG_CONTENT_FIELD, NPC_FUNCTION_CFG_FUNCTIONS_FIELD, NPC_FUNCTION_CFG_FUNC_PARA_FIELD, NPC_FUNCTION_CFG_SHOW_SCALE_FIELD}
-NPC_FUNCTION_CFG.is_extendable = false
-NPC_FUNCTION_CFG.extensions = {}
-NPC_FUNCTION_CFGS_ITEMS_FIELD.name = "items"
-NPC_FUNCTION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.npc_function_cfgs.items"
-NPC_FUNCTION_CFGS_ITEMS_FIELD.number = 1
-NPC_FUNCTION_CFGS_ITEMS_FIELD.index = 0
-NPC_FUNCTION_CFGS_ITEMS_FIELD.label = 3
-NPC_FUNCTION_CFGS_ITEMS_FIELD.has_default_value = false
-NPC_FUNCTION_CFGS_ITEMS_FIELD.default_value = {}
-NPC_FUNCTION_CFGS_ITEMS_FIELD.message_type = NPC_FUNCTION_CFG
-NPC_FUNCTION_CFGS_ITEMS_FIELD.type = 11
-NPC_FUNCTION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-NPC_FUNCTION_CFGS.name = "npc_function_cfgs"
-NPC_FUNCTION_CFGS.full_name = ".ftcfg.npc_function_cfgs"
-NPC_FUNCTION_CFGS.nested_types = {}
-NPC_FUNCTION_CFGS.enum_types = {}
-NPC_FUNCTION_CFGS.fields = {NPC_FUNCTION_CFGS_ITEMS_FIELD}
-NPC_FUNCTION_CFGS.is_extendable = false
-NPC_FUNCTION_CFGS.extensions = {}
-PLAYSCG_CFG_ID_FIELD.name = "id"
-PLAYSCG_CFG_ID_FIELD.full_name = ".ftcfg.playscg_cfg.id"
-PLAYSCG_CFG_ID_FIELD.number = 1
-PLAYSCG_CFG_ID_FIELD.index = 0
-PLAYSCG_CFG_ID_FIELD.label = 2
-PLAYSCG_CFG_ID_FIELD.has_default_value = false
-PLAYSCG_CFG_ID_FIELD.default_value = 0
-PLAYSCG_CFG_ID_FIELD.type = 5
-PLAYSCG_CFG_ID_FIELD.cpp_type = 1
-
-PLAYSCG_CFG_STATE_FIELD.name = "state"
-PLAYSCG_CFG_STATE_FIELD.full_name = ".ftcfg.playscg_cfg.state"
-PLAYSCG_CFG_STATE_FIELD.number = 2
-PLAYSCG_CFG_STATE_FIELD.index = 1
-PLAYSCG_CFG_STATE_FIELD.label = 2
-PLAYSCG_CFG_STATE_FIELD.has_default_value = false
-PLAYSCG_CFG_STATE_FIELD.default_value = 0
-PLAYSCG_CFG_STATE_FIELD.type = 5
-PLAYSCG_CFG_STATE_FIELD.cpp_type = 1
-
-PLAYSCG_CFG.name = "playscg_cfg"
-PLAYSCG_CFG.full_name = ".ftcfg.playscg_cfg"
-PLAYSCG_CFG.nested_types = {}
-PLAYSCG_CFG.enum_types = {}
-PLAYSCG_CFG.fields = {PLAYSCG_CFG_ID_FIELD, PLAYSCG_CFG_STATE_FIELD}
-PLAYSCG_CFG.is_extendable = false
-PLAYSCG_CFG.extensions = {}
-PLAYSCG_CFGS_ITEMS_FIELD.name = "items"
-PLAYSCG_CFGS_ITEMS_FIELD.full_name = ".ftcfg.playscg_cfgs.items"
-PLAYSCG_CFGS_ITEMS_FIELD.number = 1
-PLAYSCG_CFGS_ITEMS_FIELD.index = 0
-PLAYSCG_CFGS_ITEMS_FIELD.label = 3
-PLAYSCG_CFGS_ITEMS_FIELD.has_default_value = false
-PLAYSCG_CFGS_ITEMS_FIELD.default_value = {}
-PLAYSCG_CFGS_ITEMS_FIELD.message_type = PLAYSCG_CFG
-PLAYSCG_CFGS_ITEMS_FIELD.type = 11
-PLAYSCG_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PLAYSCG_CFGS.name = "playscg_cfgs"
-PLAYSCG_CFGS.full_name = ".ftcfg.playscg_cfgs"
-PLAYSCG_CFGS.nested_types = {}
-PLAYSCG_CFGS.enum_types = {}
-PLAYSCG_CFGS.fields = {PLAYSCG_CFGS_ITEMS_FIELD}
-PLAYSCG_CFGS.is_extendable = false
-PLAYSCG_CFGS.extensions = {}
-PLOT_DATA_CFG_ID_FIELD.name = "id"
-PLOT_DATA_CFG_ID_FIELD.full_name = ".ftcfg.plot_data_cfg.id"
-PLOT_DATA_CFG_ID_FIELD.number = 1
-PLOT_DATA_CFG_ID_FIELD.index = 0
-PLOT_DATA_CFG_ID_FIELD.label = 2
-PLOT_DATA_CFG_ID_FIELD.has_default_value = false
-PLOT_DATA_CFG_ID_FIELD.default_value = 0
-PLOT_DATA_CFG_ID_FIELD.type = 5
-PLOT_DATA_CFG_ID_FIELD.cpp_type = 1
-
-PLOT_DATA_CFG_TYPE_FIELD.name = "type"
-PLOT_DATA_CFG_TYPE_FIELD.full_name = ".ftcfg.plot_data_cfg.type"
-PLOT_DATA_CFG_TYPE_FIELD.number = 2
-PLOT_DATA_CFG_TYPE_FIELD.index = 1
-PLOT_DATA_CFG_TYPE_FIELD.label = 2
-PLOT_DATA_CFG_TYPE_FIELD.has_default_value = false
-PLOT_DATA_CFG_TYPE_FIELD.default_value = 0
-PLOT_DATA_CFG_TYPE_FIELD.type = 5
-PLOT_DATA_CFG_TYPE_FIELD.cpp_type = 1
-
-PLOT_DATA_CFG_NEXT_PLOT_FIELD.name = "next_plot"
-PLOT_DATA_CFG_NEXT_PLOT_FIELD.full_name = ".ftcfg.plot_data_cfg.next_plot"
-PLOT_DATA_CFG_NEXT_PLOT_FIELD.number = 3
-PLOT_DATA_CFG_NEXT_PLOT_FIELD.index = 2
-PLOT_DATA_CFG_NEXT_PLOT_FIELD.label = 2
-PLOT_DATA_CFG_NEXT_PLOT_FIELD.has_default_value = false
-PLOT_DATA_CFG_NEXT_PLOT_FIELD.default_value = 0
-PLOT_DATA_CFG_NEXT_PLOT_FIELD.type = 5
-PLOT_DATA_CFG_NEXT_PLOT_FIELD.cpp_type = 1
-
-PLOT_DATA_CFG_CONTENT_ID_FIELD.name = "content_id"
-PLOT_DATA_CFG_CONTENT_ID_FIELD.full_name = ".ftcfg.plot_data_cfg.content_id"
-PLOT_DATA_CFG_CONTENT_ID_FIELD.number = 4
-PLOT_DATA_CFG_CONTENT_ID_FIELD.index = 3
-PLOT_DATA_CFG_CONTENT_ID_FIELD.label = 2
-PLOT_DATA_CFG_CONTENT_ID_FIELD.has_default_value = false
-PLOT_DATA_CFG_CONTENT_ID_FIELD.default_value = 0
-PLOT_DATA_CFG_CONTENT_ID_FIELD.type = 5
-PLOT_DATA_CFG_CONTENT_ID_FIELD.cpp_type = 1
-
-PLOT_DATA_CFG_CAN_SKIP_FIELD.name = "can_skip"
-PLOT_DATA_CFG_CAN_SKIP_FIELD.full_name = ".ftcfg.plot_data_cfg.can_skip"
-PLOT_DATA_CFG_CAN_SKIP_FIELD.number = 5
-PLOT_DATA_CFG_CAN_SKIP_FIELD.index = 4
-PLOT_DATA_CFG_CAN_SKIP_FIELD.label = 2
-PLOT_DATA_CFG_CAN_SKIP_FIELD.has_default_value = false
-PLOT_DATA_CFG_CAN_SKIP_FIELD.default_value = false
-PLOT_DATA_CFG_CAN_SKIP_FIELD.type = 8
-PLOT_DATA_CFG_CAN_SKIP_FIELD.cpp_type = 7
-
-PLOT_DATA_CFG_SHOW_ID_FIELD.name = "show_id"
-PLOT_DATA_CFG_SHOW_ID_FIELD.full_name = ".ftcfg.plot_data_cfg.show_id"
-PLOT_DATA_CFG_SHOW_ID_FIELD.number = 6
-PLOT_DATA_CFG_SHOW_ID_FIELD.index = 5
-PLOT_DATA_CFG_SHOW_ID_FIELD.label = 2
-PLOT_DATA_CFG_SHOW_ID_FIELD.has_default_value = false
-PLOT_DATA_CFG_SHOW_ID_FIELD.default_value = 0
-PLOT_DATA_CFG_SHOW_ID_FIELD.type = 5
-PLOT_DATA_CFG_SHOW_ID_FIELD.cpp_type = 1
-
-PLOT_DATA_CFG_IMAGE_ID_FIELD.name = "image_id"
-PLOT_DATA_CFG_IMAGE_ID_FIELD.full_name = ".ftcfg.plot_data_cfg.image_id"
-PLOT_DATA_CFG_IMAGE_ID_FIELD.number = 7
-PLOT_DATA_CFG_IMAGE_ID_FIELD.index = 6
-PLOT_DATA_CFG_IMAGE_ID_FIELD.label = 2
-PLOT_DATA_CFG_IMAGE_ID_FIELD.has_default_value = false
-PLOT_DATA_CFG_IMAGE_ID_FIELD.default_value = 0
-PLOT_DATA_CFG_IMAGE_ID_FIELD.type = 5
-PLOT_DATA_CFG_IMAGE_ID_FIELD.cpp_type = 1
-
-PLOT_DATA_CFG_STAY_TIME_FIELD.name = "stay_time"
-PLOT_DATA_CFG_STAY_TIME_FIELD.full_name = ".ftcfg.plot_data_cfg.stay_time"
-PLOT_DATA_CFG_STAY_TIME_FIELD.number = 8
-PLOT_DATA_CFG_STAY_TIME_FIELD.index = 7
-PLOT_DATA_CFG_STAY_TIME_FIELD.label = 2
-PLOT_DATA_CFG_STAY_TIME_FIELD.has_default_value = false
-PLOT_DATA_CFG_STAY_TIME_FIELD.default_value = 0.0
-PLOT_DATA_CFG_STAY_TIME_FIELD.type = 2
-PLOT_DATA_CFG_STAY_TIME_FIELD.cpp_type = 6
-
-PLOT_DATA_CFG_AUDIORES_ID_FIELD.name = "audiores_id"
-PLOT_DATA_CFG_AUDIORES_ID_FIELD.full_name = ".ftcfg.plot_data_cfg.audiores_id"
-PLOT_DATA_CFG_AUDIORES_ID_FIELD.number = 9
-PLOT_DATA_CFG_AUDIORES_ID_FIELD.index = 8
-PLOT_DATA_CFG_AUDIORES_ID_FIELD.label = 2
-PLOT_DATA_CFG_AUDIORES_ID_FIELD.has_default_value = false
-PLOT_DATA_CFG_AUDIORES_ID_FIELD.default_value = 0
-PLOT_DATA_CFG_AUDIORES_ID_FIELD.type = 5
-PLOT_DATA_CFG_AUDIORES_ID_FIELD.cpp_type = 1
-
-PLOT_DATA_CFG_SHOW_POS_FIELD.name = "show_pos"
-PLOT_DATA_CFG_SHOW_POS_FIELD.full_name = ".ftcfg.plot_data_cfg.show_pos"
-PLOT_DATA_CFG_SHOW_POS_FIELD.number = 10
-PLOT_DATA_CFG_SHOW_POS_FIELD.index = 9
-PLOT_DATA_CFG_SHOW_POS_FIELD.label = 2
-PLOT_DATA_CFG_SHOW_POS_FIELD.has_default_value = false
-PLOT_DATA_CFG_SHOW_POS_FIELD.default_value = 0.0
-PLOT_DATA_CFG_SHOW_POS_FIELD.type = 2
-PLOT_DATA_CFG_SHOW_POS_FIELD.cpp_type = 6
-
-PLOT_DATA_CFG_SHOW_SCALE_FIELD.name = "show_scale"
-PLOT_DATA_CFG_SHOW_SCALE_FIELD.full_name = ".ftcfg.plot_data_cfg.show_scale"
-PLOT_DATA_CFG_SHOW_SCALE_FIELD.number = 11
-PLOT_DATA_CFG_SHOW_SCALE_FIELD.index = 10
-PLOT_DATA_CFG_SHOW_SCALE_FIELD.label = 2
-PLOT_DATA_CFG_SHOW_SCALE_FIELD.has_default_value = false
-PLOT_DATA_CFG_SHOW_SCALE_FIELD.default_value = 0.0
-PLOT_DATA_CFG_SHOW_SCALE_FIELD.type = 2
-PLOT_DATA_CFG_SHOW_SCALE_FIELD.cpp_type = 6
-
-PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.name = "show_img_left"
-PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.full_name = ".ftcfg.plot_data_cfg.show_img_left"
-PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.number = 12
-PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.index = 11
-PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.label = 2
-PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.has_default_value = false
-PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.default_value = 0
-PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.type = 5
-PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD.cpp_type = 1
-
-PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.name = "show_name_left"
-PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.full_name = ".ftcfg.plot_data_cfg.show_name_left"
-PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.number = 13
-PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.index = 12
-PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.label = 2
-PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.has_default_value = false
-PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.default_value = 0
-PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.type = 5
-PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD.cpp_type = 1
-
-PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.name = "show_dark_left"
-PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.full_name = ".ftcfg.plot_data_cfg.show_dark_left"
-PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.number = 14
-PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.index = 13
-PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.label = 2
-PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.has_default_value = false
-PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.default_value = 0
-PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.type = 5
-PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD.cpp_type = 1
-
-PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.name = "show_zoom_left"
-PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.full_name = ".ftcfg.plot_data_cfg.show_zoom_left"
-PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.number = 15
-PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.index = 14
-PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.label = 2
-PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.has_default_value = false
-PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.default_value = 0.0
-PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.type = 2
-PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD.cpp_type = 6
-
-PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.name = "show_img_right"
-PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.full_name = ".ftcfg.plot_data_cfg.show_img_right"
-PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.number = 16
-PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.index = 15
-PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.label = 2
-PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.has_default_value = false
-PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.default_value = 0
-PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.type = 5
-PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD.cpp_type = 1
-
-PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.name = "show_name_right"
-PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.full_name = ".ftcfg.plot_data_cfg.show_name_right"
-PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.number = 17
-PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.index = 16
-PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.label = 2
-PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.has_default_value = false
-PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.default_value = 0
-PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.type = 5
-PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD.cpp_type = 1
-
-PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.name = "show_dark_right"
-PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.full_name = ".ftcfg.plot_data_cfg.show_dark_right"
-PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.number = 18
-PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.index = 17
-PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.label = 2
-PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.has_default_value = false
-PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.default_value = 0
-PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.type = 5
-PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD.cpp_type = 1
-
-PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.name = "show_zoom_right"
-PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.full_name = ".ftcfg.plot_data_cfg.show_zoom_right"
-PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.number = 19
-PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.index = 18
-PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.label = 2
-PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.has_default_value = false
-PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.default_value = 0.0
-PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.type = 2
-PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD.cpp_type = 6
-
-PLOT_DATA_CFG_SHOW_BG_ID_FIELD.name = "show_bg_id"
-PLOT_DATA_CFG_SHOW_BG_ID_FIELD.full_name = ".ftcfg.plot_data_cfg.show_bg_id"
-PLOT_DATA_CFG_SHOW_BG_ID_FIELD.number = 20
-PLOT_DATA_CFG_SHOW_BG_ID_FIELD.index = 19
-PLOT_DATA_CFG_SHOW_BG_ID_FIELD.label = 2
-PLOT_DATA_CFG_SHOW_BG_ID_FIELD.has_default_value = false
-PLOT_DATA_CFG_SHOW_BG_ID_FIELD.default_value = 0
-PLOT_DATA_CFG_SHOW_BG_ID_FIELD.type = 5
-PLOT_DATA_CFG_SHOW_BG_ID_FIELD.cpp_type = 1
-
-PLOT_DATA_CFG_INSERT_NAME_FIELD.name = "insert_name"
-PLOT_DATA_CFG_INSERT_NAME_FIELD.full_name = ".ftcfg.plot_data_cfg.insert_name"
-PLOT_DATA_CFG_INSERT_NAME_FIELD.number = 21
-PLOT_DATA_CFG_INSERT_NAME_FIELD.index = 20
-PLOT_DATA_CFG_INSERT_NAME_FIELD.label = 2
-PLOT_DATA_CFG_INSERT_NAME_FIELD.has_default_value = false
-PLOT_DATA_CFG_INSERT_NAME_FIELD.default_value = false
-PLOT_DATA_CFG_INSERT_NAME_FIELD.type = 8
-PLOT_DATA_CFG_INSERT_NAME_FIELD.cpp_type = 7
-
-PLOT_DATA_CFG.name = "plot_data_cfg"
-PLOT_DATA_CFG.full_name = ".ftcfg.plot_data_cfg"
-PLOT_DATA_CFG.nested_types = {}
-PLOT_DATA_CFG.enum_types = {}
-PLOT_DATA_CFG.fields = {PLOT_DATA_CFG_ID_FIELD, PLOT_DATA_CFG_TYPE_FIELD, PLOT_DATA_CFG_NEXT_PLOT_FIELD, PLOT_DATA_CFG_CONTENT_ID_FIELD, PLOT_DATA_CFG_CAN_SKIP_FIELD, PLOT_DATA_CFG_SHOW_ID_FIELD, PLOT_DATA_CFG_IMAGE_ID_FIELD, PLOT_DATA_CFG_STAY_TIME_FIELD, PLOT_DATA_CFG_AUDIORES_ID_FIELD, PLOT_DATA_CFG_SHOW_POS_FIELD, PLOT_DATA_CFG_SHOW_SCALE_FIELD, PLOT_DATA_CFG_SHOW_IMG_LEFT_FIELD, PLOT_DATA_CFG_SHOW_NAME_LEFT_FIELD, PLOT_DATA_CFG_SHOW_DARK_LEFT_FIELD, PLOT_DATA_CFG_SHOW_ZOOM_LEFT_FIELD, PLOT_DATA_CFG_SHOW_IMG_RIGHT_FIELD, PLOT_DATA_CFG_SHOW_NAME_RIGHT_FIELD, PLOT_DATA_CFG_SHOW_DARK_RIGHT_FIELD, PLOT_DATA_CFG_SHOW_ZOOM_RIGHT_FIELD, PLOT_DATA_CFG_SHOW_BG_ID_FIELD, PLOT_DATA_CFG_INSERT_NAME_FIELD}
-PLOT_DATA_CFG.is_extendable = false
-PLOT_DATA_CFG.extensions = {}
-PLOT_DATA_CFGS_ITEMS_FIELD.name = "items"
-PLOT_DATA_CFGS_ITEMS_FIELD.full_name = ".ftcfg.plot_data_cfgs.items"
-PLOT_DATA_CFGS_ITEMS_FIELD.number = 1
-PLOT_DATA_CFGS_ITEMS_FIELD.index = 0
-PLOT_DATA_CFGS_ITEMS_FIELD.label = 3
-PLOT_DATA_CFGS_ITEMS_FIELD.has_default_value = false
-PLOT_DATA_CFGS_ITEMS_FIELD.default_value = {}
-PLOT_DATA_CFGS_ITEMS_FIELD.message_type = PLOT_DATA_CFG
-PLOT_DATA_CFGS_ITEMS_FIELD.type = 11
-PLOT_DATA_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PLOT_DATA_CFGS.name = "plot_data_cfgs"
-PLOT_DATA_CFGS.full_name = ".ftcfg.plot_data_cfgs"
-PLOT_DATA_CFGS.nested_types = {}
-PLOT_DATA_CFGS.enum_types = {}
-PLOT_DATA_CFGS.fields = {PLOT_DATA_CFGS_ITEMS_FIELD}
-PLOT_DATA_CFGS.is_extendable = false
-PLOT_DATA_CFGS.extensions = {}
-GLOBAL_PARAM_CFG_ID_FIELD.name = "id"
-GLOBAL_PARAM_CFG_ID_FIELD.full_name = ".ftcfg.global_param_cfg.id"
-GLOBAL_PARAM_CFG_ID_FIELD.number = 1
-GLOBAL_PARAM_CFG_ID_FIELD.index = 0
-GLOBAL_PARAM_CFG_ID_FIELD.label = 2
-GLOBAL_PARAM_CFG_ID_FIELD.has_default_value = false
-GLOBAL_PARAM_CFG_ID_FIELD.default_value = 0
-GLOBAL_PARAM_CFG_ID_FIELD.type = 5
-GLOBAL_PARAM_CFG_ID_FIELD.cpp_type = 1
-
-GLOBAL_PARAM_CFG_DESC_FIELD.name = "desc"
-GLOBAL_PARAM_CFG_DESC_FIELD.full_name = ".ftcfg.global_param_cfg.desc"
-GLOBAL_PARAM_CFG_DESC_FIELD.number = 2
-GLOBAL_PARAM_CFG_DESC_FIELD.index = 1
-GLOBAL_PARAM_CFG_DESC_FIELD.label = 2
-GLOBAL_PARAM_CFG_DESC_FIELD.has_default_value = false
-GLOBAL_PARAM_CFG_DESC_FIELD.default_value = ""
-GLOBAL_PARAM_CFG_DESC_FIELD.type = 9
-GLOBAL_PARAM_CFG_DESC_FIELD.cpp_type = 9
-
-GLOBAL_PARAM_CFG_VALUE_FIELD.name = "value"
-GLOBAL_PARAM_CFG_VALUE_FIELD.full_name = ".ftcfg.global_param_cfg.value"
-GLOBAL_PARAM_CFG_VALUE_FIELD.number = 3
-GLOBAL_PARAM_CFG_VALUE_FIELD.index = 2
-GLOBAL_PARAM_CFG_VALUE_FIELD.label = 2
-GLOBAL_PARAM_CFG_VALUE_FIELD.has_default_value = false
-GLOBAL_PARAM_CFG_VALUE_FIELD.default_value = 0.0
-GLOBAL_PARAM_CFG_VALUE_FIELD.type = 1
-GLOBAL_PARAM_CFG_VALUE_FIELD.cpp_type = 5
-
-GLOBAL_PARAM_CFG.name = "global_param_cfg"
-GLOBAL_PARAM_CFG.full_name = ".ftcfg.global_param_cfg"
-GLOBAL_PARAM_CFG.nested_types = {}
-GLOBAL_PARAM_CFG.enum_types = {}
-GLOBAL_PARAM_CFG.fields = {GLOBAL_PARAM_CFG_ID_FIELD, GLOBAL_PARAM_CFG_DESC_FIELD, GLOBAL_PARAM_CFG_VALUE_FIELD}
-GLOBAL_PARAM_CFG.is_extendable = false
-GLOBAL_PARAM_CFG.extensions = {}
-GLOBAL_PARAM_CFGS_ITEMS_FIELD.name = "items"
-GLOBAL_PARAM_CFGS_ITEMS_FIELD.full_name = ".ftcfg.global_param_cfgs.items"
-GLOBAL_PARAM_CFGS_ITEMS_FIELD.number = 1
-GLOBAL_PARAM_CFGS_ITEMS_FIELD.index = 0
-GLOBAL_PARAM_CFGS_ITEMS_FIELD.label = 3
-GLOBAL_PARAM_CFGS_ITEMS_FIELD.has_default_value = false
-GLOBAL_PARAM_CFGS_ITEMS_FIELD.default_value = {}
-GLOBAL_PARAM_CFGS_ITEMS_FIELD.message_type = GLOBAL_PARAM_CFG
-GLOBAL_PARAM_CFGS_ITEMS_FIELD.type = 11
-GLOBAL_PARAM_CFGS_ITEMS_FIELD.cpp_type = 10
-
-GLOBAL_PARAM_CFGS.name = "global_param_cfgs"
-GLOBAL_PARAM_CFGS.full_name = ".ftcfg.global_param_cfgs"
-GLOBAL_PARAM_CFGS.nested_types = {}
-GLOBAL_PARAM_CFGS.enum_types = {}
-GLOBAL_PARAM_CFGS.fields = {GLOBAL_PARAM_CFGS_ITEMS_FIELD}
-GLOBAL_PARAM_CFGS.is_extendable = false
-GLOBAL_PARAM_CFGS.extensions = {}
-PROP_TYPE_CFG_ID_FIELD.name = "id"
-PROP_TYPE_CFG_ID_FIELD.full_name = ".ftcfg.prop_type_cfg.id"
-PROP_TYPE_CFG_ID_FIELD.number = 1
-PROP_TYPE_CFG_ID_FIELD.index = 0
-PROP_TYPE_CFG_ID_FIELD.label = 2
-PROP_TYPE_CFG_ID_FIELD.has_default_value = false
-PROP_TYPE_CFG_ID_FIELD.default_value = 0
-PROP_TYPE_CFG_ID_FIELD.type = 5
-PROP_TYPE_CFG_ID_FIELD.cpp_type = 1
-
-PROP_TYPE_CFG_IS_RATE_FIELD.name = "is_rate"
-PROP_TYPE_CFG_IS_RATE_FIELD.full_name = ".ftcfg.prop_type_cfg.is_rate"
-PROP_TYPE_CFG_IS_RATE_FIELD.number = 2
-PROP_TYPE_CFG_IS_RATE_FIELD.index = 1
-PROP_TYPE_CFG_IS_RATE_FIELD.label = 2
-PROP_TYPE_CFG_IS_RATE_FIELD.has_default_value = false
-PROP_TYPE_CFG_IS_RATE_FIELD.default_value = false
-PROP_TYPE_CFG_IS_RATE_FIELD.type = 8
-PROP_TYPE_CFG_IS_RATE_FIELD.cpp_type = 7
-
-PROP_TYPE_CFG_ATTRIBUTE_FIELD.name = "attribute"
-PROP_TYPE_CFG_ATTRIBUTE_FIELD.full_name = ".ftcfg.prop_type_cfg.attribute"
-PROP_TYPE_CFG_ATTRIBUTE_FIELD.number = 3
-PROP_TYPE_CFG_ATTRIBUTE_FIELD.index = 2
-PROP_TYPE_CFG_ATTRIBUTE_FIELD.label = 3
-PROP_TYPE_CFG_ATTRIBUTE_FIELD.has_default_value = false
-PROP_TYPE_CFG_ATTRIBUTE_FIELD.default_value = {}
-PROP_TYPE_CFG_ATTRIBUTE_FIELD.enum_type = config_predefine_pb.EPROPATTRIBUTETYPE
-PROP_TYPE_CFG_ATTRIBUTE_FIELD.type = 14
-PROP_TYPE_CFG_ATTRIBUTE_FIELD.cpp_type = 8
-
-PROP_TYPE_CFG.name = "prop_type_cfg"
-PROP_TYPE_CFG.full_name = ".ftcfg.prop_type_cfg"
-PROP_TYPE_CFG.nested_types = {}
-PROP_TYPE_CFG.enum_types = {}
-PROP_TYPE_CFG.fields = {PROP_TYPE_CFG_ID_FIELD, PROP_TYPE_CFG_IS_RATE_FIELD, PROP_TYPE_CFG_ATTRIBUTE_FIELD}
-PROP_TYPE_CFG.is_extendable = false
-PROP_TYPE_CFG.extensions = {}
-PROP_TYPE_CFGS_ITEMS_FIELD.name = "items"
-PROP_TYPE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.prop_type_cfgs.items"
-PROP_TYPE_CFGS_ITEMS_FIELD.number = 1
-PROP_TYPE_CFGS_ITEMS_FIELD.index = 0
-PROP_TYPE_CFGS_ITEMS_FIELD.label = 3
-PROP_TYPE_CFGS_ITEMS_FIELD.has_default_value = false
-PROP_TYPE_CFGS_ITEMS_FIELD.default_value = {}
-PROP_TYPE_CFGS_ITEMS_FIELD.message_type = PROP_TYPE_CFG
-PROP_TYPE_CFGS_ITEMS_FIELD.type = 11
-PROP_TYPE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PROP_TYPE_CFGS.name = "prop_type_cfgs"
-PROP_TYPE_CFGS.full_name = ".ftcfg.prop_type_cfgs"
-PROP_TYPE_CFGS.nested_types = {}
-PROP_TYPE_CFGS.enum_types = {}
-PROP_TYPE_CFGS.fields = {PROP_TYPE_CFGS_ITEMS_FIELD}
-PROP_TYPE_CFGS.is_extendable = false
-PROP_TYPE_CFGS.extensions = {}
-ATTRIBUTE_SHOW_CFG_ID_FIELD.name = "id"
-ATTRIBUTE_SHOW_CFG_ID_FIELD.full_name = ".ftcfg.attribute_show_cfg.id"
-ATTRIBUTE_SHOW_CFG_ID_FIELD.number = 1
-ATTRIBUTE_SHOW_CFG_ID_FIELD.index = 0
-ATTRIBUTE_SHOW_CFG_ID_FIELD.label = 2
-ATTRIBUTE_SHOW_CFG_ID_FIELD.has_default_value = false
-ATTRIBUTE_SHOW_CFG_ID_FIELD.default_value = 0
-ATTRIBUTE_SHOW_CFG_ID_FIELD.type = 5
-ATTRIBUTE_SHOW_CFG_ID_FIELD.cpp_type = 1
-
-ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.name = "item_id"
-ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.attribute_show_cfg.item_id"
-ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.number = 2
-ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.index = 1
-ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.label = 2
-ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.has_default_value = false
-ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.default_value = 0
-ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.type = 5
-ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD.cpp_type = 1
-
-ATTRIBUTE_SHOW_CFG.name = "attribute_show_cfg"
-ATTRIBUTE_SHOW_CFG.full_name = ".ftcfg.attribute_show_cfg"
-ATTRIBUTE_SHOW_CFG.nested_types = {}
-ATTRIBUTE_SHOW_CFG.enum_types = {}
-ATTRIBUTE_SHOW_CFG.fields = {ATTRIBUTE_SHOW_CFG_ID_FIELD, ATTRIBUTE_SHOW_CFG_ITEM_ID_FIELD}
-ATTRIBUTE_SHOW_CFG.is_extendable = false
-ATTRIBUTE_SHOW_CFG.extensions = {}
-ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.name = "items"
-ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.full_name = ".ftcfg.attribute_show_cfgs.items"
-ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.number = 1
-ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.index = 0
-ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.label = 3
-ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.has_default_value = false
-ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.default_value = {}
-ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.message_type = ATTRIBUTE_SHOW_CFG
-ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.type = 11
-ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ATTRIBUTE_SHOW_CFGS.name = "attribute_show_cfgs"
-ATTRIBUTE_SHOW_CFGS.full_name = ".ftcfg.attribute_show_cfgs"
-ATTRIBUTE_SHOW_CFGS.nested_types = {}
-ATTRIBUTE_SHOW_CFGS.enum_types = {}
-ATTRIBUTE_SHOW_CFGS.fields = {ATTRIBUTE_SHOW_CFGS_ITEMS_FIELD}
-ATTRIBUTE_SHOW_CFGS.is_extendable = false
-ATTRIBUTE_SHOW_CFGS.extensions = {}
-RES_PATH_CFG_ID_FIELD.name = "id"
-RES_PATH_CFG_ID_FIELD.full_name = ".ftcfg.res_path_cfg.id"
-RES_PATH_CFG_ID_FIELD.number = 1
-RES_PATH_CFG_ID_FIELD.index = 0
-RES_PATH_CFG_ID_FIELD.label = 2
-RES_PATH_CFG_ID_FIELD.has_default_value = false
-RES_PATH_CFG_ID_FIELD.default_value = 0
-RES_PATH_CFG_ID_FIELD.type = 5
-RES_PATH_CFG_ID_FIELD.cpp_type = 1
-
-RES_PATH_CFG_RES_PATH_FIELD.name = "res_path"
-RES_PATH_CFG_RES_PATH_FIELD.full_name = ".ftcfg.res_path_cfg.res_path"
-RES_PATH_CFG_RES_PATH_FIELD.number = 2
-RES_PATH_CFG_RES_PATH_FIELD.index = 1
-RES_PATH_CFG_RES_PATH_FIELD.label = 2
-RES_PATH_CFG_RES_PATH_FIELD.has_default_value = false
-RES_PATH_CFG_RES_PATH_FIELD.default_value = ""
-RES_PATH_CFG_RES_PATH_FIELD.type = 9
-RES_PATH_CFG_RES_PATH_FIELD.cpp_type = 9
-
-RES_PATH_CFG_ONE_BUNDLE_FIELD.name = "one_bundle"
-RES_PATH_CFG_ONE_BUNDLE_FIELD.full_name = ".ftcfg.res_path_cfg.one_bundle"
-RES_PATH_CFG_ONE_BUNDLE_FIELD.number = 3
-RES_PATH_CFG_ONE_BUNDLE_FIELD.index = 2
-RES_PATH_CFG_ONE_BUNDLE_FIELD.label = 2
-RES_PATH_CFG_ONE_BUNDLE_FIELD.has_default_value = false
-RES_PATH_CFG_ONE_BUNDLE_FIELD.default_value = 0
-RES_PATH_CFG_ONE_BUNDLE_FIELD.type = 5
-RES_PATH_CFG_ONE_BUNDLE_FIELD.cpp_type = 1
-
-RES_PATH_CFG.name = "res_path_cfg"
-RES_PATH_CFG.full_name = ".ftcfg.res_path_cfg"
-RES_PATH_CFG.nested_types = {}
-RES_PATH_CFG.enum_types = {}
-RES_PATH_CFG.fields = {RES_PATH_CFG_ID_FIELD, RES_PATH_CFG_RES_PATH_FIELD, RES_PATH_CFG_ONE_BUNDLE_FIELD}
-RES_PATH_CFG.is_extendable = false
-RES_PATH_CFG.extensions = {}
-RES_PATH_CFGS_ITEMS_FIELD.name = "items"
-RES_PATH_CFGS_ITEMS_FIELD.full_name = ".ftcfg.res_path_cfgs.items"
-RES_PATH_CFGS_ITEMS_FIELD.number = 1
-RES_PATH_CFGS_ITEMS_FIELD.index = 0
-RES_PATH_CFGS_ITEMS_FIELD.label = 3
-RES_PATH_CFGS_ITEMS_FIELD.has_default_value = false
-RES_PATH_CFGS_ITEMS_FIELD.default_value = {}
-RES_PATH_CFGS_ITEMS_FIELD.message_type = RES_PATH_CFG
-RES_PATH_CFGS_ITEMS_FIELD.type = 11
-RES_PATH_CFGS_ITEMS_FIELD.cpp_type = 10
-
-RES_PATH_CFGS.name = "res_path_cfgs"
-RES_PATH_CFGS.full_name = ".ftcfg.res_path_cfgs"
-RES_PATH_CFGS.nested_types = {}
-RES_PATH_CFGS.enum_types = {}
-RES_PATH_CFGS.fields = {RES_PATH_CFGS_ITEMS_FIELD}
-RES_PATH_CFGS.is_extendable = false
-RES_PATH_CFGS.extensions = {}
-SCENE_CFG_ID_FIELD.name = "id"
-SCENE_CFG_ID_FIELD.full_name = ".ftcfg.scene_cfg.id"
-SCENE_CFG_ID_FIELD.number = 1
-SCENE_CFG_ID_FIELD.index = 0
-SCENE_CFG_ID_FIELD.label = 2
-SCENE_CFG_ID_FIELD.has_default_value = false
-SCENE_CFG_ID_FIELD.default_value = 0
-SCENE_CFG_ID_FIELD.type = 5
-SCENE_CFG_ID_FIELD.cpp_type = 1
-
-SCENE_CFG_NAME_FIELD.name = "name"
-SCENE_CFG_NAME_FIELD.full_name = ".ftcfg.scene_cfg.name"
-SCENE_CFG_NAME_FIELD.number = 2
-SCENE_CFG_NAME_FIELD.index = 1
-SCENE_CFG_NAME_FIELD.label = 2
-SCENE_CFG_NAME_FIELD.has_default_value = false
-SCENE_CFG_NAME_FIELD.default_value = 0
-SCENE_CFG_NAME_FIELD.type = 5
-SCENE_CFG_NAME_FIELD.cpp_type = 1
-
-SCENE_CFG_MAPID_FIELD.name = "mapid"
-SCENE_CFG_MAPID_FIELD.full_name = ".ftcfg.scene_cfg.mapid"
-SCENE_CFG_MAPID_FIELD.number = 3
-SCENE_CFG_MAPID_FIELD.index = 2
-SCENE_CFG_MAPID_FIELD.label = 2
-SCENE_CFG_MAPID_FIELD.has_default_value = false
-SCENE_CFG_MAPID_FIELD.default_value = 0
-SCENE_CFG_MAPID_FIELD.type = 5
-SCENE_CFG_MAPID_FIELD.cpp_type = 1
-
-SCENE_CFG_TYPE_FIELD.name = "type"
-SCENE_CFG_TYPE_FIELD.full_name = ".ftcfg.scene_cfg.type"
-SCENE_CFG_TYPE_FIELD.number = 4
-SCENE_CFG_TYPE_FIELD.index = 3
-SCENE_CFG_TYPE_FIELD.label = 2
-SCENE_CFG_TYPE_FIELD.has_default_value = false
-SCENE_CFG_TYPE_FIELD.default_value = nil
-SCENE_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ESCENETYPE
-SCENE_CFG_TYPE_FIELD.type = 14
-SCENE_CFG_TYPE_FIELD.cpp_type = 8
-
-SCENE_CFG_IS_SAME_SCENE_FIELD.name = "is_same_scene"
-SCENE_CFG_IS_SAME_SCENE_FIELD.full_name = ".ftcfg.scene_cfg.is_same_scene"
-SCENE_CFG_IS_SAME_SCENE_FIELD.number = 5
-SCENE_CFG_IS_SAME_SCENE_FIELD.index = 4
-SCENE_CFG_IS_SAME_SCENE_FIELD.label = 2
-SCENE_CFG_IS_SAME_SCENE_FIELD.has_default_value = false
-SCENE_CFG_IS_SAME_SCENE_FIELD.default_value = 0
-SCENE_CFG_IS_SAME_SCENE_FIELD.type = 5
-SCENE_CFG_IS_SAME_SCENE_FIELD.cpp_type = 1
-
-SCENE_CFG_SCENE_ROUTE_FIELD.name = "scene_route"
-SCENE_CFG_SCENE_ROUTE_FIELD.full_name = ".ftcfg.scene_cfg.scene_route"
-SCENE_CFG_SCENE_ROUTE_FIELD.number = 6
-SCENE_CFG_SCENE_ROUTE_FIELD.index = 5
-SCENE_CFG_SCENE_ROUTE_FIELD.label = 2
-SCENE_CFG_SCENE_ROUTE_FIELD.has_default_value = false
-SCENE_CFG_SCENE_ROUTE_FIELD.default_value = ""
-SCENE_CFG_SCENE_ROUTE_FIELD.type = 9
-SCENE_CFG_SCENE_ROUTE_FIELD.cpp_type = 9
-
-SCENE_CFG_CAMERA_PATH_RES_FIELD.name = "camera_path_res"
-SCENE_CFG_CAMERA_PATH_RES_FIELD.full_name = ".ftcfg.scene_cfg.camera_path_res"
-SCENE_CFG_CAMERA_PATH_RES_FIELD.number = 7
-SCENE_CFG_CAMERA_PATH_RES_FIELD.index = 6
-SCENE_CFG_CAMERA_PATH_RES_FIELD.label = 2
-SCENE_CFG_CAMERA_PATH_RES_FIELD.has_default_value = false
-SCENE_CFG_CAMERA_PATH_RES_FIELD.default_value = 0
-SCENE_CFG_CAMERA_PATH_RES_FIELD.type = 5
-SCENE_CFG_CAMERA_PATH_RES_FIELD.cpp_type = 1
-
-SCENE_CFG_SCENE_RECAST_FIELD.name = "scene_recast"
-SCENE_CFG_SCENE_RECAST_FIELD.full_name = ".ftcfg.scene_cfg.scene_recast"
-SCENE_CFG_SCENE_RECAST_FIELD.number = 8
-SCENE_CFG_SCENE_RECAST_FIELD.index = 7
-SCENE_CFG_SCENE_RECAST_FIELD.label = 2
-SCENE_CFG_SCENE_RECAST_FIELD.has_default_value = false
-SCENE_CFG_SCENE_RECAST_FIELD.default_value = ""
-SCENE_CFG_SCENE_RECAST_FIELD.type = 9
-SCENE_CFG_SCENE_RECAST_FIELD.cpp_type = 9
-
-SCENE_CFG_SCENE_LENGTH_FIELD.name = "scene_length"
-SCENE_CFG_SCENE_LENGTH_FIELD.full_name = ".ftcfg.scene_cfg.scene_length"
-SCENE_CFG_SCENE_LENGTH_FIELD.number = 9
-SCENE_CFG_SCENE_LENGTH_FIELD.index = 8
-SCENE_CFG_SCENE_LENGTH_FIELD.label = 2
-SCENE_CFG_SCENE_LENGTH_FIELD.has_default_value = false
-SCENE_CFG_SCENE_LENGTH_FIELD.default_value = 0
-SCENE_CFG_SCENE_LENGTH_FIELD.type = 5
-SCENE_CFG_SCENE_LENGTH_FIELD.cpp_type = 1
-
-SCENE_CFG_SCENE_WIDTH_FIELD.name = "scene_width"
-SCENE_CFG_SCENE_WIDTH_FIELD.full_name = ".ftcfg.scene_cfg.scene_width"
-SCENE_CFG_SCENE_WIDTH_FIELD.number = 10
-SCENE_CFG_SCENE_WIDTH_FIELD.index = 9
-SCENE_CFG_SCENE_WIDTH_FIELD.label = 2
-SCENE_CFG_SCENE_WIDTH_FIELD.has_default_value = false
-SCENE_CFG_SCENE_WIDTH_FIELD.default_value = 0
-SCENE_CFG_SCENE_WIDTH_FIELD.type = 5
-SCENE_CFG_SCENE_WIDTH_FIELD.cpp_type = 1
-
-SCENE_CFG_REFRESH_TYPE_FIELD.name = "refresh_type"
-SCENE_CFG_REFRESH_TYPE_FIELD.full_name = ".ftcfg.scene_cfg.refresh_type"
-SCENE_CFG_REFRESH_TYPE_FIELD.number = 11
-SCENE_CFG_REFRESH_TYPE_FIELD.index = 10
-SCENE_CFG_REFRESH_TYPE_FIELD.label = 2
-SCENE_CFG_REFRESH_TYPE_FIELD.has_default_value = false
-SCENE_CFG_REFRESH_TYPE_FIELD.default_value = 0
-SCENE_CFG_REFRESH_TYPE_FIELD.type = 5
-SCENE_CFG_REFRESH_TYPE_FIELD.cpp_type = 1
-
-SCENE_CFG_REFRESH_PARAMETER_FIELD.name = "refresh_parameter"
-SCENE_CFG_REFRESH_PARAMETER_FIELD.full_name = ".ftcfg.scene_cfg.refresh_parameter"
-SCENE_CFG_REFRESH_PARAMETER_FIELD.number = 12
-SCENE_CFG_REFRESH_PARAMETER_FIELD.index = 11
-SCENE_CFG_REFRESH_PARAMETER_FIELD.label = 3
-SCENE_CFG_REFRESH_PARAMETER_FIELD.has_default_value = false
-SCENE_CFG_REFRESH_PARAMETER_FIELD.default_value = {}
-SCENE_CFG_REFRESH_PARAMETER_FIELD.type = 5
-SCENE_CFG_REFRESH_PARAMETER_FIELD.cpp_type = 1
-
-SCENE_CFG_PARTNER_CARRY_FIELD.name = "partner_carry"
-SCENE_CFG_PARTNER_CARRY_FIELD.full_name = ".ftcfg.scene_cfg.partner_carry"
-SCENE_CFG_PARTNER_CARRY_FIELD.number = 13
-SCENE_CFG_PARTNER_CARRY_FIELD.index = 12
-SCENE_CFG_PARTNER_CARRY_FIELD.label = 2
-SCENE_CFG_PARTNER_CARRY_FIELD.has_default_value = false
-SCENE_CFG_PARTNER_CARRY_FIELD.default_value = 0
-SCENE_CFG_PARTNER_CARRY_FIELD.type = 5
-SCENE_CFG_PARTNER_CARRY_FIELD.cpp_type = 1
-
-SCENE_CFG_SHOW_CG_FIELD.name = "show_cg"
-SCENE_CFG_SHOW_CG_FIELD.full_name = ".ftcfg.scene_cfg.show_cg"
-SCENE_CFG_SHOW_CG_FIELD.number = 14
-SCENE_CFG_SHOW_CG_FIELD.index = 13
-SCENE_CFG_SHOW_CG_FIELD.label = 2
-SCENE_CFG_SHOW_CG_FIELD.has_default_value = false
-SCENE_CFG_SHOW_CG_FIELD.default_value = 0
-SCENE_CFG_SHOW_CG_FIELD.type = 5
-SCENE_CFG_SHOW_CG_FIELD.cpp_type = 1
-
-SCENE_CFG_RES_PATH_FIELD.name = "res_path"
-SCENE_CFG_RES_PATH_FIELD.full_name = ".ftcfg.scene_cfg.res_path"
-SCENE_CFG_RES_PATH_FIELD.number = 15
-SCENE_CFG_RES_PATH_FIELD.index = 14
-SCENE_CFG_RES_PATH_FIELD.label = 2
-SCENE_CFG_RES_PATH_FIELD.has_default_value = false
-SCENE_CFG_RES_PATH_FIELD.default_value = 0
-SCENE_CFG_RES_PATH_FIELD.type = 5
-SCENE_CFG_RES_PATH_FIELD.cpp_type = 1
-
-SCENE_CFG_BORN_X_FIELD.name = "born_x"
-SCENE_CFG_BORN_X_FIELD.full_name = ".ftcfg.scene_cfg.born_x"
-SCENE_CFG_BORN_X_FIELD.number = 16
-SCENE_CFG_BORN_X_FIELD.index = 15
-SCENE_CFG_BORN_X_FIELD.label = 2
-SCENE_CFG_BORN_X_FIELD.has_default_value = false
-SCENE_CFG_BORN_X_FIELD.default_value = 0.0
-SCENE_CFG_BORN_X_FIELD.type = 2
-SCENE_CFG_BORN_X_FIELD.cpp_type = 6
-
-SCENE_CFG_BORN_Y_FIELD.name = "born_y"
-SCENE_CFG_BORN_Y_FIELD.full_name = ".ftcfg.scene_cfg.born_y"
-SCENE_CFG_BORN_Y_FIELD.number = 17
-SCENE_CFG_BORN_Y_FIELD.index = 16
-SCENE_CFG_BORN_Y_FIELD.label = 2
-SCENE_CFG_BORN_Y_FIELD.has_default_value = false
-SCENE_CFG_BORN_Y_FIELD.default_value = 0.0
-SCENE_CFG_BORN_Y_FIELD.type = 2
-SCENE_CFG_BORN_Y_FIELD.cpp_type = 6
-
-SCENE_CFG_BORN_Z_FIELD.name = "born_z"
-SCENE_CFG_BORN_Z_FIELD.full_name = ".ftcfg.scene_cfg.born_z"
-SCENE_CFG_BORN_Z_FIELD.number = 18
-SCENE_CFG_BORN_Z_FIELD.index = 17
-SCENE_CFG_BORN_Z_FIELD.label = 2
-SCENE_CFG_BORN_Z_FIELD.has_default_value = false
-SCENE_CFG_BORN_Z_FIELD.default_value = 0.0
-SCENE_CFG_BORN_Z_FIELD.type = 2
-SCENE_CFG_BORN_Z_FIELD.cpp_type = 6
-
-SCENE_CFG_BORN_ROTATION_FIELD.name = "born_rotation"
-SCENE_CFG_BORN_ROTATION_FIELD.full_name = ".ftcfg.scene_cfg.born_rotation"
-SCENE_CFG_BORN_ROTATION_FIELD.number = 19
-SCENE_CFG_BORN_ROTATION_FIELD.index = 18
-SCENE_CFG_BORN_ROTATION_FIELD.label = 2
-SCENE_CFG_BORN_ROTATION_FIELD.has_default_value = false
-SCENE_CFG_BORN_ROTATION_FIELD.default_value = 0.0
-SCENE_CFG_BORN_ROTATION_FIELD.type = 2
-SCENE_CFG_BORN_ROTATION_FIELD.cpp_type = 6
-
-SCENE_CFG_GOAL_X_FIELD.name = "goal_x"
-SCENE_CFG_GOAL_X_FIELD.full_name = ".ftcfg.scene_cfg.goal_x"
-SCENE_CFG_GOAL_X_FIELD.number = 20
-SCENE_CFG_GOAL_X_FIELD.index = 19
-SCENE_CFG_GOAL_X_FIELD.label = 2
-SCENE_CFG_GOAL_X_FIELD.has_default_value = false
-SCENE_CFG_GOAL_X_FIELD.default_value = 0.0
-SCENE_CFG_GOAL_X_FIELD.type = 2
-SCENE_CFG_GOAL_X_FIELD.cpp_type = 6
-
-SCENE_CFG_GOAL_Y_FIELD.name = "goal_y"
-SCENE_CFG_GOAL_Y_FIELD.full_name = ".ftcfg.scene_cfg.goal_y"
-SCENE_CFG_GOAL_Y_FIELD.number = 21
-SCENE_CFG_GOAL_Y_FIELD.index = 20
-SCENE_CFG_GOAL_Y_FIELD.label = 2
-SCENE_CFG_GOAL_Y_FIELD.has_default_value = false
-SCENE_CFG_GOAL_Y_FIELD.default_value = 0.0
-SCENE_CFG_GOAL_Y_FIELD.type = 2
-SCENE_CFG_GOAL_Y_FIELD.cpp_type = 6
-
-SCENE_CFG_GOAL_Z_FIELD.name = "goal_z"
-SCENE_CFG_GOAL_Z_FIELD.full_name = ".ftcfg.scene_cfg.goal_z"
-SCENE_CFG_GOAL_Z_FIELD.number = 22
-SCENE_CFG_GOAL_Z_FIELD.index = 21
-SCENE_CFG_GOAL_Z_FIELD.label = 2
-SCENE_CFG_GOAL_Z_FIELD.has_default_value = false
-SCENE_CFG_GOAL_Z_FIELD.default_value = 0.0
-SCENE_CFG_GOAL_Z_FIELD.type = 2
-SCENE_CFG_GOAL_Z_FIELD.cpp_type = 6
-
-SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.name = "default_attack_patterm"
-SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.full_name = ".ftcfg.scene_cfg.default_attack_patterm"
-SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.number = 23
-SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.index = 22
-SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.label = 2
-SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.has_default_value = false
-SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.default_value = 0
-SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.type = 5
-SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD.cpp_type = 1
-
-SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.name = "switch_attack_patterm"
-SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.full_name = ".ftcfg.scene_cfg.switch_attack_patterm"
-SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.number = 24
-SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.index = 23
-SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.label = 2
-SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.has_default_value = false
-SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.default_value = 0
-SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.type = 5
-SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD.cpp_type = 1
-
-SCENE_CFG_CAN_TEAM_CALL_FIELD.name = "can_team_call"
-SCENE_CFG_CAN_TEAM_CALL_FIELD.full_name = ".ftcfg.scene_cfg.can_team_call"
-SCENE_CFG_CAN_TEAM_CALL_FIELD.number = 25
-SCENE_CFG_CAN_TEAM_CALL_FIELD.index = 24
-SCENE_CFG_CAN_TEAM_CALL_FIELD.label = 2
-SCENE_CFG_CAN_TEAM_CALL_FIELD.has_default_value = false
-SCENE_CFG_CAN_TEAM_CALL_FIELD.default_value = 0
-SCENE_CFG_CAN_TEAM_CALL_FIELD.type = 5
-SCENE_CFG_CAN_TEAM_CALL_FIELD.cpp_type = 1
-
-SCENE_CFG_IS_BATTLE_FIELD_FIELD.name = "is_battle_field"
-SCENE_CFG_IS_BATTLE_FIELD_FIELD.full_name = ".ftcfg.scene_cfg.is_battle_field"
-SCENE_CFG_IS_BATTLE_FIELD_FIELD.number = 26
-SCENE_CFG_IS_BATTLE_FIELD_FIELD.index = 25
-SCENE_CFG_IS_BATTLE_FIELD_FIELD.label = 2
-SCENE_CFG_IS_BATTLE_FIELD_FIELD.has_default_value = false
-SCENE_CFG_IS_BATTLE_FIELD_FIELD.default_value = 0
-SCENE_CFG_IS_BATTLE_FIELD_FIELD.type = 5
-SCENE_CFG_IS_BATTLE_FIELD_FIELD.cpp_type = 1
-
-SCENE_CFG_CAM_OPTIONS_ID_FIELD.name = "cam_options_id"
-SCENE_CFG_CAM_OPTIONS_ID_FIELD.full_name = ".ftcfg.scene_cfg.cam_options_id"
-SCENE_CFG_CAM_OPTIONS_ID_FIELD.number = 27
-SCENE_CFG_CAM_OPTIONS_ID_FIELD.index = 26
-SCENE_CFG_CAM_OPTIONS_ID_FIELD.label = 2
-SCENE_CFG_CAM_OPTIONS_ID_FIELD.has_default_value = false
-SCENE_CFG_CAM_OPTIONS_ID_FIELD.default_value = 0
-SCENE_CFG_CAM_OPTIONS_ID_FIELD.type = 5
-SCENE_CFG_CAM_OPTIONS_ID_FIELD.cpp_type = 1
-
-SCENE_CFG_CAN_USE_WORLDMAP_FIELD.name = "can_use_worldmap"
-SCENE_CFG_CAN_USE_WORLDMAP_FIELD.full_name = ".ftcfg.scene_cfg.can_use_worldmap"
-SCENE_CFG_CAN_USE_WORLDMAP_FIELD.number = 28
-SCENE_CFG_CAN_USE_WORLDMAP_FIELD.index = 27
-SCENE_CFG_CAN_USE_WORLDMAP_FIELD.label = 2
-SCENE_CFG_CAN_USE_WORLDMAP_FIELD.has_default_value = false
-SCENE_CFG_CAN_USE_WORLDMAP_FIELD.default_value = 0
-SCENE_CFG_CAN_USE_WORLDMAP_FIELD.type = 5
-SCENE_CFG_CAN_USE_WORLDMAP_FIELD.cpp_type = 1
-
-SCENE_CFG.name = "scene_cfg"
-SCENE_CFG.full_name = ".ftcfg.scene_cfg"
-SCENE_CFG.nested_types = {}
-SCENE_CFG.enum_types = {}
-SCENE_CFG.fields = {SCENE_CFG_ID_FIELD, SCENE_CFG_NAME_FIELD, SCENE_CFG_MAPID_FIELD, SCENE_CFG_TYPE_FIELD, SCENE_CFG_IS_SAME_SCENE_FIELD, SCENE_CFG_SCENE_ROUTE_FIELD, SCENE_CFG_CAMERA_PATH_RES_FIELD, SCENE_CFG_SCENE_RECAST_FIELD, SCENE_CFG_SCENE_LENGTH_FIELD, SCENE_CFG_SCENE_WIDTH_FIELD, SCENE_CFG_REFRESH_TYPE_FIELD, SCENE_CFG_REFRESH_PARAMETER_FIELD, SCENE_CFG_PARTNER_CARRY_FIELD, SCENE_CFG_SHOW_CG_FIELD, SCENE_CFG_RES_PATH_FIELD, SCENE_CFG_BORN_X_FIELD, SCENE_CFG_BORN_Y_FIELD, SCENE_CFG_BORN_Z_FIELD, SCENE_CFG_BORN_ROTATION_FIELD, SCENE_CFG_GOAL_X_FIELD, SCENE_CFG_GOAL_Y_FIELD, SCENE_CFG_GOAL_Z_FIELD, SCENE_CFG_DEFAULT_ATTACK_PATTERM_FIELD, SCENE_CFG_SWITCH_ATTACK_PATTERM_FIELD, SCENE_CFG_CAN_TEAM_CALL_FIELD, SCENE_CFG_IS_BATTLE_FIELD_FIELD, SCENE_CFG_CAM_OPTIONS_ID_FIELD, SCENE_CFG_CAN_USE_WORLDMAP_FIELD}
-SCENE_CFG.is_extendable = false
-SCENE_CFG.extensions = {}
-SCENE_CFGS_ITEMS_FIELD.name = "items"
-SCENE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.scene_cfgs.items"
-SCENE_CFGS_ITEMS_FIELD.number = 1
-SCENE_CFGS_ITEMS_FIELD.index = 0
-SCENE_CFGS_ITEMS_FIELD.label = 3
-SCENE_CFGS_ITEMS_FIELD.has_default_value = false
-SCENE_CFGS_ITEMS_FIELD.default_value = {}
-SCENE_CFGS_ITEMS_FIELD.message_type = SCENE_CFG
-SCENE_CFGS_ITEMS_FIELD.type = 11
-SCENE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SCENE_CFGS.name = "scene_cfgs"
-SCENE_CFGS.full_name = ".ftcfg.scene_cfgs"
-SCENE_CFGS.nested_types = {}
-SCENE_CFGS.enum_types = {}
-SCENE_CFGS.fields = {SCENE_CFGS_ITEMS_FIELD}
-SCENE_CFGS.is_extendable = false
-SCENE_CFGS.extensions = {}
-SKILL_CFG_ID_FIELD.name = "id"
-SKILL_CFG_ID_FIELD.full_name = ".ftcfg.skill_cfg.id"
-SKILL_CFG_ID_FIELD.number = 1
-SKILL_CFG_ID_FIELD.index = 0
-SKILL_CFG_ID_FIELD.label = 2
-SKILL_CFG_ID_FIELD.has_default_value = false
-SKILL_CFG_ID_FIELD.default_value = 0
-SKILL_CFG_ID_FIELD.type = 5
-SKILL_CFG_ID_FIELD.cpp_type = 1
-
-SKILL_CFG_NAME_TIP_FIELD.name = "name_tip"
-SKILL_CFG_NAME_TIP_FIELD.full_name = ".ftcfg.skill_cfg.name_tip"
-SKILL_CFG_NAME_TIP_FIELD.number = 2
-SKILL_CFG_NAME_TIP_FIELD.index = 1
-SKILL_CFG_NAME_TIP_FIELD.label = 2
-SKILL_CFG_NAME_TIP_FIELD.has_default_value = false
-SKILL_CFG_NAME_TIP_FIELD.default_value = ""
-SKILL_CFG_NAME_TIP_FIELD.type = 9
-SKILL_CFG_NAME_TIP_FIELD.cpp_type = 9
-
-SKILL_CFG_NAME_FIELD.name = "name"
-SKILL_CFG_NAME_FIELD.full_name = ".ftcfg.skill_cfg.name"
-SKILL_CFG_NAME_FIELD.number = 3
-SKILL_CFG_NAME_FIELD.index = 2
-SKILL_CFG_NAME_FIELD.label = 2
-SKILL_CFG_NAME_FIELD.has_default_value = false
-SKILL_CFG_NAME_FIELD.default_value = 0
-SKILL_CFG_NAME_FIELD.type = 5
-SKILL_CFG_NAME_FIELD.cpp_type = 1
-
-SKILL_CFG_SKILL_LEVEL_FIELD.name = "skill_level"
-SKILL_CFG_SKILL_LEVEL_FIELD.full_name = ".ftcfg.skill_cfg.skill_level"
-SKILL_CFG_SKILL_LEVEL_FIELD.number = 4
-SKILL_CFG_SKILL_LEVEL_FIELD.index = 3
-SKILL_CFG_SKILL_LEVEL_FIELD.label = 2
-SKILL_CFG_SKILL_LEVEL_FIELD.has_default_value = false
-SKILL_CFG_SKILL_LEVEL_FIELD.default_value = 0
-SKILL_CFG_SKILL_LEVEL_FIELD.type = 5
-SKILL_CFG_SKILL_LEVEL_FIELD.cpp_type = 1
-
-SKILL_CFG_PLAYER_LEVEL_FIELD.name = "player_level"
-SKILL_CFG_PLAYER_LEVEL_FIELD.full_name = ".ftcfg.skill_cfg.player_level"
-SKILL_CFG_PLAYER_LEVEL_FIELD.number = 5
-SKILL_CFG_PLAYER_LEVEL_FIELD.index = 4
-SKILL_CFG_PLAYER_LEVEL_FIELD.label = 2
-SKILL_CFG_PLAYER_LEVEL_FIELD.has_default_value = false
-SKILL_CFG_PLAYER_LEVEL_FIELD.default_value = 0
-SKILL_CFG_PLAYER_LEVEL_FIELD.type = 5
-SKILL_CFG_PLAYER_LEVEL_FIELD.cpp_type = 1
-
-SKILL_CFG_LEVELUP_COST_FIELD.name = "levelup_cost"
-SKILL_CFG_LEVELUP_COST_FIELD.full_name = ".ftcfg.skill_cfg.levelup_cost"
-SKILL_CFG_LEVELUP_COST_FIELD.number = 6
-SKILL_CFG_LEVELUP_COST_FIELD.index = 5
-SKILL_CFG_LEVELUP_COST_FIELD.label = 2
-SKILL_CFG_LEVELUP_COST_FIELD.has_default_value = false
-SKILL_CFG_LEVELUP_COST_FIELD.default_value = 0
-SKILL_CFG_LEVELUP_COST_FIELD.type = 5
-SKILL_CFG_LEVELUP_COST_FIELD.cpp_type = 1
-
-SKILL_CFG_NEXT_LEVEL_ID_FIELD.name = "next_level_id"
-SKILL_CFG_NEXT_LEVEL_ID_FIELD.full_name = ".ftcfg.skill_cfg.next_level_id"
-SKILL_CFG_NEXT_LEVEL_ID_FIELD.number = 7
-SKILL_CFG_NEXT_LEVEL_ID_FIELD.index = 6
-SKILL_CFG_NEXT_LEVEL_ID_FIELD.label = 2
-SKILL_CFG_NEXT_LEVEL_ID_FIELD.has_default_value = false
-SKILL_CFG_NEXT_LEVEL_ID_FIELD.default_value = 0
-SKILL_CFG_NEXT_LEVEL_ID_FIELD.type = 5
-SKILL_CFG_NEXT_LEVEL_ID_FIELD.cpp_type = 1
-
-SKILL_CFG_SKILL_ICON_FIELD.name = "skill_icon"
-SKILL_CFG_SKILL_ICON_FIELD.full_name = ".ftcfg.skill_cfg.skill_icon"
-SKILL_CFG_SKILL_ICON_FIELD.number = 8
-SKILL_CFG_SKILL_ICON_FIELD.index = 7
-SKILL_CFG_SKILL_ICON_FIELD.label = 2
-SKILL_CFG_SKILL_ICON_FIELD.has_default_value = false
-SKILL_CFG_SKILL_ICON_FIELD.default_value = 0
-SKILL_CFG_SKILL_ICON_FIELD.type = 5
-SKILL_CFG_SKILL_ICON_FIELD.cpp_type = 1
-
-SKILL_CFG_SKILL_PROF_FIELD.name = "skill_prof"
-SKILL_CFG_SKILL_PROF_FIELD.full_name = ".ftcfg.skill_cfg.skill_prof"
-SKILL_CFG_SKILL_PROF_FIELD.number = 9
-SKILL_CFG_SKILL_PROF_FIELD.index = 8
-SKILL_CFG_SKILL_PROF_FIELD.label = 2
-SKILL_CFG_SKILL_PROF_FIELD.has_default_value = false
-SKILL_CFG_SKILL_PROF_FIELD.default_value = 0
-SKILL_CFG_SKILL_PROF_FIELD.type = 5
-SKILL_CFG_SKILL_PROF_FIELD.cpp_type = 1
-
-SKILL_CFG_TIPS2_FIELD.name = "tips2"
-SKILL_CFG_TIPS2_FIELD.full_name = ".ftcfg.skill_cfg.tips2"
-SKILL_CFG_TIPS2_FIELD.number = 10
-SKILL_CFG_TIPS2_FIELD.index = 9
-SKILL_CFG_TIPS2_FIELD.label = 2
-SKILL_CFG_TIPS2_FIELD.has_default_value = false
-SKILL_CFG_TIPS2_FIELD.default_value = 0
-SKILL_CFG_TIPS2_FIELD.type = 5
-SKILL_CFG_TIPS2_FIELD.cpp_type = 1
-
-SKILL_CFG_TIPS_FIELD.name = "tips"
-SKILL_CFG_TIPS_FIELD.full_name = ".ftcfg.skill_cfg.tips"
-SKILL_CFG_TIPS_FIELD.number = 11
-SKILL_CFG_TIPS_FIELD.index = 10
-SKILL_CFG_TIPS_FIELD.label = 2
-SKILL_CFG_TIPS_FIELD.has_default_value = false
-SKILL_CFG_TIPS_FIELD.default_value = 0
-SKILL_CFG_TIPS_FIELD.type = 5
-SKILL_CFG_TIPS_FIELD.cpp_type = 1
-
-SKILL_CFG_TIPS3_FIELD.name = "tips3"
-SKILL_CFG_TIPS3_FIELD.full_name = ".ftcfg.skill_cfg.tips3"
-SKILL_CFG_TIPS3_FIELD.number = 12
-SKILL_CFG_TIPS3_FIELD.index = 11
-SKILL_CFG_TIPS3_FIELD.label = 2
-SKILL_CFG_TIPS3_FIELD.has_default_value = false
-SKILL_CFG_TIPS3_FIELD.default_value = 0
-SKILL_CFG_TIPS3_FIELD.type = 5
-SKILL_CFG_TIPS3_FIELD.cpp_type = 1
-
-SKILL_CFG_TIPS_PARA1_FIELD.name = "tips_para1"
-SKILL_CFG_TIPS_PARA1_FIELD.full_name = ".ftcfg.skill_cfg.tips_para1"
-SKILL_CFG_TIPS_PARA1_FIELD.number = 13
-SKILL_CFG_TIPS_PARA1_FIELD.index = 12
-SKILL_CFG_TIPS_PARA1_FIELD.label = 2
-SKILL_CFG_TIPS_PARA1_FIELD.has_default_value = false
-SKILL_CFG_TIPS_PARA1_FIELD.default_value = 0.0
-SKILL_CFG_TIPS_PARA1_FIELD.type = 2
-SKILL_CFG_TIPS_PARA1_FIELD.cpp_type = 6
-
-SKILL_CFG_TIPS_PARA2_FIELD.name = "tips_para2"
-SKILL_CFG_TIPS_PARA2_FIELD.full_name = ".ftcfg.skill_cfg.tips_para2"
-SKILL_CFG_TIPS_PARA2_FIELD.number = 14
-SKILL_CFG_TIPS_PARA2_FIELD.index = 13
-SKILL_CFG_TIPS_PARA2_FIELD.label = 2
-SKILL_CFG_TIPS_PARA2_FIELD.has_default_value = false
-SKILL_CFG_TIPS_PARA2_FIELD.default_value = 0.0
-SKILL_CFG_TIPS_PARA2_FIELD.type = 2
-SKILL_CFG_TIPS_PARA2_FIELD.cpp_type = 6
-
-SKILL_CFG_TIPS_PARA3_FIELD.name = "tips_para3"
-SKILL_CFG_TIPS_PARA3_FIELD.full_name = ".ftcfg.skill_cfg.tips_para3"
-SKILL_CFG_TIPS_PARA3_FIELD.number = 15
-SKILL_CFG_TIPS_PARA3_FIELD.index = 14
-SKILL_CFG_TIPS_PARA3_FIELD.label = 2
-SKILL_CFG_TIPS_PARA3_FIELD.has_default_value = false
-SKILL_CFG_TIPS_PARA3_FIELD.default_value = 0.0
-SKILL_CFG_TIPS_PARA3_FIELD.type = 2
-SKILL_CFG_TIPS_PARA3_FIELD.cpp_type = 6
-
-SKILL_CFG_TIPS_PARA4_FIELD.name = "tips_para4"
-SKILL_CFG_TIPS_PARA4_FIELD.full_name = ".ftcfg.skill_cfg.tips_para4"
-SKILL_CFG_TIPS_PARA4_FIELD.number = 16
-SKILL_CFG_TIPS_PARA4_FIELD.index = 15
-SKILL_CFG_TIPS_PARA4_FIELD.label = 2
-SKILL_CFG_TIPS_PARA4_FIELD.has_default_value = false
-SKILL_CFG_TIPS_PARA4_FIELD.default_value = 0.0
-SKILL_CFG_TIPS_PARA4_FIELD.type = 2
-SKILL_CFG_TIPS_PARA4_FIELD.cpp_type = 6
-
-SKILL_CFG_TIPS_PARA5_FIELD.name = "tips_para5"
-SKILL_CFG_TIPS_PARA5_FIELD.full_name = ".ftcfg.skill_cfg.tips_para5"
-SKILL_CFG_TIPS_PARA5_FIELD.number = 17
-SKILL_CFG_TIPS_PARA5_FIELD.index = 16
-SKILL_CFG_TIPS_PARA5_FIELD.label = 2
-SKILL_CFG_TIPS_PARA5_FIELD.has_default_value = false
-SKILL_CFG_TIPS_PARA5_FIELD.default_value = 0.0
-SKILL_CFG_TIPS_PARA5_FIELD.type = 2
-SKILL_CFG_TIPS_PARA5_FIELD.cpp_type = 6
-
-SKILL_CFG_TIPS_PARA6_FIELD.name = "tips_para6"
-SKILL_CFG_TIPS_PARA6_FIELD.full_name = ".ftcfg.skill_cfg.tips_para6"
-SKILL_CFG_TIPS_PARA6_FIELD.number = 18
-SKILL_CFG_TIPS_PARA6_FIELD.index = 17
-SKILL_CFG_TIPS_PARA6_FIELD.label = 2
-SKILL_CFG_TIPS_PARA6_FIELD.has_default_value = false
-SKILL_CFG_TIPS_PARA6_FIELD.default_value = 0.0
-SKILL_CFG_TIPS_PARA6_FIELD.type = 2
-SKILL_CFG_TIPS_PARA6_FIELD.cpp_type = 6
-
-SKILL_CFG_NEXT_SKILL_FIELD.name = "next_skill"
-SKILL_CFG_NEXT_SKILL_FIELD.full_name = ".ftcfg.skill_cfg.next_skill"
-SKILL_CFG_NEXT_SKILL_FIELD.number = 19
-SKILL_CFG_NEXT_SKILL_FIELD.index = 18
-SKILL_CFG_NEXT_SKILL_FIELD.label = 2
-SKILL_CFG_NEXT_SKILL_FIELD.has_default_value = false
-SKILL_CFG_NEXT_SKILL_FIELD.default_value = 0
-SKILL_CFG_NEXT_SKILL_FIELD.type = 5
-SKILL_CFG_NEXT_SKILL_FIELD.cpp_type = 1
-
-SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.name = "next_change_skill"
-SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.full_name = ".ftcfg.skill_cfg.next_change_skill"
-SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.number = 20
-SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.index = 19
-SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.label = 2
-SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.has_default_value = false
-SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.default_value = 0
-SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.type = 5
-SKILL_CFG_NEXT_CHANGE_SKILL_FIELD.cpp_type = 1
-
-SKILL_CFG_AUTO_SKILL_FIELD.name = "auto_skill"
-SKILL_CFG_AUTO_SKILL_FIELD.full_name = ".ftcfg.skill_cfg.auto_skill"
-SKILL_CFG_AUTO_SKILL_FIELD.number = 21
-SKILL_CFG_AUTO_SKILL_FIELD.index = 20
-SKILL_CFG_AUTO_SKILL_FIELD.label = 2
-SKILL_CFG_AUTO_SKILL_FIELD.has_default_value = false
-SKILL_CFG_AUTO_SKILL_FIELD.default_value = false
-SKILL_CFG_AUTO_SKILL_FIELD.type = 8
-SKILL_CFG_AUTO_SKILL_FIELD.cpp_type = 7
-
-SKILL_CFG_NEXT_SKILL_TIME_FIELD.name = "next_skill_time"
-SKILL_CFG_NEXT_SKILL_TIME_FIELD.full_name = ".ftcfg.skill_cfg.next_skill_time"
-SKILL_CFG_NEXT_SKILL_TIME_FIELD.number = 22
-SKILL_CFG_NEXT_SKILL_TIME_FIELD.index = 21
-SKILL_CFG_NEXT_SKILL_TIME_FIELD.label = 2
-SKILL_CFG_NEXT_SKILL_TIME_FIELD.has_default_value = false
-SKILL_CFG_NEXT_SKILL_TIME_FIELD.default_value = 0
-SKILL_CFG_NEXT_SKILL_TIME_FIELD.type = 5
-SKILL_CFG_NEXT_SKILL_TIME_FIELD.cpp_type = 1
-
-SKILL_CFG_SKILL_TYPE_FIELD.name = "skill_type"
-SKILL_CFG_SKILL_TYPE_FIELD.full_name = ".ftcfg.skill_cfg.skill_type"
-SKILL_CFG_SKILL_TYPE_FIELD.number = 23
-SKILL_CFG_SKILL_TYPE_FIELD.index = 22
-SKILL_CFG_SKILL_TYPE_FIELD.label = 2
-SKILL_CFG_SKILL_TYPE_FIELD.has_default_value = false
-SKILL_CFG_SKILL_TYPE_FIELD.default_value = nil
-SKILL_CFG_SKILL_TYPE_FIELD.enum_type = config_predefine_pb.ESKILLTYPE
-SKILL_CFG_SKILL_TYPE_FIELD.type = 14
-SKILL_CFG_SKILL_TYPE_FIELD.cpp_type = 8
-
-SKILL_CFG_ENERGY_COST_TYPE_FIELD.name = "energy_cost_type"
-SKILL_CFG_ENERGY_COST_TYPE_FIELD.full_name = ".ftcfg.skill_cfg.energy_cost_type"
-SKILL_CFG_ENERGY_COST_TYPE_FIELD.number = 24
-SKILL_CFG_ENERGY_COST_TYPE_FIELD.index = 23
-SKILL_CFG_ENERGY_COST_TYPE_FIELD.label = 2
-SKILL_CFG_ENERGY_COST_TYPE_FIELD.has_default_value = false
-SKILL_CFG_ENERGY_COST_TYPE_FIELD.default_value = nil
-SKILL_CFG_ENERGY_COST_TYPE_FIELD.enum_type = config_predefine_pb.ESKILLCOSTTYPE
-SKILL_CFG_ENERGY_COST_TYPE_FIELD.type = 14
-SKILL_CFG_ENERGY_COST_TYPE_FIELD.cpp_type = 8
-
-SKILL_CFG_ENERGY_VALUE_FIELD.name = "energy_value"
-SKILL_CFG_ENERGY_VALUE_FIELD.full_name = ".ftcfg.skill_cfg.energy_value"
-SKILL_CFG_ENERGY_VALUE_FIELD.number = 25
-SKILL_CFG_ENERGY_VALUE_FIELD.index = 24
-SKILL_CFG_ENERGY_VALUE_FIELD.label = 2
-SKILL_CFG_ENERGY_VALUE_FIELD.has_default_value = false
-SKILL_CFG_ENERGY_VALUE_FIELD.default_value = 0
-SKILL_CFG_ENERGY_VALUE_FIELD.type = 5
-SKILL_CFG_ENERGY_VALUE_FIELD.cpp_type = 1
-
-SKILL_CFG_MAX_ENERGY_VALUE_FIELD.name = "max_energy_value"
-SKILL_CFG_MAX_ENERGY_VALUE_FIELD.full_name = ".ftcfg.skill_cfg.max_energy_value"
-SKILL_CFG_MAX_ENERGY_VALUE_FIELD.number = 26
-SKILL_CFG_MAX_ENERGY_VALUE_FIELD.index = 25
-SKILL_CFG_MAX_ENERGY_VALUE_FIELD.label = 2
-SKILL_CFG_MAX_ENERGY_VALUE_FIELD.has_default_value = false
-SKILL_CFG_MAX_ENERGY_VALUE_FIELD.default_value = 0
-SKILL_CFG_MAX_ENERGY_VALUE_FIELD.type = 5
-SKILL_CFG_MAX_ENERGY_VALUE_FIELD.cpp_type = 1
-
-SKILL_CFG_RET_ENERGY_VALUE_FIELD.name = "ret_energy_value"
-SKILL_CFG_RET_ENERGY_VALUE_FIELD.full_name = ".ftcfg.skill_cfg.ret_energy_value"
-SKILL_CFG_RET_ENERGY_VALUE_FIELD.number = 27
-SKILL_CFG_RET_ENERGY_VALUE_FIELD.index = 26
-SKILL_CFG_RET_ENERGY_VALUE_FIELD.label = 2
-SKILL_CFG_RET_ENERGY_VALUE_FIELD.has_default_value = false
-SKILL_CFG_RET_ENERGY_VALUE_FIELD.default_value = 0
-SKILL_CFG_RET_ENERGY_VALUE_FIELD.type = 5
-SKILL_CFG_RET_ENERGY_VALUE_FIELD.cpp_type = 1
-
-SKILL_CFG_RET_HP_EFFECT_FIELD.name = "ret_hp_effect"
-SKILL_CFG_RET_HP_EFFECT_FIELD.full_name = ".ftcfg.skill_cfg.ret_hp_effect"
-SKILL_CFG_RET_HP_EFFECT_FIELD.number = 28
-SKILL_CFG_RET_HP_EFFECT_FIELD.index = 27
-SKILL_CFG_RET_HP_EFFECT_FIELD.label = 2
-SKILL_CFG_RET_HP_EFFECT_FIELD.has_default_value = false
-SKILL_CFG_RET_HP_EFFECT_FIELD.default_value = 0
-SKILL_CFG_RET_HP_EFFECT_FIELD.type = 5
-SKILL_CFG_RET_HP_EFFECT_FIELD.cpp_type = 1
-
-SKILL_CFG_SHOW_PROGRESS_FIELD.name = "show_progress"
-SKILL_CFG_SHOW_PROGRESS_FIELD.full_name = ".ftcfg.skill_cfg.show_progress"
-SKILL_CFG_SHOW_PROGRESS_FIELD.number = 29
-SKILL_CFG_SHOW_PROGRESS_FIELD.index = 28
-SKILL_CFG_SHOW_PROGRESS_FIELD.label = 2
-SKILL_CFG_SHOW_PROGRESS_FIELD.has_default_value = false
-SKILL_CFG_SHOW_PROGRESS_FIELD.default_value = 0
-SKILL_CFG_SHOW_PROGRESS_FIELD.type = 5
-SKILL_CFG_SHOW_PROGRESS_FIELD.cpp_type = 1
-
-SKILL_CFG_PROGRESS_WORD_FIELD.name = "progress_word"
-SKILL_CFG_PROGRESS_WORD_FIELD.full_name = ".ftcfg.skill_cfg.progress_word"
-SKILL_CFG_PROGRESS_WORD_FIELD.number = 30
-SKILL_CFG_PROGRESS_WORD_FIELD.index = 29
-SKILL_CFG_PROGRESS_WORD_FIELD.label = 2
-SKILL_CFG_PROGRESS_WORD_FIELD.has_default_value = false
-SKILL_CFG_PROGRESS_WORD_FIELD.default_value = 0
-SKILL_CFG_PROGRESS_WORD_FIELD.type = 5
-SKILL_CFG_PROGRESS_WORD_FIELD.cpp_type = 1
-
-SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.name = "is_trigger_passive"
-SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.full_name = ".ftcfg.skill_cfg.is_trigger_passive"
-SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.number = 31
-SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.index = 30
-SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.label = 2
-SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.has_default_value = false
-SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.default_value = false
-SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.type = 8
-SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD.cpp_type = 7
-
-SKILL_CFG_IS_PASSIVE_FIELD.name = "is_passive"
-SKILL_CFG_IS_PASSIVE_FIELD.full_name = ".ftcfg.skill_cfg.is_passive"
-SKILL_CFG_IS_PASSIVE_FIELD.number = 32
-SKILL_CFG_IS_PASSIVE_FIELD.index = 31
-SKILL_CFG_IS_PASSIVE_FIELD.label = 2
-SKILL_CFG_IS_PASSIVE_FIELD.has_default_value = false
-SKILL_CFG_IS_PASSIVE_FIELD.default_value = false
-SKILL_CFG_IS_PASSIVE_FIELD.type = 8
-SKILL_CFG_IS_PASSIVE_FIELD.cpp_type = 7
-
-SKILL_CFG_TRIGGER_TYPE_FIELD.name = "trigger_type"
-SKILL_CFG_TRIGGER_TYPE_FIELD.full_name = ".ftcfg.skill_cfg.trigger_type"
-SKILL_CFG_TRIGGER_TYPE_FIELD.number = 33
-SKILL_CFG_TRIGGER_TYPE_FIELD.index = 32
-SKILL_CFG_TRIGGER_TYPE_FIELD.label = 2
-SKILL_CFG_TRIGGER_TYPE_FIELD.has_default_value = false
-SKILL_CFG_TRIGGER_TYPE_FIELD.default_value = nil
-SKILL_CFG_TRIGGER_TYPE_FIELD.enum_type = config_predefine_pb.EBATTLEEVENTTYPE
-SKILL_CFG_TRIGGER_TYPE_FIELD.type = 14
-SKILL_CFG_TRIGGER_TYPE_FIELD.cpp_type = 8
-
-SKILL_CFG_ACCELERATE_FIELD.name = "accelerate"
-SKILL_CFG_ACCELERATE_FIELD.full_name = ".ftcfg.skill_cfg.accelerate"
-SKILL_CFG_ACCELERATE_FIELD.number = 34
-SKILL_CFG_ACCELERATE_FIELD.index = 33
-SKILL_CFG_ACCELERATE_FIELD.label = 2
-SKILL_CFG_ACCELERATE_FIELD.has_default_value = false
-SKILL_CFG_ACCELERATE_FIELD.default_value = false
-SKILL_CFG_ACCELERATE_FIELD.type = 8
-SKILL_CFG_ACCELERATE_FIELD.cpp_type = 7
-
-SKILL_CFG_IS_CONCURRENCY_FIELD.name = "is_concurrency"
-SKILL_CFG_IS_CONCURRENCY_FIELD.full_name = ".ftcfg.skill_cfg.is_concurrency"
-SKILL_CFG_IS_CONCURRENCY_FIELD.number = 35
-SKILL_CFG_IS_CONCURRENCY_FIELD.index = 34
-SKILL_CFG_IS_CONCURRENCY_FIELD.label = 2
-SKILL_CFG_IS_CONCURRENCY_FIELD.has_default_value = false
-SKILL_CFG_IS_CONCURRENCY_FIELD.default_value = false
-SKILL_CFG_IS_CONCURRENCY_FIELD.type = 8
-SKILL_CFG_IS_CONCURRENCY_FIELD.cpp_type = 7
-
-SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.name = "int_channel_when_beaten"
-SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.full_name = ".ftcfg.skill_cfg.int_channel_when_beaten"
-SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.number = 36
-SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.index = 35
-SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.label = 2
-SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.has_default_value = false
-SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.default_value = false
-SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.type = 8
-SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD.cpp_type = 7
-
-SKILL_CFG_IS_CHANNEL_FIELD.name = "is_channel"
-SKILL_CFG_IS_CHANNEL_FIELD.full_name = ".ftcfg.skill_cfg.is_channel"
-SKILL_CFG_IS_CHANNEL_FIELD.number = 37
-SKILL_CFG_IS_CHANNEL_FIELD.index = 36
-SKILL_CFG_IS_CHANNEL_FIELD.label = 2
-SKILL_CFG_IS_CHANNEL_FIELD.has_default_value = false
-SKILL_CFG_IS_CHANNEL_FIELD.default_value = false
-SKILL_CFG_IS_CHANNEL_FIELD.type = 8
-SKILL_CFG_IS_CHANNEL_FIELD.cpp_type = 7
-
-SKILL_CFG_CHANNEL_TIME_FIELD.name = "channel_time"
-SKILL_CFG_CHANNEL_TIME_FIELD.full_name = ".ftcfg.skill_cfg.channel_time"
-SKILL_CFG_CHANNEL_TIME_FIELD.number = 38
-SKILL_CFG_CHANNEL_TIME_FIELD.index = 37
-SKILL_CFG_CHANNEL_TIME_FIELD.label = 2
-SKILL_CFG_CHANNEL_TIME_FIELD.has_default_value = false
-SKILL_CFG_CHANNEL_TIME_FIELD.default_value = 0
-SKILL_CFG_CHANNEL_TIME_FIELD.type = 5
-SKILL_CFG_CHANNEL_TIME_FIELD.cpp_type = 1
-
-SKILL_CFG_CAN_CANCEL_FIELD.name = "can_cancel"
-SKILL_CFG_CAN_CANCEL_FIELD.full_name = ".ftcfg.skill_cfg.can_cancel"
-SKILL_CFG_CAN_CANCEL_FIELD.number = 39
-SKILL_CFG_CAN_CANCEL_FIELD.index = 38
-SKILL_CFG_CAN_CANCEL_FIELD.label = 2
-SKILL_CFG_CAN_CANCEL_FIELD.has_default_value = false
-SKILL_CFG_CAN_CANCEL_FIELD.default_value = false
-SKILL_CFG_CAN_CANCEL_FIELD.type = 8
-SKILL_CFG_CAN_CANCEL_FIELD.cpp_type = 7
-
-SKILL_CFG_BASE_POS_FIELD.name = "base_pos"
-SKILL_CFG_BASE_POS_FIELD.full_name = ".ftcfg.skill_cfg.base_pos"
-SKILL_CFG_BASE_POS_FIELD.number = 40
-SKILL_CFG_BASE_POS_FIELD.index = 39
-SKILL_CFG_BASE_POS_FIELD.label = 2
-SKILL_CFG_BASE_POS_FIELD.has_default_value = false
-SKILL_CFG_BASE_POS_FIELD.default_value = nil
-SKILL_CFG_BASE_POS_FIELD.enum_type = config_predefine_pb.EBASEAREATYPE
-SKILL_CFG_BASE_POS_FIELD.type = 14
-SKILL_CFG_BASE_POS_FIELD.cpp_type = 8
-
-SKILL_CFG_TARGET_TYPE_FIELD.name = "target_type"
-SKILL_CFG_TARGET_TYPE_FIELD.full_name = ".ftcfg.skill_cfg.target_type"
-SKILL_CFG_TARGET_TYPE_FIELD.number = 41
-SKILL_CFG_TARGET_TYPE_FIELD.index = 40
-SKILL_CFG_TARGET_TYPE_FIELD.label = 2
-SKILL_CFG_TARGET_TYPE_FIELD.has_default_value = false
-SKILL_CFG_TARGET_TYPE_FIELD.default_value = 0
-SKILL_CFG_TARGET_TYPE_FIELD.type = 5
-SKILL_CFG_TARGET_TYPE_FIELD.cpp_type = 1
-
-SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.name = "remove_buff_when_cancel"
-SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.full_name = ".ftcfg.skill_cfg.remove_buff_when_cancel"
-SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.number = 42
-SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.index = 41
-SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.label = 2
-SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.has_default_value = false
-SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.default_value = false
-SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.type = 8
-SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD.cpp_type = 7
-
-SKILL_CFG_WORK_WHEN_FIELD.name = "work_when"
-SKILL_CFG_WORK_WHEN_FIELD.full_name = ".ftcfg.skill_cfg.work_when"
-SKILL_CFG_WORK_WHEN_FIELD.number = 43
-SKILL_CFG_WORK_WHEN_FIELD.index = 42
-SKILL_CFG_WORK_WHEN_FIELD.label = 2
-SKILL_CFG_WORK_WHEN_FIELD.has_default_value = false
-SKILL_CFG_WORK_WHEN_FIELD.default_value = 0
-SKILL_CFG_WORK_WHEN_FIELD.type = 5
-SKILL_CFG_WORK_WHEN_FIELD.cpp_type = 1
-
-SKILL_CFG_CD_GROUP_ID_FIELD.name = "cd_group_id"
-SKILL_CFG_CD_GROUP_ID_FIELD.full_name = ".ftcfg.skill_cfg.cd_group_id"
-SKILL_CFG_CD_GROUP_ID_FIELD.number = 44
-SKILL_CFG_CD_GROUP_ID_FIELD.index = 43
-SKILL_CFG_CD_GROUP_ID_FIELD.label = 2
-SKILL_CFG_CD_GROUP_ID_FIELD.has_default_value = false
-SKILL_CFG_CD_GROUP_ID_FIELD.default_value = 0
-SKILL_CFG_CD_GROUP_ID_FIELD.type = 5
-SKILL_CFG_CD_GROUP_ID_FIELD.cpp_type = 1
-
-SKILL_CFG_CD_TIME_FIELD.name = "cd_time"
-SKILL_CFG_CD_TIME_FIELD.full_name = ".ftcfg.skill_cfg.cd_time"
-SKILL_CFG_CD_TIME_FIELD.number = 45
-SKILL_CFG_CD_TIME_FIELD.index = 44
-SKILL_CFG_CD_TIME_FIELD.label = 2
-SKILL_CFG_CD_TIME_FIELD.has_default_value = false
-SKILL_CFG_CD_TIME_FIELD.default_value = 0.0
-SKILL_CFG_CD_TIME_FIELD.type = 2
-SKILL_CFG_CD_TIME_FIELD.cpp_type = 6
-
-SKILL_CFG_CD_NUM_FIELD.name = "cd_num"
-SKILL_CFG_CD_NUM_FIELD.full_name = ".ftcfg.skill_cfg.cd_num"
-SKILL_CFG_CD_NUM_FIELD.number = 46
-SKILL_CFG_CD_NUM_FIELD.index = 45
-SKILL_CFG_CD_NUM_FIELD.label = 2
-SKILL_CFG_CD_NUM_FIELD.has_default_value = false
-SKILL_CFG_CD_NUM_FIELD.default_value = 0
-SKILL_CFG_CD_NUM_FIELD.type = 5
-SKILL_CFG_CD_NUM_FIELD.cpp_type = 1
-
-SKILL_CFG_CAST_DISTANCE_FIELD.name = "cast_distance"
-SKILL_CFG_CAST_DISTANCE_FIELD.full_name = ".ftcfg.skill_cfg.cast_distance"
-SKILL_CFG_CAST_DISTANCE_FIELD.number = 47
-SKILL_CFG_CAST_DISTANCE_FIELD.index = 46
-SKILL_CFG_CAST_DISTANCE_FIELD.label = 2
-SKILL_CFG_CAST_DISTANCE_FIELD.has_default_value = false
-SKILL_CFG_CAST_DISTANCE_FIELD.default_value = 0.0
-SKILL_CFG_CAST_DISTANCE_FIELD.type = 2
-SKILL_CFG_CAST_DISTANCE_FIELD.cpp_type = 6
-
-SKILL_CFG_LOCKED_BY_SERVER_FIELD.name = "locked_by_server"
-SKILL_CFG_LOCKED_BY_SERVER_FIELD.full_name = ".ftcfg.skill_cfg.locked_by_server"
-SKILL_CFG_LOCKED_BY_SERVER_FIELD.number = 48
-SKILL_CFG_LOCKED_BY_SERVER_FIELD.index = 47
-SKILL_CFG_LOCKED_BY_SERVER_FIELD.label = 2
-SKILL_CFG_LOCKED_BY_SERVER_FIELD.has_default_value = false
-SKILL_CFG_LOCKED_BY_SERVER_FIELD.default_value = false
-SKILL_CFG_LOCKED_BY_SERVER_FIELD.type = 8
-SKILL_CFG_LOCKED_BY_SERVER_FIELD.cpp_type = 7
-
-SKILL_CFG_RANGE_TYPE_FIELD.name = "range_type"
-SKILL_CFG_RANGE_TYPE_FIELD.full_name = ".ftcfg.skill_cfg.range_type"
-SKILL_CFG_RANGE_TYPE_FIELD.number = 49
-SKILL_CFG_RANGE_TYPE_FIELD.index = 48
-SKILL_CFG_RANGE_TYPE_FIELD.label = 2
-SKILL_CFG_RANGE_TYPE_FIELD.has_default_value = false
-SKILL_CFG_RANGE_TYPE_FIELD.default_value = nil
-SKILL_CFG_RANGE_TYPE_FIELD.enum_type = config_predefine_pb.EAREATYPE
-SKILL_CFG_RANGE_TYPE_FIELD.type = 14
-SKILL_CFG_RANGE_TYPE_FIELD.cpp_type = 8
-
-SKILL_CFG_RANGE_PARA1_FIELD.name = "range_para1"
-SKILL_CFG_RANGE_PARA1_FIELD.full_name = ".ftcfg.skill_cfg.range_para1"
-SKILL_CFG_RANGE_PARA1_FIELD.number = 50
-SKILL_CFG_RANGE_PARA1_FIELD.index = 49
-SKILL_CFG_RANGE_PARA1_FIELD.label = 2
-SKILL_CFG_RANGE_PARA1_FIELD.has_default_value = false
-SKILL_CFG_RANGE_PARA1_FIELD.default_value = 0.0
-SKILL_CFG_RANGE_PARA1_FIELD.type = 2
-SKILL_CFG_RANGE_PARA1_FIELD.cpp_type = 6
-
-SKILL_CFG_RANGE_PARA2_FIELD.name = "range_para2"
-SKILL_CFG_RANGE_PARA2_FIELD.full_name = ".ftcfg.skill_cfg.range_para2"
-SKILL_CFG_RANGE_PARA2_FIELD.number = 51
-SKILL_CFG_RANGE_PARA2_FIELD.index = 50
-SKILL_CFG_RANGE_PARA2_FIELD.label = 2
-SKILL_CFG_RANGE_PARA2_FIELD.has_default_value = false
-SKILL_CFG_RANGE_PARA2_FIELD.default_value = 0.0
-SKILL_CFG_RANGE_PARA2_FIELD.type = 2
-SKILL_CFG_RANGE_PARA2_FIELD.cpp_type = 6
-
-SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.name = "lock_target_distance"
-SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.full_name = ".ftcfg.skill_cfg.lock_target_distance"
-SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.number = 52
-SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.index = 51
-SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.label = 2
-SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.has_default_value = false
-SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.default_value = 0.0
-SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.type = 2
-SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD.cpp_type = 6
-
-SKILL_CFG_LOCK_MAX_COUNT_FIELD.name = "lock_max_count"
-SKILL_CFG_LOCK_MAX_COUNT_FIELD.full_name = ".ftcfg.skill_cfg.lock_max_count"
-SKILL_CFG_LOCK_MAX_COUNT_FIELD.number = 53
-SKILL_CFG_LOCK_MAX_COUNT_FIELD.index = 52
-SKILL_CFG_LOCK_MAX_COUNT_FIELD.label = 2
-SKILL_CFG_LOCK_MAX_COUNT_FIELD.has_default_value = false
-SKILL_CFG_LOCK_MAX_COUNT_FIELD.default_value = 0
-SKILL_CFG_LOCK_MAX_COUNT_FIELD.type = 5
-SKILL_CFG_LOCK_MAX_COUNT_FIELD.cpp_type = 1
-
-SKILL_CFG_CAST_SWING_TIME_FIELD.name = "cast_swing_time"
-SKILL_CFG_CAST_SWING_TIME_FIELD.full_name = ".ftcfg.skill_cfg.cast_swing_time"
-SKILL_CFG_CAST_SWING_TIME_FIELD.number = 54
-SKILL_CFG_CAST_SWING_TIME_FIELD.index = 53
-SKILL_CFG_CAST_SWING_TIME_FIELD.label = 2
-SKILL_CFG_CAST_SWING_TIME_FIELD.has_default_value = false
-SKILL_CFG_CAST_SWING_TIME_FIELD.default_value = 0
-SKILL_CFG_CAST_SWING_TIME_FIELD.type = 5
-SKILL_CFG_CAST_SWING_TIME_FIELD.cpp_type = 1
-
-SKILL_CFG_CAST_STIFF_TIME_FIELD.name = "cast_stiff_time"
-SKILL_CFG_CAST_STIFF_TIME_FIELD.full_name = ".ftcfg.skill_cfg.cast_stiff_time"
-SKILL_CFG_CAST_STIFF_TIME_FIELD.number = 55
-SKILL_CFG_CAST_STIFF_TIME_FIELD.index = 54
-SKILL_CFG_CAST_STIFF_TIME_FIELD.label = 2
-SKILL_CFG_CAST_STIFF_TIME_FIELD.has_default_value = false
-SKILL_CFG_CAST_STIFF_TIME_FIELD.default_value = 0
-SKILL_CFG_CAST_STIFF_TIME_FIELD.type = 5
-SKILL_CFG_CAST_STIFF_TIME_FIELD.cpp_type = 1
-
-SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.name = "cast_back_swing_time"
-SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.full_name = ".ftcfg.skill_cfg.cast_back_swing_time"
-SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.number = 56
-SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.index = 55
-SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.label = 2
-SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.has_default_value = false
-SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.default_value = 0
-SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.type = 5
-SKILL_CFG_CAST_BACK_SWING_TIME_FIELD.cpp_type = 1
-
-SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.name = "magic_performance_id"
-SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.full_name = ".ftcfg.skill_cfg.magic_performance_id"
-SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.number = 57
-SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.index = 56
-SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.label = 2
-SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.has_default_value = false
-SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.default_value = ""
-SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.type = 9
-SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD.cpp_type = 9
-
-SKILL_CFG_HIT_EFFECT_FIELD.name = "hit_effect"
-SKILL_CFG_HIT_EFFECT_FIELD.full_name = ".ftcfg.skill_cfg.hit_effect"
-SKILL_CFG_HIT_EFFECT_FIELD.number = 58
-SKILL_CFG_HIT_EFFECT_FIELD.index = 57
-SKILL_CFG_HIT_EFFECT_FIELD.label = 2
-SKILL_CFG_HIT_EFFECT_FIELD.has_default_value = false
-SKILL_CFG_HIT_EFFECT_FIELD.default_value = ""
-SKILL_CFG_HIT_EFFECT_FIELD.type = 9
-SKILL_CFG_HIT_EFFECT_FIELD.cpp_type = 9
-
-SKILL_CFG_HIT_EFFECT_TIME_FIELD.name = "hit_effect_time"
-SKILL_CFG_HIT_EFFECT_TIME_FIELD.full_name = ".ftcfg.skill_cfg.hit_effect_time"
-SKILL_CFG_HIT_EFFECT_TIME_FIELD.number = 59
-SKILL_CFG_HIT_EFFECT_TIME_FIELD.index = 58
-SKILL_CFG_HIT_EFFECT_TIME_FIELD.label = 2
-SKILL_CFG_HIT_EFFECT_TIME_FIELD.has_default_value = false
-SKILL_CFG_HIT_EFFECT_TIME_FIELD.default_value = 0
-SKILL_CFG_HIT_EFFECT_TIME_FIELD.type = 5
-SKILL_CFG_HIT_EFFECT_TIME_FIELD.cpp_type = 1
-
-SKILL_CFG_MOVE_TYPE1_FIELD.name = "move_type1"
-SKILL_CFG_MOVE_TYPE1_FIELD.full_name = ".ftcfg.skill_cfg.move_type1"
-SKILL_CFG_MOVE_TYPE1_FIELD.number = 60
-SKILL_CFG_MOVE_TYPE1_FIELD.index = 59
-SKILL_CFG_MOVE_TYPE1_FIELD.label = 2
-SKILL_CFG_MOVE_TYPE1_FIELD.has_default_value = false
-SKILL_CFG_MOVE_TYPE1_FIELD.default_value = 0
-SKILL_CFG_MOVE_TYPE1_FIELD.type = 5
-SKILL_CFG_MOVE_TYPE1_FIELD.cpp_type = 1
-
-SKILL_CFG_MOVE_POINT1_FIELD.name = "move_point1"
-SKILL_CFG_MOVE_POINT1_FIELD.full_name = ".ftcfg.skill_cfg.move_point1"
-SKILL_CFG_MOVE_POINT1_FIELD.number = 61
-SKILL_CFG_MOVE_POINT1_FIELD.index = 60
-SKILL_CFG_MOVE_POINT1_FIELD.label = 2
-SKILL_CFG_MOVE_POINT1_FIELD.has_default_value = false
-SKILL_CFG_MOVE_POINT1_FIELD.default_value = 0
-SKILL_CFG_MOVE_POINT1_FIELD.type = 5
-SKILL_CFG_MOVE_POINT1_FIELD.cpp_type = 1
-
-SKILL_CFG_ADJUST_DISTANCE1_FIELD.name = "adjust_distance1"
-SKILL_CFG_ADJUST_DISTANCE1_FIELD.full_name = ".ftcfg.skill_cfg.adjust_distance1"
-SKILL_CFG_ADJUST_DISTANCE1_FIELD.number = 62
-SKILL_CFG_ADJUST_DISTANCE1_FIELD.index = 61
-SKILL_CFG_ADJUST_DISTANCE1_FIELD.label = 2
-SKILL_CFG_ADJUST_DISTANCE1_FIELD.has_default_value = false
-SKILL_CFG_ADJUST_DISTANCE1_FIELD.default_value = 0.0
-SKILL_CFG_ADJUST_DISTANCE1_FIELD.type = 2
-SKILL_CFG_ADJUST_DISTANCE1_FIELD.cpp_type = 6
-
-SKILL_CFG_MOVE_DISTANCE1_FIELD.name = "move_distance1"
-SKILL_CFG_MOVE_DISTANCE1_FIELD.full_name = ".ftcfg.skill_cfg.move_distance1"
-SKILL_CFG_MOVE_DISTANCE1_FIELD.number = 63
-SKILL_CFG_MOVE_DISTANCE1_FIELD.index = 62
-SKILL_CFG_MOVE_DISTANCE1_FIELD.label = 2
-SKILL_CFG_MOVE_DISTANCE1_FIELD.has_default_value = false
-SKILL_CFG_MOVE_DISTANCE1_FIELD.default_value = 0.0
-SKILL_CFG_MOVE_DISTANCE1_FIELD.type = 2
-SKILL_CFG_MOVE_DISTANCE1_FIELD.cpp_type = 6
-
-SKILL_CFG_MOVE_TIME1_FIELD.name = "move_time1"
-SKILL_CFG_MOVE_TIME1_FIELD.full_name = ".ftcfg.skill_cfg.move_time1"
-SKILL_CFG_MOVE_TIME1_FIELD.number = 64
-SKILL_CFG_MOVE_TIME1_FIELD.index = 63
-SKILL_CFG_MOVE_TIME1_FIELD.label = 2
-SKILL_CFG_MOVE_TIME1_FIELD.has_default_value = false
-SKILL_CFG_MOVE_TIME1_FIELD.default_value = 0
-SKILL_CFG_MOVE_TIME1_FIELD.type = 5
-SKILL_CFG_MOVE_TIME1_FIELD.cpp_type = 1
-
-SKILL_CFG_MOVE_TYPE2_FIELD.name = "move_type2"
-SKILL_CFG_MOVE_TYPE2_FIELD.full_name = ".ftcfg.skill_cfg.move_type2"
-SKILL_CFG_MOVE_TYPE2_FIELD.number = 65
-SKILL_CFG_MOVE_TYPE2_FIELD.index = 64
-SKILL_CFG_MOVE_TYPE2_FIELD.label = 2
-SKILL_CFG_MOVE_TYPE2_FIELD.has_default_value = false
-SKILL_CFG_MOVE_TYPE2_FIELD.default_value = 0
-SKILL_CFG_MOVE_TYPE2_FIELD.type = 5
-SKILL_CFG_MOVE_TYPE2_FIELD.cpp_type = 1
-
-SKILL_CFG_MOVE_POINT2_FIELD.name = "move_point2"
-SKILL_CFG_MOVE_POINT2_FIELD.full_name = ".ftcfg.skill_cfg.move_point2"
-SKILL_CFG_MOVE_POINT2_FIELD.number = 66
-SKILL_CFG_MOVE_POINT2_FIELD.index = 65
-SKILL_CFG_MOVE_POINT2_FIELD.label = 2
-SKILL_CFG_MOVE_POINT2_FIELD.has_default_value = false
-SKILL_CFG_MOVE_POINT2_FIELD.default_value = 0
-SKILL_CFG_MOVE_POINT2_FIELD.type = 5
-SKILL_CFG_MOVE_POINT2_FIELD.cpp_type = 1
-
-SKILL_CFG_ADJUST_DISTANCE2_FIELD.name = "adjust_distance2"
-SKILL_CFG_ADJUST_DISTANCE2_FIELD.full_name = ".ftcfg.skill_cfg.adjust_distance2"
-SKILL_CFG_ADJUST_DISTANCE2_FIELD.number = 67
-SKILL_CFG_ADJUST_DISTANCE2_FIELD.index = 66
-SKILL_CFG_ADJUST_DISTANCE2_FIELD.label = 2
-SKILL_CFG_ADJUST_DISTANCE2_FIELD.has_default_value = false
-SKILL_CFG_ADJUST_DISTANCE2_FIELD.default_value = 0.0
-SKILL_CFG_ADJUST_DISTANCE2_FIELD.type = 2
-SKILL_CFG_ADJUST_DISTANCE2_FIELD.cpp_type = 6
-
-SKILL_CFG_MOVE_DISTANCE2_FIELD.name = "move_distance2"
-SKILL_CFG_MOVE_DISTANCE2_FIELD.full_name = ".ftcfg.skill_cfg.move_distance2"
-SKILL_CFG_MOVE_DISTANCE2_FIELD.number = 68
-SKILL_CFG_MOVE_DISTANCE2_FIELD.index = 67
-SKILL_CFG_MOVE_DISTANCE2_FIELD.label = 2
-SKILL_CFG_MOVE_DISTANCE2_FIELD.has_default_value = false
-SKILL_CFG_MOVE_DISTANCE2_FIELD.default_value = 0.0
-SKILL_CFG_MOVE_DISTANCE2_FIELD.type = 2
-SKILL_CFG_MOVE_DISTANCE2_FIELD.cpp_type = 6
-
-SKILL_CFG_MOVE_TIME2_FIELD.name = "move_time2"
-SKILL_CFG_MOVE_TIME2_FIELD.full_name = ".ftcfg.skill_cfg.move_time2"
-SKILL_CFG_MOVE_TIME2_FIELD.number = 69
-SKILL_CFG_MOVE_TIME2_FIELD.index = 68
-SKILL_CFG_MOVE_TIME2_FIELD.label = 2
-SKILL_CFG_MOVE_TIME2_FIELD.has_default_value = false
-SKILL_CFG_MOVE_TIME2_FIELD.default_value = 0
-SKILL_CFG_MOVE_TIME2_FIELD.type = 5
-SKILL_CFG_MOVE_TIME2_FIELD.cpp_type = 1
-
-SKILL_CFG_MOVE_TYPE3_FIELD.name = "move_type3"
-SKILL_CFG_MOVE_TYPE3_FIELD.full_name = ".ftcfg.skill_cfg.move_type3"
-SKILL_CFG_MOVE_TYPE3_FIELD.number = 70
-SKILL_CFG_MOVE_TYPE3_FIELD.index = 69
-SKILL_CFG_MOVE_TYPE3_FIELD.label = 2
-SKILL_CFG_MOVE_TYPE3_FIELD.has_default_value = false
-SKILL_CFG_MOVE_TYPE3_FIELD.default_value = 0
-SKILL_CFG_MOVE_TYPE3_FIELD.type = 5
-SKILL_CFG_MOVE_TYPE3_FIELD.cpp_type = 1
-
-SKILL_CFG_MOVE_POINT3_FIELD.name = "move_point3"
-SKILL_CFG_MOVE_POINT3_FIELD.full_name = ".ftcfg.skill_cfg.move_point3"
-SKILL_CFG_MOVE_POINT3_FIELD.number = 71
-SKILL_CFG_MOVE_POINT3_FIELD.index = 70
-SKILL_CFG_MOVE_POINT3_FIELD.label = 2
-SKILL_CFG_MOVE_POINT3_FIELD.has_default_value = false
-SKILL_CFG_MOVE_POINT3_FIELD.default_value = 0
-SKILL_CFG_MOVE_POINT3_FIELD.type = 5
-SKILL_CFG_MOVE_POINT3_FIELD.cpp_type = 1
-
-SKILL_CFG_ADJUST_DISTANCE3_FIELD.name = "adjust_distance3"
-SKILL_CFG_ADJUST_DISTANCE3_FIELD.full_name = ".ftcfg.skill_cfg.adjust_distance3"
-SKILL_CFG_ADJUST_DISTANCE3_FIELD.number = 72
-SKILL_CFG_ADJUST_DISTANCE3_FIELD.index = 71
-SKILL_CFG_ADJUST_DISTANCE3_FIELD.label = 2
-SKILL_CFG_ADJUST_DISTANCE3_FIELD.has_default_value = false
-SKILL_CFG_ADJUST_DISTANCE3_FIELD.default_value = 0.0
-SKILL_CFG_ADJUST_DISTANCE3_FIELD.type = 2
-SKILL_CFG_ADJUST_DISTANCE3_FIELD.cpp_type = 6
-
-SKILL_CFG_MOVE_DISTANCE3_FIELD.name = "move_distance3"
-SKILL_CFG_MOVE_DISTANCE3_FIELD.full_name = ".ftcfg.skill_cfg.move_distance3"
-SKILL_CFG_MOVE_DISTANCE3_FIELD.number = 73
-SKILL_CFG_MOVE_DISTANCE3_FIELD.index = 72
-SKILL_CFG_MOVE_DISTANCE3_FIELD.label = 2
-SKILL_CFG_MOVE_DISTANCE3_FIELD.has_default_value = false
-SKILL_CFG_MOVE_DISTANCE3_FIELD.default_value = 0.0
-SKILL_CFG_MOVE_DISTANCE3_FIELD.type = 2
-SKILL_CFG_MOVE_DISTANCE3_FIELD.cpp_type = 6
-
-SKILL_CFG_MOVE_TIME3_FIELD.name = "move_time3"
-SKILL_CFG_MOVE_TIME3_FIELD.full_name = ".ftcfg.skill_cfg.move_time3"
-SKILL_CFG_MOVE_TIME3_FIELD.number = 74
-SKILL_CFG_MOVE_TIME3_FIELD.index = 73
-SKILL_CFG_MOVE_TIME3_FIELD.label = 2
-SKILL_CFG_MOVE_TIME3_FIELD.has_default_value = false
-SKILL_CFG_MOVE_TIME3_FIELD.default_value = 0
-SKILL_CFG_MOVE_TIME3_FIELD.type = 5
-SKILL_CFG_MOVE_TIME3_FIELD.cpp_type = 1
-
-SKILL_CFG_MOVE_TYPE4_FIELD.name = "move_type4"
-SKILL_CFG_MOVE_TYPE4_FIELD.full_name = ".ftcfg.skill_cfg.move_type4"
-SKILL_CFG_MOVE_TYPE4_FIELD.number = 75
-SKILL_CFG_MOVE_TYPE4_FIELD.index = 74
-SKILL_CFG_MOVE_TYPE4_FIELD.label = 2
-SKILL_CFG_MOVE_TYPE4_FIELD.has_default_value = false
-SKILL_CFG_MOVE_TYPE4_FIELD.default_value = 0
-SKILL_CFG_MOVE_TYPE4_FIELD.type = 5
-SKILL_CFG_MOVE_TYPE4_FIELD.cpp_type = 1
-
-SKILL_CFG_MOVE_POINT4_FIELD.name = "move_point4"
-SKILL_CFG_MOVE_POINT4_FIELD.full_name = ".ftcfg.skill_cfg.move_point4"
-SKILL_CFG_MOVE_POINT4_FIELD.number = 76
-SKILL_CFG_MOVE_POINT4_FIELD.index = 75
-SKILL_CFG_MOVE_POINT4_FIELD.label = 2
-SKILL_CFG_MOVE_POINT4_FIELD.has_default_value = false
-SKILL_CFG_MOVE_POINT4_FIELD.default_value = 0
-SKILL_CFG_MOVE_POINT4_FIELD.type = 5
-SKILL_CFG_MOVE_POINT4_FIELD.cpp_type = 1
-
-SKILL_CFG_ADJUST_DISTANCE4_FIELD.name = "adjust_distance4"
-SKILL_CFG_ADJUST_DISTANCE4_FIELD.full_name = ".ftcfg.skill_cfg.adjust_distance4"
-SKILL_CFG_ADJUST_DISTANCE4_FIELD.number = 77
-SKILL_CFG_ADJUST_DISTANCE4_FIELD.index = 76
-SKILL_CFG_ADJUST_DISTANCE4_FIELD.label = 2
-SKILL_CFG_ADJUST_DISTANCE4_FIELD.has_default_value = false
-SKILL_CFG_ADJUST_DISTANCE4_FIELD.default_value = 0.0
-SKILL_CFG_ADJUST_DISTANCE4_FIELD.type = 2
-SKILL_CFG_ADJUST_DISTANCE4_FIELD.cpp_type = 6
-
-SKILL_CFG_MOVE_DISTANCE4_FIELD.name = "move_distance4"
-SKILL_CFG_MOVE_DISTANCE4_FIELD.full_name = ".ftcfg.skill_cfg.move_distance4"
-SKILL_CFG_MOVE_DISTANCE4_FIELD.number = 78
-SKILL_CFG_MOVE_DISTANCE4_FIELD.index = 77
-SKILL_CFG_MOVE_DISTANCE4_FIELD.label = 2
-SKILL_CFG_MOVE_DISTANCE4_FIELD.has_default_value = false
-SKILL_CFG_MOVE_DISTANCE4_FIELD.default_value = 0.0
-SKILL_CFG_MOVE_DISTANCE4_FIELD.type = 2
-SKILL_CFG_MOVE_DISTANCE4_FIELD.cpp_type = 6
-
-SKILL_CFG_MOVE_TIME4_FIELD.name = "move_time4"
-SKILL_CFG_MOVE_TIME4_FIELD.full_name = ".ftcfg.skill_cfg.move_time4"
-SKILL_CFG_MOVE_TIME4_FIELD.number = 79
-SKILL_CFG_MOVE_TIME4_FIELD.index = 78
-SKILL_CFG_MOVE_TIME4_FIELD.label = 2
-SKILL_CFG_MOVE_TIME4_FIELD.has_default_value = false
-SKILL_CFG_MOVE_TIME4_FIELD.default_value = 0
-SKILL_CFG_MOVE_TIME4_FIELD.type = 5
-SKILL_CFG_MOVE_TIME4_FIELD.cpp_type = 1
-
-SKILL_CFG_MOVE_TYPE5_FIELD.name = "move_type5"
-SKILL_CFG_MOVE_TYPE5_FIELD.full_name = ".ftcfg.skill_cfg.move_type5"
-SKILL_CFG_MOVE_TYPE5_FIELD.number = 80
-SKILL_CFG_MOVE_TYPE5_FIELD.index = 79
-SKILL_CFG_MOVE_TYPE5_FIELD.label = 2
-SKILL_CFG_MOVE_TYPE5_FIELD.has_default_value = false
-SKILL_CFG_MOVE_TYPE5_FIELD.default_value = 0
-SKILL_CFG_MOVE_TYPE5_FIELD.type = 5
-SKILL_CFG_MOVE_TYPE5_FIELD.cpp_type = 1
-
-SKILL_CFG_MOVE_POINT5_FIELD.name = "move_point5"
-SKILL_CFG_MOVE_POINT5_FIELD.full_name = ".ftcfg.skill_cfg.move_point5"
-SKILL_CFG_MOVE_POINT5_FIELD.number = 81
-SKILL_CFG_MOVE_POINT5_FIELD.index = 80
-SKILL_CFG_MOVE_POINT5_FIELD.label = 2
-SKILL_CFG_MOVE_POINT5_FIELD.has_default_value = false
-SKILL_CFG_MOVE_POINT5_FIELD.default_value = 0
-SKILL_CFG_MOVE_POINT5_FIELD.type = 5
-SKILL_CFG_MOVE_POINT5_FIELD.cpp_type = 1
-
-SKILL_CFG_ADJUST_DISTANCE5_FIELD.name = "adjust_distance5"
-SKILL_CFG_ADJUST_DISTANCE5_FIELD.full_name = ".ftcfg.skill_cfg.adjust_distance5"
-SKILL_CFG_ADJUST_DISTANCE5_FIELD.number = 82
-SKILL_CFG_ADJUST_DISTANCE5_FIELD.index = 81
-SKILL_CFG_ADJUST_DISTANCE5_FIELD.label = 2
-SKILL_CFG_ADJUST_DISTANCE5_FIELD.has_default_value = false
-SKILL_CFG_ADJUST_DISTANCE5_FIELD.default_value = 0.0
-SKILL_CFG_ADJUST_DISTANCE5_FIELD.type = 2
-SKILL_CFG_ADJUST_DISTANCE5_FIELD.cpp_type = 6
-
-SKILL_CFG_MOVE_DISTANCE5_FIELD.name = "move_distance5"
-SKILL_CFG_MOVE_DISTANCE5_FIELD.full_name = ".ftcfg.skill_cfg.move_distance5"
-SKILL_CFG_MOVE_DISTANCE5_FIELD.number = 83
-SKILL_CFG_MOVE_DISTANCE5_FIELD.index = 82
-SKILL_CFG_MOVE_DISTANCE5_FIELD.label = 2
-SKILL_CFG_MOVE_DISTANCE5_FIELD.has_default_value = false
-SKILL_CFG_MOVE_DISTANCE5_FIELD.default_value = 0.0
-SKILL_CFG_MOVE_DISTANCE5_FIELD.type = 2
-SKILL_CFG_MOVE_DISTANCE5_FIELD.cpp_type = 6
-
-SKILL_CFG_MOVE_TIME5_FIELD.name = "move_time5"
-SKILL_CFG_MOVE_TIME5_FIELD.full_name = ".ftcfg.skill_cfg.move_time5"
-SKILL_CFG_MOVE_TIME5_FIELD.number = 84
-SKILL_CFG_MOVE_TIME5_FIELD.index = 83
-SKILL_CFG_MOVE_TIME5_FIELD.label = 2
-SKILL_CFG_MOVE_TIME5_FIELD.has_default_value = false
-SKILL_CFG_MOVE_TIME5_FIELD.default_value = 0
-SKILL_CFG_MOVE_TIME5_FIELD.type = 5
-SKILL_CFG_MOVE_TIME5_FIELD.cpp_type = 1
-
-SKILL_CFG_MOVE_TYPE6_FIELD.name = "move_type6"
-SKILL_CFG_MOVE_TYPE6_FIELD.full_name = ".ftcfg.skill_cfg.move_type6"
-SKILL_CFG_MOVE_TYPE6_FIELD.number = 85
-SKILL_CFG_MOVE_TYPE6_FIELD.index = 84
-SKILL_CFG_MOVE_TYPE6_FIELD.label = 2
-SKILL_CFG_MOVE_TYPE6_FIELD.has_default_value = false
-SKILL_CFG_MOVE_TYPE6_FIELD.default_value = 0
-SKILL_CFG_MOVE_TYPE6_FIELD.type = 5
-SKILL_CFG_MOVE_TYPE6_FIELD.cpp_type = 1
-
-SKILL_CFG_MOVE_POINT6_FIELD.name = "move_point6"
-SKILL_CFG_MOVE_POINT6_FIELD.full_name = ".ftcfg.skill_cfg.move_point6"
-SKILL_CFG_MOVE_POINT6_FIELD.number = 86
-SKILL_CFG_MOVE_POINT6_FIELD.index = 85
-SKILL_CFG_MOVE_POINT6_FIELD.label = 2
-SKILL_CFG_MOVE_POINT6_FIELD.has_default_value = false
-SKILL_CFG_MOVE_POINT6_FIELD.default_value = 0
-SKILL_CFG_MOVE_POINT6_FIELD.type = 5
-SKILL_CFG_MOVE_POINT6_FIELD.cpp_type = 1
-
-SKILL_CFG_ADJUST_DISTANCE6_FIELD.name = "adjust_distance6"
-SKILL_CFG_ADJUST_DISTANCE6_FIELD.full_name = ".ftcfg.skill_cfg.adjust_distance6"
-SKILL_CFG_ADJUST_DISTANCE6_FIELD.number = 87
-SKILL_CFG_ADJUST_DISTANCE6_FIELD.index = 86
-SKILL_CFG_ADJUST_DISTANCE6_FIELD.label = 2
-SKILL_CFG_ADJUST_DISTANCE6_FIELD.has_default_value = false
-SKILL_CFG_ADJUST_DISTANCE6_FIELD.default_value = 0.0
-SKILL_CFG_ADJUST_DISTANCE6_FIELD.type = 2
-SKILL_CFG_ADJUST_DISTANCE6_FIELD.cpp_type = 6
-
-SKILL_CFG_MOVE_DISTANCE6_FIELD.name = "move_distance6"
-SKILL_CFG_MOVE_DISTANCE6_FIELD.full_name = ".ftcfg.skill_cfg.move_distance6"
-SKILL_CFG_MOVE_DISTANCE6_FIELD.number = 88
-SKILL_CFG_MOVE_DISTANCE6_FIELD.index = 87
-SKILL_CFG_MOVE_DISTANCE6_FIELD.label = 2
-SKILL_CFG_MOVE_DISTANCE6_FIELD.has_default_value = false
-SKILL_CFG_MOVE_DISTANCE6_FIELD.default_value = 0.0
-SKILL_CFG_MOVE_DISTANCE6_FIELD.type = 2
-SKILL_CFG_MOVE_DISTANCE6_FIELD.cpp_type = 6
-
-SKILL_CFG_MOVE_TIME6_FIELD.name = "move_time6"
-SKILL_CFG_MOVE_TIME6_FIELD.full_name = ".ftcfg.skill_cfg.move_time6"
-SKILL_CFG_MOVE_TIME6_FIELD.number = 89
-SKILL_CFG_MOVE_TIME6_FIELD.index = 88
-SKILL_CFG_MOVE_TIME6_FIELD.label = 2
-SKILL_CFG_MOVE_TIME6_FIELD.has_default_value = false
-SKILL_CFG_MOVE_TIME6_FIELD.default_value = 0
-SKILL_CFG_MOVE_TIME6_FIELD.type = 5
-SKILL_CFG_MOVE_TIME6_FIELD.cpp_type = 1
-
-SKILL_CFG_MOVE_TYPE7_FIELD.name = "move_type7"
-SKILL_CFG_MOVE_TYPE7_FIELD.full_name = ".ftcfg.skill_cfg.move_type7"
-SKILL_CFG_MOVE_TYPE7_FIELD.number = 90
-SKILL_CFG_MOVE_TYPE7_FIELD.index = 89
-SKILL_CFG_MOVE_TYPE7_FIELD.label = 2
-SKILL_CFG_MOVE_TYPE7_FIELD.has_default_value = false
-SKILL_CFG_MOVE_TYPE7_FIELD.default_value = 0
-SKILL_CFG_MOVE_TYPE7_FIELD.type = 5
-SKILL_CFG_MOVE_TYPE7_FIELD.cpp_type = 1
-
-SKILL_CFG_MOVE_POINT7_FIELD.name = "move_point7"
-SKILL_CFG_MOVE_POINT7_FIELD.full_name = ".ftcfg.skill_cfg.move_point7"
-SKILL_CFG_MOVE_POINT7_FIELD.number = 91
-SKILL_CFG_MOVE_POINT7_FIELD.index = 90
-SKILL_CFG_MOVE_POINT7_FIELD.label = 2
-SKILL_CFG_MOVE_POINT7_FIELD.has_default_value = false
-SKILL_CFG_MOVE_POINT7_FIELD.default_value = 0
-SKILL_CFG_MOVE_POINT7_FIELD.type = 5
-SKILL_CFG_MOVE_POINT7_FIELD.cpp_type = 1
-
-SKILL_CFG_ADJUST_DISTANCE7_FIELD.name = "adjust_distance7"
-SKILL_CFG_ADJUST_DISTANCE7_FIELD.full_name = ".ftcfg.skill_cfg.adjust_distance7"
-SKILL_CFG_ADJUST_DISTANCE7_FIELD.number = 92
-SKILL_CFG_ADJUST_DISTANCE7_FIELD.index = 91
-SKILL_CFG_ADJUST_DISTANCE7_FIELD.label = 2
-SKILL_CFG_ADJUST_DISTANCE7_FIELD.has_default_value = false
-SKILL_CFG_ADJUST_DISTANCE7_FIELD.default_value = 0.0
-SKILL_CFG_ADJUST_DISTANCE7_FIELD.type = 2
-SKILL_CFG_ADJUST_DISTANCE7_FIELD.cpp_type = 6
-
-SKILL_CFG_MOVE_DISTANCE7_FIELD.name = "move_distance7"
-SKILL_CFG_MOVE_DISTANCE7_FIELD.full_name = ".ftcfg.skill_cfg.move_distance7"
-SKILL_CFG_MOVE_DISTANCE7_FIELD.number = 93
-SKILL_CFG_MOVE_DISTANCE7_FIELD.index = 92
-SKILL_CFG_MOVE_DISTANCE7_FIELD.label = 2
-SKILL_CFG_MOVE_DISTANCE7_FIELD.has_default_value = false
-SKILL_CFG_MOVE_DISTANCE7_FIELD.default_value = 0.0
-SKILL_CFG_MOVE_DISTANCE7_FIELD.type = 2
-SKILL_CFG_MOVE_DISTANCE7_FIELD.cpp_type = 6
-
-SKILL_CFG_MOVE_TIME7_FIELD.name = "move_time7"
-SKILL_CFG_MOVE_TIME7_FIELD.full_name = ".ftcfg.skill_cfg.move_time7"
-SKILL_CFG_MOVE_TIME7_FIELD.number = 94
-SKILL_CFG_MOVE_TIME7_FIELD.index = 93
-SKILL_CFG_MOVE_TIME7_FIELD.label = 2
-SKILL_CFG_MOVE_TIME7_FIELD.has_default_value = false
-SKILL_CFG_MOVE_TIME7_FIELD.default_value = 0
-SKILL_CFG_MOVE_TIME7_FIELD.type = 5
-SKILL_CFG_MOVE_TIME7_FIELD.cpp_type = 1
-
-SKILL_CFG_MOVE_TYPE8_FIELD.name = "move_type8"
-SKILL_CFG_MOVE_TYPE8_FIELD.full_name = ".ftcfg.skill_cfg.move_type8"
-SKILL_CFG_MOVE_TYPE8_FIELD.number = 95
-SKILL_CFG_MOVE_TYPE8_FIELD.index = 94
-SKILL_CFG_MOVE_TYPE8_FIELD.label = 2
-SKILL_CFG_MOVE_TYPE8_FIELD.has_default_value = false
-SKILL_CFG_MOVE_TYPE8_FIELD.default_value = 0
-SKILL_CFG_MOVE_TYPE8_FIELD.type = 5
-SKILL_CFG_MOVE_TYPE8_FIELD.cpp_type = 1
-
-SKILL_CFG_MOVE_POINT8_FIELD.name = "move_point8"
-SKILL_CFG_MOVE_POINT8_FIELD.full_name = ".ftcfg.skill_cfg.move_point8"
-SKILL_CFG_MOVE_POINT8_FIELD.number = 96
-SKILL_CFG_MOVE_POINT8_FIELD.index = 95
-SKILL_CFG_MOVE_POINT8_FIELD.label = 2
-SKILL_CFG_MOVE_POINT8_FIELD.has_default_value = false
-SKILL_CFG_MOVE_POINT8_FIELD.default_value = 0
-SKILL_CFG_MOVE_POINT8_FIELD.type = 5
-SKILL_CFG_MOVE_POINT8_FIELD.cpp_type = 1
-
-SKILL_CFG_ADJUST_DISTANCE8_FIELD.name = "adjust_distance8"
-SKILL_CFG_ADJUST_DISTANCE8_FIELD.full_name = ".ftcfg.skill_cfg.adjust_distance8"
-SKILL_CFG_ADJUST_DISTANCE8_FIELD.number = 97
-SKILL_CFG_ADJUST_DISTANCE8_FIELD.index = 96
-SKILL_CFG_ADJUST_DISTANCE8_FIELD.label = 2
-SKILL_CFG_ADJUST_DISTANCE8_FIELD.has_default_value = false
-SKILL_CFG_ADJUST_DISTANCE8_FIELD.default_value = 0.0
-SKILL_CFG_ADJUST_DISTANCE8_FIELD.type = 2
-SKILL_CFG_ADJUST_DISTANCE8_FIELD.cpp_type = 6
-
-SKILL_CFG_MOVE_DISTANCE8_FIELD.name = "move_distance8"
-SKILL_CFG_MOVE_DISTANCE8_FIELD.full_name = ".ftcfg.skill_cfg.move_distance8"
-SKILL_CFG_MOVE_DISTANCE8_FIELD.number = 98
-SKILL_CFG_MOVE_DISTANCE8_FIELD.index = 97
-SKILL_CFG_MOVE_DISTANCE8_FIELD.label = 2
-SKILL_CFG_MOVE_DISTANCE8_FIELD.has_default_value = false
-SKILL_CFG_MOVE_DISTANCE8_FIELD.default_value = 0.0
-SKILL_CFG_MOVE_DISTANCE8_FIELD.type = 2
-SKILL_CFG_MOVE_DISTANCE8_FIELD.cpp_type = 6
-
-SKILL_CFG_MOVE_TIME8_FIELD.name = "move_time8"
-SKILL_CFG_MOVE_TIME8_FIELD.full_name = ".ftcfg.skill_cfg.move_time8"
-SKILL_CFG_MOVE_TIME8_FIELD.number = 99
-SKILL_CFG_MOVE_TIME8_FIELD.index = 98
-SKILL_CFG_MOVE_TIME8_FIELD.label = 2
-SKILL_CFG_MOVE_TIME8_FIELD.has_default_value = false
-SKILL_CFG_MOVE_TIME8_FIELD.default_value = 0
-SKILL_CFG_MOVE_TIME8_FIELD.type = 5
-SKILL_CFG_MOVE_TIME8_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TYPE_1_FIELD.name = "logic_type_1"
-SKILL_CFG_LOGIC_TYPE_1_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_1"
-SKILL_CFG_LOGIC_TYPE_1_FIELD.number = 100
-SKILL_CFG_LOGIC_TYPE_1_FIELD.index = 99
-SKILL_CFG_LOGIC_TYPE_1_FIELD.label = 2
-SKILL_CFG_LOGIC_TYPE_1_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TYPE_1_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TYPE_1_FIELD.type = 5
-SKILL_CFG_LOGIC_TYPE_1_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TIME_1_FIELD.name = "logic_time_1"
-SKILL_CFG_LOGIC_TIME_1_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_1"
-SKILL_CFG_LOGIC_TIME_1_FIELD.number = 101
-SKILL_CFG_LOGIC_TIME_1_FIELD.index = 100
-SKILL_CFG_LOGIC_TIME_1_FIELD.label = 2
-SKILL_CFG_LOGIC_TIME_1_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TIME_1_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TIME_1_FIELD.type = 5
-SKILL_CFG_LOGIC_TIME_1_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_ID_1_FIELD.name = "logic_id_1"
-SKILL_CFG_LOGIC_ID_1_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_1"
-SKILL_CFG_LOGIC_ID_1_FIELD.number = 102
-SKILL_CFG_LOGIC_ID_1_FIELD.index = 101
-SKILL_CFG_LOGIC_ID_1_FIELD.label = 2
-SKILL_CFG_LOGIC_ID_1_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_ID_1_FIELD.default_value = 0
-SKILL_CFG_LOGIC_ID_1_FIELD.type = 5
-SKILL_CFG_LOGIC_ID_1_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TYPE_2_FIELD.name = "logic_type_2"
-SKILL_CFG_LOGIC_TYPE_2_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_2"
-SKILL_CFG_LOGIC_TYPE_2_FIELD.number = 103
-SKILL_CFG_LOGIC_TYPE_2_FIELD.index = 102
-SKILL_CFG_LOGIC_TYPE_2_FIELD.label = 2
-SKILL_CFG_LOGIC_TYPE_2_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TYPE_2_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TYPE_2_FIELD.type = 5
-SKILL_CFG_LOGIC_TYPE_2_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TIME_2_FIELD.name = "logic_time_2"
-SKILL_CFG_LOGIC_TIME_2_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_2"
-SKILL_CFG_LOGIC_TIME_2_FIELD.number = 104
-SKILL_CFG_LOGIC_TIME_2_FIELD.index = 103
-SKILL_CFG_LOGIC_TIME_2_FIELD.label = 2
-SKILL_CFG_LOGIC_TIME_2_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TIME_2_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TIME_2_FIELD.type = 5
-SKILL_CFG_LOGIC_TIME_2_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_ID_2_FIELD.name = "logic_id_2"
-SKILL_CFG_LOGIC_ID_2_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_2"
-SKILL_CFG_LOGIC_ID_2_FIELD.number = 105
-SKILL_CFG_LOGIC_ID_2_FIELD.index = 104
-SKILL_CFG_LOGIC_ID_2_FIELD.label = 2
-SKILL_CFG_LOGIC_ID_2_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_ID_2_FIELD.default_value = 0
-SKILL_CFG_LOGIC_ID_2_FIELD.type = 5
-SKILL_CFG_LOGIC_ID_2_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TYPE_3_FIELD.name = "logic_type_3"
-SKILL_CFG_LOGIC_TYPE_3_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_3"
-SKILL_CFG_LOGIC_TYPE_3_FIELD.number = 106
-SKILL_CFG_LOGIC_TYPE_3_FIELD.index = 105
-SKILL_CFG_LOGIC_TYPE_3_FIELD.label = 2
-SKILL_CFG_LOGIC_TYPE_3_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TYPE_3_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TYPE_3_FIELD.type = 5
-SKILL_CFG_LOGIC_TYPE_3_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TIME_3_FIELD.name = "logic_time_3"
-SKILL_CFG_LOGIC_TIME_3_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_3"
-SKILL_CFG_LOGIC_TIME_3_FIELD.number = 107
-SKILL_CFG_LOGIC_TIME_3_FIELD.index = 106
-SKILL_CFG_LOGIC_TIME_3_FIELD.label = 2
-SKILL_CFG_LOGIC_TIME_3_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TIME_3_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TIME_3_FIELD.type = 5
-SKILL_CFG_LOGIC_TIME_3_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_ID_3_FIELD.name = "logic_id_3"
-SKILL_CFG_LOGIC_ID_3_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_3"
-SKILL_CFG_LOGIC_ID_3_FIELD.number = 108
-SKILL_CFG_LOGIC_ID_3_FIELD.index = 107
-SKILL_CFG_LOGIC_ID_3_FIELD.label = 2
-SKILL_CFG_LOGIC_ID_3_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_ID_3_FIELD.default_value = 0
-SKILL_CFG_LOGIC_ID_3_FIELD.type = 5
-SKILL_CFG_LOGIC_ID_3_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TYPE_4_FIELD.name = "logic_type_4"
-SKILL_CFG_LOGIC_TYPE_4_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_4"
-SKILL_CFG_LOGIC_TYPE_4_FIELD.number = 109
-SKILL_CFG_LOGIC_TYPE_4_FIELD.index = 108
-SKILL_CFG_LOGIC_TYPE_4_FIELD.label = 2
-SKILL_CFG_LOGIC_TYPE_4_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TYPE_4_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TYPE_4_FIELD.type = 5
-SKILL_CFG_LOGIC_TYPE_4_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TIME_4_FIELD.name = "logic_time_4"
-SKILL_CFG_LOGIC_TIME_4_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_4"
-SKILL_CFG_LOGIC_TIME_4_FIELD.number = 110
-SKILL_CFG_LOGIC_TIME_4_FIELD.index = 109
-SKILL_CFG_LOGIC_TIME_4_FIELD.label = 2
-SKILL_CFG_LOGIC_TIME_4_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TIME_4_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TIME_4_FIELD.type = 5
-SKILL_CFG_LOGIC_TIME_4_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_ID_4_FIELD.name = "logic_id_4"
-SKILL_CFG_LOGIC_ID_4_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_4"
-SKILL_CFG_LOGIC_ID_4_FIELD.number = 111
-SKILL_CFG_LOGIC_ID_4_FIELD.index = 110
-SKILL_CFG_LOGIC_ID_4_FIELD.label = 2
-SKILL_CFG_LOGIC_ID_4_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_ID_4_FIELD.default_value = 0
-SKILL_CFG_LOGIC_ID_4_FIELD.type = 5
-SKILL_CFG_LOGIC_ID_4_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TYPE_5_FIELD.name = "logic_type_5"
-SKILL_CFG_LOGIC_TYPE_5_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_5"
-SKILL_CFG_LOGIC_TYPE_5_FIELD.number = 112
-SKILL_CFG_LOGIC_TYPE_5_FIELD.index = 111
-SKILL_CFG_LOGIC_TYPE_5_FIELD.label = 2
-SKILL_CFG_LOGIC_TYPE_5_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TYPE_5_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TYPE_5_FIELD.type = 5
-SKILL_CFG_LOGIC_TYPE_5_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TIME_5_FIELD.name = "logic_time_5"
-SKILL_CFG_LOGIC_TIME_5_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_5"
-SKILL_CFG_LOGIC_TIME_5_FIELD.number = 113
-SKILL_CFG_LOGIC_TIME_5_FIELD.index = 112
-SKILL_CFG_LOGIC_TIME_5_FIELD.label = 2
-SKILL_CFG_LOGIC_TIME_5_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TIME_5_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TIME_5_FIELD.type = 5
-SKILL_CFG_LOGIC_TIME_5_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_ID_5_FIELD.name = "logic_id_5"
-SKILL_CFG_LOGIC_ID_5_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_5"
-SKILL_CFG_LOGIC_ID_5_FIELD.number = 114
-SKILL_CFG_LOGIC_ID_5_FIELD.index = 113
-SKILL_CFG_LOGIC_ID_5_FIELD.label = 2
-SKILL_CFG_LOGIC_ID_5_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_ID_5_FIELD.default_value = 0
-SKILL_CFG_LOGIC_ID_5_FIELD.type = 5
-SKILL_CFG_LOGIC_ID_5_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TYPE_6_FIELD.name = "logic_type_6"
-SKILL_CFG_LOGIC_TYPE_6_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_6"
-SKILL_CFG_LOGIC_TYPE_6_FIELD.number = 115
-SKILL_CFG_LOGIC_TYPE_6_FIELD.index = 114
-SKILL_CFG_LOGIC_TYPE_6_FIELD.label = 2
-SKILL_CFG_LOGIC_TYPE_6_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TYPE_6_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TYPE_6_FIELD.type = 5
-SKILL_CFG_LOGIC_TYPE_6_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TIME_6_FIELD.name = "logic_time_6"
-SKILL_CFG_LOGIC_TIME_6_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_6"
-SKILL_CFG_LOGIC_TIME_6_FIELD.number = 116
-SKILL_CFG_LOGIC_TIME_6_FIELD.index = 115
-SKILL_CFG_LOGIC_TIME_6_FIELD.label = 2
-SKILL_CFG_LOGIC_TIME_6_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TIME_6_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TIME_6_FIELD.type = 5
-SKILL_CFG_LOGIC_TIME_6_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_ID_6_FIELD.name = "logic_id_6"
-SKILL_CFG_LOGIC_ID_6_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_6"
-SKILL_CFG_LOGIC_ID_6_FIELD.number = 117
-SKILL_CFG_LOGIC_ID_6_FIELD.index = 116
-SKILL_CFG_LOGIC_ID_6_FIELD.label = 2
-SKILL_CFG_LOGIC_ID_6_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_ID_6_FIELD.default_value = 0
-SKILL_CFG_LOGIC_ID_6_FIELD.type = 5
-SKILL_CFG_LOGIC_ID_6_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TYPE_7_FIELD.name = "logic_type_7"
-SKILL_CFG_LOGIC_TYPE_7_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_7"
-SKILL_CFG_LOGIC_TYPE_7_FIELD.number = 118
-SKILL_CFG_LOGIC_TYPE_7_FIELD.index = 117
-SKILL_CFG_LOGIC_TYPE_7_FIELD.label = 2
-SKILL_CFG_LOGIC_TYPE_7_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TYPE_7_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TYPE_7_FIELD.type = 5
-SKILL_CFG_LOGIC_TYPE_7_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TIME_7_FIELD.name = "logic_time_7"
-SKILL_CFG_LOGIC_TIME_7_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_7"
-SKILL_CFG_LOGIC_TIME_7_FIELD.number = 119
-SKILL_CFG_LOGIC_TIME_7_FIELD.index = 118
-SKILL_CFG_LOGIC_TIME_7_FIELD.label = 2
-SKILL_CFG_LOGIC_TIME_7_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TIME_7_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TIME_7_FIELD.type = 5
-SKILL_CFG_LOGIC_TIME_7_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_ID_7_FIELD.name = "logic_id_7"
-SKILL_CFG_LOGIC_ID_7_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_7"
-SKILL_CFG_LOGIC_ID_7_FIELD.number = 120
-SKILL_CFG_LOGIC_ID_7_FIELD.index = 119
-SKILL_CFG_LOGIC_ID_7_FIELD.label = 2
-SKILL_CFG_LOGIC_ID_7_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_ID_7_FIELD.default_value = 0
-SKILL_CFG_LOGIC_ID_7_FIELD.type = 5
-SKILL_CFG_LOGIC_ID_7_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TYPE_8_FIELD.name = "logic_type_8"
-SKILL_CFG_LOGIC_TYPE_8_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_8"
-SKILL_CFG_LOGIC_TYPE_8_FIELD.number = 121
-SKILL_CFG_LOGIC_TYPE_8_FIELD.index = 120
-SKILL_CFG_LOGIC_TYPE_8_FIELD.label = 2
-SKILL_CFG_LOGIC_TYPE_8_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TYPE_8_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TYPE_8_FIELD.type = 5
-SKILL_CFG_LOGIC_TYPE_8_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TIME_8_FIELD.name = "logic_time_8"
-SKILL_CFG_LOGIC_TIME_8_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_8"
-SKILL_CFG_LOGIC_TIME_8_FIELD.number = 122
-SKILL_CFG_LOGIC_TIME_8_FIELD.index = 121
-SKILL_CFG_LOGIC_TIME_8_FIELD.label = 2
-SKILL_CFG_LOGIC_TIME_8_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TIME_8_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TIME_8_FIELD.type = 5
-SKILL_CFG_LOGIC_TIME_8_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_ID_8_FIELD.name = "logic_id_8"
-SKILL_CFG_LOGIC_ID_8_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_8"
-SKILL_CFG_LOGIC_ID_8_FIELD.number = 123
-SKILL_CFG_LOGIC_ID_8_FIELD.index = 122
-SKILL_CFG_LOGIC_ID_8_FIELD.label = 2
-SKILL_CFG_LOGIC_ID_8_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_ID_8_FIELD.default_value = 0
-SKILL_CFG_LOGIC_ID_8_FIELD.type = 5
-SKILL_CFG_LOGIC_ID_8_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TYPE_9_FIELD.name = "logic_type_9"
-SKILL_CFG_LOGIC_TYPE_9_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_9"
-SKILL_CFG_LOGIC_TYPE_9_FIELD.number = 124
-SKILL_CFG_LOGIC_TYPE_9_FIELD.index = 123
-SKILL_CFG_LOGIC_TYPE_9_FIELD.label = 2
-SKILL_CFG_LOGIC_TYPE_9_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TYPE_9_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TYPE_9_FIELD.type = 5
-SKILL_CFG_LOGIC_TYPE_9_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TIME_9_FIELD.name = "logic_time_9"
-SKILL_CFG_LOGIC_TIME_9_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_9"
-SKILL_CFG_LOGIC_TIME_9_FIELD.number = 125
-SKILL_CFG_LOGIC_TIME_9_FIELD.index = 124
-SKILL_CFG_LOGIC_TIME_9_FIELD.label = 2
-SKILL_CFG_LOGIC_TIME_9_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TIME_9_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TIME_9_FIELD.type = 5
-SKILL_CFG_LOGIC_TIME_9_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_ID_9_FIELD.name = "logic_id_9"
-SKILL_CFG_LOGIC_ID_9_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_9"
-SKILL_CFG_LOGIC_ID_9_FIELD.number = 126
-SKILL_CFG_LOGIC_ID_9_FIELD.index = 125
-SKILL_CFG_LOGIC_ID_9_FIELD.label = 2
-SKILL_CFG_LOGIC_ID_9_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_ID_9_FIELD.default_value = 0
-SKILL_CFG_LOGIC_ID_9_FIELD.type = 5
-SKILL_CFG_LOGIC_ID_9_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TYPE_10_FIELD.name = "logic_type_10"
-SKILL_CFG_LOGIC_TYPE_10_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_10"
-SKILL_CFG_LOGIC_TYPE_10_FIELD.number = 127
-SKILL_CFG_LOGIC_TYPE_10_FIELD.index = 126
-SKILL_CFG_LOGIC_TYPE_10_FIELD.label = 2
-SKILL_CFG_LOGIC_TYPE_10_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TYPE_10_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TYPE_10_FIELD.type = 5
-SKILL_CFG_LOGIC_TYPE_10_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TIME_10_FIELD.name = "logic_time_10"
-SKILL_CFG_LOGIC_TIME_10_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_10"
-SKILL_CFG_LOGIC_TIME_10_FIELD.number = 128
-SKILL_CFG_LOGIC_TIME_10_FIELD.index = 127
-SKILL_CFG_LOGIC_TIME_10_FIELD.label = 2
-SKILL_CFG_LOGIC_TIME_10_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TIME_10_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TIME_10_FIELD.type = 5
-SKILL_CFG_LOGIC_TIME_10_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_ID_10_FIELD.name = "logic_id_10"
-SKILL_CFG_LOGIC_ID_10_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_10"
-SKILL_CFG_LOGIC_ID_10_FIELD.number = 129
-SKILL_CFG_LOGIC_ID_10_FIELD.index = 128
-SKILL_CFG_LOGIC_ID_10_FIELD.label = 2
-SKILL_CFG_LOGIC_ID_10_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_ID_10_FIELD.default_value = 0
-SKILL_CFG_LOGIC_ID_10_FIELD.type = 5
-SKILL_CFG_LOGIC_ID_10_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TYPE_11_FIELD.name = "logic_type_11"
-SKILL_CFG_LOGIC_TYPE_11_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_11"
-SKILL_CFG_LOGIC_TYPE_11_FIELD.number = 130
-SKILL_CFG_LOGIC_TYPE_11_FIELD.index = 129
-SKILL_CFG_LOGIC_TYPE_11_FIELD.label = 2
-SKILL_CFG_LOGIC_TYPE_11_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TYPE_11_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TYPE_11_FIELD.type = 5
-SKILL_CFG_LOGIC_TYPE_11_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TIME_11_FIELD.name = "logic_time_11"
-SKILL_CFG_LOGIC_TIME_11_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_11"
-SKILL_CFG_LOGIC_TIME_11_FIELD.number = 131
-SKILL_CFG_LOGIC_TIME_11_FIELD.index = 130
-SKILL_CFG_LOGIC_TIME_11_FIELD.label = 2
-SKILL_CFG_LOGIC_TIME_11_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TIME_11_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TIME_11_FIELD.type = 5
-SKILL_CFG_LOGIC_TIME_11_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_ID_11_FIELD.name = "logic_id_11"
-SKILL_CFG_LOGIC_ID_11_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_11"
-SKILL_CFG_LOGIC_ID_11_FIELD.number = 132
-SKILL_CFG_LOGIC_ID_11_FIELD.index = 131
-SKILL_CFG_LOGIC_ID_11_FIELD.label = 2
-SKILL_CFG_LOGIC_ID_11_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_ID_11_FIELD.default_value = 0
-SKILL_CFG_LOGIC_ID_11_FIELD.type = 5
-SKILL_CFG_LOGIC_ID_11_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TYPE_12_FIELD.name = "logic_type_12"
-SKILL_CFG_LOGIC_TYPE_12_FIELD.full_name = ".ftcfg.skill_cfg.logic_type_12"
-SKILL_CFG_LOGIC_TYPE_12_FIELD.number = 133
-SKILL_CFG_LOGIC_TYPE_12_FIELD.index = 132
-SKILL_CFG_LOGIC_TYPE_12_FIELD.label = 2
-SKILL_CFG_LOGIC_TYPE_12_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TYPE_12_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TYPE_12_FIELD.type = 5
-SKILL_CFG_LOGIC_TYPE_12_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_TIME_12_FIELD.name = "logic_time_12"
-SKILL_CFG_LOGIC_TIME_12_FIELD.full_name = ".ftcfg.skill_cfg.logic_time_12"
-SKILL_CFG_LOGIC_TIME_12_FIELD.number = 134
-SKILL_CFG_LOGIC_TIME_12_FIELD.index = 133
-SKILL_CFG_LOGIC_TIME_12_FIELD.label = 2
-SKILL_CFG_LOGIC_TIME_12_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_TIME_12_FIELD.default_value = 0
-SKILL_CFG_LOGIC_TIME_12_FIELD.type = 5
-SKILL_CFG_LOGIC_TIME_12_FIELD.cpp_type = 1
-
-SKILL_CFG_LOGIC_ID_12_FIELD.name = "logic_id_12"
-SKILL_CFG_LOGIC_ID_12_FIELD.full_name = ".ftcfg.skill_cfg.logic_id_12"
-SKILL_CFG_LOGIC_ID_12_FIELD.number = 135
-SKILL_CFG_LOGIC_ID_12_FIELD.index = 134
-SKILL_CFG_LOGIC_ID_12_FIELD.label = 2
-SKILL_CFG_LOGIC_ID_12_FIELD.has_default_value = false
-SKILL_CFG_LOGIC_ID_12_FIELD.default_value = 0
-SKILL_CFG_LOGIC_ID_12_FIELD.type = 5
-SKILL_CFG_LOGIC_ID_12_FIELD.cpp_type = 1
-
-SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.name = "affect_range_type"
-SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.full_name = ".ftcfg.skill_cfg.affect_range_type"
-SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.number = 136
-SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.index = 135
-SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.label = 2
-SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.has_default_value = false
-SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.default_value = nil
-SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.enum_type = config_predefine_pb.EAFFECTAREATYPE
-SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.type = 14
-SKILL_CFG_AFFECT_RANGE_TYPE_FIELD.cpp_type = 8
-
-SKILL_CFG_ART_PARA1_FIELD.name = "art_para1"
-SKILL_CFG_ART_PARA1_FIELD.full_name = ".ftcfg.skill_cfg.art_para1"
-SKILL_CFG_ART_PARA1_FIELD.number = 137
-SKILL_CFG_ART_PARA1_FIELD.index = 136
-SKILL_CFG_ART_PARA1_FIELD.label = 2
-SKILL_CFG_ART_PARA1_FIELD.has_default_value = false
-SKILL_CFG_ART_PARA1_FIELD.default_value = 0
-SKILL_CFG_ART_PARA1_FIELD.type = 5
-SKILL_CFG_ART_PARA1_FIELD.cpp_type = 1
-
-SKILL_CFG_ART_PARA2_FIELD.name = "art_para2"
-SKILL_CFG_ART_PARA2_FIELD.full_name = ".ftcfg.skill_cfg.art_para2"
-SKILL_CFG_ART_PARA2_FIELD.number = 138
-SKILL_CFG_ART_PARA2_FIELD.index = 137
-SKILL_CFG_ART_PARA2_FIELD.label = 2
-SKILL_CFG_ART_PARA2_FIELD.has_default_value = false
-SKILL_CFG_ART_PARA2_FIELD.default_value = 0
-SKILL_CFG_ART_PARA2_FIELD.type = 5
-SKILL_CFG_ART_PARA2_FIELD.cpp_type = 1
-
-SKILL_CFG.name = "skill_cfg"
-SKILL_CFG.full_name = ".ftcfg.skill_cfg"
-SKILL_CFG.nested_types = {}
-SKILL_CFG.enum_types = {}
-SKILL_CFG.fields = {SKILL_CFG_ID_FIELD, SKILL_CFG_NAME_TIP_FIELD, SKILL_CFG_NAME_FIELD, SKILL_CFG_SKILL_LEVEL_FIELD, SKILL_CFG_PLAYER_LEVEL_FIELD, SKILL_CFG_LEVELUP_COST_FIELD, SKILL_CFG_NEXT_LEVEL_ID_FIELD, SKILL_CFG_SKILL_ICON_FIELD, SKILL_CFG_SKILL_PROF_FIELD, SKILL_CFG_TIPS2_FIELD, SKILL_CFG_TIPS_FIELD, SKILL_CFG_TIPS3_FIELD, SKILL_CFG_TIPS_PARA1_FIELD, SKILL_CFG_TIPS_PARA2_FIELD, SKILL_CFG_TIPS_PARA3_FIELD, SKILL_CFG_TIPS_PARA4_FIELD, SKILL_CFG_TIPS_PARA5_FIELD, SKILL_CFG_TIPS_PARA6_FIELD, SKILL_CFG_NEXT_SKILL_FIELD, SKILL_CFG_NEXT_CHANGE_SKILL_FIELD, SKILL_CFG_AUTO_SKILL_FIELD, SKILL_CFG_NEXT_SKILL_TIME_FIELD, SKILL_CFG_SKILL_TYPE_FIELD, SKILL_CFG_ENERGY_COST_TYPE_FIELD, SKILL_CFG_ENERGY_VALUE_FIELD, SKILL_CFG_MAX_ENERGY_VALUE_FIELD, SKILL_CFG_RET_ENERGY_VALUE_FIELD, SKILL_CFG_RET_HP_EFFECT_FIELD, SKILL_CFG_SHOW_PROGRESS_FIELD, SKILL_CFG_PROGRESS_WORD_FIELD, SKILL_CFG_IS_TRIGGER_PASSIVE_FIELD, SKILL_CFG_IS_PASSIVE_FIELD, SKILL_CFG_TRIGGER_TYPE_FIELD, SKILL_CFG_ACCELERATE_FIELD, SKILL_CFG_IS_CONCURRENCY_FIELD, SKILL_CFG_INT_CHANNEL_WHEN_BEATEN_FIELD, SKILL_CFG_IS_CHANNEL_FIELD, SKILL_CFG_CHANNEL_TIME_FIELD, SKILL_CFG_CAN_CANCEL_FIELD, SKILL_CFG_BASE_POS_FIELD, SKILL_CFG_TARGET_TYPE_FIELD, SKILL_CFG_REMOVE_BUFF_WHEN_CANCEL_FIELD, SKILL_CFG_WORK_WHEN_FIELD, SKILL_CFG_CD_GROUP_ID_FIELD, SKILL_CFG_CD_TIME_FIELD, SKILL_CFG_CD_NUM_FIELD, SKILL_CFG_CAST_DISTANCE_FIELD, SKILL_CFG_LOCKED_BY_SERVER_FIELD, SKILL_CFG_RANGE_TYPE_FIELD, SKILL_CFG_RANGE_PARA1_FIELD, SKILL_CFG_RANGE_PARA2_FIELD, SKILL_CFG_LOCK_TARGET_DISTANCE_FIELD, SKILL_CFG_LOCK_MAX_COUNT_FIELD, SKILL_CFG_CAST_SWING_TIME_FIELD, SKILL_CFG_CAST_STIFF_TIME_FIELD, SKILL_CFG_CAST_BACK_SWING_TIME_FIELD, SKILL_CFG_MAGIC_PERFORMANCE_ID_FIELD, SKILL_CFG_HIT_EFFECT_FIELD, SKILL_CFG_HIT_EFFECT_TIME_FIELD, SKILL_CFG_MOVE_TYPE1_FIELD, SKILL_CFG_MOVE_POINT1_FIELD, SKILL_CFG_ADJUST_DISTANCE1_FIELD, SKILL_CFG_MOVE_DISTANCE1_FIELD, SKILL_CFG_MOVE_TIME1_FIELD, SKILL_CFG_MOVE_TYPE2_FIELD, SKILL_CFG_MOVE_POINT2_FIELD, SKILL_CFG_ADJUST_DISTANCE2_FIELD, SKILL_CFG_MOVE_DISTANCE2_FIELD, SKILL_CFG_MOVE_TIME2_FIELD, SKILL_CFG_MOVE_TYPE3_FIELD, SKILL_CFG_MOVE_POINT3_FIELD, SKILL_CFG_ADJUST_DISTANCE3_FIELD, SKILL_CFG_MOVE_DISTANCE3_FIELD, SKILL_CFG_MOVE_TIME3_FIELD, SKILL_CFG_MOVE_TYPE4_FIELD, SKILL_CFG_MOVE_POINT4_FIELD, SKILL_CFG_ADJUST_DISTANCE4_FIELD, SKILL_CFG_MOVE_DISTANCE4_FIELD, SKILL_CFG_MOVE_TIME4_FIELD, SKILL_CFG_MOVE_TYPE5_FIELD, SKILL_CFG_MOVE_POINT5_FIELD, SKILL_CFG_ADJUST_DISTANCE5_FIELD, SKILL_CFG_MOVE_DISTANCE5_FIELD, SKILL_CFG_MOVE_TIME5_FIELD, SKILL_CFG_MOVE_TYPE6_FIELD, SKILL_CFG_MOVE_POINT6_FIELD, SKILL_CFG_ADJUST_DISTANCE6_FIELD, SKILL_CFG_MOVE_DISTANCE6_FIELD, SKILL_CFG_MOVE_TIME6_FIELD, SKILL_CFG_MOVE_TYPE7_FIELD, SKILL_CFG_MOVE_POINT7_FIELD, SKILL_CFG_ADJUST_DISTANCE7_FIELD, SKILL_CFG_MOVE_DISTANCE7_FIELD, SKILL_CFG_MOVE_TIME7_FIELD, SKILL_CFG_MOVE_TYPE8_FIELD, SKILL_CFG_MOVE_POINT8_FIELD, SKILL_CFG_ADJUST_DISTANCE8_FIELD, SKILL_CFG_MOVE_DISTANCE8_FIELD, SKILL_CFG_MOVE_TIME8_FIELD, SKILL_CFG_LOGIC_TYPE_1_FIELD, SKILL_CFG_LOGIC_TIME_1_FIELD, SKILL_CFG_LOGIC_ID_1_FIELD, SKILL_CFG_LOGIC_TYPE_2_FIELD, SKILL_CFG_LOGIC_TIME_2_FIELD, SKILL_CFG_LOGIC_ID_2_FIELD, SKILL_CFG_LOGIC_TYPE_3_FIELD, SKILL_CFG_LOGIC_TIME_3_FIELD, SKILL_CFG_LOGIC_ID_3_FIELD, SKILL_CFG_LOGIC_TYPE_4_FIELD, SKILL_CFG_LOGIC_TIME_4_FIELD, SKILL_CFG_LOGIC_ID_4_FIELD, SKILL_CFG_LOGIC_TYPE_5_FIELD, SKILL_CFG_LOGIC_TIME_5_FIELD, SKILL_CFG_LOGIC_ID_5_FIELD, SKILL_CFG_LOGIC_TYPE_6_FIELD, SKILL_CFG_LOGIC_TIME_6_FIELD, SKILL_CFG_LOGIC_ID_6_FIELD, SKILL_CFG_LOGIC_TYPE_7_FIELD, SKILL_CFG_LOGIC_TIME_7_FIELD, SKILL_CFG_LOGIC_ID_7_FIELD, SKILL_CFG_LOGIC_TYPE_8_FIELD, SKILL_CFG_LOGIC_TIME_8_FIELD, SKILL_CFG_LOGIC_ID_8_FIELD, SKILL_CFG_LOGIC_TYPE_9_FIELD, SKILL_CFG_LOGIC_TIME_9_FIELD, SKILL_CFG_LOGIC_ID_9_FIELD, SKILL_CFG_LOGIC_TYPE_10_FIELD, SKILL_CFG_LOGIC_TIME_10_FIELD, SKILL_CFG_LOGIC_ID_10_FIELD, SKILL_CFG_LOGIC_TYPE_11_FIELD, SKILL_CFG_LOGIC_TIME_11_FIELD, SKILL_CFG_LOGIC_ID_11_FIELD, SKILL_CFG_LOGIC_TYPE_12_FIELD, SKILL_CFG_LOGIC_TIME_12_FIELD, SKILL_CFG_LOGIC_ID_12_FIELD, SKILL_CFG_AFFECT_RANGE_TYPE_FIELD, SKILL_CFG_ART_PARA1_FIELD, SKILL_CFG_ART_PARA2_FIELD}
-SKILL_CFG.is_extendable = false
-SKILL_CFG.extensions = {}
-SKILL_CFGS_ITEMS_FIELD.name = "items"
-SKILL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.skill_cfgs.items"
-SKILL_CFGS_ITEMS_FIELD.number = 1
-SKILL_CFGS_ITEMS_FIELD.index = 0
-SKILL_CFGS_ITEMS_FIELD.label = 3
-SKILL_CFGS_ITEMS_FIELD.has_default_value = false
-SKILL_CFGS_ITEMS_FIELD.default_value = {}
-SKILL_CFGS_ITEMS_FIELD.message_type = SKILL_CFG
-SKILL_CFGS_ITEMS_FIELD.type = 11
-SKILL_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SKILL_CFGS.name = "skill_cfgs"
-SKILL_CFGS.full_name = ".ftcfg.skill_cfgs"
-SKILL_CFGS.nested_types = {}
-SKILL_CFGS.enum_types = {}
-SKILL_CFGS.fields = {SKILL_CFGS_ITEMS_FIELD}
-SKILL_CFGS.is_extendable = false
-SKILL_CFGS.extensions = {}
-SKILL_ID_CFG_ID_FIELD.name = "id"
-SKILL_ID_CFG_ID_FIELD.full_name = ".ftcfg.skill_id_cfg.id"
-SKILL_ID_CFG_ID_FIELD.number = 1
-SKILL_ID_CFG_ID_FIELD.index = 0
-SKILL_ID_CFG_ID_FIELD.label = 2
-SKILL_ID_CFG_ID_FIELD.has_default_value = false
-SKILL_ID_CFG_ID_FIELD.default_value = 0
-SKILL_ID_CFG_ID_FIELD.type = 5
-SKILL_ID_CFG_ID_FIELD.cpp_type = 1
-
-SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.name = "skill_id_array"
-SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.full_name = ".ftcfg.skill_id_cfg.skill_id_array"
-SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.number = 2
-SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.index = 1
-SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.label = 3
-SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.has_default_value = false
-SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.default_value = {}
-SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.type = 5
-SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD.cpp_type = 1
-
-SKILL_ID_CFG.name = "skill_id_cfg"
-SKILL_ID_CFG.full_name = ".ftcfg.skill_id_cfg"
-SKILL_ID_CFG.nested_types = {}
-SKILL_ID_CFG.enum_types = {}
-SKILL_ID_CFG.fields = {SKILL_ID_CFG_ID_FIELD, SKILL_ID_CFG_SKILL_ID_ARRAY_FIELD}
-SKILL_ID_CFG.is_extendable = false
-SKILL_ID_CFG.extensions = {}
-SKILL_ID_CFGS_ITEMS_FIELD.name = "items"
-SKILL_ID_CFGS_ITEMS_FIELD.full_name = ".ftcfg.skill_id_cfgs.items"
-SKILL_ID_CFGS_ITEMS_FIELD.number = 1
-SKILL_ID_CFGS_ITEMS_FIELD.index = 0
-SKILL_ID_CFGS_ITEMS_FIELD.label = 3
-SKILL_ID_CFGS_ITEMS_FIELD.has_default_value = false
-SKILL_ID_CFGS_ITEMS_FIELD.default_value = {}
-SKILL_ID_CFGS_ITEMS_FIELD.message_type = SKILL_ID_CFG
-SKILL_ID_CFGS_ITEMS_FIELD.type = 11
-SKILL_ID_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SKILL_ID_CFGS.name = "skill_id_cfgs"
-SKILL_ID_CFGS.full_name = ".ftcfg.skill_id_cfgs"
-SKILL_ID_CFGS.nested_types = {}
-SKILL_ID_CFGS.enum_types = {}
-SKILL_ID_CFGS.fields = {SKILL_ID_CFGS_ITEMS_FIELD}
-SKILL_ID_CFGS.is_extendable = false
-SKILL_ID_CFGS.extensions = {}
-SKILL_CONDITION_CFG_ID_FIELD.name = "id"
-SKILL_CONDITION_CFG_ID_FIELD.full_name = ".ftcfg.skill_condition_cfg.id"
-SKILL_CONDITION_CFG_ID_FIELD.number = 1
-SKILL_CONDITION_CFG_ID_FIELD.index = 0
-SKILL_CONDITION_CFG_ID_FIELD.label = 2
-SKILL_CONDITION_CFG_ID_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_ID_FIELD.default_value = 0
-SKILL_CONDITION_CFG_ID_FIELD.type = 5
-SKILL_CONDITION_CFG_ID_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_DESC_FIELD.name = "desc"
-SKILL_CONDITION_CFG_DESC_FIELD.full_name = ".ftcfg.skill_condition_cfg.desc"
-SKILL_CONDITION_CFG_DESC_FIELD.number = 2
-SKILL_CONDITION_CFG_DESC_FIELD.index = 1
-SKILL_CONDITION_CFG_DESC_FIELD.label = 2
-SKILL_CONDITION_CFG_DESC_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_DESC_FIELD.default_value = ""
-SKILL_CONDITION_CFG_DESC_FIELD.type = 9
-SKILL_CONDITION_CFG_DESC_FIELD.cpp_type = 9
-
-SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.name = "effect_target"
-SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.full_name = ".ftcfg.skill_condition_cfg.effect_target"
-SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.number = 3
-SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.index = 2
-SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.label = 2
-SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.default_value = nil
-SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.enum_type = config_predefine_pb.CONDITIONTARGETTYPE
-SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.type = 14
-SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD.cpp_type = 8
-
-SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.name = "range_type"
-SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.full_name = ".ftcfg.skill_condition_cfg.range_type"
-SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.number = 4
-SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.index = 3
-SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.label = 2
-SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.default_value = nil
-SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.enum_type = config_predefine_pb.EAREATYPE
-SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.type = 14
-SKILL_CONDITION_CFG_RANGE_TYPE_FIELD.cpp_type = 8
-
-SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.name = "range_angle"
-SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.full_name = ".ftcfg.skill_condition_cfg.range_angle"
-SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.number = 5
-SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.index = 4
-SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.label = 2
-SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.default_value = 0.0
-SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.type = 2
-SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD.cpp_type = 6
-
-SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.name = "range_offset_x"
-SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.full_name = ".ftcfg.skill_condition_cfg.range_offset_x"
-SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.number = 6
-SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.index = 5
-SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.label = 2
-SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.default_value = 0.0
-SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.type = 2
-SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD.cpp_type = 6
-
-SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.name = "range_offset_z"
-SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.full_name = ".ftcfg.skill_condition_cfg.range_offset_z"
-SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.number = 7
-SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.index = 6
-SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.label = 2
-SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.default_value = 0.0
-SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.type = 2
-SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD.cpp_type = 6
-
-SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.name = "range_para1"
-SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.full_name = ".ftcfg.skill_condition_cfg.range_para1"
-SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.number = 8
-SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.index = 7
-SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.label = 2
-SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.default_value = 0.0
-SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.type = 2
-SKILL_CONDITION_CFG_RANGE_PARA1_FIELD.cpp_type = 6
-
-SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.name = "range_para2"
-SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.full_name = ".ftcfg.skill_condition_cfg.range_para2"
-SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.number = 9
-SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.index = 8
-SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.label = 2
-SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.default_value = 0.0
-SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.type = 2
-SKILL_CONDITION_CFG_RANGE_PARA2_FIELD.cpp_type = 6
-
-SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.name = "entity_types"
-SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.full_name = ".ftcfg.skill_condition_cfg.entity_types"
-SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.number = 10
-SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.index = 9
-SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.label = 3
-SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.default_value = {}
-SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.type = 5
-SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.name = "include_target"
-SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.full_name = ".ftcfg.skill_condition_cfg.include_target"
-SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.number = 11
-SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.index = 10
-SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.label = 2
-SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.default_value = false
-SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.type = 8
-SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD.cpp_type = 7
-
-SKILL_CONDITION_CFG_TARGET_NUM_FIELD.name = "target_num"
-SKILL_CONDITION_CFG_TARGET_NUM_FIELD.full_name = ".ftcfg.skill_condition_cfg.target_num"
-SKILL_CONDITION_CFG_TARGET_NUM_FIELD.number = 12
-SKILL_CONDITION_CFG_TARGET_NUM_FIELD.index = 11
-SKILL_CONDITION_CFG_TARGET_NUM_FIELD.label = 2
-SKILL_CONDITION_CFG_TARGET_NUM_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_TARGET_NUM_FIELD.default_value = 0
-SKILL_CONDITION_CFG_TARGET_NUM_FIELD.type = 5
-SKILL_CONDITION_CFG_TARGET_NUM_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.name = "ignore_block"
-SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.full_name = ".ftcfg.skill_condition_cfg.ignore_block"
-SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.number = 13
-SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.index = 12
-SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.label = 2
-SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.default_value = false
-SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.type = 8
-SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD.cpp_type = 7
-
-SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.name = "ignore_dodge"
-SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.full_name = ".ftcfg.skill_condition_cfg.ignore_dodge"
-SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.number = 14
-SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.index = 13
-SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.label = 2
-SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.default_value = false
-SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.type = 8
-SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD.cpp_type = 7
-
-SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.name = "target_order_type"
-SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.full_name = ".ftcfg.skill_condition_cfg.target_order_type"
-SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.number = 15
-SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.index = 14
-SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.label = 2
-SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.default_value = nil
-SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.enum_type = config_predefine_pb.ECONDITIONORDERTYPE
-SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.type = 14
-SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD.cpp_type = 8
-
-SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.name = "repeat_num"
-SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.full_name = ".ftcfg.skill_condition_cfg.repeat_num"
-SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.number = 16
-SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.index = 15
-SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.label = 2
-SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.default_value = 0
-SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.type = 5
-SKILL_CONDITION_CFG_REPEAT_NUM_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_HIT_RATE_FIELD.name = "hit_rate"
-SKILL_CONDITION_CFG_HIT_RATE_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_rate"
-SKILL_CONDITION_CFG_HIT_RATE_FIELD.number = 17
-SKILL_CONDITION_CFG_HIT_RATE_FIELD.index = 16
-SKILL_CONDITION_CFG_HIT_RATE_FIELD.label = 2
-SKILL_CONDITION_CFG_HIT_RATE_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_HIT_RATE_FIELD.default_value = 0.0
-SKILL_CONDITION_CFG_HIT_RATE_FIELD.type = 2
-SKILL_CONDITION_CFG_HIT_RATE_FIELD.cpp_type = 6
-
-SKILL_CONDITION_CFG_ATK_LV_FIELD.name = "atk_lv"
-SKILL_CONDITION_CFG_ATK_LV_FIELD.full_name = ".ftcfg.skill_condition_cfg.atk_lv"
-SKILL_CONDITION_CFG_ATK_LV_FIELD.number = 18
-SKILL_CONDITION_CFG_ATK_LV_FIELD.index = 17
-SKILL_CONDITION_CFG_ATK_LV_FIELD.label = 2
-SKILL_CONDITION_CFG_ATK_LV_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_ATK_LV_FIELD.default_value = 0
-SKILL_CONDITION_CFG_ATK_LV_FIELD.type = 5
-SKILL_CONDITION_CFG_ATK_LV_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_AM_BEATEN_FIELD.name = "am_beaten"
-SKILL_CONDITION_CFG_AM_BEATEN_FIELD.full_name = ".ftcfg.skill_condition_cfg.am_beaten"
-SKILL_CONDITION_CFG_AM_BEATEN_FIELD.number = 19
-SKILL_CONDITION_CFG_AM_BEATEN_FIELD.index = 18
-SKILL_CONDITION_CFG_AM_BEATEN_FIELD.label = 2
-SKILL_CONDITION_CFG_AM_BEATEN_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_AM_BEATEN_FIELD.default_value = ""
-SKILL_CONDITION_CFG_AM_BEATEN_FIELD.type = 9
-SKILL_CONDITION_CFG_AM_BEATEN_FIELD.cpp_type = 9
-
-SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.name = "am_beaten_eff"
-SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.full_name = ".ftcfg.skill_condition_cfg.am_beaten_eff"
-SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.number = 20
-SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.index = 19
-SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.label = 2
-SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.default_value = ""
-SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.type = 9
-SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD.cpp_type = 9
-
-SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.name = "beaten_time"
-SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.full_name = ".ftcfg.skill_condition_cfg.beaten_time"
-SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.number = 21
-SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.index = 20
-SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.label = 2
-SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.default_value = 0
-SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.type = 5
-SKILL_CONDITION_CFG_BEATEN_TIME_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.name = "beat_back_type"
-SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.full_name = ".ftcfg.skill_condition_cfg.beat_back_type"
-SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.number = 22
-SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.index = 21
-SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.label = 2
-SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.default_value = 0
-SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.type = 5
-SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_BEAT_DIS_FIELD.name = "beat_dis"
-SKILL_CONDITION_CFG_BEAT_DIS_FIELD.full_name = ".ftcfg.skill_condition_cfg.beat_dis"
-SKILL_CONDITION_CFG_BEAT_DIS_FIELD.number = 23
-SKILL_CONDITION_CFG_BEAT_DIS_FIELD.index = 22
-SKILL_CONDITION_CFG_BEAT_DIS_FIELD.label = 2
-SKILL_CONDITION_CFG_BEAT_DIS_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_BEAT_DIS_FIELD.default_value = 0.0
-SKILL_CONDITION_CFG_BEAT_DIS_FIELD.type = 2
-SKILL_CONDITION_CFG_BEAT_DIS_FIELD.cpp_type = 6
-
-SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.name = "beat_back_move_time"
-SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.full_name = ".ftcfg.skill_condition_cfg.beat_back_move_time"
-SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.number = 24
-SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.index = 23
-SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.label = 2
-SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.default_value = 0
-SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.type = 5
-SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_AM_DEAD_FIELD.name = "am_dead"
-SKILL_CONDITION_CFG_AM_DEAD_FIELD.full_name = ".ftcfg.skill_condition_cfg.am_dead"
-SKILL_CONDITION_CFG_AM_DEAD_FIELD.number = 25
-SKILL_CONDITION_CFG_AM_DEAD_FIELD.index = 24
-SKILL_CONDITION_CFG_AM_DEAD_FIELD.label = 2
-SKILL_CONDITION_CFG_AM_DEAD_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_AM_DEAD_FIELD.default_value = 0
-SKILL_CONDITION_CFG_AM_DEAD_FIELD.type = 5
-SKILL_CONDITION_CFG_AM_DEAD_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.name = "dead_back_type"
-SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.full_name = ".ftcfg.skill_condition_cfg.dead_back_type"
-SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.number = 26
-SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.index = 25
-SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.label = 2
-SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.default_value = 0
-SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.type = 5
-SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_DEAD_DIS_FIELD.name = "dead_dis"
-SKILL_CONDITION_CFG_DEAD_DIS_FIELD.full_name = ".ftcfg.skill_condition_cfg.dead_dis"
-SKILL_CONDITION_CFG_DEAD_DIS_FIELD.number = 27
-SKILL_CONDITION_CFG_DEAD_DIS_FIELD.index = 26
-SKILL_CONDITION_CFG_DEAD_DIS_FIELD.label = 2
-SKILL_CONDITION_CFG_DEAD_DIS_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_DEAD_DIS_FIELD.default_value = 0.0
-SKILL_CONDITION_CFG_DEAD_DIS_FIELD.type = 2
-SKILL_CONDITION_CFG_DEAD_DIS_FIELD.cpp_type = 6
-
-SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.name = "dead_back_move_time"
-SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.full_name = ".ftcfg.skill_condition_cfg.dead_back_move_time"
-SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.number = 28
-SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.index = 27
-SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.label = 2
-SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.default_value = 0
-SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.type = 5
-SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.name = "self_effect_1"
-SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.full_name = ".ftcfg.skill_condition_cfg.self_effect_1"
-SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.number = 29
-SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.index = 28
-SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.label = 2
-SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.default_value = 0
-SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.type = 5
-SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.name = "self_hit_buff1"
-SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.full_name = ".ftcfg.skill_condition_cfg.self_hit_buff1"
-SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.number = 30
-SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.index = 29
-SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.label = 2
-SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.default_value = 0
-SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.type = 5
-SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.name = "self_hit_buff_chance1"
-SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.full_name = ".ftcfg.skill_condition_cfg.self_hit_buff_chance1"
-SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.number = 31
-SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.index = 30
-SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.label = 2
-SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.default_value = 0.0
-SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.type = 2
-SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD.cpp_type = 6
-
-SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.name = "hit_effect_1"
-SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_effect_1"
-SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.number = 32
-SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.index = 31
-SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.label = 2
-SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.default_value = 0
-SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.type = 5
-SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.name = "hit_effect_2"
-SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_effect_2"
-SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.number = 33
-SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.index = 32
-SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.label = 2
-SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.default_value = 0
-SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.type = 5
-SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.name = "hit_effect_3"
-SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_effect_3"
-SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.number = 34
-SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.index = 33
-SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.label = 2
-SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.default_value = 0
-SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.type = 5
-SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.name = "hit_buff1"
-SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_buff1"
-SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.number = 35
-SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.index = 34
-SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.label = 2
-SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.default_value = 0
-SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.type = 5
-SKILL_CONDITION_CFG_HIT_BUFF1_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.name = "hit_buff_chance1"
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_buff_chance1"
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.number = 36
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.index = 35
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.label = 2
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.default_value = 0.0
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.type = 2
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD.cpp_type = 6
-
-SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.name = "hit_buff2"
-SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_buff2"
-SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.number = 37
-SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.index = 36
-SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.label = 2
-SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.default_value = 0
-SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.type = 5
-SKILL_CONDITION_CFG_HIT_BUFF2_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.name = "hit_buff_chance2"
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_buff_chance2"
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.number = 38
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.index = 37
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.label = 2
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.default_value = 0.0
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.type = 2
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD.cpp_type = 6
-
-SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.name = "hit_buff3"
-SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_buff3"
-SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.number = 39
-SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.index = 38
-SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.label = 2
-SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.default_value = 0
-SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.type = 5
-SKILL_CONDITION_CFG_HIT_BUFF3_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.name = "hit_buff_chance3"
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.full_name = ".ftcfg.skill_condition_cfg.hit_buff_chance3"
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.number = 40
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.index = 39
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.label = 2
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.default_value = 0.0
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.type = 2
-SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD.cpp_type = 6
-
-SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.name = "crit_effect"
-SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.full_name = ".ftcfg.skill_condition_cfg.crit_effect"
-SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.number = 41
-SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.index = 40
-SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.label = 2
-SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.default_value = 0
-SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.type = 5
-SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.name = "dead_strike_effect"
-SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.full_name = ".ftcfg.skill_condition_cfg.dead_strike_effect"
-SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.number = 42
-SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.index = 41
-SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.label = 2
-SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.default_value = 0
-SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.type = 5
-SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.name = "buff_when_crit"
-SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.full_name = ".ftcfg.skill_condition_cfg.buff_when_crit"
-SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.number = 43
-SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.index = 42
-SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.label = 2
-SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.default_value = 0
-SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.type = 5
-SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.name = "buff_chance_when_crit"
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.full_name = ".ftcfg.skill_condition_cfg.buff_chance_when_crit"
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.number = 44
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.index = 43
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.label = 2
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.default_value = 0.0
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.type = 2
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD.cpp_type = 6
-
-SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.name = "buff_when_deadstrike"
-SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.full_name = ".ftcfg.skill_condition_cfg.buff_when_deadstrike"
-SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.number = 45
-SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.index = 44
-SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.label = 2
-SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.default_value = 0
-SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.type = 5
-SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD.cpp_type = 1
-
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.name = "buff_chance_when_deadstrike"
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.full_name = ".ftcfg.skill_condition_cfg.buff_chance_when_deadstrike"
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.number = 46
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.index = 45
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.label = 2
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.has_default_value = false
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.default_value = 0.0
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.type = 2
-SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD.cpp_type = 6
-
-SKILL_CONDITION_CFG.name = "skill_condition_cfg"
-SKILL_CONDITION_CFG.full_name = ".ftcfg.skill_condition_cfg"
-SKILL_CONDITION_CFG.nested_types = {}
-SKILL_CONDITION_CFG.enum_types = {}
-SKILL_CONDITION_CFG.fields = {SKILL_CONDITION_CFG_ID_FIELD, SKILL_CONDITION_CFG_DESC_FIELD, SKILL_CONDITION_CFG_EFFECT_TARGET_FIELD, SKILL_CONDITION_CFG_RANGE_TYPE_FIELD, SKILL_CONDITION_CFG_RANGE_ANGLE_FIELD, SKILL_CONDITION_CFG_RANGE_OFFSET_X_FIELD, SKILL_CONDITION_CFG_RANGE_OFFSET_Z_FIELD, SKILL_CONDITION_CFG_RANGE_PARA1_FIELD, SKILL_CONDITION_CFG_RANGE_PARA2_FIELD, SKILL_CONDITION_CFG_ENTITY_TYPES_FIELD, SKILL_CONDITION_CFG_INCLUDE_TARGET_FIELD, SKILL_CONDITION_CFG_TARGET_NUM_FIELD, SKILL_CONDITION_CFG_IGNORE_BLOCK_FIELD, SKILL_CONDITION_CFG_IGNORE_DODGE_FIELD, SKILL_CONDITION_CFG_TARGET_ORDER_TYPE_FIELD, SKILL_CONDITION_CFG_REPEAT_NUM_FIELD, SKILL_CONDITION_CFG_HIT_RATE_FIELD, SKILL_CONDITION_CFG_ATK_LV_FIELD, SKILL_CONDITION_CFG_AM_BEATEN_FIELD, SKILL_CONDITION_CFG_AM_BEATEN_EFF_FIELD, SKILL_CONDITION_CFG_BEATEN_TIME_FIELD, SKILL_CONDITION_CFG_BEAT_BACK_TYPE_FIELD, SKILL_CONDITION_CFG_BEAT_DIS_FIELD, SKILL_CONDITION_CFG_BEAT_BACK_MOVE_TIME_FIELD, SKILL_CONDITION_CFG_AM_DEAD_FIELD, SKILL_CONDITION_CFG_DEAD_BACK_TYPE_FIELD, SKILL_CONDITION_CFG_DEAD_DIS_FIELD, SKILL_CONDITION_CFG_DEAD_BACK_MOVE_TIME_FIELD, SKILL_CONDITION_CFG_SELF_EFFECT_1_FIELD, SKILL_CONDITION_CFG_SELF_HIT_BUFF1_FIELD, SKILL_CONDITION_CFG_SELF_HIT_BUFF_CHANCE1_FIELD, SKILL_CONDITION_CFG_HIT_EFFECT_1_FIELD, SKILL_CONDITION_CFG_HIT_EFFECT_2_FIELD, SKILL_CONDITION_CFG_HIT_EFFECT_3_FIELD, SKILL_CONDITION_CFG_HIT_BUFF1_FIELD, SKILL_CONDITION_CFG_HIT_BUFF_CHANCE1_FIELD, SKILL_CONDITION_CFG_HIT_BUFF2_FIELD, SKILL_CONDITION_CFG_HIT_BUFF_CHANCE2_FIELD, SKILL_CONDITION_CFG_HIT_BUFF3_FIELD, SKILL_CONDITION_CFG_HIT_BUFF_CHANCE3_FIELD, SKILL_CONDITION_CFG_CRIT_EFFECT_FIELD, SKILL_CONDITION_CFG_DEAD_STRIKE_EFFECT_FIELD, SKILL_CONDITION_CFG_BUFF_WHEN_CRIT_FIELD, SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_CRIT_FIELD, SKILL_CONDITION_CFG_BUFF_WHEN_DEADSTRIKE_FIELD, SKILL_CONDITION_CFG_BUFF_CHANCE_WHEN_DEADSTRIKE_FIELD}
-SKILL_CONDITION_CFG.is_extendable = false
-SKILL_CONDITION_CFG.extensions = {}
-SKILL_CONDITION_CFGS_ITEMS_FIELD.name = "items"
-SKILL_CONDITION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.skill_condition_cfgs.items"
-SKILL_CONDITION_CFGS_ITEMS_FIELD.number = 1
-SKILL_CONDITION_CFGS_ITEMS_FIELD.index = 0
-SKILL_CONDITION_CFGS_ITEMS_FIELD.label = 3
-SKILL_CONDITION_CFGS_ITEMS_FIELD.has_default_value = false
-SKILL_CONDITION_CFGS_ITEMS_FIELD.default_value = {}
-SKILL_CONDITION_CFGS_ITEMS_FIELD.message_type = SKILL_CONDITION_CFG
-SKILL_CONDITION_CFGS_ITEMS_FIELD.type = 11
-SKILL_CONDITION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SKILL_CONDITION_CFGS.name = "skill_condition_cfgs"
-SKILL_CONDITION_CFGS.full_name = ".ftcfg.skill_condition_cfgs"
-SKILL_CONDITION_CFGS.nested_types = {}
-SKILL_CONDITION_CFGS.enum_types = {}
-SKILL_CONDITION_CFGS.fields = {SKILL_CONDITION_CFGS_ITEMS_FIELD}
-SKILL_CONDITION_CFGS.is_extendable = false
-SKILL_CONDITION_CFGS.extensions = {}
-TEST_CFG_ID_FIELD.name = "id"
-TEST_CFG_ID_FIELD.full_name = ".ftcfg.test_cfg.id"
-TEST_CFG_ID_FIELD.number = 1
-TEST_CFG_ID_FIELD.index = 0
-TEST_CFG_ID_FIELD.label = 2
-TEST_CFG_ID_FIELD.has_default_value = false
-TEST_CFG_ID_FIELD.default_value = 0
-TEST_CFG_ID_FIELD.type = 5
-TEST_CFG_ID_FIELD.cpp_type = 1
-
-TEST_CFG_TESTSTRUCT1_FIELD.name = "testStruct1"
-TEST_CFG_TESTSTRUCT1_FIELD.full_name = ".ftcfg.test_cfg.testStruct1"
-TEST_CFG_TESTSTRUCT1_FIELD.number = 2
-TEST_CFG_TESTSTRUCT1_FIELD.index = 1
-TEST_CFG_TESTSTRUCT1_FIELD.label = 1
-TEST_CFG_TESTSTRUCT1_FIELD.has_default_value = false
-TEST_CFG_TESTSTRUCT1_FIELD.default_value = nil
-TEST_CFG_TESTSTRUCT1_FIELD.message_type = config_predefine_pb.TESTSTRUCT
-TEST_CFG_TESTSTRUCT1_FIELD.type = 11
-TEST_CFG_TESTSTRUCT1_FIELD.cpp_type = 10
-
-TEST_CFG_TES_FIELD.name = "tes"
-TEST_CFG_TES_FIELD.full_name = ".ftcfg.test_cfg.tes"
-TEST_CFG_TES_FIELD.number = 3
-TEST_CFG_TES_FIELD.index = 2
-TEST_CFG_TES_FIELD.label = 3
-TEST_CFG_TES_FIELD.has_default_value = false
-TEST_CFG_TES_FIELD.default_value = {}
-TEST_CFG_TES_FIELD.enum_type = config_predefine_pb.TESTENUM
-TEST_CFG_TES_FIELD.type = 14
-TEST_CFG_TES_FIELD.cpp_type = 8
-
-TEST_CFG.name = "test_cfg"
-TEST_CFG.full_name = ".ftcfg.test_cfg"
-TEST_CFG.nested_types = {}
-TEST_CFG.enum_types = {}
-TEST_CFG.fields = {TEST_CFG_ID_FIELD, TEST_CFG_TESTSTRUCT1_FIELD, TEST_CFG_TES_FIELD}
-TEST_CFG.is_extendable = false
-TEST_CFG.extensions = {}
-TEST_CFGS_ITEMS_FIELD.name = "items"
-TEST_CFGS_ITEMS_FIELD.full_name = ".ftcfg.test_cfgs.items"
-TEST_CFGS_ITEMS_FIELD.number = 1
-TEST_CFGS_ITEMS_FIELD.index = 0
-TEST_CFGS_ITEMS_FIELD.label = 3
-TEST_CFGS_ITEMS_FIELD.has_default_value = false
-TEST_CFGS_ITEMS_FIELD.default_value = {}
-TEST_CFGS_ITEMS_FIELD.message_type = TEST_CFG
-TEST_CFGS_ITEMS_FIELD.type = 11
-TEST_CFGS_ITEMS_FIELD.cpp_type = 10
-
-TEST_CFGS.name = "test_cfgs"
-TEST_CFGS.full_name = ".ftcfg.test_cfgs"
-TEST_CFGS.nested_types = {}
-TEST_CFGS.enum_types = {}
-TEST_CFGS.fields = {TEST_CFGS_ITEMS_FIELD}
-TEST_CFGS.is_extendable = false
-TEST_CFGS.extensions = {}
-ITEM_CFG_ID_FIELD.name = "id"
-ITEM_CFG_ID_FIELD.full_name = ".ftcfg.item_cfg.id"
-ITEM_CFG_ID_FIELD.number = 1
-ITEM_CFG_ID_FIELD.index = 0
-ITEM_CFG_ID_FIELD.label = 2
-ITEM_CFG_ID_FIELD.has_default_value = false
-ITEM_CFG_ID_FIELD.default_value = 0
-ITEM_CFG_ID_FIELD.type = 13
-ITEM_CFG_ID_FIELD.cpp_type = 3
-
-ITEM_CFG_ITEM_NAME_FIELD.name = "item_name"
-ITEM_CFG_ITEM_NAME_FIELD.full_name = ".ftcfg.item_cfg.item_name"
-ITEM_CFG_ITEM_NAME_FIELD.number = 2
-ITEM_CFG_ITEM_NAME_FIELD.index = 1
-ITEM_CFG_ITEM_NAME_FIELD.label = 2
-ITEM_CFG_ITEM_NAME_FIELD.has_default_value = false
-ITEM_CFG_ITEM_NAME_FIELD.default_value = ""
-ITEM_CFG_ITEM_NAME_FIELD.type = 9
-ITEM_CFG_ITEM_NAME_FIELD.cpp_type = 9
-
-ITEM_CFG_FORMULA_ID_FIELD.name = "formula_id"
-ITEM_CFG_FORMULA_ID_FIELD.full_name = ".ftcfg.item_cfg.formula_id"
-ITEM_CFG_FORMULA_ID_FIELD.number = 3
-ITEM_CFG_FORMULA_ID_FIELD.index = 2
-ITEM_CFG_FORMULA_ID_FIELD.label = 2
-ITEM_CFG_FORMULA_ID_FIELD.has_default_value = false
-ITEM_CFG_FORMULA_ID_FIELD.default_value = 0
-ITEM_CFG_FORMULA_ID_FIELD.type = 5
-ITEM_CFG_FORMULA_ID_FIELD.cpp_type = 1
-
-ITEM_CFG_ITEM_DESC_FIELD.name = "item_desc"
-ITEM_CFG_ITEM_DESC_FIELD.full_name = ".ftcfg.item_cfg.item_desc"
-ITEM_CFG_ITEM_DESC_FIELD.number = 4
-ITEM_CFG_ITEM_DESC_FIELD.index = 3
-ITEM_CFG_ITEM_DESC_FIELD.label = 2
-ITEM_CFG_ITEM_DESC_FIELD.has_default_value = false
-ITEM_CFG_ITEM_DESC_FIELD.default_value = ""
-ITEM_CFG_ITEM_DESC_FIELD.type = 9
-ITEM_CFG_ITEM_DESC_FIELD.cpp_type = 9
-
-ITEM_CFG_STACK_MAX_FIELD.name = "stack_max"
-ITEM_CFG_STACK_MAX_FIELD.full_name = ".ftcfg.item_cfg.stack_max"
-ITEM_CFG_STACK_MAX_FIELD.number = 5
-ITEM_CFG_STACK_MAX_FIELD.index = 4
-ITEM_CFG_STACK_MAX_FIELD.label = 2
-ITEM_CFG_STACK_MAX_FIELD.has_default_value = false
-ITEM_CFG_STACK_MAX_FIELD.default_value = 0
-ITEM_CFG_STACK_MAX_FIELD.type = 5
-ITEM_CFG_STACK_MAX_FIELD.cpp_type = 1
-
-ITEM_CFG_NEED_LEVEL_FIELD.name = "need_level"
-ITEM_CFG_NEED_LEVEL_FIELD.full_name = ".ftcfg.item_cfg.need_level"
-ITEM_CFG_NEED_LEVEL_FIELD.number = 6
-ITEM_CFG_NEED_LEVEL_FIELD.index = 5
-ITEM_CFG_NEED_LEVEL_FIELD.label = 2
-ITEM_CFG_NEED_LEVEL_FIELD.has_default_value = false
-ITEM_CFG_NEED_LEVEL_FIELD.default_value = 0
-ITEM_CFG_NEED_LEVEL_FIELD.type = 5
-ITEM_CFG_NEED_LEVEL_FIELD.cpp_type = 1
-
-ITEM_CFG_NEED_PROF_FIELD.name = "need_prof"
-ITEM_CFG_NEED_PROF_FIELD.full_name = ".ftcfg.item_cfg.need_prof"
-ITEM_CFG_NEED_PROF_FIELD.number = 7
-ITEM_CFG_NEED_PROF_FIELD.index = 6
-ITEM_CFG_NEED_PROF_FIELD.label = 2
-ITEM_CFG_NEED_PROF_FIELD.has_default_value = false
-ITEM_CFG_NEED_PROF_FIELD.default_value = nil
-ITEM_CFG_NEED_PROF_FIELD.enum_type = config_predefine_pb.EPROFTYPE
-ITEM_CFG_NEED_PROF_FIELD.type = 14
-ITEM_CFG_NEED_PROF_FIELD.cpp_type = 8
-
-ITEM_CFG_ITEM_TYPE_FIELD.name = "item_type"
-ITEM_CFG_ITEM_TYPE_FIELD.full_name = ".ftcfg.item_cfg.item_type"
-ITEM_CFG_ITEM_TYPE_FIELD.number = 8
-ITEM_CFG_ITEM_TYPE_FIELD.index = 7
-ITEM_CFG_ITEM_TYPE_FIELD.label = 2
-ITEM_CFG_ITEM_TYPE_FIELD.has_default_value = false
-ITEM_CFG_ITEM_TYPE_FIELD.default_value = nil
-ITEM_CFG_ITEM_TYPE_FIELD.enum_type = config_predefine_pb.EITEMTYPE
-ITEM_CFG_ITEM_TYPE_FIELD.type = 14
-ITEM_CFG_ITEM_TYPE_FIELD.cpp_type = 8
-
-ITEM_CFG_ITEM_SUB_TYPE_FIELD.name = "item_sub_type"
-ITEM_CFG_ITEM_SUB_TYPE_FIELD.full_name = ".ftcfg.item_cfg.item_sub_type"
-ITEM_CFG_ITEM_SUB_TYPE_FIELD.number = 9
-ITEM_CFG_ITEM_SUB_TYPE_FIELD.index = 8
-ITEM_CFG_ITEM_SUB_TYPE_FIELD.label = 2
-ITEM_CFG_ITEM_SUB_TYPE_FIELD.has_default_value = false
-ITEM_CFG_ITEM_SUB_TYPE_FIELD.default_value = 0
-ITEM_CFG_ITEM_SUB_TYPE_FIELD.type = 5
-ITEM_CFG_ITEM_SUB_TYPE_FIELD.cpp_type = 1
-
-ITEM_CFG_ITEM_PART_FIELD.name = "item_part"
-ITEM_CFG_ITEM_PART_FIELD.full_name = ".ftcfg.item_cfg.item_part"
-ITEM_CFG_ITEM_PART_FIELD.number = 10
-ITEM_CFG_ITEM_PART_FIELD.index = 9
-ITEM_CFG_ITEM_PART_FIELD.label = 3
-ITEM_CFG_ITEM_PART_FIELD.has_default_value = false
-ITEM_CFG_ITEM_PART_FIELD.default_value = {}
-ITEM_CFG_ITEM_PART_FIELD.type = 5
-ITEM_CFG_ITEM_PART_FIELD.cpp_type = 1
-
-ITEM_CFG_DISPLAY_TYPE_FIELD.name = "display_type"
-ITEM_CFG_DISPLAY_TYPE_FIELD.full_name = ".ftcfg.item_cfg.display_type"
-ITEM_CFG_DISPLAY_TYPE_FIELD.number = 11
-ITEM_CFG_DISPLAY_TYPE_FIELD.index = 10
-ITEM_CFG_DISPLAY_TYPE_FIELD.label = 2
-ITEM_CFG_DISPLAY_TYPE_FIELD.has_default_value = false
-ITEM_CFG_DISPLAY_TYPE_FIELD.default_value = 0
-ITEM_CFG_DISPLAY_TYPE_FIELD.type = 5
-ITEM_CFG_DISPLAY_TYPE_FIELD.cpp_type = 1
-
-ITEM_CFG_ITEM_COLOR_FIELD.name = "item_color"
-ITEM_CFG_ITEM_COLOR_FIELD.full_name = ".ftcfg.item_cfg.item_color"
-ITEM_CFG_ITEM_COLOR_FIELD.number = 12
-ITEM_CFG_ITEM_COLOR_FIELD.index = 11
-ITEM_CFG_ITEM_COLOR_FIELD.label = 2
-ITEM_CFG_ITEM_COLOR_FIELD.has_default_value = false
-ITEM_CFG_ITEM_COLOR_FIELD.default_value = nil
-ITEM_CFG_ITEM_COLOR_FIELD.enum_type = config_predefine_pb.EITEMCOLOR
-ITEM_CFG_ITEM_COLOR_FIELD.type = 14
-ITEM_CFG_ITEM_COLOR_FIELD.cpp_type = 8
-
-ITEM_CFG_ITEM_ICON_FIELD.name = "item_icon"
-ITEM_CFG_ITEM_ICON_FIELD.full_name = ".ftcfg.item_cfg.item_icon"
-ITEM_CFG_ITEM_ICON_FIELD.number = 13
-ITEM_CFG_ITEM_ICON_FIELD.index = 12
-ITEM_CFG_ITEM_ICON_FIELD.label = 2
-ITEM_CFG_ITEM_ICON_FIELD.has_default_value = false
-ITEM_CFG_ITEM_ICON_FIELD.default_value = ""
-ITEM_CFG_ITEM_ICON_FIELD.type = 9
-ITEM_CFG_ITEM_ICON_FIELD.cpp_type = 9
-
-ITEM_CFG_ITEM_MARK_FIELD.name = "item_mark"
-ITEM_CFG_ITEM_MARK_FIELD.full_name = ".ftcfg.item_cfg.item_mark"
-ITEM_CFG_ITEM_MARK_FIELD.number = 14
-ITEM_CFG_ITEM_MARK_FIELD.index = 13
-ITEM_CFG_ITEM_MARK_FIELD.label = 2
-ITEM_CFG_ITEM_MARK_FIELD.has_default_value = false
-ITEM_CFG_ITEM_MARK_FIELD.default_value = 0
-ITEM_CFG_ITEM_MARK_FIELD.type = 5
-ITEM_CFG_ITEM_MARK_FIELD.cpp_type = 1
-
-ITEM_CFG_OWN_MAX_FIELD.name = "own_max"
-ITEM_CFG_OWN_MAX_FIELD.full_name = ".ftcfg.item_cfg.own_max"
-ITEM_CFG_OWN_MAX_FIELD.number = 15
-ITEM_CFG_OWN_MAX_FIELD.index = 14
-ITEM_CFG_OWN_MAX_FIELD.label = 2
-ITEM_CFG_OWN_MAX_FIELD.has_default_value = false
-ITEM_CFG_OWN_MAX_FIELD.default_value = 0
-ITEM_CFG_OWN_MAX_FIELD.type = 13
-ITEM_CFG_OWN_MAX_FIELD.cpp_type = 3
-
-ITEM_CFG_COULD_TRADE_FIELD.name = "could_trade"
-ITEM_CFG_COULD_TRADE_FIELD.full_name = ".ftcfg.item_cfg.could_trade"
-ITEM_CFG_COULD_TRADE_FIELD.number = 16
-ITEM_CFG_COULD_TRADE_FIELD.index = 15
-ITEM_CFG_COULD_TRADE_FIELD.label = 2
-ITEM_CFG_COULD_TRADE_FIELD.has_default_value = false
-ITEM_CFG_COULD_TRADE_FIELD.default_value = 0
-ITEM_CFG_COULD_TRADE_FIELD.type = 5
-ITEM_CFG_COULD_TRADE_FIELD.cpp_type = 1
-
-ITEM_CFG_TRADE_COOLDOWN_FIELD.name = "trade_cooldown"
-ITEM_CFG_TRADE_COOLDOWN_FIELD.full_name = ".ftcfg.item_cfg.trade_cooldown"
-ITEM_CFG_TRADE_COOLDOWN_FIELD.number = 17
-ITEM_CFG_TRADE_COOLDOWN_FIELD.index = 16
-ITEM_CFG_TRADE_COOLDOWN_FIELD.label = 2
-ITEM_CFG_TRADE_COOLDOWN_FIELD.has_default_value = false
-ITEM_CFG_TRADE_COOLDOWN_FIELD.default_value = 0
-ITEM_CFG_TRADE_COOLDOWN_FIELD.type = 5
-ITEM_CFG_TRADE_COOLDOWN_FIELD.cpp_type = 1
-
-ITEM_CFG_COULD_SELL_FIELD.name = "could_sell"
-ITEM_CFG_COULD_SELL_FIELD.full_name = ".ftcfg.item_cfg.could_sell"
-ITEM_CFG_COULD_SELL_FIELD.number = 18
-ITEM_CFG_COULD_SELL_FIELD.index = 17
-ITEM_CFG_COULD_SELL_FIELD.label = 2
-ITEM_CFG_COULD_SELL_FIELD.has_default_value = false
-ITEM_CFG_COULD_SELL_FIELD.default_value = 0
-ITEM_CFG_COULD_SELL_FIELD.type = 5
-ITEM_CFG_COULD_SELL_FIELD.cpp_type = 1
-
-ITEM_CFG_SELL_COST_TYPE_FIELD.name = "sell_cost_type"
-ITEM_CFG_SELL_COST_TYPE_FIELD.full_name = ".ftcfg.item_cfg.sell_cost_type"
-ITEM_CFG_SELL_COST_TYPE_FIELD.number = 19
-ITEM_CFG_SELL_COST_TYPE_FIELD.index = 18
-ITEM_CFG_SELL_COST_TYPE_FIELD.label = 2
-ITEM_CFG_SELL_COST_TYPE_FIELD.has_default_value = false
-ITEM_CFG_SELL_COST_TYPE_FIELD.default_value = 0
-ITEM_CFG_SELL_COST_TYPE_FIELD.type = 5
-ITEM_CFG_SELL_COST_TYPE_FIELD.cpp_type = 1
-
-ITEM_CFG_SELL_COST_NUM_FIELD.name = "sell_cost_num"
-ITEM_CFG_SELL_COST_NUM_FIELD.full_name = ".ftcfg.item_cfg.sell_cost_num"
-ITEM_CFG_SELL_COST_NUM_FIELD.number = 20
-ITEM_CFG_SELL_COST_NUM_FIELD.index = 19
-ITEM_CFG_SELL_COST_NUM_FIELD.label = 2
-ITEM_CFG_SELL_COST_NUM_FIELD.has_default_value = false
-ITEM_CFG_SELL_COST_NUM_FIELD.default_value = 0
-ITEM_CFG_SELL_COST_NUM_FIELD.type = 5
-ITEM_CFG_SELL_COST_NUM_FIELD.cpp_type = 1
-
-ITEM_CFG_COULD_USE_FIELD.name = "could_use"
-ITEM_CFG_COULD_USE_FIELD.full_name = ".ftcfg.item_cfg.could_use"
-ITEM_CFG_COULD_USE_FIELD.number = 21
-ITEM_CFG_COULD_USE_FIELD.index = 20
-ITEM_CFG_COULD_USE_FIELD.label = 2
-ITEM_CFG_COULD_USE_FIELD.has_default_value = false
-ITEM_CFG_COULD_USE_FIELD.default_value = 0
-ITEM_CFG_COULD_USE_FIELD.type = 5
-ITEM_CFG_COULD_USE_FIELD.cpp_type = 1
-
-ITEM_CFG_COULD_WINDOWUSE_FIELD.name = "could_windowuse"
-ITEM_CFG_COULD_WINDOWUSE_FIELD.full_name = ".ftcfg.item_cfg.could_windowuse"
-ITEM_CFG_COULD_WINDOWUSE_FIELD.number = 22
-ITEM_CFG_COULD_WINDOWUSE_FIELD.index = 21
-ITEM_CFG_COULD_WINDOWUSE_FIELD.label = 2
-ITEM_CFG_COULD_WINDOWUSE_FIELD.has_default_value = false
-ITEM_CFG_COULD_WINDOWUSE_FIELD.default_value = 0
-ITEM_CFG_COULD_WINDOWUSE_FIELD.type = 5
-ITEM_CFG_COULD_WINDOWUSE_FIELD.cpp_type = 1
-
-ITEM_CFG_WINDOWUSE_MAX_FIELD.name = "windowuse_max"
-ITEM_CFG_WINDOWUSE_MAX_FIELD.full_name = ".ftcfg.item_cfg.windowuse_max"
-ITEM_CFG_WINDOWUSE_MAX_FIELD.number = 23
-ITEM_CFG_WINDOWUSE_MAX_FIELD.index = 22
-ITEM_CFG_WINDOWUSE_MAX_FIELD.label = 2
-ITEM_CFG_WINDOWUSE_MAX_FIELD.has_default_value = false
-ITEM_CFG_WINDOWUSE_MAX_FIELD.default_value = 0
-ITEM_CFG_WINDOWUSE_MAX_FIELD.type = 5
-ITEM_CFG_WINDOWUSE_MAX_FIELD.cpp_type = 1
-
-ITEM_CFG_COULD_SHOW_USE_FIELD.name = "could_show_use"
-ITEM_CFG_COULD_SHOW_USE_FIELD.full_name = ".ftcfg.item_cfg.could_show_use"
-ITEM_CFG_COULD_SHOW_USE_FIELD.number = 24
-ITEM_CFG_COULD_SHOW_USE_FIELD.index = 23
-ITEM_CFG_COULD_SHOW_USE_FIELD.label = 2
-ITEM_CFG_COULD_SHOW_USE_FIELD.has_default_value = false
-ITEM_CFG_COULD_SHOW_USE_FIELD.default_value = 0
-ITEM_CFG_COULD_SHOW_USE_FIELD.type = 5
-ITEM_CFG_COULD_SHOW_USE_FIELD.cpp_type = 1
-
-ITEM_CFG_USE_DELAY_FIELD.name = "use_delay"
-ITEM_CFG_USE_DELAY_FIELD.full_name = ".ftcfg.item_cfg.use_delay"
-ITEM_CFG_USE_DELAY_FIELD.number = 25
-ITEM_CFG_USE_DELAY_FIELD.index = 24
-ITEM_CFG_USE_DELAY_FIELD.label = 2
-ITEM_CFG_USE_DELAY_FIELD.has_default_value = false
-ITEM_CFG_USE_DELAY_FIELD.default_value = 0
-ITEM_CFG_USE_DELAY_FIELD.type = 5
-ITEM_CFG_USE_DELAY_FIELD.cpp_type = 1
-
-ITEM_CFG_COULD_BULK_USE_FIELD.name = "could_bulk_use"
-ITEM_CFG_COULD_BULK_USE_FIELD.full_name = ".ftcfg.item_cfg.could_bulk_use"
-ITEM_CFG_COULD_BULK_USE_FIELD.number = 26
-ITEM_CFG_COULD_BULK_USE_FIELD.index = 25
-ITEM_CFG_COULD_BULK_USE_FIELD.label = 2
-ITEM_CFG_COULD_BULK_USE_FIELD.has_default_value = false
-ITEM_CFG_COULD_BULK_USE_FIELD.default_value = 0
-ITEM_CFG_COULD_BULK_USE_FIELD.type = 5
-ITEM_CFG_COULD_BULK_USE_FIELD.cpp_type = 1
-
-ITEM_CFG_CD_GROUP_ID_FIELD.name = "cd_group_id"
-ITEM_CFG_CD_GROUP_ID_FIELD.full_name = ".ftcfg.item_cfg.cd_group_id"
-ITEM_CFG_CD_GROUP_ID_FIELD.number = 27
-ITEM_CFG_CD_GROUP_ID_FIELD.index = 26
-ITEM_CFG_CD_GROUP_ID_FIELD.label = 2
-ITEM_CFG_CD_GROUP_ID_FIELD.has_default_value = false
-ITEM_CFG_CD_GROUP_ID_FIELD.default_value = 0
-ITEM_CFG_CD_GROUP_ID_FIELD.type = 5
-ITEM_CFG_CD_GROUP_ID_FIELD.cpp_type = 1
-
-ITEM_CFG_CD_TIME_FIELD.name = "cd_time"
-ITEM_CFG_CD_TIME_FIELD.full_name = ".ftcfg.item_cfg.cd_time"
-ITEM_CFG_CD_TIME_FIELD.number = 28
-ITEM_CFG_CD_TIME_FIELD.index = 27
-ITEM_CFG_CD_TIME_FIELD.label = 2
-ITEM_CFG_CD_TIME_FIELD.has_default_value = false
-ITEM_CFG_CD_TIME_FIELD.default_value = 0
-ITEM_CFG_CD_TIME_FIELD.type = 5
-ITEM_CFG_CD_TIME_FIELD.cpp_type = 1
-
-ITEM_CFG_COULD_IN_STORAGE_FIELD.name = "could_in_storage"
-ITEM_CFG_COULD_IN_STORAGE_FIELD.full_name = ".ftcfg.item_cfg.could_in_storage"
-ITEM_CFG_COULD_IN_STORAGE_FIELD.number = 29
-ITEM_CFG_COULD_IN_STORAGE_FIELD.index = 28
-ITEM_CFG_COULD_IN_STORAGE_FIELD.label = 2
-ITEM_CFG_COULD_IN_STORAGE_FIELD.has_default_value = false
-ITEM_CFG_COULD_IN_STORAGE_FIELD.default_value = 0
-ITEM_CFG_COULD_IN_STORAGE_FIELD.type = 5
-ITEM_CFG_COULD_IN_STORAGE_FIELD.cpp_type = 1
-
-ITEM_CFG_COULD_OBTAIN_FIELD.name = "could_obtain"
-ITEM_CFG_COULD_OBTAIN_FIELD.full_name = ".ftcfg.item_cfg.could_obtain"
-ITEM_CFG_COULD_OBTAIN_FIELD.number = 30
-ITEM_CFG_COULD_OBTAIN_FIELD.index = 29
-ITEM_CFG_COULD_OBTAIN_FIELD.label = 2
-ITEM_CFG_COULD_OBTAIN_FIELD.has_default_value = false
-ITEM_CFG_COULD_OBTAIN_FIELD.default_value = 0
-ITEM_CFG_COULD_OBTAIN_FIELD.type = 5
-ITEM_CFG_COULD_OBTAIN_FIELD.cpp_type = 1
-
-ITEM_CFG_OBTAIN_LIST_FIELD.name = "obtain_list"
-ITEM_CFG_OBTAIN_LIST_FIELD.full_name = ".ftcfg.item_cfg.obtain_list"
-ITEM_CFG_OBTAIN_LIST_FIELD.number = 31
-ITEM_CFG_OBTAIN_LIST_FIELD.index = 30
-ITEM_CFG_OBTAIN_LIST_FIELD.label = 2
-ITEM_CFG_OBTAIN_LIST_FIELD.has_default_value = false
-ITEM_CFG_OBTAIN_LIST_FIELD.default_value = 0
-ITEM_CFG_OBTAIN_LIST_FIELD.type = 5
-ITEM_CFG_OBTAIN_LIST_FIELD.cpp_type = 1
-
-ITEM_CFG_PROP_EFFECT1_FIELD.name = "prop_effect1"
-ITEM_CFG_PROP_EFFECT1_FIELD.full_name = ".ftcfg.item_cfg.prop_effect1"
-ITEM_CFG_PROP_EFFECT1_FIELD.number = 32
-ITEM_CFG_PROP_EFFECT1_FIELD.index = 31
-ITEM_CFG_PROP_EFFECT1_FIELD.label = 2
-ITEM_CFG_PROP_EFFECT1_FIELD.has_default_value = false
-ITEM_CFG_PROP_EFFECT1_FIELD.default_value = ""
-ITEM_CFG_PROP_EFFECT1_FIELD.type = 9
-ITEM_CFG_PROP_EFFECT1_FIELD.cpp_type = 9
-
-ITEM_CFG_PROP_EFFECT2_FIELD.name = "prop_effect2"
-ITEM_CFG_PROP_EFFECT2_FIELD.full_name = ".ftcfg.item_cfg.prop_effect2"
-ITEM_CFG_PROP_EFFECT2_FIELD.number = 33
-ITEM_CFG_PROP_EFFECT2_FIELD.index = 32
-ITEM_CFG_PROP_EFFECT2_FIELD.label = 2
-ITEM_CFG_PROP_EFFECT2_FIELD.has_default_value = false
-ITEM_CFG_PROP_EFFECT2_FIELD.default_value = ""
-ITEM_CFG_PROP_EFFECT2_FIELD.type = 9
-ITEM_CFG_PROP_EFFECT2_FIELD.cpp_type = 9
-
-ITEM_CFG_PROP_EFFECT3_FIELD.name = "prop_effect3"
-ITEM_CFG_PROP_EFFECT3_FIELD.full_name = ".ftcfg.item_cfg.prop_effect3"
-ITEM_CFG_PROP_EFFECT3_FIELD.number = 34
-ITEM_CFG_PROP_EFFECT3_FIELD.index = 33
-ITEM_CFG_PROP_EFFECT3_FIELD.label = 2
-ITEM_CFG_PROP_EFFECT3_FIELD.has_default_value = false
-ITEM_CFG_PROP_EFFECT3_FIELD.default_value = ""
-ITEM_CFG_PROP_EFFECT3_FIELD.type = 9
-ITEM_CFG_PROP_EFFECT3_FIELD.cpp_type = 9
-
-ITEM_CFG_PROP_EFFECT4_FIELD.name = "prop_effect4"
-ITEM_CFG_PROP_EFFECT4_FIELD.full_name = ".ftcfg.item_cfg.prop_effect4"
-ITEM_CFG_PROP_EFFECT4_FIELD.number = 35
-ITEM_CFG_PROP_EFFECT4_FIELD.index = 34
-ITEM_CFG_PROP_EFFECT4_FIELD.label = 2
-ITEM_CFG_PROP_EFFECT4_FIELD.has_default_value = false
-ITEM_CFG_PROP_EFFECT4_FIELD.default_value = ""
-ITEM_CFG_PROP_EFFECT4_FIELD.type = 9
-ITEM_CFG_PROP_EFFECT4_FIELD.cpp_type = 9
-
-ITEM_CFG_PROP_EFFECT5_FIELD.name = "prop_effect5"
-ITEM_CFG_PROP_EFFECT5_FIELD.full_name = ".ftcfg.item_cfg.prop_effect5"
-ITEM_CFG_PROP_EFFECT5_FIELD.number = 36
-ITEM_CFG_PROP_EFFECT5_FIELD.index = 35
-ITEM_CFG_PROP_EFFECT5_FIELD.label = 2
-ITEM_CFG_PROP_EFFECT5_FIELD.has_default_value = false
-ITEM_CFG_PROP_EFFECT5_FIELD.default_value = ""
-ITEM_CFG_PROP_EFFECT5_FIELD.type = 9
-ITEM_CFG_PROP_EFFECT5_FIELD.cpp_type = 9
-
-ITEM_CFG_PROP_EFFECT6_FIELD.name = "prop_effect6"
-ITEM_CFG_PROP_EFFECT6_FIELD.full_name = ".ftcfg.item_cfg.prop_effect6"
-ITEM_CFG_PROP_EFFECT6_FIELD.number = 37
-ITEM_CFG_PROP_EFFECT6_FIELD.index = 36
-ITEM_CFG_PROP_EFFECT6_FIELD.label = 2
-ITEM_CFG_PROP_EFFECT6_FIELD.has_default_value = false
-ITEM_CFG_PROP_EFFECT6_FIELD.default_value = ""
-ITEM_CFG_PROP_EFFECT6_FIELD.type = 9
-ITEM_CFG_PROP_EFFECT6_FIELD.cpp_type = 9
-
-ITEM_CFG_PROP_EFFECT7_FIELD.name = "prop_effect7"
-ITEM_CFG_PROP_EFFECT7_FIELD.full_name = ".ftcfg.item_cfg.prop_effect7"
-ITEM_CFG_PROP_EFFECT7_FIELD.number = 38
-ITEM_CFG_PROP_EFFECT7_FIELD.index = 37
-ITEM_CFG_PROP_EFFECT7_FIELD.label = 2
-ITEM_CFG_PROP_EFFECT7_FIELD.has_default_value = false
-ITEM_CFG_PROP_EFFECT7_FIELD.default_value = ""
-ITEM_CFG_PROP_EFFECT7_FIELD.type = 9
-ITEM_CFG_PROP_EFFECT7_FIELD.cpp_type = 9
-
-ITEM_CFG_PROP_EFFECT8_FIELD.name = "prop_effect8"
-ITEM_CFG_PROP_EFFECT8_FIELD.full_name = ".ftcfg.item_cfg.prop_effect8"
-ITEM_CFG_PROP_EFFECT8_FIELD.number = 39
-ITEM_CFG_PROP_EFFECT8_FIELD.index = 38
-ITEM_CFG_PROP_EFFECT8_FIELD.label = 2
-ITEM_CFG_PROP_EFFECT8_FIELD.has_default_value = false
-ITEM_CFG_PROP_EFFECT8_FIELD.default_value = ""
-ITEM_CFG_PROP_EFFECT8_FIELD.type = 9
-ITEM_CFG_PROP_EFFECT8_FIELD.cpp_type = 9
-
-ITEM_CFG_PRICE_GOLD_FIELD.name = "price_gold"
-ITEM_CFG_PRICE_GOLD_FIELD.full_name = ".ftcfg.item_cfg.price_gold"
-ITEM_CFG_PRICE_GOLD_FIELD.number = 40
-ITEM_CFG_PRICE_GOLD_FIELD.index = 39
-ITEM_CFG_PRICE_GOLD_FIELD.label = 2
-ITEM_CFG_PRICE_GOLD_FIELD.has_default_value = false
-ITEM_CFG_PRICE_GOLD_FIELD.default_value = 0
-ITEM_CFG_PRICE_GOLD_FIELD.type = 13
-ITEM_CFG_PRICE_GOLD_FIELD.cpp_type = 3
-
-ITEM_CFG_LUCK_VALUE_FIELD.name = "luck_value"
-ITEM_CFG_LUCK_VALUE_FIELD.full_name = ".ftcfg.item_cfg.luck_value"
-ITEM_CFG_LUCK_VALUE_FIELD.number = 41
-ITEM_CFG_LUCK_VALUE_FIELD.index = 40
-ITEM_CFG_LUCK_VALUE_FIELD.label = 2
-ITEM_CFG_LUCK_VALUE_FIELD.has_default_value = false
-ITEM_CFG_LUCK_VALUE_FIELD.default_value = 0
-ITEM_CFG_LUCK_VALUE_FIELD.type = 5
-ITEM_CFG_LUCK_VALUE_FIELD.cpp_type = 1
-
-ITEM_CFG_POP_VALUE_FIELD.name = "pop_value"
-ITEM_CFG_POP_VALUE_FIELD.full_name = ".ftcfg.item_cfg.pop_value"
-ITEM_CFG_POP_VALUE_FIELD.number = 42
-ITEM_CFG_POP_VALUE_FIELD.index = 41
-ITEM_CFG_POP_VALUE_FIELD.label = 2
-ITEM_CFG_POP_VALUE_FIELD.has_default_value = false
-ITEM_CFG_POP_VALUE_FIELD.default_value = 0
-ITEM_CFG_POP_VALUE_FIELD.type = 13
-ITEM_CFG_POP_VALUE_FIELD.cpp_type = 3
-
-ITEM_CFG_COMBAT_POINT_FIELD.name = "combat_point"
-ITEM_CFG_COMBAT_POINT_FIELD.full_name = ".ftcfg.item_cfg.combat_point"
-ITEM_CFG_COMBAT_POINT_FIELD.number = 43
-ITEM_CFG_COMBAT_POINT_FIELD.index = 42
-ITEM_CFG_COMBAT_POINT_FIELD.label = 2
-ITEM_CFG_COMBAT_POINT_FIELD.has_default_value = false
-ITEM_CFG_COMBAT_POINT_FIELD.default_value = 0
-ITEM_CFG_COMBAT_POINT_FIELD.type = 13
-ITEM_CFG_COMBAT_POINT_FIELD.cpp_type = 3
-
-ITEM_CFG_EFFECT_TIMELIMITED_FIELD.name = "effect_timelimited"
-ITEM_CFG_EFFECT_TIMELIMITED_FIELD.full_name = ".ftcfg.item_cfg.effect_timelimited"
-ITEM_CFG_EFFECT_TIMELIMITED_FIELD.number = 44
-ITEM_CFG_EFFECT_TIMELIMITED_FIELD.index = 43
-ITEM_CFG_EFFECT_TIMELIMITED_FIELD.label = 2
-ITEM_CFG_EFFECT_TIMELIMITED_FIELD.has_default_value = false
-ITEM_CFG_EFFECT_TIMELIMITED_FIELD.default_value = 0
-ITEM_CFG_EFFECT_TIMELIMITED_FIELD.type = 5
-ITEM_CFG_EFFECT_TIMELIMITED_FIELD.cpp_type = 1
-
-ITEM_CFG_DROP_ID_FIELD.name = "drop_id"
-ITEM_CFG_DROP_ID_FIELD.full_name = ".ftcfg.item_cfg.drop_id"
-ITEM_CFG_DROP_ID_FIELD.number = 45
-ITEM_CFG_DROP_ID_FIELD.index = 44
-ITEM_CFG_DROP_ID_FIELD.label = 2
-ITEM_CFG_DROP_ID_FIELD.has_default_value = false
-ITEM_CFG_DROP_ID_FIELD.default_value = 0
-ITEM_CFG_DROP_ID_FIELD.type = 13
-ITEM_CFG_DROP_ID_FIELD.cpp_type = 3
-
-ITEM_CFG_COST_TYPE_FIELD.name = "cost_type"
-ITEM_CFG_COST_TYPE_FIELD.full_name = ".ftcfg.item_cfg.cost_type"
-ITEM_CFG_COST_TYPE_FIELD.number = 46
-ITEM_CFG_COST_TYPE_FIELD.index = 45
-ITEM_CFG_COST_TYPE_FIELD.label = 3
-ITEM_CFG_COST_TYPE_FIELD.has_default_value = false
-ITEM_CFG_COST_TYPE_FIELD.default_value = {}
-ITEM_CFG_COST_TYPE_FIELD.type = 13
-ITEM_CFG_COST_TYPE_FIELD.cpp_type = 3
-
-ITEM_CFG_COST_COUNT_FIELD.name = "cost_count"
-ITEM_CFG_COST_COUNT_FIELD.full_name = ".ftcfg.item_cfg.cost_count"
-ITEM_CFG_COST_COUNT_FIELD.number = 47
-ITEM_CFG_COST_COUNT_FIELD.index = 46
-ITEM_CFG_COST_COUNT_FIELD.label = 3
-ITEM_CFG_COST_COUNT_FIELD.has_default_value = false
-ITEM_CFG_COST_COUNT_FIELD.default_value = {}
-ITEM_CFG_COST_COUNT_FIELD.type = 13
-ITEM_CFG_COST_COUNT_FIELD.cpp_type = 3
-
-ITEM_CFG_HOLE_NUM_FIELD.name = "hole_num"
-ITEM_CFG_HOLE_NUM_FIELD.full_name = ".ftcfg.item_cfg.hole_num"
-ITEM_CFG_HOLE_NUM_FIELD.number = 48
-ITEM_CFG_HOLE_NUM_FIELD.index = 47
-ITEM_CFG_HOLE_NUM_FIELD.label = 2
-ITEM_CFG_HOLE_NUM_FIELD.has_default_value = false
-ITEM_CFG_HOLE_NUM_FIELD.default_value = 0
-ITEM_CFG_HOLE_NUM_FIELD.type = 5
-ITEM_CFG_HOLE_NUM_FIELD.cpp_type = 1
-
-ITEM_CFG_INLAY_TYPE_FIELD.name = "inlay_type"
-ITEM_CFG_INLAY_TYPE_FIELD.full_name = ".ftcfg.item_cfg.inlay_type"
-ITEM_CFG_INLAY_TYPE_FIELD.number = 49
-ITEM_CFG_INLAY_TYPE_FIELD.index = 48
-ITEM_CFG_INLAY_TYPE_FIELD.label = 3
-ITEM_CFG_INLAY_TYPE_FIELD.has_default_value = false
-ITEM_CFG_INLAY_TYPE_FIELD.default_value = {}
-ITEM_CFG_INLAY_TYPE_FIELD.type = 5
-ITEM_CFG_INLAY_TYPE_FIELD.cpp_type = 1
-
-ITEM_CFG_INLAY_LEVEL_FIELD.name = "inlay_level"
-ITEM_CFG_INLAY_LEVEL_FIELD.full_name = ".ftcfg.item_cfg.inlay_level"
-ITEM_CFG_INLAY_LEVEL_FIELD.number = 50
-ITEM_CFG_INLAY_LEVEL_FIELD.index = 49
-ITEM_CFG_INLAY_LEVEL_FIELD.label = 2
-ITEM_CFG_INLAY_LEVEL_FIELD.has_default_value = false
-ITEM_CFG_INLAY_LEVEL_FIELD.default_value = 0
-ITEM_CFG_INLAY_LEVEL_FIELD.type = 5
-ITEM_CFG_INLAY_LEVEL_FIELD.cpp_type = 1
-
-ITEM_CFG.name = "item_cfg"
-ITEM_CFG.full_name = ".ftcfg.item_cfg"
-ITEM_CFG.nested_types = {}
-ITEM_CFG.enum_types = {}
-ITEM_CFG.fields = {ITEM_CFG_ID_FIELD, ITEM_CFG_ITEM_NAME_FIELD, ITEM_CFG_FORMULA_ID_FIELD, ITEM_CFG_ITEM_DESC_FIELD, ITEM_CFG_STACK_MAX_FIELD, ITEM_CFG_NEED_LEVEL_FIELD, ITEM_CFG_NEED_PROF_FIELD, ITEM_CFG_ITEM_TYPE_FIELD, ITEM_CFG_ITEM_SUB_TYPE_FIELD, ITEM_CFG_ITEM_PART_FIELD, ITEM_CFG_DISPLAY_TYPE_FIELD, ITEM_CFG_ITEM_COLOR_FIELD, ITEM_CFG_ITEM_ICON_FIELD, ITEM_CFG_ITEM_MARK_FIELD, ITEM_CFG_OWN_MAX_FIELD, ITEM_CFG_COULD_TRADE_FIELD, ITEM_CFG_TRADE_COOLDOWN_FIELD, ITEM_CFG_COULD_SELL_FIELD, ITEM_CFG_SELL_COST_TYPE_FIELD, ITEM_CFG_SELL_COST_NUM_FIELD, ITEM_CFG_COULD_USE_FIELD, ITEM_CFG_COULD_WINDOWUSE_FIELD, ITEM_CFG_WINDOWUSE_MAX_FIELD, ITEM_CFG_COULD_SHOW_USE_FIELD, ITEM_CFG_USE_DELAY_FIELD, ITEM_CFG_COULD_BULK_USE_FIELD, ITEM_CFG_CD_GROUP_ID_FIELD, ITEM_CFG_CD_TIME_FIELD, ITEM_CFG_COULD_IN_STORAGE_FIELD, ITEM_CFG_COULD_OBTAIN_FIELD, ITEM_CFG_OBTAIN_LIST_FIELD, ITEM_CFG_PROP_EFFECT1_FIELD, ITEM_CFG_PROP_EFFECT2_FIELD, ITEM_CFG_PROP_EFFECT3_FIELD, ITEM_CFG_PROP_EFFECT4_FIELD, ITEM_CFG_PROP_EFFECT5_FIELD, ITEM_CFG_PROP_EFFECT6_FIELD, ITEM_CFG_PROP_EFFECT7_FIELD, ITEM_CFG_PROP_EFFECT8_FIELD, ITEM_CFG_PRICE_GOLD_FIELD, ITEM_CFG_LUCK_VALUE_FIELD, ITEM_CFG_POP_VALUE_FIELD, ITEM_CFG_COMBAT_POINT_FIELD, ITEM_CFG_EFFECT_TIMELIMITED_FIELD, ITEM_CFG_DROP_ID_FIELD, ITEM_CFG_COST_TYPE_FIELD, ITEM_CFG_COST_COUNT_FIELD, ITEM_CFG_HOLE_NUM_FIELD, ITEM_CFG_INLAY_TYPE_FIELD, ITEM_CFG_INLAY_LEVEL_FIELD}
-ITEM_CFG.is_extendable = false
-ITEM_CFG.extensions = {}
-ITEM_CFGS_ITEMS_FIELD.name = "items"
-ITEM_CFGS_ITEMS_FIELD.full_name = ".ftcfg.item_cfgs.items"
-ITEM_CFGS_ITEMS_FIELD.number = 1
-ITEM_CFGS_ITEMS_FIELD.index = 0
-ITEM_CFGS_ITEMS_FIELD.label = 3
-ITEM_CFGS_ITEMS_FIELD.has_default_value = false
-ITEM_CFGS_ITEMS_FIELD.default_value = {}
-ITEM_CFGS_ITEMS_FIELD.message_type = ITEM_CFG
-ITEM_CFGS_ITEMS_FIELD.type = 11
-ITEM_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ITEM_CFGS.name = "item_cfgs"
-ITEM_CFGS.full_name = ".ftcfg.item_cfgs"
-ITEM_CFGS.nested_types = {}
-ITEM_CFGS.enum_types = {}
-ITEM_CFGS.fields = {ITEM_CFGS_ITEMS_FIELD}
-ITEM_CFGS.is_extendable = false
-ITEM_CFGS.extensions = {}
-FIGHTCRIME_CFG_ID_FIELD.name = "id"
-FIGHTCRIME_CFG_ID_FIELD.full_name = ".ftcfg.fightcrime_cfg.id"
-FIGHTCRIME_CFG_ID_FIELD.number = 1
-FIGHTCRIME_CFG_ID_FIELD.index = 0
-FIGHTCRIME_CFG_ID_FIELD.label = 2
-FIGHTCRIME_CFG_ID_FIELD.has_default_value = false
-FIGHTCRIME_CFG_ID_FIELD.default_value = 0
-FIGHTCRIME_CFG_ID_FIELD.type = 5
-FIGHTCRIME_CFG_ID_FIELD.cpp_type = 1
-
-FIGHTCRIME_CFG_VALUE_FIELD.name = "value"
-FIGHTCRIME_CFG_VALUE_FIELD.full_name = ".ftcfg.fightcrime_cfg.value"
-FIGHTCRIME_CFG_VALUE_FIELD.number = 2
-FIGHTCRIME_CFG_VALUE_FIELD.index = 1
-FIGHTCRIME_CFG_VALUE_FIELD.label = 2
-FIGHTCRIME_CFG_VALUE_FIELD.has_default_value = false
-FIGHTCRIME_CFG_VALUE_FIELD.default_value = 0
-FIGHTCRIME_CFG_VALUE_FIELD.type = 5
-FIGHTCRIME_CFG_VALUE_FIELD.cpp_type = 1
-
-FIGHTCRIME_CFG_COLOR_FIELD.name = "color"
-FIGHTCRIME_CFG_COLOR_FIELD.full_name = ".ftcfg.fightcrime_cfg.color"
-FIGHTCRIME_CFG_COLOR_FIELD.number = 3
-FIGHTCRIME_CFG_COLOR_FIELD.index = 2
-FIGHTCRIME_CFG_COLOR_FIELD.label = 2
-FIGHTCRIME_CFG_COLOR_FIELD.has_default_value = false
-FIGHTCRIME_CFG_COLOR_FIELD.default_value = 0
-FIGHTCRIME_CFG_COLOR_FIELD.type = 5
-FIGHTCRIME_CFG_COLOR_FIELD.cpp_type = 1
-
-FIGHTCRIME_CFG_IMGBG_FIELD.name = "imgBg"
-FIGHTCRIME_CFG_IMGBG_FIELD.full_name = ".ftcfg.fightcrime_cfg.imgBg"
-FIGHTCRIME_CFG_IMGBG_FIELD.number = 4
-FIGHTCRIME_CFG_IMGBG_FIELD.index = 3
-FIGHTCRIME_CFG_IMGBG_FIELD.label = 2
-FIGHTCRIME_CFG_IMGBG_FIELD.has_default_value = false
-FIGHTCRIME_CFG_IMGBG_FIELD.default_value = 0
-FIGHTCRIME_CFG_IMGBG_FIELD.type = 5
-FIGHTCRIME_CFG_IMGBG_FIELD.cpp_type = 1
-
-FIGHTCRIME_CFG_IMGICON_FIELD.name = "imgIcon"
-FIGHTCRIME_CFG_IMGICON_FIELD.full_name = ".ftcfg.fightcrime_cfg.imgIcon"
-FIGHTCRIME_CFG_IMGICON_FIELD.number = 5
-FIGHTCRIME_CFG_IMGICON_FIELD.index = 4
-FIGHTCRIME_CFG_IMGICON_FIELD.label = 2
-FIGHTCRIME_CFG_IMGICON_FIELD.has_default_value = false
-FIGHTCRIME_CFG_IMGICON_FIELD.default_value = 0
-FIGHTCRIME_CFG_IMGICON_FIELD.type = 5
-FIGHTCRIME_CFG_IMGICON_FIELD.cpp_type = 1
-
-FIGHTCRIME_CFG_IMGFRAME_FIELD.name = "imgFrame"
-FIGHTCRIME_CFG_IMGFRAME_FIELD.full_name = ".ftcfg.fightcrime_cfg.imgFrame"
-FIGHTCRIME_CFG_IMGFRAME_FIELD.number = 6
-FIGHTCRIME_CFG_IMGFRAME_FIELD.index = 5
-FIGHTCRIME_CFG_IMGFRAME_FIELD.label = 2
-FIGHTCRIME_CFG_IMGFRAME_FIELD.has_default_value = false
-FIGHTCRIME_CFG_IMGFRAME_FIELD.default_value = 0
-FIGHTCRIME_CFG_IMGFRAME_FIELD.type = 5
-FIGHTCRIME_CFG_IMGFRAME_FIELD.cpp_type = 1
-
-FIGHTCRIME_CFG_IMGNUMBER_FIELD.name = "imgNumber"
-FIGHTCRIME_CFG_IMGNUMBER_FIELD.full_name = ".ftcfg.fightcrime_cfg.imgNumber"
-FIGHTCRIME_CFG_IMGNUMBER_FIELD.number = 7
-FIGHTCRIME_CFG_IMGNUMBER_FIELD.index = 6
-FIGHTCRIME_CFG_IMGNUMBER_FIELD.label = 2
-FIGHTCRIME_CFG_IMGNUMBER_FIELD.has_default_value = false
-FIGHTCRIME_CFG_IMGNUMBER_FIELD.default_value = 0
-FIGHTCRIME_CFG_IMGNUMBER_FIELD.type = 5
-FIGHTCRIME_CFG_IMGNUMBER_FIELD.cpp_type = 1
-
-FIGHTCRIME_CFG.name = "fightcrime_cfg"
-FIGHTCRIME_CFG.full_name = ".ftcfg.fightcrime_cfg"
-FIGHTCRIME_CFG.nested_types = {}
-FIGHTCRIME_CFG.enum_types = {}
-FIGHTCRIME_CFG.fields = {FIGHTCRIME_CFG_ID_FIELD, FIGHTCRIME_CFG_VALUE_FIELD, FIGHTCRIME_CFG_COLOR_FIELD, FIGHTCRIME_CFG_IMGBG_FIELD, FIGHTCRIME_CFG_IMGICON_FIELD, FIGHTCRIME_CFG_IMGFRAME_FIELD, FIGHTCRIME_CFG_IMGNUMBER_FIELD}
-FIGHTCRIME_CFG.is_extendable = false
-FIGHTCRIME_CFG.extensions = {}
-FIGHTCRIME_CFGS_ITEMS_FIELD.name = "items"
-FIGHTCRIME_CFGS_ITEMS_FIELD.full_name = ".ftcfg.fightcrime_cfgs.items"
-FIGHTCRIME_CFGS_ITEMS_FIELD.number = 1
-FIGHTCRIME_CFGS_ITEMS_FIELD.index = 0
-FIGHTCRIME_CFGS_ITEMS_FIELD.label = 3
-FIGHTCRIME_CFGS_ITEMS_FIELD.has_default_value = false
-FIGHTCRIME_CFGS_ITEMS_FIELD.default_value = {}
-FIGHTCRIME_CFGS_ITEMS_FIELD.message_type = FIGHTCRIME_CFG
-FIGHTCRIME_CFGS_ITEMS_FIELD.type = 11
-FIGHTCRIME_CFGS_ITEMS_FIELD.cpp_type = 10
-
-FIGHTCRIME_CFGS.name = "fightcrime_cfgs"
-FIGHTCRIME_CFGS.full_name = ".ftcfg.fightcrime_cfgs"
-FIGHTCRIME_CFGS.nested_types = {}
-FIGHTCRIME_CFGS.enum_types = {}
-FIGHTCRIME_CFGS.fields = {FIGHTCRIME_CFGS_ITEMS_FIELD}
-FIGHTCRIME_CFGS.is_extendable = false
-FIGHTCRIME_CFGS.extensions = {}
-FIGHTCIRME_REWARD_CFG_ID_FIELD.name = "id"
-FIGHTCIRME_REWARD_CFG_ID_FIELD.full_name = ".ftcfg.fightcirme_reward_cfg.id"
-FIGHTCIRME_REWARD_CFG_ID_FIELD.number = 1
-FIGHTCIRME_REWARD_CFG_ID_FIELD.index = 0
-FIGHTCIRME_REWARD_CFG_ID_FIELD.label = 2
-FIGHTCIRME_REWARD_CFG_ID_FIELD.has_default_value = false
-FIGHTCIRME_REWARD_CFG_ID_FIELD.default_value = 0
-FIGHTCIRME_REWARD_CFG_ID_FIELD.type = 5
-FIGHTCIRME_REWARD_CFG_ID_FIELD.cpp_type = 1
-
-FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.name = "items"
-FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.full_name = ".ftcfg.fightcirme_reward_cfg.items"
-FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.number = 2
-FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.index = 1
-FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.label = 3
-FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.has_default_value = false
-FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.default_value = {}
-FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.type = 13
-FIGHTCIRME_REWARD_CFG_ITEMS_FIELD.cpp_type = 3
-
-FIGHTCIRME_REWARD_CFG.name = "fightcirme_reward_cfg"
-FIGHTCIRME_REWARD_CFG.full_name = ".ftcfg.fightcirme_reward_cfg"
-FIGHTCIRME_REWARD_CFG.nested_types = {}
-FIGHTCIRME_REWARD_CFG.enum_types = {}
-FIGHTCIRME_REWARD_CFG.fields = {FIGHTCIRME_REWARD_CFG_ID_FIELD, FIGHTCIRME_REWARD_CFG_ITEMS_FIELD}
-FIGHTCIRME_REWARD_CFG.is_extendable = false
-FIGHTCIRME_REWARD_CFG.extensions = {}
-FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.name = "items"
-FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.fightcirme_reward_cfgs.items"
-FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.number = 1
-FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.index = 0
-FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.label = 3
-FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.has_default_value = false
-FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.default_value = {}
-FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.message_type = FIGHTCIRME_REWARD_CFG
-FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.type = 11
-FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD.cpp_type = 10
-
-FIGHTCIRME_REWARD_CFGS.name = "fightcirme_reward_cfgs"
-FIGHTCIRME_REWARD_CFGS.full_name = ".ftcfg.fightcirme_reward_cfgs"
-FIGHTCIRME_REWARD_CFGS.nested_types = {}
-FIGHTCIRME_REWARD_CFGS.enum_types = {}
-FIGHTCIRME_REWARD_CFGS.fields = {FIGHTCIRME_REWARD_CFGS_ITEMS_FIELD}
-FIGHTCIRME_REWARD_CFGS.is_extendable = false
-FIGHTCIRME_REWARD_CFGS.extensions = {}
-FIGHTCRIME_MONSTER_CFG_ID_FIELD.name = "id"
-FIGHTCRIME_MONSTER_CFG_ID_FIELD.full_name = ".ftcfg.fightcrime_monster_cfg.id"
-FIGHTCRIME_MONSTER_CFG_ID_FIELD.number = 1
-FIGHTCRIME_MONSTER_CFG_ID_FIELD.index = 0
-FIGHTCRIME_MONSTER_CFG_ID_FIELD.label = 2
-FIGHTCRIME_MONSTER_CFG_ID_FIELD.has_default_value = false
-FIGHTCRIME_MONSTER_CFG_ID_FIELD.default_value = 0
-FIGHTCRIME_MONSTER_CFG_ID_FIELD.type = 5
-FIGHTCRIME_MONSTER_CFG_ID_FIELD.cpp_type = 1
-
-FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.name = "monsters"
-FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.full_name = ".ftcfg.fightcrime_monster_cfg.monsters"
-FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.number = 2
-FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.index = 1
-FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.label = 3
-FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.has_default_value = false
-FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.default_value = {}
-FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.type = 13
-FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD.cpp_type = 3
-
-FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.name = "icons"
-FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.full_name = ".ftcfg.fightcrime_monster_cfg.icons"
-FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.number = 3
-FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.index = 2
-FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.label = 3
-FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.has_default_value = false
-FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.default_value = {}
-FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.type = 13
-FIGHTCRIME_MONSTER_CFG_ICONS_FIELD.cpp_type = 3
-
-FIGHTCRIME_MONSTER_CFG_TIME_FIELD.name = "time"
-FIGHTCRIME_MONSTER_CFG_TIME_FIELD.full_name = ".ftcfg.fightcrime_monster_cfg.time"
-FIGHTCRIME_MONSTER_CFG_TIME_FIELD.number = 4
-FIGHTCRIME_MONSTER_CFG_TIME_FIELD.index = 3
-FIGHTCRIME_MONSTER_CFG_TIME_FIELD.label = 2
-FIGHTCRIME_MONSTER_CFG_TIME_FIELD.has_default_value = false
-FIGHTCRIME_MONSTER_CFG_TIME_FIELD.default_value = 0.0
-FIGHTCRIME_MONSTER_CFG_TIME_FIELD.type = 2
-FIGHTCRIME_MONSTER_CFG_TIME_FIELD.cpp_type = 6
-
-FIGHTCRIME_MONSTER_CFG.name = "fightcrime_monster_cfg"
-FIGHTCRIME_MONSTER_CFG.full_name = ".ftcfg.fightcrime_monster_cfg"
-FIGHTCRIME_MONSTER_CFG.nested_types = {}
-FIGHTCRIME_MONSTER_CFG.enum_types = {}
-FIGHTCRIME_MONSTER_CFG.fields = {FIGHTCRIME_MONSTER_CFG_ID_FIELD, FIGHTCRIME_MONSTER_CFG_MONSTERS_FIELD, FIGHTCRIME_MONSTER_CFG_ICONS_FIELD, FIGHTCRIME_MONSTER_CFG_TIME_FIELD}
-FIGHTCRIME_MONSTER_CFG.is_extendable = false
-FIGHTCRIME_MONSTER_CFG.extensions = {}
-FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.name = "items"
-FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.full_name = ".ftcfg.fightcrime_monster_cfgs.items"
-FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.number = 1
-FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.index = 0
-FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.label = 3
-FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.has_default_value = false
-FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.default_value = {}
-FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.message_type = FIGHTCRIME_MONSTER_CFG
-FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.type = 11
-FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD.cpp_type = 10
-
-FIGHTCRIME_MONSTER_CFGS.name = "fightcrime_monster_cfgs"
-FIGHTCRIME_MONSTER_CFGS.full_name = ".ftcfg.fightcrime_monster_cfgs"
-FIGHTCRIME_MONSTER_CFGS.nested_types = {}
-FIGHTCRIME_MONSTER_CFGS.enum_types = {}
-FIGHTCRIME_MONSTER_CFGS.fields = {FIGHTCRIME_MONSTER_CFGS_ITEMS_FIELD}
-FIGHTCRIME_MONSTER_CFGS.is_extendable = false
-FIGHTCRIME_MONSTER_CFGS.extensions = {}
-EQUIP_CFG_ID_FIELD.name = "id"
-EQUIP_CFG_ID_FIELD.full_name = ".ftcfg.equip_cfg.id"
-EQUIP_CFG_ID_FIELD.number = 1
-EQUIP_CFG_ID_FIELD.index = 0
-EQUIP_CFG_ID_FIELD.label = 2
-EQUIP_CFG_ID_FIELD.has_default_value = false
-EQUIP_CFG_ID_FIELD.default_value = 0
-EQUIP_CFG_ID_FIELD.type = 13
-EQUIP_CFG_ID_FIELD.cpp_type = 3
-
-EQUIP_CFG_UPGRADE_ID_FIELD.name = "upgrade_id"
-EQUIP_CFG_UPGRADE_ID_FIELD.full_name = ".ftcfg.equip_cfg.upgrade_id"
-EQUIP_CFG_UPGRADE_ID_FIELD.number = 2
-EQUIP_CFG_UPGRADE_ID_FIELD.index = 1
-EQUIP_CFG_UPGRADE_ID_FIELD.label = 2
-EQUIP_CFG_UPGRADE_ID_FIELD.has_default_value = false
-EQUIP_CFG_UPGRADE_ID_FIELD.default_value = 0
-EQUIP_CFG_UPGRADE_ID_FIELD.type = 13
-EQUIP_CFG_UPGRADE_ID_FIELD.cpp_type = 3
-
-EQUIP_CFG_UPGRADE_MATERIAL_FIELD.name = "upgrade_material"
-EQUIP_CFG_UPGRADE_MATERIAL_FIELD.full_name = ".ftcfg.equip_cfg.upgrade_material"
-EQUIP_CFG_UPGRADE_MATERIAL_FIELD.number = 3
-EQUIP_CFG_UPGRADE_MATERIAL_FIELD.index = 2
-EQUIP_CFG_UPGRADE_MATERIAL_FIELD.label = 3
-EQUIP_CFG_UPGRADE_MATERIAL_FIELD.has_default_value = false
-EQUIP_CFG_UPGRADE_MATERIAL_FIELD.default_value = {}
-EQUIP_CFG_UPGRADE_MATERIAL_FIELD.type = 13
-EQUIP_CFG_UPGRADE_MATERIAL_FIELD.cpp_type = 3
-
-EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.name = "upgrade_req_level"
-EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.full_name = ".ftcfg.equip_cfg.upgrade_req_level"
-EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.number = 4
-EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.index = 3
-EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.label = 2
-EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.has_default_value = false
-EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.default_value = 0
-EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.type = 5
-EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD.cpp_type = 1
-
-EQUIP_CFG_REFINE_MATERIAL_FIELD.name = "refine_material"
-EQUIP_CFG_REFINE_MATERIAL_FIELD.full_name = ".ftcfg.equip_cfg.refine_material"
-EQUIP_CFG_REFINE_MATERIAL_FIELD.number = 5
-EQUIP_CFG_REFINE_MATERIAL_FIELD.index = 4
-EQUIP_CFG_REFINE_MATERIAL_FIELD.label = 2
-EQUIP_CFG_REFINE_MATERIAL_FIELD.has_default_value = false
-EQUIP_CFG_REFINE_MATERIAL_FIELD.default_value = 0
-EQUIP_CFG_REFINE_MATERIAL_FIELD.type = 13
-EQUIP_CFG_REFINE_MATERIAL_FIELD.cpp_type = 3
-
-EQUIP_CFG_REFINE_COUNT_FIELD.name = "refine_count"
-EQUIP_CFG_REFINE_COUNT_FIELD.full_name = ".ftcfg.equip_cfg.refine_count"
-EQUIP_CFG_REFINE_COUNT_FIELD.number = 6
-EQUIP_CFG_REFINE_COUNT_FIELD.index = 5
-EQUIP_CFG_REFINE_COUNT_FIELD.label = 2
-EQUIP_CFG_REFINE_COUNT_FIELD.has_default_value = false
-EQUIP_CFG_REFINE_COUNT_FIELD.default_value = 0
-EQUIP_CFG_REFINE_COUNT_FIELD.type = 5
-EQUIP_CFG_REFINE_COUNT_FIELD.cpp_type = 1
-
-EQUIP_CFG_REFINE_COST_FIELD.name = "refine_cost"
-EQUIP_CFG_REFINE_COST_FIELD.full_name = ".ftcfg.equip_cfg.refine_cost"
-EQUIP_CFG_REFINE_COST_FIELD.number = 7
-EQUIP_CFG_REFINE_COST_FIELD.index = 6
-EQUIP_CFG_REFINE_COST_FIELD.label = 2
-EQUIP_CFG_REFINE_COST_FIELD.has_default_value = false
-EQUIP_CFG_REFINE_COST_FIELD.default_value = 0
-EQUIP_CFG_REFINE_COST_FIELD.type = 5
-EQUIP_CFG_REFINE_COST_FIELD.cpp_type = 1
-
-EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.name = "active_strength_material"
-EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.full_name = ".ftcfg.equip_cfg.active_strength_material"
-EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.number = 8
-EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.index = 7
-EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.label = 2
-EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.has_default_value = false
-EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.default_value = 0
-EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.type = 13
-EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD.cpp_type = 3
-
-EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.name = "active_strength_count"
-EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.full_name = ".ftcfg.equip_cfg.active_strength_count"
-EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.number = 9
-EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.index = 8
-EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.label = 2
-EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.has_default_value = false
-EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.default_value = 0
-EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.type = 5
-EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD.cpp_type = 1
-
-EQUIP_CFG_ACTIVE_COST_FIELD.name = "active_cost"
-EQUIP_CFG_ACTIVE_COST_FIELD.full_name = ".ftcfg.equip_cfg.active_cost"
-EQUIP_CFG_ACTIVE_COST_FIELD.number = 10
-EQUIP_CFG_ACTIVE_COST_FIELD.index = 9
-EQUIP_CFG_ACTIVE_COST_FIELD.label = 2
-EQUIP_CFG_ACTIVE_COST_FIELD.has_default_value = false
-EQUIP_CFG_ACTIVE_COST_FIELD.default_value = 0
-EQUIP_CFG_ACTIVE_COST_FIELD.type = 5
-EQUIP_CFG_ACTIVE_COST_FIELD.cpp_type = 1
-
-EQUIP_CFG.name = "equip_cfg"
-EQUIP_CFG.full_name = ".ftcfg.equip_cfg"
-EQUIP_CFG.nested_types = {}
-EQUIP_CFG.enum_types = {}
-EQUIP_CFG.fields = {EQUIP_CFG_ID_FIELD, EQUIP_CFG_UPGRADE_ID_FIELD, EQUIP_CFG_UPGRADE_MATERIAL_FIELD, EQUIP_CFG_UPGRADE_REQ_LEVEL_FIELD, EQUIP_CFG_REFINE_MATERIAL_FIELD, EQUIP_CFG_REFINE_COUNT_FIELD, EQUIP_CFG_REFINE_COST_FIELD, EQUIP_CFG_ACTIVE_STRENGTH_MATERIAL_FIELD, EQUIP_CFG_ACTIVE_STRENGTH_COUNT_FIELD, EQUIP_CFG_ACTIVE_COST_FIELD}
-EQUIP_CFG.is_extendable = false
-EQUIP_CFG.extensions = {}
-EQUIP_CFGS_ITEMS_FIELD.name = "items"
-EQUIP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.equip_cfgs.items"
-EQUIP_CFGS_ITEMS_FIELD.number = 1
-EQUIP_CFGS_ITEMS_FIELD.index = 0
-EQUIP_CFGS_ITEMS_FIELD.label = 3
-EQUIP_CFGS_ITEMS_FIELD.has_default_value = false
-EQUIP_CFGS_ITEMS_FIELD.default_value = {}
-EQUIP_CFGS_ITEMS_FIELD.message_type = EQUIP_CFG
-EQUIP_CFGS_ITEMS_FIELD.type = 11
-EQUIP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-EQUIP_CFGS.name = "equip_cfgs"
-EQUIP_CFGS.full_name = ".ftcfg.equip_cfgs"
-EQUIP_CFGS.nested_types = {}
-EQUIP_CFGS.enum_types = {}
-EQUIP_CFGS.fields = {EQUIP_CFGS_ITEMS_FIELD}
-EQUIP_CFGS.is_extendable = false
-EQUIP_CFGS.extensions = {}
-EQUIP_SET_CFG_ID_FIELD.name = "id"
-EQUIP_SET_CFG_ID_FIELD.full_name = ".ftcfg.equip_set_cfg.id"
-EQUIP_SET_CFG_ID_FIELD.number = 1
-EQUIP_SET_CFG_ID_FIELD.index = 0
-EQUIP_SET_CFG_ID_FIELD.label = 2
-EQUIP_SET_CFG_ID_FIELD.has_default_value = false
-EQUIP_SET_CFG_ID_FIELD.default_value = 0
-EQUIP_SET_CFG_ID_FIELD.type = 13
-EQUIP_SET_CFG_ID_FIELD.cpp_type = 3
-
-EQUIP_SET_CFG_EQUIP_IDS_FIELD.name = "equip_ids"
-EQUIP_SET_CFG_EQUIP_IDS_FIELD.full_name = ".ftcfg.equip_set_cfg.equip_ids"
-EQUIP_SET_CFG_EQUIP_IDS_FIELD.number = 2
-EQUIP_SET_CFG_EQUIP_IDS_FIELD.index = 1
-EQUIP_SET_CFG_EQUIP_IDS_FIELD.label = 3
-EQUIP_SET_CFG_EQUIP_IDS_FIELD.has_default_value = false
-EQUIP_SET_CFG_EQUIP_IDS_FIELD.default_value = {}
-EQUIP_SET_CFG_EQUIP_IDS_FIELD.type = 13
-EQUIP_SET_CFG_EQUIP_IDS_FIELD.cpp_type = 3
-
-EQUIP_SET_CFG_SET_NAME_FIELD.name = "set_name"
-EQUIP_SET_CFG_SET_NAME_FIELD.full_name = ".ftcfg.equip_set_cfg.set_name"
-EQUIP_SET_CFG_SET_NAME_FIELD.number = 3
-EQUIP_SET_CFG_SET_NAME_FIELD.index = 2
-EQUIP_SET_CFG_SET_NAME_FIELD.label = 2
-EQUIP_SET_CFG_SET_NAME_FIELD.has_default_value = false
-EQUIP_SET_CFG_SET_NAME_FIELD.default_value = ""
-EQUIP_SET_CFG_SET_NAME_FIELD.type = 9
-EQUIP_SET_CFG_SET_NAME_FIELD.cpp_type = 9
-
-EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.name = "equip_level"
-EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.full_name = ".ftcfg.equip_set_cfg.equip_level"
-EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.number = 4
-EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.index = 3
-EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.label = 2
-EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.has_default_value = false
-EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.default_value = 0
-EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.type = 5
-EQUIP_SET_CFG_EQUIP_LEVEL_FIELD.cpp_type = 1
-
-EQUIP_SET_CFG.name = "equip_set_cfg"
-EQUIP_SET_CFG.full_name = ".ftcfg.equip_set_cfg"
-EQUIP_SET_CFG.nested_types = {}
-EQUIP_SET_CFG.enum_types = {}
-EQUIP_SET_CFG.fields = {EQUIP_SET_CFG_ID_FIELD, EQUIP_SET_CFG_EQUIP_IDS_FIELD, EQUIP_SET_CFG_SET_NAME_FIELD, EQUIP_SET_CFG_EQUIP_LEVEL_FIELD}
-EQUIP_SET_CFG.is_extendable = false
-EQUIP_SET_CFG.extensions = {}
-EQUIP_SET_CFGS_ITEMS_FIELD.name = "items"
-EQUIP_SET_CFGS_ITEMS_FIELD.full_name = ".ftcfg.equip_set_cfgs.items"
-EQUIP_SET_CFGS_ITEMS_FIELD.number = 1
-EQUIP_SET_CFGS_ITEMS_FIELD.index = 0
-EQUIP_SET_CFGS_ITEMS_FIELD.label = 3
-EQUIP_SET_CFGS_ITEMS_FIELD.has_default_value = false
-EQUIP_SET_CFGS_ITEMS_FIELD.default_value = {}
-EQUIP_SET_CFGS_ITEMS_FIELD.message_type = EQUIP_SET_CFG
-EQUIP_SET_CFGS_ITEMS_FIELD.type = 11
-EQUIP_SET_CFGS_ITEMS_FIELD.cpp_type = 10
-
-EQUIP_SET_CFGS.name = "equip_set_cfgs"
-EQUIP_SET_CFGS.full_name = ".ftcfg.equip_set_cfgs"
-EQUIP_SET_CFGS.nested_types = {}
-EQUIP_SET_CFGS.enum_types = {}
-EQUIP_SET_CFGS.fields = {EQUIP_SET_CFGS_ITEMS_FIELD}
-EQUIP_SET_CFGS.is_extendable = false
-EQUIP_SET_CFGS.extensions = {}
-EQUIP_SET_PROP_CFG_ID_FIELD.name = "id"
-EQUIP_SET_PROP_CFG_ID_FIELD.full_name = ".ftcfg.equip_set_prop_cfg.id"
-EQUIP_SET_PROP_CFG_ID_FIELD.number = 1
-EQUIP_SET_PROP_CFG_ID_FIELD.index = 0
-EQUIP_SET_PROP_CFG_ID_FIELD.label = 2
-EQUIP_SET_PROP_CFG_ID_FIELD.has_default_value = false
-EQUIP_SET_PROP_CFG_ID_FIELD.default_value = 0
-EQUIP_SET_PROP_CFG_ID_FIELD.type = 13
-EQUIP_SET_PROP_CFG_ID_FIELD.cpp_type = 3
-
-EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.name = "equip_count"
-EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.full_name = ".ftcfg.equip_set_prop_cfg.equip_count"
-EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.number = 2
-EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.index = 1
-EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.label = 2
-EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.has_default_value = false
-EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.default_value = 0
-EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.type = 13
-EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD.cpp_type = 3
-
-EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.name = "active_prop"
-EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.full_name = ".ftcfg.equip_set_prop_cfg.active_prop"
-EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.number = 3
-EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.index = 2
-EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.label = 2
-EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.has_default_value = false
-EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.default_value = ""
-EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.type = 9
-EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD.cpp_type = 9
-
-EQUIP_SET_PROP_CFG.name = "equip_set_prop_cfg"
-EQUIP_SET_PROP_CFG.full_name = ".ftcfg.equip_set_prop_cfg"
-EQUIP_SET_PROP_CFG.nested_types = {}
-EQUIP_SET_PROP_CFG.enum_types = {}
-EQUIP_SET_PROP_CFG.fields = {EQUIP_SET_PROP_CFG_ID_FIELD, EQUIP_SET_PROP_CFG_EQUIP_COUNT_FIELD, EQUIP_SET_PROP_CFG_ACTIVE_PROP_FIELD}
-EQUIP_SET_PROP_CFG.is_extendable = false
-EQUIP_SET_PROP_CFG.extensions = {}
-EQUIP_SET_PROP_CFGS_ITEMS_FIELD.name = "items"
-EQUIP_SET_PROP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.equip_set_prop_cfgs.items"
-EQUIP_SET_PROP_CFGS_ITEMS_FIELD.number = 1
-EQUIP_SET_PROP_CFGS_ITEMS_FIELD.index = 0
-EQUIP_SET_PROP_CFGS_ITEMS_FIELD.label = 3
-EQUIP_SET_PROP_CFGS_ITEMS_FIELD.has_default_value = false
-EQUIP_SET_PROP_CFGS_ITEMS_FIELD.default_value = {}
-EQUIP_SET_PROP_CFGS_ITEMS_FIELD.message_type = EQUIP_SET_PROP_CFG
-EQUIP_SET_PROP_CFGS_ITEMS_FIELD.type = 11
-EQUIP_SET_PROP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-EQUIP_SET_PROP_CFGS.name = "equip_set_prop_cfgs"
-EQUIP_SET_PROP_CFGS.full_name = ".ftcfg.equip_set_prop_cfgs"
-EQUIP_SET_PROP_CFGS.nested_types = {}
-EQUIP_SET_PROP_CFGS.enum_types = {}
-EQUIP_SET_PROP_CFGS.fields = {EQUIP_SET_PROP_CFGS_ITEMS_FIELD}
-EQUIP_SET_PROP_CFGS.is_extendable = false
-EQUIP_SET_PROP_CFGS.extensions = {}
-STRENGTHEN_CFG_ID_FIELD.name = "id"
-STRENGTHEN_CFG_ID_FIELD.full_name = ".ftcfg.strengthen_cfg.id"
-STRENGTHEN_CFG_ID_FIELD.number = 1
-STRENGTHEN_CFG_ID_FIELD.index = 0
-STRENGTHEN_CFG_ID_FIELD.label = 2
-STRENGTHEN_CFG_ID_FIELD.has_default_value = false
-STRENGTHEN_CFG_ID_FIELD.default_value = 0
-STRENGTHEN_CFG_ID_FIELD.type = 13
-STRENGTHEN_CFG_ID_FIELD.cpp_type = 3
-
-STRENGTHEN_CFG_SEG_LIMIT_FIELD.name = "seg_limit"
-STRENGTHEN_CFG_SEG_LIMIT_FIELD.full_name = ".ftcfg.strengthen_cfg.seg_limit"
-STRENGTHEN_CFG_SEG_LIMIT_FIELD.number = 2
-STRENGTHEN_CFG_SEG_LIMIT_FIELD.index = 1
-STRENGTHEN_CFG_SEG_LIMIT_FIELD.label = 2
-STRENGTHEN_CFG_SEG_LIMIT_FIELD.has_default_value = false
-STRENGTHEN_CFG_SEG_LIMIT_FIELD.default_value = 0
-STRENGTHEN_CFG_SEG_LIMIT_FIELD.type = 13
-STRENGTHEN_CFG_SEG_LIMIT_FIELD.cpp_type = 3
-
-STRENGTHEN_CFG_RATE_FIELD.name = "rate"
-STRENGTHEN_CFG_RATE_FIELD.full_name = ".ftcfg.strengthen_cfg.rate"
-STRENGTHEN_CFG_RATE_FIELD.number = 3
-STRENGTHEN_CFG_RATE_FIELD.index = 2
-STRENGTHEN_CFG_RATE_FIELD.label = 2
-STRENGTHEN_CFG_RATE_FIELD.has_default_value = false
-STRENGTHEN_CFG_RATE_FIELD.default_value = 0
-STRENGTHEN_CFG_RATE_FIELD.type = 13
-STRENGTHEN_CFG_RATE_FIELD.cpp_type = 3
-
-STRENGTHEN_CFG_REQ_LEVEL_FIELD.name = "req_level"
-STRENGTHEN_CFG_REQ_LEVEL_FIELD.full_name = ".ftcfg.strengthen_cfg.req_level"
-STRENGTHEN_CFG_REQ_LEVEL_FIELD.number = 4
-STRENGTHEN_CFG_REQ_LEVEL_FIELD.index = 3
-STRENGTHEN_CFG_REQ_LEVEL_FIELD.label = 2
-STRENGTHEN_CFG_REQ_LEVEL_FIELD.has_default_value = false
-STRENGTHEN_CFG_REQ_LEVEL_FIELD.default_value = 0
-STRENGTHEN_CFG_REQ_LEVEL_FIELD.type = 13
-STRENGTHEN_CFG_REQ_LEVEL_FIELD.cpp_type = 3
-
-STRENGTHEN_CFG_MAT_ID_FIELD.name = "mat_id"
-STRENGTHEN_CFG_MAT_ID_FIELD.full_name = ".ftcfg.strengthen_cfg.mat_id"
-STRENGTHEN_CFG_MAT_ID_FIELD.number = 5
-STRENGTHEN_CFG_MAT_ID_FIELD.index = 4
-STRENGTHEN_CFG_MAT_ID_FIELD.label = 2
-STRENGTHEN_CFG_MAT_ID_FIELD.has_default_value = false
-STRENGTHEN_CFG_MAT_ID_FIELD.default_value = 0
-STRENGTHEN_CFG_MAT_ID_FIELD.type = 13
-STRENGTHEN_CFG_MAT_ID_FIELD.cpp_type = 3
-
-STRENGTHEN_CFG_MAT_NUM_FIELD.name = "mat_num"
-STRENGTHEN_CFG_MAT_NUM_FIELD.full_name = ".ftcfg.strengthen_cfg.mat_num"
-STRENGTHEN_CFG_MAT_NUM_FIELD.number = 6
-STRENGTHEN_CFG_MAT_NUM_FIELD.index = 5
-STRENGTHEN_CFG_MAT_NUM_FIELD.label = 2
-STRENGTHEN_CFG_MAT_NUM_FIELD.has_default_value = false
-STRENGTHEN_CFG_MAT_NUM_FIELD.default_value = 0
-STRENGTHEN_CFG_MAT_NUM_FIELD.type = 13
-STRENGTHEN_CFG_MAT_NUM_FIELD.cpp_type = 3
-
-STRENGTHEN_CFG_PROP_EFFECT1_FIELD.name = "prop_effect1"
-STRENGTHEN_CFG_PROP_EFFECT1_FIELD.full_name = ".ftcfg.strengthen_cfg.prop_effect1"
-STRENGTHEN_CFG_PROP_EFFECT1_FIELD.number = 7
-STRENGTHEN_CFG_PROP_EFFECT1_FIELD.index = 6
-STRENGTHEN_CFG_PROP_EFFECT1_FIELD.label = 2
-STRENGTHEN_CFG_PROP_EFFECT1_FIELD.has_default_value = false
-STRENGTHEN_CFG_PROP_EFFECT1_FIELD.default_value = ""
-STRENGTHEN_CFG_PROP_EFFECT1_FIELD.type = 9
-STRENGTHEN_CFG_PROP_EFFECT1_FIELD.cpp_type = 9
-
-STRENGTHEN_CFG_PROP_EFFECT2_FIELD.name = "prop_effect2"
-STRENGTHEN_CFG_PROP_EFFECT2_FIELD.full_name = ".ftcfg.strengthen_cfg.prop_effect2"
-STRENGTHEN_CFG_PROP_EFFECT2_FIELD.number = 8
-STRENGTHEN_CFG_PROP_EFFECT2_FIELD.index = 7
-STRENGTHEN_CFG_PROP_EFFECT2_FIELD.label = 2
-STRENGTHEN_CFG_PROP_EFFECT2_FIELD.has_default_value = false
-STRENGTHEN_CFG_PROP_EFFECT2_FIELD.default_value = ""
-STRENGTHEN_CFG_PROP_EFFECT2_FIELD.type = 9
-STRENGTHEN_CFG_PROP_EFFECT2_FIELD.cpp_type = 9
-
-STRENGTHEN_CFG_PROP_EFFECT3_FIELD.name = "prop_effect3"
-STRENGTHEN_CFG_PROP_EFFECT3_FIELD.full_name = ".ftcfg.strengthen_cfg.prop_effect3"
-STRENGTHEN_CFG_PROP_EFFECT3_FIELD.number = 9
-STRENGTHEN_CFG_PROP_EFFECT3_FIELD.index = 8
-STRENGTHEN_CFG_PROP_EFFECT3_FIELD.label = 2
-STRENGTHEN_CFG_PROP_EFFECT3_FIELD.has_default_value = false
-STRENGTHEN_CFG_PROP_EFFECT3_FIELD.default_value = ""
-STRENGTHEN_CFG_PROP_EFFECT3_FIELD.type = 9
-STRENGTHEN_CFG_PROP_EFFECT3_FIELD.cpp_type = 9
-
-STRENGTHEN_CFG_PROP_EFFECT4_FIELD.name = "prop_effect4"
-STRENGTHEN_CFG_PROP_EFFECT4_FIELD.full_name = ".ftcfg.strengthen_cfg.prop_effect4"
-STRENGTHEN_CFG_PROP_EFFECT4_FIELD.number = 10
-STRENGTHEN_CFG_PROP_EFFECT4_FIELD.index = 9
-STRENGTHEN_CFG_PROP_EFFECT4_FIELD.label = 2
-STRENGTHEN_CFG_PROP_EFFECT4_FIELD.has_default_value = false
-STRENGTHEN_CFG_PROP_EFFECT4_FIELD.default_value = ""
-STRENGTHEN_CFG_PROP_EFFECT4_FIELD.type = 9
-STRENGTHEN_CFG_PROP_EFFECT4_FIELD.cpp_type = 9
-
-STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.name = "extra_effect"
-STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.full_name = ".ftcfg.strengthen_cfg.extra_effect"
-STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.number = 11
-STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.index = 10
-STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.label = 2
-STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.has_default_value = false
-STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.default_value = 0
-STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.type = 13
-STRENGTHEN_CFG_EXTRA_EFFECT_FIELD.cpp_type = 3
-
-STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.name = "blessing_limit"
-STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.full_name = ".ftcfg.strengthen_cfg.blessing_limit"
-STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.number = 12
-STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.index = 11
-STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.label = 2
-STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.has_default_value = false
-STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.default_value = 0
-STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.type = 13
-STRENGTHEN_CFG_BLESSING_LIMIT_FIELD.cpp_type = 3
-
-STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.name = "assist_jewel"
-STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.full_name = ".ftcfg.strengthen_cfg.assist_jewel"
-STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.number = 13
-STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.index = 12
-STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.label = 3
-STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.has_default_value = false
-STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.default_value = {}
-STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.type = 13
-STRENGTHEN_CFG_ASSIST_JEWEL_FIELD.cpp_type = 3
-
-STRENGTHEN_CFG_COMBAT_POINT_FIELD.name = "combat_point"
-STRENGTHEN_CFG_COMBAT_POINT_FIELD.full_name = ".ftcfg.strengthen_cfg.combat_point"
-STRENGTHEN_CFG_COMBAT_POINT_FIELD.number = 14
-STRENGTHEN_CFG_COMBAT_POINT_FIELD.index = 13
-STRENGTHEN_CFG_COMBAT_POINT_FIELD.label = 2
-STRENGTHEN_CFG_COMBAT_POINT_FIELD.has_default_value = false
-STRENGTHEN_CFG_COMBAT_POINT_FIELD.default_value = 0
-STRENGTHEN_CFG_COMBAT_POINT_FIELD.type = 13
-STRENGTHEN_CFG_COMBAT_POINT_FIELD.cpp_type = 3
-
-STRENGTHEN_CFG.name = "strengthen_cfg"
-STRENGTHEN_CFG.full_name = ".ftcfg.strengthen_cfg"
-STRENGTHEN_CFG.nested_types = {}
-STRENGTHEN_CFG.enum_types = {}
-STRENGTHEN_CFG.fields = {STRENGTHEN_CFG_ID_FIELD, STRENGTHEN_CFG_SEG_LIMIT_FIELD, STRENGTHEN_CFG_RATE_FIELD, STRENGTHEN_CFG_REQ_LEVEL_FIELD, STRENGTHEN_CFG_MAT_ID_FIELD, STRENGTHEN_CFG_MAT_NUM_FIELD, STRENGTHEN_CFG_PROP_EFFECT1_FIELD, STRENGTHEN_CFG_PROP_EFFECT2_FIELD, STRENGTHEN_CFG_PROP_EFFECT3_FIELD, STRENGTHEN_CFG_PROP_EFFECT4_FIELD, STRENGTHEN_CFG_EXTRA_EFFECT_FIELD, STRENGTHEN_CFG_BLESSING_LIMIT_FIELD, STRENGTHEN_CFG_ASSIST_JEWEL_FIELD, STRENGTHEN_CFG_COMBAT_POINT_FIELD}
-STRENGTHEN_CFG.is_extendable = false
-STRENGTHEN_CFG.extensions = {}
-STRENGTHEN_CFGS_ITEMS_FIELD.name = "items"
-STRENGTHEN_CFGS_ITEMS_FIELD.full_name = ".ftcfg.strengthen_cfgs.items"
-STRENGTHEN_CFGS_ITEMS_FIELD.number = 1
-STRENGTHEN_CFGS_ITEMS_FIELD.index = 0
-STRENGTHEN_CFGS_ITEMS_FIELD.label = 3
-STRENGTHEN_CFGS_ITEMS_FIELD.has_default_value = false
-STRENGTHEN_CFGS_ITEMS_FIELD.default_value = {}
-STRENGTHEN_CFGS_ITEMS_FIELD.message_type = STRENGTHEN_CFG
-STRENGTHEN_CFGS_ITEMS_FIELD.type = 11
-STRENGTHEN_CFGS_ITEMS_FIELD.cpp_type = 10
-
-STRENGTHEN_CFGS.name = "strengthen_cfgs"
-STRENGTHEN_CFGS.full_name = ".ftcfg.strengthen_cfgs"
-STRENGTHEN_CFGS.nested_types = {}
-STRENGTHEN_CFGS.enum_types = {}
-STRENGTHEN_CFGS.fields = {STRENGTHEN_CFGS_ITEMS_FIELD}
-STRENGTHEN_CFGS.is_extendable = false
-STRENGTHEN_CFGS.extensions = {}
-RUNE_MAKE_LIST_CFG_LEVEL_FIELD.name = "level"
-RUNE_MAKE_LIST_CFG_LEVEL_FIELD.full_name = ".ftcfg.rune_make_list_cfg.level"
-RUNE_MAKE_LIST_CFG_LEVEL_FIELD.number = 1
-RUNE_MAKE_LIST_CFG_LEVEL_FIELD.index = 0
-RUNE_MAKE_LIST_CFG_LEVEL_FIELD.label = 2
-RUNE_MAKE_LIST_CFG_LEVEL_FIELD.has_default_value = false
-RUNE_MAKE_LIST_CFG_LEVEL_FIELD.default_value = 0
-RUNE_MAKE_LIST_CFG_LEVEL_FIELD.type = 5
-RUNE_MAKE_LIST_CFG_LEVEL_FIELD.cpp_type = 1
-
-RUNE_MAKE_LIST_CFG_WEAPON_FIELD.name = "weapon"
-RUNE_MAKE_LIST_CFG_WEAPON_FIELD.full_name = ".ftcfg.rune_make_list_cfg.weapon"
-RUNE_MAKE_LIST_CFG_WEAPON_FIELD.number = 2
-RUNE_MAKE_LIST_CFG_WEAPON_FIELD.index = 1
-RUNE_MAKE_LIST_CFG_WEAPON_FIELD.label = 2
-RUNE_MAKE_LIST_CFG_WEAPON_FIELD.has_default_value = false
-RUNE_MAKE_LIST_CFG_WEAPON_FIELD.default_value = 0
-RUNE_MAKE_LIST_CFG_WEAPON_FIELD.type = 5
-RUNE_MAKE_LIST_CFG_WEAPON_FIELD.cpp_type = 1
-
-RUNE_MAKE_LIST_CFG_HEAD_FIELD.name = "head"
-RUNE_MAKE_LIST_CFG_HEAD_FIELD.full_name = ".ftcfg.rune_make_list_cfg.head"
-RUNE_MAKE_LIST_CFG_HEAD_FIELD.number = 3
-RUNE_MAKE_LIST_CFG_HEAD_FIELD.index = 2
-RUNE_MAKE_LIST_CFG_HEAD_FIELD.label = 2
-RUNE_MAKE_LIST_CFG_HEAD_FIELD.has_default_value = false
-RUNE_MAKE_LIST_CFG_HEAD_FIELD.default_value = 0
-RUNE_MAKE_LIST_CFG_HEAD_FIELD.type = 5
-RUNE_MAKE_LIST_CFG_HEAD_FIELD.cpp_type = 1
-
-RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.name = "clothes"
-RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.full_name = ".ftcfg.rune_make_list_cfg.clothes"
-RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.number = 4
-RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.index = 3
-RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.label = 2
-RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.has_default_value = false
-RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.default_value = 0
-RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.type = 5
-RUNE_MAKE_LIST_CFG_CLOTHES_FIELD.cpp_type = 1
-
-RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.name = "trousers"
-RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.full_name = ".ftcfg.rune_make_list_cfg.trousers"
-RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.number = 5
-RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.index = 4
-RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.label = 2
-RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.has_default_value = false
-RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.default_value = 0
-RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.type = 5
-RUNE_MAKE_LIST_CFG_TROUSERS_FIELD.cpp_type = 1
-
-RUNE_MAKE_LIST_CFG_SHOES_FIELD.name = "shoes"
-RUNE_MAKE_LIST_CFG_SHOES_FIELD.full_name = ".ftcfg.rune_make_list_cfg.shoes"
-RUNE_MAKE_LIST_CFG_SHOES_FIELD.number = 6
-RUNE_MAKE_LIST_CFG_SHOES_FIELD.index = 5
-RUNE_MAKE_LIST_CFG_SHOES_FIELD.label = 2
-RUNE_MAKE_LIST_CFG_SHOES_FIELD.has_default_value = false
-RUNE_MAKE_LIST_CFG_SHOES_FIELD.default_value = 0
-RUNE_MAKE_LIST_CFG_SHOES_FIELD.type = 5
-RUNE_MAKE_LIST_CFG_SHOES_FIELD.cpp_type = 1
-
-RUNE_MAKE_LIST_CFG.name = "rune_make_list_cfg"
-RUNE_MAKE_LIST_CFG.full_name = ".ftcfg.rune_make_list_cfg"
-RUNE_MAKE_LIST_CFG.nested_types = {}
-RUNE_MAKE_LIST_CFG.enum_types = {}
-RUNE_MAKE_LIST_CFG.fields = {RUNE_MAKE_LIST_CFG_LEVEL_FIELD, RUNE_MAKE_LIST_CFG_WEAPON_FIELD, RUNE_MAKE_LIST_CFG_HEAD_FIELD, RUNE_MAKE_LIST_CFG_CLOTHES_FIELD, RUNE_MAKE_LIST_CFG_TROUSERS_FIELD, RUNE_MAKE_LIST_CFG_SHOES_FIELD}
-RUNE_MAKE_LIST_CFG.is_extendable = false
-RUNE_MAKE_LIST_CFG.extensions = {}
-RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.name = "items"
-RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rune_make_list_cfgs.items"
-RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.number = 1
-RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.index = 0
-RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.label = 3
-RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.has_default_value = false
-RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.default_value = {}
-RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.message_type = RUNE_MAKE_LIST_CFG
-RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.type = 11
-RUNE_MAKE_LIST_CFGS_ITEMS_FIELD.cpp_type = 10
-
-RUNE_MAKE_LIST_CFGS.name = "rune_make_list_cfgs"
-RUNE_MAKE_LIST_CFGS.full_name = ".ftcfg.rune_make_list_cfgs"
-RUNE_MAKE_LIST_CFGS.nested_types = {}
-RUNE_MAKE_LIST_CFGS.enum_types = {}
-RUNE_MAKE_LIST_CFGS.fields = {RUNE_MAKE_LIST_CFGS_ITEMS_FIELD}
-RUNE_MAKE_LIST_CFGS.is_extendable = false
-RUNE_MAKE_LIST_CFGS.extensions = {}
-RUNE_MAKE_CFG_ID_FIELD.name = "id"
-RUNE_MAKE_CFG_ID_FIELD.full_name = ".ftcfg.rune_make_cfg.id"
-RUNE_MAKE_CFG_ID_FIELD.number = 1
-RUNE_MAKE_CFG_ID_FIELD.index = 0
-RUNE_MAKE_CFG_ID_FIELD.label = 2
-RUNE_MAKE_CFG_ID_FIELD.has_default_value = false
-RUNE_MAKE_CFG_ID_FIELD.default_value = 0
-RUNE_MAKE_CFG_ID_FIELD.type = 13
-RUNE_MAKE_CFG_ID_FIELD.cpp_type = 3
-
-RUNE_MAKE_CFG_COST_FIELD.name = "cost"
-RUNE_MAKE_CFG_COST_FIELD.full_name = ".ftcfg.rune_make_cfg.cost"
-RUNE_MAKE_CFG_COST_FIELD.number = 2
-RUNE_MAKE_CFG_COST_FIELD.index = 1
-RUNE_MAKE_CFG_COST_FIELD.label = 2
-RUNE_MAKE_CFG_COST_FIELD.has_default_value = false
-RUNE_MAKE_CFG_COST_FIELD.default_value = 0
-RUNE_MAKE_CFG_COST_FIELD.type = 5
-RUNE_MAKE_CFG_COST_FIELD.cpp_type = 1
-
-RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.name = "make_material"
-RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.full_name = ".ftcfg.rune_make_cfg.make_material"
-RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.number = 3
-RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.index = 2
-RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.label = 3
-RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.has_default_value = false
-RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.default_value = {}
-RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.type = 13
-RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD.cpp_type = 3
-
-RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.name = "elite_material"
-RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.full_name = ".ftcfg.rune_make_cfg.elite_material"
-RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.number = 4
-RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.index = 3
-RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.label = 3
-RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.has_default_value = false
-RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.default_value = {}
-RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.type = 13
-RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD.cpp_type = 3
-
-RUNE_MAKE_CFG_PROP_COUNT_FIELD.name = "prop_count"
-RUNE_MAKE_CFG_PROP_COUNT_FIELD.full_name = ".ftcfg.rune_make_cfg.prop_count"
-RUNE_MAKE_CFG_PROP_COUNT_FIELD.number = 5
-RUNE_MAKE_CFG_PROP_COUNT_FIELD.index = 4
-RUNE_MAKE_CFG_PROP_COUNT_FIELD.label = 2
-RUNE_MAKE_CFG_PROP_COUNT_FIELD.has_default_value = false
-RUNE_MAKE_CFG_PROP_COUNT_FIELD.default_value = 0
-RUNE_MAKE_CFG_PROP_COUNT_FIELD.type = 13
-RUNE_MAKE_CFG_PROP_COUNT_FIELD.cpp_type = 3
-
-RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.name = "special_spell_rate"
-RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.full_name = ".ftcfg.rune_make_cfg.special_spell_rate"
-RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.number = 6
-RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.index = 5
-RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.label = 2
-RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.has_default_value = false
-RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.default_value = 0
-RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.type = 13
-RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD.cpp_type = 3
-
-RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.name = "special_spell_elite_rate"
-RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.full_name = ".ftcfg.rune_make_cfg.special_spell_elite_rate"
-RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.number = 7
-RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.index = 6
-RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.label = 2
-RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.has_default_value = false
-RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.default_value = 0
-RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.type = 13
-RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD.cpp_type = 3
-
-RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.name = "spell_group_id"
-RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.full_name = ".ftcfg.rune_make_cfg.spell_group_id"
-RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.number = 8
-RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.index = 7
-RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.label = 2
-RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.has_default_value = false
-RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.default_value = 0
-RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.type = 13
-RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD.cpp_type = 3
-
-RUNE_MAKE_CFG_SPELL_RATE_FIELD.name = "spell_rate"
-RUNE_MAKE_CFG_SPELL_RATE_FIELD.full_name = ".ftcfg.rune_make_cfg.spell_rate"
-RUNE_MAKE_CFG_SPELL_RATE_FIELD.number = 9
-RUNE_MAKE_CFG_SPELL_RATE_FIELD.index = 8
-RUNE_MAKE_CFG_SPELL_RATE_FIELD.label = 2
-RUNE_MAKE_CFG_SPELL_RATE_FIELD.has_default_value = false
-RUNE_MAKE_CFG_SPELL_RATE_FIELD.default_value = 0
-RUNE_MAKE_CFG_SPELL_RATE_FIELD.type = 13
-RUNE_MAKE_CFG_SPELL_RATE_FIELD.cpp_type = 3
-
-RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.name = "spell_elite_rate"
-RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.full_name = ".ftcfg.rune_make_cfg.spell_elite_rate"
-RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.number = 10
-RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.index = 9
-RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.label = 2
-RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.has_default_value = false
-RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.default_value = 0
-RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.type = 13
-RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD.cpp_type = 3
-
-RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.name = "prop_group_id"
-RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.full_name = ".ftcfg.rune_make_cfg.prop_group_id"
-RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.number = 11
-RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.index = 10
-RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.label = 3
-RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.has_default_value = false
-RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.default_value = {}
-RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.type = 13
-RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD.cpp_type = 3
-
-RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.name = "magic_group_id"
-RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.full_name = ".ftcfg.rune_make_cfg.magic_group_id"
-RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.number = 12
-RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.index = 11
-RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.label = 3
-RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.has_default_value = false
-RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.default_value = {}
-RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.type = 13
-RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD.cpp_type = 3
-
-RUNE_MAKE_CFG.name = "rune_make_cfg"
-RUNE_MAKE_CFG.full_name = ".ftcfg.rune_make_cfg"
-RUNE_MAKE_CFG.nested_types = {}
-RUNE_MAKE_CFG.enum_types = {}
-RUNE_MAKE_CFG.fields = {RUNE_MAKE_CFG_ID_FIELD, RUNE_MAKE_CFG_COST_FIELD, RUNE_MAKE_CFG_MAKE_MATERIAL_FIELD, RUNE_MAKE_CFG_ELITE_MATERIAL_FIELD, RUNE_MAKE_CFG_PROP_COUNT_FIELD, RUNE_MAKE_CFG_SPECIAL_SPELL_RATE_FIELD, RUNE_MAKE_CFG_SPECIAL_SPELL_ELITE_RATE_FIELD, RUNE_MAKE_CFG_SPELL_GROUP_ID_FIELD, RUNE_MAKE_CFG_SPELL_RATE_FIELD, RUNE_MAKE_CFG_SPELL_ELITE_RATE_FIELD, RUNE_MAKE_CFG_PROP_GROUP_ID_FIELD, RUNE_MAKE_CFG_MAGIC_GROUP_ID_FIELD}
-RUNE_MAKE_CFG.is_extendable = false
-RUNE_MAKE_CFG.extensions = {}
-RUNE_MAKE_CFGS_ITEMS_FIELD.name = "items"
-RUNE_MAKE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rune_make_cfgs.items"
-RUNE_MAKE_CFGS_ITEMS_FIELD.number = 1
-RUNE_MAKE_CFGS_ITEMS_FIELD.index = 0
-RUNE_MAKE_CFGS_ITEMS_FIELD.label = 3
-RUNE_MAKE_CFGS_ITEMS_FIELD.has_default_value = false
-RUNE_MAKE_CFGS_ITEMS_FIELD.default_value = {}
-RUNE_MAKE_CFGS_ITEMS_FIELD.message_type = RUNE_MAKE_CFG
-RUNE_MAKE_CFGS_ITEMS_FIELD.type = 11
-RUNE_MAKE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-RUNE_MAKE_CFGS.name = "rune_make_cfgs"
-RUNE_MAKE_CFGS.full_name = ".ftcfg.rune_make_cfgs"
-RUNE_MAKE_CFGS.nested_types = {}
-RUNE_MAKE_CFGS.enum_types = {}
-RUNE_MAKE_CFGS.fields = {RUNE_MAKE_CFGS_ITEMS_FIELD}
-RUNE_MAKE_CFGS.is_extendable = false
-RUNE_MAKE_CFGS.extensions = {}
-RUNE_PROP_GROUP_CFG_ID_FIELD.name = "id"
-RUNE_PROP_GROUP_CFG_ID_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.id"
-RUNE_PROP_GROUP_CFG_ID_FIELD.number = 1
-RUNE_PROP_GROUP_CFG_ID_FIELD.index = 0
-RUNE_PROP_GROUP_CFG_ID_FIELD.label = 2
-RUNE_PROP_GROUP_CFG_ID_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFG_ID_FIELD.default_value = 0
-RUNE_PROP_GROUP_CFG_ID_FIELD.type = 13
-RUNE_PROP_GROUP_CFG_ID_FIELD.cpp_type = 3
-
-RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.name = "assist_id"
-RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.assist_id"
-RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.number = 2
-RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.index = 1
-RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.label = 2
-RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.default_value = 0
-RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.type = 13
-RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD.cpp_type = 3
-
-RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.name = "group_id"
-RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.group_id"
-RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.number = 3
-RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.index = 2
-RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.label = 2
-RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.default_value = 0
-RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.type = 13
-RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD.cpp_type = 3
-
-RUNE_PROP_GROUP_CFG_PROP_FIELD.name = "prop"
-RUNE_PROP_GROUP_CFG_PROP_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop"
-RUNE_PROP_GROUP_CFG_PROP_FIELD.number = 4
-RUNE_PROP_GROUP_CFG_PROP_FIELD.index = 3
-RUNE_PROP_GROUP_CFG_PROP_FIELD.label = 2
-RUNE_PROP_GROUP_CFG_PROP_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFG_PROP_FIELD.default_value = ""
-RUNE_PROP_GROUP_CFG_PROP_FIELD.type = 9
-RUNE_PROP_GROUP_CFG_PROP_FIELD.cpp_type = 9
-
-RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.name = "prop_value1"
-RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_value1"
-RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.number = 5
-RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.index = 4
-RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.label = 3
-RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.default_value = {}
-RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.type = 1
-RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD.cpp_type = 5
-
-RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.name = "prop_value2"
-RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_value2"
-RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.number = 6
-RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.index = 5
-RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.label = 3
-RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.default_value = {}
-RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.type = 1
-RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD.cpp_type = 5
-
-RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.name = "prop_value3"
-RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_value3"
-RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.number = 7
-RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.index = 6
-RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.label = 3
-RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.default_value = {}
-RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.type = 1
-RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD.cpp_type = 5
-
-RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.name = "prop_value4"
-RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_value4"
-RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.number = 8
-RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.index = 7
-RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.label = 3
-RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.default_value = {}
-RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.type = 1
-RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD.cpp_type = 5
-
-RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.name = "prop_value5"
-RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_value5"
-RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.number = 9
-RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.index = 8
-RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.label = 3
-RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.default_value = {}
-RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.type = 1
-RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD.cpp_type = 5
-
-RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.name = "prop_value6"
-RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_value6"
-RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.number = 10
-RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.index = 9
-RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.label = 3
-RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.default_value = {}
-RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.type = 1
-RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD.cpp_type = 5
-
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.name = "prop_elite_value1"
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_elite_value1"
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.number = 11
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.index = 10
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.label = 3
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.default_value = {}
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.type = 1
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD.cpp_type = 5
-
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.name = "prop_elite_value2"
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_elite_value2"
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.number = 12
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.index = 11
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.label = 3
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.default_value = {}
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.type = 1
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD.cpp_type = 5
-
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.name = "prop_elite_value3"
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_elite_value3"
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.number = 13
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.index = 12
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.label = 3
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.default_value = {}
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.type = 1
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD.cpp_type = 5
-
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.name = "prop_elite_value4"
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_elite_value4"
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.number = 14
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.index = 13
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.label = 3
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.default_value = {}
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.type = 1
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD.cpp_type = 5
-
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.name = "prop_elite_value5"
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_elite_value5"
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.number = 15
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.index = 14
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.label = 3
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.default_value = {}
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.type = 1
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD.cpp_type = 5
-
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.name = "prop_elite_value6"
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.full_name = ".ftcfg.rune_prop_group_cfg.prop_elite_value6"
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.number = 16
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.index = 15
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.label = 3
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.default_value = {}
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.type = 1
-RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD.cpp_type = 5
-
-RUNE_PROP_GROUP_CFG.name = "rune_prop_group_cfg"
-RUNE_PROP_GROUP_CFG.full_name = ".ftcfg.rune_prop_group_cfg"
-RUNE_PROP_GROUP_CFG.nested_types = {}
-RUNE_PROP_GROUP_CFG.enum_types = {}
-RUNE_PROP_GROUP_CFG.fields = {RUNE_PROP_GROUP_CFG_ID_FIELD, RUNE_PROP_GROUP_CFG_ASSIST_ID_FIELD, RUNE_PROP_GROUP_CFG_GROUP_ID_FIELD, RUNE_PROP_GROUP_CFG_PROP_FIELD, RUNE_PROP_GROUP_CFG_PROP_VALUE1_FIELD, RUNE_PROP_GROUP_CFG_PROP_VALUE2_FIELD, RUNE_PROP_GROUP_CFG_PROP_VALUE3_FIELD, RUNE_PROP_GROUP_CFG_PROP_VALUE4_FIELD, RUNE_PROP_GROUP_CFG_PROP_VALUE5_FIELD, RUNE_PROP_GROUP_CFG_PROP_VALUE6_FIELD, RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE1_FIELD, RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE2_FIELD, RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE3_FIELD, RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE4_FIELD, RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE5_FIELD, RUNE_PROP_GROUP_CFG_PROP_ELITE_VALUE6_FIELD}
-RUNE_PROP_GROUP_CFG.is_extendable = false
-RUNE_PROP_GROUP_CFG.extensions = {}
-RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.name = "items"
-RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rune_prop_group_cfgs.items"
-RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.number = 1
-RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.index = 0
-RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.label = 3
-RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.has_default_value = false
-RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.default_value = {}
-RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.message_type = RUNE_PROP_GROUP_CFG
-RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.type = 11
-RUNE_PROP_GROUP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-RUNE_PROP_GROUP_CFGS.name = "rune_prop_group_cfgs"
-RUNE_PROP_GROUP_CFGS.full_name = ".ftcfg.rune_prop_group_cfgs"
-RUNE_PROP_GROUP_CFGS.nested_types = {}
-RUNE_PROP_GROUP_CFGS.enum_types = {}
-RUNE_PROP_GROUP_CFGS.fields = {RUNE_PROP_GROUP_CFGS_ITEMS_FIELD}
-RUNE_PROP_GROUP_CFGS.is_extendable = false
-RUNE_PROP_GROUP_CFGS.extensions = {}
-EQUIP_LIST_CFG_ID_FIELD.name = "id"
-EQUIP_LIST_CFG_ID_FIELD.full_name = ".ftcfg.equip_list_cfg.id"
-EQUIP_LIST_CFG_ID_FIELD.number = 1
-EQUIP_LIST_CFG_ID_FIELD.index = 0
-EQUIP_LIST_CFG_ID_FIELD.label = 2
-EQUIP_LIST_CFG_ID_FIELD.has_default_value = false
-EQUIP_LIST_CFG_ID_FIELD.default_value = 0
-EQUIP_LIST_CFG_ID_FIELD.type = 5
-EQUIP_LIST_CFG_ID_FIELD.cpp_type = 1
-
-EQUIP_LIST_CFG_EQUIP_LIST_FIELD.name = "equip_list"
-EQUIP_LIST_CFG_EQUIP_LIST_FIELD.full_name = ".ftcfg.equip_list_cfg.equip_list"
-EQUIP_LIST_CFG_EQUIP_LIST_FIELD.number = 2
-EQUIP_LIST_CFG_EQUIP_LIST_FIELD.index = 1
-EQUIP_LIST_CFG_EQUIP_LIST_FIELD.label = 3
-EQUIP_LIST_CFG_EQUIP_LIST_FIELD.has_default_value = false
-EQUIP_LIST_CFG_EQUIP_LIST_FIELD.default_value = {}
-EQUIP_LIST_CFG_EQUIP_LIST_FIELD.type = 13
-EQUIP_LIST_CFG_EQUIP_LIST_FIELD.cpp_type = 3
-
-EQUIP_LIST_CFG.name = "equip_list_cfg"
-EQUIP_LIST_CFG.full_name = ".ftcfg.equip_list_cfg"
-EQUIP_LIST_CFG.nested_types = {}
-EQUIP_LIST_CFG.enum_types = {}
-EQUIP_LIST_CFG.fields = {EQUIP_LIST_CFG_ID_FIELD, EQUIP_LIST_CFG_EQUIP_LIST_FIELD}
-EQUIP_LIST_CFG.is_extendable = false
-EQUIP_LIST_CFG.extensions = {}
-EQUIP_LIST_CFGS_ITEMS_FIELD.name = "items"
-EQUIP_LIST_CFGS_ITEMS_FIELD.full_name = ".ftcfg.equip_list_cfgs.items"
-EQUIP_LIST_CFGS_ITEMS_FIELD.number = 1
-EQUIP_LIST_CFGS_ITEMS_FIELD.index = 0
-EQUIP_LIST_CFGS_ITEMS_FIELD.label = 3
-EQUIP_LIST_CFGS_ITEMS_FIELD.has_default_value = false
-EQUIP_LIST_CFGS_ITEMS_FIELD.default_value = {}
-EQUIP_LIST_CFGS_ITEMS_FIELD.message_type = EQUIP_LIST_CFG
-EQUIP_LIST_CFGS_ITEMS_FIELD.type = 11
-EQUIP_LIST_CFGS_ITEMS_FIELD.cpp_type = 10
-
-EQUIP_LIST_CFGS.name = "equip_list_cfgs"
-EQUIP_LIST_CFGS.full_name = ".ftcfg.equip_list_cfgs"
-EQUIP_LIST_CFGS.nested_types = {}
-EQUIP_LIST_CFGS.enum_types = {}
-EQUIP_LIST_CFGS.fields = {EQUIP_LIST_CFGS_ITEMS_FIELD}
-EQUIP_LIST_CFGS.is_extendable = false
-EQUIP_LIST_CFGS.extensions = {}
-RUNE_SKILL_GROUP_CFG_ID_FIELD.name = "id"
-RUNE_SKILL_GROUP_CFG_ID_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.id"
-RUNE_SKILL_GROUP_CFG_ID_FIELD.number = 1
-RUNE_SKILL_GROUP_CFG_ID_FIELD.index = 0
-RUNE_SKILL_GROUP_CFG_ID_FIELD.label = 2
-RUNE_SKILL_GROUP_CFG_ID_FIELD.has_default_value = false
-RUNE_SKILL_GROUP_CFG_ID_FIELD.default_value = 0
-RUNE_SKILL_GROUP_CFG_ID_FIELD.type = 13
-RUNE_SKILL_GROUP_CFG_ID_FIELD.cpp_type = 3
-
-RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.name = "group_id"
-RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.group_id"
-RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.number = 2
-RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.index = 1
-RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.label = 2
-RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.has_default_value = false
-RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.default_value = 0
-RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.type = 13
-RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD.cpp_type = 3
-
-RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.name = "skill_id"
-RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.skill_id"
-RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.number = 3
-RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.index = 2
-RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.label = 2
-RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.has_default_value = false
-RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.default_value = 0
-RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.type = 5
-RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD.cpp_type = 1
-
-RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.name = "level_rand"
-RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.level_rand"
-RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.number = 4
-RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.index = 3
-RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.label = 3
-RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.has_default_value = false
-RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.default_value = {}
-RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.type = 13
-RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD.cpp_type = 3
-
-RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.name = "rate_1"
-RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.rate_1"
-RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.number = 5
-RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.index = 4
-RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.label = 2
-RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.has_default_value = false
-RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.default_value = 0
-RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.type = 5
-RUNE_SKILL_GROUP_CFG_RATE_1_FIELD.cpp_type = 1
-
-RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.name = "rate_2"
-RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.rate_2"
-RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.number = 6
-RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.index = 5
-RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.label = 2
-RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.has_default_value = false
-RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.default_value = 0
-RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.type = 5
-RUNE_SKILL_GROUP_CFG_RATE_2_FIELD.cpp_type = 1
-
-RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.name = "rate_3"
-RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.rate_3"
-RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.number = 7
-RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.index = 6
-RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.label = 2
-RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.has_default_value = false
-RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.default_value = 0
-RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.type = 5
-RUNE_SKILL_GROUP_CFG_RATE_3_FIELD.cpp_type = 1
-
-RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.name = "rate_4"
-RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.rate_4"
-RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.number = 8
-RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.index = 7
-RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.label = 2
-RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.has_default_value = false
-RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.default_value = 0
-RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.type = 5
-RUNE_SKILL_GROUP_CFG_RATE_4_FIELD.cpp_type = 1
-
-RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.name = "rate_5"
-RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.full_name = ".ftcfg.rune_skill_group_cfg.rate_5"
-RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.number = 9
-RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.index = 8
-RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.label = 2
-RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.has_default_value = false
-RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.default_value = 0
-RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.type = 5
-RUNE_SKILL_GROUP_CFG_RATE_5_FIELD.cpp_type = 1
-
-RUNE_SKILL_GROUP_CFG.name = "rune_skill_group_cfg"
-RUNE_SKILL_GROUP_CFG.full_name = ".ftcfg.rune_skill_group_cfg"
-RUNE_SKILL_GROUP_CFG.nested_types = {}
-RUNE_SKILL_GROUP_CFG.enum_types = {}
-RUNE_SKILL_GROUP_CFG.fields = {RUNE_SKILL_GROUP_CFG_ID_FIELD, RUNE_SKILL_GROUP_CFG_GROUP_ID_FIELD, RUNE_SKILL_GROUP_CFG_SKILL_ID_FIELD, RUNE_SKILL_GROUP_CFG_LEVEL_RAND_FIELD, RUNE_SKILL_GROUP_CFG_RATE_1_FIELD, RUNE_SKILL_GROUP_CFG_RATE_2_FIELD, RUNE_SKILL_GROUP_CFG_RATE_3_FIELD, RUNE_SKILL_GROUP_CFG_RATE_4_FIELD, RUNE_SKILL_GROUP_CFG_RATE_5_FIELD}
-RUNE_SKILL_GROUP_CFG.is_extendable = false
-RUNE_SKILL_GROUP_CFG.extensions = {}
-RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.name = "items"
-RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rune_skill_group_cfgs.items"
-RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.number = 1
-RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.index = 0
-RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.label = 3
-RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.has_default_value = false
-RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.default_value = {}
-RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.message_type = RUNE_SKILL_GROUP_CFG
-RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.type = 11
-RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-RUNE_SKILL_GROUP_CFGS.name = "rune_skill_group_cfgs"
-RUNE_SKILL_GROUP_CFGS.full_name = ".ftcfg.rune_skill_group_cfgs"
-RUNE_SKILL_GROUP_CFGS.nested_types = {}
-RUNE_SKILL_GROUP_CFGS.enum_types = {}
-RUNE_SKILL_GROUP_CFGS.fields = {RUNE_SKILL_GROUP_CFGS_ITEMS_FIELD}
-RUNE_SKILL_GROUP_CFGS.is_extendable = false
-RUNE_SKILL_GROUP_CFGS.extensions = {}
-RUNE_DECOMPOSE_CFG_ID_FIELD.name = "id"
-RUNE_DECOMPOSE_CFG_ID_FIELD.full_name = ".ftcfg.rune_decompose_cfg.id"
-RUNE_DECOMPOSE_CFG_ID_FIELD.number = 1
-RUNE_DECOMPOSE_CFG_ID_FIELD.index = 0
-RUNE_DECOMPOSE_CFG_ID_FIELD.label = 2
-RUNE_DECOMPOSE_CFG_ID_FIELD.has_default_value = false
-RUNE_DECOMPOSE_CFG_ID_FIELD.default_value = 0
-RUNE_DECOMPOSE_CFG_ID_FIELD.type = 13
-RUNE_DECOMPOSE_CFG_ID_FIELD.cpp_type = 3
-
-RUNE_DECOMPOSE_CFG_SILVER_FIELD.name = "silver"
-RUNE_DECOMPOSE_CFG_SILVER_FIELD.full_name = ".ftcfg.rune_decompose_cfg.silver"
-RUNE_DECOMPOSE_CFG_SILVER_FIELD.number = 2
-RUNE_DECOMPOSE_CFG_SILVER_FIELD.index = 1
-RUNE_DECOMPOSE_CFG_SILVER_FIELD.label = 3
-RUNE_DECOMPOSE_CFG_SILVER_FIELD.has_default_value = false
-RUNE_DECOMPOSE_CFG_SILVER_FIELD.default_value = {}
-RUNE_DECOMPOSE_CFG_SILVER_FIELD.type = 5
-RUNE_DECOMPOSE_CFG_SILVER_FIELD.cpp_type = 1
-
-RUNE_DECOMPOSE_CFG_GOLD_FIELD.name = "gold"
-RUNE_DECOMPOSE_CFG_GOLD_FIELD.full_name = ".ftcfg.rune_decompose_cfg.gold"
-RUNE_DECOMPOSE_CFG_GOLD_FIELD.number = 3
-RUNE_DECOMPOSE_CFG_GOLD_FIELD.index = 2
-RUNE_DECOMPOSE_CFG_GOLD_FIELD.label = 3
-RUNE_DECOMPOSE_CFG_GOLD_FIELD.has_default_value = false
-RUNE_DECOMPOSE_CFG_GOLD_FIELD.default_value = {}
-RUNE_DECOMPOSE_CFG_GOLD_FIELD.type = 5
-RUNE_DECOMPOSE_CFG_GOLD_FIELD.cpp_type = 1
-
-RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.name = "item_id1"
-RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_id1"
-RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.number = 4
-RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.index = 3
-RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.label = 2
-RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.has_default_value = false
-RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.default_value = 0
-RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.type = 13
-RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD.cpp_type = 3
-
-RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.name = "item_rate1"
-RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_rate1"
-RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.number = 5
-RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.index = 4
-RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.label = 2
-RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.has_default_value = false
-RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.default_value = 0
-RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.type = 13
-RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD.cpp_type = 3
-
-RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.name = "item_count1"
-RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_count1"
-RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.number = 6
-RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.index = 5
-RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.label = 2
-RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.has_default_value = false
-RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.default_value = 0
-RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.type = 13
-RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD.cpp_type = 3
-
-RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.name = "item_id2"
-RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_id2"
-RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.number = 7
-RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.index = 6
-RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.label = 2
-RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.has_default_value = false
-RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.default_value = 0
-RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.type = 13
-RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD.cpp_type = 3
-
-RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.name = "item_rate2"
-RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_rate2"
-RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.number = 8
-RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.index = 7
-RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.label = 2
-RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.has_default_value = false
-RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.default_value = 0
-RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.type = 13
-RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD.cpp_type = 3
-
-RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.name = "item_count2"
-RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_count2"
-RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.number = 9
-RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.index = 8
-RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.label = 2
-RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.has_default_value = false
-RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.default_value = 0
-RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.type = 13
-RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD.cpp_type = 3
-
-RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.name = "item_id3"
-RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_id3"
-RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.number = 10
-RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.index = 9
-RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.label = 2
-RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.has_default_value = false
-RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.default_value = 0
-RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.type = 13
-RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD.cpp_type = 3
-
-RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.name = "item_rate3"
-RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_rate3"
-RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.number = 11
-RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.index = 10
-RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.label = 2
-RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.has_default_value = false
-RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.default_value = 0
-RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.type = 13
-RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD.cpp_type = 3
-
-RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.name = "item_count3"
-RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.full_name = ".ftcfg.rune_decompose_cfg.item_count3"
-RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.number = 12
-RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.index = 11
-RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.label = 2
-RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.has_default_value = false
-RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.default_value = 0
-RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.type = 13
-RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD.cpp_type = 3
-
-RUNE_DECOMPOSE_CFG.name = "rune_decompose_cfg"
-RUNE_DECOMPOSE_CFG.full_name = ".ftcfg.rune_decompose_cfg"
-RUNE_DECOMPOSE_CFG.nested_types = {}
-RUNE_DECOMPOSE_CFG.enum_types = {}
-RUNE_DECOMPOSE_CFG.fields = {RUNE_DECOMPOSE_CFG_ID_FIELD, RUNE_DECOMPOSE_CFG_SILVER_FIELD, RUNE_DECOMPOSE_CFG_GOLD_FIELD, RUNE_DECOMPOSE_CFG_ITEM_ID1_FIELD, RUNE_DECOMPOSE_CFG_ITEM_RATE1_FIELD, RUNE_DECOMPOSE_CFG_ITEM_COUNT1_FIELD, RUNE_DECOMPOSE_CFG_ITEM_ID2_FIELD, RUNE_DECOMPOSE_CFG_ITEM_RATE2_FIELD, RUNE_DECOMPOSE_CFG_ITEM_COUNT2_FIELD, RUNE_DECOMPOSE_CFG_ITEM_ID3_FIELD, RUNE_DECOMPOSE_CFG_ITEM_RATE3_FIELD, RUNE_DECOMPOSE_CFG_ITEM_COUNT3_FIELD}
-RUNE_DECOMPOSE_CFG.is_extendable = false
-RUNE_DECOMPOSE_CFG.extensions = {}
-RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.name = "items"
-RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rune_decompose_cfgs.items"
-RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.number = 1
-RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.index = 0
-RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.label = 3
-RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.has_default_value = false
-RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.default_value = {}
-RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.message_type = RUNE_DECOMPOSE_CFG
-RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.type = 11
-RUNE_DECOMPOSE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-RUNE_DECOMPOSE_CFGS.name = "rune_decompose_cfgs"
-RUNE_DECOMPOSE_CFGS.full_name = ".ftcfg.rune_decompose_cfgs"
-RUNE_DECOMPOSE_CFGS.nested_types = {}
-RUNE_DECOMPOSE_CFGS.enum_types = {}
-RUNE_DECOMPOSE_CFGS.fields = {RUNE_DECOMPOSE_CFGS_ITEMS_FIELD}
-RUNE_DECOMPOSE_CFGS.is_extendable = false
-RUNE_DECOMPOSE_CFGS.extensions = {}
-JEWELRY_MAKE_CFG_ID_FIELD.name = "id"
-JEWELRY_MAKE_CFG_ID_FIELD.full_name = ".ftcfg.jewelry_make_cfg.id"
-JEWELRY_MAKE_CFG_ID_FIELD.number = 1
-JEWELRY_MAKE_CFG_ID_FIELD.index = 0
-JEWELRY_MAKE_CFG_ID_FIELD.label = 2
-JEWELRY_MAKE_CFG_ID_FIELD.has_default_value = false
-JEWELRY_MAKE_CFG_ID_FIELD.default_value = 0
-JEWELRY_MAKE_CFG_ID_FIELD.type = 13
-JEWELRY_MAKE_CFG_ID_FIELD.cpp_type = 3
-
-JEWELRY_MAKE_CFG_POP_COST_FIELD.name = "pop_cost"
-JEWELRY_MAKE_CFG_POP_COST_FIELD.full_name = ".ftcfg.jewelry_make_cfg.pop_cost"
-JEWELRY_MAKE_CFG_POP_COST_FIELD.number = 2
-JEWELRY_MAKE_CFG_POP_COST_FIELD.index = 1
-JEWELRY_MAKE_CFG_POP_COST_FIELD.label = 2
-JEWELRY_MAKE_CFG_POP_COST_FIELD.has_default_value = false
-JEWELRY_MAKE_CFG_POP_COST_FIELD.default_value = 0
-JEWELRY_MAKE_CFG_POP_COST_FIELD.type = 5
-JEWELRY_MAKE_CFG_POP_COST_FIELD.cpp_type = 1
-
-JEWELRY_MAKE_CFG_MONEY_COST_FIELD.name = "money_cost"
-JEWELRY_MAKE_CFG_MONEY_COST_FIELD.full_name = ".ftcfg.jewelry_make_cfg.money_cost"
-JEWELRY_MAKE_CFG_MONEY_COST_FIELD.number = 3
-JEWELRY_MAKE_CFG_MONEY_COST_FIELD.index = 2
-JEWELRY_MAKE_CFG_MONEY_COST_FIELD.label = 2
-JEWELRY_MAKE_CFG_MONEY_COST_FIELD.has_default_value = false
-JEWELRY_MAKE_CFG_MONEY_COST_FIELD.default_value = 0
-JEWELRY_MAKE_CFG_MONEY_COST_FIELD.type = 5
-JEWELRY_MAKE_CFG_MONEY_COST_FIELD.cpp_type = 1
-
-JEWELRY_MAKE_CFG.name = "jewelry_make_cfg"
-JEWELRY_MAKE_CFG.full_name = ".ftcfg.jewelry_make_cfg"
-JEWELRY_MAKE_CFG.nested_types = {}
-JEWELRY_MAKE_CFG.enum_types = {}
-JEWELRY_MAKE_CFG.fields = {JEWELRY_MAKE_CFG_ID_FIELD, JEWELRY_MAKE_CFG_POP_COST_FIELD, JEWELRY_MAKE_CFG_MONEY_COST_FIELD}
-JEWELRY_MAKE_CFG.is_extendable = false
-JEWELRY_MAKE_CFG.extensions = {}
-JEWELRY_MAKE_CFGS_ITEMS_FIELD.name = "items"
-JEWELRY_MAKE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.jewelry_make_cfgs.items"
-JEWELRY_MAKE_CFGS_ITEMS_FIELD.number = 1
-JEWELRY_MAKE_CFGS_ITEMS_FIELD.index = 0
-JEWELRY_MAKE_CFGS_ITEMS_FIELD.label = 3
-JEWELRY_MAKE_CFGS_ITEMS_FIELD.has_default_value = false
-JEWELRY_MAKE_CFGS_ITEMS_FIELD.default_value = {}
-JEWELRY_MAKE_CFGS_ITEMS_FIELD.message_type = JEWELRY_MAKE_CFG
-JEWELRY_MAKE_CFGS_ITEMS_FIELD.type = 11
-JEWELRY_MAKE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-JEWELRY_MAKE_CFGS.name = "jewelry_make_cfgs"
-JEWELRY_MAKE_CFGS.full_name = ".ftcfg.jewelry_make_cfgs"
-JEWELRY_MAKE_CFGS.nested_types = {}
-JEWELRY_MAKE_CFGS.enum_types = {}
-JEWELRY_MAKE_CFGS.fields = {JEWELRY_MAKE_CFGS_ITEMS_FIELD}
-JEWELRY_MAKE_CFGS.is_extendable = false
-JEWELRY_MAKE_CFGS.extensions = {}
-WORLD_MAP_CFG_ID_FIELD.name = "id"
-WORLD_MAP_CFG_ID_FIELD.full_name = ".ftcfg.world_map_cfg.id"
-WORLD_MAP_CFG_ID_FIELD.number = 1
-WORLD_MAP_CFG_ID_FIELD.index = 0
-WORLD_MAP_CFG_ID_FIELD.label = 2
-WORLD_MAP_CFG_ID_FIELD.has_default_value = false
-WORLD_MAP_CFG_ID_FIELD.default_value = 0
-WORLD_MAP_CFG_ID_FIELD.type = 5
-WORLD_MAP_CFG_ID_FIELD.cpp_type = 1
-
-WORLD_MAP_CFG_SCENE_NAME_FIELD.name = "scene_name"
-WORLD_MAP_CFG_SCENE_NAME_FIELD.full_name = ".ftcfg.world_map_cfg.scene_name"
-WORLD_MAP_CFG_SCENE_NAME_FIELD.number = 2
-WORLD_MAP_CFG_SCENE_NAME_FIELD.index = 1
-WORLD_MAP_CFG_SCENE_NAME_FIELD.label = 2
-WORLD_MAP_CFG_SCENE_NAME_FIELD.has_default_value = false
-WORLD_MAP_CFG_SCENE_NAME_FIELD.default_value = 0
-WORLD_MAP_CFG_SCENE_NAME_FIELD.type = 5
-WORLD_MAP_CFG_SCENE_NAME_FIELD.cpp_type = 1
-
-WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.name = "scene_nameshow"
-WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.full_name = ".ftcfg.world_map_cfg.scene_nameshow"
-WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.number = 3
-WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.index = 2
-WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.label = 2
-WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.has_default_value = false
-WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.default_value = ""
-WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.type = 9
-WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD.cpp_type = 9
-
-WORLD_MAP_CFG_OPEN_LV_FIELD.name = "open_lv"
-WORLD_MAP_CFG_OPEN_LV_FIELD.full_name = ".ftcfg.world_map_cfg.open_lv"
-WORLD_MAP_CFG_OPEN_LV_FIELD.number = 4
-WORLD_MAP_CFG_OPEN_LV_FIELD.index = 3
-WORLD_MAP_CFG_OPEN_LV_FIELD.label = 2
-WORLD_MAP_CFG_OPEN_LV_FIELD.has_default_value = false
-WORLD_MAP_CFG_OPEN_LV_FIELD.default_value = 0
-WORLD_MAP_CFG_OPEN_LV_FIELD.type = 5
-WORLD_MAP_CFG_OPEN_LV_FIELD.cpp_type = 1
-
-WORLD_MAP_CFG_OPENLV_SHOW_FIELD.name = "openlv_show"
-WORLD_MAP_CFG_OPENLV_SHOW_FIELD.full_name = ".ftcfg.world_map_cfg.openlv_show"
-WORLD_MAP_CFG_OPENLV_SHOW_FIELD.number = 5
-WORLD_MAP_CFG_OPENLV_SHOW_FIELD.index = 4
-WORLD_MAP_CFG_OPENLV_SHOW_FIELD.label = 2
-WORLD_MAP_CFG_OPENLV_SHOW_FIELD.has_default_value = false
-WORLD_MAP_CFG_OPENLV_SHOW_FIELD.default_value = 0
-WORLD_MAP_CFG_OPENLV_SHOW_FIELD.type = 5
-WORLD_MAP_CFG_OPENLV_SHOW_FIELD.cpp_type = 1
-
-WORLD_MAP_CFG_LANGUAGE_ID_FIELD.name = "language_id"
-WORLD_MAP_CFG_LANGUAGE_ID_FIELD.full_name = ".ftcfg.world_map_cfg.language_id"
-WORLD_MAP_CFG_LANGUAGE_ID_FIELD.number = 6
-WORLD_MAP_CFG_LANGUAGE_ID_FIELD.index = 5
-WORLD_MAP_CFG_LANGUAGE_ID_FIELD.label = 2
-WORLD_MAP_CFG_LANGUAGE_ID_FIELD.has_default_value = false
-WORLD_MAP_CFG_LANGUAGE_ID_FIELD.default_value = ""
-WORLD_MAP_CFG_LANGUAGE_ID_FIELD.type = 9
-WORLD_MAP_CFG_LANGUAGE_ID_FIELD.cpp_type = 9
-
-WORLD_MAP_CFG_SCENE_ID_FIELD.name = "scene_id"
-WORLD_MAP_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.world_map_cfg.scene_id"
-WORLD_MAP_CFG_SCENE_ID_FIELD.number = 7
-WORLD_MAP_CFG_SCENE_ID_FIELD.index = 6
-WORLD_MAP_CFG_SCENE_ID_FIELD.label = 2
-WORLD_MAP_CFG_SCENE_ID_FIELD.has_default_value = false
-WORLD_MAP_CFG_SCENE_ID_FIELD.default_value = 0
-WORLD_MAP_CFG_SCENE_ID_FIELD.type = 5
-WORLD_MAP_CFG_SCENE_ID_FIELD.cpp_type = 1
-
-WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.name = "initial_whether"
-WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.full_name = ".ftcfg.world_map_cfg.initial_whether"
-WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.number = 8
-WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.index = 7
-WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.label = 2
-WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.has_default_value = false
-WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.default_value = 0
-WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.type = 5
-WORLD_MAP_CFG_INITIAL_WHETHER_FIELD.cpp_type = 1
-
-WORLD_MAP_CFG_SCENE_ICON_FIELD.name = "scene_icon"
-WORLD_MAP_CFG_SCENE_ICON_FIELD.full_name = ".ftcfg.world_map_cfg.scene_icon"
-WORLD_MAP_CFG_SCENE_ICON_FIELD.number = 9
-WORLD_MAP_CFG_SCENE_ICON_FIELD.index = 8
-WORLD_MAP_CFG_SCENE_ICON_FIELD.label = 2
-WORLD_MAP_CFG_SCENE_ICON_FIELD.has_default_value = false
-WORLD_MAP_CFG_SCENE_ICON_FIELD.default_value = 0
-WORLD_MAP_CFG_SCENE_ICON_FIELD.type = 5
-WORLD_MAP_CFG_SCENE_ICON_FIELD.cpp_type = 1
-
-WORLD_MAP_CFG.name = "world_map_cfg"
-WORLD_MAP_CFG.full_name = ".ftcfg.world_map_cfg"
-WORLD_MAP_CFG.nested_types = {}
-WORLD_MAP_CFG.enum_types = {}
-WORLD_MAP_CFG.fields = {WORLD_MAP_CFG_ID_FIELD, WORLD_MAP_CFG_SCENE_NAME_FIELD, WORLD_MAP_CFG_SCENE_NAMESHOW_FIELD, WORLD_MAP_CFG_OPEN_LV_FIELD, WORLD_MAP_CFG_OPENLV_SHOW_FIELD, WORLD_MAP_CFG_LANGUAGE_ID_FIELD, WORLD_MAP_CFG_SCENE_ID_FIELD, WORLD_MAP_CFG_INITIAL_WHETHER_FIELD, WORLD_MAP_CFG_SCENE_ICON_FIELD}
-WORLD_MAP_CFG.is_extendable = false
-WORLD_MAP_CFG.extensions = {}
-WORLD_MAP_CFGS_ITEMS_FIELD.name = "items"
-WORLD_MAP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.world_map_cfgs.items"
-WORLD_MAP_CFGS_ITEMS_FIELD.number = 1
-WORLD_MAP_CFGS_ITEMS_FIELD.index = 0
-WORLD_MAP_CFGS_ITEMS_FIELD.label = 3
-WORLD_MAP_CFGS_ITEMS_FIELD.has_default_value = false
-WORLD_MAP_CFGS_ITEMS_FIELD.default_value = {}
-WORLD_MAP_CFGS_ITEMS_FIELD.message_type = WORLD_MAP_CFG
-WORLD_MAP_CFGS_ITEMS_FIELD.type = 11
-WORLD_MAP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-WORLD_MAP_CFGS.name = "world_map_cfgs"
-WORLD_MAP_CFGS.full_name = ".ftcfg.world_map_cfgs"
-WORLD_MAP_CFGS.nested_types = {}
-WORLD_MAP_CFGS.enum_types = {}
-WORLD_MAP_CFGS.fields = {WORLD_MAP_CFGS_ITEMS_FIELD}
-WORLD_MAP_CFGS.is_extendable = false
-WORLD_MAP_CFGS.extensions = {}
-PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.name = "partner_quality"
-PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.full_name = ".ftcfg.partner_currency_cfg.partner_quality"
-PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.number = 1
-PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.index = 0
-PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.label = 2
-PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.has_default_value = false
-PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.default_value = nil
-PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.enum_type = config_predefine_pb.EITEMCOLOR
-PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.type = 14
-PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD.cpp_type = 8
-
-PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.name = "currency_num"
-PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.full_name = ".ftcfg.partner_currency_cfg.currency_num"
-PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.number = 2
-PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.index = 1
-PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.label = 3
-PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.has_default_value = false
-PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.default_value = {}
-PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.type = 5
-PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD.cpp_type = 1
-
-PARTNER_CURRENCY_CFG.name = "partner_currency_cfg"
-PARTNER_CURRENCY_CFG.full_name = ".ftcfg.partner_currency_cfg"
-PARTNER_CURRENCY_CFG.nested_types = {}
-PARTNER_CURRENCY_CFG.enum_types = {}
-PARTNER_CURRENCY_CFG.fields = {PARTNER_CURRENCY_CFG_PARTNER_QUALITY_FIELD, PARTNER_CURRENCY_CFG_CURRENCY_NUM_FIELD}
-PARTNER_CURRENCY_CFG.is_extendable = false
-PARTNER_CURRENCY_CFG.extensions = {}
-PARTNER_CURRENCY_CFGS_ITEMS_FIELD.name = "items"
-PARTNER_CURRENCY_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_currency_cfgs.items"
-PARTNER_CURRENCY_CFGS_ITEMS_FIELD.number = 1
-PARTNER_CURRENCY_CFGS_ITEMS_FIELD.index = 0
-PARTNER_CURRENCY_CFGS_ITEMS_FIELD.label = 3
-PARTNER_CURRENCY_CFGS_ITEMS_FIELD.has_default_value = false
-PARTNER_CURRENCY_CFGS_ITEMS_FIELD.default_value = {}
-PARTNER_CURRENCY_CFGS_ITEMS_FIELD.message_type = PARTNER_CURRENCY_CFG
-PARTNER_CURRENCY_CFGS_ITEMS_FIELD.type = 11
-PARTNER_CURRENCY_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PARTNER_CURRENCY_CFGS.name = "partner_currency_cfgs"
-PARTNER_CURRENCY_CFGS.full_name = ".ftcfg.partner_currency_cfgs"
-PARTNER_CURRENCY_CFGS.nested_types = {}
-PARTNER_CURRENCY_CFGS.enum_types = {}
-PARTNER_CURRENCY_CFGS.fields = {PARTNER_CURRENCY_CFGS_ITEMS_FIELD}
-PARTNER_CURRENCY_CFGS.is_extendable = false
-PARTNER_CURRENCY_CFGS.extensions = {}
-PARTNER_ACTIVATION_CFG_ID_FIELD.name = "id"
-PARTNER_ACTIVATION_CFG_ID_FIELD.full_name = ".ftcfg.partner_activation_cfg.id"
-PARTNER_ACTIVATION_CFG_ID_FIELD.number = 1
-PARTNER_ACTIVATION_CFG_ID_FIELD.index = 0
-PARTNER_ACTIVATION_CFG_ID_FIELD.label = 2
-PARTNER_ACTIVATION_CFG_ID_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_ID_FIELD.default_value = 0
-PARTNER_ACTIVATION_CFG_ID_FIELD.type = 5
-PARTNER_ACTIVATION_CFG_ID_FIELD.cpp_type = 1
-
-PARTNER_ACTIVATION_CFG_PLOTID_FIELD.name = "plotid"
-PARTNER_ACTIVATION_CFG_PLOTID_FIELD.full_name = ".ftcfg.partner_activation_cfg.plotid"
-PARTNER_ACTIVATION_CFG_PLOTID_FIELD.number = 2
-PARTNER_ACTIVATION_CFG_PLOTID_FIELD.index = 1
-PARTNER_ACTIVATION_CFG_PLOTID_FIELD.label = 2
-PARTNER_ACTIVATION_CFG_PLOTID_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_PLOTID_FIELD.default_value = 0
-PARTNER_ACTIVATION_CFG_PLOTID_FIELD.type = 5
-PARTNER_ACTIVATION_CFG_PLOTID_FIELD.cpp_type = 1
-
-PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.name = "branchplotid"
-PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.full_name = ".ftcfg.partner_activation_cfg.branchplotid"
-PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.number = 3
-PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.index = 2
-PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.label = 2
-PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.default_value = 0
-PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.type = 5
-PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD.cpp_type = 1
-
-PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.name = "partnerid"
-PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.full_name = ".ftcfg.partner_activation_cfg.partnerid"
-PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.number = 4
-PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.index = 3
-PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.label = 3
-PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.default_value = {}
-PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.type = 5
-PARTNER_ACTIVATION_CFG_PARTNERID_FIELD.cpp_type = 1
-
-PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.name = "partnerimpressionlevel"
-PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.full_name = ".ftcfg.partner_activation_cfg.partnerimpressionlevel"
-PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.number = 5
-PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.index = 4
-PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.label = 3
-PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.default_value = {}
-PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.type = 5
-PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD.cpp_type = 1
-
-PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.name = "combatpower"
-PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.full_name = ".ftcfg.partner_activation_cfg.combatpower"
-PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.number = 6
-PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.index = 5
-PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.label = 2
-PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.default_value = 0
-PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.type = 5
-PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD.cpp_type = 1
-
-PARTNER_ACTIVATION_CFG_NAME_FIELD.name = "name"
-PARTNER_ACTIVATION_CFG_NAME_FIELD.full_name = ".ftcfg.partner_activation_cfg.name"
-PARTNER_ACTIVATION_CFG_NAME_FIELD.number = 7
-PARTNER_ACTIVATION_CFG_NAME_FIELD.index = 6
-PARTNER_ACTIVATION_CFG_NAME_FIELD.label = 2
-PARTNER_ACTIVATION_CFG_NAME_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_NAME_FIELD.default_value = ""
-PARTNER_ACTIVATION_CFG_NAME_FIELD.type = 9
-PARTNER_ACTIVATION_CFG_NAME_FIELD.cpp_type = 9
-
-PARTNER_ACTIVATION_CFG_ICON_FIELD.name = "icon"
-PARTNER_ACTIVATION_CFG_ICON_FIELD.full_name = ".ftcfg.partner_activation_cfg.icon"
-PARTNER_ACTIVATION_CFG_ICON_FIELD.number = 8
-PARTNER_ACTIVATION_CFG_ICON_FIELD.index = 7
-PARTNER_ACTIVATION_CFG_ICON_FIELD.label = 2
-PARTNER_ACTIVATION_CFG_ICON_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_ICON_FIELD.default_value = 0
-PARTNER_ACTIVATION_CFG_ICON_FIELD.type = 5
-PARTNER_ACTIVATION_CFG_ICON_FIELD.cpp_type = 1
-
-PARTNER_ACTIVATION_CFG_DESC_FIELD.name = "desc"
-PARTNER_ACTIVATION_CFG_DESC_FIELD.full_name = ".ftcfg.partner_activation_cfg.desc"
-PARTNER_ACTIVATION_CFG_DESC_FIELD.number = 9
-PARTNER_ACTIVATION_CFG_DESC_FIELD.index = 8
-PARTNER_ACTIVATION_CFG_DESC_FIELD.label = 2
-PARTNER_ACTIVATION_CFG_DESC_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_DESC_FIELD.default_value = ""
-PARTNER_ACTIVATION_CFG_DESC_FIELD.type = 9
-PARTNER_ACTIVATION_CFG_DESC_FIELD.cpp_type = 9
-
-PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.name = "moodids"
-PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.full_name = ".ftcfg.partner_activation_cfg.moodids"
-PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.number = 10
-PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.index = 9
-PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.label = 3
-PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.default_value = {}
-PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.type = 5
-PARTNER_ACTIVATION_CFG_MOODIDS_FIELD.cpp_type = 1
-
-PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.name = "proportions"
-PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.full_name = ".ftcfg.partner_activation_cfg.proportions"
-PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.number = 11
-PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.index = 10
-PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.label = 3
-PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.default_value = {}
-PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.type = 5
-PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD.cpp_type = 1
-
-PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.name = "maximpressionlevel"
-PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.full_name = ".ftcfg.partner_activation_cfg.maximpressionlevel"
-PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.number = 12
-PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.index = 11
-PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.label = 2
-PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.default_value = 0
-PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.type = 5
-PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD.cpp_type = 1
-
-PARTNER_ACTIVATION_CFG_GITS_FIELD.name = "gits"
-PARTNER_ACTIVATION_CFG_GITS_FIELD.full_name = ".ftcfg.partner_activation_cfg.gits"
-PARTNER_ACTIVATION_CFG_GITS_FIELD.number = 13
-PARTNER_ACTIVATION_CFG_GITS_FIELD.index = 12
-PARTNER_ACTIVATION_CFG_GITS_FIELD.label = 3
-PARTNER_ACTIVATION_CFG_GITS_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_GITS_FIELD.default_value = {}
-PARTNER_ACTIVATION_CFG_GITS_FIELD.type = 5
-PARTNER_ACTIVATION_CFG_GITS_FIELD.cpp_type = 1
-
-PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.name = "presentation1"
-PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.full_name = ".ftcfg.partner_activation_cfg.presentation1"
-PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.number = 14
-PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.index = 13
-PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.label = 3
-PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.default_value = {}
-PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.type = 5
-PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD.cpp_type = 1
-
-PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.name = "presentation2"
-PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.full_name = ".ftcfg.partner_activation_cfg.presentation2"
-PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.number = 15
-PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.index = 14
-PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.label = 3
-PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.default_value = {}
-PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.type = 5
-PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD.cpp_type = 1
-
-PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.name = "presentation3"
-PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.full_name = ".ftcfg.partner_activation_cfg.presentation3"
-PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.number = 16
-PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.index = 15
-PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.label = 3
-PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.default_value = {}
-PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.type = 5
-PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD.cpp_type = 1
-
-PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.name = "move_head"
-PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.full_name = ".ftcfg.partner_activation_cfg.move_head"
-PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.number = 17
-PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.index = 16
-PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.label = 2
-PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.default_value = ""
-PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.type = 9
-PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD.cpp_type = 9
-
-PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.name = "head_time"
-PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.full_name = ".ftcfg.partner_activation_cfg.head_time"
-PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.number = 18
-PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.index = 17
-PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.label = 2
-PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.default_value = 0.0
-PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.type = 2
-PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD.cpp_type = 6
-
-PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.name = "move_body"
-PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.full_name = ".ftcfg.partner_activation_cfg.move_body"
-PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.number = 19
-PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.index = 18
-PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.label = 2
-PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.default_value = ""
-PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.type = 9
-PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD.cpp_type = 9
-
-PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.name = "body_time"
-PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.full_name = ".ftcfg.partner_activation_cfg.body_time"
-PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.number = 20
-PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.index = 19
-PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.label = 2
-PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.default_value = 0.0
-PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.type = 2
-PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD.cpp_type = 6
-
-PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.name = "move_leg"
-PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.full_name = ".ftcfg.partner_activation_cfg.move_leg"
-PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.number = 21
-PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.index = 20
-PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.label = 2
-PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.default_value = ""
-PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.type = 9
-PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD.cpp_type = 9
-
-PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.name = "leg_time"
-PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.full_name = ".ftcfg.partner_activation_cfg.leg_time"
-PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.number = 22
-PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.index = 21
-PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.label = 2
-PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.default_value = 0.0
-PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.type = 2
-PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD.cpp_type = 6
-
-PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.name = "move_promote"
-PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.full_name = ".ftcfg.partner_activation_cfg.move_promote"
-PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.number = 23
-PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.index = 22
-PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.label = 2
-PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.default_value = ""
-PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.type = 9
-PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD.cpp_type = 9
-
-PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.name = "pronote_time"
-PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.full_name = ".ftcfg.partner_activation_cfg.pronote_time"
-PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.number = 24
-PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.index = 23
-PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.label = 2
-PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.default_value = 0.0
-PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.type = 2
-PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD.cpp_type = 6
-
-PARTNER_ACTIVATION_CFG.name = "partner_activation_cfg"
-PARTNER_ACTIVATION_CFG.full_name = ".ftcfg.partner_activation_cfg"
-PARTNER_ACTIVATION_CFG.nested_types = {}
-PARTNER_ACTIVATION_CFG.enum_types = {}
-PARTNER_ACTIVATION_CFG.fields = {PARTNER_ACTIVATION_CFG_ID_FIELD, PARTNER_ACTIVATION_CFG_PLOTID_FIELD, PARTNER_ACTIVATION_CFG_BRANCHPLOTID_FIELD, PARTNER_ACTIVATION_CFG_PARTNERID_FIELD, PARTNER_ACTIVATION_CFG_PARTNERIMPRESSIONLEVEL_FIELD, PARTNER_ACTIVATION_CFG_COMBATPOWER_FIELD, PARTNER_ACTIVATION_CFG_NAME_FIELD, PARTNER_ACTIVATION_CFG_ICON_FIELD, PARTNER_ACTIVATION_CFG_DESC_FIELD, PARTNER_ACTIVATION_CFG_MOODIDS_FIELD, PARTNER_ACTIVATION_CFG_PROPORTIONS_FIELD, PARTNER_ACTIVATION_CFG_MAXIMPRESSIONLEVEL_FIELD, PARTNER_ACTIVATION_CFG_GITS_FIELD, PARTNER_ACTIVATION_CFG_PRESENTATION1_FIELD, PARTNER_ACTIVATION_CFG_PRESENTATION2_FIELD, PARTNER_ACTIVATION_CFG_PRESENTATION3_FIELD, PARTNER_ACTIVATION_CFG_MOVE_HEAD_FIELD, PARTNER_ACTIVATION_CFG_HEAD_TIME_FIELD, PARTNER_ACTIVATION_CFG_MOVE_BODY_FIELD, PARTNER_ACTIVATION_CFG_BODY_TIME_FIELD, PARTNER_ACTIVATION_CFG_MOVE_LEG_FIELD, PARTNER_ACTIVATION_CFG_LEG_TIME_FIELD, PARTNER_ACTIVATION_CFG_MOVE_PROMOTE_FIELD, PARTNER_ACTIVATION_CFG_PRONOTE_TIME_FIELD}
-PARTNER_ACTIVATION_CFG.is_extendable = false
-PARTNER_ACTIVATION_CFG.extensions = {}
-PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.name = "items"
-PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_activation_cfgs.items"
-PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.number = 1
-PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.index = 0
-PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.label = 3
-PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.has_default_value = false
-PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.default_value = {}
-PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.message_type = PARTNER_ACTIVATION_CFG
-PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.type = 11
-PARTNER_ACTIVATION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PARTNER_ACTIVATION_CFGS.name = "partner_activation_cfgs"
-PARTNER_ACTIVATION_CFGS.full_name = ".ftcfg.partner_activation_cfgs"
-PARTNER_ACTIVATION_CFGS.nested_types = {}
-PARTNER_ACTIVATION_CFGS.enum_types = {}
-PARTNER_ACTIVATION_CFGS.fields = {PARTNER_ACTIVATION_CFGS_ITEMS_FIELD}
-PARTNER_ACTIVATION_CFGS.is_extendable = false
-PARTNER_ACTIVATION_CFGS.extensions = {}
-PARTNER_MOOD_CFG_ID_FIELD.name = "id"
-PARTNER_MOOD_CFG_ID_FIELD.full_name = ".ftcfg.partner_mood_cfg.id"
-PARTNER_MOOD_CFG_ID_FIELD.number = 1
-PARTNER_MOOD_CFG_ID_FIELD.index = 0
-PARTNER_MOOD_CFG_ID_FIELD.label = 2
-PARTNER_MOOD_CFG_ID_FIELD.has_default_value = false
-PARTNER_MOOD_CFG_ID_FIELD.default_value = 0
-PARTNER_MOOD_CFG_ID_FIELD.type = 5
-PARTNER_MOOD_CFG_ID_FIELD.cpp_type = 1
-
-PARTNER_MOOD_CFG_GIFTID_FIELD.name = "giftid"
-PARTNER_MOOD_CFG_GIFTID_FIELD.full_name = ".ftcfg.partner_mood_cfg.giftid"
-PARTNER_MOOD_CFG_GIFTID_FIELD.number = 2
-PARTNER_MOOD_CFG_GIFTID_FIELD.index = 1
-PARTNER_MOOD_CFG_GIFTID_FIELD.label = 3
-PARTNER_MOOD_CFG_GIFTID_FIELD.has_default_value = false
-PARTNER_MOOD_CFG_GIFTID_FIELD.default_value = {}
-PARTNER_MOOD_CFG_GIFTID_FIELD.type = 5
-PARTNER_MOOD_CFG_GIFTID_FIELD.cpp_type = 1
-
-PARTNER_MOOD_CFG_MOODTEXT_FIELD.name = "moodtext"
-PARTNER_MOOD_CFG_MOODTEXT_FIELD.full_name = ".ftcfg.partner_mood_cfg.moodtext"
-PARTNER_MOOD_CFG_MOODTEXT_FIELD.number = 3
-PARTNER_MOOD_CFG_MOODTEXT_FIELD.index = 2
-PARTNER_MOOD_CFG_MOODTEXT_FIELD.label = 2
-PARTNER_MOOD_CFG_MOODTEXT_FIELD.has_default_value = false
-PARTNER_MOOD_CFG_MOODTEXT_FIELD.default_value = ""
-PARTNER_MOOD_CFG_MOODTEXT_FIELD.type = 9
-PARTNER_MOOD_CFG_MOODTEXT_FIELD.cpp_type = 9
-
-PARTNER_MOOD_CFG_MULTIPLE_FIELD.name = "multiple"
-PARTNER_MOOD_CFG_MULTIPLE_FIELD.full_name = ".ftcfg.partner_mood_cfg.multiple"
-PARTNER_MOOD_CFG_MULTIPLE_FIELD.number = 4
-PARTNER_MOOD_CFG_MULTIPLE_FIELD.index = 3
-PARTNER_MOOD_CFG_MULTIPLE_FIELD.label = 2
-PARTNER_MOOD_CFG_MULTIPLE_FIELD.has_default_value = false
-PARTNER_MOOD_CFG_MULTIPLE_FIELD.default_value = 0
-PARTNER_MOOD_CFG_MULTIPLE_FIELD.type = 5
-PARTNER_MOOD_CFG_MULTIPLE_FIELD.cpp_type = 1
-
-PARTNER_MOOD_CFG.name = "partner_mood_cfg"
-PARTNER_MOOD_CFG.full_name = ".ftcfg.partner_mood_cfg"
-PARTNER_MOOD_CFG.nested_types = {}
-PARTNER_MOOD_CFG.enum_types = {}
-PARTNER_MOOD_CFG.fields = {PARTNER_MOOD_CFG_ID_FIELD, PARTNER_MOOD_CFG_GIFTID_FIELD, PARTNER_MOOD_CFG_MOODTEXT_FIELD, PARTNER_MOOD_CFG_MULTIPLE_FIELD}
-PARTNER_MOOD_CFG.is_extendable = false
-PARTNER_MOOD_CFG.extensions = {}
-PARTNER_MOOD_CFGS_ITEMS_FIELD.name = "items"
-PARTNER_MOOD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_mood_cfgs.items"
-PARTNER_MOOD_CFGS_ITEMS_FIELD.number = 1
-PARTNER_MOOD_CFGS_ITEMS_FIELD.index = 0
-PARTNER_MOOD_CFGS_ITEMS_FIELD.label = 3
-PARTNER_MOOD_CFGS_ITEMS_FIELD.has_default_value = false
-PARTNER_MOOD_CFGS_ITEMS_FIELD.default_value = {}
-PARTNER_MOOD_CFGS_ITEMS_FIELD.message_type = PARTNER_MOOD_CFG
-PARTNER_MOOD_CFGS_ITEMS_FIELD.type = 11
-PARTNER_MOOD_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PARTNER_MOOD_CFGS.name = "partner_mood_cfgs"
-PARTNER_MOOD_CFGS.full_name = ".ftcfg.partner_mood_cfgs"
-PARTNER_MOOD_CFGS.nested_types = {}
-PARTNER_MOOD_CFGS.enum_types = {}
-PARTNER_MOOD_CFGS.fields = {PARTNER_MOOD_CFGS_ITEMS_FIELD}
-PARTNER_MOOD_CFGS.is_extendable = false
-PARTNER_MOOD_CFGS.extensions = {}
-PARTNER_IMPRESSION_CFG_ID_FIELD.name = "id"
-PARTNER_IMPRESSION_CFG_ID_FIELD.full_name = ".ftcfg.partner_impression_cfg.id"
-PARTNER_IMPRESSION_CFG_ID_FIELD.number = 1
-PARTNER_IMPRESSION_CFG_ID_FIELD.index = 0
-PARTNER_IMPRESSION_CFG_ID_FIELD.label = 2
-PARTNER_IMPRESSION_CFG_ID_FIELD.has_default_value = false
-PARTNER_IMPRESSION_CFG_ID_FIELD.default_value = 0
-PARTNER_IMPRESSION_CFG_ID_FIELD.type = 5
-PARTNER_IMPRESSION_CFG_ID_FIELD.cpp_type = 1
-
-PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.name = "partnerid"
-PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.full_name = ".ftcfg.partner_impression_cfg.partnerid"
-PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.number = 2
-PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.index = 1
-PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.label = 2
-PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.has_default_value = false
-PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.default_value = 0
-PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.type = 5
-PARTNER_IMPRESSION_CFG_PARTNERID_FIELD.cpp_type = 1
-
-PARTNER_IMPRESSION_CFG_LEVEL_FIELD.name = "level"
-PARTNER_IMPRESSION_CFG_LEVEL_FIELD.full_name = ".ftcfg.partner_impression_cfg.level"
-PARTNER_IMPRESSION_CFG_LEVEL_FIELD.number = 3
-PARTNER_IMPRESSION_CFG_LEVEL_FIELD.index = 2
-PARTNER_IMPRESSION_CFG_LEVEL_FIELD.label = 2
-PARTNER_IMPRESSION_CFG_LEVEL_FIELD.has_default_value = false
-PARTNER_IMPRESSION_CFG_LEVEL_FIELD.default_value = 0
-PARTNER_IMPRESSION_CFG_LEVEL_FIELD.type = 5
-PARTNER_IMPRESSION_CFG_LEVEL_FIELD.cpp_type = 1
-
-PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.name = "biographyid"
-PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.full_name = ".ftcfg.partner_impression_cfg.biographyid"
-PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.number = 4
-PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.index = 3
-PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.label = 2
-PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.has_default_value = false
-PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.default_value = 0
-PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.type = 5
-PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD.cpp_type = 1
-
-PARTNER_IMPRESSION_CFG.name = "partner_impression_cfg"
-PARTNER_IMPRESSION_CFG.full_name = ".ftcfg.partner_impression_cfg"
-PARTNER_IMPRESSION_CFG.nested_types = {}
-PARTNER_IMPRESSION_CFG.enum_types = {}
-PARTNER_IMPRESSION_CFG.fields = {PARTNER_IMPRESSION_CFG_ID_FIELD, PARTNER_IMPRESSION_CFG_PARTNERID_FIELD, PARTNER_IMPRESSION_CFG_LEVEL_FIELD, PARTNER_IMPRESSION_CFG_BIOGRAPHYID_FIELD}
-PARTNER_IMPRESSION_CFG.is_extendable = false
-PARTNER_IMPRESSION_CFG.extensions = {}
-PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.name = "items"
-PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_impression_cfgs.items"
-PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.number = 1
-PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.index = 0
-PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.label = 3
-PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.has_default_value = false
-PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.default_value = {}
-PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.message_type = PARTNER_IMPRESSION_CFG
-PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.type = 11
-PARTNER_IMPRESSION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PARTNER_IMPRESSION_CFGS.name = "partner_impression_cfgs"
-PARTNER_IMPRESSION_CFGS.full_name = ".ftcfg.partner_impression_cfgs"
-PARTNER_IMPRESSION_CFGS.nested_types = {}
-PARTNER_IMPRESSION_CFGS.enum_types = {}
-PARTNER_IMPRESSION_CFGS.fields = {PARTNER_IMPRESSION_CFGS_ITEMS_FIELD}
-PARTNER_IMPRESSION_CFGS.is_extendable = false
-PARTNER_IMPRESSION_CFGS.extensions = {}
-PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.name = "id"
-PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.full_name = ".ftcfg.partner_impre_levelup_cfg.id"
-PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.number = 1
-PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.index = 0
-PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.label = 2
-PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.has_default_value = false
-PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.default_value = 0
-PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.type = 5
-PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD.cpp_type = 1
-
-PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.name = "type"
-PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.full_name = ".ftcfg.partner_impre_levelup_cfg.type"
-PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.number = 2
-PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.index = 1
-PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.label = 2
-PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.has_default_value = false
-PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.default_value = 0
-PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.type = 5
-PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD.cpp_type = 1
-
-PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.name = "level"
-PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.full_name = ".ftcfg.partner_impre_levelup_cfg.level"
-PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.number = 3
-PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.index = 2
-PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.label = 2
-PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.has_default_value = false
-PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.default_value = 0
-PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.type = 5
-PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD.cpp_type = 1
-
-PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.name = "exp"
-PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.full_name = ".ftcfg.partner_impre_levelup_cfg.exp"
-PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.number = 4
-PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.index = 3
-PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.label = 2
-PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.has_default_value = false
-PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.default_value = 0
-PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.type = 5
-PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD.cpp_type = 1
-
-PARTNER_IMPRE_LEVELUP_CFG.name = "partner_impre_levelup_cfg"
-PARTNER_IMPRE_LEVELUP_CFG.full_name = ".ftcfg.partner_impre_levelup_cfg"
-PARTNER_IMPRE_LEVELUP_CFG.nested_types = {}
-PARTNER_IMPRE_LEVELUP_CFG.enum_types = {}
-PARTNER_IMPRE_LEVELUP_CFG.fields = {PARTNER_IMPRE_LEVELUP_CFG_ID_FIELD, PARTNER_IMPRE_LEVELUP_CFG_TYPE_FIELD, PARTNER_IMPRE_LEVELUP_CFG_LEVEL_FIELD, PARTNER_IMPRE_LEVELUP_CFG_EXP_FIELD}
-PARTNER_IMPRE_LEVELUP_CFG.is_extendable = false
-PARTNER_IMPRE_LEVELUP_CFG.extensions = {}
-PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.name = "items"
-PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_impre_levelup_cfgs.items"
-PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.number = 1
-PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.index = 0
-PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.label = 3
-PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.has_default_value = false
-PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.default_value = {}
-PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.message_type = PARTNER_IMPRE_LEVELUP_CFG
-PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.type = 11
-PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PARTNER_IMPRE_LEVELUP_CFGS.name = "partner_impre_levelup_cfgs"
-PARTNER_IMPRE_LEVELUP_CFGS.full_name = ".ftcfg.partner_impre_levelup_cfgs"
-PARTNER_IMPRE_LEVELUP_CFGS.nested_types = {}
-PARTNER_IMPRE_LEVELUP_CFGS.enum_types = {}
-PARTNER_IMPRE_LEVELUP_CFGS.fields = {PARTNER_IMPRE_LEVELUP_CFGS_ITEMS_FIELD}
-PARTNER_IMPRE_LEVELUP_CFGS.is_extendable = false
-PARTNER_IMPRE_LEVELUP_CFGS.extensions = {}
-PARTNER_MULTIPLE_CFG_ID_FIELD.name = "id"
-PARTNER_MULTIPLE_CFG_ID_FIELD.full_name = ".ftcfg.partner_multiple_cfg.id"
-PARTNER_MULTIPLE_CFG_ID_FIELD.number = 1
-PARTNER_MULTIPLE_CFG_ID_FIELD.index = 0
-PARTNER_MULTIPLE_CFG_ID_FIELD.label = 2
-PARTNER_MULTIPLE_CFG_ID_FIELD.has_default_value = false
-PARTNER_MULTIPLE_CFG_ID_FIELD.default_value = 0
-PARTNER_MULTIPLE_CFG_ID_FIELD.type = 5
-PARTNER_MULTIPLE_CFG_ID_FIELD.cpp_type = 1
-
-PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.name = "clickgrowth"
-PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.full_name = ".ftcfg.partner_multiple_cfg.clickgrowth"
-PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.number = 2
-PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.index = 1
-PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.label = 2
-PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.has_default_value = false
-PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.default_value = 0
-PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.type = 5
-PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD.cpp_type = 1
-
-PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.name = "probability"
-PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.full_name = ".ftcfg.partner_multiple_cfg.probability"
-PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.number = 3
-PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.index = 2
-PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.label = 3
-PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.has_default_value = false
-PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.default_value = {}
-PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.type = 5
-PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD.cpp_type = 1
-
-PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.name = "multiple"
-PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.full_name = ".ftcfg.partner_multiple_cfg.multiple"
-PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.number = 4
-PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.index = 3
-PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.label = 3
-PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.has_default_value = false
-PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.default_value = {}
-PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.type = 5
-PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD.cpp_type = 1
-
-PARTNER_MULTIPLE_CFG.name = "partner_multiple_cfg"
-PARTNER_MULTIPLE_CFG.full_name = ".ftcfg.partner_multiple_cfg"
-PARTNER_MULTIPLE_CFG.nested_types = {}
-PARTNER_MULTIPLE_CFG.enum_types = {}
-PARTNER_MULTIPLE_CFG.fields = {PARTNER_MULTIPLE_CFG_ID_FIELD, PARTNER_MULTIPLE_CFG_CLICKGROWTH_FIELD, PARTNER_MULTIPLE_CFG_PROBABILITY_FIELD, PARTNER_MULTIPLE_CFG_MULTIPLE_FIELD}
-PARTNER_MULTIPLE_CFG.is_extendable = false
-PARTNER_MULTIPLE_CFG.extensions = {}
-PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.name = "items"
-PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_multiple_cfgs.items"
-PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.number = 1
-PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.index = 0
-PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.label = 3
-PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.has_default_value = false
-PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.default_value = {}
-PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.message_type = PARTNER_MULTIPLE_CFG
-PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.type = 11
-PARTNER_MULTIPLE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PARTNER_MULTIPLE_CFGS.name = "partner_multiple_cfgs"
-PARTNER_MULTIPLE_CFGS.full_name = ".ftcfg.partner_multiple_cfgs"
-PARTNER_MULTIPLE_CFGS.nested_types = {}
-PARTNER_MULTIPLE_CFGS.enum_types = {}
-PARTNER_MULTIPLE_CFGS.fields = {PARTNER_MULTIPLE_CFGS_ITEMS_FIELD}
-PARTNER_MULTIPLE_CFGS.is_extendable = false
-PARTNER_MULTIPLE_CFGS.extensions = {}
-PARTNER_STAR_CFG_ID_FIELD.name = "id"
-PARTNER_STAR_CFG_ID_FIELD.full_name = ".ftcfg.partner_star_cfg.id"
-PARTNER_STAR_CFG_ID_FIELD.number = 1
-PARTNER_STAR_CFG_ID_FIELD.index = 0
-PARTNER_STAR_CFG_ID_FIELD.label = 2
-PARTNER_STAR_CFG_ID_FIELD.has_default_value = false
-PARTNER_STAR_CFG_ID_FIELD.default_value = 0
-PARTNER_STAR_CFG_ID_FIELD.type = 5
-PARTNER_STAR_CFG_ID_FIELD.cpp_type = 1
-
-PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.name = "partner_type"
-PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.full_name = ".ftcfg.partner_star_cfg.partner_type"
-PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.number = 2
-PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.index = 1
-PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.label = 2
-PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.has_default_value = false
-PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.default_value = 0
-PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.type = 5
-PARTNER_STAR_CFG_PARTNER_TYPE_FIELD.cpp_type = 1
-
-PARTNER_STAR_CFG_STAR_FIELD.name = "star"
-PARTNER_STAR_CFG_STAR_FIELD.full_name = ".ftcfg.partner_star_cfg.star"
-PARTNER_STAR_CFG_STAR_FIELD.number = 3
-PARTNER_STAR_CFG_STAR_FIELD.index = 2
-PARTNER_STAR_CFG_STAR_FIELD.label = 2
-PARTNER_STAR_CFG_STAR_FIELD.has_default_value = false
-PARTNER_STAR_CFG_STAR_FIELD.default_value = 0
-PARTNER_STAR_CFG_STAR_FIELD.type = 5
-PARTNER_STAR_CFG_STAR_FIELD.cpp_type = 1
-
-PARTNER_STAR_CFG_STUDY_GROUP_FIELD.name = "study_group"
-PARTNER_STAR_CFG_STUDY_GROUP_FIELD.full_name = ".ftcfg.partner_star_cfg.study_group"
-PARTNER_STAR_CFG_STUDY_GROUP_FIELD.number = 4
-PARTNER_STAR_CFG_STUDY_GROUP_FIELD.index = 3
-PARTNER_STAR_CFG_STUDY_GROUP_FIELD.label = 2
-PARTNER_STAR_CFG_STUDY_GROUP_FIELD.has_default_value = false
-PARTNER_STAR_CFG_STUDY_GROUP_FIELD.default_value = 0
-PARTNER_STAR_CFG_STUDY_GROUP_FIELD.type = 5
-PARTNER_STAR_CFG_STUDY_GROUP_FIELD.cpp_type = 1
-
-PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.name = "study_limit"
-PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.full_name = ".ftcfg.partner_star_cfg.study_limit"
-PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.number = 5
-PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.index = 4
-PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.label = 2
-PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.has_default_value = false
-PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.default_value = 0
-PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.type = 5
-PARTNER_STAR_CFG_STUDY_LIMIT_FIELD.cpp_type = 1
-
-PARTNER_STAR_CFG_STUDY_FIELD.name = "study"
-PARTNER_STAR_CFG_STUDY_FIELD.full_name = ".ftcfg.partner_star_cfg.study"
-PARTNER_STAR_CFG_STUDY_FIELD.number = 6
-PARTNER_STAR_CFG_STUDY_FIELD.index = 5
-PARTNER_STAR_CFG_STUDY_FIELD.label = 2
-PARTNER_STAR_CFG_STUDY_FIELD.has_default_value = false
-PARTNER_STAR_CFG_STUDY_FIELD.default_value = 0
-PARTNER_STAR_CFG_STUDY_FIELD.type = 5
-PARTNER_STAR_CFG_STUDY_FIELD.cpp_type = 1
-
-PARTNER_STAR_CFG_STUDY_ITEM_FIELD.name = "study_item"
-PARTNER_STAR_CFG_STUDY_ITEM_FIELD.full_name = ".ftcfg.partner_star_cfg.study_item"
-PARTNER_STAR_CFG_STUDY_ITEM_FIELD.number = 7
-PARTNER_STAR_CFG_STUDY_ITEM_FIELD.index = 6
-PARTNER_STAR_CFG_STUDY_ITEM_FIELD.label = 2
-PARTNER_STAR_CFG_STUDY_ITEM_FIELD.has_default_value = false
-PARTNER_STAR_CFG_STUDY_ITEM_FIELD.default_value = 0
-PARTNER_STAR_CFG_STUDY_ITEM_FIELD.type = 5
-PARTNER_STAR_CFG_STUDY_ITEM_FIELD.cpp_type = 1
-
-PARTNER_STAR_CFG_STUDY_COST_FIELD.name = "study_cost"
-PARTNER_STAR_CFG_STUDY_COST_FIELD.full_name = ".ftcfg.partner_star_cfg.study_cost"
-PARTNER_STAR_CFG_STUDY_COST_FIELD.number = 8
-PARTNER_STAR_CFG_STUDY_COST_FIELD.index = 7
-PARTNER_STAR_CFG_STUDY_COST_FIELD.label = 2
-PARTNER_STAR_CFG_STUDY_COST_FIELD.has_default_value = false
-PARTNER_STAR_CFG_STUDY_COST_FIELD.default_value = 0
-PARTNER_STAR_CFG_STUDY_COST_FIELD.type = 5
-PARTNER_STAR_CFG_STUDY_COST_FIELD.cpp_type = 1
-
-PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.name = "exclude_item"
-PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.full_name = ".ftcfg.partner_star_cfg.exclude_item"
-PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.number = 9
-PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.index = 8
-PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.label = 2
-PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.has_default_value = false
-PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.default_value = 0
-PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.type = 5
-PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD.cpp_type = 1
-
-PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.name = "exclude_cost"
-PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.full_name = ".ftcfg.partner_star_cfg.exclude_cost"
-PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.number = 10
-PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.index = 9
-PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.label = 2
-PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.has_default_value = false
-PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.default_value = 0
-PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.type = 5
-PARTNER_STAR_CFG_EXCLUDE_COST_FIELD.cpp_type = 1
-
-PARTNER_STAR_CFG_STAR_PROP1_FIELD.name = "star_prop1"
-PARTNER_STAR_CFG_STAR_PROP1_FIELD.full_name = ".ftcfg.partner_star_cfg.star_prop1"
-PARTNER_STAR_CFG_STAR_PROP1_FIELD.number = 11
-PARTNER_STAR_CFG_STAR_PROP1_FIELD.index = 10
-PARTNER_STAR_CFG_STAR_PROP1_FIELD.label = 2
-PARTNER_STAR_CFG_STAR_PROP1_FIELD.has_default_value = false
-PARTNER_STAR_CFG_STAR_PROP1_FIELD.default_value = ""
-PARTNER_STAR_CFG_STAR_PROP1_FIELD.type = 9
-PARTNER_STAR_CFG_STAR_PROP1_FIELD.cpp_type = 9
-
-PARTNER_STAR_CFG_STAR_PROP2_FIELD.name = "star_prop2"
-PARTNER_STAR_CFG_STAR_PROP2_FIELD.full_name = ".ftcfg.partner_star_cfg.star_prop2"
-PARTNER_STAR_CFG_STAR_PROP2_FIELD.number = 12
-PARTNER_STAR_CFG_STAR_PROP2_FIELD.index = 11
-PARTNER_STAR_CFG_STAR_PROP2_FIELD.label = 2
-PARTNER_STAR_CFG_STAR_PROP2_FIELD.has_default_value = false
-PARTNER_STAR_CFG_STAR_PROP2_FIELD.default_value = ""
-PARTNER_STAR_CFG_STAR_PROP2_FIELD.type = 9
-PARTNER_STAR_CFG_STAR_PROP2_FIELD.cpp_type = 9
-
-PARTNER_STAR_CFG_STAR_PROP3_FIELD.name = "star_prop3"
-PARTNER_STAR_CFG_STAR_PROP3_FIELD.full_name = ".ftcfg.partner_star_cfg.star_prop3"
-PARTNER_STAR_CFG_STAR_PROP3_FIELD.number = 13
-PARTNER_STAR_CFG_STAR_PROP3_FIELD.index = 12
-PARTNER_STAR_CFG_STAR_PROP3_FIELD.label = 2
-PARTNER_STAR_CFG_STAR_PROP3_FIELD.has_default_value = false
-PARTNER_STAR_CFG_STAR_PROP3_FIELD.default_value = ""
-PARTNER_STAR_CFG_STAR_PROP3_FIELD.type = 9
-PARTNER_STAR_CFG_STAR_PROP3_FIELD.cpp_type = 9
-
-PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.name = "upstar_item"
-PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.full_name = ".ftcfg.partner_star_cfg.upstar_item"
-PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.number = 14
-PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.index = 13
-PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.label = 2
-PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.has_default_value = false
-PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.default_value = 0
-PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.type = 5
-PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD.cpp_type = 1
-
-PARTNER_STAR_CFG_UPSTAR_COST_FIELD.name = "upstar_cost"
-PARTNER_STAR_CFG_UPSTAR_COST_FIELD.full_name = ".ftcfg.partner_star_cfg.upstar_cost"
-PARTNER_STAR_CFG_UPSTAR_COST_FIELD.number = 15
-PARTNER_STAR_CFG_UPSTAR_COST_FIELD.index = 14
-PARTNER_STAR_CFG_UPSTAR_COST_FIELD.label = 2
-PARTNER_STAR_CFG_UPSTAR_COST_FIELD.has_default_value = false
-PARTNER_STAR_CFG_UPSTAR_COST_FIELD.default_value = 0
-PARTNER_STAR_CFG_UPSTAR_COST_FIELD.type = 5
-PARTNER_STAR_CFG_UPSTAR_COST_FIELD.cpp_type = 1
-
-PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.name = "rebuild_item"
-PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.full_name = ".ftcfg.partner_star_cfg.rebuild_item"
-PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.number = 16
-PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.index = 15
-PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.label = 2
-PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.has_default_value = false
-PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.default_value = 0
-PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.type = 5
-PARTNER_STAR_CFG_REBUILD_ITEM_FIELD.cpp_type = 1
-
-PARTNER_STAR_CFG_REBUILD_COST_FIELD.name = "rebuild_cost"
-PARTNER_STAR_CFG_REBUILD_COST_FIELD.full_name = ".ftcfg.partner_star_cfg.rebuild_cost"
-PARTNER_STAR_CFG_REBUILD_COST_FIELD.number = 17
-PARTNER_STAR_CFG_REBUILD_COST_FIELD.index = 16
-PARTNER_STAR_CFG_REBUILD_COST_FIELD.label = 2
-PARTNER_STAR_CFG_REBUILD_COST_FIELD.has_default_value = false
-PARTNER_STAR_CFG_REBUILD_COST_FIELD.default_value = 0
-PARTNER_STAR_CFG_REBUILD_COST_FIELD.type = 5
-PARTNER_STAR_CFG_REBUILD_COST_FIELD.cpp_type = 1
-
-PARTNER_STAR_CFG.name = "partner_star_cfg"
-PARTNER_STAR_CFG.full_name = ".ftcfg.partner_star_cfg"
-PARTNER_STAR_CFG.nested_types = {}
-PARTNER_STAR_CFG.enum_types = {}
-PARTNER_STAR_CFG.fields = {PARTNER_STAR_CFG_ID_FIELD, PARTNER_STAR_CFG_PARTNER_TYPE_FIELD, PARTNER_STAR_CFG_STAR_FIELD, PARTNER_STAR_CFG_STUDY_GROUP_FIELD, PARTNER_STAR_CFG_STUDY_LIMIT_FIELD, PARTNER_STAR_CFG_STUDY_FIELD, PARTNER_STAR_CFG_STUDY_ITEM_FIELD, PARTNER_STAR_CFG_STUDY_COST_FIELD, PARTNER_STAR_CFG_EXCLUDE_ITEM_FIELD, PARTNER_STAR_CFG_EXCLUDE_COST_FIELD, PARTNER_STAR_CFG_STAR_PROP1_FIELD, PARTNER_STAR_CFG_STAR_PROP2_FIELD, PARTNER_STAR_CFG_STAR_PROP3_FIELD, PARTNER_STAR_CFG_UPSTAR_ITEM_FIELD, PARTNER_STAR_CFG_UPSTAR_COST_FIELD, PARTNER_STAR_CFG_REBUILD_ITEM_FIELD, PARTNER_STAR_CFG_REBUILD_COST_FIELD}
-PARTNER_STAR_CFG.is_extendable = false
-PARTNER_STAR_CFG.extensions = {}
-PARTNER_STAR_CFGS_ITEMS_FIELD.name = "items"
-PARTNER_STAR_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_star_cfgs.items"
-PARTNER_STAR_CFGS_ITEMS_FIELD.number = 1
-PARTNER_STAR_CFGS_ITEMS_FIELD.index = 0
-PARTNER_STAR_CFGS_ITEMS_FIELD.label = 3
-PARTNER_STAR_CFGS_ITEMS_FIELD.has_default_value = false
-PARTNER_STAR_CFGS_ITEMS_FIELD.default_value = {}
-PARTNER_STAR_CFGS_ITEMS_FIELD.message_type = PARTNER_STAR_CFG
-PARTNER_STAR_CFGS_ITEMS_FIELD.type = 11
-PARTNER_STAR_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PARTNER_STAR_CFGS.name = "partner_star_cfgs"
-PARTNER_STAR_CFGS.full_name = ".ftcfg.partner_star_cfgs"
-PARTNER_STAR_CFGS.nested_types = {}
-PARTNER_STAR_CFGS.enum_types = {}
-PARTNER_STAR_CFGS.fields = {PARTNER_STAR_CFGS_ITEMS_FIELD}
-PARTNER_STAR_CFGS.is_extendable = false
-PARTNER_STAR_CFGS.extensions = {}
-PARTNER_STUDY_CFG_ID_FIELD.name = "id"
-PARTNER_STUDY_CFG_ID_FIELD.full_name = ".ftcfg.partner_study_cfg.id"
-PARTNER_STUDY_CFG_ID_FIELD.number = 1
-PARTNER_STUDY_CFG_ID_FIELD.index = 0
-PARTNER_STUDY_CFG_ID_FIELD.label = 2
-PARTNER_STUDY_CFG_ID_FIELD.has_default_value = false
-PARTNER_STUDY_CFG_ID_FIELD.default_value = 0
-PARTNER_STUDY_CFG_ID_FIELD.type = 5
-PARTNER_STUDY_CFG_ID_FIELD.cpp_type = 1
-
-PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.name = "study_group"
-PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.full_name = ".ftcfg.partner_study_cfg.study_group"
-PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.number = 2
-PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.index = 1
-PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.label = 2
-PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.has_default_value = false
-PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.default_value = 0
-PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.type = 5
-PARTNER_STUDY_CFG_STUDY_GROUP_FIELD.cpp_type = 1
-
-PARTNER_STUDY_CFG_STUDY_PROP_FIELD.name = "study_prop"
-PARTNER_STUDY_CFG_STUDY_PROP_FIELD.full_name = ".ftcfg.partner_study_cfg.study_prop"
-PARTNER_STUDY_CFG_STUDY_PROP_FIELD.number = 3
-PARTNER_STUDY_CFG_STUDY_PROP_FIELD.index = 2
-PARTNER_STUDY_CFG_STUDY_PROP_FIELD.label = 2
-PARTNER_STUDY_CFG_STUDY_PROP_FIELD.has_default_value = false
-PARTNER_STUDY_CFG_STUDY_PROP_FIELD.default_value = ""
-PARTNER_STUDY_CFG_STUDY_PROP_FIELD.type = 9
-PARTNER_STUDY_CFG_STUDY_PROP_FIELD.cpp_type = 9
-
-PARTNER_STUDY_CFG.name = "partner_study_cfg"
-PARTNER_STUDY_CFG.full_name = ".ftcfg.partner_study_cfg"
-PARTNER_STUDY_CFG.nested_types = {}
-PARTNER_STUDY_CFG.enum_types = {}
-PARTNER_STUDY_CFG.fields = {PARTNER_STUDY_CFG_ID_FIELD, PARTNER_STUDY_CFG_STUDY_GROUP_FIELD, PARTNER_STUDY_CFG_STUDY_PROP_FIELD}
-PARTNER_STUDY_CFG.is_extendable = false
-PARTNER_STUDY_CFG.extensions = {}
-PARTNER_STUDY_CFGS_ITEMS_FIELD.name = "items"
-PARTNER_STUDY_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_study_cfgs.items"
-PARTNER_STUDY_CFGS_ITEMS_FIELD.number = 1
-PARTNER_STUDY_CFGS_ITEMS_FIELD.index = 0
-PARTNER_STUDY_CFGS_ITEMS_FIELD.label = 3
-PARTNER_STUDY_CFGS_ITEMS_FIELD.has_default_value = false
-PARTNER_STUDY_CFGS_ITEMS_FIELD.default_value = {}
-PARTNER_STUDY_CFGS_ITEMS_FIELD.message_type = PARTNER_STUDY_CFG
-PARTNER_STUDY_CFGS_ITEMS_FIELD.type = 11
-PARTNER_STUDY_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PARTNER_STUDY_CFGS.name = "partner_study_cfgs"
-PARTNER_STUDY_CFGS.full_name = ".ftcfg.partner_study_cfgs"
-PARTNER_STUDY_CFGS.nested_types = {}
-PARTNER_STUDY_CFGS.enum_types = {}
-PARTNER_STUDY_CFGS.fields = {PARTNER_STUDY_CFGS_ITEMS_FIELD}
-PARTNER_STUDY_CFGS.is_extendable = false
-PARTNER_STUDY_CFGS.extensions = {}
-PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.name = "id"
-PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.full_name = ".ftcfg.partner_item_compound_cfg.id"
-PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.number = 1
-PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.index = 0
-PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.label = 2
-PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.has_default_value = false
-PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.default_value = 0
-PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.type = 13
-PARTNER_ITEM_COMPOUND_CFG_ID_FIELD.cpp_type = 3
-
-PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.name = "fragment_num"
-PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.full_name = ".ftcfg.partner_item_compound_cfg.fragment_num"
-PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.number = 2
-PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.index = 1
-PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.label = 2
-PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.has_default_value = false
-PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.default_value = 0
-PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.type = 5
-PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD.cpp_type = 1
-
-PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.name = "need_fragment_num"
-PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.full_name = ".ftcfg.partner_item_compound_cfg.need_fragment_num"
-PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.number = 3
-PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.index = 2
-PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.label = 2
-PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.has_default_value = false
-PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.default_value = 0
-PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.type = 5
-PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD.cpp_type = 1
-
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.name = "currency_type"
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.full_name = ".ftcfg.partner_item_compound_cfg.currency_type"
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.number = 4
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.index = 3
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.label = 2
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.has_default_value = false
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.default_value = 0
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.type = 5
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD.cpp_type = 1
-
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.name = "currency_num"
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.full_name = ".ftcfg.partner_item_compound_cfg.currency_num"
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.number = 5
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.index = 4
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.label = 2
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.has_default_value = false
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.default_value = 0
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.type = 5
-PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD.cpp_type = 1
-
-PARTNER_ITEM_COMPOUND_CFG.name = "partner_item_compound_cfg"
-PARTNER_ITEM_COMPOUND_CFG.full_name = ".ftcfg.partner_item_compound_cfg"
-PARTNER_ITEM_COMPOUND_CFG.nested_types = {}
-PARTNER_ITEM_COMPOUND_CFG.enum_types = {}
-PARTNER_ITEM_COMPOUND_CFG.fields = {PARTNER_ITEM_COMPOUND_CFG_ID_FIELD, PARTNER_ITEM_COMPOUND_CFG_FRAGMENT_NUM_FIELD, PARTNER_ITEM_COMPOUND_CFG_NEED_FRAGMENT_NUM_FIELD, PARTNER_ITEM_COMPOUND_CFG_CURRENCY_TYPE_FIELD, PARTNER_ITEM_COMPOUND_CFG_CURRENCY_NUM_FIELD}
-PARTNER_ITEM_COMPOUND_CFG.is_extendable = false
-PARTNER_ITEM_COMPOUND_CFG.extensions = {}
-PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.name = "items"
-PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_item_compound_cfgs.items"
-PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.number = 1
-PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.index = 0
-PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.label = 3
-PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.has_default_value = false
-PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.default_value = {}
-PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.message_type = PARTNER_ITEM_COMPOUND_CFG
-PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.type = 11
-PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PARTNER_ITEM_COMPOUND_CFGS.name = "partner_item_compound_cfgs"
-PARTNER_ITEM_COMPOUND_CFGS.full_name = ".ftcfg.partner_item_compound_cfgs"
-PARTNER_ITEM_COMPOUND_CFGS.nested_types = {}
-PARTNER_ITEM_COMPOUND_CFGS.enum_types = {}
-PARTNER_ITEM_COMPOUND_CFGS.fields = {PARTNER_ITEM_COMPOUND_CFGS_ITEMS_FIELD}
-PARTNER_ITEM_COMPOUND_CFGS.is_extendable = false
-PARTNER_ITEM_COMPOUND_CFGS.extensions = {}
-PARTENR_EXPERIENCE_CFG_KEY_FIELD.name = "key"
-PARTENR_EXPERIENCE_CFG_KEY_FIELD.full_name = ".ftcfg.partenr_experience_cfg.key"
-PARTENR_EXPERIENCE_CFG_KEY_FIELD.number = 1
-PARTENR_EXPERIENCE_CFG_KEY_FIELD.index = 0
-PARTENR_EXPERIENCE_CFG_KEY_FIELD.label = 2
-PARTENR_EXPERIENCE_CFG_KEY_FIELD.has_default_value = false
-PARTENR_EXPERIENCE_CFG_KEY_FIELD.default_value = 0
-PARTENR_EXPERIENCE_CFG_KEY_FIELD.type = 13
-PARTENR_EXPERIENCE_CFG_KEY_FIELD.cpp_type = 3
-
-PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.name = "cost_item"
-PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.full_name = ".ftcfg.partenr_experience_cfg.cost_item"
-PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.number = 2
-PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.index = 1
-PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.label = 2
-PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.has_default_value = false
-PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.default_value = 0
-PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.type = 5
-PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD.cpp_type = 1
-
-PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.name = "cost_item_num"
-PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.full_name = ".ftcfg.partenr_experience_cfg.cost_item_num"
-PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.number = 3
-PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.index = 2
-PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.label = 2
-PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.has_default_value = false
-PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.default_value = 0
-PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.type = 5
-PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD.cpp_type = 1
-
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.name = "experience_num"
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.full_name = ".ftcfg.partenr_experience_cfg.experience_num"
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.number = 4
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.index = 3
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.label = 2
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.has_default_value = false
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.default_value = 0
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.type = 5
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD.cpp_type = 1
-
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.name = "experience_event"
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.full_name = ".ftcfg.partenr_experience_cfg.experience_event"
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.number = 5
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.index = 4
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.label = 3
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.has_default_value = false
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.default_value = {}
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.type = 5
-PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD.cpp_type = 1
-
-PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.name = "event_type"
-PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.full_name = ".ftcfg.partenr_experience_cfg.event_type"
-PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.number = 6
-PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.index = 5
-PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.label = 3
-PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.has_default_value = false
-PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.default_value = {}
-PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.type = 5
-PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD.cpp_type = 1
-
-PARTENR_EXPERIENCE_CFG.name = "partenr_experience_cfg"
-PARTENR_EXPERIENCE_CFG.full_name = ".ftcfg.partenr_experience_cfg"
-PARTENR_EXPERIENCE_CFG.nested_types = {}
-PARTENR_EXPERIENCE_CFG.enum_types = {}
-PARTENR_EXPERIENCE_CFG.fields = {PARTENR_EXPERIENCE_CFG_KEY_FIELD, PARTENR_EXPERIENCE_CFG_COST_ITEM_FIELD, PARTENR_EXPERIENCE_CFG_COST_ITEM_NUM_FIELD, PARTENR_EXPERIENCE_CFG_EXPERIENCE_NUM_FIELD, PARTENR_EXPERIENCE_CFG_EXPERIENCE_EVENT_FIELD, PARTENR_EXPERIENCE_CFG_EVENT_TYPE_FIELD}
-PARTENR_EXPERIENCE_CFG.is_extendable = false
-PARTENR_EXPERIENCE_CFG.extensions = {}
-PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.name = "items"
-PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partenr_experience_cfgs.items"
-PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.number = 1
-PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.index = 0
-PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.label = 3
-PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.has_default_value = false
-PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.default_value = {}
-PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.message_type = PARTENR_EXPERIENCE_CFG
-PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.type = 11
-PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PARTENR_EXPERIENCE_CFGS.name = "partenr_experience_cfgs"
-PARTENR_EXPERIENCE_CFGS.full_name = ".ftcfg.partenr_experience_cfgs"
-PARTENR_EXPERIENCE_CFGS.nested_types = {}
-PARTENR_EXPERIENCE_CFGS.enum_types = {}
-PARTENR_EXPERIENCE_CFGS.fields = {PARTENR_EXPERIENCE_CFGS_ITEMS_FIELD}
-PARTENR_EXPERIENCE_CFGS.is_extendable = false
-PARTENR_EXPERIENCE_CFGS.extensions = {}
-PARTNER_BASE_CFG_ID_FIELD.name = "id"
-PARTNER_BASE_CFG_ID_FIELD.full_name = ".ftcfg.partner_base_cfg.id"
-PARTNER_BASE_CFG_ID_FIELD.number = 1
-PARTNER_BASE_CFG_ID_FIELD.index = 0
-PARTNER_BASE_CFG_ID_FIELD.label = 2
-PARTNER_BASE_CFG_ID_FIELD.has_default_value = false
-PARTNER_BASE_CFG_ID_FIELD.default_value = 0
-PARTNER_BASE_CFG_ID_FIELD.type = 13
-PARTNER_BASE_CFG_ID_FIELD.cpp_type = 3
-
-PARTNER_BASE_CFG_SHOW_NAME_FIELD.name = "show_name"
-PARTNER_BASE_CFG_SHOW_NAME_FIELD.full_name = ".ftcfg.partner_base_cfg.show_name"
-PARTNER_BASE_CFG_SHOW_NAME_FIELD.number = 2
-PARTNER_BASE_CFG_SHOW_NAME_FIELD.index = 1
-PARTNER_BASE_CFG_SHOW_NAME_FIELD.label = 2
-PARTNER_BASE_CFG_SHOW_NAME_FIELD.has_default_value = false
-PARTNER_BASE_CFG_SHOW_NAME_FIELD.default_value = ""
-PARTNER_BASE_CFG_SHOW_NAME_FIELD.type = 9
-PARTNER_BASE_CFG_SHOW_NAME_FIELD.cpp_type = 9
-
-PARTNER_BASE_CFG_LOCK_FIELD.name = "lock"
-PARTNER_BASE_CFG_LOCK_FIELD.full_name = ".ftcfg.partner_base_cfg.lock"
-PARTNER_BASE_CFG_LOCK_FIELD.number = 3
-PARTNER_BASE_CFG_LOCK_FIELD.index = 2
-PARTNER_BASE_CFG_LOCK_FIELD.label = 2
-PARTNER_BASE_CFG_LOCK_FIELD.has_default_value = false
-PARTNER_BASE_CFG_LOCK_FIELD.default_value = 0
-PARTNER_BASE_CFG_LOCK_FIELD.type = 5
-PARTNER_BASE_CFG_LOCK_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_HEAD_FIELD.name = "head"
-PARTNER_BASE_CFG_HEAD_FIELD.full_name = ".ftcfg.partner_base_cfg.head"
-PARTNER_BASE_CFG_HEAD_FIELD.number = 4
-PARTNER_BASE_CFG_HEAD_FIELD.index = 3
-PARTNER_BASE_CFG_HEAD_FIELD.label = 2
-PARTNER_BASE_CFG_HEAD_FIELD.has_default_value = false
-PARTNER_BASE_CFG_HEAD_FIELD.default_value = 0
-PARTNER_BASE_CFG_HEAD_FIELD.type = 5
-PARTNER_BASE_CFG_HEAD_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_DRAW_FIELD.name = "draw"
-PARTNER_BASE_CFG_DRAW_FIELD.full_name = ".ftcfg.partner_base_cfg.draw"
-PARTNER_BASE_CFG_DRAW_FIELD.number = 5
-PARTNER_BASE_CFG_DRAW_FIELD.index = 4
-PARTNER_BASE_CFG_DRAW_FIELD.label = 2
-PARTNER_BASE_CFG_DRAW_FIELD.has_default_value = false
-PARTNER_BASE_CFG_DRAW_FIELD.default_value = 0
-PARTNER_BASE_CFG_DRAW_FIELD.type = 5
-PARTNER_BASE_CFG_DRAW_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_TYPE_FIELD.name = "type"
-PARTNER_BASE_CFG_TYPE_FIELD.full_name = ".ftcfg.partner_base_cfg.type"
-PARTNER_BASE_CFG_TYPE_FIELD.number = 6
-PARTNER_BASE_CFG_TYPE_FIELD.index = 5
-PARTNER_BASE_CFG_TYPE_FIELD.label = 2
-PARTNER_BASE_CFG_TYPE_FIELD.has_default_value = false
-PARTNER_BASE_CFG_TYPE_FIELD.default_value = 0
-PARTNER_BASE_CFG_TYPE_FIELD.type = 5
-PARTNER_BASE_CFG_TYPE_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_POKEDEX_FIELD.name = "pokedex"
-PARTNER_BASE_CFG_POKEDEX_FIELD.full_name = ".ftcfg.partner_base_cfg.pokedex"
-PARTNER_BASE_CFG_POKEDEX_FIELD.number = 7
-PARTNER_BASE_CFG_POKEDEX_FIELD.index = 6
-PARTNER_BASE_CFG_POKEDEX_FIELD.label = 2
-PARTNER_BASE_CFG_POKEDEX_FIELD.has_default_value = false
-PARTNER_BASE_CFG_POKEDEX_FIELD.default_value = 0
-PARTNER_BASE_CFG_POKEDEX_FIELD.type = 5
-PARTNER_BASE_CFG_POKEDEX_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_SKILLS_FIELD.name = "skills"
-PARTNER_BASE_CFG_SKILLS_FIELD.full_name = ".ftcfg.partner_base_cfg.skills"
-PARTNER_BASE_CFG_SKILLS_FIELD.number = 8
-PARTNER_BASE_CFG_SKILLS_FIELD.index = 7
-PARTNER_BASE_CFG_SKILLS_FIELD.label = 3
-PARTNER_BASE_CFG_SKILLS_FIELD.has_default_value = false
-PARTNER_BASE_CFG_SKILLS_FIELD.default_value = {}
-PARTNER_BASE_CFG_SKILLS_FIELD.type = 5
-PARTNER_BASE_CFG_SKILLS_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_AVATAR_FIELD.name = "avatar"
-PARTNER_BASE_CFG_AVATAR_FIELD.full_name = ".ftcfg.partner_base_cfg.avatar"
-PARTNER_BASE_CFG_AVATAR_FIELD.number = 9
-PARTNER_BASE_CFG_AVATAR_FIELD.index = 8
-PARTNER_BASE_CFG_AVATAR_FIELD.label = 2
-PARTNER_BASE_CFG_AVATAR_FIELD.has_default_value = false
-PARTNER_BASE_CFG_AVATAR_FIELD.default_value = 0
-PARTNER_BASE_CFG_AVATAR_FIELD.type = 5
-PARTNER_BASE_CFG_AVATAR_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_ACT_IDLE_FIELD.name = "act_idle"
-PARTNER_BASE_CFG_ACT_IDLE_FIELD.full_name = ".ftcfg.partner_base_cfg.act_idle"
-PARTNER_BASE_CFG_ACT_IDLE_FIELD.number = 10
-PARTNER_BASE_CFG_ACT_IDLE_FIELD.index = 9
-PARTNER_BASE_CFG_ACT_IDLE_FIELD.label = 2
-PARTNER_BASE_CFG_ACT_IDLE_FIELD.has_default_value = false
-PARTNER_BASE_CFG_ACT_IDLE_FIELD.default_value = ""
-PARTNER_BASE_CFG_ACT_IDLE_FIELD.type = 9
-PARTNER_BASE_CFG_ACT_IDLE_FIELD.cpp_type = 9
-
-PARTNER_BASE_CFG_ACT_MOVE_FIELD.name = "act_move"
-PARTNER_BASE_CFG_ACT_MOVE_FIELD.full_name = ".ftcfg.partner_base_cfg.act_move"
-PARTNER_BASE_CFG_ACT_MOVE_FIELD.number = 11
-PARTNER_BASE_CFG_ACT_MOVE_FIELD.index = 10
-PARTNER_BASE_CFG_ACT_MOVE_FIELD.label = 2
-PARTNER_BASE_CFG_ACT_MOVE_FIELD.has_default_value = false
-PARTNER_BASE_CFG_ACT_MOVE_FIELD.default_value = ""
-PARTNER_BASE_CFG_ACT_MOVE_FIELD.type = 9
-PARTNER_BASE_CFG_ACT_MOVE_FIELD.cpp_type = 9
-
-PARTNER_BASE_CFG_ACT_BORN_FIELD.name = "act_born"
-PARTNER_BASE_CFG_ACT_BORN_FIELD.full_name = ".ftcfg.partner_base_cfg.act_born"
-PARTNER_BASE_CFG_ACT_BORN_FIELD.number = 12
-PARTNER_BASE_CFG_ACT_BORN_FIELD.index = 11
-PARTNER_BASE_CFG_ACT_BORN_FIELD.label = 2
-PARTNER_BASE_CFG_ACT_BORN_FIELD.has_default_value = false
-PARTNER_BASE_CFG_ACT_BORN_FIELD.default_value = ""
-PARTNER_BASE_CFG_ACT_BORN_FIELD.type = 9
-PARTNER_BASE_CFG_ACT_BORN_FIELD.cpp_type = 9
-
-PARTNER_BASE_CFG_ACT_DEAD_FIELD.name = "act_dead"
-PARTNER_BASE_CFG_ACT_DEAD_FIELD.full_name = ".ftcfg.partner_base_cfg.act_dead"
-PARTNER_BASE_CFG_ACT_DEAD_FIELD.number = 13
-PARTNER_BASE_CFG_ACT_DEAD_FIELD.index = 12
-PARTNER_BASE_CFG_ACT_DEAD_FIELD.label = 2
-PARTNER_BASE_CFG_ACT_DEAD_FIELD.has_default_value = false
-PARTNER_BASE_CFG_ACT_DEAD_FIELD.default_value = ""
-PARTNER_BASE_CFG_ACT_DEAD_FIELD.type = 9
-PARTNER_BASE_CFG_ACT_DEAD_FIELD.cpp_type = 9
-
-PARTNER_BASE_CFG_RESURRECTION_FIELD.name = "resurrection"
-PARTNER_BASE_CFG_RESURRECTION_FIELD.full_name = ".ftcfg.partner_base_cfg.resurrection"
-PARTNER_BASE_CFG_RESURRECTION_FIELD.number = 14
-PARTNER_BASE_CFG_RESURRECTION_FIELD.index = 13
-PARTNER_BASE_CFG_RESURRECTION_FIELD.label = 2
-PARTNER_BASE_CFG_RESURRECTION_FIELD.has_default_value = false
-PARTNER_BASE_CFG_RESURRECTION_FIELD.default_value = 0
-PARTNER_BASE_CFG_RESURRECTION_FIELD.type = 5
-PARTNER_BASE_CFG_RESURRECTION_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.name = "addition_ratio"
-PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.full_name = ".ftcfg.partner_base_cfg.addition_ratio"
-PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.number = 15
-PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.index = 14
-PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.label = 2
-PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.has_default_value = false
-PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.default_value = 0.0
-PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.type = 1
-PARTNER_BASE_CFG_ADDITION_RATIO_FIELD.cpp_type = 5
-
-PARTNER_BASE_CFG_QUALITY_FIELD.name = "quality"
-PARTNER_BASE_CFG_QUALITY_FIELD.full_name = ".ftcfg.partner_base_cfg.quality"
-PARTNER_BASE_CFG_QUALITY_FIELD.number = 16
-PARTNER_BASE_CFG_QUALITY_FIELD.index = 15
-PARTNER_BASE_CFG_QUALITY_FIELD.label = 2
-PARTNER_BASE_CFG_QUALITY_FIELD.has_default_value = false
-PARTNER_BASE_CFG_QUALITY_FIELD.default_value = 0
-PARTNER_BASE_CFG_QUALITY_FIELD.type = 5
-PARTNER_BASE_CFG_QUALITY_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_GROWTH_CAP_FIELD.name = "growth_cap"
-PARTNER_BASE_CFG_GROWTH_CAP_FIELD.full_name = ".ftcfg.partner_base_cfg.growth_cap"
-PARTNER_BASE_CFG_GROWTH_CAP_FIELD.number = 17
-PARTNER_BASE_CFG_GROWTH_CAP_FIELD.index = 16
-PARTNER_BASE_CFG_GROWTH_CAP_FIELD.label = 3
-PARTNER_BASE_CFG_GROWTH_CAP_FIELD.has_default_value = false
-PARTNER_BASE_CFG_GROWTH_CAP_FIELD.default_value = {}
-PARTNER_BASE_CFG_GROWTH_CAP_FIELD.type = 5
-PARTNER_BASE_CFG_GROWTH_CAP_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.name = "use_item_id"
-PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.full_name = ".ftcfg.partner_base_cfg.use_item_id"
-PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.number = 18
-PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.index = 17
-PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.label = 2
-PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.has_default_value = false
-PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.default_value = 0
-PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.type = 13
-PARTNER_BASE_CFG_USE_ITEM_ID_FIELD.cpp_type = 3
-
-PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.name = "use_item_num"
-PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.full_name = ".ftcfg.partner_base_cfg.use_item_num"
-PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.number = 19
-PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.index = 18
-PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.label = 2
-PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.has_default_value = false
-PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.default_value = 0
-PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.type = 5
-PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.name = "can_use_omnipotent"
-PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.full_name = ".ftcfg.partner_base_cfg.can_use_omnipotent"
-PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.number = 20
-PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.index = 19
-PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.label = 2
-PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.has_default_value = false
-PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.default_value = 0
-PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.type = 5
-PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_END_SKILLS_FIELD.name = "end_skills"
-PARTNER_BASE_CFG_END_SKILLS_FIELD.full_name = ".ftcfg.partner_base_cfg.end_skills"
-PARTNER_BASE_CFG_END_SKILLS_FIELD.number = 21
-PARTNER_BASE_CFG_END_SKILLS_FIELD.index = 20
-PARTNER_BASE_CFG_END_SKILLS_FIELD.label = 2
-PARTNER_BASE_CFG_END_SKILLS_FIELD.has_default_value = false
-PARTNER_BASE_CFG_END_SKILLS_FIELD.default_value = 0
-PARTNER_BASE_CFG_END_SKILLS_FIELD.type = 5
-PARTNER_BASE_CFG_END_SKILLS_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.name = "passive_skills"
-PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.full_name = ".ftcfg.partner_base_cfg.passive_skills"
-PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.number = 22
-PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.index = 21
-PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.label = 3
-PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.has_default_value = false
-PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.default_value = {}
-PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.type = 5
-PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.name = "experience_max"
-PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.full_name = ".ftcfg.partner_base_cfg.experience_max"
-PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.number = 23
-PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.index = 22
-PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.label = 2
-PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.has_default_value = false
-PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.default_value = 0
-PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.type = 5
-PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.name = "resources_type"
-PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.full_name = ".ftcfg.partner_base_cfg.resources_type"
-PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.number = 24
-PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.index = 23
-PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.label = 2
-PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.has_default_value = false
-PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.default_value = 0
-PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.type = 5
-PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.name = "resources_num"
-PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.full_name = ".ftcfg.partner_base_cfg.resources_num"
-PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.number = 25
-PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.index = 24
-PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.label = 2
-PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.has_default_value = false
-PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.default_value = 0
-PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.type = 5
-PARTNER_BASE_CFG_RESOURCES_NUM_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_RESOURCES_ID_FIELD.name = "resources_id"
-PARTNER_BASE_CFG_RESOURCES_ID_FIELD.full_name = ".ftcfg.partner_base_cfg.resources_id"
-PARTNER_BASE_CFG_RESOURCES_ID_FIELD.number = 26
-PARTNER_BASE_CFG_RESOURCES_ID_FIELD.index = 25
-PARTNER_BASE_CFG_RESOURCES_ID_FIELD.label = 2
-PARTNER_BASE_CFG_RESOURCES_ID_FIELD.has_default_value = false
-PARTNER_BASE_CFG_RESOURCES_ID_FIELD.default_value = 0
-PARTNER_BASE_CFG_RESOURCES_ID_FIELD.type = 5
-PARTNER_BASE_CFG_RESOURCES_ID_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_ITEMS_ID_FIELD.name = "items_id"
-PARTNER_BASE_CFG_ITEMS_ID_FIELD.full_name = ".ftcfg.partner_base_cfg.items_id"
-PARTNER_BASE_CFG_ITEMS_ID_FIELD.number = 27
-PARTNER_BASE_CFG_ITEMS_ID_FIELD.index = 26
-PARTNER_BASE_CFG_ITEMS_ID_FIELD.label = 3
-PARTNER_BASE_CFG_ITEMS_ID_FIELD.has_default_value = false
-PARTNER_BASE_CFG_ITEMS_ID_FIELD.default_value = {}
-PARTNER_BASE_CFG_ITEMS_ID_FIELD.type = 5
-PARTNER_BASE_CFG_ITEMS_ID_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.name = "items_count"
-PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.full_name = ".ftcfg.partner_base_cfg.items_count"
-PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.number = 28
-PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.index = 27
-PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.label = 3
-PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.has_default_value = false
-PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.default_value = {}
-PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.type = 5
-PARTNER_BASE_CFG_ITEMS_COUNT_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_RANGE_FIELD.name = "range"
-PARTNER_BASE_CFG_RANGE_FIELD.full_name = ".ftcfg.partner_base_cfg.range"
-PARTNER_BASE_CFG_RANGE_FIELD.number = 29
-PARTNER_BASE_CFG_RANGE_FIELD.index = 28
-PARTNER_BASE_CFG_RANGE_FIELD.label = 2
-PARTNER_BASE_CFG_RANGE_FIELD.has_default_value = false
-PARTNER_BASE_CFG_RANGE_FIELD.default_value = 0
-PARTNER_BASE_CFG_RANGE_FIELD.type = 5
-PARTNER_BASE_CFG_RANGE_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_FETTERS_NUM_FIELD.name = "fetters_num"
-PARTNER_BASE_CFG_FETTERS_NUM_FIELD.full_name = ".ftcfg.partner_base_cfg.fetters_num"
-PARTNER_BASE_CFG_FETTERS_NUM_FIELD.number = 30
-PARTNER_BASE_CFG_FETTERS_NUM_FIELD.index = 29
-PARTNER_BASE_CFG_FETTERS_NUM_FIELD.label = 2
-PARTNER_BASE_CFG_FETTERS_NUM_FIELD.has_default_value = false
-PARTNER_BASE_CFG_FETTERS_NUM_FIELD.default_value = 0
-PARTNER_BASE_CFG_FETTERS_NUM_FIELD.type = 5
-PARTNER_BASE_CFG_FETTERS_NUM_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_PARTNER_ID_FIELD.name = "partner_id"
-PARTNER_BASE_CFG_PARTNER_ID_FIELD.full_name = ".ftcfg.partner_base_cfg.partner_id"
-PARTNER_BASE_CFG_PARTNER_ID_FIELD.number = 31
-PARTNER_BASE_CFG_PARTNER_ID_FIELD.index = 30
-PARTNER_BASE_CFG_PARTNER_ID_FIELD.label = 2
-PARTNER_BASE_CFG_PARTNER_ID_FIELD.has_default_value = false
-PARTNER_BASE_CFG_PARTNER_ID_FIELD.default_value = 0
-PARTNER_BASE_CFG_PARTNER_ID_FIELD.type = 5
-PARTNER_BASE_CFG_PARTNER_ID_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG_IS_RARE_FIELD.name = "is_rare"
-PARTNER_BASE_CFG_IS_RARE_FIELD.full_name = ".ftcfg.partner_base_cfg.is_rare"
-PARTNER_BASE_CFG_IS_RARE_FIELD.number = 32
-PARTNER_BASE_CFG_IS_RARE_FIELD.index = 31
-PARTNER_BASE_CFG_IS_RARE_FIELD.label = 2
-PARTNER_BASE_CFG_IS_RARE_FIELD.has_default_value = false
-PARTNER_BASE_CFG_IS_RARE_FIELD.default_value = false
-PARTNER_BASE_CFG_IS_RARE_FIELD.type = 8
-PARTNER_BASE_CFG_IS_RARE_FIELD.cpp_type = 7
-
-PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.name = "divine_group"
-PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.full_name = ".ftcfg.partner_base_cfg.divine_group"
-PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.number = 33
-PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.index = 32
-PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.label = 2
-PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.has_default_value = false
-PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.default_value = 0
-PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.type = 5
-PARTNER_BASE_CFG_DIVINE_GROUP_FIELD.cpp_type = 1
-
-PARTNER_BASE_CFG.name = "partner_base_cfg"
-PARTNER_BASE_CFG.full_name = ".ftcfg.partner_base_cfg"
-PARTNER_BASE_CFG.nested_types = {}
-PARTNER_BASE_CFG.enum_types = {}
-PARTNER_BASE_CFG.fields = {PARTNER_BASE_CFG_ID_FIELD, PARTNER_BASE_CFG_SHOW_NAME_FIELD, PARTNER_BASE_CFG_LOCK_FIELD, PARTNER_BASE_CFG_HEAD_FIELD, PARTNER_BASE_CFG_DRAW_FIELD, PARTNER_BASE_CFG_TYPE_FIELD, PARTNER_BASE_CFG_POKEDEX_FIELD, PARTNER_BASE_CFG_SKILLS_FIELD, PARTNER_BASE_CFG_AVATAR_FIELD, PARTNER_BASE_CFG_ACT_IDLE_FIELD, PARTNER_BASE_CFG_ACT_MOVE_FIELD, PARTNER_BASE_CFG_ACT_BORN_FIELD, PARTNER_BASE_CFG_ACT_DEAD_FIELD, PARTNER_BASE_CFG_RESURRECTION_FIELD, PARTNER_BASE_CFG_ADDITION_RATIO_FIELD, PARTNER_BASE_CFG_QUALITY_FIELD, PARTNER_BASE_CFG_GROWTH_CAP_FIELD, PARTNER_BASE_CFG_USE_ITEM_ID_FIELD, PARTNER_BASE_CFG_USE_ITEM_NUM_FIELD, PARTNER_BASE_CFG_CAN_USE_OMNIPOTENT_FIELD, PARTNER_BASE_CFG_END_SKILLS_FIELD, PARTNER_BASE_CFG_PASSIVE_SKILLS_FIELD, PARTNER_BASE_CFG_EXPERIENCE_MAX_FIELD, PARTNER_BASE_CFG_RESOURCES_TYPE_FIELD, PARTNER_BASE_CFG_RESOURCES_NUM_FIELD, PARTNER_BASE_CFG_RESOURCES_ID_FIELD, PARTNER_BASE_CFG_ITEMS_ID_FIELD, PARTNER_BASE_CFG_ITEMS_COUNT_FIELD, PARTNER_BASE_CFG_RANGE_FIELD, PARTNER_BASE_CFG_FETTERS_NUM_FIELD, PARTNER_BASE_CFG_PARTNER_ID_FIELD, PARTNER_BASE_CFG_IS_RARE_FIELD, PARTNER_BASE_CFG_DIVINE_GROUP_FIELD}
-PARTNER_BASE_CFG.is_extendable = false
-PARTNER_BASE_CFG.extensions = {}
-PARTNER_BASE_CFGS_ITEMS_FIELD.name = "items"
-PARTNER_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_base_cfgs.items"
-PARTNER_BASE_CFGS_ITEMS_FIELD.number = 1
-PARTNER_BASE_CFGS_ITEMS_FIELD.index = 0
-PARTNER_BASE_CFGS_ITEMS_FIELD.label = 3
-PARTNER_BASE_CFGS_ITEMS_FIELD.has_default_value = false
-PARTNER_BASE_CFGS_ITEMS_FIELD.default_value = {}
-PARTNER_BASE_CFGS_ITEMS_FIELD.message_type = PARTNER_BASE_CFG
-PARTNER_BASE_CFGS_ITEMS_FIELD.type = 11
-PARTNER_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PARTNER_BASE_CFGS.name = "partner_base_cfgs"
-PARTNER_BASE_CFGS.full_name = ".ftcfg.partner_base_cfgs"
-PARTNER_BASE_CFGS.nested_types = {}
-PARTNER_BASE_CFGS.enum_types = {}
-PARTNER_BASE_CFGS.fields = {PARTNER_BASE_CFGS_ITEMS_FIELD}
-PARTNER_BASE_CFGS.is_extendable = false
-PARTNER_BASE_CFGS.extensions = {}
-PARTNER_ATTRIBUTE_CFG_ID_FIELD.name = "id"
-PARTNER_ATTRIBUTE_CFG_ID_FIELD.full_name = ".ftcfg.partner_attribute_cfg.id"
-PARTNER_ATTRIBUTE_CFG_ID_FIELD.number = 1
-PARTNER_ATTRIBUTE_CFG_ID_FIELD.index = 0
-PARTNER_ATTRIBUTE_CFG_ID_FIELD.label = 2
-PARTNER_ATTRIBUTE_CFG_ID_FIELD.has_default_value = false
-PARTNER_ATTRIBUTE_CFG_ID_FIELD.default_value = 0
-PARTNER_ATTRIBUTE_CFG_ID_FIELD.type = 5
-PARTNER_ATTRIBUTE_CFG_ID_FIELD.cpp_type = 1
-
-PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.name = "levelup_exp"
-PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.full_name = ".ftcfg.partner_attribute_cfg.levelup_exp"
-PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.number = 2
-PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.index = 1
-PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.label = 2
-PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.has_default_value = false
-PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.default_value = 0.0
-PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.type = 1
-PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD.cpp_type = 5
-
-PARTNER_ATTRIBUTE_CFG.name = "partner_attribute_cfg"
-PARTNER_ATTRIBUTE_CFG.full_name = ".ftcfg.partner_attribute_cfg"
-PARTNER_ATTRIBUTE_CFG.nested_types = {}
-PARTNER_ATTRIBUTE_CFG.enum_types = {}
-PARTNER_ATTRIBUTE_CFG.fields = {PARTNER_ATTRIBUTE_CFG_ID_FIELD, PARTNER_ATTRIBUTE_CFG_LEVELUP_EXP_FIELD}
-PARTNER_ATTRIBUTE_CFG.is_extendable = false
-PARTNER_ATTRIBUTE_CFG.extensions = {}
-PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.name = "items"
-PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_attribute_cfgs.items"
-PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.number = 1
-PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.index = 0
-PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.label = 3
-PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.has_default_value = false
-PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.default_value = {}
-PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.message_type = PARTNER_ATTRIBUTE_CFG
-PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.type = 11
-PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PARTNER_ATTRIBUTE_CFGS.name = "partner_attribute_cfgs"
-PARTNER_ATTRIBUTE_CFGS.full_name = ".ftcfg.partner_attribute_cfgs"
-PARTNER_ATTRIBUTE_CFGS.nested_types = {}
-PARTNER_ATTRIBUTE_CFGS.enum_types = {}
-PARTNER_ATTRIBUTE_CFGS.fields = {PARTNER_ATTRIBUTE_CFGS_ITEMS_FIELD}
-PARTNER_ATTRIBUTE_CFGS.is_extendable = false
-PARTNER_ATTRIBUTE_CFGS.extensions = {}
-PARTNER_PASSIVESKILL_CFG_ID_FIELD.name = "id"
-PARTNER_PASSIVESKILL_CFG_ID_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.id"
-PARTNER_PASSIVESKILL_CFG_ID_FIELD.number = 1
-PARTNER_PASSIVESKILL_CFG_ID_FIELD.index = 0
-PARTNER_PASSIVESKILL_CFG_ID_FIELD.label = 2
-PARTNER_PASSIVESKILL_CFG_ID_FIELD.has_default_value = false
-PARTNER_PASSIVESKILL_CFG_ID_FIELD.default_value = 0
-PARTNER_PASSIVESKILL_CFG_ID_FIELD.type = 5
-PARTNER_PASSIVESKILL_CFG_ID_FIELD.cpp_type = 1
-
-PARTNER_PASSIVESKILL_CFG_NAME_FIELD.name = "name"
-PARTNER_PASSIVESKILL_CFG_NAME_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.name"
-PARTNER_PASSIVESKILL_CFG_NAME_FIELD.number = 2
-PARTNER_PASSIVESKILL_CFG_NAME_FIELD.index = 1
-PARTNER_PASSIVESKILL_CFG_NAME_FIELD.label = 2
-PARTNER_PASSIVESKILL_CFG_NAME_FIELD.has_default_value = false
-PARTNER_PASSIVESKILL_CFG_NAME_FIELD.default_value = ""
-PARTNER_PASSIVESKILL_CFG_NAME_FIELD.type = 9
-PARTNER_PASSIVESKILL_CFG_NAME_FIELD.cpp_type = 9
-
-PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.name = "level"
-PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.level"
-PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.number = 3
-PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.index = 2
-PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.label = 2
-PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.has_default_value = false
-PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.default_value = 0
-PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.type = 5
-PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD.cpp_type = 1
-
-PARTNER_PASSIVESKILL_CFG_ICON_FIELD.name = "icon"
-PARTNER_PASSIVESKILL_CFG_ICON_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.icon"
-PARTNER_PASSIVESKILL_CFG_ICON_FIELD.number = 4
-PARTNER_PASSIVESKILL_CFG_ICON_FIELD.index = 3
-PARTNER_PASSIVESKILL_CFG_ICON_FIELD.label = 2
-PARTNER_PASSIVESKILL_CFG_ICON_FIELD.has_default_value = false
-PARTNER_PASSIVESKILL_CFG_ICON_FIELD.default_value = 0
-PARTNER_PASSIVESKILL_CFG_ICON_FIELD.type = 5
-PARTNER_PASSIVESKILL_CFG_ICON_FIELD.cpp_type = 1
-
-PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.name = "pokedex_type"
-PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.pokedex_type"
-PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.number = 5
-PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.index = 4
-PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.label = 3
-PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.has_default_value = false
-PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.default_value = {}
-PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.type = 5
-PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD.cpp_type = 1
-
-PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.name = "prop_type"
-PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.prop_type"
-PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.number = 6
-PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.index = 5
-PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.label = 3
-PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.has_default_value = false
-PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.default_value = {}
-PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPOPTYPE
-PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.type = 14
-PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD.cpp_type = 8
-
-PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.name = "att_type"
-PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.att_type"
-PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.number = 7
-PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.index = 6
-PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.label = 3
-PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.has_default_value = false
-PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.default_value = {}
-PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
-PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.type = 14
-PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD.cpp_type = 8
-
-PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.name = "att_value"
-PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.att_value"
-PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.number = 8
-PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.index = 7
-PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.label = 3
-PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.has_default_value = false
-PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.default_value = {}
-PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.type = 2
-PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD.cpp_type = 6
-
-PARTNER_PASSIVESKILL_CFG_DESC_FIELD.name = "desc"
-PARTNER_PASSIVESKILL_CFG_DESC_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.desc"
-PARTNER_PASSIVESKILL_CFG_DESC_FIELD.number = 9
-PARTNER_PASSIVESKILL_CFG_DESC_FIELD.index = 8
-PARTNER_PASSIVESKILL_CFG_DESC_FIELD.label = 2
-PARTNER_PASSIVESKILL_CFG_DESC_FIELD.has_default_value = false
-PARTNER_PASSIVESKILL_CFG_DESC_FIELD.default_value = ""
-PARTNER_PASSIVESKILL_CFG_DESC_FIELD.type = 9
-PARTNER_PASSIVESKILL_CFG_DESC_FIELD.cpp_type = 9
-
-PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.name = "pokedex_desc"
-PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.pokedex_desc"
-PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.number = 10
-PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.index = 9
-PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.label = 2
-PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.has_default_value = false
-PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.default_value = ""
-PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.type = 9
-PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD.cpp_type = 9
-
-PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.name = "next_level"
-PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.next_level"
-PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.number = 11
-PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.index = 10
-PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.label = 2
-PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.has_default_value = false
-PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.default_value = 0
-PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.type = 5
-PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD.cpp_type = 1
-
-PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.name = "upper_level"
-PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.full_name = ".ftcfg.partner_passiveskill_cfg.upper_level"
-PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.number = 12
-PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.index = 11
-PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.label = 2
-PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.has_default_value = false
-PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.default_value = 0
-PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.type = 5
-PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD.cpp_type = 1
-
-PARTNER_PASSIVESKILL_CFG.name = "partner_passiveskill_cfg"
-PARTNER_PASSIVESKILL_CFG.full_name = ".ftcfg.partner_passiveskill_cfg"
-PARTNER_PASSIVESKILL_CFG.nested_types = {}
-PARTNER_PASSIVESKILL_CFG.enum_types = {}
-PARTNER_PASSIVESKILL_CFG.fields = {PARTNER_PASSIVESKILL_CFG_ID_FIELD, PARTNER_PASSIVESKILL_CFG_NAME_FIELD, PARTNER_PASSIVESKILL_CFG_LEVEL_FIELD, PARTNER_PASSIVESKILL_CFG_ICON_FIELD, PARTNER_PASSIVESKILL_CFG_POKEDEX_TYPE_FIELD, PARTNER_PASSIVESKILL_CFG_PROP_TYPE_FIELD, PARTNER_PASSIVESKILL_CFG_ATT_TYPE_FIELD, PARTNER_PASSIVESKILL_CFG_ATT_VALUE_FIELD, PARTNER_PASSIVESKILL_CFG_DESC_FIELD, PARTNER_PASSIVESKILL_CFG_POKEDEX_DESC_FIELD, PARTNER_PASSIVESKILL_CFG_NEXT_LEVEL_FIELD, PARTNER_PASSIVESKILL_CFG_UPPER_LEVEL_FIELD}
-PARTNER_PASSIVESKILL_CFG.is_extendable = false
-PARTNER_PASSIVESKILL_CFG.extensions = {}
-PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.name = "items"
-PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_passiveskill_cfgs.items"
-PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.number = 1
-PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.index = 0
-PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.label = 3
-PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.has_default_value = false
-PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.default_value = {}
-PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.message_type = PARTNER_PASSIVESKILL_CFG
-PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.type = 11
-PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PARTNER_PASSIVESKILL_CFGS.name = "partner_passiveskill_cfgs"
-PARTNER_PASSIVESKILL_CFGS.full_name = ".ftcfg.partner_passiveskill_cfgs"
-PARTNER_PASSIVESKILL_CFGS.nested_types = {}
-PARTNER_PASSIVESKILL_CFGS.enum_types = {}
-PARTNER_PASSIVESKILL_CFGS.fields = {PARTNER_PASSIVESKILL_CFGS_ITEMS_FIELD}
-PARTNER_PASSIVESKILL_CFGS.is_extendable = false
-PARTNER_PASSIVESKILL_CFGS.extensions = {}
-PARTNER_CHIP_CFG_ID_FIELD.name = "id"
-PARTNER_CHIP_CFG_ID_FIELD.full_name = ".ftcfg.partner_chip_cfg.id"
-PARTNER_CHIP_CFG_ID_FIELD.number = 1
-PARTNER_CHIP_CFG_ID_FIELD.index = 0
-PARTNER_CHIP_CFG_ID_FIELD.label = 2
-PARTNER_CHIP_CFG_ID_FIELD.has_default_value = false
-PARTNER_CHIP_CFG_ID_FIELD.default_value = 0
-PARTNER_CHIP_CFG_ID_FIELD.type = 13
-PARTNER_CHIP_CFG_ID_FIELD.cpp_type = 3
-
-PARTNER_CHIP_CFG_CHIP_NAME_FIELD.name = "chip_name"
-PARTNER_CHIP_CFG_CHIP_NAME_FIELD.full_name = ".ftcfg.partner_chip_cfg.chip_name"
-PARTNER_CHIP_CFG_CHIP_NAME_FIELD.number = 2
-PARTNER_CHIP_CFG_CHIP_NAME_FIELD.index = 1
-PARTNER_CHIP_CFG_CHIP_NAME_FIELD.label = 2
-PARTNER_CHIP_CFG_CHIP_NAME_FIELD.has_default_value = false
-PARTNER_CHIP_CFG_CHIP_NAME_FIELD.default_value = ""
-PARTNER_CHIP_CFG_CHIP_NAME_FIELD.type = 9
-PARTNER_CHIP_CFG_CHIP_NAME_FIELD.cpp_type = 9
-
-PARTNER_CHIP_CFG_ICON_FIELD.name = "icon"
-PARTNER_CHIP_CFG_ICON_FIELD.full_name = ".ftcfg.partner_chip_cfg.icon"
-PARTNER_CHIP_CFG_ICON_FIELD.number = 3
-PARTNER_CHIP_CFG_ICON_FIELD.index = 2
-PARTNER_CHIP_CFG_ICON_FIELD.label = 2
-PARTNER_CHIP_CFG_ICON_FIELD.has_default_value = false
-PARTNER_CHIP_CFG_ICON_FIELD.default_value = ""
-PARTNER_CHIP_CFG_ICON_FIELD.type = 9
-PARTNER_CHIP_CFG_ICON_FIELD.cpp_type = 9
-
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.name = "change_need_num1"
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.full_name = ".ftcfg.partner_chip_cfg.change_need_num1"
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.number = 4
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.index = 3
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.label = 2
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.has_default_value = false
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.default_value = 0
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.type = 5
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD.cpp_type = 1
-
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.name = "change_need_num2"
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.full_name = ".ftcfg.partner_chip_cfg.change_need_num2"
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.number = 5
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.index = 4
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.label = 2
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.has_default_value = false
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.default_value = 0
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.type = 5
-PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD.cpp_type = 1
-
-PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.name = "change_need_prop"
-PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.full_name = ".ftcfg.partner_chip_cfg.change_need_prop"
-PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.number = 6
-PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.index = 5
-PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.label = 2
-PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.has_default_value = false
-PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.default_value = 0
-PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.type = 13
-PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD.cpp_type = 3
-
-PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.name = "change_need_propnum"
-PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.full_name = ".ftcfg.partner_chip_cfg.change_need_propnum"
-PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.number = 7
-PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.index = 6
-PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.label = 2
-PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.has_default_value = false
-PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.default_value = 0
-PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.type = 5
-PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD.cpp_type = 1
-
-PARTNER_CHIP_CFG.name = "partner_chip_cfg"
-PARTNER_CHIP_CFG.full_name = ".ftcfg.partner_chip_cfg"
-PARTNER_CHIP_CFG.nested_types = {}
-PARTNER_CHIP_CFG.enum_types = {}
-PARTNER_CHIP_CFG.fields = {PARTNER_CHIP_CFG_ID_FIELD, PARTNER_CHIP_CFG_CHIP_NAME_FIELD, PARTNER_CHIP_CFG_ICON_FIELD, PARTNER_CHIP_CFG_CHANGE_NEED_NUM1_FIELD, PARTNER_CHIP_CFG_CHANGE_NEED_NUM2_FIELD, PARTNER_CHIP_CFG_CHANGE_NEED_PROP_FIELD, PARTNER_CHIP_CFG_CHANGE_NEED_PROPNUM_FIELD}
-PARTNER_CHIP_CFG.is_extendable = false
-PARTNER_CHIP_CFG.extensions = {}
-PARTNER_CHIP_CFGS_ITEMS_FIELD.name = "items"
-PARTNER_CHIP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_chip_cfgs.items"
-PARTNER_CHIP_CFGS_ITEMS_FIELD.number = 1
-PARTNER_CHIP_CFGS_ITEMS_FIELD.index = 0
-PARTNER_CHIP_CFGS_ITEMS_FIELD.label = 3
-PARTNER_CHIP_CFGS_ITEMS_FIELD.has_default_value = false
-PARTNER_CHIP_CFGS_ITEMS_FIELD.default_value = {}
-PARTNER_CHIP_CFGS_ITEMS_FIELD.message_type = PARTNER_CHIP_CFG
-PARTNER_CHIP_CFGS_ITEMS_FIELD.type = 11
-PARTNER_CHIP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PARTNER_CHIP_CFGS.name = "partner_chip_cfgs"
-PARTNER_CHIP_CFGS.full_name = ".ftcfg.partner_chip_cfgs"
-PARTNER_CHIP_CFGS.nested_types = {}
-PARTNER_CHIP_CFGS.enum_types = {}
-PARTNER_CHIP_CFGS.fields = {PARTNER_CHIP_CFGS_ITEMS_FIELD}
-PARTNER_CHIP_CFGS.is_extendable = false
-PARTNER_CHIP_CFGS.extensions = {}
-FETTER_CFG_ID_FIELD.name = "id"
-FETTER_CFG_ID_FIELD.full_name = ".ftcfg.fetter_cfg.id"
-FETTER_CFG_ID_FIELD.number = 1
-FETTER_CFG_ID_FIELD.index = 0
-FETTER_CFG_ID_FIELD.label = 2
-FETTER_CFG_ID_FIELD.has_default_value = false
-FETTER_CFG_ID_FIELD.default_value = 0
-FETTER_CFG_ID_FIELD.type = 13
-FETTER_CFG_ID_FIELD.cpp_type = 3
-
-FETTER_CFG_TID_FIELD.name = "tid"
-FETTER_CFG_TID_FIELD.full_name = ".ftcfg.fetter_cfg.tid"
-FETTER_CFG_TID_FIELD.number = 2
-FETTER_CFG_TID_FIELD.index = 1
-FETTER_CFG_TID_FIELD.label = 2
-FETTER_CFG_TID_FIELD.has_default_value = false
-FETTER_CFG_TID_FIELD.default_value = 0
-FETTER_CFG_TID_FIELD.type = 13
-FETTER_CFG_TID_FIELD.cpp_type = 3
-
-FETTER_CFG_FETTER_NAME_FIELD.name = "fetter_name"
-FETTER_CFG_FETTER_NAME_FIELD.full_name = ".ftcfg.fetter_cfg.fetter_name"
-FETTER_CFG_FETTER_NAME_FIELD.number = 3
-FETTER_CFG_FETTER_NAME_FIELD.index = 2
-FETTER_CFG_FETTER_NAME_FIELD.label = 2
-FETTER_CFG_FETTER_NAME_FIELD.has_default_value = false
-FETTER_CFG_FETTER_NAME_FIELD.default_value = ""
-FETTER_CFG_FETTER_NAME_FIELD.type = 9
-FETTER_CFG_FETTER_NAME_FIELD.cpp_type = 9
-
-FETTER_CFG_FETTER_DESC_FIELD.name = "fetter_desc"
-FETTER_CFG_FETTER_DESC_FIELD.full_name = ".ftcfg.fetter_cfg.fetter_desc"
-FETTER_CFG_FETTER_DESC_FIELD.number = 4
-FETTER_CFG_FETTER_DESC_FIELD.index = 3
-FETTER_CFG_FETTER_DESC_FIELD.label = 2
-FETTER_CFG_FETTER_DESC_FIELD.has_default_value = false
-FETTER_CFG_FETTER_DESC_FIELD.default_value = ""
-FETTER_CFG_FETTER_DESC_FIELD.type = 9
-FETTER_CFG_FETTER_DESC_FIELD.cpp_type = 9
-
-FETTER_CFG_FETTER_OBJECT_FIELD.name = "fetter_object"
-FETTER_CFG_FETTER_OBJECT_FIELD.full_name = ".ftcfg.fetter_cfg.fetter_object"
-FETTER_CFG_FETTER_OBJECT_FIELD.number = 5
-FETTER_CFG_FETTER_OBJECT_FIELD.index = 4
-FETTER_CFG_FETTER_OBJECT_FIELD.label = 3
-FETTER_CFG_FETTER_OBJECT_FIELD.has_default_value = false
-FETTER_CFG_FETTER_OBJECT_FIELD.default_value = {}
-FETTER_CFG_FETTER_OBJECT_FIELD.type = 13
-FETTER_CFG_FETTER_OBJECT_FIELD.cpp_type = 3
-
-FETTER_CFG.name = "fetter_cfg"
-FETTER_CFG.full_name = ".ftcfg.fetter_cfg"
-FETTER_CFG.nested_types = {}
-FETTER_CFG.enum_types = {}
-FETTER_CFG.fields = {FETTER_CFG_ID_FIELD, FETTER_CFG_TID_FIELD, FETTER_CFG_FETTER_NAME_FIELD, FETTER_CFG_FETTER_DESC_FIELD, FETTER_CFG_FETTER_OBJECT_FIELD}
-FETTER_CFG.is_extendable = false
-FETTER_CFG.extensions = {}
-FETTER_CFGS_ITEMS_FIELD.name = "items"
-FETTER_CFGS_ITEMS_FIELD.full_name = ".ftcfg.fetter_cfgs.items"
-FETTER_CFGS_ITEMS_FIELD.number = 1
-FETTER_CFGS_ITEMS_FIELD.index = 0
-FETTER_CFGS_ITEMS_FIELD.label = 3
-FETTER_CFGS_ITEMS_FIELD.has_default_value = false
-FETTER_CFGS_ITEMS_FIELD.default_value = {}
-FETTER_CFGS_ITEMS_FIELD.message_type = FETTER_CFG
-FETTER_CFGS_ITEMS_FIELD.type = 11
-FETTER_CFGS_ITEMS_FIELD.cpp_type = 10
-
-FETTER_CFGS.name = "fetter_cfgs"
-FETTER_CFGS.full_name = ".ftcfg.fetter_cfgs"
-FETTER_CFGS.nested_types = {}
-FETTER_CFGS.enum_types = {}
-FETTER_CFGS.fields = {FETTER_CFGS_ITEMS_FIELD}
-FETTER_CFGS.is_extendable = false
-FETTER_CFGS.extensions = {}
-PARTNER_EQUIPHECHENG_CFG_ID_FIELD.name = "id"
-PARTNER_EQUIPHECHENG_CFG_ID_FIELD.full_name = ".ftcfg.partner_equiphecheng_cfg.id"
-PARTNER_EQUIPHECHENG_CFG_ID_FIELD.number = 1
-PARTNER_EQUIPHECHENG_CFG_ID_FIELD.index = 0
-PARTNER_EQUIPHECHENG_CFG_ID_FIELD.label = 2
-PARTNER_EQUIPHECHENG_CFG_ID_FIELD.has_default_value = false
-PARTNER_EQUIPHECHENG_CFG_ID_FIELD.default_value = 0
-PARTNER_EQUIPHECHENG_CFG_ID_FIELD.type = 13
-PARTNER_EQUIPHECHENG_CFG_ID_FIELD.cpp_type = 3
-
-PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.name = "name"
-PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.full_name = ".ftcfg.partner_equiphecheng_cfg.name"
-PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.number = 2
-PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.index = 1
-PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.label = 2
-PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.has_default_value = false
-PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.default_value = ""
-PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.type = 9
-PARTNER_EQUIPHECHENG_CFG_NAME_FIELD.cpp_type = 9
-
-PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.name = "stuffid"
-PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.full_name = ".ftcfg.partner_equiphecheng_cfg.stuffid"
-PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.number = 3
-PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.index = 2
-PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.label = 3
-PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.has_default_value = false
-PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.default_value = {}
-PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.type = 13
-PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD.cpp_type = 3
-
-PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.name = "stuffid2"
-PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.full_name = ".ftcfg.partner_equiphecheng_cfg.stuffid2"
-PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.number = 4
-PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.index = 3
-PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.label = 3
-PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.has_default_value = false
-PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.default_value = {}
-PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.type = 13
-PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD.cpp_type = 3
-
-PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.name = "composite_display"
-PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.full_name = ".ftcfg.partner_equiphecheng_cfg.composite_display"
-PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.number = 5
-PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.index = 4
-PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.label = 2
-PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.has_default_value = false
-PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.default_value = 0
-PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.type = 5
-PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD.cpp_type = 1
-
-PARTNER_EQUIPHECHENG_CFG.name = "partner_equiphecheng_cfg"
-PARTNER_EQUIPHECHENG_CFG.full_name = ".ftcfg.partner_equiphecheng_cfg"
-PARTNER_EQUIPHECHENG_CFG.nested_types = {}
-PARTNER_EQUIPHECHENG_CFG.enum_types = {}
-PARTNER_EQUIPHECHENG_CFG.fields = {PARTNER_EQUIPHECHENG_CFG_ID_FIELD, PARTNER_EQUIPHECHENG_CFG_NAME_FIELD, PARTNER_EQUIPHECHENG_CFG_STUFFID_FIELD, PARTNER_EQUIPHECHENG_CFG_STUFFID2_FIELD, PARTNER_EQUIPHECHENG_CFG_COMPOSITE_DISPLAY_FIELD}
-PARTNER_EQUIPHECHENG_CFG.is_extendable = false
-PARTNER_EQUIPHECHENG_CFG.extensions = {}
-PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.name = "items"
-PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_equiphecheng_cfgs.items"
-PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.number = 1
-PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.index = 0
-PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.label = 3
-PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.has_default_value = false
-PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.default_value = {}
-PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.message_type = PARTNER_EQUIPHECHENG_CFG
-PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.type = 11
-PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PARTNER_EQUIPHECHENG_CFGS.name = "partner_equiphecheng_cfgs"
-PARTNER_EQUIPHECHENG_CFGS.full_name = ".ftcfg.partner_equiphecheng_cfgs"
-PARTNER_EQUIPHECHENG_CFGS.nested_types = {}
-PARTNER_EQUIPHECHENG_CFGS.enum_types = {}
-PARTNER_EQUIPHECHENG_CFGS.fields = {PARTNER_EQUIPHECHENG_CFGS_ITEMS_FIELD}
-PARTNER_EQUIPHECHENG_CFGS.is_extendable = false
-PARTNER_EQUIPHECHENG_CFGS.extensions = {}
-PARTNER_FORMATION_CFG_ID_FIELD.name = "id"
-PARTNER_FORMATION_CFG_ID_FIELD.full_name = ".ftcfg.partner_formation_cfg.id"
-PARTNER_FORMATION_CFG_ID_FIELD.number = 1
-PARTNER_FORMATION_CFG_ID_FIELD.index = 0
-PARTNER_FORMATION_CFG_ID_FIELD.label = 2
-PARTNER_FORMATION_CFG_ID_FIELD.has_default_value = false
-PARTNER_FORMATION_CFG_ID_FIELD.default_value = 0
-PARTNER_FORMATION_CFG_ID_FIELD.type = 5
-PARTNER_FORMATION_CFG_ID_FIELD.cpp_type = 1
-
-PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.name = "prop_add1"
-PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.full_name = ".ftcfg.partner_formation_cfg.prop_add1"
-PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.number = 2
-PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.index = 1
-PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.label = 2
-PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.has_default_value = false
-PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.default_value = nil
-PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
-PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.type = 14
-PARTNER_FORMATION_CFG_PROP_ADD1_FIELD.cpp_type = 8
-
-PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.name = "prop_add2"
-PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.full_name = ".ftcfg.partner_formation_cfg.prop_add2"
-PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.number = 3
-PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.index = 2
-PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.label = 2
-PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.has_default_value = false
-PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.default_value = nil
-PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
-PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.type = 14
-PARTNER_FORMATION_CFG_PROP_ADD2_FIELD.cpp_type = 8
-
-PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.name = "prop_add3"
-PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.full_name = ".ftcfg.partner_formation_cfg.prop_add3"
-PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.number = 4
-PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.index = 3
-PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.label = 2
-PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.has_default_value = false
-PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.default_value = nil
-PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
-PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.type = 14
-PARTNER_FORMATION_CFG_PROP_ADD3_FIELD.cpp_type = 8
-
-PARTNER_FORMATION_CFG.name = "partner_formation_cfg"
-PARTNER_FORMATION_CFG.full_name = ".ftcfg.partner_formation_cfg"
-PARTNER_FORMATION_CFG.nested_types = {}
-PARTNER_FORMATION_CFG.enum_types = {}
-PARTNER_FORMATION_CFG.fields = {PARTNER_FORMATION_CFG_ID_FIELD, PARTNER_FORMATION_CFG_PROP_ADD1_FIELD, PARTNER_FORMATION_CFG_PROP_ADD2_FIELD, PARTNER_FORMATION_CFG_PROP_ADD3_FIELD}
-PARTNER_FORMATION_CFG.is_extendable = false
-PARTNER_FORMATION_CFG.extensions = {}
-PARTNER_FORMATION_CFGS_ITEMS_FIELD.name = "items"
-PARTNER_FORMATION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.partner_formation_cfgs.items"
-PARTNER_FORMATION_CFGS_ITEMS_FIELD.number = 1
-PARTNER_FORMATION_CFGS_ITEMS_FIELD.index = 0
-PARTNER_FORMATION_CFGS_ITEMS_FIELD.label = 3
-PARTNER_FORMATION_CFGS_ITEMS_FIELD.has_default_value = false
-PARTNER_FORMATION_CFGS_ITEMS_FIELD.default_value = {}
-PARTNER_FORMATION_CFGS_ITEMS_FIELD.message_type = PARTNER_FORMATION_CFG
-PARTNER_FORMATION_CFGS_ITEMS_FIELD.type = 11
-PARTNER_FORMATION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-PARTNER_FORMATION_CFGS.name = "partner_formation_cfgs"
-PARTNER_FORMATION_CFGS.full_name = ".ftcfg.partner_formation_cfgs"
-PARTNER_FORMATION_CFGS.nested_types = {}
-PARTNER_FORMATION_CFGS.enum_types = {}
-PARTNER_FORMATION_CFGS.fields = {PARTNER_FORMATION_CFGS_ITEMS_FIELD}
-PARTNER_FORMATION_CFGS.is_extendable = false
-PARTNER_FORMATION_CFGS.extensions = {}
-GUILD_MISSION_CFG_ID_FIELD.name = "id"
-GUILD_MISSION_CFG_ID_FIELD.full_name = ".ftcfg.guild_mission_cfg.id"
-GUILD_MISSION_CFG_ID_FIELD.number = 1
-GUILD_MISSION_CFG_ID_FIELD.index = 0
-GUILD_MISSION_CFG_ID_FIELD.label = 2
-GUILD_MISSION_CFG_ID_FIELD.has_default_value = false
-GUILD_MISSION_CFG_ID_FIELD.default_value = 0
-GUILD_MISSION_CFG_ID_FIELD.type = 13
-GUILD_MISSION_CFG_ID_FIELD.cpp_type = 3
-
-GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.name = "guild_task_level"
-GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.full_name = ".ftcfg.guild_mission_cfg.guild_task_level"
-GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.number = 2
-GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.index = 1
-GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.label = 2
-GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.has_default_value = false
-GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.default_value = 0
-GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.type = 5
-GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD.cpp_type = 1
-
-GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.name = "guild_task_day"
-GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.full_name = ".ftcfg.guild_mission_cfg.guild_task_day"
-GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.number = 3
-GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.index = 2
-GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.label = 3
-GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.has_default_value = false
-GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.default_value = {}
-GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.type = 5
-GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD.cpp_type = 1
-
-GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.name = "guild_task_quality"
-GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.full_name = ".ftcfg.guild_mission_cfg.guild_task_quality"
-GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.number = 4
-GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.index = 3
-GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.label = 2
-GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.has_default_value = false
-GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.default_value = nil
-GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.enum_type = config_predefine_pb.EGUILDQUALITYTYPE
-GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.type = 14
-GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD.cpp_type = 8
-
-GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.name = "guild_task_targetid"
-GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.full_name = ".ftcfg.guild_mission_cfg.guild_task_targetid"
-GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.number = 5
-GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.index = 4
-GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.label = 2
-GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.has_default_value = false
-GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.default_value = 0
-GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.type = 5
-GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD.cpp_type = 1
-
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.name = "guild_task_condition_type"
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.full_name = ".ftcfg.guild_mission_cfg.guild_task_condition_type"
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.number = 6
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.index = 5
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.label = 2
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.has_default_value = false
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.default_value = nil
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.enum_type = config_predefine_pb.EGUILDTASKTYPE
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.type = 14
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD.cpp_type = 8
-
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.name = "guild_task_condition_number"
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.full_name = ".ftcfg.guild_mission_cfg.guild_task_condition_number"
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.number = 7
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.index = 6
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.label = 3
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.has_default_value = false
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.default_value = {}
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.type = 5
-GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD.cpp_type = 1
-
-GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.name = "guild_task_rewaedid"
-GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.full_name = ".ftcfg.guild_mission_cfg.guild_task_rewaedid"
-GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.number = 8
-GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.index = 7
-GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.label = 2
-GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.has_default_value = false
-GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.default_value = 0
-GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.type = 5
-GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD.cpp_type = 1
-
-GUILD_MISSION_CFG.name = "guild_mission_cfg"
-GUILD_MISSION_CFG.full_name = ".ftcfg.guild_mission_cfg"
-GUILD_MISSION_CFG.nested_types = {}
-GUILD_MISSION_CFG.enum_types = {}
-GUILD_MISSION_CFG.fields = {GUILD_MISSION_CFG_ID_FIELD, GUILD_MISSION_CFG_GUILD_TASK_LEVEL_FIELD, GUILD_MISSION_CFG_GUILD_TASK_DAY_FIELD, GUILD_MISSION_CFG_GUILD_TASK_QUALITY_FIELD, GUILD_MISSION_CFG_GUILD_TASK_TARGETID_FIELD, GUILD_MISSION_CFG_GUILD_TASK_CONDITION_TYPE_FIELD, GUILD_MISSION_CFG_GUILD_TASK_CONDITION_NUMBER_FIELD, GUILD_MISSION_CFG_GUILD_TASK_REWAEDID_FIELD}
-GUILD_MISSION_CFG.is_extendable = false
-GUILD_MISSION_CFG.extensions = {}
-GUILD_MISSION_CFGS_ITEMS_FIELD.name = "items"
-GUILD_MISSION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.guild_mission_cfgs.items"
-GUILD_MISSION_CFGS_ITEMS_FIELD.number = 1
-GUILD_MISSION_CFGS_ITEMS_FIELD.index = 0
-GUILD_MISSION_CFGS_ITEMS_FIELD.label = 3
-GUILD_MISSION_CFGS_ITEMS_FIELD.has_default_value = false
-GUILD_MISSION_CFGS_ITEMS_FIELD.default_value = {}
-GUILD_MISSION_CFGS_ITEMS_FIELD.message_type = GUILD_MISSION_CFG
-GUILD_MISSION_CFGS_ITEMS_FIELD.type = 11
-GUILD_MISSION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-GUILD_MISSION_CFGS.name = "guild_mission_cfgs"
-GUILD_MISSION_CFGS.full_name = ".ftcfg.guild_mission_cfgs"
-GUILD_MISSION_CFGS.nested_types = {}
-GUILD_MISSION_CFGS.enum_types = {}
-GUILD_MISSION_CFGS.fields = {GUILD_MISSION_CFGS_ITEMS_FIELD}
-GUILD_MISSION_CFGS.is_extendable = false
-GUILD_MISSION_CFGS.extensions = {}
-GUILD_BUILDING_MISSION_CFG_ID_FIELD.name = "id"
-GUILD_BUILDING_MISSION_CFG_ID_FIELD.full_name = ".ftcfg.guild_building_mission_cfg.id"
-GUILD_BUILDING_MISSION_CFG_ID_FIELD.number = 1
-GUILD_BUILDING_MISSION_CFG_ID_FIELD.index = 0
-GUILD_BUILDING_MISSION_CFG_ID_FIELD.label = 2
-GUILD_BUILDING_MISSION_CFG_ID_FIELD.has_default_value = false
-GUILD_BUILDING_MISSION_CFG_ID_FIELD.default_value = 0
-GUILD_BUILDING_MISSION_CFG_ID_FIELD.type = 13
-GUILD_BUILDING_MISSION_CFG_ID_FIELD.cpp_type = 3
-
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.name = "submit_condition"
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.full_name = ".ftcfg.guild_building_mission_cfg.submit_condition"
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.number = 2
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.index = 1
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.label = 3
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.has_default_value = false
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.default_value = {}
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.type = 5
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD.cpp_type = 1
-
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.name = "submit_condition_reward"
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.full_name = ".ftcfg.guild_building_mission_cfg.submit_condition_reward"
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.number = 3
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.index = 2
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.label = 3
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.has_default_value = false
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.default_value = {}
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.type = 5
-GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD.cpp_type = 1
-
-GUILD_BUILDING_MISSION_CFG.name = "guild_building_mission_cfg"
-GUILD_BUILDING_MISSION_CFG.full_name = ".ftcfg.guild_building_mission_cfg"
-GUILD_BUILDING_MISSION_CFG.nested_types = {}
-GUILD_BUILDING_MISSION_CFG.enum_types = {}
-GUILD_BUILDING_MISSION_CFG.fields = {GUILD_BUILDING_MISSION_CFG_ID_FIELD, GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_FIELD, GUILD_BUILDING_MISSION_CFG_SUBMIT_CONDITION_REWARD_FIELD}
-GUILD_BUILDING_MISSION_CFG.is_extendable = false
-GUILD_BUILDING_MISSION_CFG.extensions = {}
-GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.name = "items"
-GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.guild_building_mission_cfgs.items"
-GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.number = 1
-GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.index = 0
-GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.label = 3
-GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.has_default_value = false
-GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.default_value = {}
-GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.message_type = GUILD_BUILDING_MISSION_CFG
-GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.type = 11
-GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-GUILD_BUILDING_MISSION_CFGS.name = "guild_building_mission_cfgs"
-GUILD_BUILDING_MISSION_CFGS.full_name = ".ftcfg.guild_building_mission_cfgs"
-GUILD_BUILDING_MISSION_CFGS.nested_types = {}
-GUILD_BUILDING_MISSION_CFGS.enum_types = {}
-GUILD_BUILDING_MISSION_CFGS.fields = {GUILD_BUILDING_MISSION_CFGS_ITEMS_FIELD}
-GUILD_BUILDING_MISSION_CFGS.is_extendable = false
-GUILD_BUILDING_MISSION_CFGS.extensions = {}
-BUILDING_MISSION_POOL_CFG_ID_FIELD.name = "id"
-BUILDING_MISSION_POOL_CFG_ID_FIELD.full_name = ".ftcfg.building_mission_pool_cfg.id"
-BUILDING_MISSION_POOL_CFG_ID_FIELD.number = 1
-BUILDING_MISSION_POOL_CFG_ID_FIELD.index = 0
-BUILDING_MISSION_POOL_CFG_ID_FIELD.label = 2
-BUILDING_MISSION_POOL_CFG_ID_FIELD.has_default_value = false
-BUILDING_MISSION_POOL_CFG_ID_FIELD.default_value = 0
-BUILDING_MISSION_POOL_CFG_ID_FIELD.type = 13
-BUILDING_MISSION_POOL_CFG_ID_FIELD.cpp_type = 3
-
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.name = "need_item_id"
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.full_name = ".ftcfg.building_mission_pool_cfg.need_item_id"
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.number = 2
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.index = 1
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.label = 2
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.has_default_value = false
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.default_value = 0
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.type = 5
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD.cpp_type = 1
-
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.name = "need_item_number"
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.full_name = ".ftcfg.building_mission_pool_cfg.need_item_number"
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.number = 3
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.index = 2
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.label = 2
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.has_default_value = false
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.default_value = 0
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.type = 5
-BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD.cpp_type = 1
-
-BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.name = "is_help"
-BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.full_name = ".ftcfg.building_mission_pool_cfg.is_help"
-BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.number = 4
-BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.index = 3
-BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.label = 2
-BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.has_default_value = false
-BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.default_value = false
-BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.type = 8
-BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD.cpp_type = 7
-
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.name = "buy_coin_type"
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.full_name = ".ftcfg.building_mission_pool_cfg.buy_coin_type"
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.number = 5
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.index = 4
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.label = 2
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.has_default_value = false
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.default_value = 0
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.type = 5
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD.cpp_type = 1
-
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.name = "buy_coin_type_nember"
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.full_name = ".ftcfg.building_mission_pool_cfg.buy_coin_type_nember"
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.number = 6
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.index = 5
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.label = 2
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.has_default_value = false
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.default_value = 0
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.type = 5
-BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD.cpp_type = 1
-
-BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.name = "help_reward"
-BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.full_name = ".ftcfg.building_mission_pool_cfg.help_reward"
-BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.number = 7
-BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.index = 6
-BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.label = 2
-BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.has_default_value = false
-BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.default_value = 0
-BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.type = 5
-BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD.cpp_type = 1
-
-BUILDING_MISSION_POOL_CFG.name = "building_mission_pool_cfg"
-BUILDING_MISSION_POOL_CFG.full_name = ".ftcfg.building_mission_pool_cfg"
-BUILDING_MISSION_POOL_CFG.nested_types = {}
-BUILDING_MISSION_POOL_CFG.enum_types = {}
-BUILDING_MISSION_POOL_CFG.fields = {BUILDING_MISSION_POOL_CFG_ID_FIELD, BUILDING_MISSION_POOL_CFG_NEED_ITEM_ID_FIELD, BUILDING_MISSION_POOL_CFG_NEED_ITEM_NUMBER_FIELD, BUILDING_MISSION_POOL_CFG_IS_HELP_FIELD, BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_FIELD, BUILDING_MISSION_POOL_CFG_BUY_COIN_TYPE_NEMBER_FIELD, BUILDING_MISSION_POOL_CFG_HELP_REWARD_FIELD}
-BUILDING_MISSION_POOL_CFG.is_extendable = false
-BUILDING_MISSION_POOL_CFG.extensions = {}
-BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.name = "items"
-BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.building_mission_pool_cfgs.items"
-BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.number = 1
-BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.index = 0
-BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.label = 3
-BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.has_default_value = false
-BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.default_value = {}
-BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.message_type = BUILDING_MISSION_POOL_CFG
-BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.type = 11
-BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD.cpp_type = 10
-
-BUILDING_MISSION_POOL_CFGS.name = "building_mission_pool_cfgs"
-BUILDING_MISSION_POOL_CFGS.full_name = ".ftcfg.building_mission_pool_cfgs"
-BUILDING_MISSION_POOL_CFGS.nested_types = {}
-BUILDING_MISSION_POOL_CFGS.enum_types = {}
-BUILDING_MISSION_POOL_CFGS.fields = {BUILDING_MISSION_POOL_CFGS_ITEMS_FIELD}
-BUILDING_MISSION_POOL_CFGS.is_extendable = false
-BUILDING_MISSION_POOL_CFGS.extensions = {}
-GUILD_MISSION_BASE_CFG_ID_FIELD.name = "id"
-GUILD_MISSION_BASE_CFG_ID_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.id"
-GUILD_MISSION_BASE_CFG_ID_FIELD.number = 1
-GUILD_MISSION_BASE_CFG_ID_FIELD.index = 0
-GUILD_MISSION_BASE_CFG_ID_FIELD.label = 2
-GUILD_MISSION_BASE_CFG_ID_FIELD.has_default_value = false
-GUILD_MISSION_BASE_CFG_ID_FIELD.default_value = 0
-GUILD_MISSION_BASE_CFG_ID_FIELD.type = 13
-GUILD_MISSION_BASE_CFG_ID_FIELD.cpp_type = 3
-
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.name = "quality_probability_white"
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.quality_probability_white"
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.number = 2
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.index = 1
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.label = 2
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.has_default_value = false
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.default_value = 0
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.type = 5
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD.cpp_type = 1
-
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.name = "quality_probability_Green"
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.quality_probability_Green"
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.number = 3
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.index = 2
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.label = 2
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.has_default_value = false
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.default_value = 0
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.type = 5
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD.cpp_type = 1
-
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.name = "quality_probability_Blue"
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.quality_probability_Blue"
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.number = 4
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.index = 3
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.label = 2
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.has_default_value = false
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.default_value = 0
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.type = 5
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD.cpp_type = 1
-
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.name = "quality_probability_Purple"
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.quality_probability_Purple"
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.number = 5
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.index = 4
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.label = 2
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.has_default_value = false
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.default_value = 0
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.type = 5
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD.cpp_type = 1
-
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.name = "quality_probability_Orange"
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.quality_probability_Orange"
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.number = 6
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.index = 5
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.label = 2
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.has_default_value = false
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.default_value = 0
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.type = 5
-GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD.cpp_type = 1
-
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.name = "refresh_cost_item"
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.refresh_cost_item"
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.number = 7
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.index = 6
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.label = 2
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.has_default_value = false
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.default_value = 0
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.type = 5
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD.cpp_type = 1
-
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.name = "refresh_cost_item_number"
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.refresh_cost_item_number"
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.number = 8
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.index = 7
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.label = 2
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.has_default_value = false
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.default_value = 0
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.type = 5
-GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD.cpp_type = 1
-
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.name = "refresh_cost_cion_type"
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.refresh_cost_cion_type"
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.number = 9
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.index = 8
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.label = 2
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.has_default_value = false
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.default_value = 0
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.type = 5
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD.cpp_type = 1
-
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.name = "refresh_cost_cion_number"
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.full_name = ".ftcfg.guild_mission_base_cfg.refresh_cost_cion_number"
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.number = 10
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.index = 9
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.label = 2
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.has_default_value = false
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.default_value = 0
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.type = 5
-GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD.cpp_type = 1
-
-GUILD_MISSION_BASE_CFG.name = "guild_mission_base_cfg"
-GUILD_MISSION_BASE_CFG.full_name = ".ftcfg.guild_mission_base_cfg"
-GUILD_MISSION_BASE_CFG.nested_types = {}
-GUILD_MISSION_BASE_CFG.enum_types = {}
-GUILD_MISSION_BASE_CFG.fields = {GUILD_MISSION_BASE_CFG_ID_FIELD, GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_WHITE_FIELD, GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_GREEN_FIELD, GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_BLUE_FIELD, GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_PURPLE_FIELD, GUILD_MISSION_BASE_CFG_QUALITY_PROBABILITY_ORANGE_FIELD, GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_FIELD, GUILD_MISSION_BASE_CFG_REFRESH_COST_ITEM_NUMBER_FIELD, GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_TYPE_FIELD, GUILD_MISSION_BASE_CFG_REFRESH_COST_CION_NUMBER_FIELD}
-GUILD_MISSION_BASE_CFG.is_extendable = false
-GUILD_MISSION_BASE_CFG.extensions = {}
-GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.name = "items"
-GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.guild_mission_base_cfgs.items"
-GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.number = 1
-GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.index = 0
-GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.label = 3
-GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.has_default_value = false
-GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.default_value = {}
-GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.message_type = GUILD_MISSION_BASE_CFG
-GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.type = 11
-GUILD_MISSION_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-GUILD_MISSION_BASE_CFGS.name = "guild_mission_base_cfgs"
-GUILD_MISSION_BASE_CFGS.full_name = ".ftcfg.guild_mission_base_cfgs"
-GUILD_MISSION_BASE_CFGS.nested_types = {}
-GUILD_MISSION_BASE_CFGS.enum_types = {}
-GUILD_MISSION_BASE_CFGS.fields = {GUILD_MISSION_BASE_CFGS_ITEMS_FIELD}
-GUILD_MISSION_BASE_CFGS.is_extendable = false
-GUILD_MISSION_BASE_CFGS.extensions = {}
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.name = "guild_practice_group"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_group"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.number = 1
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.index = 0
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.label = 2
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.default_value = 0
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.type = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD.cpp_type = 1
-
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.name = "guild_practice_level"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_level"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.number = 2
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.index = 1
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.label = 2
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.default_value = 0
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.type = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD.cpp_type = 1
-
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.name = "guild_practice_type"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_type"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.number = 3
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.index = 2
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.label = 2
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.default_value = 0
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.type = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD.cpp_type = 1
-
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.name = "guild_practice_icon"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_icon"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.number = 4
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.index = 3
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.label = 2
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.default_value = 0
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.type = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD.cpp_type = 1
-
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.name = "guild_practice_name"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_name"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.number = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.index = 4
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.label = 2
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.default_value = 0
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.type = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD.cpp_type = 1
-
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.name = "guild_practice_effect_describe"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_effect_describe"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.number = 6
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.index = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.label = 2
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.default_value = 0
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.type = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD.cpp_type = 1
-
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.name = "guild_practice_battle"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_battle"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.number = 7
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.index = 6
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.label = 2
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.default_value = 0
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.type = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD.cpp_type = 1
-
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.name = "guild_practice_cost_level"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_cost_level"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.number = 8
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.index = 7
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.label = 2
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.default_value = 0
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.type = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD.cpp_type = 1
-
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.name = "guild_practice_cost_cointype1"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_cost_cointype1"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.number = 9
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.index = 8
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.label = 3
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.default_value = {}
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.type = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD.cpp_type = 1
-
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.name = "guild_practice_cost_cointype2"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_cost_cointype2"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.number = 10
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.index = 9
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.label = 3
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.default_value = {}
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.type = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD.cpp_type = 1
-
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.name = "guild_practice_cost_item"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_cost_item"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.number = 11
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.index = 10
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.label = 2
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.default_value = 0
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.type = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD.cpp_type = 1
-
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.name = "guild_practice_cost_number"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_cost_number"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.number = 12
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.index = 11
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.label = 2
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.default_value = 0
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.type = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD.cpp_type = 1
-
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.name = "guild_practice_exp"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_exp"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.number = 13
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.index = 12
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.label = 2
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.default_value = 0
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.type = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD.cpp_type = 1
-
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.name = "guild_practice_exp_max"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_exp_max"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.number = 14
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.index = 13
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.label = 2
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.default_value = 0
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.type = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD.cpp_type = 1
-
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.name = "guild_practice_attribute"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_attribute"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.number = 15
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.index = 14
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.label = 2
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.default_value = ""
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.type = 9
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD.cpp_type = 9
-
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.name = "guild_practice_buff"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfg.guild_practice_buff"
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.number = 16
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.index = 15
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.label = 2
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.default_value = 0
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.type = 5
-GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD.cpp_type = 1
-
-GUILD_PRACTICE_GROUP_CONT_CFG.name = "guild_practice_group_cont_cfg"
-GUILD_PRACTICE_GROUP_CONT_CFG.full_name = ".ftcfg.guild_practice_group_cont_cfg"
-GUILD_PRACTICE_GROUP_CONT_CFG.nested_types = {}
-GUILD_PRACTICE_GROUP_CONT_CFG.enum_types = {}
-GUILD_PRACTICE_GROUP_CONT_CFG.fields = {GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_GROUP_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_LEVEL_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_TYPE_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ICON_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_NAME_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EFFECT_DESCRIBE_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BATTLE_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_LEVEL_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE1_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_COINTYPE2_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_ITEM_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_COST_NUMBER_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_EXP_MAX_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_ATTRIBUTE_FIELD, GUILD_PRACTICE_GROUP_CONT_CFG_GUILD_PRACTICE_BUFF_FIELD}
-GUILD_PRACTICE_GROUP_CONT_CFG.is_extendable = false
-GUILD_PRACTICE_GROUP_CONT_CFG.extensions = {}
-GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.name = "items"
-GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.guild_practice_group_cont_cfgs.items"
-GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.number = 1
-GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.index = 0
-GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.label = 3
-GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.default_value = {}
-GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.message_type = GUILD_PRACTICE_GROUP_CONT_CFG
-GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.type = 11
-GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD.cpp_type = 10
-
-GUILD_PRACTICE_GROUP_CONT_CFGS.name = "guild_practice_group_cont_cfgs"
-GUILD_PRACTICE_GROUP_CONT_CFGS.full_name = ".ftcfg.guild_practice_group_cont_cfgs"
-GUILD_PRACTICE_GROUP_CONT_CFGS.nested_types = {}
-GUILD_PRACTICE_GROUP_CONT_CFGS.enum_types = {}
-GUILD_PRACTICE_GROUP_CONT_CFGS.fields = {GUILD_PRACTICE_GROUP_CONT_CFGS_ITEMS_FIELD}
-GUILD_PRACTICE_GROUP_CONT_CFGS.is_extendable = false
-GUILD_PRACTICE_GROUP_CONT_CFGS.extensions = {}
-GUILD_PRACTICE_GROUP_CFG_ID_FIELD.name = "id"
-GUILD_PRACTICE_GROUP_CFG_ID_FIELD.full_name = ".ftcfg.guild_practice_group_cfg.id"
-GUILD_PRACTICE_GROUP_CFG_ID_FIELD.number = 1
-GUILD_PRACTICE_GROUP_CFG_ID_FIELD.index = 0
-GUILD_PRACTICE_GROUP_CFG_ID_FIELD.label = 2
-GUILD_PRACTICE_GROUP_CFG_ID_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CFG_ID_FIELD.default_value = 0
-GUILD_PRACTICE_GROUP_CFG_ID_FIELD.type = 13
-GUILD_PRACTICE_GROUP_CFG_ID_FIELD.cpp_type = 3
-
-GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.name = "guild_practice_group"
-GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.full_name = ".ftcfg.guild_practice_group_cfg.guild_practice_group"
-GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.number = 2
-GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.index = 1
-GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.label = 3
-GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.default_value = {}
-GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.type = 5
-GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD.cpp_type = 1
-
-GUILD_PRACTICE_GROUP_CFG.name = "guild_practice_group_cfg"
-GUILD_PRACTICE_GROUP_CFG.full_name = ".ftcfg.guild_practice_group_cfg"
-GUILD_PRACTICE_GROUP_CFG.nested_types = {}
-GUILD_PRACTICE_GROUP_CFG.enum_types = {}
-GUILD_PRACTICE_GROUP_CFG.fields = {GUILD_PRACTICE_GROUP_CFG_ID_FIELD, GUILD_PRACTICE_GROUP_CFG_GUILD_PRACTICE_GROUP_FIELD}
-GUILD_PRACTICE_GROUP_CFG.is_extendable = false
-GUILD_PRACTICE_GROUP_CFG.extensions = {}
-GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.name = "items"
-GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.guild_practice_group_cfgs.items"
-GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.number = 1
-GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.index = 0
-GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.label = 3
-GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.has_default_value = false
-GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.default_value = {}
-GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.message_type = GUILD_PRACTICE_GROUP_CFG
-GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.type = 11
-GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-GUILD_PRACTICE_GROUP_CFGS.name = "guild_practice_group_cfgs"
-GUILD_PRACTICE_GROUP_CFGS.full_name = ".ftcfg.guild_practice_group_cfgs"
-GUILD_PRACTICE_GROUP_CFGS.nested_types = {}
-GUILD_PRACTICE_GROUP_CFGS.enum_types = {}
-GUILD_PRACTICE_GROUP_CFGS.fields = {GUILD_PRACTICE_GROUP_CFGS_ITEMS_FIELD}
-GUILD_PRACTICE_GROUP_CFGS.is_extendable = false
-GUILD_PRACTICE_GROUP_CFGS.extensions = {}
-GUILD_BASE_CFG_ID_FIELD.name = "id"
-GUILD_BASE_CFG_ID_FIELD.full_name = ".ftcfg.guild_base_cfg.id"
-GUILD_BASE_CFG_ID_FIELD.number = 1
-GUILD_BASE_CFG_ID_FIELD.index = 0
-GUILD_BASE_CFG_ID_FIELD.label = 2
-GUILD_BASE_CFG_ID_FIELD.has_default_value = false
-GUILD_BASE_CFG_ID_FIELD.default_value = 0
-GUILD_BASE_CFG_ID_FIELD.type = 13
-GUILD_BASE_CFG_ID_FIELD.cpp_type = 3
-
-GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.name = "Guild_remove_cost_money"
-GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_remove_cost_money"
-GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.number = 2
-GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.index = 1
-GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.name = "Day_cost_money"
-GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.full_name = ".ftcfg.guild_base_cfg.Day_cost_money"
-GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.number = 3
-GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.index = 2
-GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.label = 2
-GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.has_default_value = false
-GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.default_value = 0
-GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.type = 5
-GUILD_BASE_CFG_DAY_COST_MONEY_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.name = "Guild_upper_limit"
-GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_upper_limit"
-GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.number = 4
-GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.index = 3
-GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.name = "Guild_apprentice_limit"
-GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_apprentice_limit"
-GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.number = 5
-GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.index = 4
-GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.name = "Guild_vice_leader_limit"
-GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_vice_leader_limit"
-GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.number = 6
-GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.index = 5
-GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.name = "Guild_elite_limit"
-GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_elite_limit"
-GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.number = 7
-GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.index = 6
-GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.name = "Guild_baby_limit"
-GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_baby_limit"
-GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.number = 8
-GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.index = 7
-GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.name = "Guild_unlock_shop"
-GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_unlock_shop"
-GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.number = 9
-GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.index = 8
-GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.name = "Guild_unlock_task"
-GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_unlock_task"
-GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.number = 10
-GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.index = 9
-GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.name = "Guild_unlock_levelup"
-GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_unlock_levelup"
-GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.number = 11
-GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.index = 10
-GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.name = "Guild_unlock_guidance"
-GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_unlock_guidance"
-GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.number = 12
-GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.index = 11
-GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.name = "Guild_unlock_build_task"
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_unlock_build_task"
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.number = 13
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.index = 12
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.name = "Guild_unlock_build_practice"
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_unlock_build_practice"
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.number = 14
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.index = 13
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.name = "Guild_practice_help_max"
-GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_practice_help_max"
-GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.number = 15
-GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.index = 14
-GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.name = "Guild_type_practice1"
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_type_practice1"
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.number = 16
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.index = 15
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.name = "Guild_type_practice2"
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_type_practice2"
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.number = 17
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.index = 16
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.name = "Guild_name_cost_type"
-GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_name_cost_type"
-GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.number = 18
-GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.index = 17
-GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.name = "Guild_name_cost_number"
-GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.full_name = ".ftcfg.guild_base_cfg.Guild_name_cost_number"
-GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.number = 19
-GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.index = 18
-GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.label = 2
-GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.has_default_value = false
-GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.default_value = 0
-GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.type = 5
-GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD.cpp_type = 1
-
-GUILD_BASE_CFG.name = "guild_base_cfg"
-GUILD_BASE_CFG.full_name = ".ftcfg.guild_base_cfg"
-GUILD_BASE_CFG.nested_types = {}
-GUILD_BASE_CFG.enum_types = {}
-GUILD_BASE_CFG.fields = {GUILD_BASE_CFG_ID_FIELD, GUILD_BASE_CFG_GUILD_REMOVE_COST_MONEY_FIELD, GUILD_BASE_CFG_DAY_COST_MONEY_FIELD, GUILD_BASE_CFG_GUILD_UPPER_LIMIT_FIELD, GUILD_BASE_CFG_GUILD_APPRENTICE_LIMIT_FIELD, GUILD_BASE_CFG_GUILD_VICE_LEADER_LIMIT_FIELD, GUILD_BASE_CFG_GUILD_ELITE_LIMIT_FIELD, GUILD_BASE_CFG_GUILD_BABY_LIMIT_FIELD, GUILD_BASE_CFG_GUILD_UNLOCK_SHOP_FIELD, GUILD_BASE_CFG_GUILD_UNLOCK_TASK_FIELD, GUILD_BASE_CFG_GUILD_UNLOCK_LEVELUP_FIELD, GUILD_BASE_CFG_GUILD_UNLOCK_GUIDANCE_FIELD, GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_TASK_FIELD, GUILD_BASE_CFG_GUILD_UNLOCK_BUILD_PRACTICE_FIELD, GUILD_BASE_CFG_GUILD_PRACTICE_HELP_MAX_FIELD, GUILD_BASE_CFG_GUILD_TYPE_PRACTICE1_FIELD, GUILD_BASE_CFG_GUILD_TYPE_PRACTICE2_FIELD, GUILD_BASE_CFG_GUILD_NAME_COST_TYPE_FIELD, GUILD_BASE_CFG_GUILD_NAME_COST_NUMBER_FIELD}
-GUILD_BASE_CFG.is_extendable = false
-GUILD_BASE_CFG.extensions = {}
-GUILD_BASE_CFGS_ITEMS_FIELD.name = "items"
-GUILD_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.guild_base_cfgs.items"
-GUILD_BASE_CFGS_ITEMS_FIELD.number = 1
-GUILD_BASE_CFGS_ITEMS_FIELD.index = 0
-GUILD_BASE_CFGS_ITEMS_FIELD.label = 3
-GUILD_BASE_CFGS_ITEMS_FIELD.has_default_value = false
-GUILD_BASE_CFGS_ITEMS_FIELD.default_value = {}
-GUILD_BASE_CFGS_ITEMS_FIELD.message_type = GUILD_BASE_CFG
-GUILD_BASE_CFGS_ITEMS_FIELD.type = 11
-GUILD_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-GUILD_BASE_CFGS.name = "guild_base_cfgs"
-GUILD_BASE_CFGS.full_name = ".ftcfg.guild_base_cfgs"
-GUILD_BASE_CFGS.nested_types = {}
-GUILD_BASE_CFGS.enum_types = {}
-GUILD_BASE_CFGS.fields = {GUILD_BASE_CFGS_ITEMS_FIELD}
-GUILD_BASE_CFGS.is_extendable = false
-GUILD_BASE_CFGS.extensions = {}
-GUILD_FLAG_CFG_ID_FIELD.name = "id"
-GUILD_FLAG_CFG_ID_FIELD.full_name = ".ftcfg.guild_flag_cfg.id"
-GUILD_FLAG_CFG_ID_FIELD.number = 1
-GUILD_FLAG_CFG_ID_FIELD.index = 0
-GUILD_FLAG_CFG_ID_FIELD.label = 2
-GUILD_FLAG_CFG_ID_FIELD.has_default_value = false
-GUILD_FLAG_CFG_ID_FIELD.default_value = 0
-GUILD_FLAG_CFG_ID_FIELD.type = 5
-GUILD_FLAG_CFG_ID_FIELD.cpp_type = 1
-
-GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.name = "Guild_big_flag_icon"
-GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.full_name = ".ftcfg.guild_flag_cfg.Guild_big_flag_icon"
-GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.number = 2
-GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.index = 1
-GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.label = 2
-GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.has_default_value = false
-GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.default_value = 0
-GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.type = 5
-GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD.cpp_type = 1
-
-GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.name = "Guild_samll_flag_icon"
-GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.full_name = ".ftcfg.guild_flag_cfg.Guild_samll_flag_icon"
-GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.number = 3
-GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.index = 2
-GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.label = 2
-GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.has_default_value = false
-GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.default_value = ""
-GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.type = 9
-GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD.cpp_type = 9
-
-GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.name = "Guild_flag_money"
-GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.full_name = ".ftcfg.guild_flag_cfg.Guild_flag_money"
-GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.number = 4
-GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.index = 3
-GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.label = 2
-GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.has_default_value = false
-GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.default_value = 0
-GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.type = 5
-GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD.cpp_type = 1
-
-GUILD_FLAG_CFG.name = "guild_flag_cfg"
-GUILD_FLAG_CFG.full_name = ".ftcfg.guild_flag_cfg"
-GUILD_FLAG_CFG.nested_types = {}
-GUILD_FLAG_CFG.enum_types = {}
-GUILD_FLAG_CFG.fields = {GUILD_FLAG_CFG_ID_FIELD, GUILD_FLAG_CFG_GUILD_BIG_FLAG_ICON_FIELD, GUILD_FLAG_CFG_GUILD_SAMLL_FLAG_ICON_FIELD, GUILD_FLAG_CFG_GUILD_FLAG_MONEY_FIELD}
-GUILD_FLAG_CFG.is_extendable = false
-GUILD_FLAG_CFG.extensions = {}
-GUILD_FLAG_CFGS_ITEMS_FIELD.name = "items"
-GUILD_FLAG_CFGS_ITEMS_FIELD.full_name = ".ftcfg.guild_flag_cfgs.items"
-GUILD_FLAG_CFGS_ITEMS_FIELD.number = 1
-GUILD_FLAG_CFGS_ITEMS_FIELD.index = 0
-GUILD_FLAG_CFGS_ITEMS_FIELD.label = 3
-GUILD_FLAG_CFGS_ITEMS_FIELD.has_default_value = false
-GUILD_FLAG_CFGS_ITEMS_FIELD.default_value = {}
-GUILD_FLAG_CFGS_ITEMS_FIELD.message_type = GUILD_FLAG_CFG
-GUILD_FLAG_CFGS_ITEMS_FIELD.type = 11
-GUILD_FLAG_CFGS_ITEMS_FIELD.cpp_type = 10
-
-GUILD_FLAG_CFGS.name = "guild_flag_cfgs"
-GUILD_FLAG_CFGS.full_name = ".ftcfg.guild_flag_cfgs"
-GUILD_FLAG_CFGS.nested_types = {}
-GUILD_FLAG_CFGS.enum_types = {}
-GUILD_FLAG_CFGS.fields = {GUILD_FLAG_CFGS_ITEMS_FIELD}
-GUILD_FLAG_CFGS.is_extendable = false
-GUILD_FLAG_CFGS.extensions = {}
-GUIL_POST_CFG_ID_FIELD.name = "id"
-GUIL_POST_CFG_ID_FIELD.full_name = ".ftcfg.guil_post_cfg.id"
-GUIL_POST_CFG_ID_FIELD.number = 1
-GUIL_POST_CFG_ID_FIELD.index = 0
-GUIL_POST_CFG_ID_FIELD.label = 2
-GUIL_POST_CFG_ID_FIELD.has_default_value = false
-GUIL_POST_CFG_ID_FIELD.default_value = 0
-GUIL_POST_CFG_ID_FIELD.type = 13
-GUIL_POST_CFG_ID_FIELD.cpp_type = 3
-
-GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.name = "Guild_post_languageid"
-GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_post_languageid"
-GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.number = 2
-GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.index = 1
-GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.label = 2
-GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.has_default_value = false
-GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.default_value = 0
-GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.type = 5
-GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD.cpp_type = 1
-
-GUIL_POST_CFG_GUILD_REMOVE_FIELD.name = "Guild_remove"
-GUIL_POST_CFG_GUILD_REMOVE_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_remove"
-GUIL_POST_CFG_GUILD_REMOVE_FIELD.number = 3
-GUIL_POST_CFG_GUILD_REMOVE_FIELD.index = 2
-GUIL_POST_CFG_GUILD_REMOVE_FIELD.label = 2
-GUIL_POST_CFG_GUILD_REMOVE_FIELD.has_default_value = false
-GUIL_POST_CFG_GUILD_REMOVE_FIELD.default_value = 0
-GUIL_POST_CFG_GUILD_REMOVE_FIELD.type = 5
-GUIL_POST_CFG_GUILD_REMOVE_FIELD.cpp_type = 1
-
-GUIL_POST_CFG_GUILD_MAIL_FIELD.name = "Guild_mail"
-GUIL_POST_CFG_GUILD_MAIL_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_mail"
-GUIL_POST_CFG_GUILD_MAIL_FIELD.number = 4
-GUIL_POST_CFG_GUILD_MAIL_FIELD.index = 3
-GUIL_POST_CFG_GUILD_MAIL_FIELD.label = 2
-GUIL_POST_CFG_GUILD_MAIL_FIELD.has_default_value = false
-GUIL_POST_CFG_GUILD_MAIL_FIELD.default_value = 0
-GUIL_POST_CFG_GUILD_MAIL_FIELD.type = 5
-GUIL_POST_CFG_GUILD_MAIL_FIELD.cpp_type = 1
-
-GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.name = "Guild_appointment"
-GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_appointment"
-GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.number = 5
-GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.index = 4
-GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.label = 2
-GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.has_default_value = false
-GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.default_value = 0
-GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.type = 5
-GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD.cpp_type = 1
-
-GUIL_POST_CFG_GUILD_EXPEL_FIELD.name = "Guild_expel"
-GUIL_POST_CFG_GUILD_EXPEL_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_expel"
-GUIL_POST_CFG_GUILD_EXPEL_FIELD.number = 6
-GUIL_POST_CFG_GUILD_EXPEL_FIELD.index = 5
-GUIL_POST_CFG_GUILD_EXPEL_FIELD.label = 2
-GUIL_POST_CFG_GUILD_EXPEL_FIELD.has_default_value = false
-GUIL_POST_CFG_GUILD_EXPEL_FIELD.default_value = 0
-GUIL_POST_CFG_GUILD_EXPEL_FIELD.type = 5
-GUIL_POST_CFG_GUILD_EXPEL_FIELD.cpp_type = 1
-
-GUIL_POST_CFG_GUILD_INVITATION_FIELD.name = "Guild_invitation"
-GUIL_POST_CFG_GUILD_INVITATION_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_invitation"
-GUIL_POST_CFG_GUILD_INVITATION_FIELD.number = 7
-GUIL_POST_CFG_GUILD_INVITATION_FIELD.index = 6
-GUIL_POST_CFG_GUILD_INVITATION_FIELD.label = 2
-GUIL_POST_CFG_GUILD_INVITATION_FIELD.has_default_value = false
-GUIL_POST_CFG_GUILD_INVITATION_FIELD.default_value = 0
-GUIL_POST_CFG_GUILD_INVITATION_FIELD.type = 5
-GUIL_POST_CFG_GUILD_INVITATION_FIELD.cpp_type = 1
-
-GUIL_POST_CFG_GUILD_APPROVAL_FIELD.name = "Guild_approval"
-GUIL_POST_CFG_GUILD_APPROVAL_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_approval"
-GUIL_POST_CFG_GUILD_APPROVAL_FIELD.number = 8
-GUIL_POST_CFG_GUILD_APPROVAL_FIELD.index = 7
-GUIL_POST_CFG_GUILD_APPROVAL_FIELD.label = 2
-GUIL_POST_CFG_GUILD_APPROVAL_FIELD.has_default_value = false
-GUIL_POST_CFG_GUILD_APPROVAL_FIELD.default_value = 0
-GUIL_POST_CFG_GUILD_APPROVAL_FIELD.type = 5
-GUIL_POST_CFG_GUILD_APPROVAL_FIELD.cpp_type = 1
-
-GUIL_POST_CFG_GUILD_TEAM_FIELD.name = "Guild_team"
-GUIL_POST_CFG_GUILD_TEAM_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_team"
-GUIL_POST_CFG_GUILD_TEAM_FIELD.number = 9
-GUIL_POST_CFG_GUILD_TEAM_FIELD.index = 8
-GUIL_POST_CFG_GUILD_TEAM_FIELD.label = 2
-GUIL_POST_CFG_GUILD_TEAM_FIELD.has_default_value = false
-GUIL_POST_CFG_GUILD_TEAM_FIELD.default_value = 0
-GUIL_POST_CFG_GUILD_TEAM_FIELD.type = 5
-GUIL_POST_CFG_GUILD_TEAM_FIELD.cpp_type = 1
-
-GUIL_POST_CFG_GUILD_CALL_FIELD.name = "Guild_call"
-GUIL_POST_CFG_GUILD_CALL_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_call"
-GUIL_POST_CFG_GUILD_CALL_FIELD.number = 10
-GUIL_POST_CFG_GUILD_CALL_FIELD.index = 9
-GUIL_POST_CFG_GUILD_CALL_FIELD.label = 2
-GUIL_POST_CFG_GUILD_CALL_FIELD.has_default_value = false
-GUIL_POST_CFG_GUILD_CALL_FIELD.default_value = 0
-GUIL_POST_CFG_GUILD_CALL_FIELD.type = 5
-GUIL_POST_CFG_GUILD_CALL_FIELD.cpp_type = 1
-
-GUIL_POST_CFG_GUILD_HOSTILE_FIELD.name = "Guild_hostile"
-GUIL_POST_CFG_GUILD_HOSTILE_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_hostile"
-GUIL_POST_CFG_GUILD_HOSTILE_FIELD.number = 11
-GUIL_POST_CFG_GUILD_HOSTILE_FIELD.index = 10
-GUIL_POST_CFG_GUILD_HOSTILE_FIELD.label = 2
-GUIL_POST_CFG_GUILD_HOSTILE_FIELD.has_default_value = false
-GUIL_POST_CFG_GUILD_HOSTILE_FIELD.default_value = 0
-GUIL_POST_CFG_GUILD_HOSTILE_FIELD.type = 5
-GUIL_POST_CFG_GUILD_HOSTILE_FIELD.cpp_type = 1
-
-GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.name = "Guild_territorial_transfer"
-GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_territorial_transfer"
-GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.number = 12
-GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.index = 11
-GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.label = 2
-GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.has_default_value = false
-GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.default_value = 0
-GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.type = 5
-GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD.cpp_type = 1
-
-GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.name = "Guild_flag_modify"
-GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_flag_modify"
-GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.number = 13
-GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.index = 12
-GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.label = 2
-GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.has_default_value = false
-GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.default_value = 0
-GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.type = 5
-GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD.cpp_type = 1
-
-GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.name = "Guild_name_modify"
-GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_name_modify"
-GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.number = 14
-GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.index = 13
-GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.label = 2
-GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.has_default_value = false
-GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.default_value = 0
-GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.type = 5
-GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD.cpp_type = 1
-
-GUIL_POST_CFG_GUILD_NOTICE_FIELD.name = "Guild_notice"
-GUIL_POST_CFG_GUILD_NOTICE_FIELD.full_name = ".ftcfg.guil_post_cfg.Guild_notice"
-GUIL_POST_CFG_GUILD_NOTICE_FIELD.number = 15
-GUIL_POST_CFG_GUILD_NOTICE_FIELD.index = 14
-GUIL_POST_CFG_GUILD_NOTICE_FIELD.label = 2
-GUIL_POST_CFG_GUILD_NOTICE_FIELD.has_default_value = false
-GUIL_POST_CFG_GUILD_NOTICE_FIELD.default_value = 0
-GUIL_POST_CFG_GUILD_NOTICE_FIELD.type = 5
-GUIL_POST_CFG_GUILD_NOTICE_FIELD.cpp_type = 1
-
-GUIL_POST_CFG.name = "guil_post_cfg"
-GUIL_POST_CFG.full_name = ".ftcfg.guil_post_cfg"
-GUIL_POST_CFG.nested_types = {}
-GUIL_POST_CFG.enum_types = {}
-GUIL_POST_CFG.fields = {GUIL_POST_CFG_ID_FIELD, GUIL_POST_CFG_GUILD_POST_LANGUAGEID_FIELD, GUIL_POST_CFG_GUILD_REMOVE_FIELD, GUIL_POST_CFG_GUILD_MAIL_FIELD, GUIL_POST_CFG_GUILD_APPOINTMENT_FIELD, GUIL_POST_CFG_GUILD_EXPEL_FIELD, GUIL_POST_CFG_GUILD_INVITATION_FIELD, GUIL_POST_CFG_GUILD_APPROVAL_FIELD, GUIL_POST_CFG_GUILD_TEAM_FIELD, GUIL_POST_CFG_GUILD_CALL_FIELD, GUIL_POST_CFG_GUILD_HOSTILE_FIELD, GUIL_POST_CFG_GUILD_TERRITORIAL_TRANSFER_FIELD, GUIL_POST_CFG_GUILD_FLAG_MODIFY_FIELD, GUIL_POST_CFG_GUILD_NAME_MODIFY_FIELD, GUIL_POST_CFG_GUILD_NOTICE_FIELD}
-GUIL_POST_CFG.is_extendable = false
-GUIL_POST_CFG.extensions = {}
-GUIL_POST_CFGS_ITEMS_FIELD.name = "items"
-GUIL_POST_CFGS_ITEMS_FIELD.full_name = ".ftcfg.guil_post_cfgs.items"
-GUIL_POST_CFGS_ITEMS_FIELD.number = 1
-GUIL_POST_CFGS_ITEMS_FIELD.index = 0
-GUIL_POST_CFGS_ITEMS_FIELD.label = 3
-GUIL_POST_CFGS_ITEMS_FIELD.has_default_value = false
-GUIL_POST_CFGS_ITEMS_FIELD.default_value = {}
-GUIL_POST_CFGS_ITEMS_FIELD.message_type = GUIL_POST_CFG
-GUIL_POST_CFGS_ITEMS_FIELD.type = 11
-GUIL_POST_CFGS_ITEMS_FIELD.cpp_type = 10
-
-GUIL_POST_CFGS.name = "guil_post_cfgs"
-GUIL_POST_CFGS.full_name = ".ftcfg.guil_post_cfgs"
-GUIL_POST_CFGS.nested_types = {}
-GUIL_POST_CFGS.enum_types = {}
-GUIL_POST_CFGS.fields = {GUIL_POST_CFGS_ITEMS_FIELD}
-GUIL_POST_CFGS.is_extendable = false
-GUIL_POST_CFGS.extensions = {}
-INNER_ALCHEMY_CFG_ID_FIELD.name = "id"
-INNER_ALCHEMY_CFG_ID_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.id"
-INNER_ALCHEMY_CFG_ID_FIELD.number = 1
-INNER_ALCHEMY_CFG_ID_FIELD.index = 0
-INNER_ALCHEMY_CFG_ID_FIELD.label = 2
-INNER_ALCHEMY_CFG_ID_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_ID_FIELD.default_value = 0
-INNER_ALCHEMY_CFG_ID_FIELD.type = 13
-INNER_ALCHEMY_CFG_ID_FIELD.cpp_type = 3
-
-INNER_ALCHEMY_CFG_NAME_FIELD.name = "name"
-INNER_ALCHEMY_CFG_NAME_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.name"
-INNER_ALCHEMY_CFG_NAME_FIELD.number = 2
-INNER_ALCHEMY_CFG_NAME_FIELD.index = 1
-INNER_ALCHEMY_CFG_NAME_FIELD.label = 2
-INNER_ALCHEMY_CFG_NAME_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_NAME_FIELD.default_value = ""
-INNER_ALCHEMY_CFG_NAME_FIELD.type = 9
-INNER_ALCHEMY_CFG_NAME_FIELD.cpp_type = 9
-
-INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.name = "activation_type"
-INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.activation_type"
-INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.number = 3
-INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.index = 2
-INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.label = 2
-INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.default_value = 0
-INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.type = 5
-INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD.cpp_type = 1
-
-INNER_ALCHEMY_CFG_DESC_FIELD.name = "desc"
-INNER_ALCHEMY_CFG_DESC_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.desc"
-INNER_ALCHEMY_CFG_DESC_FIELD.number = 4
-INNER_ALCHEMY_CFG_DESC_FIELD.index = 3
-INNER_ALCHEMY_CFG_DESC_FIELD.label = 2
-INNER_ALCHEMY_CFG_DESC_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_DESC_FIELD.default_value = ""
-INNER_ALCHEMY_CFG_DESC_FIELD.type = 9
-INNER_ALCHEMY_CFG_DESC_FIELD.cpp_type = 9
-
-INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.name = "item_icon"
-INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.item_icon"
-INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.number = 5
-INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.index = 4
-INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.label = 2
-INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.default_value = 0
-INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.type = 5
-INNER_ALCHEMY_CFG_ITEM_ICON_FIELD.cpp_type = 1
-
-INNER_ALCHEMY_CFG_ICON_FIELD.name = "icon"
-INNER_ALCHEMY_CFG_ICON_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.icon"
-INNER_ALCHEMY_CFG_ICON_FIELD.number = 6
-INNER_ALCHEMY_CFG_ICON_FIELD.index = 5
-INNER_ALCHEMY_CFG_ICON_FIELD.label = 2
-INNER_ALCHEMY_CFG_ICON_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_ICON_FIELD.default_value = 0
-INNER_ALCHEMY_CFG_ICON_FIELD.type = 5
-INNER_ALCHEMY_CFG_ICON_FIELD.cpp_type = 1
-
-INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.name = "formula_icon"
-INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.formula_icon"
-INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.number = 7
-INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.index = 6
-INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.label = 2
-INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.default_value = 0
-INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.type = 5
-INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD.cpp_type = 1
-
-INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.name = "unlock_cost"
-INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.unlock_cost"
-INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.number = 8
-INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.index = 7
-INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.label = 2
-INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.default_value = 0
-INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.type = 5
-INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD.cpp_type = 1
-
-INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.name = "unlock_cost_num"
-INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.unlock_cost_num"
-INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.number = 9
-INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.index = 8
-INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.label = 2
-INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.default_value = 0
-INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.type = 5
-INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD.cpp_type = 1
-
-INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.name = "activation_cost"
-INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.activation_cost"
-INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.number = 10
-INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.index = 9
-INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.label = 2
-INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.default_value = 0
-INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.type = 5
-INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD.cpp_type = 1
-
-INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.name = "activation_cost_num"
-INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.activation_cost_num"
-INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.number = 11
-INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.index = 10
-INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.label = 2
-INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.default_value = 0
-INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.type = 5
-INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD.cpp_type = 1
-
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.name = "activation_resources_icon"
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.activation_resources_icon"
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.number = 12
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.index = 11
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.label = 3
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.default_value = {}
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.type = 5
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD.cpp_type = 1
-
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.name = "activation_resources_cost"
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.activation_resources_cost"
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.number = 13
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.index = 12
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.label = 3
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.default_value = {}
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.type = 5
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD.cpp_type = 1
-
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.name = "activation_resources_cost_num"
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.activation_resources_cost_num"
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.number = 14
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.index = 13
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.label = 3
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.default_value = {}
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.type = 5
-INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD.cpp_type = 1
-
-INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.name = "prop_effect1"
-INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.prop_effect1"
-INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.number = 15
-INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.index = 14
-INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.label = 2
-INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.default_value = ""
-INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.type = 9
-INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD.cpp_type = 9
-
-INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.name = "prop_effect2"
-INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.prop_effect2"
-INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.number = 16
-INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.index = 15
-INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.label = 2
-INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.default_value = ""
-INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.type = 9
-INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD.cpp_type = 9
-
-INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.name = "prop_effect3"
-INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.prop_effect3"
-INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.number = 17
-INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.index = 16
-INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.label = 2
-INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.default_value = ""
-INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.type = 9
-INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD.cpp_type = 9
-
-INNER_ALCHEMY_CFG_OCCUPATION_FIELD.name = "occupation"
-INNER_ALCHEMY_CFG_OCCUPATION_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.occupation"
-INNER_ALCHEMY_CFG_OCCUPATION_FIELD.number = 18
-INNER_ALCHEMY_CFG_OCCUPATION_FIELD.index = 17
-INNER_ALCHEMY_CFG_OCCUPATION_FIELD.label = 2
-INNER_ALCHEMY_CFG_OCCUPATION_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_OCCUPATION_FIELD.default_value = 0
-INNER_ALCHEMY_CFG_OCCUPATION_FIELD.type = 5
-INNER_ALCHEMY_CFG_OCCUPATION_FIELD.cpp_type = 1
-
-INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.name = "combat_point"
-INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.combat_point"
-INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.number = 19
-INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.index = 18
-INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.label = 2
-INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.default_value = 0.0
-INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.type = 2
-INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD.cpp_type = 6
-
-INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.name = "suit_combat_point"
-INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.full_name = ".ftcfg.inner_alchemy_cfg.suit_combat_point"
-INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.number = 20
-INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.index = 19
-INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.label = 2
-INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.has_default_value = false
-INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.default_value = 0.0
-INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.type = 2
-INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD.cpp_type = 6
-
-INNER_ALCHEMY_CFG.name = "inner_alchemy_cfg"
-INNER_ALCHEMY_CFG.full_name = ".ftcfg.inner_alchemy_cfg"
-INNER_ALCHEMY_CFG.nested_types = {}
-INNER_ALCHEMY_CFG.enum_types = {}
-INNER_ALCHEMY_CFG.fields = {INNER_ALCHEMY_CFG_ID_FIELD, INNER_ALCHEMY_CFG_NAME_FIELD, INNER_ALCHEMY_CFG_ACTIVATION_TYPE_FIELD, INNER_ALCHEMY_CFG_DESC_FIELD, INNER_ALCHEMY_CFG_ITEM_ICON_FIELD, INNER_ALCHEMY_CFG_ICON_FIELD, INNER_ALCHEMY_CFG_FORMULA_ICON_FIELD, INNER_ALCHEMY_CFG_UNLOCK_COST_FIELD, INNER_ALCHEMY_CFG_UNLOCK_COST_NUM_FIELD, INNER_ALCHEMY_CFG_ACTIVATION_COST_FIELD, INNER_ALCHEMY_CFG_ACTIVATION_COST_NUM_FIELD, INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_ICON_FIELD, INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_FIELD, INNER_ALCHEMY_CFG_ACTIVATION_RESOURCES_COST_NUM_FIELD, INNER_ALCHEMY_CFG_PROP_EFFECT1_FIELD, INNER_ALCHEMY_CFG_PROP_EFFECT2_FIELD, INNER_ALCHEMY_CFG_PROP_EFFECT3_FIELD, INNER_ALCHEMY_CFG_OCCUPATION_FIELD, INNER_ALCHEMY_CFG_COMBAT_POINT_FIELD, INNER_ALCHEMY_CFG_SUIT_COMBAT_POINT_FIELD}
-INNER_ALCHEMY_CFG.is_extendable = false
-INNER_ALCHEMY_CFG.extensions = {}
-INNER_ALCHEMY_CFGS_ITEMS_FIELD.name = "items"
-INNER_ALCHEMY_CFGS_ITEMS_FIELD.full_name = ".ftcfg.inner_alchemy_cfgs.items"
-INNER_ALCHEMY_CFGS_ITEMS_FIELD.number = 1
-INNER_ALCHEMY_CFGS_ITEMS_FIELD.index = 0
-INNER_ALCHEMY_CFGS_ITEMS_FIELD.label = 3
-INNER_ALCHEMY_CFGS_ITEMS_FIELD.has_default_value = false
-INNER_ALCHEMY_CFGS_ITEMS_FIELD.default_value = {}
-INNER_ALCHEMY_CFGS_ITEMS_FIELD.message_type = INNER_ALCHEMY_CFG
-INNER_ALCHEMY_CFGS_ITEMS_FIELD.type = 11
-INNER_ALCHEMY_CFGS_ITEMS_FIELD.cpp_type = 10
-
-INNER_ALCHEMY_CFGS.name = "inner_alchemy_cfgs"
-INNER_ALCHEMY_CFGS.full_name = ".ftcfg.inner_alchemy_cfgs"
-INNER_ALCHEMY_CFGS.nested_types = {}
-INNER_ALCHEMY_CFGS.enum_types = {}
-INNER_ALCHEMY_CFGS.fields = {INNER_ALCHEMY_CFGS_ITEMS_FIELD}
-INNER_ALCHEMY_CFGS.is_extendable = false
-INNER_ALCHEMY_CFGS.extensions = {}
-INNER_ALCHEMY_GROUP_CFG_ID_FIELD.name = "id"
-INNER_ALCHEMY_GROUP_CFG_ID_FIELD.full_name = ".ftcfg.inner_alchemy_group_cfg.id"
-INNER_ALCHEMY_GROUP_CFG_ID_FIELD.number = 1
-INNER_ALCHEMY_GROUP_CFG_ID_FIELD.index = 0
-INNER_ALCHEMY_GROUP_CFG_ID_FIELD.label = 2
-INNER_ALCHEMY_GROUP_CFG_ID_FIELD.has_default_value = false
-INNER_ALCHEMY_GROUP_CFG_ID_FIELD.default_value = 0
-INNER_ALCHEMY_GROUP_CFG_ID_FIELD.type = 13
-INNER_ALCHEMY_GROUP_CFG_ID_FIELD.cpp_type = 3
-
-INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.name = "inner_alchemy_group"
-INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.full_name = ".ftcfg.inner_alchemy_group_cfg.inner_alchemy_group"
-INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.number = 2
-INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.index = 1
-INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.label = 3
-INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.has_default_value = false
-INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.default_value = {}
-INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.type = 5
-INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD.cpp_type = 1
-
-INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.name = "desc"
-INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.full_name = ".ftcfg.inner_alchemy_group_cfg.desc"
-INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.number = 3
-INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.index = 2
-INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.label = 2
-INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.has_default_value = false
-INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.default_value = ""
-INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.type = 9
-INNER_ALCHEMY_GROUP_CFG_DESC_FIELD.cpp_type = 9
-
-INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.name = "group_effect"
-INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.full_name = ".ftcfg.inner_alchemy_group_cfg.group_effect"
-INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.number = 4
-INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.index = 3
-INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.label = 2
-INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.has_default_value = false
-INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.default_value = 0
-INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.type = 5
-INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD.cpp_type = 1
-
-INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.name = "skill_id_index"
-INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.full_name = ".ftcfg.inner_alchemy_group_cfg.skill_id_index"
-INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.number = 5
-INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.index = 4
-INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.label = 2
-INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.has_default_value = false
-INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.default_value = 0
-INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.type = 5
-INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD.cpp_type = 1
-
-INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.name = "skill_array"
-INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.full_name = ".ftcfg.inner_alchemy_group_cfg.skill_array"
-INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.number = 6
-INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.index = 5
-INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.label = 3
-INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.has_default_value = false
-INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.default_value = {}
-INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.type = 5
-INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD.cpp_type = 1
-
-INNER_ALCHEMY_GROUP_CFG.name = "inner_alchemy_group_cfg"
-INNER_ALCHEMY_GROUP_CFG.full_name = ".ftcfg.inner_alchemy_group_cfg"
-INNER_ALCHEMY_GROUP_CFG.nested_types = {}
-INNER_ALCHEMY_GROUP_CFG.enum_types = {}
-INNER_ALCHEMY_GROUP_CFG.fields = {INNER_ALCHEMY_GROUP_CFG_ID_FIELD, INNER_ALCHEMY_GROUP_CFG_INNER_ALCHEMY_GROUP_FIELD, INNER_ALCHEMY_GROUP_CFG_DESC_FIELD, INNER_ALCHEMY_GROUP_CFG_GROUP_EFFECT_FIELD, INNER_ALCHEMY_GROUP_CFG_SKILL_ID_INDEX_FIELD, INNER_ALCHEMY_GROUP_CFG_SKILL_ARRAY_FIELD}
-INNER_ALCHEMY_GROUP_CFG.is_extendable = false
-INNER_ALCHEMY_GROUP_CFG.extensions = {}
-INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.name = "items"
-INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.inner_alchemy_group_cfgs.items"
-INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.number = 1
-INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.index = 0
-INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.label = 3
-INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.has_default_value = false
-INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.default_value = {}
-INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.message_type = INNER_ALCHEMY_GROUP_CFG
-INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.type = 11
-INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-INNER_ALCHEMY_GROUP_CFGS.name = "inner_alchemy_group_cfgs"
-INNER_ALCHEMY_GROUP_CFGS.full_name = ".ftcfg.inner_alchemy_group_cfgs"
-INNER_ALCHEMY_GROUP_CFGS.nested_types = {}
-INNER_ALCHEMY_GROUP_CFGS.enum_types = {}
-INNER_ALCHEMY_GROUP_CFGS.fields = {INNER_ALCHEMY_GROUP_CFGS_ITEMS_FIELD}
-INNER_ALCHEMY_GROUP_CFGS.is_extendable = false
-INNER_ALCHEMY_GROUP_CFGS.extensions = {}
-MEDAL_GROUP_CFG_ID_FIELD.name = "id"
-MEDAL_GROUP_CFG_ID_FIELD.full_name = ".ftcfg.medal_group_cfg.id"
-MEDAL_GROUP_CFG_ID_FIELD.number = 1
-MEDAL_GROUP_CFG_ID_FIELD.index = 0
-MEDAL_GROUP_CFG_ID_FIELD.label = 2
-MEDAL_GROUP_CFG_ID_FIELD.has_default_value = false
-MEDAL_GROUP_CFG_ID_FIELD.default_value = 0
-MEDAL_GROUP_CFG_ID_FIELD.type = 13
-MEDAL_GROUP_CFG_ID_FIELD.cpp_type = 3
-
-MEDAL_GROUP_CFG_STARLEVEL_FIELD.name = "starLevel"
-MEDAL_GROUP_CFG_STARLEVEL_FIELD.full_name = ".ftcfg.medal_group_cfg.starLevel"
-MEDAL_GROUP_CFG_STARLEVEL_FIELD.number = 2
-MEDAL_GROUP_CFG_STARLEVEL_FIELD.index = 1
-MEDAL_GROUP_CFG_STARLEVEL_FIELD.label = 2
-MEDAL_GROUP_CFG_STARLEVEL_FIELD.has_default_value = false
-MEDAL_GROUP_CFG_STARLEVEL_FIELD.default_value = 0
-MEDAL_GROUP_CFG_STARLEVEL_FIELD.type = 5
-MEDAL_GROUP_CFG_STARLEVEL_FIELD.cpp_type = 1
-
-MEDAL_GROUP_CFG_TYPE_FIELD.name = "type"
-MEDAL_GROUP_CFG_TYPE_FIELD.full_name = ".ftcfg.medal_group_cfg.type"
-MEDAL_GROUP_CFG_TYPE_FIELD.number = 3
-MEDAL_GROUP_CFG_TYPE_FIELD.index = 2
-MEDAL_GROUP_CFG_TYPE_FIELD.label = 2
-MEDAL_GROUP_CFG_TYPE_FIELD.has_default_value = false
-MEDAL_GROUP_CFG_TYPE_FIELD.default_value = 0
-MEDAL_GROUP_CFG_TYPE_FIELD.type = 5
-MEDAL_GROUP_CFG_TYPE_FIELD.cpp_type = 1
-
-MEDAL_GROUP_CFG_GROUP_NAME_FIELD.name = "group_name"
-MEDAL_GROUP_CFG_GROUP_NAME_FIELD.full_name = ".ftcfg.medal_group_cfg.group_name"
-MEDAL_GROUP_CFG_GROUP_NAME_FIELD.number = 4
-MEDAL_GROUP_CFG_GROUP_NAME_FIELD.index = 3
-MEDAL_GROUP_CFG_GROUP_NAME_FIELD.label = 2
-MEDAL_GROUP_CFG_GROUP_NAME_FIELD.has_default_value = false
-MEDAL_GROUP_CFG_GROUP_NAME_FIELD.default_value = 0
-MEDAL_GROUP_CFG_GROUP_NAME_FIELD.type = 5
-MEDAL_GROUP_CFG_GROUP_NAME_FIELD.cpp_type = 1
-
-MEDAL_GROUP_CFG_MEMBER_ID_FIELD.name = "member_id"
-MEDAL_GROUP_CFG_MEMBER_ID_FIELD.full_name = ".ftcfg.medal_group_cfg.member_id"
-MEDAL_GROUP_CFG_MEMBER_ID_FIELD.number = 5
-MEDAL_GROUP_CFG_MEMBER_ID_FIELD.index = 4
-MEDAL_GROUP_CFG_MEMBER_ID_FIELD.label = 3
-MEDAL_GROUP_CFG_MEMBER_ID_FIELD.has_default_value = false
-MEDAL_GROUP_CFG_MEMBER_ID_FIELD.default_value = {}
-MEDAL_GROUP_CFG_MEMBER_ID_FIELD.type = 13
-MEDAL_GROUP_CFG_MEMBER_ID_FIELD.cpp_type = 3
-
-MEDAL_GROUP_CFG_DESC_FIELD.name = "desc"
-MEDAL_GROUP_CFG_DESC_FIELD.full_name = ".ftcfg.medal_group_cfg.desc"
-MEDAL_GROUP_CFG_DESC_FIELD.number = 6
-MEDAL_GROUP_CFG_DESC_FIELD.index = 5
-MEDAL_GROUP_CFG_DESC_FIELD.label = 2
-MEDAL_GROUP_CFG_DESC_FIELD.has_default_value = false
-MEDAL_GROUP_CFG_DESC_FIELD.default_value = 0
-MEDAL_GROUP_CFG_DESC_FIELD.type = 5
-MEDAL_GROUP_CFG_DESC_FIELD.cpp_type = 1
-
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.name = "activation_attribute1"
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.full_name = ".ftcfg.medal_group_cfg.activation_attribute1"
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.number = 7
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.index = 6
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.label = 2
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.has_default_value = false
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.default_value = ""
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.type = 9
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD.cpp_type = 9
-
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.name = "activation_attribute2"
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.full_name = ".ftcfg.medal_group_cfg.activation_attribute2"
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.number = 8
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.index = 7
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.label = 2
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.has_default_value = false
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.default_value = ""
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.type = 9
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD.cpp_type = 9
-
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.name = "activation_attribute3"
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.full_name = ".ftcfg.medal_group_cfg.activation_attribute3"
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.number = 9
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.index = 8
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.label = 2
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.has_default_value = false
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.default_value = ""
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.type = 9
-MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD.cpp_type = 9
-
-MEDAL_GROUP_CFG.name = "medal_group_cfg"
-MEDAL_GROUP_CFG.full_name = ".ftcfg.medal_group_cfg"
-MEDAL_GROUP_CFG.nested_types = {}
-MEDAL_GROUP_CFG.enum_types = {}
-MEDAL_GROUP_CFG.fields = {MEDAL_GROUP_CFG_ID_FIELD, MEDAL_GROUP_CFG_STARLEVEL_FIELD, MEDAL_GROUP_CFG_TYPE_FIELD, MEDAL_GROUP_CFG_GROUP_NAME_FIELD, MEDAL_GROUP_CFG_MEMBER_ID_FIELD, MEDAL_GROUP_CFG_DESC_FIELD, MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE1_FIELD, MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE2_FIELD, MEDAL_GROUP_CFG_ACTIVATION_ATTRIBUTE3_FIELD}
-MEDAL_GROUP_CFG.is_extendable = false
-MEDAL_GROUP_CFG.extensions = {}
-MEDAL_GROUP_CFGS_ITEMS_FIELD.name = "items"
-MEDAL_GROUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.medal_group_cfgs.items"
-MEDAL_GROUP_CFGS_ITEMS_FIELD.number = 1
-MEDAL_GROUP_CFGS_ITEMS_FIELD.index = 0
-MEDAL_GROUP_CFGS_ITEMS_FIELD.label = 3
-MEDAL_GROUP_CFGS_ITEMS_FIELD.has_default_value = false
-MEDAL_GROUP_CFGS_ITEMS_FIELD.default_value = {}
-MEDAL_GROUP_CFGS_ITEMS_FIELD.message_type = MEDAL_GROUP_CFG
-MEDAL_GROUP_CFGS_ITEMS_FIELD.type = 11
-MEDAL_GROUP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MEDAL_GROUP_CFGS.name = "medal_group_cfgs"
-MEDAL_GROUP_CFGS.full_name = ".ftcfg.medal_group_cfgs"
-MEDAL_GROUP_CFGS.nested_types = {}
-MEDAL_GROUP_CFGS.enum_types = {}
-MEDAL_GROUP_CFGS.fields = {MEDAL_GROUP_CFGS_ITEMS_FIELD}
-MEDAL_GROUP_CFGS.is_extendable = false
-MEDAL_GROUP_CFGS.extensions = {}
-MEDAL_BASE_CFG_ID_FIELD.name = "id"
-MEDAL_BASE_CFG_ID_FIELD.full_name = ".ftcfg.medal_base_cfg.id"
-MEDAL_BASE_CFG_ID_FIELD.number = 1
-MEDAL_BASE_CFG_ID_FIELD.index = 0
-MEDAL_BASE_CFG_ID_FIELD.label = 2
-MEDAL_BASE_CFG_ID_FIELD.has_default_value = false
-MEDAL_BASE_CFG_ID_FIELD.default_value = 0
-MEDAL_BASE_CFG_ID_FIELD.type = 13
-MEDAL_BASE_CFG_ID_FIELD.cpp_type = 3
-
-MEDAL_BASE_CFG_MEDAL_NAME_FIELD.name = "medal_name"
-MEDAL_BASE_CFG_MEDAL_NAME_FIELD.full_name = ".ftcfg.medal_base_cfg.medal_name"
-MEDAL_BASE_CFG_MEDAL_NAME_FIELD.number = 2
-MEDAL_BASE_CFG_MEDAL_NAME_FIELD.index = 1
-MEDAL_BASE_CFG_MEDAL_NAME_FIELD.label = 2
-MEDAL_BASE_CFG_MEDAL_NAME_FIELD.has_default_value = false
-MEDAL_BASE_CFG_MEDAL_NAME_FIELD.default_value = 0
-MEDAL_BASE_CFG_MEDAL_NAME_FIELD.type = 5
-MEDAL_BASE_CFG_MEDAL_NAME_FIELD.cpp_type = 1
-
-MEDAL_BASE_CFG_ICON_FIELD.name = "icon"
-MEDAL_BASE_CFG_ICON_FIELD.full_name = ".ftcfg.medal_base_cfg.icon"
-MEDAL_BASE_CFG_ICON_FIELD.number = 3
-MEDAL_BASE_CFG_ICON_FIELD.index = 2
-MEDAL_BASE_CFG_ICON_FIELD.label = 2
-MEDAL_BASE_CFG_ICON_FIELD.has_default_value = false
-MEDAL_BASE_CFG_ICON_FIELD.default_value = 0
-MEDAL_BASE_CFG_ICON_FIELD.type = 5
-MEDAL_BASE_CFG_ICON_FIELD.cpp_type = 1
-
-MEDAL_BASE_CFG_TYPE_FIELD.name = "type"
-MEDAL_BASE_CFG_TYPE_FIELD.full_name = ".ftcfg.medal_base_cfg.type"
-MEDAL_BASE_CFG_TYPE_FIELD.number = 4
-MEDAL_BASE_CFG_TYPE_FIELD.index = 3
-MEDAL_BASE_CFG_TYPE_FIELD.label = 2
-MEDAL_BASE_CFG_TYPE_FIELD.has_default_value = false
-MEDAL_BASE_CFG_TYPE_FIELD.default_value = 0
-MEDAL_BASE_CFG_TYPE_FIELD.type = 5
-MEDAL_BASE_CFG_TYPE_FIELD.cpp_type = 1
-
-MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.name = "change_need_propnum"
-MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.full_name = ".ftcfg.medal_base_cfg.change_need_propnum"
-MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.number = 5
-MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.index = 4
-MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.label = 2
-MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.has_default_value = false
-MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.default_value = 0
-MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.type = 5
-MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD.cpp_type = 1
-
-MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.name = "disassemble_get_propnum"
-MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.full_name = ".ftcfg.medal_base_cfg.disassemble_get_propnum"
-MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.number = 6
-MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.index = 5
-MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.label = 2
-MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.has_default_value = false
-MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.default_value = 0
-MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.type = 5
-MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD.cpp_type = 1
-
-MEDAL_BASE_CFG.name = "medal_base_cfg"
-MEDAL_BASE_CFG.full_name = ".ftcfg.medal_base_cfg"
-MEDAL_BASE_CFG.nested_types = {}
-MEDAL_BASE_CFG.enum_types = {}
-MEDAL_BASE_CFG.fields = {MEDAL_BASE_CFG_ID_FIELD, MEDAL_BASE_CFG_MEDAL_NAME_FIELD, MEDAL_BASE_CFG_ICON_FIELD, MEDAL_BASE_CFG_TYPE_FIELD, MEDAL_BASE_CFG_CHANGE_NEED_PROPNUM_FIELD, MEDAL_BASE_CFG_DISASSEMBLE_GET_PROPNUM_FIELD}
-MEDAL_BASE_CFG.is_extendable = false
-MEDAL_BASE_CFG.extensions = {}
-MEDAL_BASE_CFGS_ITEMS_FIELD.name = "items"
-MEDAL_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.medal_base_cfgs.items"
-MEDAL_BASE_CFGS_ITEMS_FIELD.number = 1
-MEDAL_BASE_CFGS_ITEMS_FIELD.index = 0
-MEDAL_BASE_CFGS_ITEMS_FIELD.label = 3
-MEDAL_BASE_CFGS_ITEMS_FIELD.has_default_value = false
-MEDAL_BASE_CFGS_ITEMS_FIELD.default_value = {}
-MEDAL_BASE_CFGS_ITEMS_FIELD.message_type = MEDAL_BASE_CFG
-MEDAL_BASE_CFGS_ITEMS_FIELD.type = 11
-MEDAL_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MEDAL_BASE_CFGS.name = "medal_base_cfgs"
-MEDAL_BASE_CFGS.full_name = ".ftcfg.medal_base_cfgs"
-MEDAL_BASE_CFGS.nested_types = {}
-MEDAL_BASE_CFGS.enum_types = {}
-MEDAL_BASE_CFGS.fields = {MEDAL_BASE_CFGS_ITEMS_FIELD}
-MEDAL_BASE_CFGS.is_extendable = false
-MEDAL_BASE_CFGS.extensions = {}
-MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.name = "id"
-MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.full_name = ".ftcfg.medal_composite_addition_cfg.id"
-MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.number = 1
-MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.index = 0
-MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.label = 2
-MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.has_default_value = false
-MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.default_value = 0
-MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.type = 13
-MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD.cpp_type = 3
-
-MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.name = "starLevel"
-MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.full_name = ".ftcfg.medal_composite_addition_cfg.starLevel"
-MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.number = 2
-MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.index = 1
-MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.label = 2
-MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.has_default_value = false
-MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.default_value = 0
-MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.type = 5
-MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD.cpp_type = 1
-
-MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.name = "type"
-MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.full_name = ".ftcfg.medal_composite_addition_cfg.type"
-MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.number = 3
-MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.index = 2
-MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.label = 2
-MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.has_default_value = false
-MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.default_value = 0
-MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.type = 5
-MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD.cpp_type = 1
-
-MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.name = "need_group_num"
-MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.full_name = ".ftcfg.medal_composite_addition_cfg.need_group_num"
-MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.number = 4
-MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.index = 3
-MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.label = 2
-MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.has_default_value = false
-MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.default_value = 0
-MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.type = 5
-MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD.cpp_type = 1
-
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.name = "activation_attribute1"
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.full_name = ".ftcfg.medal_composite_addition_cfg.activation_attribute1"
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.number = 5
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.index = 4
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.label = 2
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.has_default_value = false
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.default_value = ""
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.type = 9
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD.cpp_type = 9
-
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.name = "activation_attribute2"
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.full_name = ".ftcfg.medal_composite_addition_cfg.activation_attribute2"
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.number = 6
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.index = 5
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.label = 2
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.has_default_value = false
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.default_value = ""
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.type = 9
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD.cpp_type = 9
-
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.name = "activation_attribute3"
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.full_name = ".ftcfg.medal_composite_addition_cfg.activation_attribute3"
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.number = 7
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.index = 6
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.label = 2
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.has_default_value = false
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.default_value = ""
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.type = 9
-MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD.cpp_type = 9
-
-MEDAL_COMPOSITE_ADDITION_CFG.name = "medal_composite_addition_cfg"
-MEDAL_COMPOSITE_ADDITION_CFG.full_name = ".ftcfg.medal_composite_addition_cfg"
-MEDAL_COMPOSITE_ADDITION_CFG.nested_types = {}
-MEDAL_COMPOSITE_ADDITION_CFG.enum_types = {}
-MEDAL_COMPOSITE_ADDITION_CFG.fields = {MEDAL_COMPOSITE_ADDITION_CFG_ID_FIELD, MEDAL_COMPOSITE_ADDITION_CFG_STARLEVEL_FIELD, MEDAL_COMPOSITE_ADDITION_CFG_TYPE_FIELD, MEDAL_COMPOSITE_ADDITION_CFG_NEED_GROUP_NUM_FIELD, MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE1_FIELD, MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE2_FIELD, MEDAL_COMPOSITE_ADDITION_CFG_ACTIVATION_ATTRIBUTE3_FIELD}
-MEDAL_COMPOSITE_ADDITION_CFG.is_extendable = false
-MEDAL_COMPOSITE_ADDITION_CFG.extensions = {}
-MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.name = "items"
-MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.medal_composite_addition_cfgs.items"
-MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.number = 1
-MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.index = 0
-MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.label = 3
-MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.has_default_value = false
-MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.default_value = {}
-MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.message_type = MEDAL_COMPOSITE_ADDITION_CFG
-MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.type = 11
-MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MEDAL_COMPOSITE_ADDITION_CFGS.name = "medal_composite_addition_cfgs"
-MEDAL_COMPOSITE_ADDITION_CFGS.full_name = ".ftcfg.medal_composite_addition_cfgs"
-MEDAL_COMPOSITE_ADDITION_CFGS.nested_types = {}
-MEDAL_COMPOSITE_ADDITION_CFGS.enum_types = {}
-MEDAL_COMPOSITE_ADDITION_CFGS.fields = {MEDAL_COMPOSITE_ADDITION_CFGS_ITEMS_FIELD}
-MEDAL_COMPOSITE_ADDITION_CFGS.is_extendable = false
-MEDAL_COMPOSITE_ADDITION_CFGS.extensions = {}
-MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.name = "type"
-MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.full_name = ".ftcfg.medal_open_level_cfg.type"
-MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.number = 1
-MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.index = 0
-MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.label = 2
-MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.has_default_value = false
-MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.default_value = 0
-MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.type = 5
-MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD.cpp_type = 1
-
-MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.name = "level"
-MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.full_name = ".ftcfg.medal_open_level_cfg.level"
-MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.number = 2
-MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.index = 1
-MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.label = 2
-MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.has_default_value = false
-MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.default_value = 0
-MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.type = 5
-MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD.cpp_type = 1
-
-MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.name = "name"
-MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.full_name = ".ftcfg.medal_open_level_cfg.name"
-MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.number = 3
-MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.index = 2
-MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.label = 2
-MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.has_default_value = false
-MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.default_value = 0
-MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.type = 5
-MEDAL_OPEN_LEVEL_CFG_NAME_FIELD.cpp_type = 1
-
-MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.name = "desc"
-MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.full_name = ".ftcfg.medal_open_level_cfg.desc"
-MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.number = 4
-MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.index = 3
-MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.label = 2
-MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.has_default_value = false
-MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.default_value = 0
-MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.type = 5
-MEDAL_OPEN_LEVEL_CFG_DESC_FIELD.cpp_type = 1
-
-MEDAL_OPEN_LEVEL_CFG.name = "medal_open_level_cfg"
-MEDAL_OPEN_LEVEL_CFG.full_name = ".ftcfg.medal_open_level_cfg"
-MEDAL_OPEN_LEVEL_CFG.nested_types = {}
-MEDAL_OPEN_LEVEL_CFG.enum_types = {}
-MEDAL_OPEN_LEVEL_CFG.fields = {MEDAL_OPEN_LEVEL_CFG_TYPE_FIELD, MEDAL_OPEN_LEVEL_CFG_LEVEL_FIELD, MEDAL_OPEN_LEVEL_CFG_NAME_FIELD, MEDAL_OPEN_LEVEL_CFG_DESC_FIELD}
-MEDAL_OPEN_LEVEL_CFG.is_extendable = false
-MEDAL_OPEN_LEVEL_CFG.extensions = {}
-MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.name = "items"
-MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.medal_open_level_cfgs.items"
-MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.number = 1
-MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.index = 0
-MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.label = 3
-MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.has_default_value = false
-MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.default_value = {}
-MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.message_type = MEDAL_OPEN_LEVEL_CFG
-MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.type = 11
-MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MEDAL_OPEN_LEVEL_CFGS.name = "medal_open_level_cfgs"
-MEDAL_OPEN_LEVEL_CFGS.full_name = ".ftcfg.medal_open_level_cfgs"
-MEDAL_OPEN_LEVEL_CFGS.nested_types = {}
-MEDAL_OPEN_LEVEL_CFGS.enum_types = {}
-MEDAL_OPEN_LEVEL_CFGS.fields = {MEDAL_OPEN_LEVEL_CFGS_ITEMS_FIELD}
-MEDAL_OPEN_LEVEL_CFGS.is_extendable = false
-MEDAL_OPEN_LEVEL_CFGS.extensions = {}
-MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.name = "starlevel"
-MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.full_name = ".ftcfg.medal_star_open_level_cfg.starlevel"
-MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.number = 1
-MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.index = 0
-MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.label = 2
-MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.has_default_value = false
-MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.default_value = 0
-MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.type = 5
-MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD.cpp_type = 1
-
-MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.name = "level"
-MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.full_name = ".ftcfg.medal_star_open_level_cfg.level"
-MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.number = 2
-MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.index = 1
-MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.label = 2
-MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.has_default_value = false
-MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.default_value = 0
-MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.type = 5
-MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD.cpp_type = 1
-
-MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.name = "num"
-MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.full_name = ".ftcfg.medal_star_open_level_cfg.num"
-MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.number = 3
-MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.index = 2
-MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.label = 2
-MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.has_default_value = false
-MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.default_value = 0
-MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.type = 5
-MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD.cpp_type = 1
-
-MEDAL_STAR_OPEN_LEVEL_CFG.name = "medal_star_open_level_cfg"
-MEDAL_STAR_OPEN_LEVEL_CFG.full_name = ".ftcfg.medal_star_open_level_cfg"
-MEDAL_STAR_OPEN_LEVEL_CFG.nested_types = {}
-MEDAL_STAR_OPEN_LEVEL_CFG.enum_types = {}
-MEDAL_STAR_OPEN_LEVEL_CFG.fields = {MEDAL_STAR_OPEN_LEVEL_CFG_STARLEVEL_FIELD, MEDAL_STAR_OPEN_LEVEL_CFG_LEVEL_FIELD, MEDAL_STAR_OPEN_LEVEL_CFG_NUM_FIELD}
-MEDAL_STAR_OPEN_LEVEL_CFG.is_extendable = false
-MEDAL_STAR_OPEN_LEVEL_CFG.extensions = {}
-MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.name = "items"
-MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.medal_star_open_level_cfgs.items"
-MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.number = 1
-MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.index = 0
-MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.label = 3
-MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.has_default_value = false
-MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.default_value = {}
-MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.message_type = MEDAL_STAR_OPEN_LEVEL_CFG
-MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.type = 11
-MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MEDAL_STAR_OPEN_LEVEL_CFGS.name = "medal_star_open_level_cfgs"
-MEDAL_STAR_OPEN_LEVEL_CFGS.full_name = ".ftcfg.medal_star_open_level_cfgs"
-MEDAL_STAR_OPEN_LEVEL_CFGS.nested_types = {}
-MEDAL_STAR_OPEN_LEVEL_CFGS.enum_types = {}
-MEDAL_STAR_OPEN_LEVEL_CFGS.fields = {MEDAL_STAR_OPEN_LEVEL_CFGS_ITEMS_FIELD}
-MEDAL_STAR_OPEN_LEVEL_CFGS.is_extendable = false
-MEDAL_STAR_OPEN_LEVEL_CFGS.extensions = {}
-FORMULA_CFG_FORMULA_ID_FIELD.name = "formula_id"
-FORMULA_CFG_FORMULA_ID_FIELD.full_name = ".ftcfg.formula_cfg.formula_id"
-FORMULA_CFG_FORMULA_ID_FIELD.number = 1
-FORMULA_CFG_FORMULA_ID_FIELD.index = 0
-FORMULA_CFG_FORMULA_ID_FIELD.label = 2
-FORMULA_CFG_FORMULA_ID_FIELD.has_default_value = false
-FORMULA_CFG_FORMULA_ID_FIELD.default_value = 0
-FORMULA_CFG_FORMULA_ID_FIELD.type = 5
-FORMULA_CFG_FORMULA_ID_FIELD.cpp_type = 1
-
-FORMULA_CFG_COST_IDS_FIELD.name = "cost_ids"
-FORMULA_CFG_COST_IDS_FIELD.full_name = ".ftcfg.formula_cfg.cost_ids"
-FORMULA_CFG_COST_IDS_FIELD.number = 2
-FORMULA_CFG_COST_IDS_FIELD.index = 1
-FORMULA_CFG_COST_IDS_FIELD.label = 3
-FORMULA_CFG_COST_IDS_FIELD.has_default_value = false
-FORMULA_CFG_COST_IDS_FIELD.default_value = {}
-FORMULA_CFG_COST_IDS_FIELD.type = 5
-FORMULA_CFG_COST_IDS_FIELD.cpp_type = 1
-
-FORMULA_CFG_COST_COUNTS_FIELD.name = "cost_counts"
-FORMULA_CFG_COST_COUNTS_FIELD.full_name = ".ftcfg.formula_cfg.cost_counts"
-FORMULA_CFG_COST_COUNTS_FIELD.number = 3
-FORMULA_CFG_COST_COUNTS_FIELD.index = 2
-FORMULA_CFG_COST_COUNTS_FIELD.label = 3
-FORMULA_CFG_COST_COUNTS_FIELD.has_default_value = false
-FORMULA_CFG_COST_COUNTS_FIELD.default_value = {}
-FORMULA_CFG_COST_COUNTS_FIELD.type = 5
-FORMULA_CFG_COST_COUNTS_FIELD.cpp_type = 1
-
-FORMULA_CFG_ITEM_IDS_FIELD.name = "item_ids"
-FORMULA_CFG_ITEM_IDS_FIELD.full_name = ".ftcfg.formula_cfg.item_ids"
-FORMULA_CFG_ITEM_IDS_FIELD.number = 4
-FORMULA_CFG_ITEM_IDS_FIELD.index = 3
-FORMULA_CFG_ITEM_IDS_FIELD.label = 3
-FORMULA_CFG_ITEM_IDS_FIELD.has_default_value = false
-FORMULA_CFG_ITEM_IDS_FIELD.default_value = {}
-FORMULA_CFG_ITEM_IDS_FIELD.type = 5
-FORMULA_CFG_ITEM_IDS_FIELD.cpp_type = 1
-
-FORMULA_CFG_ITEM_COUNTS_FIELD.name = "item_counts"
-FORMULA_CFG_ITEM_COUNTS_FIELD.full_name = ".ftcfg.formula_cfg.item_counts"
-FORMULA_CFG_ITEM_COUNTS_FIELD.number = 5
-FORMULA_CFG_ITEM_COUNTS_FIELD.index = 4
-FORMULA_CFG_ITEM_COUNTS_FIELD.label = 3
-FORMULA_CFG_ITEM_COUNTS_FIELD.has_default_value = false
-FORMULA_CFG_ITEM_COUNTS_FIELD.default_value = {}
-FORMULA_CFG_ITEM_COUNTS_FIELD.type = 5
-FORMULA_CFG_ITEM_COUNTS_FIELD.cpp_type = 1
-
-FORMULA_CFG.name = "formula_cfg"
-FORMULA_CFG.full_name = ".ftcfg.formula_cfg"
-FORMULA_CFG.nested_types = {}
-FORMULA_CFG.enum_types = {}
-FORMULA_CFG.fields = {FORMULA_CFG_FORMULA_ID_FIELD, FORMULA_CFG_COST_IDS_FIELD, FORMULA_CFG_COST_COUNTS_FIELD, FORMULA_CFG_ITEM_IDS_FIELD, FORMULA_CFG_ITEM_COUNTS_FIELD}
-FORMULA_CFG.is_extendable = false
-FORMULA_CFG.extensions = {}
-FORMULA_CFGS_ITEMS_FIELD.name = "items"
-FORMULA_CFGS_ITEMS_FIELD.full_name = ".ftcfg.formula_cfgs.items"
-FORMULA_CFGS_ITEMS_FIELD.number = 1
-FORMULA_CFGS_ITEMS_FIELD.index = 0
-FORMULA_CFGS_ITEMS_FIELD.label = 3
-FORMULA_CFGS_ITEMS_FIELD.has_default_value = false
-FORMULA_CFGS_ITEMS_FIELD.default_value = {}
-FORMULA_CFGS_ITEMS_FIELD.message_type = FORMULA_CFG
-FORMULA_CFGS_ITEMS_FIELD.type = 11
-FORMULA_CFGS_ITEMS_FIELD.cpp_type = 10
-
-FORMULA_CFGS.name = "formula_cfgs"
-FORMULA_CFGS.full_name = ".ftcfg.formula_cfgs"
-FORMULA_CFGS.nested_types = {}
-FORMULA_CFGS.enum_types = {}
-FORMULA_CFGS.fields = {FORMULA_CFGS_ITEMS_FIELD}
-FORMULA_CFGS.is_extendable = false
-FORMULA_CFGS.extensions = {}
-MALL_ITEM_CFG_GUID_FIELD.name = "guid"
-MALL_ITEM_CFG_GUID_FIELD.full_name = ".ftcfg.mall_item_cfg.guid"
-MALL_ITEM_CFG_GUID_FIELD.number = 1
-MALL_ITEM_CFG_GUID_FIELD.index = 0
-MALL_ITEM_CFG_GUID_FIELD.label = 2
-MALL_ITEM_CFG_GUID_FIELD.has_default_value = false
-MALL_ITEM_CFG_GUID_FIELD.default_value = 0
-MALL_ITEM_CFG_GUID_FIELD.type = 13
-MALL_ITEM_CFG_GUID_FIELD.cpp_type = 3
-
-MALL_ITEM_CFG_TYPE_FIELD.name = "type"
-MALL_ITEM_CFG_TYPE_FIELD.full_name = ".ftcfg.mall_item_cfg.type"
-MALL_ITEM_CFG_TYPE_FIELD.number = 2
-MALL_ITEM_CFG_TYPE_FIELD.index = 1
-MALL_ITEM_CFG_TYPE_FIELD.label = 2
-MALL_ITEM_CFG_TYPE_FIELD.has_default_value = false
-MALL_ITEM_CFG_TYPE_FIELD.default_value = 0
-MALL_ITEM_CFG_TYPE_FIELD.type = 13
-MALL_ITEM_CFG_TYPE_FIELD.cpp_type = 3
-
-MALL_ITEM_CFG_REAL_GUID_FIELD.name = "real_guid"
-MALL_ITEM_CFG_REAL_GUID_FIELD.full_name = ".ftcfg.mall_item_cfg.real_guid"
-MALL_ITEM_CFG_REAL_GUID_FIELD.number = 3
-MALL_ITEM_CFG_REAL_GUID_FIELD.index = 2
-MALL_ITEM_CFG_REAL_GUID_FIELD.label = 2
-MALL_ITEM_CFG_REAL_GUID_FIELD.has_default_value = false
-MALL_ITEM_CFG_REAL_GUID_FIELD.default_value = 0
-MALL_ITEM_CFG_REAL_GUID_FIELD.type = 13
-MALL_ITEM_CFG_REAL_GUID_FIELD.cpp_type = 3
-
-MALL_ITEM_CFG_COST_TYPE_FIELD.name = "cost_type"
-MALL_ITEM_CFG_COST_TYPE_FIELD.full_name = ".ftcfg.mall_item_cfg.cost_type"
-MALL_ITEM_CFG_COST_TYPE_FIELD.number = 4
-MALL_ITEM_CFG_COST_TYPE_FIELD.index = 3
-MALL_ITEM_CFG_COST_TYPE_FIELD.label = 2
-MALL_ITEM_CFG_COST_TYPE_FIELD.has_default_value = false
-MALL_ITEM_CFG_COST_TYPE_FIELD.default_value = 0
-MALL_ITEM_CFG_COST_TYPE_FIELD.type = 13
-MALL_ITEM_CFG_COST_TYPE_FIELD.cpp_type = 3
-
-MALL_ITEM_CFG_COST_ORIGINAL_FIELD.name = "cost_original"
-MALL_ITEM_CFG_COST_ORIGINAL_FIELD.full_name = ".ftcfg.mall_item_cfg.cost_original"
-MALL_ITEM_CFG_COST_ORIGINAL_FIELD.number = 5
-MALL_ITEM_CFG_COST_ORIGINAL_FIELD.index = 4
-MALL_ITEM_CFG_COST_ORIGINAL_FIELD.label = 2
-MALL_ITEM_CFG_COST_ORIGINAL_FIELD.has_default_value = false
-MALL_ITEM_CFG_COST_ORIGINAL_FIELD.default_value = 0
-MALL_ITEM_CFG_COST_ORIGINAL_FIELD.type = 13
-MALL_ITEM_CFG_COST_ORIGINAL_FIELD.cpp_type = 3
-
-MALL_ITEM_CFG_COST_CURRENT_FIELD.name = "cost_current"
-MALL_ITEM_CFG_COST_CURRENT_FIELD.full_name = ".ftcfg.mall_item_cfg.cost_current"
-MALL_ITEM_CFG_COST_CURRENT_FIELD.number = 6
-MALL_ITEM_CFG_COST_CURRENT_FIELD.index = 5
-MALL_ITEM_CFG_COST_CURRENT_FIELD.label = 2
-MALL_ITEM_CFG_COST_CURRENT_FIELD.has_default_value = false
-MALL_ITEM_CFG_COST_CURRENT_FIELD.default_value = 0
-MALL_ITEM_CFG_COST_CURRENT_FIELD.type = 13
-MALL_ITEM_CFG_COST_CURRENT_FIELD.cpp_type = 3
-
-MALL_ITEM_CFG.name = "mall_item_cfg"
-MALL_ITEM_CFG.full_name = ".ftcfg.mall_item_cfg"
-MALL_ITEM_CFG.nested_types = {}
-MALL_ITEM_CFG.enum_types = {}
-MALL_ITEM_CFG.fields = {MALL_ITEM_CFG_GUID_FIELD, MALL_ITEM_CFG_TYPE_FIELD, MALL_ITEM_CFG_REAL_GUID_FIELD, MALL_ITEM_CFG_COST_TYPE_FIELD, MALL_ITEM_CFG_COST_ORIGINAL_FIELD, MALL_ITEM_CFG_COST_CURRENT_FIELD}
-MALL_ITEM_CFG.is_extendable = false
-MALL_ITEM_CFG.extensions = {}
-MALL_ITEM_CFGS_ITEMS_FIELD.name = "items"
-MALL_ITEM_CFGS_ITEMS_FIELD.full_name = ".ftcfg.mall_item_cfgs.items"
-MALL_ITEM_CFGS_ITEMS_FIELD.number = 1
-MALL_ITEM_CFGS_ITEMS_FIELD.index = 0
-MALL_ITEM_CFGS_ITEMS_FIELD.label = 3
-MALL_ITEM_CFGS_ITEMS_FIELD.has_default_value = false
-MALL_ITEM_CFGS_ITEMS_FIELD.default_value = {}
-MALL_ITEM_CFGS_ITEMS_FIELD.message_type = MALL_ITEM_CFG
-MALL_ITEM_CFGS_ITEMS_FIELD.type = 11
-MALL_ITEM_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MALL_ITEM_CFGS.name = "mall_item_cfgs"
-MALL_ITEM_CFGS.full_name = ".ftcfg.mall_item_cfgs"
-MALL_ITEM_CFGS.nested_types = {}
-MALL_ITEM_CFGS.enum_types = {}
-MALL_ITEM_CFGS.fields = {MALL_ITEM_CFGS_ITEMS_FIELD}
-MALL_ITEM_CFGS.is_extendable = false
-MALL_ITEM_CFGS.extensions = {}
-SHOP_TYPE_CFG_ID_FIELD.name = "id"
-SHOP_TYPE_CFG_ID_FIELD.full_name = ".ftcfg.shop_type_cfg.id"
-SHOP_TYPE_CFG_ID_FIELD.number = 1
-SHOP_TYPE_CFG_ID_FIELD.index = 0
-SHOP_TYPE_CFG_ID_FIELD.label = 2
-SHOP_TYPE_CFG_ID_FIELD.has_default_value = false
-SHOP_TYPE_CFG_ID_FIELD.default_value = 0
-SHOP_TYPE_CFG_ID_FIELD.type = 13
-SHOP_TYPE_CFG_ID_FIELD.cpp_type = 3
-
-SHOP_TYPE_CFG_SHOP_NAME_FIELD.name = "shop_name"
-SHOP_TYPE_CFG_SHOP_NAME_FIELD.full_name = ".ftcfg.shop_type_cfg.shop_name"
-SHOP_TYPE_CFG_SHOP_NAME_FIELD.number = 2
-SHOP_TYPE_CFG_SHOP_NAME_FIELD.index = 1
-SHOP_TYPE_CFG_SHOP_NAME_FIELD.label = 2
-SHOP_TYPE_CFG_SHOP_NAME_FIELD.has_default_value = false
-SHOP_TYPE_CFG_SHOP_NAME_FIELD.default_value = ""
-SHOP_TYPE_CFG_SHOP_NAME_FIELD.type = 9
-SHOP_TYPE_CFG_SHOP_NAME_FIELD.cpp_type = 9
-
-SHOP_TYPE_CFG_OPEN_LVL_FIELD.name = "open_lvl"
-SHOP_TYPE_CFG_OPEN_LVL_FIELD.full_name = ".ftcfg.shop_type_cfg.open_lvl"
-SHOP_TYPE_CFG_OPEN_LVL_FIELD.number = 3
-SHOP_TYPE_CFG_OPEN_LVL_FIELD.index = 2
-SHOP_TYPE_CFG_OPEN_LVL_FIELD.label = 2
-SHOP_TYPE_CFG_OPEN_LVL_FIELD.has_default_value = false
-SHOP_TYPE_CFG_OPEN_LVL_FIELD.default_value = 0
-SHOP_TYPE_CFG_OPEN_LVL_FIELD.type = 5
-SHOP_TYPE_CFG_OPEN_LVL_FIELD.cpp_type = 1
-
-SHOP_TYPE_CFG_SHOP_TYPE_FIELD.name = "shop_type"
-SHOP_TYPE_CFG_SHOP_TYPE_FIELD.full_name = ".ftcfg.shop_type_cfg.shop_type"
-SHOP_TYPE_CFG_SHOP_TYPE_FIELD.number = 4
-SHOP_TYPE_CFG_SHOP_TYPE_FIELD.index = 3
-SHOP_TYPE_CFG_SHOP_TYPE_FIELD.label = 2
-SHOP_TYPE_CFG_SHOP_TYPE_FIELD.has_default_value = false
-SHOP_TYPE_CFG_SHOP_TYPE_FIELD.default_value = nil
-SHOP_TYPE_CFG_SHOP_TYPE_FIELD.enum_type = config_predefine_pb.ESHOPTYPE
-SHOP_TYPE_CFG_SHOP_TYPE_FIELD.type = 14
-SHOP_TYPE_CFG_SHOP_TYPE_FIELD.cpp_type = 8
-
-SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.name = "shopsub_type"
-SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.full_name = ".ftcfg.shop_type_cfg.shopsub_type"
-SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.number = 5
-SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.index = 4
-SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.label = 2
-SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.has_default_value = false
-SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.default_value = 0
-SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.type = 5
-SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD.cpp_type = 1
-
-SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.name = "shop_items"
-SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.full_name = ".ftcfg.shop_type_cfg.shop_items"
-SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.number = 6
-SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.index = 5
-SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.label = 3
-SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.has_default_value = false
-SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.default_value = {}
-SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.type = 5
-SHOP_TYPE_CFG_SHOP_ITEMS_FIELD.cpp_type = 1
-
-SHOP_TYPE_CFG_ISTAB_FIELD.name = "istab"
-SHOP_TYPE_CFG_ISTAB_FIELD.full_name = ".ftcfg.shop_type_cfg.istab"
-SHOP_TYPE_CFG_ISTAB_FIELD.number = 7
-SHOP_TYPE_CFG_ISTAB_FIELD.index = 6
-SHOP_TYPE_CFG_ISTAB_FIELD.label = 2
-SHOP_TYPE_CFG_ISTAB_FIELD.has_default_value = false
-SHOP_TYPE_CFG_ISTAB_FIELD.default_value = 0
-SHOP_TYPE_CFG_ISTAB_FIELD.type = 5
-SHOP_TYPE_CFG_ISTAB_FIELD.cpp_type = 1
-
-SHOP_TYPE_CFG_TAB_NAME1_FIELD.name = "tab_name1"
-SHOP_TYPE_CFG_TAB_NAME1_FIELD.full_name = ".ftcfg.shop_type_cfg.tab_name1"
-SHOP_TYPE_CFG_TAB_NAME1_FIELD.number = 8
-SHOP_TYPE_CFG_TAB_NAME1_FIELD.index = 7
-SHOP_TYPE_CFG_TAB_NAME1_FIELD.label = 2
-SHOP_TYPE_CFG_TAB_NAME1_FIELD.has_default_value = false
-SHOP_TYPE_CFG_TAB_NAME1_FIELD.default_value = ""
-SHOP_TYPE_CFG_TAB_NAME1_FIELD.type = 9
-SHOP_TYPE_CFG_TAB_NAME1_FIELD.cpp_type = 9
-
-SHOP_TYPE_CFG_TAB_NAME2_FIELD.name = "tab_name2"
-SHOP_TYPE_CFG_TAB_NAME2_FIELD.full_name = ".ftcfg.shop_type_cfg.tab_name2"
-SHOP_TYPE_CFG_TAB_NAME2_FIELD.number = 9
-SHOP_TYPE_CFG_TAB_NAME2_FIELD.index = 8
-SHOP_TYPE_CFG_TAB_NAME2_FIELD.label = 2
-SHOP_TYPE_CFG_TAB_NAME2_FIELD.has_default_value = false
-SHOP_TYPE_CFG_TAB_NAME2_FIELD.default_value = ""
-SHOP_TYPE_CFG_TAB_NAME2_FIELD.type = 9
-SHOP_TYPE_CFG_TAB_NAME2_FIELD.cpp_type = 9
-
-SHOP_TYPE_CFG_TAB_NAME3_FIELD.name = "tab_name3"
-SHOP_TYPE_CFG_TAB_NAME3_FIELD.full_name = ".ftcfg.shop_type_cfg.tab_name3"
-SHOP_TYPE_CFG_TAB_NAME3_FIELD.number = 10
-SHOP_TYPE_CFG_TAB_NAME3_FIELD.index = 9
-SHOP_TYPE_CFG_TAB_NAME3_FIELD.label = 2
-SHOP_TYPE_CFG_TAB_NAME3_FIELD.has_default_value = false
-SHOP_TYPE_CFG_TAB_NAME3_FIELD.default_value = ""
-SHOP_TYPE_CFG_TAB_NAME3_FIELD.type = 9
-SHOP_TYPE_CFG_TAB_NAME3_FIELD.cpp_type = 9
-
-SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.name = "tab_items1"
-SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.full_name = ".ftcfg.shop_type_cfg.tab_items1"
-SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.number = 11
-SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.index = 10
-SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.label = 3
-SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.has_default_value = false
-SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.default_value = {}
-SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.type = 5
-SHOP_TYPE_CFG_TAB_ITEMS1_FIELD.cpp_type = 1
-
-SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.name = "tab_items2"
-SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.full_name = ".ftcfg.shop_type_cfg.tab_items2"
-SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.number = 12
-SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.index = 11
-SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.label = 3
-SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.has_default_value = false
-SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.default_value = {}
-SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.type = 5
-SHOP_TYPE_CFG_TAB_ITEMS2_FIELD.cpp_type = 1
-
-SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.name = "tab_items3"
-SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.full_name = ".ftcfg.shop_type_cfg.tab_items3"
-SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.number = 13
-SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.index = 12
-SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.label = 3
-SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.has_default_value = false
-SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.default_value = {}
-SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.type = 5
-SHOP_TYPE_CFG_TAB_ITEMS3_FIELD.cpp_type = 1
-
-SHOP_TYPE_CFG.name = "shop_type_cfg"
-SHOP_TYPE_CFG.full_name = ".ftcfg.shop_type_cfg"
-SHOP_TYPE_CFG.nested_types = {}
-SHOP_TYPE_CFG.enum_types = {}
-SHOP_TYPE_CFG.fields = {SHOP_TYPE_CFG_ID_FIELD, SHOP_TYPE_CFG_SHOP_NAME_FIELD, SHOP_TYPE_CFG_OPEN_LVL_FIELD, SHOP_TYPE_CFG_SHOP_TYPE_FIELD, SHOP_TYPE_CFG_SHOPSUB_TYPE_FIELD, SHOP_TYPE_CFG_SHOP_ITEMS_FIELD, SHOP_TYPE_CFG_ISTAB_FIELD, SHOP_TYPE_CFG_TAB_NAME1_FIELD, SHOP_TYPE_CFG_TAB_NAME2_FIELD, SHOP_TYPE_CFG_TAB_NAME3_FIELD, SHOP_TYPE_CFG_TAB_ITEMS1_FIELD, SHOP_TYPE_CFG_TAB_ITEMS2_FIELD, SHOP_TYPE_CFG_TAB_ITEMS3_FIELD}
-SHOP_TYPE_CFG.is_extendable = false
-SHOP_TYPE_CFG.extensions = {}
-SHOP_TYPE_CFGS_ITEMS_FIELD.name = "items"
-SHOP_TYPE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.shop_type_cfgs.items"
-SHOP_TYPE_CFGS_ITEMS_FIELD.number = 1
-SHOP_TYPE_CFGS_ITEMS_FIELD.index = 0
-SHOP_TYPE_CFGS_ITEMS_FIELD.label = 3
-SHOP_TYPE_CFGS_ITEMS_FIELD.has_default_value = false
-SHOP_TYPE_CFGS_ITEMS_FIELD.default_value = {}
-SHOP_TYPE_CFGS_ITEMS_FIELD.message_type = SHOP_TYPE_CFG
-SHOP_TYPE_CFGS_ITEMS_FIELD.type = 11
-SHOP_TYPE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SHOP_TYPE_CFGS.name = "shop_type_cfgs"
-SHOP_TYPE_CFGS.full_name = ".ftcfg.shop_type_cfgs"
-SHOP_TYPE_CFGS.nested_types = {}
-SHOP_TYPE_CFGS.enum_types = {}
-SHOP_TYPE_CFGS.fields = {SHOP_TYPE_CFGS_ITEMS_FIELD}
-SHOP_TYPE_CFGS.is_extendable = false
-SHOP_TYPE_CFGS.extensions = {}
-SCENE_EVENT_CFG_ID_FIELD.name = "id"
-SCENE_EVENT_CFG_ID_FIELD.full_name = ".ftcfg.scene_event_cfg.id"
-SCENE_EVENT_CFG_ID_FIELD.number = 1
-SCENE_EVENT_CFG_ID_FIELD.index = 0
-SCENE_EVENT_CFG_ID_FIELD.label = 2
-SCENE_EVENT_CFG_ID_FIELD.has_default_value = false
-SCENE_EVENT_CFG_ID_FIELD.default_value = 0
-SCENE_EVENT_CFG_ID_FIELD.type = 5
-SCENE_EVENT_CFG_ID_FIELD.cpp_type = 1
-
-SCENE_EVENT_CFG_STEP_ID_FIELD.name = "step_id"
-SCENE_EVENT_CFG_STEP_ID_FIELD.full_name = ".ftcfg.scene_event_cfg.step_id"
-SCENE_EVENT_CFG_STEP_ID_FIELD.number = 2
-SCENE_EVENT_CFG_STEP_ID_FIELD.index = 1
-SCENE_EVENT_CFG_STEP_ID_FIELD.label = 2
-SCENE_EVENT_CFG_STEP_ID_FIELD.has_default_value = false
-SCENE_EVENT_CFG_STEP_ID_FIELD.default_value = 0
-SCENE_EVENT_CFG_STEP_ID_FIELD.type = 5
-SCENE_EVENT_CFG_STEP_ID_FIELD.cpp_type = 1
-
-SCENE_EVENT_CFG_EVENT_TYPE_FIELD.name = "event_type"
-SCENE_EVENT_CFG_EVENT_TYPE_FIELD.full_name = ".ftcfg.scene_event_cfg.event_type"
-SCENE_EVENT_CFG_EVENT_TYPE_FIELD.number = 3
-SCENE_EVENT_CFG_EVENT_TYPE_FIELD.index = 2
-SCENE_EVENT_CFG_EVENT_TYPE_FIELD.label = 2
-SCENE_EVENT_CFG_EVENT_TYPE_FIELD.has_default_value = false
-SCENE_EVENT_CFG_EVENT_TYPE_FIELD.default_value = nil
-SCENE_EVENT_CFG_EVENT_TYPE_FIELD.enum_type = config_predefine_pb.ESCENEEVENTTYPE
-SCENE_EVENT_CFG_EVENT_TYPE_FIELD.type = 14
-SCENE_EVENT_CFG_EVENT_TYPE_FIELD.cpp_type = 8
-
-SCENE_EVENT_CFG_CONDIDITON1_FIELD.name = "condiditon1"
-SCENE_EVENT_CFG_CONDIDITON1_FIELD.full_name = ".ftcfg.scene_event_cfg.condiditon1"
-SCENE_EVENT_CFG_CONDIDITON1_FIELD.number = 4
-SCENE_EVENT_CFG_CONDIDITON1_FIELD.index = 3
-SCENE_EVENT_CFG_CONDIDITON1_FIELD.label = 2
-SCENE_EVENT_CFG_CONDIDITON1_FIELD.has_default_value = false
-SCENE_EVENT_CFG_CONDIDITON1_FIELD.default_value = 0
-SCENE_EVENT_CFG_CONDIDITON1_FIELD.type = 5
-SCENE_EVENT_CFG_CONDIDITON1_FIELD.cpp_type = 1
-
-SCENE_EVENT_CFG_CONDIDITON2_FIELD.name = "condiditon2"
-SCENE_EVENT_CFG_CONDIDITON2_FIELD.full_name = ".ftcfg.scene_event_cfg.condiditon2"
-SCENE_EVENT_CFG_CONDIDITON2_FIELD.number = 5
-SCENE_EVENT_CFG_CONDIDITON2_FIELD.index = 4
-SCENE_EVENT_CFG_CONDIDITON2_FIELD.label = 2
-SCENE_EVENT_CFG_CONDIDITON2_FIELD.has_default_value = false
-SCENE_EVENT_CFG_CONDIDITON2_FIELD.default_value = 0
-SCENE_EVENT_CFG_CONDIDITON2_FIELD.type = 5
-SCENE_EVENT_CFG_CONDIDITON2_FIELD.cpp_type = 1
-
-SCENE_EVENT_CFG_CONDIDITON3_FIELD.name = "condiditon3"
-SCENE_EVENT_CFG_CONDIDITON3_FIELD.full_name = ".ftcfg.scene_event_cfg.condiditon3"
-SCENE_EVENT_CFG_CONDIDITON3_FIELD.number = 6
-SCENE_EVENT_CFG_CONDIDITON3_FIELD.index = 5
-SCENE_EVENT_CFG_CONDIDITON3_FIELD.label = 2
-SCENE_EVENT_CFG_CONDIDITON3_FIELD.has_default_value = false
-SCENE_EVENT_CFG_CONDIDITON3_FIELD.default_value = 0
-SCENE_EVENT_CFG_CONDIDITON3_FIELD.type = 5
-SCENE_EVENT_CFG_CONDIDITON3_FIELD.cpp_type = 1
-
-SCENE_EVENT_CFG_CONDIDITON4_FIELD.name = "condiditon4"
-SCENE_EVENT_CFG_CONDIDITON4_FIELD.full_name = ".ftcfg.scene_event_cfg.condiditon4"
-SCENE_EVENT_CFG_CONDIDITON4_FIELD.number = 7
-SCENE_EVENT_CFG_CONDIDITON4_FIELD.index = 6
-SCENE_EVENT_CFG_CONDIDITON4_FIELD.label = 2
-SCENE_EVENT_CFG_CONDIDITON4_FIELD.has_default_value = false
-SCENE_EVENT_CFG_CONDIDITON4_FIELD.default_value = 0
-SCENE_EVENT_CFG_CONDIDITON4_FIELD.type = 5
-SCENE_EVENT_CFG_CONDIDITON4_FIELD.cpp_type = 1
-
-SCENE_EVENT_CFG_RESULT_TYPE_FIELD.name = "result_type"
-SCENE_EVENT_CFG_RESULT_TYPE_FIELD.full_name = ".ftcfg.scene_event_cfg.result_type"
-SCENE_EVENT_CFG_RESULT_TYPE_FIELD.number = 8
-SCENE_EVENT_CFG_RESULT_TYPE_FIELD.index = 7
-SCENE_EVENT_CFG_RESULT_TYPE_FIELD.label = 2
-SCENE_EVENT_CFG_RESULT_TYPE_FIELD.has_default_value = false
-SCENE_EVENT_CFG_RESULT_TYPE_FIELD.default_value = nil
-SCENE_EVENT_CFG_RESULT_TYPE_FIELD.enum_type = config_predefine_pb.ESCENERESULTTYPE
-SCENE_EVENT_CFG_RESULT_TYPE_FIELD.type = 14
-SCENE_EVENT_CFG_RESULT_TYPE_FIELD.cpp_type = 8
-
-SCENE_EVENT_CFG_RESULT1_FIELD.name = "result1"
-SCENE_EVENT_CFG_RESULT1_FIELD.full_name = ".ftcfg.scene_event_cfg.result1"
-SCENE_EVENT_CFG_RESULT1_FIELD.number = 9
-SCENE_EVENT_CFG_RESULT1_FIELD.index = 8
-SCENE_EVENT_CFG_RESULT1_FIELD.label = 3
-SCENE_EVENT_CFG_RESULT1_FIELD.has_default_value = false
-SCENE_EVENT_CFG_RESULT1_FIELD.default_value = {}
-SCENE_EVENT_CFG_RESULT1_FIELD.type = 5
-SCENE_EVENT_CFG_RESULT1_FIELD.cpp_type = 1
-
-SCENE_EVENT_CFG_RESULT2_FIELD.name = "result2"
-SCENE_EVENT_CFG_RESULT2_FIELD.full_name = ".ftcfg.scene_event_cfg.result2"
-SCENE_EVENT_CFG_RESULT2_FIELD.number = 10
-SCENE_EVENT_CFG_RESULT2_FIELD.index = 9
-SCENE_EVENT_CFG_RESULT2_FIELD.label = 3
-SCENE_EVENT_CFG_RESULT2_FIELD.has_default_value = false
-SCENE_EVENT_CFG_RESULT2_FIELD.default_value = {}
-SCENE_EVENT_CFG_RESULT2_FIELD.type = 5
-SCENE_EVENT_CFG_RESULT2_FIELD.cpp_type = 1
-
-SCENE_EVENT_CFG_RESULT3_FIELD.name = "result3"
-SCENE_EVENT_CFG_RESULT3_FIELD.full_name = ".ftcfg.scene_event_cfg.result3"
-SCENE_EVENT_CFG_RESULT3_FIELD.number = 11
-SCENE_EVENT_CFG_RESULT3_FIELD.index = 10
-SCENE_EVENT_CFG_RESULT3_FIELD.label = 3
-SCENE_EVENT_CFG_RESULT3_FIELD.has_default_value = false
-SCENE_EVENT_CFG_RESULT3_FIELD.default_value = {}
-SCENE_EVENT_CFG_RESULT3_FIELD.type = 5
-SCENE_EVENT_CFG_RESULT3_FIELD.cpp_type = 1
-
-SCENE_EVENT_CFG_RESULT4_FIELD.name = "result4"
-SCENE_EVENT_CFG_RESULT4_FIELD.full_name = ".ftcfg.scene_event_cfg.result4"
-SCENE_EVENT_CFG_RESULT4_FIELD.number = 12
-SCENE_EVENT_CFG_RESULT4_FIELD.index = 11
-SCENE_EVENT_CFG_RESULT4_FIELD.label = 3
-SCENE_EVENT_CFG_RESULT4_FIELD.has_default_value = false
-SCENE_EVENT_CFG_RESULT4_FIELD.default_value = {}
-SCENE_EVENT_CFG_RESULT4_FIELD.type = 5
-SCENE_EVENT_CFG_RESULT4_FIELD.cpp_type = 1
-
-SCENE_EVENT_CFG.name = "scene_event_cfg"
-SCENE_EVENT_CFG.full_name = ".ftcfg.scene_event_cfg"
-SCENE_EVENT_CFG.nested_types = {}
-SCENE_EVENT_CFG.enum_types = {}
-SCENE_EVENT_CFG.fields = {SCENE_EVENT_CFG_ID_FIELD, SCENE_EVENT_CFG_STEP_ID_FIELD, SCENE_EVENT_CFG_EVENT_TYPE_FIELD, SCENE_EVENT_CFG_CONDIDITON1_FIELD, SCENE_EVENT_CFG_CONDIDITON2_FIELD, SCENE_EVENT_CFG_CONDIDITON3_FIELD, SCENE_EVENT_CFG_CONDIDITON4_FIELD, SCENE_EVENT_CFG_RESULT_TYPE_FIELD, SCENE_EVENT_CFG_RESULT1_FIELD, SCENE_EVENT_CFG_RESULT2_FIELD, SCENE_EVENT_CFG_RESULT3_FIELD, SCENE_EVENT_CFG_RESULT4_FIELD}
-SCENE_EVENT_CFG.is_extendable = false
-SCENE_EVENT_CFG.extensions = {}
-SCENE_EVENT_CFGS_ITEMS_FIELD.name = "items"
-SCENE_EVENT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.scene_event_cfgs.items"
-SCENE_EVENT_CFGS_ITEMS_FIELD.number = 1
-SCENE_EVENT_CFGS_ITEMS_FIELD.index = 0
-SCENE_EVENT_CFGS_ITEMS_FIELD.label = 3
-SCENE_EVENT_CFGS_ITEMS_FIELD.has_default_value = false
-SCENE_EVENT_CFGS_ITEMS_FIELD.default_value = {}
-SCENE_EVENT_CFGS_ITEMS_FIELD.message_type = SCENE_EVENT_CFG
-SCENE_EVENT_CFGS_ITEMS_FIELD.type = 11
-SCENE_EVENT_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SCENE_EVENT_CFGS.name = "scene_event_cfgs"
-SCENE_EVENT_CFGS.full_name = ".ftcfg.scene_event_cfgs"
-SCENE_EVENT_CFGS.nested_types = {}
-SCENE_EVENT_CFGS.enum_types = {}
-SCENE_EVENT_CFGS.fields = {SCENE_EVENT_CFGS_ITEMS_FIELD}
-SCENE_EVENT_CFGS.is_extendable = false
-SCENE_EVENT_CFGS.extensions = {}
-SCENE_PORTAL_CFG_ID_FIELD.name = "id"
-SCENE_PORTAL_CFG_ID_FIELD.full_name = ".ftcfg.scene_portal_cfg.id"
-SCENE_PORTAL_CFG_ID_FIELD.number = 1
-SCENE_PORTAL_CFG_ID_FIELD.index = 0
-SCENE_PORTAL_CFG_ID_FIELD.label = 2
-SCENE_PORTAL_CFG_ID_FIELD.has_default_value = false
-SCENE_PORTAL_CFG_ID_FIELD.default_value = 0
-SCENE_PORTAL_CFG_ID_FIELD.type = 5
-SCENE_PORTAL_CFG_ID_FIELD.cpp_type = 1
-
-SCENE_PORTAL_CFG_MAP_ID_FIELD.name = "map_id"
-SCENE_PORTAL_CFG_MAP_ID_FIELD.full_name = ".ftcfg.scene_portal_cfg.map_id"
-SCENE_PORTAL_CFG_MAP_ID_FIELD.number = 2
-SCENE_PORTAL_CFG_MAP_ID_FIELD.index = 1
-SCENE_PORTAL_CFG_MAP_ID_FIELD.label = 2
-SCENE_PORTAL_CFG_MAP_ID_FIELD.has_default_value = false
-SCENE_PORTAL_CFG_MAP_ID_FIELD.default_value = 0
-SCENE_PORTAL_CFG_MAP_ID_FIELD.type = 5
-SCENE_PORTAL_CFG_MAP_ID_FIELD.cpp_type = 1
-
-SCENE_PORTAL_CFG_POS_X_FIELD.name = "pos_x"
-SCENE_PORTAL_CFG_POS_X_FIELD.full_name = ".ftcfg.scene_portal_cfg.pos_x"
-SCENE_PORTAL_CFG_POS_X_FIELD.number = 3
-SCENE_PORTAL_CFG_POS_X_FIELD.index = 2
-SCENE_PORTAL_CFG_POS_X_FIELD.label = 2
-SCENE_PORTAL_CFG_POS_X_FIELD.has_default_value = false
-SCENE_PORTAL_CFG_POS_X_FIELD.default_value = 0.0
-SCENE_PORTAL_CFG_POS_X_FIELD.type = 2
-SCENE_PORTAL_CFG_POS_X_FIELD.cpp_type = 6
-
-SCENE_PORTAL_CFG_POS_Y_FIELD.name = "pos_y"
-SCENE_PORTAL_CFG_POS_Y_FIELD.full_name = ".ftcfg.scene_portal_cfg.pos_y"
-SCENE_PORTAL_CFG_POS_Y_FIELD.number = 4
-SCENE_PORTAL_CFG_POS_Y_FIELD.index = 3
-SCENE_PORTAL_CFG_POS_Y_FIELD.label = 2
-SCENE_PORTAL_CFG_POS_Y_FIELD.has_default_value = false
-SCENE_PORTAL_CFG_POS_Y_FIELD.default_value = 0.0
-SCENE_PORTAL_CFG_POS_Y_FIELD.type = 2
-SCENE_PORTAL_CFG_POS_Y_FIELD.cpp_type = 6
-
-SCENE_PORTAL_CFG_POS_Z_FIELD.name = "pos_z"
-SCENE_PORTAL_CFG_POS_Z_FIELD.full_name = ".ftcfg.scene_portal_cfg.pos_z"
-SCENE_PORTAL_CFG_POS_Z_FIELD.number = 5
-SCENE_PORTAL_CFG_POS_Z_FIELD.index = 4
-SCENE_PORTAL_CFG_POS_Z_FIELD.label = 2
-SCENE_PORTAL_CFG_POS_Z_FIELD.has_default_value = false
-SCENE_PORTAL_CFG_POS_Z_FIELD.default_value = 0.0
-SCENE_PORTAL_CFG_POS_Z_FIELD.type = 2
-SCENE_PORTAL_CFG_POS_Z_FIELD.cpp_type = 6
-
-SCENE_PORTAL_CFG_RADIUS_FIELD.name = "radius"
-SCENE_PORTAL_CFG_RADIUS_FIELD.full_name = ".ftcfg.scene_portal_cfg.radius"
-SCENE_PORTAL_CFG_RADIUS_FIELD.number = 6
-SCENE_PORTAL_CFG_RADIUS_FIELD.index = 5
-SCENE_PORTAL_CFG_RADIUS_FIELD.label = 2
-SCENE_PORTAL_CFG_RADIUS_FIELD.has_default_value = false
-SCENE_PORTAL_CFG_RADIUS_FIELD.default_value = 0.0
-SCENE_PORTAL_CFG_RADIUS_FIELD.type = 2
-SCENE_PORTAL_CFG_RADIUS_FIELD.cpp_type = 6
-
-SCENE_PORTAL_CFG_ORIENTATION_FIELD.name = "orientation"
-SCENE_PORTAL_CFG_ORIENTATION_FIELD.full_name = ".ftcfg.scene_portal_cfg.orientation"
-SCENE_PORTAL_CFG_ORIENTATION_FIELD.number = 7
-SCENE_PORTAL_CFG_ORIENTATION_FIELD.index = 6
-SCENE_PORTAL_CFG_ORIENTATION_FIELD.label = 2
-SCENE_PORTAL_CFG_ORIENTATION_FIELD.has_default_value = false
-SCENE_PORTAL_CFG_ORIENTATION_FIELD.default_value = 0.0
-SCENE_PORTAL_CFG_ORIENTATION_FIELD.type = 2
-SCENE_PORTAL_CFG_ORIENTATION_FIELD.cpp_type = 6
-
-SCENE_PORTAL_CFG_ENABLED_FIELD.name = "enabled"
-SCENE_PORTAL_CFG_ENABLED_FIELD.full_name = ".ftcfg.scene_portal_cfg.enabled"
-SCENE_PORTAL_CFG_ENABLED_FIELD.number = 8
-SCENE_PORTAL_CFG_ENABLED_FIELD.index = 7
-SCENE_PORTAL_CFG_ENABLED_FIELD.label = 2
-SCENE_PORTAL_CFG_ENABLED_FIELD.has_default_value = false
-SCENE_PORTAL_CFG_ENABLED_FIELD.default_value = 0
-SCENE_PORTAL_CFG_ENABLED_FIELD.type = 5
-SCENE_PORTAL_CFG_ENABLED_FIELD.cpp_type = 1
-
-SCENE_PORTAL_CFG_RESID_FIELD.name = "resid"
-SCENE_PORTAL_CFG_RESID_FIELD.full_name = ".ftcfg.scene_portal_cfg.resid"
-SCENE_PORTAL_CFG_RESID_FIELD.number = 9
-SCENE_PORTAL_CFG_RESID_FIELD.index = 8
-SCENE_PORTAL_CFG_RESID_FIELD.label = 2
-SCENE_PORTAL_CFG_RESID_FIELD.has_default_value = false
-SCENE_PORTAL_CFG_RESID_FIELD.default_value = 0
-SCENE_PORTAL_CFG_RESID_FIELD.type = 5
-SCENE_PORTAL_CFG_RESID_FIELD.cpp_type = 1
-
-SCENE_PORTAL_CFG.name = "scene_portal_cfg"
-SCENE_PORTAL_CFG.full_name = ".ftcfg.scene_portal_cfg"
-SCENE_PORTAL_CFG.nested_types = {}
-SCENE_PORTAL_CFG.enum_types = {}
-SCENE_PORTAL_CFG.fields = {SCENE_PORTAL_CFG_ID_FIELD, SCENE_PORTAL_CFG_MAP_ID_FIELD, SCENE_PORTAL_CFG_POS_X_FIELD, SCENE_PORTAL_CFG_POS_Y_FIELD, SCENE_PORTAL_CFG_POS_Z_FIELD, SCENE_PORTAL_CFG_RADIUS_FIELD, SCENE_PORTAL_CFG_ORIENTATION_FIELD, SCENE_PORTAL_CFG_ENABLED_FIELD, SCENE_PORTAL_CFG_RESID_FIELD}
-SCENE_PORTAL_CFG.is_extendable = false
-SCENE_PORTAL_CFG.extensions = {}
-SCENE_PORTAL_CFGS_ITEMS_FIELD.name = "items"
-SCENE_PORTAL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.scene_portal_cfgs.items"
-SCENE_PORTAL_CFGS_ITEMS_FIELD.number = 1
-SCENE_PORTAL_CFGS_ITEMS_FIELD.index = 0
-SCENE_PORTAL_CFGS_ITEMS_FIELD.label = 3
-SCENE_PORTAL_CFGS_ITEMS_FIELD.has_default_value = false
-SCENE_PORTAL_CFGS_ITEMS_FIELD.default_value = {}
-SCENE_PORTAL_CFGS_ITEMS_FIELD.message_type = SCENE_PORTAL_CFG
-SCENE_PORTAL_CFGS_ITEMS_FIELD.type = 11
-SCENE_PORTAL_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SCENE_PORTAL_CFGS.name = "scene_portal_cfgs"
-SCENE_PORTAL_CFGS.full_name = ".ftcfg.scene_portal_cfgs"
-SCENE_PORTAL_CFGS.nested_types = {}
-SCENE_PORTAL_CFGS.enum_types = {}
-SCENE_PORTAL_CFGS.fields = {SCENE_PORTAL_CFGS_ITEMS_FIELD}
-SCENE_PORTAL_CFGS.is_extendable = false
-SCENE_PORTAL_CFGS.extensions = {}
-SCENE_FUNCTION_CFG_ID_FIELD.name = "id"
-SCENE_FUNCTION_CFG_ID_FIELD.full_name = ".ftcfg.scene_function_cfg.id"
-SCENE_FUNCTION_CFG_ID_FIELD.number = 1
-SCENE_FUNCTION_CFG_ID_FIELD.index = 0
-SCENE_FUNCTION_CFG_ID_FIELD.label = 2
-SCENE_FUNCTION_CFG_ID_FIELD.has_default_value = false
-SCENE_FUNCTION_CFG_ID_FIELD.default_value = 0
-SCENE_FUNCTION_CFG_ID_FIELD.type = 5
-SCENE_FUNCTION_CFG_ID_FIELD.cpp_type = 1
-
-SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.name = "open_functions"
-SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.full_name = ".ftcfg.scene_function_cfg.open_functions"
-SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.number = 2
-SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.index = 1
-SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.label = 3
-SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.has_default_value = false
-SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.default_value = {}
-SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
-SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.type = 14
-SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD.cpp_type = 8
-
-SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.name = "open_paras"
-SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.full_name = ".ftcfg.scene_function_cfg.open_paras"
-SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.number = 3
-SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.index = 2
-SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.label = 3
-SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.has_default_value = false
-SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.default_value = {}
-SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.type = 5
-SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD.cpp_type = 1
-
-SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.name = "close_functions"
-SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.full_name = ".ftcfg.scene_function_cfg.close_functions"
-SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.number = 4
-SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.index = 3
-SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.label = 3
-SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.has_default_value = false
-SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.default_value = {}
-SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
-SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.type = 14
-SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD.cpp_type = 8
-
-SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.name = "leave_functions"
-SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.full_name = ".ftcfg.scene_function_cfg.leave_functions"
-SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.number = 5
-SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.index = 4
-SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.label = 3
-SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.has_default_value = false
-SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.default_value = {}
-SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
-SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.type = 14
-SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD.cpp_type = 8
-
-SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.name = "limit_functions"
-SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.full_name = ".ftcfg.scene_function_cfg.limit_functions"
-SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.number = 6
-SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.index = 5
-SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.label = 3
-SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.has_default_value = false
-SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.default_value = {}
-SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
-SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.type = 14
-SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD.cpp_type = 8
-
-SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.name = "slimit_functions"
-SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.full_name = ".ftcfg.scene_function_cfg.slimit_functions"
-SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.number = 7
-SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.index = 6
-SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.label = 3
-SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.has_default_value = false
-SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.default_value = {}
-SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
-SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.type = 14
-SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD.cpp_type = 8
-
-SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.name = "back_scene"
-SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.full_name = ".ftcfg.scene_function_cfg.back_scene"
-SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.number = 8
-SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.index = 7
-SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.label = 2
-SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.has_default_value = false
-SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.default_value = 0
-SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.type = 5
-SCENE_FUNCTION_CFG_BACK_SCENE_FIELD.cpp_type = 1
-
-SCENE_FUNCTION_CFG_RANK_IDS_FIELD.name = "rank_ids"
-SCENE_FUNCTION_CFG_RANK_IDS_FIELD.full_name = ".ftcfg.scene_function_cfg.rank_ids"
-SCENE_FUNCTION_CFG_RANK_IDS_FIELD.number = 9
-SCENE_FUNCTION_CFG_RANK_IDS_FIELD.index = 8
-SCENE_FUNCTION_CFG_RANK_IDS_FIELD.label = 3
-SCENE_FUNCTION_CFG_RANK_IDS_FIELD.has_default_value = false
-SCENE_FUNCTION_CFG_RANK_IDS_FIELD.default_value = {}
-SCENE_FUNCTION_CFG_RANK_IDS_FIELD.type = 5
-SCENE_FUNCTION_CFG_RANK_IDS_FIELD.cpp_type = 1
-
-SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.name = "rank_type"
-SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.full_name = ".ftcfg.scene_function_cfg.rank_type"
-SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.number = 10
-SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.index = 9
-SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.label = 2
-SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.has_default_value = false
-SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.default_value = nil
-SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
-SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.type = 14
-SCENE_FUNCTION_CFG_RANK_TYPE_FIELD.cpp_type = 8
-
-SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.name = "rank_linenames"
-SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.full_name = ".ftcfg.scene_function_cfg.rank_linenames"
-SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.number = 11
-SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.index = 10
-SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.label = 3
-SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.has_default_value = false
-SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.default_value = {}
-SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.type = 5
-SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD.cpp_type = 1
-
-SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.name = "close_opens"
-SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.full_name = ".ftcfg.scene_function_cfg.close_opens"
-SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.number = 12
-SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.index = 11
-SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.label = 3
-SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.has_default_value = false
-SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.default_value = {}
-SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
-SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.type = 14
-SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD.cpp_type = 8
-
-SCENE_FUNCTION_CFG.name = "scene_function_cfg"
-SCENE_FUNCTION_CFG.full_name = ".ftcfg.scene_function_cfg"
-SCENE_FUNCTION_CFG.nested_types = {}
-SCENE_FUNCTION_CFG.enum_types = {}
-SCENE_FUNCTION_CFG.fields = {SCENE_FUNCTION_CFG_ID_FIELD, SCENE_FUNCTION_CFG_OPEN_FUNCTIONS_FIELD, SCENE_FUNCTION_CFG_OPEN_PARAS_FIELD, SCENE_FUNCTION_CFG_CLOSE_FUNCTIONS_FIELD, SCENE_FUNCTION_CFG_LEAVE_FUNCTIONS_FIELD, SCENE_FUNCTION_CFG_LIMIT_FUNCTIONS_FIELD, SCENE_FUNCTION_CFG_SLIMIT_FUNCTIONS_FIELD, SCENE_FUNCTION_CFG_BACK_SCENE_FIELD, SCENE_FUNCTION_CFG_RANK_IDS_FIELD, SCENE_FUNCTION_CFG_RANK_TYPE_FIELD, SCENE_FUNCTION_CFG_RANK_LINENAMES_FIELD, SCENE_FUNCTION_CFG_CLOSE_OPENS_FIELD}
-SCENE_FUNCTION_CFG.is_extendable = false
-SCENE_FUNCTION_CFG.extensions = {}
-SCENE_FUNCTION_CFGS_ITEMS_FIELD.name = "items"
-SCENE_FUNCTION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.scene_function_cfgs.items"
-SCENE_FUNCTION_CFGS_ITEMS_FIELD.number = 1
-SCENE_FUNCTION_CFGS_ITEMS_FIELD.index = 0
-SCENE_FUNCTION_CFGS_ITEMS_FIELD.label = 3
-SCENE_FUNCTION_CFGS_ITEMS_FIELD.has_default_value = false
-SCENE_FUNCTION_CFGS_ITEMS_FIELD.default_value = {}
-SCENE_FUNCTION_CFGS_ITEMS_FIELD.message_type = SCENE_FUNCTION_CFG
-SCENE_FUNCTION_CFGS_ITEMS_FIELD.type = 11
-SCENE_FUNCTION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SCENE_FUNCTION_CFGS.name = "scene_function_cfgs"
-SCENE_FUNCTION_CFGS.full_name = ".ftcfg.scene_function_cfgs"
-SCENE_FUNCTION_CFGS.nested_types = {}
-SCENE_FUNCTION_CFGS.enum_types = {}
-SCENE_FUNCTION_CFGS.fields = {SCENE_FUNCTION_CFGS_ITEMS_FIELD}
-SCENE_FUNCTION_CFGS.is_extendable = false
-SCENE_FUNCTION_CFGS.extensions = {}
-SCENE_AREA_CFG_AREA_ID_FIELD.name = "area_id"
-SCENE_AREA_CFG_AREA_ID_FIELD.full_name = ".ftcfg.scene_area_cfg.area_id"
-SCENE_AREA_CFG_AREA_ID_FIELD.number = 1
-SCENE_AREA_CFG_AREA_ID_FIELD.index = 0
-SCENE_AREA_CFG_AREA_ID_FIELD.label = 2
-SCENE_AREA_CFG_AREA_ID_FIELD.has_default_value = false
-SCENE_AREA_CFG_AREA_ID_FIELD.default_value = 0
-SCENE_AREA_CFG_AREA_ID_FIELD.type = 5
-SCENE_AREA_CFG_AREA_ID_FIELD.cpp_type = 1
-
-SCENE_AREA_CFG_MAP_ID_FIELD.name = "map_id"
-SCENE_AREA_CFG_MAP_ID_FIELD.full_name = ".ftcfg.scene_area_cfg.map_id"
-SCENE_AREA_CFG_MAP_ID_FIELD.number = 2
-SCENE_AREA_CFG_MAP_ID_FIELD.index = 1
-SCENE_AREA_CFG_MAP_ID_FIELD.label = 2
-SCENE_AREA_CFG_MAP_ID_FIELD.has_default_value = false
-SCENE_AREA_CFG_MAP_ID_FIELD.default_value = 0
-SCENE_AREA_CFG_MAP_ID_FIELD.type = 5
-SCENE_AREA_CFG_MAP_ID_FIELD.cpp_type = 1
-
-SCENE_AREA_CFG_AREA_TYPE_FIELD.name = "area_type"
-SCENE_AREA_CFG_AREA_TYPE_FIELD.full_name = ".ftcfg.scene_area_cfg.area_type"
-SCENE_AREA_CFG_AREA_TYPE_FIELD.number = 3
-SCENE_AREA_CFG_AREA_TYPE_FIELD.index = 2
-SCENE_AREA_CFG_AREA_TYPE_FIELD.label = 2
-SCENE_AREA_CFG_AREA_TYPE_FIELD.has_default_value = false
-SCENE_AREA_CFG_AREA_TYPE_FIELD.default_value = nil
-SCENE_AREA_CFG_AREA_TYPE_FIELD.enum_type = config_predefine_pb.EAREATRIGGERTYPE
-SCENE_AREA_CFG_AREA_TYPE_FIELD.type = 14
-SCENE_AREA_CFG_AREA_TYPE_FIELD.cpp_type = 8
-
-SCENE_AREA_CFG_POS_X_FIELD.name = "pos_x"
-SCENE_AREA_CFG_POS_X_FIELD.full_name = ".ftcfg.scene_area_cfg.pos_x"
-SCENE_AREA_CFG_POS_X_FIELD.number = 4
-SCENE_AREA_CFG_POS_X_FIELD.index = 3
-SCENE_AREA_CFG_POS_X_FIELD.label = 2
-SCENE_AREA_CFG_POS_X_FIELD.has_default_value = false
-SCENE_AREA_CFG_POS_X_FIELD.default_value = 0.0
-SCENE_AREA_CFG_POS_X_FIELD.type = 2
-SCENE_AREA_CFG_POS_X_FIELD.cpp_type = 6
-
-SCENE_AREA_CFG_POS_Y_FIELD.name = "pos_y"
-SCENE_AREA_CFG_POS_Y_FIELD.full_name = ".ftcfg.scene_area_cfg.pos_y"
-SCENE_AREA_CFG_POS_Y_FIELD.number = 5
-SCENE_AREA_CFG_POS_Y_FIELD.index = 4
-SCENE_AREA_CFG_POS_Y_FIELD.label = 2
-SCENE_AREA_CFG_POS_Y_FIELD.has_default_value = false
-SCENE_AREA_CFG_POS_Y_FIELD.default_value = 0.0
-SCENE_AREA_CFG_POS_Y_FIELD.type = 2
-SCENE_AREA_CFG_POS_Y_FIELD.cpp_type = 6
-
-SCENE_AREA_CFG_RADIUS_FIELD.name = "radius"
-SCENE_AREA_CFG_RADIUS_FIELD.full_name = ".ftcfg.scene_area_cfg.radius"
-SCENE_AREA_CFG_RADIUS_FIELD.number = 6
-SCENE_AREA_CFG_RADIUS_FIELD.index = 5
-SCENE_AREA_CFG_RADIUS_FIELD.label = 2
-SCENE_AREA_CFG_RADIUS_FIELD.has_default_value = false
-SCENE_AREA_CFG_RADIUS_FIELD.default_value = 0.0
-SCENE_AREA_CFG_RADIUS_FIELD.type = 2
-SCENE_AREA_CFG_RADIUS_FIELD.cpp_type = 6
-
-SCENE_AREA_CFG_WIDTH_FIELD.name = "width"
-SCENE_AREA_CFG_WIDTH_FIELD.full_name = ".ftcfg.scene_area_cfg.width"
-SCENE_AREA_CFG_WIDTH_FIELD.number = 7
-SCENE_AREA_CFG_WIDTH_FIELD.index = 6
-SCENE_AREA_CFG_WIDTH_FIELD.label = 2
-SCENE_AREA_CFG_WIDTH_FIELD.has_default_value = false
-SCENE_AREA_CFG_WIDTH_FIELD.default_value = 0.0
-SCENE_AREA_CFG_WIDTH_FIELD.type = 2
-SCENE_AREA_CFG_WIDTH_FIELD.cpp_type = 6
-
-SCENE_AREA_CFG_HEIGHT_FIELD.name = "height"
-SCENE_AREA_CFG_HEIGHT_FIELD.full_name = ".ftcfg.scene_area_cfg.height"
-SCENE_AREA_CFG_HEIGHT_FIELD.number = 8
-SCENE_AREA_CFG_HEIGHT_FIELD.index = 7
-SCENE_AREA_CFG_HEIGHT_FIELD.label = 2
-SCENE_AREA_CFG_HEIGHT_FIELD.has_default_value = false
-SCENE_AREA_CFG_HEIGHT_FIELD.default_value = 0.0
-SCENE_AREA_CFG_HEIGHT_FIELD.type = 2
-SCENE_AREA_CFG_HEIGHT_FIELD.cpp_type = 6
-
-SCENE_AREA_CFG_ACTION_FIELD.name = "action"
-SCENE_AREA_CFG_ACTION_FIELD.full_name = ".ftcfg.scene_area_cfg.action"
-SCENE_AREA_CFG_ACTION_FIELD.number = 9
-SCENE_AREA_CFG_ACTION_FIELD.index = 8
-SCENE_AREA_CFG_ACTION_FIELD.label = 2
-SCENE_AREA_CFG_ACTION_FIELD.has_default_value = false
-SCENE_AREA_CFG_ACTION_FIELD.default_value = nil
-SCENE_AREA_CFG_ACTION_FIELD.enum_type = config_predefine_pb.ETRIGGERACTIONTYPE
-SCENE_AREA_CFG_ACTION_FIELD.type = 14
-SCENE_AREA_CFG_ACTION_FIELD.cpp_type = 8
-
-SCENE_AREA_CFG_PARAM1_FIELD.name = "param1"
-SCENE_AREA_CFG_PARAM1_FIELD.full_name = ".ftcfg.scene_area_cfg.param1"
-SCENE_AREA_CFG_PARAM1_FIELD.number = 10
-SCENE_AREA_CFG_PARAM1_FIELD.index = 9
-SCENE_AREA_CFG_PARAM1_FIELD.label = 2
-SCENE_AREA_CFG_PARAM1_FIELD.has_default_value = false
-SCENE_AREA_CFG_PARAM1_FIELD.default_value = 0
-SCENE_AREA_CFG_PARAM1_FIELD.type = 5
-SCENE_AREA_CFG_PARAM1_FIELD.cpp_type = 1
-
-SCENE_AREA_CFG_PARAM2_FIELD.name = "param2"
-SCENE_AREA_CFG_PARAM2_FIELD.full_name = ".ftcfg.scene_area_cfg.param2"
-SCENE_AREA_CFG_PARAM2_FIELD.number = 11
-SCENE_AREA_CFG_PARAM2_FIELD.index = 10
-SCENE_AREA_CFG_PARAM2_FIELD.label = 2
-SCENE_AREA_CFG_PARAM2_FIELD.has_default_value = false
-SCENE_AREA_CFG_PARAM2_FIELD.default_value = 0
-SCENE_AREA_CFG_PARAM2_FIELD.type = 5
-SCENE_AREA_CFG_PARAM2_FIELD.cpp_type = 1
-
-SCENE_AREA_CFG.name = "scene_area_cfg"
-SCENE_AREA_CFG.full_name = ".ftcfg.scene_area_cfg"
-SCENE_AREA_CFG.nested_types = {}
-SCENE_AREA_CFG.enum_types = {}
-SCENE_AREA_CFG.fields = {SCENE_AREA_CFG_AREA_ID_FIELD, SCENE_AREA_CFG_MAP_ID_FIELD, SCENE_AREA_CFG_AREA_TYPE_FIELD, SCENE_AREA_CFG_POS_X_FIELD, SCENE_AREA_CFG_POS_Y_FIELD, SCENE_AREA_CFG_RADIUS_FIELD, SCENE_AREA_CFG_WIDTH_FIELD, SCENE_AREA_CFG_HEIGHT_FIELD, SCENE_AREA_CFG_ACTION_FIELD, SCENE_AREA_CFG_PARAM1_FIELD, SCENE_AREA_CFG_PARAM2_FIELD}
-SCENE_AREA_CFG.is_extendable = false
-SCENE_AREA_CFG.extensions = {}
-SCENE_AREA_CFGS_ITEMS_FIELD.name = "items"
-SCENE_AREA_CFGS_ITEMS_FIELD.full_name = ".ftcfg.scene_area_cfgs.items"
-SCENE_AREA_CFGS_ITEMS_FIELD.number = 1
-SCENE_AREA_CFGS_ITEMS_FIELD.index = 0
-SCENE_AREA_CFGS_ITEMS_FIELD.label = 3
-SCENE_AREA_CFGS_ITEMS_FIELD.has_default_value = false
-SCENE_AREA_CFGS_ITEMS_FIELD.default_value = {}
-SCENE_AREA_CFGS_ITEMS_FIELD.message_type = SCENE_AREA_CFG
-SCENE_AREA_CFGS_ITEMS_FIELD.type = 11
-SCENE_AREA_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SCENE_AREA_CFGS.name = "scene_area_cfgs"
-SCENE_AREA_CFGS.full_name = ".ftcfg.scene_area_cfgs"
-SCENE_AREA_CFGS.nested_types = {}
-SCENE_AREA_CFGS.enum_types = {}
-SCENE_AREA_CFGS.fields = {SCENE_AREA_CFGS_ITEMS_FIELD}
-SCENE_AREA_CFGS.is_extendable = false
-SCENE_AREA_CFGS.extensions = {}
-CLIENT_TRIGGER_CFG_ID_FIELD.name = "id"
-CLIENT_TRIGGER_CFG_ID_FIELD.full_name = ".ftcfg.client_trigger_cfg.id"
-CLIENT_TRIGGER_CFG_ID_FIELD.number = 1
-CLIENT_TRIGGER_CFG_ID_FIELD.index = 0
-CLIENT_TRIGGER_CFG_ID_FIELD.label = 2
-CLIENT_TRIGGER_CFG_ID_FIELD.has_default_value = false
-CLIENT_TRIGGER_CFG_ID_FIELD.default_value = 0
-CLIENT_TRIGGER_CFG_ID_FIELD.type = 5
-CLIENT_TRIGGER_CFG_ID_FIELD.cpp_type = 1
-
-CLIENT_TRIGGER_CFG_MAP_ID_FIELD.name = "map_id"
-CLIENT_TRIGGER_CFG_MAP_ID_FIELD.full_name = ".ftcfg.client_trigger_cfg.map_id"
-CLIENT_TRIGGER_CFG_MAP_ID_FIELD.number = 2
-CLIENT_TRIGGER_CFG_MAP_ID_FIELD.index = 1
-CLIENT_TRIGGER_CFG_MAP_ID_FIELD.label = 2
-CLIENT_TRIGGER_CFG_MAP_ID_FIELD.has_default_value = false
-CLIENT_TRIGGER_CFG_MAP_ID_FIELD.default_value = 0
-CLIENT_TRIGGER_CFG_MAP_ID_FIELD.type = 5
-CLIENT_TRIGGER_CFG_MAP_ID_FIELD.cpp_type = 1
-
-CLIENT_TRIGGER_CFG_EVENTS_FIELD.name = "events"
-CLIENT_TRIGGER_CFG_EVENTS_FIELD.full_name = ".ftcfg.client_trigger_cfg.events"
-CLIENT_TRIGGER_CFG_EVENTS_FIELD.number = 3
-CLIENT_TRIGGER_CFG_EVENTS_FIELD.index = 2
-CLIENT_TRIGGER_CFG_EVENTS_FIELD.label = 3
-CLIENT_TRIGGER_CFG_EVENTS_FIELD.has_default_value = false
-CLIENT_TRIGGER_CFG_EVENTS_FIELD.default_value = {}
-CLIENT_TRIGGER_CFG_EVENTS_FIELD.type = 5
-CLIENT_TRIGGER_CFG_EVENTS_FIELD.cpp_type = 1
-
-CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.name = "conditions"
-CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.full_name = ".ftcfg.client_trigger_cfg.conditions"
-CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.number = 4
-CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.index = 3
-CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.label = 3
-CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.has_default_value = false
-CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.default_value = {}
-CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.type = 5
-CLIENT_TRIGGER_CFG_CONDITIONS_FIELD.cpp_type = 1
-
-CLIENT_TRIGGER_CFG_ACTIONS_FIELD.name = "actions"
-CLIENT_TRIGGER_CFG_ACTIONS_FIELD.full_name = ".ftcfg.client_trigger_cfg.actions"
-CLIENT_TRIGGER_CFG_ACTIONS_FIELD.number = 5
-CLIENT_TRIGGER_CFG_ACTIONS_FIELD.index = 4
-CLIENT_TRIGGER_CFG_ACTIONS_FIELD.label = 3
-CLIENT_TRIGGER_CFG_ACTIONS_FIELD.has_default_value = false
-CLIENT_TRIGGER_CFG_ACTIONS_FIELD.default_value = {}
-CLIENT_TRIGGER_CFG_ACTIONS_FIELD.type = 5
-CLIENT_TRIGGER_CFG_ACTIONS_FIELD.cpp_type = 1
-
-CLIENT_TRIGGER_CFG_OPENED_FIELD.name = "opened"
-CLIENT_TRIGGER_CFG_OPENED_FIELD.full_name = ".ftcfg.client_trigger_cfg.opened"
-CLIENT_TRIGGER_CFG_OPENED_FIELD.number = 6
-CLIENT_TRIGGER_CFG_OPENED_FIELD.index = 5
-CLIENT_TRIGGER_CFG_OPENED_FIELD.label = 2
-CLIENT_TRIGGER_CFG_OPENED_FIELD.has_default_value = false
-CLIENT_TRIGGER_CFG_OPENED_FIELD.default_value = 0
-CLIENT_TRIGGER_CFG_OPENED_FIELD.type = 5
-CLIENT_TRIGGER_CFG_OPENED_FIELD.cpp_type = 1
-
-CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.name = "canCycleTriggle"
-CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.full_name = ".ftcfg.client_trigger_cfg.canCycleTriggle"
-CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.number = 7
-CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.index = 6
-CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.label = 2
-CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.has_default_value = false
-CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.default_value = 0
-CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.type = 5
-CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD.cpp_type = 1
-
-CLIENT_TRIGGER_CFG.name = "client_trigger_cfg"
-CLIENT_TRIGGER_CFG.full_name = ".ftcfg.client_trigger_cfg"
-CLIENT_TRIGGER_CFG.nested_types = {}
-CLIENT_TRIGGER_CFG.enum_types = {}
-CLIENT_TRIGGER_CFG.fields = {CLIENT_TRIGGER_CFG_ID_FIELD, CLIENT_TRIGGER_CFG_MAP_ID_FIELD, CLIENT_TRIGGER_CFG_EVENTS_FIELD, CLIENT_TRIGGER_CFG_CONDITIONS_FIELD, CLIENT_TRIGGER_CFG_ACTIONS_FIELD, CLIENT_TRIGGER_CFG_OPENED_FIELD, CLIENT_TRIGGER_CFG_CANCYCLETRIGGLE_FIELD}
-CLIENT_TRIGGER_CFG.is_extendable = false
-CLIENT_TRIGGER_CFG.extensions = {}
-CLIENT_TRIGGER_CFGS_ITEMS_FIELD.name = "items"
-CLIENT_TRIGGER_CFGS_ITEMS_FIELD.full_name = ".ftcfg.client_trigger_cfgs.items"
-CLIENT_TRIGGER_CFGS_ITEMS_FIELD.number = 1
-CLIENT_TRIGGER_CFGS_ITEMS_FIELD.index = 0
-CLIENT_TRIGGER_CFGS_ITEMS_FIELD.label = 3
-CLIENT_TRIGGER_CFGS_ITEMS_FIELD.has_default_value = false
-CLIENT_TRIGGER_CFGS_ITEMS_FIELD.default_value = {}
-CLIENT_TRIGGER_CFGS_ITEMS_FIELD.message_type = CLIENT_TRIGGER_CFG
-CLIENT_TRIGGER_CFGS_ITEMS_FIELD.type = 11
-CLIENT_TRIGGER_CFGS_ITEMS_FIELD.cpp_type = 10
-
-CLIENT_TRIGGER_CFGS.name = "client_trigger_cfgs"
-CLIENT_TRIGGER_CFGS.full_name = ".ftcfg.client_trigger_cfgs"
-CLIENT_TRIGGER_CFGS.nested_types = {}
-CLIENT_TRIGGER_CFGS.enum_types = {}
-CLIENT_TRIGGER_CFGS.fields = {CLIENT_TRIGGER_CFGS_ITEMS_FIELD}
-CLIENT_TRIGGER_CFGS.is_extendable = false
-CLIENT_TRIGGER_CFGS.extensions = {}
-CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.name = "event_id"
-CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.event_id"
-CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.number = 1
-CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.index = 0
-CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.label = 2
-CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.has_default_value = false
-CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.default_value = 0
-CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.type = 5
-CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD.cpp_type = 1
-
-CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.name = "type"
-CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.type"
-CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.number = 2
-CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.index = 1
-CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.label = 2
-CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.has_default_value = false
-CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.default_value = nil
-CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ECLIENTTRIGGEREVENTTYPE
-CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.type = 14
-CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD.cpp_type = 8
-
-CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.name = "param1"
-CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param1"
-CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.number = 3
-CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.index = 2
-CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.label = 2
-CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.has_default_value = false
-CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.default_value = ""
-CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.type = 9
-CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.name = "param2"
-CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param2"
-CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.number = 4
-CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.index = 3
-CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.label = 2
-CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.has_default_value = false
-CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.default_value = ""
-CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.type = 9
-CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.name = "param3"
-CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param3"
-CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.number = 5
-CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.index = 4
-CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.label = 2
-CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.has_default_value = false
-CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.default_value = ""
-CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.type = 9
-CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.name = "param4"
-CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param4"
-CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.number = 6
-CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.index = 5
-CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.label = 2
-CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.has_default_value = false
-CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.default_value = ""
-CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.type = 9
-CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.name = "param5"
-CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param5"
-CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.number = 7
-CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.index = 6
-CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.label = 2
-CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.has_default_value = false
-CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.default_value = ""
-CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.type = 9
-CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.name = "param6"
-CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param6"
-CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.number = 8
-CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.index = 7
-CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.label = 2
-CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.has_default_value = false
-CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.default_value = ""
-CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.type = 9
-CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.name = "param7"
-CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param7"
-CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.number = 9
-CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.index = 8
-CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.label = 2
-CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.has_default_value = false
-CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.default_value = ""
-CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.type = 9
-CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.name = "param8"
-CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param8"
-CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.number = 10
-CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.index = 9
-CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.label = 2
-CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.has_default_value = false
-CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.default_value = ""
-CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.type = 9
-CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.name = "param9"
-CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param9"
-CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.number = 11
-CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.index = 10
-CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.label = 2
-CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.has_default_value = false
-CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.default_value = ""
-CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.type = 9
-CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.name = "param10"
-CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.full_name = ".ftcfg.client_trigger_event_cfg.param10"
-CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.number = 12
-CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.index = 11
-CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.label = 2
-CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.has_default_value = false
-CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.default_value = ""
-CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.type = 9
-CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_EVENT_CFG.name = "client_trigger_event_cfg"
-CLIENT_TRIGGER_EVENT_CFG.full_name = ".ftcfg.client_trigger_event_cfg"
-CLIENT_TRIGGER_EVENT_CFG.nested_types = {}
-CLIENT_TRIGGER_EVENT_CFG.enum_types = {}
-CLIENT_TRIGGER_EVENT_CFG.fields = {CLIENT_TRIGGER_EVENT_CFG_EVENT_ID_FIELD, CLIENT_TRIGGER_EVENT_CFG_TYPE_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM1_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM2_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM3_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM4_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM5_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM6_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM7_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM8_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM9_FIELD, CLIENT_TRIGGER_EVENT_CFG_PARAM10_FIELD}
-CLIENT_TRIGGER_EVENT_CFG.is_extendable = false
-CLIENT_TRIGGER_EVENT_CFG.extensions = {}
-CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.name = "items"
-CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.client_trigger_event_cfgs.items"
-CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.number = 1
-CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.index = 0
-CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.label = 3
-CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.has_default_value = false
-CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.default_value = {}
-CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.message_type = CLIENT_TRIGGER_EVENT_CFG
-CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.type = 11
-CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD.cpp_type = 10
-
-CLIENT_TRIGGER_EVENT_CFGS.name = "client_trigger_event_cfgs"
-CLIENT_TRIGGER_EVENT_CFGS.full_name = ".ftcfg.client_trigger_event_cfgs"
-CLIENT_TRIGGER_EVENT_CFGS.nested_types = {}
-CLIENT_TRIGGER_EVENT_CFGS.enum_types = {}
-CLIENT_TRIGGER_EVENT_CFGS.fields = {CLIENT_TRIGGER_EVENT_CFGS_ITEMS_FIELD}
-CLIENT_TRIGGER_EVENT_CFGS.is_extendable = false
-CLIENT_TRIGGER_EVENT_CFGS.extensions = {}
-CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.name = "condition_id"
-CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.condition_id"
-CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.number = 1
-CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.index = 0
-CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.label = 2
-CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.has_default_value = false
-CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.default_value = 0
-CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.type = 5
-CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.cpp_type = 1
-
-CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.name = "type"
-CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.type"
-CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.number = 2
-CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.index = 1
-CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.label = 2
-CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.has_default_value = false
-CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.default_value = nil
-CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ECLIENTTRIGGERCONDITIONTYPE
-CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.type = 14
-CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD.cpp_type = 8
-
-CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.name = "param1"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param1"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.number = 3
-CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.index = 2
-CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.label = 2
-CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.has_default_value = false
-CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.default_value = ""
-CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.type = 9
-CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.name = "param2"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param2"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.number = 4
-CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.index = 3
-CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.label = 2
-CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.has_default_value = false
-CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.default_value = ""
-CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.type = 9
-CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.name = "param3"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param3"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.number = 5
-CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.index = 4
-CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.label = 2
-CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.has_default_value = false
-CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.default_value = ""
-CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.type = 9
-CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.name = "param4"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param4"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.number = 6
-CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.index = 5
-CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.label = 2
-CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.has_default_value = false
-CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.default_value = ""
-CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.type = 9
-CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.name = "param5"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param5"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.number = 7
-CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.index = 6
-CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.label = 2
-CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.has_default_value = false
-CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.default_value = ""
-CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.type = 9
-CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.name = "param6"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param6"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.number = 8
-CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.index = 7
-CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.label = 2
-CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.has_default_value = false
-CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.default_value = ""
-CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.type = 9
-CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.name = "param7"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param7"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.number = 9
-CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.index = 8
-CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.label = 2
-CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.has_default_value = false
-CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.default_value = ""
-CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.type = 9
-CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.name = "param8"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param8"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.number = 10
-CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.index = 9
-CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.label = 2
-CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.has_default_value = false
-CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.default_value = ""
-CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.type = 9
-CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.name = "param9"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param9"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.number = 11
-CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.index = 10
-CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.label = 2
-CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.has_default_value = false
-CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.default_value = ""
-CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.type = 9
-CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.name = "param10"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.full_name = ".ftcfg.client_trigger_condition_cfg.param10"
-CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.number = 12
-CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.index = 11
-CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.label = 2
-CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.has_default_value = false
-CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.default_value = ""
-CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.type = 9
-CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_CONDITION_CFG.name = "client_trigger_condition_cfg"
-CLIENT_TRIGGER_CONDITION_CFG.full_name = ".ftcfg.client_trigger_condition_cfg"
-CLIENT_TRIGGER_CONDITION_CFG.nested_types = {}
-CLIENT_TRIGGER_CONDITION_CFG.enum_types = {}
-CLIENT_TRIGGER_CONDITION_CFG.fields = {CLIENT_TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD, CLIENT_TRIGGER_CONDITION_CFG_TYPE_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM1_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM2_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM3_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM4_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM5_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM6_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM7_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM8_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM9_FIELD, CLIENT_TRIGGER_CONDITION_CFG_PARAM10_FIELD}
-CLIENT_TRIGGER_CONDITION_CFG.is_extendable = false
-CLIENT_TRIGGER_CONDITION_CFG.extensions = {}
-CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.name = "items"
-CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.client_trigger_condition_cfgs.items"
-CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.number = 1
-CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.index = 0
-CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.label = 3
-CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.has_default_value = false
-CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.default_value = {}
-CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.message_type = CLIENT_TRIGGER_CONDITION_CFG
-CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.type = 11
-CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-CLIENT_TRIGGER_CONDITION_CFGS.name = "client_trigger_condition_cfgs"
-CLIENT_TRIGGER_CONDITION_CFGS.full_name = ".ftcfg.client_trigger_condition_cfgs"
-CLIENT_TRIGGER_CONDITION_CFGS.nested_types = {}
-CLIENT_TRIGGER_CONDITION_CFGS.enum_types = {}
-CLIENT_TRIGGER_CONDITION_CFGS.fields = {CLIENT_TRIGGER_CONDITION_CFGS_ITEMS_FIELD}
-CLIENT_TRIGGER_CONDITION_CFGS.is_extendable = false
-CLIENT_TRIGGER_CONDITION_CFGS.extensions = {}
-CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.name = "action_id"
-CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.action_id"
-CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.number = 1
-CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.index = 0
-CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.label = 2
-CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.has_default_value = false
-CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.default_value = 0
-CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.type = 5
-CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD.cpp_type = 1
-
-CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.name = "type"
-CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.type"
-CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.number = 2
-CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.index = 1
-CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.label = 2
-CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.has_default_value = false
-CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.default_value = nil
-CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ECLIENTTRIGGERACTIONTYPE
-CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.type = 14
-CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD.cpp_type = 8
-
-CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.name = "param1"
-CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param1"
-CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.number = 3
-CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.index = 2
-CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.label = 2
-CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.has_default_value = false
-CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.default_value = ""
-CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.type = 9
-CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.name = "param2"
-CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param2"
-CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.number = 4
-CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.index = 3
-CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.label = 2
-CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.has_default_value = false
-CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.default_value = ""
-CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.type = 9
-CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.name = "param3"
-CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param3"
-CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.number = 5
-CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.index = 4
-CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.label = 2
-CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.has_default_value = false
-CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.default_value = ""
-CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.type = 9
-CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.name = "param4"
-CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param4"
-CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.number = 6
-CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.index = 5
-CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.label = 2
-CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.has_default_value = false
-CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.default_value = ""
-CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.type = 9
-CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.name = "param5"
-CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param5"
-CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.number = 7
-CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.index = 6
-CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.label = 2
-CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.has_default_value = false
-CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.default_value = ""
-CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.type = 9
-CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.name = "param6"
-CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param6"
-CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.number = 8
-CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.index = 7
-CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.label = 2
-CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.has_default_value = false
-CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.default_value = ""
-CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.type = 9
-CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.name = "param7"
-CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param7"
-CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.number = 9
-CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.index = 8
-CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.label = 2
-CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.has_default_value = false
-CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.default_value = ""
-CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.type = 9
-CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.name = "param8"
-CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param8"
-CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.number = 10
-CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.index = 9
-CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.label = 2
-CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.has_default_value = false
-CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.default_value = ""
-CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.type = 9
-CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.name = "param9"
-CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param9"
-CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.number = 11
-CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.index = 10
-CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.label = 2
-CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.has_default_value = false
-CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.default_value = ""
-CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.type = 9
-CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.name = "param10"
-CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.full_name = ".ftcfg.client_trigger_action_cfg.param10"
-CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.number = 12
-CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.index = 11
-CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.label = 2
-CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.has_default_value = false
-CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.default_value = ""
-CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.type = 9
-CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_ACTION_CFG.name = "client_trigger_action_cfg"
-CLIENT_TRIGGER_ACTION_CFG.full_name = ".ftcfg.client_trigger_action_cfg"
-CLIENT_TRIGGER_ACTION_CFG.nested_types = {}
-CLIENT_TRIGGER_ACTION_CFG.enum_types = {}
-CLIENT_TRIGGER_ACTION_CFG.fields = {CLIENT_TRIGGER_ACTION_CFG_ACTION_ID_FIELD, CLIENT_TRIGGER_ACTION_CFG_TYPE_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM1_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM2_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM3_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM4_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM5_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM6_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM7_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM8_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM9_FIELD, CLIENT_TRIGGER_ACTION_CFG_PARAM10_FIELD}
-CLIENT_TRIGGER_ACTION_CFG.is_extendable = false
-CLIENT_TRIGGER_ACTION_CFG.extensions = {}
-CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.name = "items"
-CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.client_trigger_action_cfgs.items"
-CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.number = 1
-CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.index = 0
-CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.label = 3
-CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.has_default_value = false
-CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.default_value = {}
-CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.message_type = CLIENT_TRIGGER_ACTION_CFG
-CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.type = 11
-CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-CLIENT_TRIGGER_ACTION_CFGS.name = "client_trigger_action_cfgs"
-CLIENT_TRIGGER_ACTION_CFGS.full_name = ".ftcfg.client_trigger_action_cfgs"
-CLIENT_TRIGGER_ACTION_CFGS.nested_types = {}
-CLIENT_TRIGGER_ACTION_CFGS.enum_types = {}
-CLIENT_TRIGGER_ACTION_CFGS.fields = {CLIENT_TRIGGER_ACTION_CFGS_ITEMS_FIELD}
-CLIENT_TRIGGER_ACTION_CFGS.is_extendable = false
-CLIENT_TRIGGER_ACTION_CFGS.extensions = {}
-CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.name = "name"
-CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.name"
-CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.number = 1
-CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.index = 0
-CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.label = 2
-CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.has_default_value = false
-CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.default_value = ""
-CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.type = 9
-CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.name = "map_id"
-CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.map_id"
-CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.number = 2
-CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.index = 1
-CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.label = 2
-CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.has_default_value = false
-CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.default_value = 0
-CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.type = 5
-CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.cpp_type = 1
-
-CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.name = "type"
-CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.type"
-CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.number = 3
-CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.index = 2
-CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.label = 2
-CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.has_default_value = false
-CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.default_value = nil
-CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ECLIENTTRIGGERVARIABLETYPE
-CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.type = 14
-CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD.cpp_type = 8
-
-CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.name = "is_vec"
-CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.is_vec"
-CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.number = 4
-CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.index = 3
-CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.label = 2
-CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.has_default_value = false
-CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.default_value = 0
-CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.type = 13
-CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.cpp_type = 3
-
-CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.name = "vec_size"
-CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.vec_size"
-CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.number = 5
-CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.index = 4
-CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.label = 2
-CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.has_default_value = false
-CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.default_value = 0
-CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.type = 13
-CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.cpp_type = 3
-
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.name = "param1"
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.param1"
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.number = 6
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.index = 5
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.label = 2
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.has_default_value = false
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.default_value = ""
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.type = 9
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.name = "param2"
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.param2"
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.number = 7
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.index = 6
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.label = 2
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.has_default_value = false
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.default_value = ""
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.type = 9
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.name = "param3"
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.param3"
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.number = 8
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.index = 7
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.label = 2
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.has_default_value = false
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.default_value = ""
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.type = 9
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.name = "param4"
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.param4"
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.number = 9
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.index = 8
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.label = 2
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.has_default_value = false
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.default_value = ""
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.type = 9
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.name = "param5"
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.full_name = ".ftcfg.client_trigger_variable_cfg.param5"
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.number = 10
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.index = 9
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.label = 2
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.has_default_value = false
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.default_value = ""
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.type = 9
-CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD.cpp_type = 9
-
-CLIENT_TRIGGER_VARIABLE_CFG.name = "client_trigger_variable_cfg"
-CLIENT_TRIGGER_VARIABLE_CFG.full_name = ".ftcfg.client_trigger_variable_cfg"
-CLIENT_TRIGGER_VARIABLE_CFG.nested_types = {}
-CLIENT_TRIGGER_VARIABLE_CFG.enum_types = {}
-CLIENT_TRIGGER_VARIABLE_CFG.fields = {CLIENT_TRIGGER_VARIABLE_CFG_NAME_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_MAP_ID_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_TYPE_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_IS_VEC_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_PARAM1_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_PARAM2_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_PARAM3_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_PARAM4_FIELD, CLIENT_TRIGGER_VARIABLE_CFG_PARAM5_FIELD}
-CLIENT_TRIGGER_VARIABLE_CFG.is_extendable = false
-CLIENT_TRIGGER_VARIABLE_CFG.extensions = {}
-CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.name = "items"
-CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.client_trigger_variable_cfgs.items"
-CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.number = 1
-CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.index = 0
-CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.label = 3
-CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.has_default_value = false
-CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.default_value = {}
-CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.message_type = CLIENT_TRIGGER_VARIABLE_CFG
-CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.type = 11
-CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-CLIENT_TRIGGER_VARIABLE_CFGS.name = "client_trigger_variable_cfgs"
-CLIENT_TRIGGER_VARIABLE_CFGS.full_name = ".ftcfg.client_trigger_variable_cfgs"
-CLIENT_TRIGGER_VARIABLE_CFGS.nested_types = {}
-CLIENT_TRIGGER_VARIABLE_CFGS.enum_types = {}
-CLIENT_TRIGGER_VARIABLE_CFGS.fields = {CLIENT_TRIGGER_VARIABLE_CFGS_ITEMS_FIELD}
-CLIENT_TRIGGER_VARIABLE_CFGS.is_extendable = false
-CLIENT_TRIGGER_VARIABLE_CFGS.extensions = {}
-SCENE_ORGAN_CFG_ID_FIELD.name = "id"
-SCENE_ORGAN_CFG_ID_FIELD.full_name = ".ftcfg.scene_organ_cfg.id"
-SCENE_ORGAN_CFG_ID_FIELD.number = 1
-SCENE_ORGAN_CFG_ID_FIELD.index = 0
-SCENE_ORGAN_CFG_ID_FIELD.label = 2
-SCENE_ORGAN_CFG_ID_FIELD.has_default_value = false
-SCENE_ORGAN_CFG_ID_FIELD.default_value = 0
-SCENE_ORGAN_CFG_ID_FIELD.type = 5
-SCENE_ORGAN_CFG_ID_FIELD.cpp_type = 1
-
-SCENE_ORGAN_CFG_NAME_FIELD.name = "name"
-SCENE_ORGAN_CFG_NAME_FIELD.full_name = ".ftcfg.scene_organ_cfg.name"
-SCENE_ORGAN_CFG_NAME_FIELD.number = 2
-SCENE_ORGAN_CFG_NAME_FIELD.index = 1
-SCENE_ORGAN_CFG_NAME_FIELD.label = 2
-SCENE_ORGAN_CFG_NAME_FIELD.has_default_value = false
-SCENE_ORGAN_CFG_NAME_FIELD.default_value = 0
-SCENE_ORGAN_CFG_NAME_FIELD.type = 5
-SCENE_ORGAN_CFG_NAME_FIELD.cpp_type = 1
-
-SCENE_ORGAN_CFG_MODULE_FIELD.name = "module"
-SCENE_ORGAN_CFG_MODULE_FIELD.full_name = ".ftcfg.scene_organ_cfg.module"
-SCENE_ORGAN_CFG_MODULE_FIELD.number = 3
-SCENE_ORGAN_CFG_MODULE_FIELD.index = 2
-SCENE_ORGAN_CFG_MODULE_FIELD.label = 2
-SCENE_ORGAN_CFG_MODULE_FIELD.has_default_value = false
-SCENE_ORGAN_CFG_MODULE_FIELD.default_value = 0
-SCENE_ORGAN_CFG_MODULE_FIELD.type = 5
-SCENE_ORGAN_CFG_MODULE_FIELD.cpp_type = 1
-
-SCENE_ORGAN_CFG_MAP_ID_FIELD.name = "map_id"
-SCENE_ORGAN_CFG_MAP_ID_FIELD.full_name = ".ftcfg.scene_organ_cfg.map_id"
-SCENE_ORGAN_CFG_MAP_ID_FIELD.number = 4
-SCENE_ORGAN_CFG_MAP_ID_FIELD.index = 3
-SCENE_ORGAN_CFG_MAP_ID_FIELD.label = 2
-SCENE_ORGAN_CFG_MAP_ID_FIELD.has_default_value = false
-SCENE_ORGAN_CFG_MAP_ID_FIELD.default_value = 0
-SCENE_ORGAN_CFG_MAP_ID_FIELD.type = 5
-SCENE_ORGAN_CFG_MAP_ID_FIELD.cpp_type = 1
-
-SCENE_ORGAN_CFG_POS_X_FIELD.name = "pos_x"
-SCENE_ORGAN_CFG_POS_X_FIELD.full_name = ".ftcfg.scene_organ_cfg.pos_x"
-SCENE_ORGAN_CFG_POS_X_FIELD.number = 5
-SCENE_ORGAN_CFG_POS_X_FIELD.index = 4
-SCENE_ORGAN_CFG_POS_X_FIELD.label = 2
-SCENE_ORGAN_CFG_POS_X_FIELD.has_default_value = false
-SCENE_ORGAN_CFG_POS_X_FIELD.default_value = 0.0
-SCENE_ORGAN_CFG_POS_X_FIELD.type = 2
-SCENE_ORGAN_CFG_POS_X_FIELD.cpp_type = 6
-
-SCENE_ORGAN_CFG_POS_Y_FIELD.name = "pos_y"
-SCENE_ORGAN_CFG_POS_Y_FIELD.full_name = ".ftcfg.scene_organ_cfg.pos_y"
-SCENE_ORGAN_CFG_POS_Y_FIELD.number = 6
-SCENE_ORGAN_CFG_POS_Y_FIELD.index = 5
-SCENE_ORGAN_CFG_POS_Y_FIELD.label = 2
-SCENE_ORGAN_CFG_POS_Y_FIELD.has_default_value = false
-SCENE_ORGAN_CFG_POS_Y_FIELD.default_value = 0.0
-SCENE_ORGAN_CFG_POS_Y_FIELD.type = 2
-SCENE_ORGAN_CFG_POS_Y_FIELD.cpp_type = 6
-
-SCENE_ORGAN_CFG_POS_Z_FIELD.name = "pos_z"
-SCENE_ORGAN_CFG_POS_Z_FIELD.full_name = ".ftcfg.scene_organ_cfg.pos_z"
-SCENE_ORGAN_CFG_POS_Z_FIELD.number = 7
-SCENE_ORGAN_CFG_POS_Z_FIELD.index = 6
-SCENE_ORGAN_CFG_POS_Z_FIELD.label = 2
-SCENE_ORGAN_CFG_POS_Z_FIELD.has_default_value = false
-SCENE_ORGAN_CFG_POS_Z_FIELD.default_value = 0.0
-SCENE_ORGAN_CFG_POS_Z_FIELD.type = 2
-SCENE_ORGAN_CFG_POS_Z_FIELD.cpp_type = 6
-
-SCENE_ORGAN_CFG_ORIENTATION_FIELD.name = "orientation"
-SCENE_ORGAN_CFG_ORIENTATION_FIELD.full_name = ".ftcfg.scene_organ_cfg.orientation"
-SCENE_ORGAN_CFG_ORIENTATION_FIELD.number = 8
-SCENE_ORGAN_CFG_ORIENTATION_FIELD.index = 7
-SCENE_ORGAN_CFG_ORIENTATION_FIELD.label = 2
-SCENE_ORGAN_CFG_ORIENTATION_FIELD.has_default_value = false
-SCENE_ORGAN_CFG_ORIENTATION_FIELD.default_value = 0.0
-SCENE_ORGAN_CFG_ORIENTATION_FIELD.type = 2
-SCENE_ORGAN_CFG_ORIENTATION_FIELD.cpp_type = 6
-
-SCENE_ORGAN_CFG_SKILL_ID_FIELD.name = "skill_id"
-SCENE_ORGAN_CFG_SKILL_ID_FIELD.full_name = ".ftcfg.scene_organ_cfg.skill_id"
-SCENE_ORGAN_CFG_SKILL_ID_FIELD.number = 9
-SCENE_ORGAN_CFG_SKILL_ID_FIELD.index = 8
-SCENE_ORGAN_CFG_SKILL_ID_FIELD.label = 2
-SCENE_ORGAN_CFG_SKILL_ID_FIELD.has_default_value = false
-SCENE_ORGAN_CFG_SKILL_ID_FIELD.default_value = 0
-SCENE_ORGAN_CFG_SKILL_ID_FIELD.type = 5
-SCENE_ORGAN_CFG_SKILL_ID_FIELD.cpp_type = 1
-
-SCENE_ORGAN_CFG_ENABLED_FIELD.name = "enabled"
-SCENE_ORGAN_CFG_ENABLED_FIELD.full_name = ".ftcfg.scene_organ_cfg.enabled"
-SCENE_ORGAN_CFG_ENABLED_FIELD.number = 10
-SCENE_ORGAN_CFG_ENABLED_FIELD.index = 9
-SCENE_ORGAN_CFG_ENABLED_FIELD.label = 2
-SCENE_ORGAN_CFG_ENABLED_FIELD.has_default_value = false
-SCENE_ORGAN_CFG_ENABLED_FIELD.default_value = 0
-SCENE_ORGAN_CFG_ENABLED_FIELD.type = 5
-SCENE_ORGAN_CFG_ENABLED_FIELD.cpp_type = 1
-
-SCENE_ORGAN_CFG_SHOW_NAME_FIELD.name = "show_name"
-SCENE_ORGAN_CFG_SHOW_NAME_FIELD.full_name = ".ftcfg.scene_organ_cfg.show_name"
-SCENE_ORGAN_CFG_SHOW_NAME_FIELD.number = 11
-SCENE_ORGAN_CFG_SHOW_NAME_FIELD.index = 10
-SCENE_ORGAN_CFG_SHOW_NAME_FIELD.label = 2
-SCENE_ORGAN_CFG_SHOW_NAME_FIELD.has_default_value = false
-SCENE_ORGAN_CFG_SHOW_NAME_FIELD.default_value = 0
-SCENE_ORGAN_CFG_SHOW_NAME_FIELD.type = 5
-SCENE_ORGAN_CFG_SHOW_NAME_FIELD.cpp_type = 1
-
-SCENE_ORGAN_CFG.name = "scene_organ_cfg"
-SCENE_ORGAN_CFG.full_name = ".ftcfg.scene_organ_cfg"
-SCENE_ORGAN_CFG.nested_types = {}
-SCENE_ORGAN_CFG.enum_types = {}
-SCENE_ORGAN_CFG.fields = {SCENE_ORGAN_CFG_ID_FIELD, SCENE_ORGAN_CFG_NAME_FIELD, SCENE_ORGAN_CFG_MODULE_FIELD, SCENE_ORGAN_CFG_MAP_ID_FIELD, SCENE_ORGAN_CFG_POS_X_FIELD, SCENE_ORGAN_CFG_POS_Y_FIELD, SCENE_ORGAN_CFG_POS_Z_FIELD, SCENE_ORGAN_CFG_ORIENTATION_FIELD, SCENE_ORGAN_CFG_SKILL_ID_FIELD, SCENE_ORGAN_CFG_ENABLED_FIELD, SCENE_ORGAN_CFG_SHOW_NAME_FIELD}
-SCENE_ORGAN_CFG.is_extendable = false
-SCENE_ORGAN_CFG.extensions = {}
-SCENE_ORGAN_CFGS_ITEMS_FIELD.name = "items"
-SCENE_ORGAN_CFGS_ITEMS_FIELD.full_name = ".ftcfg.scene_organ_cfgs.items"
-SCENE_ORGAN_CFGS_ITEMS_FIELD.number = 1
-SCENE_ORGAN_CFGS_ITEMS_FIELD.index = 0
-SCENE_ORGAN_CFGS_ITEMS_FIELD.label = 3
-SCENE_ORGAN_CFGS_ITEMS_FIELD.has_default_value = false
-SCENE_ORGAN_CFGS_ITEMS_FIELD.default_value = {}
-SCENE_ORGAN_CFGS_ITEMS_FIELD.message_type = SCENE_ORGAN_CFG
-SCENE_ORGAN_CFGS_ITEMS_FIELD.type = 11
-SCENE_ORGAN_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SCENE_ORGAN_CFGS.name = "scene_organ_cfgs"
-SCENE_ORGAN_CFGS.full_name = ".ftcfg.scene_organ_cfgs"
-SCENE_ORGAN_CFGS.nested_types = {}
-SCENE_ORGAN_CFGS.enum_types = {}
-SCENE_ORGAN_CFGS.fields = {SCENE_ORGAN_CFGS_ITEMS_FIELD}
-SCENE_ORGAN_CFGS.is_extendable = false
-SCENE_ORGAN_CFGS.extensions = {}
-MAP_SIGNS_CFG_ID_FIELD.name = "id"
-MAP_SIGNS_CFG_ID_FIELD.full_name = ".ftcfg.map_signs_cfg.id"
-MAP_SIGNS_CFG_ID_FIELD.number = 1
-MAP_SIGNS_CFG_ID_FIELD.index = 0
-MAP_SIGNS_CFG_ID_FIELD.label = 2
-MAP_SIGNS_CFG_ID_FIELD.has_default_value = false
-MAP_SIGNS_CFG_ID_FIELD.default_value = 0
-MAP_SIGNS_CFG_ID_FIELD.type = 5
-MAP_SIGNS_CFG_ID_FIELD.cpp_type = 1
-
-MAP_SIGNS_CFG_NAME_FIELD.name = "name"
-MAP_SIGNS_CFG_NAME_FIELD.full_name = ".ftcfg.map_signs_cfg.name"
-MAP_SIGNS_CFG_NAME_FIELD.number = 2
-MAP_SIGNS_CFG_NAME_FIELD.index = 1
-MAP_SIGNS_CFG_NAME_FIELD.label = 2
-MAP_SIGNS_CFG_NAME_FIELD.has_default_value = false
-MAP_SIGNS_CFG_NAME_FIELD.default_value = 0
-MAP_SIGNS_CFG_NAME_FIELD.type = 5
-MAP_SIGNS_CFG_NAME_FIELD.cpp_type = 1
-
-MAP_SIGNS_CFG_MAP_ID_FIELD.name = "map_id"
-MAP_SIGNS_CFG_MAP_ID_FIELD.full_name = ".ftcfg.map_signs_cfg.map_id"
-MAP_SIGNS_CFG_MAP_ID_FIELD.number = 3
-MAP_SIGNS_CFG_MAP_ID_FIELD.index = 2
-MAP_SIGNS_CFG_MAP_ID_FIELD.label = 2
-MAP_SIGNS_CFG_MAP_ID_FIELD.has_default_value = false
-MAP_SIGNS_CFG_MAP_ID_FIELD.default_value = 0
-MAP_SIGNS_CFG_MAP_ID_FIELD.type = 5
-MAP_SIGNS_CFG_MAP_ID_FIELD.cpp_type = 1
-
-MAP_SIGNS_CFG_TYPE_FIELD.name = "type"
-MAP_SIGNS_CFG_TYPE_FIELD.full_name = ".ftcfg.map_signs_cfg.type"
-MAP_SIGNS_CFG_TYPE_FIELD.number = 4
-MAP_SIGNS_CFG_TYPE_FIELD.index = 3
-MAP_SIGNS_CFG_TYPE_FIELD.label = 2
-MAP_SIGNS_CFG_TYPE_FIELD.has_default_value = false
-MAP_SIGNS_CFG_TYPE_FIELD.default_value = 0
-MAP_SIGNS_CFG_TYPE_FIELD.type = 5
-MAP_SIGNS_CFG_TYPE_FIELD.cpp_type = 1
-
-MAP_SIGNS_CFG_SUB_TYPE_FIELD.name = "sub_type"
-MAP_SIGNS_CFG_SUB_TYPE_FIELD.full_name = ".ftcfg.map_signs_cfg.sub_type"
-MAP_SIGNS_CFG_SUB_TYPE_FIELD.number = 5
-MAP_SIGNS_CFG_SUB_TYPE_FIELD.index = 4
-MAP_SIGNS_CFG_SUB_TYPE_FIELD.label = 2
-MAP_SIGNS_CFG_SUB_TYPE_FIELD.has_default_value = false
-MAP_SIGNS_CFG_SUB_TYPE_FIELD.default_value = nil
-MAP_SIGNS_CFG_SUB_TYPE_FIELD.enum_type = config_predefine_pb.EACTIVETYPE
-MAP_SIGNS_CFG_SUB_TYPE_FIELD.type = 14
-MAP_SIGNS_CFG_SUB_TYPE_FIELD.cpp_type = 8
-
-MAP_SIGNS_CFG_AUTO_ID_FIELD.name = "auto_id"
-MAP_SIGNS_CFG_AUTO_ID_FIELD.full_name = ".ftcfg.map_signs_cfg.auto_id"
-MAP_SIGNS_CFG_AUTO_ID_FIELD.number = 6
-MAP_SIGNS_CFG_AUTO_ID_FIELD.index = 5
-MAP_SIGNS_CFG_AUTO_ID_FIELD.label = 2
-MAP_SIGNS_CFG_AUTO_ID_FIELD.has_default_value = false
-MAP_SIGNS_CFG_AUTO_ID_FIELD.default_value = 0
-MAP_SIGNS_CFG_AUTO_ID_FIELD.type = 5
-MAP_SIGNS_CFG_AUTO_ID_FIELD.cpp_type = 1
-
-MAP_SIGNS_CFG_POS_X_FIELD.name = "pos_x"
-MAP_SIGNS_CFG_POS_X_FIELD.full_name = ".ftcfg.map_signs_cfg.pos_x"
-MAP_SIGNS_CFG_POS_X_FIELD.number = 7
-MAP_SIGNS_CFG_POS_X_FIELD.index = 6
-MAP_SIGNS_CFG_POS_X_FIELD.label = 2
-MAP_SIGNS_CFG_POS_X_FIELD.has_default_value = false
-MAP_SIGNS_CFG_POS_X_FIELD.default_value = 0.0
-MAP_SIGNS_CFG_POS_X_FIELD.type = 2
-MAP_SIGNS_CFG_POS_X_FIELD.cpp_type = 6
-
-MAP_SIGNS_CFG_POS_Y_FIELD.name = "pos_y"
-MAP_SIGNS_CFG_POS_Y_FIELD.full_name = ".ftcfg.map_signs_cfg.pos_y"
-MAP_SIGNS_CFG_POS_Y_FIELD.number = 8
-MAP_SIGNS_CFG_POS_Y_FIELD.index = 7
-MAP_SIGNS_CFG_POS_Y_FIELD.label = 2
-MAP_SIGNS_CFG_POS_Y_FIELD.has_default_value = false
-MAP_SIGNS_CFG_POS_Y_FIELD.default_value = 0.0
-MAP_SIGNS_CFG_POS_Y_FIELD.type = 2
-MAP_SIGNS_CFG_POS_Y_FIELD.cpp_type = 6
-
-MAP_SIGNS_CFG_POS_Z_FIELD.name = "pos_z"
-MAP_SIGNS_CFG_POS_Z_FIELD.full_name = ".ftcfg.map_signs_cfg.pos_z"
-MAP_SIGNS_CFG_POS_Z_FIELD.number = 9
-MAP_SIGNS_CFG_POS_Z_FIELD.index = 8
-MAP_SIGNS_CFG_POS_Z_FIELD.label = 2
-MAP_SIGNS_CFG_POS_Z_FIELD.has_default_value = false
-MAP_SIGNS_CFG_POS_Z_FIELD.default_value = 0.0
-MAP_SIGNS_CFG_POS_Z_FIELD.type = 2
-MAP_SIGNS_CFG_POS_Z_FIELD.cpp_type = 6
-
-MAP_SIGNS_CFG_IS_AUTO_FIELD.name = "is_auto"
-MAP_SIGNS_CFG_IS_AUTO_FIELD.full_name = ".ftcfg.map_signs_cfg.is_auto"
-MAP_SIGNS_CFG_IS_AUTO_FIELD.number = 10
-MAP_SIGNS_CFG_IS_AUTO_FIELD.index = 9
-MAP_SIGNS_CFG_IS_AUTO_FIELD.label = 2
-MAP_SIGNS_CFG_IS_AUTO_FIELD.has_default_value = false
-MAP_SIGNS_CFG_IS_AUTO_FIELD.default_value = 0
-MAP_SIGNS_CFG_IS_AUTO_FIELD.type = 5
-MAP_SIGNS_CFG_IS_AUTO_FIELD.cpp_type = 1
-
-MAP_SIGNS_CFG_IS_SHOW_FIELD.name = "is_show"
-MAP_SIGNS_CFG_IS_SHOW_FIELD.full_name = ".ftcfg.map_signs_cfg.is_show"
-MAP_SIGNS_CFG_IS_SHOW_FIELD.number = 11
-MAP_SIGNS_CFG_IS_SHOW_FIELD.index = 10
-MAP_SIGNS_CFG_IS_SHOW_FIELD.label = 2
-MAP_SIGNS_CFG_IS_SHOW_FIELD.has_default_value = false
-MAP_SIGNS_CFG_IS_SHOW_FIELD.default_value = 0
-MAP_SIGNS_CFG_IS_SHOW_FIELD.type = 5
-MAP_SIGNS_CFG_IS_SHOW_FIELD.cpp_type = 1
-
-MAP_SIGNS_CFG.name = "map_signs_cfg"
-MAP_SIGNS_CFG.full_name = ".ftcfg.map_signs_cfg"
-MAP_SIGNS_CFG.nested_types = {}
-MAP_SIGNS_CFG.enum_types = {}
-MAP_SIGNS_CFG.fields = {MAP_SIGNS_CFG_ID_FIELD, MAP_SIGNS_CFG_NAME_FIELD, MAP_SIGNS_CFG_MAP_ID_FIELD, MAP_SIGNS_CFG_TYPE_FIELD, MAP_SIGNS_CFG_SUB_TYPE_FIELD, MAP_SIGNS_CFG_AUTO_ID_FIELD, MAP_SIGNS_CFG_POS_X_FIELD, MAP_SIGNS_CFG_POS_Y_FIELD, MAP_SIGNS_CFG_POS_Z_FIELD, MAP_SIGNS_CFG_IS_AUTO_FIELD, MAP_SIGNS_CFG_IS_SHOW_FIELD}
-MAP_SIGNS_CFG.is_extendable = false
-MAP_SIGNS_CFG.extensions = {}
-MAP_SIGNS_CFGS_ITEMS_FIELD.name = "items"
-MAP_SIGNS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.map_signs_cfgs.items"
-MAP_SIGNS_CFGS_ITEMS_FIELD.number = 1
-MAP_SIGNS_CFGS_ITEMS_FIELD.index = 0
-MAP_SIGNS_CFGS_ITEMS_FIELD.label = 3
-MAP_SIGNS_CFGS_ITEMS_FIELD.has_default_value = false
-MAP_SIGNS_CFGS_ITEMS_FIELD.default_value = {}
-MAP_SIGNS_CFGS_ITEMS_FIELD.message_type = MAP_SIGNS_CFG
-MAP_SIGNS_CFGS_ITEMS_FIELD.type = 11
-MAP_SIGNS_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MAP_SIGNS_CFGS.name = "map_signs_cfgs"
-MAP_SIGNS_CFGS.full_name = ".ftcfg.map_signs_cfgs"
-MAP_SIGNS_CFGS.nested_types = {}
-MAP_SIGNS_CFGS.enum_types = {}
-MAP_SIGNS_CFGS.fields = {MAP_SIGNS_CFGS_ITEMS_FIELD}
-MAP_SIGNS_CFGS.is_extendable = false
-MAP_SIGNS_CFGS.extensions = {}
-SCENE_TRIGGER_CFG_NAME_FIELD.name = "name"
-SCENE_TRIGGER_CFG_NAME_FIELD.full_name = ".ftcfg.scene_trigger_cfg.name"
-SCENE_TRIGGER_CFG_NAME_FIELD.number = 1
-SCENE_TRIGGER_CFG_NAME_FIELD.index = 0
-SCENE_TRIGGER_CFG_NAME_FIELD.label = 2
-SCENE_TRIGGER_CFG_NAME_FIELD.has_default_value = false
-SCENE_TRIGGER_CFG_NAME_FIELD.default_value = ""
-SCENE_TRIGGER_CFG_NAME_FIELD.type = 9
-SCENE_TRIGGER_CFG_NAME_FIELD.cpp_type = 9
-
-SCENE_TRIGGER_CFG_MAP_ID_FIELD.name = "map_id"
-SCENE_TRIGGER_CFG_MAP_ID_FIELD.full_name = ".ftcfg.scene_trigger_cfg.map_id"
-SCENE_TRIGGER_CFG_MAP_ID_FIELD.number = 2
-SCENE_TRIGGER_CFG_MAP_ID_FIELD.index = 1
-SCENE_TRIGGER_CFG_MAP_ID_FIELD.label = 2
-SCENE_TRIGGER_CFG_MAP_ID_FIELD.has_default_value = false
-SCENE_TRIGGER_CFG_MAP_ID_FIELD.default_value = 0
-SCENE_TRIGGER_CFG_MAP_ID_FIELD.type = 5
-SCENE_TRIGGER_CFG_MAP_ID_FIELD.cpp_type = 1
-
-SCENE_TRIGGER_CFG_EVENTS_FIELD.name = "events"
-SCENE_TRIGGER_CFG_EVENTS_FIELD.full_name = ".ftcfg.scene_trigger_cfg.events"
-SCENE_TRIGGER_CFG_EVENTS_FIELD.number = 3
-SCENE_TRIGGER_CFG_EVENTS_FIELD.index = 2
-SCENE_TRIGGER_CFG_EVENTS_FIELD.label = 3
-SCENE_TRIGGER_CFG_EVENTS_FIELD.has_default_value = false
-SCENE_TRIGGER_CFG_EVENTS_FIELD.default_value = {}
-SCENE_TRIGGER_CFG_EVENTS_FIELD.type = 5
-SCENE_TRIGGER_CFG_EVENTS_FIELD.cpp_type = 1
-
-SCENE_TRIGGER_CFG_CONDITIONS_FIELD.name = "conditions"
-SCENE_TRIGGER_CFG_CONDITIONS_FIELD.full_name = ".ftcfg.scene_trigger_cfg.conditions"
-SCENE_TRIGGER_CFG_CONDITIONS_FIELD.number = 4
-SCENE_TRIGGER_CFG_CONDITIONS_FIELD.index = 3
-SCENE_TRIGGER_CFG_CONDITIONS_FIELD.label = 3
-SCENE_TRIGGER_CFG_CONDITIONS_FIELD.has_default_value = false
-SCENE_TRIGGER_CFG_CONDITIONS_FIELD.default_value = {}
-SCENE_TRIGGER_CFG_CONDITIONS_FIELD.type = 5
-SCENE_TRIGGER_CFG_CONDITIONS_FIELD.cpp_type = 1
-
-SCENE_TRIGGER_CFG_ACTIONS_FIELD.name = "actions"
-SCENE_TRIGGER_CFG_ACTIONS_FIELD.full_name = ".ftcfg.scene_trigger_cfg.actions"
-SCENE_TRIGGER_CFG_ACTIONS_FIELD.number = 5
-SCENE_TRIGGER_CFG_ACTIONS_FIELD.index = 4
-SCENE_TRIGGER_CFG_ACTIONS_FIELD.label = 3
-SCENE_TRIGGER_CFG_ACTIONS_FIELD.has_default_value = false
-SCENE_TRIGGER_CFG_ACTIONS_FIELD.default_value = {}
-SCENE_TRIGGER_CFG_ACTIONS_FIELD.type = 5
-SCENE_TRIGGER_CFG_ACTIONS_FIELD.cpp_type = 1
-
-SCENE_TRIGGER_CFG_OPENED_FIELD.name = "opened"
-SCENE_TRIGGER_CFG_OPENED_FIELD.full_name = ".ftcfg.scene_trigger_cfg.opened"
-SCENE_TRIGGER_CFG_OPENED_FIELD.number = 6
-SCENE_TRIGGER_CFG_OPENED_FIELD.index = 5
-SCENE_TRIGGER_CFG_OPENED_FIELD.label = 2
-SCENE_TRIGGER_CFG_OPENED_FIELD.has_default_value = false
-SCENE_TRIGGER_CFG_OPENED_FIELD.default_value = 0
-SCENE_TRIGGER_CFG_OPENED_FIELD.type = 5
-SCENE_TRIGGER_CFG_OPENED_FIELD.cpp_type = 1
-
-SCENE_TRIGGER_CFG.name = "scene_trigger_cfg"
-SCENE_TRIGGER_CFG.full_name = ".ftcfg.scene_trigger_cfg"
-SCENE_TRIGGER_CFG.nested_types = {}
-SCENE_TRIGGER_CFG.enum_types = {}
-SCENE_TRIGGER_CFG.fields = {SCENE_TRIGGER_CFG_NAME_FIELD, SCENE_TRIGGER_CFG_MAP_ID_FIELD, SCENE_TRIGGER_CFG_EVENTS_FIELD, SCENE_TRIGGER_CFG_CONDITIONS_FIELD, SCENE_TRIGGER_CFG_ACTIONS_FIELD, SCENE_TRIGGER_CFG_OPENED_FIELD}
-SCENE_TRIGGER_CFG.is_extendable = false
-SCENE_TRIGGER_CFG.extensions = {}
-SCENE_TRIGGER_CFGS_ITEMS_FIELD.name = "items"
-SCENE_TRIGGER_CFGS_ITEMS_FIELD.full_name = ".ftcfg.scene_trigger_cfgs.items"
-SCENE_TRIGGER_CFGS_ITEMS_FIELD.number = 1
-SCENE_TRIGGER_CFGS_ITEMS_FIELD.index = 0
-SCENE_TRIGGER_CFGS_ITEMS_FIELD.label = 3
-SCENE_TRIGGER_CFGS_ITEMS_FIELD.has_default_value = false
-SCENE_TRIGGER_CFGS_ITEMS_FIELD.default_value = {}
-SCENE_TRIGGER_CFGS_ITEMS_FIELD.message_type = SCENE_TRIGGER_CFG
-SCENE_TRIGGER_CFGS_ITEMS_FIELD.type = 11
-SCENE_TRIGGER_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SCENE_TRIGGER_CFGS.name = "scene_trigger_cfgs"
-SCENE_TRIGGER_CFGS.full_name = ".ftcfg.scene_trigger_cfgs"
-SCENE_TRIGGER_CFGS.nested_types = {}
-SCENE_TRIGGER_CFGS.enum_types = {}
-SCENE_TRIGGER_CFGS.fields = {SCENE_TRIGGER_CFGS_ITEMS_FIELD}
-SCENE_TRIGGER_CFGS.is_extendable = false
-SCENE_TRIGGER_CFGS.extensions = {}
-TRIGGER_EVENT_CFG_EVENT_ID_FIELD.name = "event_id"
-TRIGGER_EVENT_CFG_EVENT_ID_FIELD.full_name = ".ftcfg.trigger_event_cfg.event_id"
-TRIGGER_EVENT_CFG_EVENT_ID_FIELD.number = 1
-TRIGGER_EVENT_CFG_EVENT_ID_FIELD.index = 0
-TRIGGER_EVENT_CFG_EVENT_ID_FIELD.label = 2
-TRIGGER_EVENT_CFG_EVENT_ID_FIELD.has_default_value = false
-TRIGGER_EVENT_CFG_EVENT_ID_FIELD.default_value = 0
-TRIGGER_EVENT_CFG_EVENT_ID_FIELD.type = 5
-TRIGGER_EVENT_CFG_EVENT_ID_FIELD.cpp_type = 1
-
-TRIGGER_EVENT_CFG_TYPE_FIELD.name = "type"
-TRIGGER_EVENT_CFG_TYPE_FIELD.full_name = ".ftcfg.trigger_event_cfg.type"
-TRIGGER_EVENT_CFG_TYPE_FIELD.number = 2
-TRIGGER_EVENT_CFG_TYPE_FIELD.index = 1
-TRIGGER_EVENT_CFG_TYPE_FIELD.label = 2
-TRIGGER_EVENT_CFG_TYPE_FIELD.has_default_value = false
-TRIGGER_EVENT_CFG_TYPE_FIELD.default_value = nil
-TRIGGER_EVENT_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ETRIGGEREVENTTYPE
-TRIGGER_EVENT_CFG_TYPE_FIELD.type = 14
-TRIGGER_EVENT_CFG_TYPE_FIELD.cpp_type = 8
-
-TRIGGER_EVENT_CFG_PARAM1_FIELD.name = "param1"
-TRIGGER_EVENT_CFG_PARAM1_FIELD.full_name = ".ftcfg.trigger_event_cfg.param1"
-TRIGGER_EVENT_CFG_PARAM1_FIELD.number = 3
-TRIGGER_EVENT_CFG_PARAM1_FIELD.index = 2
-TRIGGER_EVENT_CFG_PARAM1_FIELD.label = 2
-TRIGGER_EVENT_CFG_PARAM1_FIELD.has_default_value = false
-TRIGGER_EVENT_CFG_PARAM1_FIELD.default_value = ""
-TRIGGER_EVENT_CFG_PARAM1_FIELD.type = 9
-TRIGGER_EVENT_CFG_PARAM1_FIELD.cpp_type = 9
-
-TRIGGER_EVENT_CFG_PARAM2_FIELD.name = "param2"
-TRIGGER_EVENT_CFG_PARAM2_FIELD.full_name = ".ftcfg.trigger_event_cfg.param2"
-TRIGGER_EVENT_CFG_PARAM2_FIELD.number = 4
-TRIGGER_EVENT_CFG_PARAM2_FIELD.index = 3
-TRIGGER_EVENT_CFG_PARAM2_FIELD.label = 2
-TRIGGER_EVENT_CFG_PARAM2_FIELD.has_default_value = false
-TRIGGER_EVENT_CFG_PARAM2_FIELD.default_value = ""
-TRIGGER_EVENT_CFG_PARAM2_FIELD.type = 9
-TRIGGER_EVENT_CFG_PARAM2_FIELD.cpp_type = 9
-
-TRIGGER_EVENT_CFG_PARAM3_FIELD.name = "param3"
-TRIGGER_EVENT_CFG_PARAM3_FIELD.full_name = ".ftcfg.trigger_event_cfg.param3"
-TRIGGER_EVENT_CFG_PARAM3_FIELD.number = 5
-TRIGGER_EVENT_CFG_PARAM3_FIELD.index = 4
-TRIGGER_EVENT_CFG_PARAM3_FIELD.label = 2
-TRIGGER_EVENT_CFG_PARAM3_FIELD.has_default_value = false
-TRIGGER_EVENT_CFG_PARAM3_FIELD.default_value = ""
-TRIGGER_EVENT_CFG_PARAM3_FIELD.type = 9
-TRIGGER_EVENT_CFG_PARAM3_FIELD.cpp_type = 9
-
-TRIGGER_EVENT_CFG_PARAM4_FIELD.name = "param4"
-TRIGGER_EVENT_CFG_PARAM4_FIELD.full_name = ".ftcfg.trigger_event_cfg.param4"
-TRIGGER_EVENT_CFG_PARAM4_FIELD.number = 6
-TRIGGER_EVENT_CFG_PARAM4_FIELD.index = 5
-TRIGGER_EVENT_CFG_PARAM4_FIELD.label = 2
-TRIGGER_EVENT_CFG_PARAM4_FIELD.has_default_value = false
-TRIGGER_EVENT_CFG_PARAM4_FIELD.default_value = ""
-TRIGGER_EVENT_CFG_PARAM4_FIELD.type = 9
-TRIGGER_EVENT_CFG_PARAM4_FIELD.cpp_type = 9
-
-TRIGGER_EVENT_CFG_PARAM5_FIELD.name = "param5"
-TRIGGER_EVENT_CFG_PARAM5_FIELD.full_name = ".ftcfg.trigger_event_cfg.param5"
-TRIGGER_EVENT_CFG_PARAM5_FIELD.number = 7
-TRIGGER_EVENT_CFG_PARAM5_FIELD.index = 6
-TRIGGER_EVENT_CFG_PARAM5_FIELD.label = 2
-TRIGGER_EVENT_CFG_PARAM5_FIELD.has_default_value = false
-TRIGGER_EVENT_CFG_PARAM5_FIELD.default_value = ""
-TRIGGER_EVENT_CFG_PARAM5_FIELD.type = 9
-TRIGGER_EVENT_CFG_PARAM5_FIELD.cpp_type = 9
-
-TRIGGER_EVENT_CFG_PARAM6_FIELD.name = "param6"
-TRIGGER_EVENT_CFG_PARAM6_FIELD.full_name = ".ftcfg.trigger_event_cfg.param6"
-TRIGGER_EVENT_CFG_PARAM6_FIELD.number = 8
-TRIGGER_EVENT_CFG_PARAM6_FIELD.index = 7
-TRIGGER_EVENT_CFG_PARAM6_FIELD.label = 2
-TRIGGER_EVENT_CFG_PARAM6_FIELD.has_default_value = false
-TRIGGER_EVENT_CFG_PARAM6_FIELD.default_value = ""
-TRIGGER_EVENT_CFG_PARAM6_FIELD.type = 9
-TRIGGER_EVENT_CFG_PARAM6_FIELD.cpp_type = 9
-
-TRIGGER_EVENT_CFG_PARAM7_FIELD.name = "param7"
-TRIGGER_EVENT_CFG_PARAM7_FIELD.full_name = ".ftcfg.trigger_event_cfg.param7"
-TRIGGER_EVENT_CFG_PARAM7_FIELD.number = 9
-TRIGGER_EVENT_CFG_PARAM7_FIELD.index = 8
-TRIGGER_EVENT_CFG_PARAM7_FIELD.label = 2
-TRIGGER_EVENT_CFG_PARAM7_FIELD.has_default_value = false
-TRIGGER_EVENT_CFG_PARAM7_FIELD.default_value = ""
-TRIGGER_EVENT_CFG_PARAM7_FIELD.type = 9
-TRIGGER_EVENT_CFG_PARAM7_FIELD.cpp_type = 9
-
-TRIGGER_EVENT_CFG_PARAM8_FIELD.name = "param8"
-TRIGGER_EVENT_CFG_PARAM8_FIELD.full_name = ".ftcfg.trigger_event_cfg.param8"
-TRIGGER_EVENT_CFG_PARAM8_FIELD.number = 10
-TRIGGER_EVENT_CFG_PARAM8_FIELD.index = 9
-TRIGGER_EVENT_CFG_PARAM8_FIELD.label = 2
-TRIGGER_EVENT_CFG_PARAM8_FIELD.has_default_value = false
-TRIGGER_EVENT_CFG_PARAM8_FIELD.default_value = ""
-TRIGGER_EVENT_CFG_PARAM8_FIELD.type = 9
-TRIGGER_EVENT_CFG_PARAM8_FIELD.cpp_type = 9
-
-TRIGGER_EVENT_CFG_PARAM9_FIELD.name = "param9"
-TRIGGER_EVENT_CFG_PARAM9_FIELD.full_name = ".ftcfg.trigger_event_cfg.param9"
-TRIGGER_EVENT_CFG_PARAM9_FIELD.number = 11
-TRIGGER_EVENT_CFG_PARAM9_FIELD.index = 10
-TRIGGER_EVENT_CFG_PARAM9_FIELD.label = 2
-TRIGGER_EVENT_CFG_PARAM9_FIELD.has_default_value = false
-TRIGGER_EVENT_CFG_PARAM9_FIELD.default_value = ""
-TRIGGER_EVENT_CFG_PARAM9_FIELD.type = 9
-TRIGGER_EVENT_CFG_PARAM9_FIELD.cpp_type = 9
-
-TRIGGER_EVENT_CFG_PARAM10_FIELD.name = "param10"
-TRIGGER_EVENT_CFG_PARAM10_FIELD.full_name = ".ftcfg.trigger_event_cfg.param10"
-TRIGGER_EVENT_CFG_PARAM10_FIELD.number = 12
-TRIGGER_EVENT_CFG_PARAM10_FIELD.index = 11
-TRIGGER_EVENT_CFG_PARAM10_FIELD.label = 2
-TRIGGER_EVENT_CFG_PARAM10_FIELD.has_default_value = false
-TRIGGER_EVENT_CFG_PARAM10_FIELD.default_value = ""
-TRIGGER_EVENT_CFG_PARAM10_FIELD.type = 9
-TRIGGER_EVENT_CFG_PARAM10_FIELD.cpp_type = 9
-
-TRIGGER_EVENT_CFG.name = "trigger_event_cfg"
-TRIGGER_EVENT_CFG.full_name = ".ftcfg.trigger_event_cfg"
-TRIGGER_EVENT_CFG.nested_types = {}
-TRIGGER_EVENT_CFG.enum_types = {}
-TRIGGER_EVENT_CFG.fields = {TRIGGER_EVENT_CFG_EVENT_ID_FIELD, TRIGGER_EVENT_CFG_TYPE_FIELD, TRIGGER_EVENT_CFG_PARAM1_FIELD, TRIGGER_EVENT_CFG_PARAM2_FIELD, TRIGGER_EVENT_CFG_PARAM3_FIELD, TRIGGER_EVENT_CFG_PARAM4_FIELD, TRIGGER_EVENT_CFG_PARAM5_FIELD, TRIGGER_EVENT_CFG_PARAM6_FIELD, TRIGGER_EVENT_CFG_PARAM7_FIELD, TRIGGER_EVENT_CFG_PARAM8_FIELD, TRIGGER_EVENT_CFG_PARAM9_FIELD, TRIGGER_EVENT_CFG_PARAM10_FIELD}
-TRIGGER_EVENT_CFG.is_extendable = false
-TRIGGER_EVENT_CFG.extensions = {}
-TRIGGER_EVENT_CFGS_ITEMS_FIELD.name = "items"
-TRIGGER_EVENT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.trigger_event_cfgs.items"
-TRIGGER_EVENT_CFGS_ITEMS_FIELD.number = 1
-TRIGGER_EVENT_CFGS_ITEMS_FIELD.index = 0
-TRIGGER_EVENT_CFGS_ITEMS_FIELD.label = 3
-TRIGGER_EVENT_CFGS_ITEMS_FIELD.has_default_value = false
-TRIGGER_EVENT_CFGS_ITEMS_FIELD.default_value = {}
-TRIGGER_EVENT_CFGS_ITEMS_FIELD.message_type = TRIGGER_EVENT_CFG
-TRIGGER_EVENT_CFGS_ITEMS_FIELD.type = 11
-TRIGGER_EVENT_CFGS_ITEMS_FIELD.cpp_type = 10
-
-TRIGGER_EVENT_CFGS.name = "trigger_event_cfgs"
-TRIGGER_EVENT_CFGS.full_name = ".ftcfg.trigger_event_cfgs"
-TRIGGER_EVENT_CFGS.nested_types = {}
-TRIGGER_EVENT_CFGS.enum_types = {}
-TRIGGER_EVENT_CFGS.fields = {TRIGGER_EVENT_CFGS_ITEMS_FIELD}
-TRIGGER_EVENT_CFGS.is_extendable = false
-TRIGGER_EVENT_CFGS.extensions = {}
-TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.name = "condition_id"
-TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.full_name = ".ftcfg.trigger_condition_cfg.condition_id"
-TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.number = 1
-TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.index = 0
-TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.label = 2
-TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.has_default_value = false
-TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.default_value = 0
-TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.type = 5
-TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD.cpp_type = 1
-
-TRIGGER_CONDITION_CFG_TYPE_FIELD.name = "type"
-TRIGGER_CONDITION_CFG_TYPE_FIELD.full_name = ".ftcfg.trigger_condition_cfg.type"
-TRIGGER_CONDITION_CFG_TYPE_FIELD.number = 2
-TRIGGER_CONDITION_CFG_TYPE_FIELD.index = 1
-TRIGGER_CONDITION_CFG_TYPE_FIELD.label = 2
-TRIGGER_CONDITION_CFG_TYPE_FIELD.has_default_value = false
-TRIGGER_CONDITION_CFG_TYPE_FIELD.default_value = nil
-TRIGGER_CONDITION_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ETRIGGERCONDITIONTYPE
-TRIGGER_CONDITION_CFG_TYPE_FIELD.type = 14
-TRIGGER_CONDITION_CFG_TYPE_FIELD.cpp_type = 8
-
-TRIGGER_CONDITION_CFG_PARAM1_FIELD.name = "param1"
-TRIGGER_CONDITION_CFG_PARAM1_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param1"
-TRIGGER_CONDITION_CFG_PARAM1_FIELD.number = 3
-TRIGGER_CONDITION_CFG_PARAM1_FIELD.index = 2
-TRIGGER_CONDITION_CFG_PARAM1_FIELD.label = 2
-TRIGGER_CONDITION_CFG_PARAM1_FIELD.has_default_value = false
-TRIGGER_CONDITION_CFG_PARAM1_FIELD.default_value = ""
-TRIGGER_CONDITION_CFG_PARAM1_FIELD.type = 9
-TRIGGER_CONDITION_CFG_PARAM1_FIELD.cpp_type = 9
-
-TRIGGER_CONDITION_CFG_PARAM2_FIELD.name = "param2"
-TRIGGER_CONDITION_CFG_PARAM2_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param2"
-TRIGGER_CONDITION_CFG_PARAM2_FIELD.number = 4
-TRIGGER_CONDITION_CFG_PARAM2_FIELD.index = 3
-TRIGGER_CONDITION_CFG_PARAM2_FIELD.label = 2
-TRIGGER_CONDITION_CFG_PARAM2_FIELD.has_default_value = false
-TRIGGER_CONDITION_CFG_PARAM2_FIELD.default_value = ""
-TRIGGER_CONDITION_CFG_PARAM2_FIELD.type = 9
-TRIGGER_CONDITION_CFG_PARAM2_FIELD.cpp_type = 9
-
-TRIGGER_CONDITION_CFG_PARAM3_FIELD.name = "param3"
-TRIGGER_CONDITION_CFG_PARAM3_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param3"
-TRIGGER_CONDITION_CFG_PARAM3_FIELD.number = 5
-TRIGGER_CONDITION_CFG_PARAM3_FIELD.index = 4
-TRIGGER_CONDITION_CFG_PARAM3_FIELD.label = 2
-TRIGGER_CONDITION_CFG_PARAM3_FIELD.has_default_value = false
-TRIGGER_CONDITION_CFG_PARAM3_FIELD.default_value = ""
-TRIGGER_CONDITION_CFG_PARAM3_FIELD.type = 9
-TRIGGER_CONDITION_CFG_PARAM3_FIELD.cpp_type = 9
-
-TRIGGER_CONDITION_CFG_PARAM4_FIELD.name = "param4"
-TRIGGER_CONDITION_CFG_PARAM4_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param4"
-TRIGGER_CONDITION_CFG_PARAM4_FIELD.number = 6
-TRIGGER_CONDITION_CFG_PARAM4_FIELD.index = 5
-TRIGGER_CONDITION_CFG_PARAM4_FIELD.label = 2
-TRIGGER_CONDITION_CFG_PARAM4_FIELD.has_default_value = false
-TRIGGER_CONDITION_CFG_PARAM4_FIELD.default_value = ""
-TRIGGER_CONDITION_CFG_PARAM4_FIELD.type = 9
-TRIGGER_CONDITION_CFG_PARAM4_FIELD.cpp_type = 9
-
-TRIGGER_CONDITION_CFG_PARAM5_FIELD.name = "param5"
-TRIGGER_CONDITION_CFG_PARAM5_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param5"
-TRIGGER_CONDITION_CFG_PARAM5_FIELD.number = 7
-TRIGGER_CONDITION_CFG_PARAM5_FIELD.index = 6
-TRIGGER_CONDITION_CFG_PARAM5_FIELD.label = 2
-TRIGGER_CONDITION_CFG_PARAM5_FIELD.has_default_value = false
-TRIGGER_CONDITION_CFG_PARAM5_FIELD.default_value = ""
-TRIGGER_CONDITION_CFG_PARAM5_FIELD.type = 9
-TRIGGER_CONDITION_CFG_PARAM5_FIELD.cpp_type = 9
-
-TRIGGER_CONDITION_CFG_PARAM6_FIELD.name = "param6"
-TRIGGER_CONDITION_CFG_PARAM6_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param6"
-TRIGGER_CONDITION_CFG_PARAM6_FIELD.number = 8
-TRIGGER_CONDITION_CFG_PARAM6_FIELD.index = 7
-TRIGGER_CONDITION_CFG_PARAM6_FIELD.label = 2
-TRIGGER_CONDITION_CFG_PARAM6_FIELD.has_default_value = false
-TRIGGER_CONDITION_CFG_PARAM6_FIELD.default_value = ""
-TRIGGER_CONDITION_CFG_PARAM6_FIELD.type = 9
-TRIGGER_CONDITION_CFG_PARAM6_FIELD.cpp_type = 9
-
-TRIGGER_CONDITION_CFG_PARAM7_FIELD.name = "param7"
-TRIGGER_CONDITION_CFG_PARAM7_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param7"
-TRIGGER_CONDITION_CFG_PARAM7_FIELD.number = 9
-TRIGGER_CONDITION_CFG_PARAM7_FIELD.index = 8
-TRIGGER_CONDITION_CFG_PARAM7_FIELD.label = 2
-TRIGGER_CONDITION_CFG_PARAM7_FIELD.has_default_value = false
-TRIGGER_CONDITION_CFG_PARAM7_FIELD.default_value = ""
-TRIGGER_CONDITION_CFG_PARAM7_FIELD.type = 9
-TRIGGER_CONDITION_CFG_PARAM7_FIELD.cpp_type = 9
-
-TRIGGER_CONDITION_CFG_PARAM8_FIELD.name = "param8"
-TRIGGER_CONDITION_CFG_PARAM8_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param8"
-TRIGGER_CONDITION_CFG_PARAM8_FIELD.number = 10
-TRIGGER_CONDITION_CFG_PARAM8_FIELD.index = 9
-TRIGGER_CONDITION_CFG_PARAM8_FIELD.label = 2
-TRIGGER_CONDITION_CFG_PARAM8_FIELD.has_default_value = false
-TRIGGER_CONDITION_CFG_PARAM8_FIELD.default_value = ""
-TRIGGER_CONDITION_CFG_PARAM8_FIELD.type = 9
-TRIGGER_CONDITION_CFG_PARAM8_FIELD.cpp_type = 9
-
-TRIGGER_CONDITION_CFG_PARAM9_FIELD.name = "param9"
-TRIGGER_CONDITION_CFG_PARAM9_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param9"
-TRIGGER_CONDITION_CFG_PARAM9_FIELD.number = 11
-TRIGGER_CONDITION_CFG_PARAM9_FIELD.index = 10
-TRIGGER_CONDITION_CFG_PARAM9_FIELD.label = 2
-TRIGGER_CONDITION_CFG_PARAM9_FIELD.has_default_value = false
-TRIGGER_CONDITION_CFG_PARAM9_FIELD.default_value = ""
-TRIGGER_CONDITION_CFG_PARAM9_FIELD.type = 9
-TRIGGER_CONDITION_CFG_PARAM9_FIELD.cpp_type = 9
-
-TRIGGER_CONDITION_CFG_PARAM10_FIELD.name = "param10"
-TRIGGER_CONDITION_CFG_PARAM10_FIELD.full_name = ".ftcfg.trigger_condition_cfg.param10"
-TRIGGER_CONDITION_CFG_PARAM10_FIELD.number = 12
-TRIGGER_CONDITION_CFG_PARAM10_FIELD.index = 11
-TRIGGER_CONDITION_CFG_PARAM10_FIELD.label = 2
-TRIGGER_CONDITION_CFG_PARAM10_FIELD.has_default_value = false
-TRIGGER_CONDITION_CFG_PARAM10_FIELD.default_value = ""
-TRIGGER_CONDITION_CFG_PARAM10_FIELD.type = 9
-TRIGGER_CONDITION_CFG_PARAM10_FIELD.cpp_type = 9
-
-TRIGGER_CONDITION_CFG.name = "trigger_condition_cfg"
-TRIGGER_CONDITION_CFG.full_name = ".ftcfg.trigger_condition_cfg"
-TRIGGER_CONDITION_CFG.nested_types = {}
-TRIGGER_CONDITION_CFG.enum_types = {}
-TRIGGER_CONDITION_CFG.fields = {TRIGGER_CONDITION_CFG_CONDITION_ID_FIELD, TRIGGER_CONDITION_CFG_TYPE_FIELD, TRIGGER_CONDITION_CFG_PARAM1_FIELD, TRIGGER_CONDITION_CFG_PARAM2_FIELD, TRIGGER_CONDITION_CFG_PARAM3_FIELD, TRIGGER_CONDITION_CFG_PARAM4_FIELD, TRIGGER_CONDITION_CFG_PARAM5_FIELD, TRIGGER_CONDITION_CFG_PARAM6_FIELD, TRIGGER_CONDITION_CFG_PARAM7_FIELD, TRIGGER_CONDITION_CFG_PARAM8_FIELD, TRIGGER_CONDITION_CFG_PARAM9_FIELD, TRIGGER_CONDITION_CFG_PARAM10_FIELD}
-TRIGGER_CONDITION_CFG.is_extendable = false
-TRIGGER_CONDITION_CFG.extensions = {}
-TRIGGER_CONDITION_CFGS_ITEMS_FIELD.name = "items"
-TRIGGER_CONDITION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.trigger_condition_cfgs.items"
-TRIGGER_CONDITION_CFGS_ITEMS_FIELD.number = 1
-TRIGGER_CONDITION_CFGS_ITEMS_FIELD.index = 0
-TRIGGER_CONDITION_CFGS_ITEMS_FIELD.label = 3
-TRIGGER_CONDITION_CFGS_ITEMS_FIELD.has_default_value = false
-TRIGGER_CONDITION_CFGS_ITEMS_FIELD.default_value = {}
-TRIGGER_CONDITION_CFGS_ITEMS_FIELD.message_type = TRIGGER_CONDITION_CFG
-TRIGGER_CONDITION_CFGS_ITEMS_FIELD.type = 11
-TRIGGER_CONDITION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-TRIGGER_CONDITION_CFGS.name = "trigger_condition_cfgs"
-TRIGGER_CONDITION_CFGS.full_name = ".ftcfg.trigger_condition_cfgs"
-TRIGGER_CONDITION_CFGS.nested_types = {}
-TRIGGER_CONDITION_CFGS.enum_types = {}
-TRIGGER_CONDITION_CFGS.fields = {TRIGGER_CONDITION_CFGS_ITEMS_FIELD}
-TRIGGER_CONDITION_CFGS.is_extendable = false
-TRIGGER_CONDITION_CFGS.extensions = {}
-TRIGGER_ACTION_CFG_ACTION_ID_FIELD.name = "action_id"
-TRIGGER_ACTION_CFG_ACTION_ID_FIELD.full_name = ".ftcfg.trigger_action_cfg.action_id"
-TRIGGER_ACTION_CFG_ACTION_ID_FIELD.number = 1
-TRIGGER_ACTION_CFG_ACTION_ID_FIELD.index = 0
-TRIGGER_ACTION_CFG_ACTION_ID_FIELD.label = 2
-TRIGGER_ACTION_CFG_ACTION_ID_FIELD.has_default_value = false
-TRIGGER_ACTION_CFG_ACTION_ID_FIELD.default_value = 0
-TRIGGER_ACTION_CFG_ACTION_ID_FIELD.type = 5
-TRIGGER_ACTION_CFG_ACTION_ID_FIELD.cpp_type = 1
-
-TRIGGER_ACTION_CFG_TYPE_FIELD.name = "type"
-TRIGGER_ACTION_CFG_TYPE_FIELD.full_name = ".ftcfg.trigger_action_cfg.type"
-TRIGGER_ACTION_CFG_TYPE_FIELD.number = 2
-TRIGGER_ACTION_CFG_TYPE_FIELD.index = 1
-TRIGGER_ACTION_CFG_TYPE_FIELD.label = 2
-TRIGGER_ACTION_CFG_TYPE_FIELD.has_default_value = false
-TRIGGER_ACTION_CFG_TYPE_FIELD.default_value = nil
-TRIGGER_ACTION_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ETRIGGERACTION0TYPE
-TRIGGER_ACTION_CFG_TYPE_FIELD.type = 14
-TRIGGER_ACTION_CFG_TYPE_FIELD.cpp_type = 8
-
-TRIGGER_ACTION_CFG_PARAM1_FIELD.name = "param1"
-TRIGGER_ACTION_CFG_PARAM1_FIELD.full_name = ".ftcfg.trigger_action_cfg.param1"
-TRIGGER_ACTION_CFG_PARAM1_FIELD.number = 3
-TRIGGER_ACTION_CFG_PARAM1_FIELD.index = 2
-TRIGGER_ACTION_CFG_PARAM1_FIELD.label = 2
-TRIGGER_ACTION_CFG_PARAM1_FIELD.has_default_value = false
-TRIGGER_ACTION_CFG_PARAM1_FIELD.default_value = ""
-TRIGGER_ACTION_CFG_PARAM1_FIELD.type = 9
-TRIGGER_ACTION_CFG_PARAM1_FIELD.cpp_type = 9
-
-TRIGGER_ACTION_CFG_PARAM2_FIELD.name = "param2"
-TRIGGER_ACTION_CFG_PARAM2_FIELD.full_name = ".ftcfg.trigger_action_cfg.param2"
-TRIGGER_ACTION_CFG_PARAM2_FIELD.number = 4
-TRIGGER_ACTION_CFG_PARAM2_FIELD.index = 3
-TRIGGER_ACTION_CFG_PARAM2_FIELD.label = 2
-TRIGGER_ACTION_CFG_PARAM2_FIELD.has_default_value = false
-TRIGGER_ACTION_CFG_PARAM2_FIELD.default_value = ""
-TRIGGER_ACTION_CFG_PARAM2_FIELD.type = 9
-TRIGGER_ACTION_CFG_PARAM2_FIELD.cpp_type = 9
-
-TRIGGER_ACTION_CFG_PARAM3_FIELD.name = "param3"
-TRIGGER_ACTION_CFG_PARAM3_FIELD.full_name = ".ftcfg.trigger_action_cfg.param3"
-TRIGGER_ACTION_CFG_PARAM3_FIELD.number = 5
-TRIGGER_ACTION_CFG_PARAM3_FIELD.index = 4
-TRIGGER_ACTION_CFG_PARAM3_FIELD.label = 2
-TRIGGER_ACTION_CFG_PARAM3_FIELD.has_default_value = false
-TRIGGER_ACTION_CFG_PARAM3_FIELD.default_value = ""
-TRIGGER_ACTION_CFG_PARAM3_FIELD.type = 9
-TRIGGER_ACTION_CFG_PARAM3_FIELD.cpp_type = 9
-
-TRIGGER_ACTION_CFG_PARAM4_FIELD.name = "param4"
-TRIGGER_ACTION_CFG_PARAM4_FIELD.full_name = ".ftcfg.trigger_action_cfg.param4"
-TRIGGER_ACTION_CFG_PARAM4_FIELD.number = 6
-TRIGGER_ACTION_CFG_PARAM4_FIELD.index = 5
-TRIGGER_ACTION_CFG_PARAM4_FIELD.label = 2
-TRIGGER_ACTION_CFG_PARAM4_FIELD.has_default_value = false
-TRIGGER_ACTION_CFG_PARAM4_FIELD.default_value = ""
-TRIGGER_ACTION_CFG_PARAM4_FIELD.type = 9
-TRIGGER_ACTION_CFG_PARAM4_FIELD.cpp_type = 9
-
-TRIGGER_ACTION_CFG_PARAM5_FIELD.name = "param5"
-TRIGGER_ACTION_CFG_PARAM5_FIELD.full_name = ".ftcfg.trigger_action_cfg.param5"
-TRIGGER_ACTION_CFG_PARAM5_FIELD.number = 7
-TRIGGER_ACTION_CFG_PARAM5_FIELD.index = 6
-TRIGGER_ACTION_CFG_PARAM5_FIELD.label = 2
-TRIGGER_ACTION_CFG_PARAM5_FIELD.has_default_value = false
-TRIGGER_ACTION_CFG_PARAM5_FIELD.default_value = ""
-TRIGGER_ACTION_CFG_PARAM5_FIELD.type = 9
-TRIGGER_ACTION_CFG_PARAM5_FIELD.cpp_type = 9
-
-TRIGGER_ACTION_CFG_PARAM6_FIELD.name = "param6"
-TRIGGER_ACTION_CFG_PARAM6_FIELD.full_name = ".ftcfg.trigger_action_cfg.param6"
-TRIGGER_ACTION_CFG_PARAM6_FIELD.number = 8
-TRIGGER_ACTION_CFG_PARAM6_FIELD.index = 7
-TRIGGER_ACTION_CFG_PARAM6_FIELD.label = 2
-TRIGGER_ACTION_CFG_PARAM6_FIELD.has_default_value = false
-TRIGGER_ACTION_CFG_PARAM6_FIELD.default_value = ""
-TRIGGER_ACTION_CFG_PARAM6_FIELD.type = 9
-TRIGGER_ACTION_CFG_PARAM6_FIELD.cpp_type = 9
-
-TRIGGER_ACTION_CFG_PARAM7_FIELD.name = "param7"
-TRIGGER_ACTION_CFG_PARAM7_FIELD.full_name = ".ftcfg.trigger_action_cfg.param7"
-TRIGGER_ACTION_CFG_PARAM7_FIELD.number = 9
-TRIGGER_ACTION_CFG_PARAM7_FIELD.index = 8
-TRIGGER_ACTION_CFG_PARAM7_FIELD.label = 2
-TRIGGER_ACTION_CFG_PARAM7_FIELD.has_default_value = false
-TRIGGER_ACTION_CFG_PARAM7_FIELD.default_value = ""
-TRIGGER_ACTION_CFG_PARAM7_FIELD.type = 9
-TRIGGER_ACTION_CFG_PARAM7_FIELD.cpp_type = 9
-
-TRIGGER_ACTION_CFG_PARAM8_FIELD.name = "param8"
-TRIGGER_ACTION_CFG_PARAM8_FIELD.full_name = ".ftcfg.trigger_action_cfg.param8"
-TRIGGER_ACTION_CFG_PARAM8_FIELD.number = 10
-TRIGGER_ACTION_CFG_PARAM8_FIELD.index = 9
-TRIGGER_ACTION_CFG_PARAM8_FIELD.label = 2
-TRIGGER_ACTION_CFG_PARAM8_FIELD.has_default_value = false
-TRIGGER_ACTION_CFG_PARAM8_FIELD.default_value = ""
-TRIGGER_ACTION_CFG_PARAM8_FIELD.type = 9
-TRIGGER_ACTION_CFG_PARAM8_FIELD.cpp_type = 9
-
-TRIGGER_ACTION_CFG_PARAM9_FIELD.name = "param9"
-TRIGGER_ACTION_CFG_PARAM9_FIELD.full_name = ".ftcfg.trigger_action_cfg.param9"
-TRIGGER_ACTION_CFG_PARAM9_FIELD.number = 11
-TRIGGER_ACTION_CFG_PARAM9_FIELD.index = 10
-TRIGGER_ACTION_CFG_PARAM9_FIELD.label = 2
-TRIGGER_ACTION_CFG_PARAM9_FIELD.has_default_value = false
-TRIGGER_ACTION_CFG_PARAM9_FIELD.default_value = ""
-TRIGGER_ACTION_CFG_PARAM9_FIELD.type = 9
-TRIGGER_ACTION_CFG_PARAM9_FIELD.cpp_type = 9
-
-TRIGGER_ACTION_CFG_PARAM10_FIELD.name = "param10"
-TRIGGER_ACTION_CFG_PARAM10_FIELD.full_name = ".ftcfg.trigger_action_cfg.param10"
-TRIGGER_ACTION_CFG_PARAM10_FIELD.number = 12
-TRIGGER_ACTION_CFG_PARAM10_FIELD.index = 11
-TRIGGER_ACTION_CFG_PARAM10_FIELD.label = 2
-TRIGGER_ACTION_CFG_PARAM10_FIELD.has_default_value = false
-TRIGGER_ACTION_CFG_PARAM10_FIELD.default_value = ""
-TRIGGER_ACTION_CFG_PARAM10_FIELD.type = 9
-TRIGGER_ACTION_CFG_PARAM10_FIELD.cpp_type = 9
-
-TRIGGER_ACTION_CFG.name = "trigger_action_cfg"
-TRIGGER_ACTION_CFG.full_name = ".ftcfg.trigger_action_cfg"
-TRIGGER_ACTION_CFG.nested_types = {}
-TRIGGER_ACTION_CFG.enum_types = {}
-TRIGGER_ACTION_CFG.fields = {TRIGGER_ACTION_CFG_ACTION_ID_FIELD, TRIGGER_ACTION_CFG_TYPE_FIELD, TRIGGER_ACTION_CFG_PARAM1_FIELD, TRIGGER_ACTION_CFG_PARAM2_FIELD, TRIGGER_ACTION_CFG_PARAM3_FIELD, TRIGGER_ACTION_CFG_PARAM4_FIELD, TRIGGER_ACTION_CFG_PARAM5_FIELD, TRIGGER_ACTION_CFG_PARAM6_FIELD, TRIGGER_ACTION_CFG_PARAM7_FIELD, TRIGGER_ACTION_CFG_PARAM8_FIELD, TRIGGER_ACTION_CFG_PARAM9_FIELD, TRIGGER_ACTION_CFG_PARAM10_FIELD}
-TRIGGER_ACTION_CFG.is_extendable = false
-TRIGGER_ACTION_CFG.extensions = {}
-TRIGGER_ACTION_CFGS_ITEMS_FIELD.name = "items"
-TRIGGER_ACTION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.trigger_action_cfgs.items"
-TRIGGER_ACTION_CFGS_ITEMS_FIELD.number = 1
-TRIGGER_ACTION_CFGS_ITEMS_FIELD.index = 0
-TRIGGER_ACTION_CFGS_ITEMS_FIELD.label = 3
-TRIGGER_ACTION_CFGS_ITEMS_FIELD.has_default_value = false
-TRIGGER_ACTION_CFGS_ITEMS_FIELD.default_value = {}
-TRIGGER_ACTION_CFGS_ITEMS_FIELD.message_type = TRIGGER_ACTION_CFG
-TRIGGER_ACTION_CFGS_ITEMS_FIELD.type = 11
-TRIGGER_ACTION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-TRIGGER_ACTION_CFGS.name = "trigger_action_cfgs"
-TRIGGER_ACTION_CFGS.full_name = ".ftcfg.trigger_action_cfgs"
-TRIGGER_ACTION_CFGS.nested_types = {}
-TRIGGER_ACTION_CFGS.enum_types = {}
-TRIGGER_ACTION_CFGS.fields = {TRIGGER_ACTION_CFGS_ITEMS_FIELD}
-TRIGGER_ACTION_CFGS.is_extendable = false
-TRIGGER_ACTION_CFGS.extensions = {}
-TRIGGER_VARIABLE_CFG_NAME_FIELD.name = "name"
-TRIGGER_VARIABLE_CFG_NAME_FIELD.full_name = ".ftcfg.trigger_variable_cfg.name"
-TRIGGER_VARIABLE_CFG_NAME_FIELD.number = 1
-TRIGGER_VARIABLE_CFG_NAME_FIELD.index = 0
-TRIGGER_VARIABLE_CFG_NAME_FIELD.label = 2
-TRIGGER_VARIABLE_CFG_NAME_FIELD.has_default_value = false
-TRIGGER_VARIABLE_CFG_NAME_FIELD.default_value = ""
-TRIGGER_VARIABLE_CFG_NAME_FIELD.type = 9
-TRIGGER_VARIABLE_CFG_NAME_FIELD.cpp_type = 9
-
-TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.name = "map_id"
-TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.full_name = ".ftcfg.trigger_variable_cfg.map_id"
-TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.number = 2
-TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.index = 1
-TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.label = 2
-TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.has_default_value = false
-TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.default_value = 0
-TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.type = 5
-TRIGGER_VARIABLE_CFG_MAP_ID_FIELD.cpp_type = 1
-
-TRIGGER_VARIABLE_CFG_TYPE_FIELD.name = "type"
-TRIGGER_VARIABLE_CFG_TYPE_FIELD.full_name = ".ftcfg.trigger_variable_cfg.type"
-TRIGGER_VARIABLE_CFG_TYPE_FIELD.number = 3
-TRIGGER_VARIABLE_CFG_TYPE_FIELD.index = 2
-TRIGGER_VARIABLE_CFG_TYPE_FIELD.label = 2
-TRIGGER_VARIABLE_CFG_TYPE_FIELD.has_default_value = false
-TRIGGER_VARIABLE_CFG_TYPE_FIELD.default_value = nil
-TRIGGER_VARIABLE_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ETRIGGERVARIABLETYPE
-TRIGGER_VARIABLE_CFG_TYPE_FIELD.type = 14
-TRIGGER_VARIABLE_CFG_TYPE_FIELD.cpp_type = 8
-
-TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.name = "is_vec"
-TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.full_name = ".ftcfg.trigger_variable_cfg.is_vec"
-TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.number = 4
-TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.index = 3
-TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.label = 2
-TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.has_default_value = false
-TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.default_value = 0
-TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.type = 13
-TRIGGER_VARIABLE_CFG_IS_VEC_FIELD.cpp_type = 3
-
-TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.name = "vec_size"
-TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.full_name = ".ftcfg.trigger_variable_cfg.vec_size"
-TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.number = 5
-TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.index = 4
-TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.label = 2
-TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.has_default_value = false
-TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.default_value = 0
-TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.type = 13
-TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD.cpp_type = 3
-
-TRIGGER_VARIABLE_CFG_PARAM1_FIELD.name = "param1"
-TRIGGER_VARIABLE_CFG_PARAM1_FIELD.full_name = ".ftcfg.trigger_variable_cfg.param1"
-TRIGGER_VARIABLE_CFG_PARAM1_FIELD.number = 6
-TRIGGER_VARIABLE_CFG_PARAM1_FIELD.index = 5
-TRIGGER_VARIABLE_CFG_PARAM1_FIELD.label = 2
-TRIGGER_VARIABLE_CFG_PARAM1_FIELD.has_default_value = false
-TRIGGER_VARIABLE_CFG_PARAM1_FIELD.default_value = ""
-TRIGGER_VARIABLE_CFG_PARAM1_FIELD.type = 9
-TRIGGER_VARIABLE_CFG_PARAM1_FIELD.cpp_type = 9
-
-TRIGGER_VARIABLE_CFG_PARAM2_FIELD.name = "param2"
-TRIGGER_VARIABLE_CFG_PARAM2_FIELD.full_name = ".ftcfg.trigger_variable_cfg.param2"
-TRIGGER_VARIABLE_CFG_PARAM2_FIELD.number = 7
-TRIGGER_VARIABLE_CFG_PARAM2_FIELD.index = 6
-TRIGGER_VARIABLE_CFG_PARAM2_FIELD.label = 2
-TRIGGER_VARIABLE_CFG_PARAM2_FIELD.has_default_value = false
-TRIGGER_VARIABLE_CFG_PARAM2_FIELD.default_value = ""
-TRIGGER_VARIABLE_CFG_PARAM2_FIELD.type = 9
-TRIGGER_VARIABLE_CFG_PARAM2_FIELD.cpp_type = 9
-
-TRIGGER_VARIABLE_CFG_PARAM3_FIELD.name = "param3"
-TRIGGER_VARIABLE_CFG_PARAM3_FIELD.full_name = ".ftcfg.trigger_variable_cfg.param3"
-TRIGGER_VARIABLE_CFG_PARAM3_FIELD.number = 8
-TRIGGER_VARIABLE_CFG_PARAM3_FIELD.index = 7
-TRIGGER_VARIABLE_CFG_PARAM3_FIELD.label = 2
-TRIGGER_VARIABLE_CFG_PARAM3_FIELD.has_default_value = false
-TRIGGER_VARIABLE_CFG_PARAM3_FIELD.default_value = ""
-TRIGGER_VARIABLE_CFG_PARAM3_FIELD.type = 9
-TRIGGER_VARIABLE_CFG_PARAM3_FIELD.cpp_type = 9
-
-TRIGGER_VARIABLE_CFG_PARAM4_FIELD.name = "param4"
-TRIGGER_VARIABLE_CFG_PARAM4_FIELD.full_name = ".ftcfg.trigger_variable_cfg.param4"
-TRIGGER_VARIABLE_CFG_PARAM4_FIELD.number = 9
-TRIGGER_VARIABLE_CFG_PARAM4_FIELD.index = 8
-TRIGGER_VARIABLE_CFG_PARAM4_FIELD.label = 2
-TRIGGER_VARIABLE_CFG_PARAM4_FIELD.has_default_value = false
-TRIGGER_VARIABLE_CFG_PARAM4_FIELD.default_value = ""
-TRIGGER_VARIABLE_CFG_PARAM4_FIELD.type = 9
-TRIGGER_VARIABLE_CFG_PARAM4_FIELD.cpp_type = 9
-
-TRIGGER_VARIABLE_CFG_PARAM5_FIELD.name = "param5"
-TRIGGER_VARIABLE_CFG_PARAM5_FIELD.full_name = ".ftcfg.trigger_variable_cfg.param5"
-TRIGGER_VARIABLE_CFG_PARAM5_FIELD.number = 10
-TRIGGER_VARIABLE_CFG_PARAM5_FIELD.index = 9
-TRIGGER_VARIABLE_CFG_PARAM5_FIELD.label = 2
-TRIGGER_VARIABLE_CFG_PARAM5_FIELD.has_default_value = false
-TRIGGER_VARIABLE_CFG_PARAM5_FIELD.default_value = ""
-TRIGGER_VARIABLE_CFG_PARAM5_FIELD.type = 9
-TRIGGER_VARIABLE_CFG_PARAM5_FIELD.cpp_type = 9
-
-TRIGGER_VARIABLE_CFG.name = "trigger_variable_cfg"
-TRIGGER_VARIABLE_CFG.full_name = ".ftcfg.trigger_variable_cfg"
-TRIGGER_VARIABLE_CFG.nested_types = {}
-TRIGGER_VARIABLE_CFG.enum_types = {}
-TRIGGER_VARIABLE_CFG.fields = {TRIGGER_VARIABLE_CFG_NAME_FIELD, TRIGGER_VARIABLE_CFG_MAP_ID_FIELD, TRIGGER_VARIABLE_CFG_TYPE_FIELD, TRIGGER_VARIABLE_CFG_IS_VEC_FIELD, TRIGGER_VARIABLE_CFG_VEC_SIZE_FIELD, TRIGGER_VARIABLE_CFG_PARAM1_FIELD, TRIGGER_VARIABLE_CFG_PARAM2_FIELD, TRIGGER_VARIABLE_CFG_PARAM3_FIELD, TRIGGER_VARIABLE_CFG_PARAM4_FIELD, TRIGGER_VARIABLE_CFG_PARAM5_FIELD}
-TRIGGER_VARIABLE_CFG.is_extendable = false
-TRIGGER_VARIABLE_CFG.extensions = {}
-TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.name = "items"
-TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.trigger_variable_cfgs.items"
-TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.number = 1
-TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.index = 0
-TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.label = 3
-TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.has_default_value = false
-TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.default_value = {}
-TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.message_type = TRIGGER_VARIABLE_CFG
-TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.type = 11
-TRIGGER_VARIABLE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-TRIGGER_VARIABLE_CFGS.name = "trigger_variable_cfgs"
-TRIGGER_VARIABLE_CFGS.full_name = ".ftcfg.trigger_variable_cfgs"
-TRIGGER_VARIABLE_CFGS.nested_types = {}
-TRIGGER_VARIABLE_CFGS.enum_types = {}
-TRIGGER_VARIABLE_CFGS.fields = {TRIGGER_VARIABLE_CFGS_ITEMS_FIELD}
-TRIGGER_VARIABLE_CFGS.is_extendable = false
-TRIGGER_VARIABLE_CFGS.extensions = {}
-SCENE_DOOR_CFG_ID_FIELD.name = "id"
-SCENE_DOOR_CFG_ID_FIELD.full_name = ".ftcfg.scene_door_cfg.id"
-SCENE_DOOR_CFG_ID_FIELD.number = 1
-SCENE_DOOR_CFG_ID_FIELD.index = 0
-SCENE_DOOR_CFG_ID_FIELD.label = 2
-SCENE_DOOR_CFG_ID_FIELD.has_default_value = false
-SCENE_DOOR_CFG_ID_FIELD.default_value = 0
-SCENE_DOOR_CFG_ID_FIELD.type = 5
-SCENE_DOOR_CFG_ID_FIELD.cpp_type = 1
-
-SCENE_DOOR_CFG_MAP_ID_FIELD.name = "map_id"
-SCENE_DOOR_CFG_MAP_ID_FIELD.full_name = ".ftcfg.scene_door_cfg.map_id"
-SCENE_DOOR_CFG_MAP_ID_FIELD.number = 2
-SCENE_DOOR_CFG_MAP_ID_FIELD.index = 1
-SCENE_DOOR_CFG_MAP_ID_FIELD.label = 2
-SCENE_DOOR_CFG_MAP_ID_FIELD.has_default_value = false
-SCENE_DOOR_CFG_MAP_ID_FIELD.default_value = 0
-SCENE_DOOR_CFG_MAP_ID_FIELD.type = 5
-SCENE_DOOR_CFG_MAP_ID_FIELD.cpp_type = 1
-
-SCENE_DOOR_CFG_POS_X_FIELD.name = "pos_x"
-SCENE_DOOR_CFG_POS_X_FIELD.full_name = ".ftcfg.scene_door_cfg.pos_x"
-SCENE_DOOR_CFG_POS_X_FIELD.number = 3
-SCENE_DOOR_CFG_POS_X_FIELD.index = 2
-SCENE_DOOR_CFG_POS_X_FIELD.label = 2
-SCENE_DOOR_CFG_POS_X_FIELD.has_default_value = false
-SCENE_DOOR_CFG_POS_X_FIELD.default_value = 0.0
-SCENE_DOOR_CFG_POS_X_FIELD.type = 2
-SCENE_DOOR_CFG_POS_X_FIELD.cpp_type = 6
-
-SCENE_DOOR_CFG_POS_Y_FIELD.name = "pos_y"
-SCENE_DOOR_CFG_POS_Y_FIELD.full_name = ".ftcfg.scene_door_cfg.pos_y"
-SCENE_DOOR_CFG_POS_Y_FIELD.number = 4
-SCENE_DOOR_CFG_POS_Y_FIELD.index = 3
-SCENE_DOOR_CFG_POS_Y_FIELD.label = 2
-SCENE_DOOR_CFG_POS_Y_FIELD.has_default_value = false
-SCENE_DOOR_CFG_POS_Y_FIELD.default_value = 0.0
-SCENE_DOOR_CFG_POS_Y_FIELD.type = 2
-SCENE_DOOR_CFG_POS_Y_FIELD.cpp_type = 6
-
-SCENE_DOOR_CFG_POS_Z_FIELD.name = "pos_z"
-SCENE_DOOR_CFG_POS_Z_FIELD.full_name = ".ftcfg.scene_door_cfg.pos_z"
-SCENE_DOOR_CFG_POS_Z_FIELD.number = 5
-SCENE_DOOR_CFG_POS_Z_FIELD.index = 4
-SCENE_DOOR_CFG_POS_Z_FIELD.label = 2
-SCENE_DOOR_CFG_POS_Z_FIELD.has_default_value = false
-SCENE_DOOR_CFG_POS_Z_FIELD.default_value = 0.0
-SCENE_DOOR_CFG_POS_Z_FIELD.type = 2
-SCENE_DOOR_CFG_POS_Z_FIELD.cpp_type = 6
-
-SCENE_DOOR_CFG_WIDTH_FIELD.name = "width"
-SCENE_DOOR_CFG_WIDTH_FIELD.full_name = ".ftcfg.scene_door_cfg.width"
-SCENE_DOOR_CFG_WIDTH_FIELD.number = 6
-SCENE_DOOR_CFG_WIDTH_FIELD.index = 5
-SCENE_DOOR_CFG_WIDTH_FIELD.label = 2
-SCENE_DOOR_CFG_WIDTH_FIELD.has_default_value = false
-SCENE_DOOR_CFG_WIDTH_FIELD.default_value = 0.0
-SCENE_DOOR_CFG_WIDTH_FIELD.type = 2
-SCENE_DOOR_CFG_WIDTH_FIELD.cpp_type = 6
-
-SCENE_DOOR_CFG_ORIENTATION_FIELD.name = "orientation"
-SCENE_DOOR_CFG_ORIENTATION_FIELD.full_name = ".ftcfg.scene_door_cfg.orientation"
-SCENE_DOOR_CFG_ORIENTATION_FIELD.number = 7
-SCENE_DOOR_CFG_ORIENTATION_FIELD.index = 6
-SCENE_DOOR_CFG_ORIENTATION_FIELD.label = 2
-SCENE_DOOR_CFG_ORIENTATION_FIELD.has_default_value = false
-SCENE_DOOR_CFG_ORIENTATION_FIELD.default_value = 0.0
-SCENE_DOOR_CFG_ORIENTATION_FIELD.type = 2
-SCENE_DOOR_CFG_ORIENTATION_FIELD.cpp_type = 6
-
-SCENE_DOOR_CFG_OPENED_FIELD.name = "opened"
-SCENE_DOOR_CFG_OPENED_FIELD.full_name = ".ftcfg.scene_door_cfg.opened"
-SCENE_DOOR_CFG_OPENED_FIELD.number = 8
-SCENE_DOOR_CFG_OPENED_FIELD.index = 7
-SCENE_DOOR_CFG_OPENED_FIELD.label = 2
-SCENE_DOOR_CFG_OPENED_FIELD.has_default_value = false
-SCENE_DOOR_CFG_OPENED_FIELD.default_value = 0
-SCENE_DOOR_CFG_OPENED_FIELD.type = 5
-SCENE_DOOR_CFG_OPENED_FIELD.cpp_type = 1
-
-SCENE_DOOR_CFG_RESID_FIELD.name = "resid"
-SCENE_DOOR_CFG_RESID_FIELD.full_name = ".ftcfg.scene_door_cfg.resid"
-SCENE_DOOR_CFG_RESID_FIELD.number = 9
-SCENE_DOOR_CFG_RESID_FIELD.index = 8
-SCENE_DOOR_CFG_RESID_FIELD.label = 2
-SCENE_DOOR_CFG_RESID_FIELD.has_default_value = false
-SCENE_DOOR_CFG_RESID_FIELD.default_value = 0
-SCENE_DOOR_CFG_RESID_FIELD.type = 5
-SCENE_DOOR_CFG_RESID_FIELD.cpp_type = 1
-
-SCENE_DOOR_CFG.name = "scene_door_cfg"
-SCENE_DOOR_CFG.full_name = ".ftcfg.scene_door_cfg"
-SCENE_DOOR_CFG.nested_types = {}
-SCENE_DOOR_CFG.enum_types = {}
-SCENE_DOOR_CFG.fields = {SCENE_DOOR_CFG_ID_FIELD, SCENE_DOOR_CFG_MAP_ID_FIELD, SCENE_DOOR_CFG_POS_X_FIELD, SCENE_DOOR_CFG_POS_Y_FIELD, SCENE_DOOR_CFG_POS_Z_FIELD, SCENE_DOOR_CFG_WIDTH_FIELD, SCENE_DOOR_CFG_ORIENTATION_FIELD, SCENE_DOOR_CFG_OPENED_FIELD, SCENE_DOOR_CFG_RESID_FIELD}
-SCENE_DOOR_CFG.is_extendable = false
-SCENE_DOOR_CFG.extensions = {}
-SCENE_DOOR_CFGS_ITEMS_FIELD.name = "items"
-SCENE_DOOR_CFGS_ITEMS_FIELD.full_name = ".ftcfg.scene_door_cfgs.items"
-SCENE_DOOR_CFGS_ITEMS_FIELD.number = 1
-SCENE_DOOR_CFGS_ITEMS_FIELD.index = 0
-SCENE_DOOR_CFGS_ITEMS_FIELD.label = 3
-SCENE_DOOR_CFGS_ITEMS_FIELD.has_default_value = false
-SCENE_DOOR_CFGS_ITEMS_FIELD.default_value = {}
-SCENE_DOOR_CFGS_ITEMS_FIELD.message_type = SCENE_DOOR_CFG
-SCENE_DOOR_CFGS_ITEMS_FIELD.type = 11
-SCENE_DOOR_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SCENE_DOOR_CFGS.name = "scene_door_cfgs"
-SCENE_DOOR_CFGS.full_name = ".ftcfg.scene_door_cfgs"
-SCENE_DOOR_CFGS.nested_types = {}
-SCENE_DOOR_CFGS.enum_types = {}
-SCENE_DOOR_CFGS.fields = {SCENE_DOOR_CFGS_ITEMS_FIELD}
-SCENE_DOOR_CFGS.is_extendable = false
-SCENE_DOOR_CFGS.extensions = {}
-REVIVE_SHOW_CFG_ID_FIELD.name = "id"
-REVIVE_SHOW_CFG_ID_FIELD.full_name = ".ftcfg.revive_show_cfg.id"
-REVIVE_SHOW_CFG_ID_FIELD.number = 1
-REVIVE_SHOW_CFG_ID_FIELD.index = 0
-REVIVE_SHOW_CFG_ID_FIELD.label = 2
-REVIVE_SHOW_CFG_ID_FIELD.has_default_value = false
-REVIVE_SHOW_CFG_ID_FIELD.default_value = 0
-REVIVE_SHOW_CFG_ID_FIELD.type = 5
-REVIVE_SHOW_CFG_ID_FIELD.cpp_type = 1
-
-REVIVE_SHOW_CFG_INDEX_FIELD.name = "index"
-REVIVE_SHOW_CFG_INDEX_FIELD.full_name = ".ftcfg.revive_show_cfg.index"
-REVIVE_SHOW_CFG_INDEX_FIELD.number = 2
-REVIVE_SHOW_CFG_INDEX_FIELD.index = 1
-REVIVE_SHOW_CFG_INDEX_FIELD.label = 2
-REVIVE_SHOW_CFG_INDEX_FIELD.has_default_value = false
-REVIVE_SHOW_CFG_INDEX_FIELD.default_value = 0
-REVIVE_SHOW_CFG_INDEX_FIELD.type = 5
-REVIVE_SHOW_CFG_INDEX_FIELD.cpp_type = 1
-
-REVIVE_SHOW_CFG_NAME_FIELD.name = "name"
-REVIVE_SHOW_CFG_NAME_FIELD.full_name = ".ftcfg.revive_show_cfg.name"
-REVIVE_SHOW_CFG_NAME_FIELD.number = 3
-REVIVE_SHOW_CFG_NAME_FIELD.index = 2
-REVIVE_SHOW_CFG_NAME_FIELD.label = 2
-REVIVE_SHOW_CFG_NAME_FIELD.has_default_value = false
-REVIVE_SHOW_CFG_NAME_FIELD.default_value = 0
-REVIVE_SHOW_CFG_NAME_FIELD.type = 5
-REVIVE_SHOW_CFG_NAME_FIELD.cpp_type = 1
-
-REVIVE_SHOW_CFG.name = "revive_show_cfg"
-REVIVE_SHOW_CFG.full_name = ".ftcfg.revive_show_cfg"
-REVIVE_SHOW_CFG.nested_types = {}
-REVIVE_SHOW_CFG.enum_types = {}
-REVIVE_SHOW_CFG.fields = {REVIVE_SHOW_CFG_ID_FIELD, REVIVE_SHOW_CFG_INDEX_FIELD, REVIVE_SHOW_CFG_NAME_FIELD}
-REVIVE_SHOW_CFG.is_extendable = false
-REVIVE_SHOW_CFG.extensions = {}
-REVIVE_SHOW_CFGS_ITEMS_FIELD.name = "items"
-REVIVE_SHOW_CFGS_ITEMS_FIELD.full_name = ".ftcfg.revive_show_cfgs.items"
-REVIVE_SHOW_CFGS_ITEMS_FIELD.number = 1
-REVIVE_SHOW_CFGS_ITEMS_FIELD.index = 0
-REVIVE_SHOW_CFGS_ITEMS_FIELD.label = 3
-REVIVE_SHOW_CFGS_ITEMS_FIELD.has_default_value = false
-REVIVE_SHOW_CFGS_ITEMS_FIELD.default_value = {}
-REVIVE_SHOW_CFGS_ITEMS_FIELD.message_type = REVIVE_SHOW_CFG
-REVIVE_SHOW_CFGS_ITEMS_FIELD.type = 11
-REVIVE_SHOW_CFGS_ITEMS_FIELD.cpp_type = 10
-
-REVIVE_SHOW_CFGS.name = "revive_show_cfgs"
-REVIVE_SHOW_CFGS.full_name = ".ftcfg.revive_show_cfgs"
-REVIVE_SHOW_CFGS.nested_types = {}
-REVIVE_SHOW_CFGS.enum_types = {}
-REVIVE_SHOW_CFGS.fields = {REVIVE_SHOW_CFGS_ITEMS_FIELD}
-REVIVE_SHOW_CFGS.is_extendable = false
-REVIVE_SHOW_CFGS.extensions = {}
-FASHION_APPRECIATION_CFG_LEVEL_FIELD.name = "level"
-FASHION_APPRECIATION_CFG_LEVEL_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.level"
-FASHION_APPRECIATION_CFG_LEVEL_FIELD.number = 1
-FASHION_APPRECIATION_CFG_LEVEL_FIELD.index = 0
-FASHION_APPRECIATION_CFG_LEVEL_FIELD.label = 2
-FASHION_APPRECIATION_CFG_LEVEL_FIELD.has_default_value = false
-FASHION_APPRECIATION_CFG_LEVEL_FIELD.default_value = 0
-FASHION_APPRECIATION_CFG_LEVEL_FIELD.type = 13
-FASHION_APPRECIATION_CFG_LEVEL_FIELD.cpp_type = 3
-
-FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.name = "next_level"
-FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.next_level"
-FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.number = 2
-FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.index = 1
-FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.label = 2
-FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.has_default_value = false
-FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.default_value = 0
-FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.type = 13
-FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD.cpp_type = 3
-
-FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.name = "need_point"
-FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.need_point"
-FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.number = 3
-FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.index = 2
-FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.label = 2
-FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.has_default_value = false
-FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.default_value = 0
-FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.type = 13
-FASHION_APPRECIATION_CFG_NEED_POINT_FIELD.cpp_type = 3
-
-FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.name = "cost_item_id"
-FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.cost_item_id"
-FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.number = 4
-FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.index = 3
-FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.label = 3
-FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.has_default_value = false
-FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.default_value = {}
-FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.type = 5
-FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD.cpp_type = 1
-
-FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.name = "cost_item_count"
-FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.cost_item_count"
-FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.number = 5
-FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.index = 4
-FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.label = 3
-FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.has_default_value = false
-FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.default_value = {}
-FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.type = 5
-FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD.cpp_type = 1
-
-FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.name = "cost_coin_type"
-FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.cost_coin_type"
-FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.number = 6
-FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.index = 5
-FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.label = 3
-FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.has_default_value = false
-FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.default_value = {}
-FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.type = 5
-FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD.cpp_type = 1
-
-FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.name = "cost_coin_count"
-FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.cost_coin_count"
-FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.number = 7
-FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.index = 6
-FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.label = 3
-FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.has_default_value = false
-FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.default_value = {}
-FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.type = 5
-FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD.cpp_type = 1
-
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.name = "reward_attribute_type"
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.reward_attribute_type"
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.number = 8
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.index = 7
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.label = 3
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.has_default_value = false
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.default_value = {}
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.type = 5
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD.cpp_type = 1
-
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.name = "reward_attribute_count"
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.reward_attribute_count"
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.number = 9
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.index = 8
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.label = 3
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.has_default_value = false
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.default_value = {}
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.type = 5
-FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.cpp_type = 1
-
-FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.name = "combat_point"
-FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.full_name = ".ftcfg.fashion_appreciation_cfg.combat_point"
-FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.number = 10
-FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.index = 9
-FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.label = 2
-FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.has_default_value = false
-FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.default_value = 0.0
-FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.type = 2
-FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD.cpp_type = 6
-
-FASHION_APPRECIATION_CFG.name = "fashion_appreciation_cfg"
-FASHION_APPRECIATION_CFG.full_name = ".ftcfg.fashion_appreciation_cfg"
-FASHION_APPRECIATION_CFG.nested_types = {}
-FASHION_APPRECIATION_CFG.enum_types = {}
-FASHION_APPRECIATION_CFG.fields = {FASHION_APPRECIATION_CFG_LEVEL_FIELD, FASHION_APPRECIATION_CFG_NEXT_LEVEL_FIELD, FASHION_APPRECIATION_CFG_NEED_POINT_FIELD, FASHION_APPRECIATION_CFG_COST_ITEM_ID_FIELD, FASHION_APPRECIATION_CFG_COST_ITEM_COUNT_FIELD, FASHION_APPRECIATION_CFG_COST_COIN_TYPE_FIELD, FASHION_APPRECIATION_CFG_COST_COIN_COUNT_FIELD, FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_TYPE_FIELD, FASHION_APPRECIATION_CFG_REWARD_ATTRIBUTE_COUNT_FIELD, FASHION_APPRECIATION_CFG_COMBAT_POINT_FIELD}
-FASHION_APPRECIATION_CFG.is_extendable = false
-FASHION_APPRECIATION_CFG.extensions = {}
-FASHION_APPRECIATION_CFGS_ITEMS_FIELD.name = "items"
-FASHION_APPRECIATION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.fashion_appreciation_cfgs.items"
-FASHION_APPRECIATION_CFGS_ITEMS_FIELD.number = 1
-FASHION_APPRECIATION_CFGS_ITEMS_FIELD.index = 0
-FASHION_APPRECIATION_CFGS_ITEMS_FIELD.label = 3
-FASHION_APPRECIATION_CFGS_ITEMS_FIELD.has_default_value = false
-FASHION_APPRECIATION_CFGS_ITEMS_FIELD.default_value = {}
-FASHION_APPRECIATION_CFGS_ITEMS_FIELD.message_type = FASHION_APPRECIATION_CFG
-FASHION_APPRECIATION_CFGS_ITEMS_FIELD.type = 11
-FASHION_APPRECIATION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-FASHION_APPRECIATION_CFGS.name = "fashion_appreciation_cfgs"
-FASHION_APPRECIATION_CFGS.full_name = ".ftcfg.fashion_appreciation_cfgs"
-FASHION_APPRECIATION_CFGS.nested_types = {}
-FASHION_APPRECIATION_CFGS.enum_types = {}
-FASHION_APPRECIATION_CFGS.fields = {FASHION_APPRECIATION_CFGS_ITEMS_FIELD}
-FASHION_APPRECIATION_CFGS.is_extendable = false
-FASHION_APPRECIATION_CFGS.extensions = {}
-FASHION_CFG_ID_FIELD.name = "id"
-FASHION_CFG_ID_FIELD.full_name = ".ftcfg.fashion_cfg.id"
-FASHION_CFG_ID_FIELD.number = 1
-FASHION_CFG_ID_FIELD.index = 0
-FASHION_CFG_ID_FIELD.label = 2
-FASHION_CFG_ID_FIELD.has_default_value = false
-FASHION_CFG_ID_FIELD.default_value = 0
-FASHION_CFG_ID_FIELD.type = 5
-FASHION_CFG_ID_FIELD.cpp_type = 1
-
-FASHION_CFG_ID_GROUP_FIELD.name = "id_group"
-FASHION_CFG_ID_GROUP_FIELD.full_name = ".ftcfg.fashion_cfg.id_group"
-FASHION_CFG_ID_GROUP_FIELD.number = 2
-FASHION_CFG_ID_GROUP_FIELD.index = 1
-FASHION_CFG_ID_GROUP_FIELD.label = 2
-FASHION_CFG_ID_GROUP_FIELD.has_default_value = false
-FASHION_CFG_ID_GROUP_FIELD.default_value = 0
-FASHION_CFG_ID_GROUP_FIELD.type = 13
-FASHION_CFG_ID_GROUP_FIELD.cpp_type = 3
-
-FASHION_CFG_FASHION_COST_FIELD.name = "fashion_cost"
-FASHION_CFG_FASHION_COST_FIELD.full_name = ".ftcfg.fashion_cfg.fashion_cost"
-FASHION_CFG_FASHION_COST_FIELD.number = 3
-FASHION_CFG_FASHION_COST_FIELD.index = 2
-FASHION_CFG_FASHION_COST_FIELD.label = 3
-FASHION_CFG_FASHION_COST_FIELD.has_default_value = false
-FASHION_CFG_FASHION_COST_FIELD.default_value = {}
-FASHION_CFG_FASHION_COST_FIELD.type = 13
-FASHION_CFG_FASHION_COST_FIELD.cpp_type = 3
-
-FASHION_CFG_FASHION_TYPE_FIELD.name = "fashion_type"
-FASHION_CFG_FASHION_TYPE_FIELD.full_name = ".ftcfg.fashion_cfg.fashion_type"
-FASHION_CFG_FASHION_TYPE_FIELD.number = 4
-FASHION_CFG_FASHION_TYPE_FIELD.index = 3
-FASHION_CFG_FASHION_TYPE_FIELD.label = 2
-FASHION_CFG_FASHION_TYPE_FIELD.has_default_value = false
-FASHION_CFG_FASHION_TYPE_FIELD.default_value = 0
-FASHION_CFG_FASHION_TYPE_FIELD.type = 13
-FASHION_CFG_FASHION_TYPE_FIELD.cpp_type = 3
-
-FASHION_CFG_VOCATION_LIMIT_FIELD.name = "vocation_limit"
-FASHION_CFG_VOCATION_LIMIT_FIELD.full_name = ".ftcfg.fashion_cfg.vocation_limit"
-FASHION_CFG_VOCATION_LIMIT_FIELD.number = 5
-FASHION_CFG_VOCATION_LIMIT_FIELD.index = 4
-FASHION_CFG_VOCATION_LIMIT_FIELD.label = 2
-FASHION_CFG_VOCATION_LIMIT_FIELD.has_default_value = false
-FASHION_CFG_VOCATION_LIMIT_FIELD.default_value = 0
-FASHION_CFG_VOCATION_LIMIT_FIELD.type = 5
-FASHION_CFG_VOCATION_LIMIT_FIELD.cpp_type = 1
-
-FASHION_CFG_FASHION_NAME_FIELD.name = "fashion_name"
-FASHION_CFG_FASHION_NAME_FIELD.full_name = ".ftcfg.fashion_cfg.fashion_name"
-FASHION_CFG_FASHION_NAME_FIELD.number = 6
-FASHION_CFG_FASHION_NAME_FIELD.index = 5
-FASHION_CFG_FASHION_NAME_FIELD.label = 2
-FASHION_CFG_FASHION_NAME_FIELD.has_default_value = false
-FASHION_CFG_FASHION_NAME_FIELD.default_value = 0
-FASHION_CFG_FASHION_NAME_FIELD.type = 5
-FASHION_CFG_FASHION_NAME_FIELD.cpp_type = 1
-
-FASHION_CFG_FASHION_ICON_FIELD.name = "fashion_icon"
-FASHION_CFG_FASHION_ICON_FIELD.full_name = ".ftcfg.fashion_cfg.fashion_icon"
-FASHION_CFG_FASHION_ICON_FIELD.number = 7
-FASHION_CFG_FASHION_ICON_FIELD.index = 6
-FASHION_CFG_FASHION_ICON_FIELD.label = 2
-FASHION_CFG_FASHION_ICON_FIELD.has_default_value = false
-FASHION_CFG_FASHION_ICON_FIELD.default_value = 0
-FASHION_CFG_FASHION_ICON_FIELD.type = 5
-FASHION_CFG_FASHION_ICON_FIELD.cpp_type = 1
-
-FASHION_CFG_FASHION_PARTS_FIELD.name = "fashion_parts"
-FASHION_CFG_FASHION_PARTS_FIELD.full_name = ".ftcfg.fashion_cfg.fashion_parts"
-FASHION_CFG_FASHION_PARTS_FIELD.number = 8
-FASHION_CFG_FASHION_PARTS_FIELD.index = 7
-FASHION_CFG_FASHION_PARTS_FIELD.label = 3
-FASHION_CFG_FASHION_PARTS_FIELD.has_default_value = false
-FASHION_CFG_FASHION_PARTS_FIELD.default_value = {}
-FASHION_CFG_FASHION_PARTS_FIELD.type = 5
-FASHION_CFG_FASHION_PARTS_FIELD.cpp_type = 1
-
-FASHION_CFG_FASHION_COLOUR_FIELD.name = "fashion_colour"
-FASHION_CFG_FASHION_COLOUR_FIELD.full_name = ".ftcfg.fashion_cfg.fashion_colour"
-FASHION_CFG_FASHION_COLOUR_FIELD.number = 9
-FASHION_CFG_FASHION_COLOUR_FIELD.index = 8
-FASHION_CFG_FASHION_COLOUR_FIELD.label = 2
-FASHION_CFG_FASHION_COLOUR_FIELD.has_default_value = false
-FASHION_CFG_FASHION_COLOUR_FIELD.default_value = 0
-FASHION_CFG_FASHION_COLOUR_FIELD.type = 5
-FASHION_CFG_FASHION_COLOUR_FIELD.cpp_type = 1
-
-FASHION_CFG_FASHION_TIPS_FIELD.name = "fashion_tips"
-FASHION_CFG_FASHION_TIPS_FIELD.full_name = ".ftcfg.fashion_cfg.fashion_tips"
-FASHION_CFG_FASHION_TIPS_FIELD.number = 10
-FASHION_CFG_FASHION_TIPS_FIELD.index = 9
-FASHION_CFG_FASHION_TIPS_FIELD.label = 2
-FASHION_CFG_FASHION_TIPS_FIELD.has_default_value = false
-FASHION_CFG_FASHION_TIPS_FIELD.default_value = 0
-FASHION_CFG_FASHION_TIPS_FIELD.type = 5
-FASHION_CFG_FASHION_TIPS_FIELD.cpp_type = 1
-
-FASHION_CFG_ATTRIBUTE_TYPE_FIELD.name = "attribute_type"
-FASHION_CFG_ATTRIBUTE_TYPE_FIELD.full_name = ".ftcfg.fashion_cfg.attribute_type"
-FASHION_CFG_ATTRIBUTE_TYPE_FIELD.number = 11
-FASHION_CFG_ATTRIBUTE_TYPE_FIELD.index = 10
-FASHION_CFG_ATTRIBUTE_TYPE_FIELD.label = 3
-FASHION_CFG_ATTRIBUTE_TYPE_FIELD.has_default_value = false
-FASHION_CFG_ATTRIBUTE_TYPE_FIELD.default_value = {}
-FASHION_CFG_ATTRIBUTE_TYPE_FIELD.type = 5
-FASHION_CFG_ATTRIBUTE_TYPE_FIELD.cpp_type = 1
-
-FASHION_CFG_ATTRIBUTE_MODE_FIELD.name = "attribute_mode"
-FASHION_CFG_ATTRIBUTE_MODE_FIELD.full_name = ".ftcfg.fashion_cfg.attribute_mode"
-FASHION_CFG_ATTRIBUTE_MODE_FIELD.number = 12
-FASHION_CFG_ATTRIBUTE_MODE_FIELD.index = 11
-FASHION_CFG_ATTRIBUTE_MODE_FIELD.label = 3
-FASHION_CFG_ATTRIBUTE_MODE_FIELD.has_default_value = false
-FASHION_CFG_ATTRIBUTE_MODE_FIELD.default_value = {}
-FASHION_CFG_ATTRIBUTE_MODE_FIELD.type = 5
-FASHION_CFG_ATTRIBUTE_MODE_FIELD.cpp_type = 1
-
-FASHION_CFG_ATTRIBUTE_COUNT_FIELD.name = "attribute_count"
-FASHION_CFG_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.fashion_cfg.attribute_count"
-FASHION_CFG_ATTRIBUTE_COUNT_FIELD.number = 13
-FASHION_CFG_ATTRIBUTE_COUNT_FIELD.index = 12
-FASHION_CFG_ATTRIBUTE_COUNT_FIELD.label = 3
-FASHION_CFG_ATTRIBUTE_COUNT_FIELD.has_default_value = false
-FASHION_CFG_ATTRIBUTE_COUNT_FIELD.default_value = {}
-FASHION_CFG_ATTRIBUTE_COUNT_FIELD.type = 2
-FASHION_CFG_ATTRIBUTE_COUNT_FIELD.cpp_type = 6
-
-FASHION_CFG.name = "fashion_cfg"
-FASHION_CFG.full_name = ".ftcfg.fashion_cfg"
-FASHION_CFG.nested_types = {}
-FASHION_CFG.enum_types = {}
-FASHION_CFG.fields = {FASHION_CFG_ID_FIELD, FASHION_CFG_ID_GROUP_FIELD, FASHION_CFG_FASHION_COST_FIELD, FASHION_CFG_FASHION_TYPE_FIELD, FASHION_CFG_VOCATION_LIMIT_FIELD, FASHION_CFG_FASHION_NAME_FIELD, FASHION_CFG_FASHION_ICON_FIELD, FASHION_CFG_FASHION_PARTS_FIELD, FASHION_CFG_FASHION_COLOUR_FIELD, FASHION_CFG_FASHION_TIPS_FIELD, FASHION_CFG_ATTRIBUTE_TYPE_FIELD, FASHION_CFG_ATTRIBUTE_MODE_FIELD, FASHION_CFG_ATTRIBUTE_COUNT_FIELD}
-FASHION_CFG.is_extendable = false
-FASHION_CFG.extensions = {}
-FASHION_CFGS_ITEMS_FIELD.name = "items"
-FASHION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.fashion_cfgs.items"
-FASHION_CFGS_ITEMS_FIELD.number = 1
-FASHION_CFGS_ITEMS_FIELD.index = 0
-FASHION_CFGS_ITEMS_FIELD.label = 3
-FASHION_CFGS_ITEMS_FIELD.has_default_value = false
-FASHION_CFGS_ITEMS_FIELD.default_value = {}
-FASHION_CFGS_ITEMS_FIELD.message_type = FASHION_CFG
-FASHION_CFGS_ITEMS_FIELD.type = 11
-FASHION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-FASHION_CFGS.name = "fashion_cfgs"
-FASHION_CFGS.full_name = ".ftcfg.fashion_cfgs"
-FASHION_CFGS.nested_types = {}
-FASHION_CFGS.enum_types = {}
-FASHION_CFGS.fields = {FASHION_CFGS_ITEMS_FIELD}
-FASHION_CFGS.is_extendable = false
-FASHION_CFGS.extensions = {}
-FASHION_COST_CFG_ID_FIELD.name = "id"
-FASHION_COST_CFG_ID_FIELD.full_name = ".ftcfg.fashion_cost_cfg.id"
-FASHION_COST_CFG_ID_FIELD.number = 1
-FASHION_COST_CFG_ID_FIELD.index = 0
-FASHION_COST_CFG_ID_FIELD.label = 2
-FASHION_COST_CFG_ID_FIELD.has_default_value = false
-FASHION_COST_CFG_ID_FIELD.default_value = 0
-FASHION_COST_CFG_ID_FIELD.type = 13
-FASHION_COST_CFG_ID_FIELD.cpp_type = 3
-
-FASHION_COST_CFG_FASHION_TIME_FIELD.name = "fashion_time"
-FASHION_COST_CFG_FASHION_TIME_FIELD.full_name = ".ftcfg.fashion_cost_cfg.fashion_time"
-FASHION_COST_CFG_FASHION_TIME_FIELD.number = 2
-FASHION_COST_CFG_FASHION_TIME_FIELD.index = 1
-FASHION_COST_CFG_FASHION_TIME_FIELD.label = 2
-FASHION_COST_CFG_FASHION_TIME_FIELD.has_default_value = false
-FASHION_COST_CFG_FASHION_TIME_FIELD.default_value = 0
-FASHION_COST_CFG_FASHION_TIME_FIELD.type = 5
-FASHION_COST_CFG_FASHION_TIME_FIELD.cpp_type = 1
-
-FASHION_COST_CFG_FASHION_POINT_FIELD.name = "fashion_point"
-FASHION_COST_CFG_FASHION_POINT_FIELD.full_name = ".ftcfg.fashion_cost_cfg.fashion_point"
-FASHION_COST_CFG_FASHION_POINT_FIELD.number = 3
-FASHION_COST_CFG_FASHION_POINT_FIELD.index = 2
-FASHION_COST_CFG_FASHION_POINT_FIELD.label = 2
-FASHION_COST_CFG_FASHION_POINT_FIELD.has_default_value = false
-FASHION_COST_CFG_FASHION_POINT_FIELD.default_value = 0
-FASHION_COST_CFG_FASHION_POINT_FIELD.type = 13
-FASHION_COST_CFG_FASHION_POINT_FIELD.cpp_type = 3
-
-FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.name = "unlock_level"
-FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_level"
-FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.number = 4
-FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.index = 3
-FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.label = 2
-FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.has_default_value = false
-FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.default_value = 0
-FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.type = 5
-FASHION_COST_CFG_UNLOCK_LEVEL_FIELD.cpp_type = 1
-
-FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.name = "unlock_frontid"
-FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_frontid"
-FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.number = 5
-FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.index = 4
-FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.label = 3
-FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.has_default_value = false
-FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.default_value = {}
-FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.type = 5
-FASHION_COST_CFG_UNLOCK_FRONTID_FIELD.cpp_type = 1
-
-FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.name = "unlock_itemid"
-FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_itemid"
-FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.number = 6
-FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.index = 5
-FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.label = 3
-FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.has_default_value = false
-FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.default_value = {}
-FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.type = 5
-FASHION_COST_CFG_UNLOCK_ITEMID_FIELD.cpp_type = 1
-
-FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.name = "unlock_itemcount"
-FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_itemcount"
-FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.number = 7
-FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.index = 6
-FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.label = 3
-FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.has_default_value = false
-FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.default_value = {}
-FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.type = 5
-FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD.cpp_type = 1
-
-FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.name = "unlock_cointype"
-FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_cointype"
-FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.number = 8
-FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.index = 7
-FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.label = 3
-FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.has_default_value = false
-FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.default_value = {}
-FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.type = 5
-FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD.cpp_type = 1
-
-FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.name = "unlock_coincount"
-FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_coincount"
-FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.number = 9
-FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.index = 8
-FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.label = 3
-FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.has_default_value = false
-FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.default_value = {}
-FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.type = 5
-FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD.cpp_type = 1
-
-FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.name = "unlock_allintensify"
-FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_allintensify"
-FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.number = 10
-FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.index = 9
-FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.label = 2
-FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.has_default_value = false
-FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.default_value = 0
-FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.type = 5
-FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD.cpp_type = 1
-
-FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.name = "unlock_specifyintensify"
-FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_specifyintensify"
-FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.number = 11
-FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.index = 10
-FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.label = 3
-FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.has_default_value = false
-FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.default_value = {}
-FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.type = 5
-FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD.cpp_type = 1
-
-FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.name = "unlock_gemstonelv"
-FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_gemstonelv"
-FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.number = 12
-FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.index = 11
-FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.label = 2
-FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.has_default_value = false
-FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.default_value = 0
-FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.type = 5
-FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD.cpp_type = 1
-
-FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.name = "unlock_quality"
-FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_quality"
-FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.number = 13
-FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.index = 12
-FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.label = 3
-FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.has_default_value = false
-FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.default_value = {}
-FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.type = 5
-FASHION_COST_CFG_UNLOCK_QUALITY_FIELD.cpp_type = 1
-
-FASHION_COST_CFG_UNLOCK_POWER_FIELD.name = "unlock_power"
-FASHION_COST_CFG_UNLOCK_POWER_FIELD.full_name = ".ftcfg.fashion_cost_cfg.unlock_power"
-FASHION_COST_CFG_UNLOCK_POWER_FIELD.number = 14
-FASHION_COST_CFG_UNLOCK_POWER_FIELD.index = 13
-FASHION_COST_CFG_UNLOCK_POWER_FIELD.label = 2
-FASHION_COST_CFG_UNLOCK_POWER_FIELD.has_default_value = false
-FASHION_COST_CFG_UNLOCK_POWER_FIELD.default_value = 0
-FASHION_COST_CFG_UNLOCK_POWER_FIELD.type = 5
-FASHION_COST_CFG_UNLOCK_POWER_FIELD.cpp_type = 1
-
-FASHION_COST_CFG.name = "fashion_cost_cfg"
-FASHION_COST_CFG.full_name = ".ftcfg.fashion_cost_cfg"
-FASHION_COST_CFG.nested_types = {}
-FASHION_COST_CFG.enum_types = {}
-FASHION_COST_CFG.fields = {FASHION_COST_CFG_ID_FIELD, FASHION_COST_CFG_FASHION_TIME_FIELD, FASHION_COST_CFG_FASHION_POINT_FIELD, FASHION_COST_CFG_UNLOCK_LEVEL_FIELD, FASHION_COST_CFG_UNLOCK_FRONTID_FIELD, FASHION_COST_CFG_UNLOCK_ITEMID_FIELD, FASHION_COST_CFG_UNLOCK_ITEMCOUNT_FIELD, FASHION_COST_CFG_UNLOCK_COINTYPE_FIELD, FASHION_COST_CFG_UNLOCK_COINCOUNT_FIELD, FASHION_COST_CFG_UNLOCK_ALLINTENSIFY_FIELD, FASHION_COST_CFG_UNLOCK_SPECIFYINTENSIFY_FIELD, FASHION_COST_CFG_UNLOCK_GEMSTONELV_FIELD, FASHION_COST_CFG_UNLOCK_QUALITY_FIELD, FASHION_COST_CFG_UNLOCK_POWER_FIELD}
-FASHION_COST_CFG.is_extendable = false
-FASHION_COST_CFG.extensions = {}
-FASHION_COST_CFGS_ITEMS_FIELD.name = "items"
-FASHION_COST_CFGS_ITEMS_FIELD.full_name = ".ftcfg.fashion_cost_cfgs.items"
-FASHION_COST_CFGS_ITEMS_FIELD.number = 1
-FASHION_COST_CFGS_ITEMS_FIELD.index = 0
-FASHION_COST_CFGS_ITEMS_FIELD.label = 3
-FASHION_COST_CFGS_ITEMS_FIELD.has_default_value = false
-FASHION_COST_CFGS_ITEMS_FIELD.default_value = {}
-FASHION_COST_CFGS_ITEMS_FIELD.message_type = FASHION_COST_CFG
-FASHION_COST_CFGS_ITEMS_FIELD.type = 11
-FASHION_COST_CFGS_ITEMS_FIELD.cpp_type = 10
-
-FASHION_COST_CFGS.name = "fashion_cost_cfgs"
-FASHION_COST_CFGS.full_name = ".ftcfg.fashion_cost_cfgs"
-FASHION_COST_CFGS.nested_types = {}
-FASHION_COST_CFGS.enum_types = {}
-FASHION_COST_CFGS.fields = {FASHION_COST_CFGS_ITEMS_FIELD}
-FASHION_COST_CFGS.is_extendable = false
-FASHION_COST_CFGS.extensions = {}
-MOUNTEQUIP_CFG_ID_FIELD.name = "id"
-MOUNTEQUIP_CFG_ID_FIELD.full_name = ".ftcfg.mountequip_cfg.id"
-MOUNTEQUIP_CFG_ID_FIELD.number = 1
-MOUNTEQUIP_CFG_ID_FIELD.index = 0
-MOUNTEQUIP_CFG_ID_FIELD.label = 2
-MOUNTEQUIP_CFG_ID_FIELD.has_default_value = false
-MOUNTEQUIP_CFG_ID_FIELD.default_value = 0
-MOUNTEQUIP_CFG_ID_FIELD.type = 13
-MOUNTEQUIP_CFG_ID_FIELD.cpp_type = 3
-
-MOUNTEQUIP_CFG_ITEM_NAME_FIELD.name = "item_name"
-MOUNTEQUIP_CFG_ITEM_NAME_FIELD.full_name = ".ftcfg.mountequip_cfg.item_name"
-MOUNTEQUIP_CFG_ITEM_NAME_FIELD.number = 2
-MOUNTEQUIP_CFG_ITEM_NAME_FIELD.index = 1
-MOUNTEQUIP_CFG_ITEM_NAME_FIELD.label = 2
-MOUNTEQUIP_CFG_ITEM_NAME_FIELD.has_default_value = false
-MOUNTEQUIP_CFG_ITEM_NAME_FIELD.default_value = 0
-MOUNTEQUIP_CFG_ITEM_NAME_FIELD.type = 5
-MOUNTEQUIP_CFG_ITEM_NAME_FIELD.cpp_type = 1
-
-MOUNTEQUIP_CFG_ITEM_DESC_FIELD.name = "item_desc"
-MOUNTEQUIP_CFG_ITEM_DESC_FIELD.full_name = ".ftcfg.mountequip_cfg.item_desc"
-MOUNTEQUIP_CFG_ITEM_DESC_FIELD.number = 3
-MOUNTEQUIP_CFG_ITEM_DESC_FIELD.index = 2
-MOUNTEQUIP_CFG_ITEM_DESC_FIELD.label = 2
-MOUNTEQUIP_CFG_ITEM_DESC_FIELD.has_default_value = false
-MOUNTEQUIP_CFG_ITEM_DESC_FIELD.default_value = 0
-MOUNTEQUIP_CFG_ITEM_DESC_FIELD.type = 5
-MOUNTEQUIP_CFG_ITEM_DESC_FIELD.cpp_type = 1
-
-MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.name = "need_level"
-MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.full_name = ".ftcfg.mountequip_cfg.need_level"
-MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.number = 4
-MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.index = 3
-MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.label = 2
-MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.has_default_value = false
-MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.default_value = 0
-MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.type = 5
-MOUNTEQUIP_CFG_NEED_LEVEL_FIELD.cpp_type = 1
-
-MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.name = "equip_place"
-MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.full_name = ".ftcfg.mountequip_cfg.equip_place"
-MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.number = 5
-MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.index = 4
-MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.label = 2
-MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.has_default_value = false
-MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.default_value = 0
-MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.type = 5
-MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD.cpp_type = 1
-
-MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.name = "display_type"
-MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.full_name = ".ftcfg.mountequip_cfg.display_type"
-MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.number = 6
-MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.index = 5
-MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.label = 2
-MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.has_default_value = false
-MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.default_value = 0
-MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.type = 5
-MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD.cpp_type = 1
-
-MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.name = "item_color"
-MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.full_name = ".ftcfg.mountequip_cfg.item_color"
-MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.number = 7
-MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.index = 6
-MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.label = 2
-MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.has_default_value = false
-MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.default_value = nil
-MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.enum_type = config_predefine_pb.EITEMCOLOR
-MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.type = 14
-MOUNTEQUIP_CFG_ITEM_COLOR_FIELD.cpp_type = 8
-
-MOUNTEQUIP_CFG_ITEM_ICON_FIELD.name = "item_icon"
-MOUNTEQUIP_CFG_ITEM_ICON_FIELD.full_name = ".ftcfg.mountequip_cfg.item_icon"
-MOUNTEQUIP_CFG_ITEM_ICON_FIELD.number = 8
-MOUNTEQUIP_CFG_ITEM_ICON_FIELD.index = 7
-MOUNTEQUIP_CFG_ITEM_ICON_FIELD.label = 2
-MOUNTEQUIP_CFG_ITEM_ICON_FIELD.has_default_value = false
-MOUNTEQUIP_CFG_ITEM_ICON_FIELD.default_value = 0
-MOUNTEQUIP_CFG_ITEM_ICON_FIELD.type = 5
-MOUNTEQUIP_CFG_ITEM_ICON_FIELD.cpp_type = 1
-
-MOUNTEQUIP_CFG_COULD_TRADE_FIELD.name = "could_trade"
-MOUNTEQUIP_CFG_COULD_TRADE_FIELD.full_name = ".ftcfg.mountequip_cfg.could_trade"
-MOUNTEQUIP_CFG_COULD_TRADE_FIELD.number = 9
-MOUNTEQUIP_CFG_COULD_TRADE_FIELD.index = 8
-MOUNTEQUIP_CFG_COULD_TRADE_FIELD.label = 2
-MOUNTEQUIP_CFG_COULD_TRADE_FIELD.has_default_value = false
-MOUNTEQUIP_CFG_COULD_TRADE_FIELD.default_value = 0
-MOUNTEQUIP_CFG_COULD_TRADE_FIELD.type = 5
-MOUNTEQUIP_CFG_COULD_TRADE_FIELD.cpp_type = 1
-
-MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.name = "effect_timelimited"
-MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.full_name = ".ftcfg.mountequip_cfg.effect_timelimited"
-MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.number = 10
-MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.index = 9
-MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.label = 2
-MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.has_default_value = false
-MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.default_value = 0
-MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.type = 5
-MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD.cpp_type = 1
-
-MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.name = "attribute_type"
-MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.full_name = ".ftcfg.mountequip_cfg.attribute_type"
-MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.number = 11
-MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.index = 10
-MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.label = 3
-MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.has_default_value = false
-MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.default_value = {}
-MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.type = 5
-MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD.cpp_type = 1
-
-MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.name = "attribute_mode"
-MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.full_name = ".ftcfg.mountequip_cfg.attribute_mode"
-MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.number = 12
-MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.index = 11
-MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.label = 3
-MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.has_default_value = false
-MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.default_value = {}
-MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.type = 5
-MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD.cpp_type = 1
-
-MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.name = "attribute_count"
-MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.mountequip_cfg.attribute_count"
-MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.number = 13
-MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.index = 12
-MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.label = 3
-MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.has_default_value = false
-MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.default_value = {}
-MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.type = 2
-MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD.cpp_type = 6
-
-MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.name = "combat_point"
-MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.full_name = ".ftcfg.mountequip_cfg.combat_point"
-MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.number = 14
-MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.index = 13
-MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.label = 2
-MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.has_default_value = false
-MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.default_value = 0
-MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.type = 13
-MOUNTEQUIP_CFG_COMBAT_POINT_FIELD.cpp_type = 3
-
-MOUNTEQUIP_CFG.name = "mountequip_cfg"
-MOUNTEQUIP_CFG.full_name = ".ftcfg.mountequip_cfg"
-MOUNTEQUIP_CFG.nested_types = {}
-MOUNTEQUIP_CFG.enum_types = {}
-MOUNTEQUIP_CFG.fields = {MOUNTEQUIP_CFG_ID_FIELD, MOUNTEQUIP_CFG_ITEM_NAME_FIELD, MOUNTEQUIP_CFG_ITEM_DESC_FIELD, MOUNTEQUIP_CFG_NEED_LEVEL_FIELD, MOUNTEQUIP_CFG_EQUIP_PLACE_FIELD, MOUNTEQUIP_CFG_DISPLAY_TYPE_FIELD, MOUNTEQUIP_CFG_ITEM_COLOR_FIELD, MOUNTEQUIP_CFG_ITEM_ICON_FIELD, MOUNTEQUIP_CFG_COULD_TRADE_FIELD, MOUNTEQUIP_CFG_EFFECT_TIMELIMITED_FIELD, MOUNTEQUIP_CFG_ATTRIBUTE_TYPE_FIELD, MOUNTEQUIP_CFG_ATTRIBUTE_MODE_FIELD, MOUNTEQUIP_CFG_ATTRIBUTE_COUNT_FIELD, MOUNTEQUIP_CFG_COMBAT_POINT_FIELD}
-MOUNTEQUIP_CFG.is_extendable = false
-MOUNTEQUIP_CFG.extensions = {}
-MOUNTEQUIP_CFGS_ITEMS_FIELD.name = "items"
-MOUNTEQUIP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.mountequip_cfgs.items"
-MOUNTEQUIP_CFGS_ITEMS_FIELD.number = 1
-MOUNTEQUIP_CFGS_ITEMS_FIELD.index = 0
-MOUNTEQUIP_CFGS_ITEMS_FIELD.label = 3
-MOUNTEQUIP_CFGS_ITEMS_FIELD.has_default_value = false
-MOUNTEQUIP_CFGS_ITEMS_FIELD.default_value = {}
-MOUNTEQUIP_CFGS_ITEMS_FIELD.message_type = MOUNTEQUIP_CFG
-MOUNTEQUIP_CFGS_ITEMS_FIELD.type = 11
-MOUNTEQUIP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MOUNTEQUIP_CFGS.name = "mountequip_cfgs"
-MOUNTEQUIP_CFGS.full_name = ".ftcfg.mountequip_cfgs"
-MOUNTEQUIP_CFGS.nested_types = {}
-MOUNTEQUIP_CFGS.enum_types = {}
-MOUNTEQUIP_CFGS.fields = {MOUNTEQUIP_CFGS_ITEMS_FIELD}
-MOUNTEQUIP_CFGS.is_extendable = false
-MOUNTEQUIP_CFGS.extensions = {}
-INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.name = "id"
-INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.full_name = ".ftcfg.independent_random_reward_cfg.id"
-INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.number = 1
-INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.index = 0
-INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.label = 2
-INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.has_default_value = false
-INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.default_value = 0
-INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.type = 5
-INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD.cpp_type = 1
-
-INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.name = "drop_rate"
-INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.full_name = ".ftcfg.independent_random_reward_cfg.drop_rate"
-INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.number = 2
-INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.index = 1
-INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.label = 3
-INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.has_default_value = false
-INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.default_value = {}
-INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.type = 5
-INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD.cpp_type = 1
-
-INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.name = "random_reward_id"
-INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.full_name = ".ftcfg.independent_random_reward_cfg.random_reward_id"
-INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.number = 3
-INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.index = 2
-INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.label = 3
-INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.has_default_value = false
-INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.default_value = {}
-INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.type = 5
-INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD.cpp_type = 1
-
-INDEPENDENT_RANDOM_REWARD_CFG.name = "independent_random_reward_cfg"
-INDEPENDENT_RANDOM_REWARD_CFG.full_name = ".ftcfg.independent_random_reward_cfg"
-INDEPENDENT_RANDOM_REWARD_CFG.nested_types = {}
-INDEPENDENT_RANDOM_REWARD_CFG.enum_types = {}
-INDEPENDENT_RANDOM_REWARD_CFG.fields = {INDEPENDENT_RANDOM_REWARD_CFG_ID_FIELD, INDEPENDENT_RANDOM_REWARD_CFG_DROP_RATE_FIELD, INDEPENDENT_RANDOM_REWARD_CFG_RANDOM_REWARD_ID_FIELD}
-INDEPENDENT_RANDOM_REWARD_CFG.is_extendable = false
-INDEPENDENT_RANDOM_REWARD_CFG.extensions = {}
-INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.name = "items"
-INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.independent_random_reward_cfgs.items"
-INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.number = 1
-INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.index = 0
-INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.label = 3
-INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.has_default_value = false
-INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.default_value = {}
-INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.message_type = INDEPENDENT_RANDOM_REWARD_CFG
-INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.type = 11
-INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD.cpp_type = 10
-
-INDEPENDENT_RANDOM_REWARD_CFGS.name = "independent_random_reward_cfgs"
-INDEPENDENT_RANDOM_REWARD_CFGS.full_name = ".ftcfg.independent_random_reward_cfgs"
-INDEPENDENT_RANDOM_REWARD_CFGS.nested_types = {}
-INDEPENDENT_RANDOM_REWARD_CFGS.enum_types = {}
-INDEPENDENT_RANDOM_REWARD_CFGS.fields = {INDEPENDENT_RANDOM_REWARD_CFGS_ITEMS_FIELD}
-INDEPENDENT_RANDOM_REWARD_CFGS.is_extendable = false
-INDEPENDENT_RANDOM_REWARD_CFGS.extensions = {}
-WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.name = "id"
-WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.full_name = ".ftcfg.weight_random_reward_cfg.id"
-WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.number = 1
-WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.index = 0
-WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.label = 2
-WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.has_default_value = false
-WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.default_value = 0
-WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.type = 5
-WEIGHT_RANDOM_REWARD_CFG_ID_FIELD.cpp_type = 1
-
-WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.name = "reward_rate"
-WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.full_name = ".ftcfg.weight_random_reward_cfg.reward_rate"
-WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.number = 2
-WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.index = 1
-WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.label = 3
-WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.has_default_value = false
-WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.default_value = {}
-WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.type = 5
-WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD.cpp_type = 1
-
-WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.name = "reward_type"
-WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.full_name = ".ftcfg.weight_random_reward_cfg.reward_type"
-WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.number = 3
-WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.index = 2
-WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.label = 3
-WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.has_default_value = false
-WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.default_value = {}
-WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.enum_type = config_predefine_pb.EREWARDTYPE
-WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.type = 14
-WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD.cpp_type = 8
-
-WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.name = "reward_id"
-WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.full_name = ".ftcfg.weight_random_reward_cfg.reward_id"
-WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.number = 4
-WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.index = 3
-WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.label = 3
-WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.has_default_value = false
-WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.default_value = {}
-WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.type = 5
-WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD.cpp_type = 1
-
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.name = "random_min"
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.full_name = ".ftcfg.weight_random_reward_cfg.random_min"
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.number = 5
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.index = 4
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.label = 3
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.has_default_value = false
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.default_value = {}
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.type = 5
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD.cpp_type = 1
-
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.name = "random_max"
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.full_name = ".ftcfg.weight_random_reward_cfg.random_max"
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.number = 6
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.index = 5
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.label = 3
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.has_default_value = false
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.default_value = {}
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.type = 5
-WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD.cpp_type = 1
-
-WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.name = "show"
-WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.full_name = ".ftcfg.weight_random_reward_cfg.show"
-WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.number = 7
-WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.index = 6
-WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.label = 2
-WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.has_default_value = false
-WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.default_value = 0
-WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.type = 5
-WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD.cpp_type = 1
-
-WEIGHT_RANDOM_REWARD_CFG.name = "weight_random_reward_cfg"
-WEIGHT_RANDOM_REWARD_CFG.full_name = ".ftcfg.weight_random_reward_cfg"
-WEIGHT_RANDOM_REWARD_CFG.nested_types = {}
-WEIGHT_RANDOM_REWARD_CFG.enum_types = {}
-WEIGHT_RANDOM_REWARD_CFG.fields = {WEIGHT_RANDOM_REWARD_CFG_ID_FIELD, WEIGHT_RANDOM_REWARD_CFG_REWARD_RATE_FIELD, WEIGHT_RANDOM_REWARD_CFG_REWARD_TYPE_FIELD, WEIGHT_RANDOM_REWARD_CFG_REWARD_ID_FIELD, WEIGHT_RANDOM_REWARD_CFG_RANDOM_MIN_FIELD, WEIGHT_RANDOM_REWARD_CFG_RANDOM_MAX_FIELD, WEIGHT_RANDOM_REWARD_CFG_SHOW_FIELD}
-WEIGHT_RANDOM_REWARD_CFG.is_extendable = false
-WEIGHT_RANDOM_REWARD_CFG.extensions = {}
-WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.name = "items"
-WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.weight_random_reward_cfgs.items"
-WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.number = 1
-WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.index = 0
-WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.label = 3
-WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.has_default_value = false
-WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.default_value = {}
-WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.message_type = WEIGHT_RANDOM_REWARD_CFG
-WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.type = 11
-WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD.cpp_type = 10
-
-WEIGHT_RANDOM_REWARD_CFGS.name = "weight_random_reward_cfgs"
-WEIGHT_RANDOM_REWARD_CFGS.full_name = ".ftcfg.weight_random_reward_cfgs"
-WEIGHT_RANDOM_REWARD_CFGS.nested_types = {}
-WEIGHT_RANDOM_REWARD_CFGS.enum_types = {}
-WEIGHT_RANDOM_REWARD_CFGS.fields = {WEIGHT_RANDOM_REWARD_CFGS_ITEMS_FIELD}
-WEIGHT_RANDOM_REWARD_CFGS.is_extendable = false
-WEIGHT_RANDOM_REWARD_CFGS.extensions = {}
-REWARD_CFG_ID_FIELD.name = "id"
-REWARD_CFG_ID_FIELD.full_name = ".ftcfg.reward_cfg.id"
-REWARD_CFG_ID_FIELD.number = 1
-REWARD_CFG_ID_FIELD.index = 0
-REWARD_CFG_ID_FIELD.label = 2
-REWARD_CFG_ID_FIELD.has_default_value = false
-REWARD_CFG_ID_FIELD.default_value = 0
-REWARD_CFG_ID_FIELD.type = 5
-REWARD_CFG_ID_FIELD.cpp_type = 1
-
-REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.name = "reward_attribute_id"
-REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.full_name = ".ftcfg.reward_cfg.reward_attribute_id"
-REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.number = 2
-REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.index = 1
-REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.label = 3
-REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.has_default_value = false
-REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.default_value = {}
-REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.type = 5
-REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD.cpp_type = 1
-
-REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.name = "reward_attribute_count"
-REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.reward_attribute_count"
-REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.number = 3
-REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.index = 2
-REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.label = 3
-REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.has_default_value = false
-REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.default_value = {}
-REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.type = 5
-REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD.cpp_type = 1
-
-REWARD_CFG_REWARD_ITEM_ID_FIELD.name = "reward_item_id"
-REWARD_CFG_REWARD_ITEM_ID_FIELD.full_name = ".ftcfg.reward_cfg.reward_item_id"
-REWARD_CFG_REWARD_ITEM_ID_FIELD.number = 4
-REWARD_CFG_REWARD_ITEM_ID_FIELD.index = 3
-REWARD_CFG_REWARD_ITEM_ID_FIELD.label = 3
-REWARD_CFG_REWARD_ITEM_ID_FIELD.has_default_value = false
-REWARD_CFG_REWARD_ITEM_ID_FIELD.default_value = {}
-REWARD_CFG_REWARD_ITEM_ID_FIELD.type = 5
-REWARD_CFG_REWARD_ITEM_ID_FIELD.cpp_type = 1
-
-REWARD_CFG_REWARD_ITEM_COUNT_FIELD.name = "reward_item_count"
-REWARD_CFG_REWARD_ITEM_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.reward_item_count"
-REWARD_CFG_REWARD_ITEM_COUNT_FIELD.number = 5
-REWARD_CFG_REWARD_ITEM_COUNT_FIELD.index = 4
-REWARD_CFG_REWARD_ITEM_COUNT_FIELD.label = 3
-REWARD_CFG_REWARD_ITEM_COUNT_FIELD.has_default_value = false
-REWARD_CFG_REWARD_ITEM_COUNT_FIELD.default_value = {}
-REWARD_CFG_REWARD_ITEM_COUNT_FIELD.type = 5
-REWARD_CFG_REWARD_ITEM_COUNT_FIELD.cpp_type = 1
-
-REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.name = "reward_magic_rock_id"
-REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.full_name = ".ftcfg.reward_cfg.reward_magic_rock_id"
-REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.number = 6
-REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.index = 5
-REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.label = 3
-REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.has_default_value = false
-REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.default_value = {}
-REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.type = 5
-REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD.cpp_type = 1
-
-REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.name = "reward_magic_rock_count"
-REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.reward_magic_rock_count"
-REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.number = 7
-REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.index = 6
-REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.label = 3
-REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.has_default_value = false
-REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.default_value = {}
-REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.type = 5
-REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD.cpp_type = 1
-
-REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.name = "reward_refine_rock_id"
-REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.full_name = ".ftcfg.reward_cfg.reward_refine_rock_id"
-REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.number = 8
-REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.index = 7
-REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.label = 3
-REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.has_default_value = false
-REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.default_value = {}
-REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.type = 5
-REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD.cpp_type = 1
-
-REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.name = "reward_refine_rock_count"
-REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.reward_refine_rock_count"
-REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.number = 9
-REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.index = 8
-REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.label = 3
-REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.has_default_value = false
-REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.default_value = {}
-REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.type = 5
-REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD.cpp_type = 1
-
-REWARD_CFG_REWARD_SOUL_ID_FIELD.name = "reward_soul_id"
-REWARD_CFG_REWARD_SOUL_ID_FIELD.full_name = ".ftcfg.reward_cfg.reward_soul_id"
-REWARD_CFG_REWARD_SOUL_ID_FIELD.number = 10
-REWARD_CFG_REWARD_SOUL_ID_FIELD.index = 9
-REWARD_CFG_REWARD_SOUL_ID_FIELD.label = 3
-REWARD_CFG_REWARD_SOUL_ID_FIELD.has_default_value = false
-REWARD_CFG_REWARD_SOUL_ID_FIELD.default_value = {}
-REWARD_CFG_REWARD_SOUL_ID_FIELD.type = 5
-REWARD_CFG_REWARD_SOUL_ID_FIELD.cpp_type = 1
-
-REWARD_CFG_REWARD_SOUL_COUNT_FIELD.name = "reward_soul_count"
-REWARD_CFG_REWARD_SOUL_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.reward_soul_count"
-REWARD_CFG_REWARD_SOUL_COUNT_FIELD.number = 11
-REWARD_CFG_REWARD_SOUL_COUNT_FIELD.index = 10
-REWARD_CFG_REWARD_SOUL_COUNT_FIELD.label = 3
-REWARD_CFG_REWARD_SOUL_COUNT_FIELD.has_default_value = false
-REWARD_CFG_REWARD_SOUL_COUNT_FIELD.default_value = {}
-REWARD_CFG_REWARD_SOUL_COUNT_FIELD.type = 5
-REWARD_CFG_REWARD_SOUL_COUNT_FIELD.cpp_type = 1
-
-REWARD_CFG_REWARD_PARTNER_ID_FIELD.name = "reward_partner_id"
-REWARD_CFG_REWARD_PARTNER_ID_FIELD.full_name = ".ftcfg.reward_cfg.reward_partner_id"
-REWARD_CFG_REWARD_PARTNER_ID_FIELD.number = 12
-REWARD_CFG_REWARD_PARTNER_ID_FIELD.index = 11
-REWARD_CFG_REWARD_PARTNER_ID_FIELD.label = 3
-REWARD_CFG_REWARD_PARTNER_ID_FIELD.has_default_value = false
-REWARD_CFG_REWARD_PARTNER_ID_FIELD.default_value = {}
-REWARD_CFG_REWARD_PARTNER_ID_FIELD.type = 5
-REWARD_CFG_REWARD_PARTNER_ID_FIELD.cpp_type = 1
-
-REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.name = "reward_partner_count"
-REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.reward_partner_count"
-REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.number = 13
-REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.index = 12
-REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.label = 3
-REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.has_default_value = false
-REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.default_value = {}
-REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.type = 5
-REWARD_CFG_REWARD_PARTNER_COUNT_FIELD.cpp_type = 1
-
-REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.name = "profession1_reward_item_id"
-REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.full_name = ".ftcfg.reward_cfg.profession1_reward_item_id"
-REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.number = 14
-REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.index = 13
-REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.label = 3
-REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.has_default_value = false
-REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.default_value = {}
-REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.type = 5
-REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD.cpp_type = 1
-
-REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.name = "profession1_reward_attribute_count"
-REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.profession1_reward_attribute_count"
-REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.number = 15
-REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.index = 14
-REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.label = 3
-REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.has_default_value = false
-REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.default_value = {}
-REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.type = 5
-REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD.cpp_type = 1
-
-REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.name = "profession2_reward_item_id"
-REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.full_name = ".ftcfg.reward_cfg.profession2_reward_item_id"
-REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.number = 16
-REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.index = 15
-REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.label = 3
-REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.has_default_value = false
-REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.default_value = {}
-REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.type = 5
-REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD.cpp_type = 1
-
-REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.name = "profession2_reward_attribute_count"
-REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.profession2_reward_attribute_count"
-REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.number = 17
-REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.index = 16
-REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.label = 3
-REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.has_default_value = false
-REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.default_value = {}
-REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.type = 5
-REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD.cpp_type = 1
-
-REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.name = "profession3_reward_item_id"
-REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.full_name = ".ftcfg.reward_cfg.profession3_reward_item_id"
-REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.number = 18
-REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.index = 17
-REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.label = 3
-REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.has_default_value = false
-REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.default_value = {}
-REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.type = 5
-REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD.cpp_type = 1
-
-REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.name = "profession3_reward_attribute_count"
-REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.profession3_reward_attribute_count"
-REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.number = 19
-REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.index = 18
-REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.label = 3
-REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.has_default_value = false
-REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.default_value = {}
-REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.type = 5
-REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD.cpp_type = 1
-
-REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.name = "profession4_reward_item_id"
-REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.full_name = ".ftcfg.reward_cfg.profession4_reward_item_id"
-REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.number = 20
-REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.index = 19
-REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.label = 3
-REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.has_default_value = false
-REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.default_value = {}
-REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.type = 5
-REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD.cpp_type = 1
-
-REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.name = "profession4_reward_attribute_count"
-REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.profession4_reward_attribute_count"
-REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.number = 21
-REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.index = 20
-REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.label = 3
-REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.has_default_value = false
-REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.default_value = {}
-REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.type = 5
-REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD.cpp_type = 1
-
-REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.name = "profession5_reward_item_id"
-REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.full_name = ".ftcfg.reward_cfg.profession5_reward_item_id"
-REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.number = 22
-REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.index = 21
-REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.label = 3
-REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.has_default_value = false
-REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.default_value = {}
-REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.type = 5
-REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD.cpp_type = 1
-
-REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.name = "profession5_reward_attribute_count"
-REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.full_name = ".ftcfg.reward_cfg.profession5_reward_attribute_count"
-REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.number = 23
-REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.index = 22
-REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.label = 3
-REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.has_default_value = false
-REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.default_value = {}
-REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.type = 5
-REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD.cpp_type = 1
-
-REWARD_CFG.name = "reward_cfg"
-REWARD_CFG.full_name = ".ftcfg.reward_cfg"
-REWARD_CFG.nested_types = {}
-REWARD_CFG.enum_types = {}
-REWARD_CFG.fields = {REWARD_CFG_ID_FIELD, REWARD_CFG_REWARD_ATTRIBUTE_ID_FIELD, REWARD_CFG_REWARD_ATTRIBUTE_COUNT_FIELD, REWARD_CFG_REWARD_ITEM_ID_FIELD, REWARD_CFG_REWARD_ITEM_COUNT_FIELD, REWARD_CFG_REWARD_MAGIC_ROCK_ID_FIELD, REWARD_CFG_REWARD_MAGIC_ROCK_COUNT_FIELD, REWARD_CFG_REWARD_REFINE_ROCK_ID_FIELD, REWARD_CFG_REWARD_REFINE_ROCK_COUNT_FIELD, REWARD_CFG_REWARD_SOUL_ID_FIELD, REWARD_CFG_REWARD_SOUL_COUNT_FIELD, REWARD_CFG_REWARD_PARTNER_ID_FIELD, REWARD_CFG_REWARD_PARTNER_COUNT_FIELD, REWARD_CFG_PROFESSION1_REWARD_ITEM_ID_FIELD, REWARD_CFG_PROFESSION1_REWARD_ATTRIBUTE_COUNT_FIELD, REWARD_CFG_PROFESSION2_REWARD_ITEM_ID_FIELD, REWARD_CFG_PROFESSION2_REWARD_ATTRIBUTE_COUNT_FIELD, REWARD_CFG_PROFESSION3_REWARD_ITEM_ID_FIELD, REWARD_CFG_PROFESSION3_REWARD_ATTRIBUTE_COUNT_FIELD, REWARD_CFG_PROFESSION4_REWARD_ITEM_ID_FIELD, REWARD_CFG_PROFESSION4_REWARD_ATTRIBUTE_COUNT_FIELD, REWARD_CFG_PROFESSION5_REWARD_ITEM_ID_FIELD, REWARD_CFG_PROFESSION5_REWARD_ATTRIBUTE_COUNT_FIELD}
-REWARD_CFG.is_extendable = false
-REWARD_CFG.extensions = {}
-REWARD_CFGS_ITEMS_FIELD.name = "items"
-REWARD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.reward_cfgs.items"
-REWARD_CFGS_ITEMS_FIELD.number = 1
-REWARD_CFGS_ITEMS_FIELD.index = 0
-REWARD_CFGS_ITEMS_FIELD.label = 3
-REWARD_CFGS_ITEMS_FIELD.has_default_value = false
-REWARD_CFGS_ITEMS_FIELD.default_value = {}
-REWARD_CFGS_ITEMS_FIELD.message_type = REWARD_CFG
-REWARD_CFGS_ITEMS_FIELD.type = 11
-REWARD_CFGS_ITEMS_FIELD.cpp_type = 10
-
-REWARD_CFGS.name = "reward_cfgs"
-REWARD_CFGS.full_name = ".ftcfg.reward_cfgs"
-REWARD_CFGS.nested_types = {}
-REWARD_CFGS.enum_types = {}
-REWARD_CFGS.fields = {REWARD_CFGS_ITEMS_FIELD}
-REWARD_CFGS.is_extendable = false
-REWARD_CFGS.extensions = {}
-FUNC_TYPE_WEIGHT_CFG_ID_FIELD.name = "id"
-FUNC_TYPE_WEIGHT_CFG_ID_FIELD.full_name = ".ftcfg.func_type_weight_cfg.id"
-FUNC_TYPE_WEIGHT_CFG_ID_FIELD.number = 1
-FUNC_TYPE_WEIGHT_CFG_ID_FIELD.index = 0
-FUNC_TYPE_WEIGHT_CFG_ID_FIELD.label = 2
-FUNC_TYPE_WEIGHT_CFG_ID_FIELD.has_default_value = false
-FUNC_TYPE_WEIGHT_CFG_ID_FIELD.default_value = nil
-FUNC_TYPE_WEIGHT_CFG_ID_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
-FUNC_TYPE_WEIGHT_CFG_ID_FIELD.type = 14
-FUNC_TYPE_WEIGHT_CFG_ID_FIELD.cpp_type = 8
-
-FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.name = "drops"
-FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.full_name = ".ftcfg.func_type_weight_cfg.drops"
-FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.number = 2
-FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.index = 1
-FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.label = 3
-FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.has_default_value = false
-FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.default_value = {}
-FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.type = 5
-FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD.cpp_type = 1
-
-FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.name = "weights"
-FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.full_name = ".ftcfg.func_type_weight_cfg.weights"
-FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.number = 3
-FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.index = 2
-FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.label = 3
-FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.has_default_value = false
-FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.default_value = {}
-FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.type = 5
-FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD.cpp_type = 1
-
-FUNC_TYPE_WEIGHT_CFG.name = "func_type_weight_cfg"
-FUNC_TYPE_WEIGHT_CFG.full_name = ".ftcfg.func_type_weight_cfg"
-FUNC_TYPE_WEIGHT_CFG.nested_types = {}
-FUNC_TYPE_WEIGHT_CFG.enum_types = {}
-FUNC_TYPE_WEIGHT_CFG.fields = {FUNC_TYPE_WEIGHT_CFG_ID_FIELD, FUNC_TYPE_WEIGHT_CFG_DROPS_FIELD, FUNC_TYPE_WEIGHT_CFG_WEIGHTS_FIELD}
-FUNC_TYPE_WEIGHT_CFG.is_extendable = false
-FUNC_TYPE_WEIGHT_CFG.extensions = {}
-FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.name = "items"
-FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.func_type_weight_cfgs.items"
-FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.number = 1
-FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.index = 0
-FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.label = 3
-FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.has_default_value = false
-FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.default_value = {}
-FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.message_type = FUNC_TYPE_WEIGHT_CFG
-FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.type = 11
-FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD.cpp_type = 10
-
-FUNC_TYPE_WEIGHT_CFGS.name = "func_type_weight_cfgs"
-FUNC_TYPE_WEIGHT_CFGS.full_name = ".ftcfg.func_type_weight_cfgs"
-FUNC_TYPE_WEIGHT_CFGS.nested_types = {}
-FUNC_TYPE_WEIGHT_CFGS.enum_types = {}
-FUNC_TYPE_WEIGHT_CFGS.fields = {FUNC_TYPE_WEIGHT_CFGS_ITEMS_FIELD}
-FUNC_TYPE_WEIGHT_CFGS.is_extendable = false
-FUNC_TYPE_WEIGHT_CFGS.extensions = {}
-ZONE_LOCATION_CFG_ID_FIELD.name = "id"
-ZONE_LOCATION_CFG_ID_FIELD.full_name = ".ftcfg.zone_location_cfg.id"
-ZONE_LOCATION_CFG_ID_FIELD.number = 1
-ZONE_LOCATION_CFG_ID_FIELD.index = 0
-ZONE_LOCATION_CFG_ID_FIELD.label = 2
-ZONE_LOCATION_CFG_ID_FIELD.has_default_value = false
-ZONE_LOCATION_CFG_ID_FIELD.default_value = 0
-ZONE_LOCATION_CFG_ID_FIELD.type = 5
-ZONE_LOCATION_CFG_ID_FIELD.cpp_type = 1
-
-ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.name = "province_id"
-ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.full_name = ".ftcfg.zone_location_cfg.province_id"
-ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.number = 2
-ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.index = 1
-ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.label = 2
-ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.has_default_value = false
-ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.default_value = 0
-ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.type = 5
-ZONE_LOCATION_CFG_PROVINCE_ID_FIELD.cpp_type = 1
-
-ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.name = "province_language_id"
-ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.full_name = ".ftcfg.zone_location_cfg.province_language_id"
-ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.number = 3
-ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.index = 2
-ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.label = 2
-ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.has_default_value = false
-ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.default_value = 0
-ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.type = 5
-ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD.cpp_type = 1
-
-ZONE_LOCATION_CFG_CITY_ID_FIELD.name = "city_id"
-ZONE_LOCATION_CFG_CITY_ID_FIELD.full_name = ".ftcfg.zone_location_cfg.city_id"
-ZONE_LOCATION_CFG_CITY_ID_FIELD.number = 4
-ZONE_LOCATION_CFG_CITY_ID_FIELD.index = 3
-ZONE_LOCATION_CFG_CITY_ID_FIELD.label = 2
-ZONE_LOCATION_CFG_CITY_ID_FIELD.has_default_value = false
-ZONE_LOCATION_CFG_CITY_ID_FIELD.default_value = 0
-ZONE_LOCATION_CFG_CITY_ID_FIELD.type = 5
-ZONE_LOCATION_CFG_CITY_ID_FIELD.cpp_type = 1
-
-ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.name = "city_language_id"
-ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.full_name = ".ftcfg.zone_location_cfg.city_language_id"
-ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.number = 5
-ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.index = 4
-ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.label = 2
-ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.has_default_value = false
-ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.default_value = 0
-ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.type = 5
-ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD.cpp_type = 1
-
-ZONE_LOCATION_CFG.name = "zone_location_cfg"
-ZONE_LOCATION_CFG.full_name = ".ftcfg.zone_location_cfg"
-ZONE_LOCATION_CFG.nested_types = {}
-ZONE_LOCATION_CFG.enum_types = {}
-ZONE_LOCATION_CFG.fields = {ZONE_LOCATION_CFG_ID_FIELD, ZONE_LOCATION_CFG_PROVINCE_ID_FIELD, ZONE_LOCATION_CFG_PROVINCE_LANGUAGE_ID_FIELD, ZONE_LOCATION_CFG_CITY_ID_FIELD, ZONE_LOCATION_CFG_CITY_LANGUAGE_ID_FIELD}
-ZONE_LOCATION_CFG.is_extendable = false
-ZONE_LOCATION_CFG.extensions = {}
-ZONE_LOCATION_CFGS_ITEMS_FIELD.name = "items"
-ZONE_LOCATION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.zone_location_cfgs.items"
-ZONE_LOCATION_CFGS_ITEMS_FIELD.number = 1
-ZONE_LOCATION_CFGS_ITEMS_FIELD.index = 0
-ZONE_LOCATION_CFGS_ITEMS_FIELD.label = 3
-ZONE_LOCATION_CFGS_ITEMS_FIELD.has_default_value = false
-ZONE_LOCATION_CFGS_ITEMS_FIELD.default_value = {}
-ZONE_LOCATION_CFGS_ITEMS_FIELD.message_type = ZONE_LOCATION_CFG
-ZONE_LOCATION_CFGS_ITEMS_FIELD.type = 11
-ZONE_LOCATION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ZONE_LOCATION_CFGS.name = "zone_location_cfgs"
-ZONE_LOCATION_CFGS.full_name = ".ftcfg.zone_location_cfgs"
-ZONE_LOCATION_CFGS.nested_types = {}
-ZONE_LOCATION_CFGS.enum_types = {}
-ZONE_LOCATION_CFGS.fields = {ZONE_LOCATION_CFGS_ITEMS_FIELD}
-ZONE_LOCATION_CFGS.is_extendable = false
-ZONE_LOCATION_CFGS.extensions = {}
-GIFT_GIVING_CFG_ID_FIELD.name = "id"
-GIFT_GIVING_CFG_ID_FIELD.full_name = ".ftcfg.gift_giving_cfg.id"
-GIFT_GIVING_CFG_ID_FIELD.number = 1
-GIFT_GIVING_CFG_ID_FIELD.index = 0
-GIFT_GIVING_CFG_ID_FIELD.label = 2
-GIFT_GIVING_CFG_ID_FIELD.has_default_value = false
-GIFT_GIVING_CFG_ID_FIELD.default_value = 0
-GIFT_GIVING_CFG_ID_FIELD.type = 5
-GIFT_GIVING_CFG_ID_FIELD.cpp_type = 1
-
-GIFT_GIVING_CFG_GIFT_TYPE_FIELD.name = "gift_type"
-GIFT_GIVING_CFG_GIFT_TYPE_FIELD.full_name = ".ftcfg.gift_giving_cfg.gift_type"
-GIFT_GIVING_CFG_GIFT_TYPE_FIELD.number = 2
-GIFT_GIVING_CFG_GIFT_TYPE_FIELD.index = 1
-GIFT_GIVING_CFG_GIFT_TYPE_FIELD.label = 2
-GIFT_GIVING_CFG_GIFT_TYPE_FIELD.has_default_value = false
-GIFT_GIVING_CFG_GIFT_TYPE_FIELD.default_value = 0
-GIFT_GIVING_CFG_GIFT_TYPE_FIELD.type = 5
-GIFT_GIVING_CFG_GIFT_TYPE_FIELD.cpp_type = 1
-
-GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.name = "gift_item_id"
-GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.full_name = ".ftcfg.gift_giving_cfg.gift_item_id"
-GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.number = 3
-GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.index = 2
-GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.label = 2
-GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.has_default_value = false
-GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.default_value = 0
-GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.type = 5
-GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD.cpp_type = 1
-
-GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.name = "give_friend_degree"
-GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.full_name = ".ftcfg.gift_giving_cfg.give_friend_degree"
-GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.number = 4
-GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.index = 3
-GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.label = 2
-GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.has_default_value = false
-GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.default_value = 0
-GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.type = 5
-GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD.cpp_type = 1
-
-GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.name = "is_give_friebd"
-GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.full_name = ".ftcfg.gift_giving_cfg.is_give_friebd"
-GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.number = 5
-GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.index = 4
-GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.label = 2
-GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.has_default_value = false
-GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.default_value = 0
-GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.type = 5
-GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD.cpp_type = 1
-
-GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.name = "is_give_delete"
-GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.full_name = ".ftcfg.gift_giving_cfg.is_give_delete"
-GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.number = 6
-GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.index = 5
-GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.label = 2
-GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.has_default_value = false
-GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.default_value = 0
-GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.type = 5
-GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD.cpp_type = 1
-
-GIFT_GIVING_CFG.name = "gift_giving_cfg"
-GIFT_GIVING_CFG.full_name = ".ftcfg.gift_giving_cfg"
-GIFT_GIVING_CFG.nested_types = {}
-GIFT_GIVING_CFG.enum_types = {}
-GIFT_GIVING_CFG.fields = {GIFT_GIVING_CFG_ID_FIELD, GIFT_GIVING_CFG_GIFT_TYPE_FIELD, GIFT_GIVING_CFG_GIFT_ITEM_ID_FIELD, GIFT_GIVING_CFG_GIVE_FRIEND_DEGREE_FIELD, GIFT_GIVING_CFG_IS_GIVE_FRIEBD_FIELD, GIFT_GIVING_CFG_IS_GIVE_DELETE_FIELD}
-GIFT_GIVING_CFG.is_extendable = false
-GIFT_GIVING_CFG.extensions = {}
-GIFT_GIVING_CFGS_ITEMS_FIELD.name = "items"
-GIFT_GIVING_CFGS_ITEMS_FIELD.full_name = ".ftcfg.gift_giving_cfgs.items"
-GIFT_GIVING_CFGS_ITEMS_FIELD.number = 1
-GIFT_GIVING_CFGS_ITEMS_FIELD.index = 0
-GIFT_GIVING_CFGS_ITEMS_FIELD.label = 3
-GIFT_GIVING_CFGS_ITEMS_FIELD.has_default_value = false
-GIFT_GIVING_CFGS_ITEMS_FIELD.default_value = {}
-GIFT_GIVING_CFGS_ITEMS_FIELD.message_type = GIFT_GIVING_CFG
-GIFT_GIVING_CFGS_ITEMS_FIELD.type = 11
-GIFT_GIVING_CFGS_ITEMS_FIELD.cpp_type = 10
-
-GIFT_GIVING_CFGS.name = "gift_giving_cfgs"
-GIFT_GIVING_CFGS.full_name = ".ftcfg.gift_giving_cfgs"
-GIFT_GIVING_CFGS.nested_types = {}
-GIFT_GIVING_CFGS.enum_types = {}
-GIFT_GIVING_CFGS.fields = {GIFT_GIVING_CFGS_ITEMS_FIELD}
-GIFT_GIVING_CFGS.is_extendable = false
-GIFT_GIVING_CFGS.extensions = {}
-FRIEND_TITLE_CFG_ID_FIELD.name = "id"
-FRIEND_TITLE_CFG_ID_FIELD.full_name = ".ftcfg.friend_title_cfg.id"
-FRIEND_TITLE_CFG_ID_FIELD.number = 1
-FRIEND_TITLE_CFG_ID_FIELD.index = 0
-FRIEND_TITLE_CFG_ID_FIELD.label = 2
-FRIEND_TITLE_CFG_ID_FIELD.has_default_value = false
-FRIEND_TITLE_CFG_ID_FIELD.default_value = 0
-FRIEND_TITLE_CFG_ID_FIELD.type = 5
-FRIEND_TITLE_CFG_ID_FIELD.cpp_type = 1
-
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.name = "friend_degree_level"
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.full_name = ".ftcfg.friend_title_cfg.friend_degree_level"
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.number = 2
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.index = 1
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.label = 2
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.has_default_value = false
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.default_value = 0
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.type = 5
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD.cpp_type = 1
-
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.name = "friend_degree_languageid"
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.full_name = ".ftcfg.friend_title_cfg.friend_degree_languageid"
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.number = 3
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.index = 2
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.label = 2
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.has_default_value = false
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.default_value = 0
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.type = 5
-FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD.cpp_type = 1
-
-FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.name = "need_friend_degree"
-FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.full_name = ".ftcfg.friend_title_cfg.need_friend_degree"
-FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.number = 4
-FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.index = 3
-FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.label = 2
-FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.has_default_value = false
-FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.default_value = 0
-FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.type = 5
-FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD.cpp_type = 1
-
-FRIEND_TITLE_CFG.name = "friend_title_cfg"
-FRIEND_TITLE_CFG.full_name = ".ftcfg.friend_title_cfg"
-FRIEND_TITLE_CFG.nested_types = {}
-FRIEND_TITLE_CFG.enum_types = {}
-FRIEND_TITLE_CFG.fields = {FRIEND_TITLE_CFG_ID_FIELD, FRIEND_TITLE_CFG_FRIEND_DEGREE_LEVEL_FIELD, FRIEND_TITLE_CFG_FRIEND_DEGREE_LANGUAGEID_FIELD, FRIEND_TITLE_CFG_NEED_FRIEND_DEGREE_FIELD}
-FRIEND_TITLE_CFG.is_extendable = false
-FRIEND_TITLE_CFG.extensions = {}
-FRIEND_TITLE_CFGS_ITEMS_FIELD.name = "items"
-FRIEND_TITLE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.friend_title_cfgs.items"
-FRIEND_TITLE_CFGS_ITEMS_FIELD.number = 1
-FRIEND_TITLE_CFGS_ITEMS_FIELD.index = 0
-FRIEND_TITLE_CFGS_ITEMS_FIELD.label = 3
-FRIEND_TITLE_CFGS_ITEMS_FIELD.has_default_value = false
-FRIEND_TITLE_CFGS_ITEMS_FIELD.default_value = {}
-FRIEND_TITLE_CFGS_ITEMS_FIELD.message_type = FRIEND_TITLE_CFG
-FRIEND_TITLE_CFGS_ITEMS_FIELD.type = 11
-FRIEND_TITLE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-FRIEND_TITLE_CFGS.name = "friend_title_cfgs"
-FRIEND_TITLE_CFGS.full_name = ".ftcfg.friend_title_cfgs"
-FRIEND_TITLE_CFGS.nested_types = {}
-FRIEND_TITLE_CFGS.enum_types = {}
-FRIEND_TITLE_CFGS.fields = {FRIEND_TITLE_CFGS_ITEMS_FIELD}
-FRIEND_TITLE_CFGS.is_extendable = false
-FRIEND_TITLE_CFGS.extensions = {}
-FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.name = "fate_id"
-FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.full_name = ".ftcfg.fate_value_reward_cfg.fate_id"
-FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.number = 1
-FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.index = 0
-FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.label = 2
-FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.has_default_value = false
-FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.default_value = 0
-FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.type = 5
-FATE_VALUE_REWARD_CFG_FATE_ID_FIELD.cpp_type = 1
-
-FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.name = "need_fate_value"
-FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.full_name = ".ftcfg.fate_value_reward_cfg.need_fate_value"
-FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.number = 2
-FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.index = 1
-FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.label = 2
-FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.has_default_value = false
-FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.default_value = 0
-FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.type = 5
-FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD.cpp_type = 1
-
-FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.name = "fate_item_id"
-FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.full_name = ".ftcfg.fate_value_reward_cfg.fate_item_id"
-FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.number = 3
-FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.index = 2
-FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.label = 2
-FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.has_default_value = false
-FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.default_value = 0
-FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.type = 5
-FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD.cpp_type = 1
-
-FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.name = "fate_item_number"
-FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.full_name = ".ftcfg.fate_value_reward_cfg.fate_item_number"
-FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.number = 4
-FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.index = 3
-FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.label = 2
-FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.has_default_value = false
-FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.default_value = 0
-FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.type = 5
-FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD.cpp_type = 1
-
-FATE_VALUE_REWARD_CFG.name = "fate_value_reward_cfg"
-FATE_VALUE_REWARD_CFG.full_name = ".ftcfg.fate_value_reward_cfg"
-FATE_VALUE_REWARD_CFG.nested_types = {}
-FATE_VALUE_REWARD_CFG.enum_types = {}
-FATE_VALUE_REWARD_CFG.fields = {FATE_VALUE_REWARD_CFG_FATE_ID_FIELD, FATE_VALUE_REWARD_CFG_NEED_FATE_VALUE_FIELD, FATE_VALUE_REWARD_CFG_FATE_ITEM_ID_FIELD, FATE_VALUE_REWARD_CFG_FATE_ITEM_NUMBER_FIELD}
-FATE_VALUE_REWARD_CFG.is_extendable = false
-FATE_VALUE_REWARD_CFG.extensions = {}
-FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.name = "items"
-FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.fate_value_reward_cfgs.items"
-FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.number = 1
-FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.index = 0
-FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.label = 3
-FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.has_default_value = false
-FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.default_value = {}
-FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.message_type = FATE_VALUE_REWARD_CFG
-FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.type = 11
-FATE_VALUE_REWARD_CFGS_ITEMS_FIELD.cpp_type = 10
-
-FATE_VALUE_REWARD_CFGS.name = "fate_value_reward_cfgs"
-FATE_VALUE_REWARD_CFGS.full_name = ".ftcfg.fate_value_reward_cfgs"
-FATE_VALUE_REWARD_CFGS.nested_types = {}
-FATE_VALUE_REWARD_CFGS.enum_types = {}
-FATE_VALUE_REWARD_CFGS.fields = {FATE_VALUE_REWARD_CFGS_ITEMS_FIELD}
-FATE_VALUE_REWARD_CFGS.is_extendable = false
-FATE_VALUE_REWARD_CFGS.extensions = {}
-GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.name = "item_id"
-GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.gemstone_inlay_cfg.item_id"
-GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.number = 1
-GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.index = 0
-GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.label = 2
-GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.has_default_value = false
-GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.default_value = 0
-GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.type = 5
-GEMSTONE_INLAY_CFG_ITEM_ID_FIELD.cpp_type = 1
-
-GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.name = "item_num"
-GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.full_name = ".ftcfg.gemstone_inlay_cfg.item_num"
-GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.number = 2
-GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.index = 1
-GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.label = 2
-GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.has_default_value = false
-GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.default_value = 0
-GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.type = 5
-GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD.cpp_type = 1
-
-GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.name = "item_fail_num"
-GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.full_name = ".ftcfg.gemstone_inlay_cfg.item_fail_num"
-GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.number = 3
-GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.index = 2
-GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.label = 2
-GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.has_default_value = false
-GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.default_value = 0
-GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.type = 5
-GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD.cpp_type = 1
-
-GEMSTONE_INLAY_CFG_RANGE_FIELD.name = "range"
-GEMSTONE_INLAY_CFG_RANGE_FIELD.full_name = ".ftcfg.gemstone_inlay_cfg.range"
-GEMSTONE_INLAY_CFG_RANGE_FIELD.number = 4
-GEMSTONE_INLAY_CFG_RANGE_FIELD.index = 3
-GEMSTONE_INLAY_CFG_RANGE_FIELD.label = 2
-GEMSTONE_INLAY_CFG_RANGE_FIELD.has_default_value = false
-GEMSTONE_INLAY_CFG_RANGE_FIELD.default_value = 0
-GEMSTONE_INLAY_CFG_RANGE_FIELD.type = 5
-GEMSTONE_INLAY_CFG_RANGE_FIELD.cpp_type = 1
-
-GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.name = "item_suc_id"
-GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.full_name = ".ftcfg.gemstone_inlay_cfg.item_suc_id"
-GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.number = 5
-GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.index = 4
-GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.label = 2
-GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.has_default_value = false
-GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.default_value = 0
-GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.type = 5
-GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD.cpp_type = 1
-
-GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.name = "item_suc_num"
-GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.full_name = ".ftcfg.gemstone_inlay_cfg.item_suc_num"
-GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.number = 6
-GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.index = 5
-GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.label = 2
-GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.has_default_value = false
-GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.default_value = 0
-GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.type = 5
-GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD.cpp_type = 1
-
-GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.name = "item_desc_id"
-GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.full_name = ".ftcfg.gemstone_inlay_cfg.item_desc_id"
-GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.number = 7
-GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.index = 6
-GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.label = 2
-GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.has_default_value = false
-GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.default_value = 0
-GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.type = 5
-GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD.cpp_type = 1
-
-GEMSTONE_INLAY_CFG.name = "gemstone_inlay_cfg"
-GEMSTONE_INLAY_CFG.full_name = ".ftcfg.gemstone_inlay_cfg"
-GEMSTONE_INLAY_CFG.nested_types = {}
-GEMSTONE_INLAY_CFG.enum_types = {}
-GEMSTONE_INLAY_CFG.fields = {GEMSTONE_INLAY_CFG_ITEM_ID_FIELD, GEMSTONE_INLAY_CFG_ITEM_NUM_FIELD, GEMSTONE_INLAY_CFG_ITEM_FAIL_NUM_FIELD, GEMSTONE_INLAY_CFG_RANGE_FIELD, GEMSTONE_INLAY_CFG_ITEM_SUC_ID_FIELD, GEMSTONE_INLAY_CFG_ITEM_SUC_NUM_FIELD, GEMSTONE_INLAY_CFG_ITEM_DESC_ID_FIELD}
-GEMSTONE_INLAY_CFG.is_extendable = false
-GEMSTONE_INLAY_CFG.extensions = {}
-GEMSTONE_INLAY_CFGS_ITEMS_FIELD.name = "items"
-GEMSTONE_INLAY_CFGS_ITEMS_FIELD.full_name = ".ftcfg.gemstone_inlay_cfgs.items"
-GEMSTONE_INLAY_CFGS_ITEMS_FIELD.number = 1
-GEMSTONE_INLAY_CFGS_ITEMS_FIELD.index = 0
-GEMSTONE_INLAY_CFGS_ITEMS_FIELD.label = 3
-GEMSTONE_INLAY_CFGS_ITEMS_FIELD.has_default_value = false
-GEMSTONE_INLAY_CFGS_ITEMS_FIELD.default_value = {}
-GEMSTONE_INLAY_CFGS_ITEMS_FIELD.message_type = GEMSTONE_INLAY_CFG
-GEMSTONE_INLAY_CFGS_ITEMS_FIELD.type = 11
-GEMSTONE_INLAY_CFGS_ITEMS_FIELD.cpp_type = 10
-
-GEMSTONE_INLAY_CFGS.name = "gemstone_inlay_cfgs"
-GEMSTONE_INLAY_CFGS.full_name = ".ftcfg.gemstone_inlay_cfgs"
-GEMSTONE_INLAY_CFGS.nested_types = {}
-GEMSTONE_INLAY_CFGS.enum_types = {}
-GEMSTONE_INLAY_CFGS.fields = {GEMSTONE_INLAY_CFGS_ITEMS_FIELD}
-GEMSTONE_INLAY_CFGS.is_extendable = false
-GEMSTONE_INLAY_CFGS.extensions = {}
-GEMSTONE_LIST_CFG_GEM_ID_FIELD.name = "gem_id"
-GEMSTONE_LIST_CFG_GEM_ID_FIELD.full_name = ".ftcfg.gemstone_list_cfg.gem_id"
-GEMSTONE_LIST_CFG_GEM_ID_FIELD.number = 1
-GEMSTONE_LIST_CFG_GEM_ID_FIELD.index = 0
-GEMSTONE_LIST_CFG_GEM_ID_FIELD.label = 2
-GEMSTONE_LIST_CFG_GEM_ID_FIELD.has_default_value = false
-GEMSTONE_LIST_CFG_GEM_ID_FIELD.default_value = 0
-GEMSTONE_LIST_CFG_GEM_ID_FIELD.type = 5
-GEMSTONE_LIST_CFG_GEM_ID_FIELD.cpp_type = 1
-
-GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.name = "gem_nameid"
-GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.full_name = ".ftcfg.gemstone_list_cfg.gem_nameid"
-GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.number = 2
-GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.index = 1
-GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.label = 2
-GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.has_default_value = false
-GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.default_value = 0
-GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.type = 5
-GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD.cpp_type = 1
-
-GEMSTONE_LIST_CFG_GEM_PICID_FIELD.name = "gem_picid"
-GEMSTONE_LIST_CFG_GEM_PICID_FIELD.full_name = ".ftcfg.gemstone_list_cfg.gem_picid"
-GEMSTONE_LIST_CFG_GEM_PICID_FIELD.number = 3
-GEMSTONE_LIST_CFG_GEM_PICID_FIELD.index = 2
-GEMSTONE_LIST_CFG_GEM_PICID_FIELD.label = 2
-GEMSTONE_LIST_CFG_GEM_PICID_FIELD.has_default_value = false
-GEMSTONE_LIST_CFG_GEM_PICID_FIELD.default_value = 0
-GEMSTONE_LIST_CFG_GEM_PICID_FIELD.type = 5
-GEMSTONE_LIST_CFG_GEM_PICID_FIELD.cpp_type = 1
-
-GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.name = "gem_knameid"
-GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.full_name = ".ftcfg.gemstone_list_cfg.gem_knameid"
-GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.number = 4
-GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.index = 3
-GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.label = 2
-GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.has_default_value = false
-GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.default_value = 0
-GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.type = 5
-GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD.cpp_type = 1
-
-GEMSTONE_LIST_CFG.name = "gemstone_list_cfg"
-GEMSTONE_LIST_CFG.full_name = ".ftcfg.gemstone_list_cfg"
-GEMSTONE_LIST_CFG.nested_types = {}
-GEMSTONE_LIST_CFG.enum_types = {}
-GEMSTONE_LIST_CFG.fields = {GEMSTONE_LIST_CFG_GEM_ID_FIELD, GEMSTONE_LIST_CFG_GEM_NAMEID_FIELD, GEMSTONE_LIST_CFG_GEM_PICID_FIELD, GEMSTONE_LIST_CFG_GEM_KNAMEID_FIELD}
-GEMSTONE_LIST_CFG.is_extendable = false
-GEMSTONE_LIST_CFG.extensions = {}
-GEMSTONE_LIST_CFGS_ITEMS_FIELD.name = "items"
-GEMSTONE_LIST_CFGS_ITEMS_FIELD.full_name = ".ftcfg.gemstone_list_cfgs.items"
-GEMSTONE_LIST_CFGS_ITEMS_FIELD.number = 1
-GEMSTONE_LIST_CFGS_ITEMS_FIELD.index = 0
-GEMSTONE_LIST_CFGS_ITEMS_FIELD.label = 3
-GEMSTONE_LIST_CFGS_ITEMS_FIELD.has_default_value = false
-GEMSTONE_LIST_CFGS_ITEMS_FIELD.default_value = {}
-GEMSTONE_LIST_CFGS_ITEMS_FIELD.message_type = GEMSTONE_LIST_CFG
-GEMSTONE_LIST_CFGS_ITEMS_FIELD.type = 11
-GEMSTONE_LIST_CFGS_ITEMS_FIELD.cpp_type = 10
-
-GEMSTONE_LIST_CFGS.name = "gemstone_list_cfgs"
-GEMSTONE_LIST_CFGS.full_name = ".ftcfg.gemstone_list_cfgs"
-GEMSTONE_LIST_CFGS.nested_types = {}
-GEMSTONE_LIST_CFGS.enum_types = {}
-GEMSTONE_LIST_CFGS.fields = {GEMSTONE_LIST_CFGS_ITEMS_FIELD}
-GEMSTONE_LIST_CFGS.is_extendable = false
-GEMSTONE_LIST_CFGS.extensions = {}
-CHEST_DROP_CFG_ID_FIELD.name = "id"
-CHEST_DROP_CFG_ID_FIELD.full_name = ".ftcfg.chest_drop_cfg.id"
-CHEST_DROP_CFG_ID_FIELD.number = 1
-CHEST_DROP_CFG_ID_FIELD.index = 0
-CHEST_DROP_CFG_ID_FIELD.label = 2
-CHEST_DROP_CFG_ID_FIELD.has_default_value = false
-CHEST_DROP_CFG_ID_FIELD.default_value = 0
-CHEST_DROP_CFG_ID_FIELD.type = 5
-CHEST_DROP_CFG_ID_FIELD.cpp_type = 1
-
-CHEST_DROP_CFG_TYPE_FIELD.name = "type"
-CHEST_DROP_CFG_TYPE_FIELD.full_name = ".ftcfg.chest_drop_cfg.type"
-CHEST_DROP_CFG_TYPE_FIELD.number = 2
-CHEST_DROP_CFG_TYPE_FIELD.index = 1
-CHEST_DROP_CFG_TYPE_FIELD.label = 2
-CHEST_DROP_CFG_TYPE_FIELD.has_default_value = false
-CHEST_DROP_CFG_TYPE_FIELD.default_value = nil
-CHEST_DROP_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ECHESTTYPE
-CHEST_DROP_CFG_TYPE_FIELD.type = 14
-CHEST_DROP_CFG_TYPE_FIELD.cpp_type = 8
-
-CHEST_DROP_CFG_COUNT_FIELD.name = "count"
-CHEST_DROP_CFG_COUNT_FIELD.full_name = ".ftcfg.chest_drop_cfg.count"
-CHEST_DROP_CFG_COUNT_FIELD.number = 3
-CHEST_DROP_CFG_COUNT_FIELD.index = 2
-CHEST_DROP_CFG_COUNT_FIELD.label = 2
-CHEST_DROP_CFG_COUNT_FIELD.has_default_value = false
-CHEST_DROP_CFG_COUNT_FIELD.default_value = 0
-CHEST_DROP_CFG_COUNT_FIELD.type = 5
-CHEST_DROP_CFG_COUNT_FIELD.cpp_type = 1
-
-CHEST_DROP_CFG_ITEM_ID_FIELD.name = "item_id"
-CHEST_DROP_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.chest_drop_cfg.item_id"
-CHEST_DROP_CFG_ITEM_ID_FIELD.number = 4
-CHEST_DROP_CFG_ITEM_ID_FIELD.index = 3
-CHEST_DROP_CFG_ITEM_ID_FIELD.label = 2
-CHEST_DROP_CFG_ITEM_ID_FIELD.has_default_value = false
-CHEST_DROP_CFG_ITEM_ID_FIELD.default_value = 0
-CHEST_DROP_CFG_ITEM_ID_FIELD.type = 5
-CHEST_DROP_CFG_ITEM_ID_FIELD.cpp_type = 1
-
-CHEST_DROP_CFG_RES_ID_FIELD.name = "res_id"
-CHEST_DROP_CFG_RES_ID_FIELD.full_name = ".ftcfg.chest_drop_cfg.res_id"
-CHEST_DROP_CFG_RES_ID_FIELD.number = 5
-CHEST_DROP_CFG_RES_ID_FIELD.index = 4
-CHEST_DROP_CFG_RES_ID_FIELD.label = 2
-CHEST_DROP_CFG_RES_ID_FIELD.has_default_value = false
-CHEST_DROP_CFG_RES_ID_FIELD.default_value = 0
-CHEST_DROP_CFG_RES_ID_FIELD.type = 5
-CHEST_DROP_CFG_RES_ID_FIELD.cpp_type = 1
-
-CHEST_DROP_CFG_RADIUS_FIELD.name = "radius"
-CHEST_DROP_CFG_RADIUS_FIELD.full_name = ".ftcfg.chest_drop_cfg.radius"
-CHEST_DROP_CFG_RADIUS_FIELD.number = 6
-CHEST_DROP_CFG_RADIUS_FIELD.index = 5
-CHEST_DROP_CFG_RADIUS_FIELD.label = 2
-CHEST_DROP_CFG_RADIUS_FIELD.has_default_value = false
-CHEST_DROP_CFG_RADIUS_FIELD.default_value = 0.0
-CHEST_DROP_CFG_RADIUS_FIELD.type = 2
-CHEST_DROP_CFG_RADIUS_FIELD.cpp_type = 6
-
-CHEST_DROP_CFG_SPACE_ROWS_FIELD.name = "space_rows"
-CHEST_DROP_CFG_SPACE_ROWS_FIELD.full_name = ".ftcfg.chest_drop_cfg.space_rows"
-CHEST_DROP_CFG_SPACE_ROWS_FIELD.number = 7
-CHEST_DROP_CFG_SPACE_ROWS_FIELD.index = 6
-CHEST_DROP_CFG_SPACE_ROWS_FIELD.label = 2
-CHEST_DROP_CFG_SPACE_ROWS_FIELD.has_default_value = false
-CHEST_DROP_CFG_SPACE_ROWS_FIELD.default_value = 0.0
-CHEST_DROP_CFG_SPACE_ROWS_FIELD.type = 2
-CHEST_DROP_CFG_SPACE_ROWS_FIELD.cpp_type = 6
-
-CHEST_DROP_CFG_SPACE_COLS_FIELD.name = "space_cols"
-CHEST_DROP_CFG_SPACE_COLS_FIELD.full_name = ".ftcfg.chest_drop_cfg.space_cols"
-CHEST_DROP_CFG_SPACE_COLS_FIELD.number = 8
-CHEST_DROP_CFG_SPACE_COLS_FIELD.index = 7
-CHEST_DROP_CFG_SPACE_COLS_FIELD.label = 2
-CHEST_DROP_CFG_SPACE_COLS_FIELD.has_default_value = false
-CHEST_DROP_CFG_SPACE_COLS_FIELD.default_value = 0.0
-CHEST_DROP_CFG_SPACE_COLS_FIELD.type = 2
-CHEST_DROP_CFG_SPACE_COLS_FIELD.cpp_type = 6
-
-CHEST_DROP_CFG_LIVE_TIME_FIELD.name = "live_time"
-CHEST_DROP_CFG_LIVE_TIME_FIELD.full_name = ".ftcfg.chest_drop_cfg.live_time"
-CHEST_DROP_CFG_LIVE_TIME_FIELD.number = 9
-CHEST_DROP_CFG_LIVE_TIME_FIELD.index = 8
-CHEST_DROP_CFG_LIVE_TIME_FIELD.label = 2
-CHEST_DROP_CFG_LIVE_TIME_FIELD.has_default_value = false
-CHEST_DROP_CFG_LIVE_TIME_FIELD.default_value = 0
-CHEST_DROP_CFG_LIVE_TIME_FIELD.type = 5
-CHEST_DROP_CFG_LIVE_TIME_FIELD.cpp_type = 1
-
-CHEST_DROP_CFG_REFRESH_TIME_FIELD.name = "refresh_time"
-CHEST_DROP_CFG_REFRESH_TIME_FIELD.full_name = ".ftcfg.chest_drop_cfg.refresh_time"
-CHEST_DROP_CFG_REFRESH_TIME_FIELD.number = 10
-CHEST_DROP_CFG_REFRESH_TIME_FIELD.index = 9
-CHEST_DROP_CFG_REFRESH_TIME_FIELD.label = 2
-CHEST_DROP_CFG_REFRESH_TIME_FIELD.has_default_value = false
-CHEST_DROP_CFG_REFRESH_TIME_FIELD.default_value = 0
-CHEST_DROP_CFG_REFRESH_TIME_FIELD.type = 5
-CHEST_DROP_CFG_REFRESH_TIME_FIELD.cpp_type = 1
-
-CHEST_DROP_CFG.name = "chest_drop_cfg"
-CHEST_DROP_CFG.full_name = ".ftcfg.chest_drop_cfg"
-CHEST_DROP_CFG.nested_types = {}
-CHEST_DROP_CFG.enum_types = {}
-CHEST_DROP_CFG.fields = {CHEST_DROP_CFG_ID_FIELD, CHEST_DROP_CFG_TYPE_FIELD, CHEST_DROP_CFG_COUNT_FIELD, CHEST_DROP_CFG_ITEM_ID_FIELD, CHEST_DROP_CFG_RES_ID_FIELD, CHEST_DROP_CFG_RADIUS_FIELD, CHEST_DROP_CFG_SPACE_ROWS_FIELD, CHEST_DROP_CFG_SPACE_COLS_FIELD, CHEST_DROP_CFG_LIVE_TIME_FIELD, CHEST_DROP_CFG_REFRESH_TIME_FIELD}
-CHEST_DROP_CFG.is_extendable = false
-CHEST_DROP_CFG.extensions = {}
-CHEST_DROP_CFGS_ITEMS_FIELD.name = "items"
-CHEST_DROP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.chest_drop_cfgs.items"
-CHEST_DROP_CFGS_ITEMS_FIELD.number = 1
-CHEST_DROP_CFGS_ITEMS_FIELD.index = 0
-CHEST_DROP_CFGS_ITEMS_FIELD.label = 3
-CHEST_DROP_CFGS_ITEMS_FIELD.has_default_value = false
-CHEST_DROP_CFGS_ITEMS_FIELD.default_value = {}
-CHEST_DROP_CFGS_ITEMS_FIELD.message_type = CHEST_DROP_CFG
-CHEST_DROP_CFGS_ITEMS_FIELD.type = 11
-CHEST_DROP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-CHEST_DROP_CFGS.name = "chest_drop_cfgs"
-CHEST_DROP_CFGS.full_name = ".ftcfg.chest_drop_cfgs"
-CHEST_DROP_CFGS.nested_types = {}
-CHEST_DROP_CFGS.enum_types = {}
-CHEST_DROP_CFGS.fields = {CHEST_DROP_CFGS_ITEMS_FIELD}
-CHEST_DROP_CFGS.is_extendable = false
-CHEST_DROP_CFGS.extensions = {}
-MINIMAP_CFG_ID_FIELD.name = "id"
-MINIMAP_CFG_ID_FIELD.full_name = ".ftcfg.minimap_cfg.id"
-MINIMAP_CFG_ID_FIELD.number = 1
-MINIMAP_CFG_ID_FIELD.index = 0
-MINIMAP_CFG_ID_FIELD.label = 2
-MINIMAP_CFG_ID_FIELD.has_default_value = false
-MINIMAP_CFG_ID_FIELD.default_value = 0
-MINIMAP_CFG_ID_FIELD.type = 5
-MINIMAP_CFG_ID_FIELD.cpp_type = 1
-
-MINIMAP_CFG_POS_X_FIELD.name = "pos_x"
-MINIMAP_CFG_POS_X_FIELD.full_name = ".ftcfg.minimap_cfg.pos_x"
-MINIMAP_CFG_POS_X_FIELD.number = 2
-MINIMAP_CFG_POS_X_FIELD.index = 1
-MINIMAP_CFG_POS_X_FIELD.label = 2
-MINIMAP_CFG_POS_X_FIELD.has_default_value = false
-MINIMAP_CFG_POS_X_FIELD.default_value = 0.0
-MINIMAP_CFG_POS_X_FIELD.type = 2
-MINIMAP_CFG_POS_X_FIELD.cpp_type = 6
-
-MINIMAP_CFG_POS_Z_FIELD.name = "pos_z"
-MINIMAP_CFG_POS_Z_FIELD.full_name = ".ftcfg.minimap_cfg.pos_z"
-MINIMAP_CFG_POS_Z_FIELD.number = 3
-MINIMAP_CFG_POS_Z_FIELD.index = 2
-MINIMAP_CFG_POS_Z_FIELD.label = 2
-MINIMAP_CFG_POS_Z_FIELD.has_default_value = false
-MINIMAP_CFG_POS_Z_FIELD.default_value = 0.0
-MINIMAP_CFG_POS_Z_FIELD.type = 2
-MINIMAP_CFG_POS_Z_FIELD.cpp_type = 6
-
-MINIMAP_CFG_WIDTH_FIELD.name = "width"
-MINIMAP_CFG_WIDTH_FIELD.full_name = ".ftcfg.minimap_cfg.width"
-MINIMAP_CFG_WIDTH_FIELD.number = 4
-MINIMAP_CFG_WIDTH_FIELD.index = 3
-MINIMAP_CFG_WIDTH_FIELD.label = 2
-MINIMAP_CFG_WIDTH_FIELD.has_default_value = false
-MINIMAP_CFG_WIDTH_FIELD.default_value = 0.0
-MINIMAP_CFG_WIDTH_FIELD.type = 2
-MINIMAP_CFG_WIDTH_FIELD.cpp_type = 6
-
-MINIMAP_CFG_HEIGHT_FIELD.name = "height"
-MINIMAP_CFG_HEIGHT_FIELD.full_name = ".ftcfg.minimap_cfg.height"
-MINIMAP_CFG_HEIGHT_FIELD.number = 5
-MINIMAP_CFG_HEIGHT_FIELD.index = 4
-MINIMAP_CFG_HEIGHT_FIELD.label = 2
-MINIMAP_CFG_HEIGHT_FIELD.has_default_value = false
-MINIMAP_CFG_HEIGHT_FIELD.default_value = 0.0
-MINIMAP_CFG_HEIGHT_FIELD.type = 2
-MINIMAP_CFG_HEIGHT_FIELD.cpp_type = 6
-
-MINIMAP_CFG_TEX_WIDTH_FIELD.name = "tex_width"
-MINIMAP_CFG_TEX_WIDTH_FIELD.full_name = ".ftcfg.minimap_cfg.tex_width"
-MINIMAP_CFG_TEX_WIDTH_FIELD.number = 6
-MINIMAP_CFG_TEX_WIDTH_FIELD.index = 5
-MINIMAP_CFG_TEX_WIDTH_FIELD.label = 2
-MINIMAP_CFG_TEX_WIDTH_FIELD.has_default_value = false
-MINIMAP_CFG_TEX_WIDTH_FIELD.default_value = 0.0
-MINIMAP_CFG_TEX_WIDTH_FIELD.type = 2
-MINIMAP_CFG_TEX_WIDTH_FIELD.cpp_type = 6
-
-MINIMAP_CFG_TEX_HEIGHT_FIELD.name = "tex_height"
-MINIMAP_CFG_TEX_HEIGHT_FIELD.full_name = ".ftcfg.minimap_cfg.tex_height"
-MINIMAP_CFG_TEX_HEIGHT_FIELD.number = 7
-MINIMAP_CFG_TEX_HEIGHT_FIELD.index = 6
-MINIMAP_CFG_TEX_HEIGHT_FIELD.label = 2
-MINIMAP_CFG_TEX_HEIGHT_FIELD.has_default_value = false
-MINIMAP_CFG_TEX_HEIGHT_FIELD.default_value = 0.0
-MINIMAP_CFG_TEX_HEIGHT_FIELD.type = 2
-MINIMAP_CFG_TEX_HEIGHT_FIELD.cpp_type = 6
-
-MINIMAP_CFG_RES_ID_FIELD.name = "res_id"
-MINIMAP_CFG_RES_ID_FIELD.full_name = ".ftcfg.minimap_cfg.res_id"
-MINIMAP_CFG_RES_ID_FIELD.number = 8
-MINIMAP_CFG_RES_ID_FIELD.index = 7
-MINIMAP_CFG_RES_ID_FIELD.label = 2
-MINIMAP_CFG_RES_ID_FIELD.has_default_value = false
-MINIMAP_CFG_RES_ID_FIELD.default_value = 0
-MINIMAP_CFG_RES_ID_FIELD.type = 5
-MINIMAP_CFG_RES_ID_FIELD.cpp_type = 1
-
-MINIMAP_CFG_ROTATION_FIELD.name = "rotation"
-MINIMAP_CFG_ROTATION_FIELD.full_name = ".ftcfg.minimap_cfg.rotation"
-MINIMAP_CFG_ROTATION_FIELD.number = 9
-MINIMAP_CFG_ROTATION_FIELD.index = 8
-MINIMAP_CFG_ROTATION_FIELD.label = 2
-MINIMAP_CFG_ROTATION_FIELD.has_default_value = false
-MINIMAP_CFG_ROTATION_FIELD.default_value = 0.0
-MINIMAP_CFG_ROTATION_FIELD.type = 2
-MINIMAP_CFG_ROTATION_FIELD.cpp_type = 6
-
-MINIMAP_CFG_MINIMAP_RADIUS_FIELD.name = "minimap_radius"
-MINIMAP_CFG_MINIMAP_RADIUS_FIELD.full_name = ".ftcfg.minimap_cfg.minimap_radius"
-MINIMAP_CFG_MINIMAP_RADIUS_FIELD.number = 10
-MINIMAP_CFG_MINIMAP_RADIUS_FIELD.index = 9
-MINIMAP_CFG_MINIMAP_RADIUS_FIELD.label = 2
-MINIMAP_CFG_MINIMAP_RADIUS_FIELD.has_default_value = false
-MINIMAP_CFG_MINIMAP_RADIUS_FIELD.default_value = 0.0
-MINIMAP_CFG_MINIMAP_RADIUS_FIELD.type = 2
-MINIMAP_CFG_MINIMAP_RADIUS_FIELD.cpp_type = 6
-
-MINIMAP_CFG.name = "minimap_cfg"
-MINIMAP_CFG.full_name = ".ftcfg.minimap_cfg"
-MINIMAP_CFG.nested_types = {}
-MINIMAP_CFG.enum_types = {}
-MINIMAP_CFG.fields = {MINIMAP_CFG_ID_FIELD, MINIMAP_CFG_POS_X_FIELD, MINIMAP_CFG_POS_Z_FIELD, MINIMAP_CFG_WIDTH_FIELD, MINIMAP_CFG_HEIGHT_FIELD, MINIMAP_CFG_TEX_WIDTH_FIELD, MINIMAP_CFG_TEX_HEIGHT_FIELD, MINIMAP_CFG_RES_ID_FIELD, MINIMAP_CFG_ROTATION_FIELD, MINIMAP_CFG_MINIMAP_RADIUS_FIELD}
-MINIMAP_CFG.is_extendable = false
-MINIMAP_CFG.extensions = {}
-MINIMAP_CFGS_ITEMS_FIELD.name = "items"
-MINIMAP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.minimap_cfgs.items"
-MINIMAP_CFGS_ITEMS_FIELD.number = 1
-MINIMAP_CFGS_ITEMS_FIELD.index = 0
-MINIMAP_CFGS_ITEMS_FIELD.label = 3
-MINIMAP_CFGS_ITEMS_FIELD.has_default_value = false
-MINIMAP_CFGS_ITEMS_FIELD.default_value = {}
-MINIMAP_CFGS_ITEMS_FIELD.message_type = MINIMAP_CFG
-MINIMAP_CFGS_ITEMS_FIELD.type = 11
-MINIMAP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MINIMAP_CFGS.name = "minimap_cfgs"
-MINIMAP_CFGS.full_name = ".ftcfg.minimap_cfgs"
-MINIMAP_CFGS.nested_types = {}
-MINIMAP_CFGS.enum_types = {}
-MINIMAP_CFGS.fields = {MINIMAP_CFGS_ITEMS_FIELD}
-MINIMAP_CFGS.is_extendable = false
-MINIMAP_CFGS.extensions = {}
-TREASURE_ROOMS_CFG_GROUPID_FIELD.name = "groupid"
-TREASURE_ROOMS_CFG_GROUPID_FIELD.full_name = ".ftcfg.treasure_rooms_cfg.groupid"
-TREASURE_ROOMS_CFG_GROUPID_FIELD.number = 1
-TREASURE_ROOMS_CFG_GROUPID_FIELD.index = 0
-TREASURE_ROOMS_CFG_GROUPID_FIELD.label = 2
-TREASURE_ROOMS_CFG_GROUPID_FIELD.has_default_value = false
-TREASURE_ROOMS_CFG_GROUPID_FIELD.default_value = 0
-TREASURE_ROOMS_CFG_GROUPID_FIELD.type = 5
-TREASURE_ROOMS_CFG_GROUPID_FIELD.cpp_type = 1
-
-TREASURE_ROOMS_CFG_AREA_ID_FIELD.name = "area_id"
-TREASURE_ROOMS_CFG_AREA_ID_FIELD.full_name = ".ftcfg.treasure_rooms_cfg.area_id"
-TREASURE_ROOMS_CFG_AREA_ID_FIELD.number = 2
-TREASURE_ROOMS_CFG_AREA_ID_FIELD.index = 1
-TREASURE_ROOMS_CFG_AREA_ID_FIELD.label = 2
-TREASURE_ROOMS_CFG_AREA_ID_FIELD.has_default_value = false
-TREASURE_ROOMS_CFG_AREA_ID_FIELD.default_value = 0
-TREASURE_ROOMS_CFG_AREA_ID_FIELD.type = 5
-TREASURE_ROOMS_CFG_AREA_ID_FIELD.cpp_type = 1
-
-TREASURE_ROOMS_CFG_RED_NUM_FIELD.name = "red_num"
-TREASURE_ROOMS_CFG_RED_NUM_FIELD.full_name = ".ftcfg.treasure_rooms_cfg.red_num"
-TREASURE_ROOMS_CFG_RED_NUM_FIELD.number = 3
-TREASURE_ROOMS_CFG_RED_NUM_FIELD.index = 2
-TREASURE_ROOMS_CFG_RED_NUM_FIELD.label = 2
-TREASURE_ROOMS_CFG_RED_NUM_FIELD.has_default_value = false
-TREASURE_ROOMS_CFG_RED_NUM_FIELD.default_value = 0
-TREASURE_ROOMS_CFG_RED_NUM_FIELD.type = 5
-TREASURE_ROOMS_CFG_RED_NUM_FIELD.cpp_type = 1
-
-TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.name = "blue_num"
-TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.full_name = ".ftcfg.treasure_rooms_cfg.blue_num"
-TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.number = 4
-TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.index = 3
-TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.label = 2
-TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.has_default_value = false
-TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.default_value = 0
-TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.type = 5
-TREASURE_ROOMS_CFG_BLUE_NUM_FIELD.cpp_type = 1
-
-TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.name = "min_level"
-TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.full_name = ".ftcfg.treasure_rooms_cfg.min_level"
-TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.number = 5
-TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.index = 4
-TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.label = 2
-TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.has_default_value = false
-TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.default_value = 0
-TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.type = 5
-TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD.cpp_type = 1
-
-TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.name = "max_level"
-TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.full_name = ".ftcfg.treasure_rooms_cfg.max_level"
-TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.number = 6
-TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.index = 5
-TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.label = 2
-TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.has_default_value = false
-TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.default_value = 0
-TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.type = 5
-TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD.cpp_type = 1
-
-TREASURE_ROOMS_CFG.name = "treasure_rooms_cfg"
-TREASURE_ROOMS_CFG.full_name = ".ftcfg.treasure_rooms_cfg"
-TREASURE_ROOMS_CFG.nested_types = {}
-TREASURE_ROOMS_CFG.enum_types = {}
-TREASURE_ROOMS_CFG.fields = {TREASURE_ROOMS_CFG_GROUPID_FIELD, TREASURE_ROOMS_CFG_AREA_ID_FIELD, TREASURE_ROOMS_CFG_RED_NUM_FIELD, TREASURE_ROOMS_CFG_BLUE_NUM_FIELD, TREASURE_ROOMS_CFG_MIN_LEVEL_FIELD, TREASURE_ROOMS_CFG_MAX_LEVEL_FIELD}
-TREASURE_ROOMS_CFG.is_extendable = false
-TREASURE_ROOMS_CFG.extensions = {}
-TREASURE_ROOMS_CFGS_ITEMS_FIELD.name = "items"
-TREASURE_ROOMS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.treasure_rooms_cfgs.items"
-TREASURE_ROOMS_CFGS_ITEMS_FIELD.number = 1
-TREASURE_ROOMS_CFGS_ITEMS_FIELD.index = 0
-TREASURE_ROOMS_CFGS_ITEMS_FIELD.label = 3
-TREASURE_ROOMS_CFGS_ITEMS_FIELD.has_default_value = false
-TREASURE_ROOMS_CFGS_ITEMS_FIELD.default_value = {}
-TREASURE_ROOMS_CFGS_ITEMS_FIELD.message_type = TREASURE_ROOMS_CFG
-TREASURE_ROOMS_CFGS_ITEMS_FIELD.type = 11
-TREASURE_ROOMS_CFGS_ITEMS_FIELD.cpp_type = 10
-
-TREASURE_ROOMS_CFGS.name = "treasure_rooms_cfgs"
-TREASURE_ROOMS_CFGS.full_name = ".ftcfg.treasure_rooms_cfgs"
-TREASURE_ROOMS_CFGS.nested_types = {}
-TREASURE_ROOMS_CFGS.enum_types = {}
-TREASURE_ROOMS_CFGS.fields = {TREASURE_ROOMS_CFGS_ITEMS_FIELD}
-TREASURE_ROOMS_CFGS.is_extendable = false
-TREASURE_ROOMS_CFGS.extensions = {}
-CRUSADE_BASE_CFG_LEVEL_FIELD.name = "level"
-CRUSADE_BASE_CFG_LEVEL_FIELD.full_name = ".ftcfg.crusade_base_cfg.level"
-CRUSADE_BASE_CFG_LEVEL_FIELD.number = 1
-CRUSADE_BASE_CFG_LEVEL_FIELD.index = 0
-CRUSADE_BASE_CFG_LEVEL_FIELD.label = 2
-CRUSADE_BASE_CFG_LEVEL_FIELD.has_default_value = false
-CRUSADE_BASE_CFG_LEVEL_FIELD.default_value = 0
-CRUSADE_BASE_CFG_LEVEL_FIELD.type = 5
-CRUSADE_BASE_CFG_LEVEL_FIELD.cpp_type = 1
-
-CRUSADE_BASE_CFG_DESC_FIELD.name = "desc"
-CRUSADE_BASE_CFG_DESC_FIELD.full_name = ".ftcfg.crusade_base_cfg.desc"
-CRUSADE_BASE_CFG_DESC_FIELD.number = 2
-CRUSADE_BASE_CFG_DESC_FIELD.index = 1
-CRUSADE_BASE_CFG_DESC_FIELD.label = 2
-CRUSADE_BASE_CFG_DESC_FIELD.has_default_value = false
-CRUSADE_BASE_CFG_DESC_FIELD.default_value = ""
-CRUSADE_BASE_CFG_DESC_FIELD.type = 9
-CRUSADE_BASE_CFG_DESC_FIELD.cpp_type = 9
-
-CRUSADE_BASE_CFG_SCENE_ID_FIELD.name = "scene_id"
-CRUSADE_BASE_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.crusade_base_cfg.scene_id"
-CRUSADE_BASE_CFG_SCENE_ID_FIELD.number = 3
-CRUSADE_BASE_CFG_SCENE_ID_FIELD.index = 2
-CRUSADE_BASE_CFG_SCENE_ID_FIELD.label = 2
-CRUSADE_BASE_CFG_SCENE_ID_FIELD.has_default_value = false
-CRUSADE_BASE_CFG_SCENE_ID_FIELD.default_value = 0
-CRUSADE_BASE_CFG_SCENE_ID_FIELD.type = 5
-CRUSADE_BASE_CFG_SCENE_ID_FIELD.cpp_type = 1
-
-CRUSADE_BASE_CFG_NPC_ID_FIELD.name = "npc_id"
-CRUSADE_BASE_CFG_NPC_ID_FIELD.full_name = ".ftcfg.crusade_base_cfg.npc_id"
-CRUSADE_BASE_CFG_NPC_ID_FIELD.number = 4
-CRUSADE_BASE_CFG_NPC_ID_FIELD.index = 3
-CRUSADE_BASE_CFG_NPC_ID_FIELD.label = 3
-CRUSADE_BASE_CFG_NPC_ID_FIELD.has_default_value = false
-CRUSADE_BASE_CFG_NPC_ID_FIELD.default_value = {}
-CRUSADE_BASE_CFG_NPC_ID_FIELD.type = 5
-CRUSADE_BASE_CFG_NPC_ID_FIELD.cpp_type = 1
-
-CRUSADE_BASE_CFG_GROUP_ID_FIELD.name = "group_id"
-CRUSADE_BASE_CFG_GROUP_ID_FIELD.full_name = ".ftcfg.crusade_base_cfg.group_id"
-CRUSADE_BASE_CFG_GROUP_ID_FIELD.number = 5
-CRUSADE_BASE_CFG_GROUP_ID_FIELD.index = 4
-CRUSADE_BASE_CFG_GROUP_ID_FIELD.label = 2
-CRUSADE_BASE_CFG_GROUP_ID_FIELD.has_default_value = false
-CRUSADE_BASE_CFG_GROUP_ID_FIELD.default_value = 0
-CRUSADE_BASE_CFG_GROUP_ID_FIELD.type = 5
-CRUSADE_BASE_CFG_GROUP_ID_FIELD.cpp_type = 1
-
-CRUSADE_BASE_CFG.name = "crusade_base_cfg"
-CRUSADE_BASE_CFG.full_name = ".ftcfg.crusade_base_cfg"
-CRUSADE_BASE_CFG.nested_types = {}
-CRUSADE_BASE_CFG.enum_types = {}
-CRUSADE_BASE_CFG.fields = {CRUSADE_BASE_CFG_LEVEL_FIELD, CRUSADE_BASE_CFG_DESC_FIELD, CRUSADE_BASE_CFG_SCENE_ID_FIELD, CRUSADE_BASE_CFG_NPC_ID_FIELD, CRUSADE_BASE_CFG_GROUP_ID_FIELD}
-CRUSADE_BASE_CFG.is_extendable = false
-CRUSADE_BASE_CFG.extensions = {}
-CRUSADE_BASE_CFGS_ITEMS_FIELD.name = "items"
-CRUSADE_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.crusade_base_cfgs.items"
-CRUSADE_BASE_CFGS_ITEMS_FIELD.number = 1
-CRUSADE_BASE_CFGS_ITEMS_FIELD.index = 0
-CRUSADE_BASE_CFGS_ITEMS_FIELD.label = 3
-CRUSADE_BASE_CFGS_ITEMS_FIELD.has_default_value = false
-CRUSADE_BASE_CFGS_ITEMS_FIELD.default_value = {}
-CRUSADE_BASE_CFGS_ITEMS_FIELD.message_type = CRUSADE_BASE_CFG
-CRUSADE_BASE_CFGS_ITEMS_FIELD.type = 11
-CRUSADE_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-CRUSADE_BASE_CFGS.name = "crusade_base_cfgs"
-CRUSADE_BASE_CFGS.full_name = ".ftcfg.crusade_base_cfgs"
-CRUSADE_BASE_CFGS.nested_types = {}
-CRUSADE_BASE_CFGS.enum_types = {}
-CRUSADE_BASE_CFGS.fields = {CRUSADE_BASE_CFGS_ITEMS_FIELD}
-CRUSADE_BASE_CFGS.is_extendable = false
-CRUSADE_BASE_CFGS.extensions = {}
-CRUSADE_DUNGON_CFG_NPCID_FIELD.name = "npcid"
-CRUSADE_DUNGON_CFG_NPCID_FIELD.full_name = ".ftcfg.crusade_dungon_cfg.npcid"
-CRUSADE_DUNGON_CFG_NPCID_FIELD.number = 1
-CRUSADE_DUNGON_CFG_NPCID_FIELD.index = 0
-CRUSADE_DUNGON_CFG_NPCID_FIELD.label = 2
-CRUSADE_DUNGON_CFG_NPCID_FIELD.has_default_value = false
-CRUSADE_DUNGON_CFG_NPCID_FIELD.default_value = 0
-CRUSADE_DUNGON_CFG_NPCID_FIELD.type = 5
-CRUSADE_DUNGON_CFG_NPCID_FIELD.cpp_type = 1
-
-CRUSADE_DUNGON_CFG_MAP_ID_FIELD.name = "map_id"
-CRUSADE_DUNGON_CFG_MAP_ID_FIELD.full_name = ".ftcfg.crusade_dungon_cfg.map_id"
-CRUSADE_DUNGON_CFG_MAP_ID_FIELD.number = 2
-CRUSADE_DUNGON_CFG_MAP_ID_FIELD.index = 1
-CRUSADE_DUNGON_CFG_MAP_ID_FIELD.label = 3
-CRUSADE_DUNGON_CFG_MAP_ID_FIELD.has_default_value = false
-CRUSADE_DUNGON_CFG_MAP_ID_FIELD.default_value = {}
-CRUSADE_DUNGON_CFG_MAP_ID_FIELD.type = 5
-CRUSADE_DUNGON_CFG_MAP_ID_FIELD.cpp_type = 1
-
-CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.name = "npc_stagetype"
-CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.full_name = ".ftcfg.crusade_dungon_cfg.npc_stagetype"
-CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.number = 3
-CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.index = 2
-CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.label = 2
-CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.has_default_value = false
-CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.default_value = 0
-CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.type = 5
-CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD.cpp_type = 1
-
-CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.name = "reward_id"
-CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.full_name = ".ftcfg.crusade_dungon_cfg.reward_id"
-CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.number = 4
-CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.index = 3
-CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.label = 2
-CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.has_default_value = false
-CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.default_value = 0
-CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.type = 5
-CRUSADE_DUNGON_CFG_REWARD_ID_FIELD.cpp_type = 1
-
-CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.name = "birth_x"
-CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.full_name = ".ftcfg.crusade_dungon_cfg.birth_x"
-CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.number = 5
-CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.index = 4
-CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.label = 3
-CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.has_default_value = false
-CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.default_value = {}
-CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.type = 2
-CRUSADE_DUNGON_CFG_BIRTH_X_FIELD.cpp_type = 6
-
-CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.name = "birth_y"
-CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.full_name = ".ftcfg.crusade_dungon_cfg.birth_y"
-CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.number = 6
-CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.index = 5
-CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.label = 3
-CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.has_default_value = false
-CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.default_value = {}
-CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.type = 2
-CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD.cpp_type = 6
-
-CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.name = "birth_z"
-CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.full_name = ".ftcfg.crusade_dungon_cfg.birth_z"
-CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.number = 7
-CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.index = 6
-CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.label = 3
-CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.has_default_value = false
-CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.default_value = {}
-CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.type = 2
-CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD.cpp_type = 6
-
-CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.name = "difficult"
-CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.full_name = ".ftcfg.crusade_dungon_cfg.difficult"
-CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.number = 8
-CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.index = 7
-CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.label = 2
-CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.has_default_value = false
-CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.default_value = 0
-CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.type = 5
-CRUSADE_DUNGON_CFG_DIFFICULT_FIELD.cpp_type = 1
-
-CRUSADE_DUNGON_CFG.name = "crusade_dungon_cfg"
-CRUSADE_DUNGON_CFG.full_name = ".ftcfg.crusade_dungon_cfg"
-CRUSADE_DUNGON_CFG.nested_types = {}
-CRUSADE_DUNGON_CFG.enum_types = {}
-CRUSADE_DUNGON_CFG.fields = {CRUSADE_DUNGON_CFG_NPCID_FIELD, CRUSADE_DUNGON_CFG_MAP_ID_FIELD, CRUSADE_DUNGON_CFG_NPC_STAGETYPE_FIELD, CRUSADE_DUNGON_CFG_REWARD_ID_FIELD, CRUSADE_DUNGON_CFG_BIRTH_X_FIELD, CRUSADE_DUNGON_CFG_BIRTH_Y_FIELD, CRUSADE_DUNGON_CFG_BIRTH_Z_FIELD, CRUSADE_DUNGON_CFG_DIFFICULT_FIELD}
-CRUSADE_DUNGON_CFG.is_extendable = false
-CRUSADE_DUNGON_CFG.extensions = {}
-CRUSADE_DUNGON_CFGS_ITEMS_FIELD.name = "items"
-CRUSADE_DUNGON_CFGS_ITEMS_FIELD.full_name = ".ftcfg.crusade_dungon_cfgs.items"
-CRUSADE_DUNGON_CFGS_ITEMS_FIELD.number = 1
-CRUSADE_DUNGON_CFGS_ITEMS_FIELD.index = 0
-CRUSADE_DUNGON_CFGS_ITEMS_FIELD.label = 3
-CRUSADE_DUNGON_CFGS_ITEMS_FIELD.has_default_value = false
-CRUSADE_DUNGON_CFGS_ITEMS_FIELD.default_value = {}
-CRUSADE_DUNGON_CFGS_ITEMS_FIELD.message_type = CRUSADE_DUNGON_CFG
-CRUSADE_DUNGON_CFGS_ITEMS_FIELD.type = 11
-CRUSADE_DUNGON_CFGS_ITEMS_FIELD.cpp_type = 10
-
-CRUSADE_DUNGON_CFGS.name = "crusade_dungon_cfgs"
-CRUSADE_DUNGON_CFGS.full_name = ".ftcfg.crusade_dungon_cfgs"
-CRUSADE_DUNGON_CFGS.nested_types = {}
-CRUSADE_DUNGON_CFGS.enum_types = {}
-CRUSADE_DUNGON_CFGS.fields = {CRUSADE_DUNGON_CFGS_ITEMS_FIELD}
-CRUSADE_DUNGON_CFGS.is_extendable = false
-CRUSADE_DUNGON_CFGS.extensions = {}
-STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.name = "prop_type"
-STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.full_name = ".ftcfg.strength_convert_cfg.prop_type"
-STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.number = 1
-STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.index = 0
-STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.label = 2
-STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.has_default_value = false
-STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.default_value = nil
-STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
-STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.type = 14
-STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD.cpp_type = 8
-
-STRENGTH_CONVERT_CFG_FACTOR_FIELD.name = "factor"
-STRENGTH_CONVERT_CFG_FACTOR_FIELD.full_name = ".ftcfg.strength_convert_cfg.factor"
-STRENGTH_CONVERT_CFG_FACTOR_FIELD.number = 2
-STRENGTH_CONVERT_CFG_FACTOR_FIELD.index = 1
-STRENGTH_CONVERT_CFG_FACTOR_FIELD.label = 2
-STRENGTH_CONVERT_CFG_FACTOR_FIELD.has_default_value = false
-STRENGTH_CONVERT_CFG_FACTOR_FIELD.default_value = 0.0
-STRENGTH_CONVERT_CFG_FACTOR_FIELD.type = 1
-STRENGTH_CONVERT_CFG_FACTOR_FIELD.cpp_type = 5
-
-STRENGTH_CONVERT_CFG.name = "strength_convert_cfg"
-STRENGTH_CONVERT_CFG.full_name = ".ftcfg.strength_convert_cfg"
-STRENGTH_CONVERT_CFG.nested_types = {}
-STRENGTH_CONVERT_CFG.enum_types = {}
-STRENGTH_CONVERT_CFG.fields = {STRENGTH_CONVERT_CFG_PROP_TYPE_FIELD, STRENGTH_CONVERT_CFG_FACTOR_FIELD}
-STRENGTH_CONVERT_CFG.is_extendable = false
-STRENGTH_CONVERT_CFG.extensions = {}
-STRENGTH_CONVERT_CFGS_ITEMS_FIELD.name = "items"
-STRENGTH_CONVERT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.strength_convert_cfgs.items"
-STRENGTH_CONVERT_CFGS_ITEMS_FIELD.number = 1
-STRENGTH_CONVERT_CFGS_ITEMS_FIELD.index = 0
-STRENGTH_CONVERT_CFGS_ITEMS_FIELD.label = 3
-STRENGTH_CONVERT_CFGS_ITEMS_FIELD.has_default_value = false
-STRENGTH_CONVERT_CFGS_ITEMS_FIELD.default_value = {}
-STRENGTH_CONVERT_CFGS_ITEMS_FIELD.message_type = STRENGTH_CONVERT_CFG
-STRENGTH_CONVERT_CFGS_ITEMS_FIELD.type = 11
-STRENGTH_CONVERT_CFGS_ITEMS_FIELD.cpp_type = 10
-
-STRENGTH_CONVERT_CFGS.name = "strength_convert_cfgs"
-STRENGTH_CONVERT_CFGS.full_name = ".ftcfg.strength_convert_cfgs"
-STRENGTH_CONVERT_CFGS.nested_types = {}
-STRENGTH_CONVERT_CFGS.enum_types = {}
-STRENGTH_CONVERT_CFGS.fields = {STRENGTH_CONVERT_CFGS_ITEMS_FIELD}
-STRENGTH_CONVERT_CFGS.is_extendable = false
-STRENGTH_CONVERT_CFGS.extensions = {}
-SKILL_SUMMONED_NPC_CFG_ID_FIELD.name = "id"
-SKILL_SUMMONED_NPC_CFG_ID_FIELD.full_name = ".ftcfg.skill_summoned_npc_cfg.id"
-SKILL_SUMMONED_NPC_CFG_ID_FIELD.number = 1
-SKILL_SUMMONED_NPC_CFG_ID_FIELD.index = 0
-SKILL_SUMMONED_NPC_CFG_ID_FIELD.label = 2
-SKILL_SUMMONED_NPC_CFG_ID_FIELD.has_default_value = false
-SKILL_SUMMONED_NPC_CFG_ID_FIELD.default_value = 0
-SKILL_SUMMONED_NPC_CFG_ID_FIELD.type = 5
-SKILL_SUMMONED_NPC_CFG_ID_FIELD.cpp_type = 1
-
-SKILL_SUMMONED_NPC_CFG_DESC_FIELD.name = "desc"
-SKILL_SUMMONED_NPC_CFG_DESC_FIELD.full_name = ".ftcfg.skill_summoned_npc_cfg.desc"
-SKILL_SUMMONED_NPC_CFG_DESC_FIELD.number = 2
-SKILL_SUMMONED_NPC_CFG_DESC_FIELD.index = 1
-SKILL_SUMMONED_NPC_CFG_DESC_FIELD.label = 2
-SKILL_SUMMONED_NPC_CFG_DESC_FIELD.has_default_value = false
-SKILL_SUMMONED_NPC_CFG_DESC_FIELD.default_value = ""
-SKILL_SUMMONED_NPC_CFG_DESC_FIELD.type = 9
-SKILL_SUMMONED_NPC_CFG_DESC_FIELD.cpp_type = 9
-
-SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.name = "npc_id"
-SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.full_name = ".ftcfg.skill_summoned_npc_cfg.npc_id"
-SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.number = 3
-SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.index = 2
-SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.label = 2
-SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.has_default_value = false
-SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.default_value = 0
-SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.type = 5
-SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD.cpp_type = 1
-
-SKILL_SUMMONED_NPC_CFG.name = "skill_summoned_npc_cfg"
-SKILL_SUMMONED_NPC_CFG.full_name = ".ftcfg.skill_summoned_npc_cfg"
-SKILL_SUMMONED_NPC_CFG.nested_types = {}
-SKILL_SUMMONED_NPC_CFG.enum_types = {}
-SKILL_SUMMONED_NPC_CFG.fields = {SKILL_SUMMONED_NPC_CFG_ID_FIELD, SKILL_SUMMONED_NPC_CFG_DESC_FIELD, SKILL_SUMMONED_NPC_CFG_NPC_ID_FIELD}
-SKILL_SUMMONED_NPC_CFG.is_extendable = false
-SKILL_SUMMONED_NPC_CFG.extensions = {}
-SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.name = "items"
-SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.full_name = ".ftcfg.skill_summoned_npc_cfgs.items"
-SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.number = 1
-SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.index = 0
-SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.label = 3
-SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.has_default_value = false
-SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.default_value = {}
-SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.message_type = SKILL_SUMMONED_NPC_CFG
-SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.type = 11
-SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SKILL_SUMMONED_NPC_CFGS.name = "skill_summoned_npc_cfgs"
-SKILL_SUMMONED_NPC_CFGS.full_name = ".ftcfg.skill_summoned_npc_cfgs"
-SKILL_SUMMONED_NPC_CFGS.nested_types = {}
-SKILL_SUMMONED_NPC_CFGS.enum_types = {}
-SKILL_SUMMONED_NPC_CFGS.fields = {SKILL_SUMMONED_NPC_CFGS_ITEMS_FIELD}
-SKILL_SUMMONED_NPC_CFGS.is_extendable = false
-SKILL_SUMMONED_NPC_CFGS.extensions = {}
-SKILL_SUMMONED_CFG_ID_FIELD.name = "id"
-SKILL_SUMMONED_CFG_ID_FIELD.full_name = ".ftcfg.skill_summoned_cfg.id"
-SKILL_SUMMONED_CFG_ID_FIELD.number = 1
-SKILL_SUMMONED_CFG_ID_FIELD.index = 0
-SKILL_SUMMONED_CFG_ID_FIELD.label = 2
-SKILL_SUMMONED_CFG_ID_FIELD.has_default_value = false
-SKILL_SUMMONED_CFG_ID_FIELD.default_value = 0
-SKILL_SUMMONED_CFG_ID_FIELD.type = 5
-SKILL_SUMMONED_CFG_ID_FIELD.cpp_type = 1
-
-SKILL_SUMMONED_CFG_DESC_FIELD.name = "desc"
-SKILL_SUMMONED_CFG_DESC_FIELD.full_name = ".ftcfg.skill_summoned_cfg.desc"
-SKILL_SUMMONED_CFG_DESC_FIELD.number = 2
-SKILL_SUMMONED_CFG_DESC_FIELD.index = 1
-SKILL_SUMMONED_CFG_DESC_FIELD.label = 2
-SKILL_SUMMONED_CFG_DESC_FIELD.has_default_value = false
-SKILL_SUMMONED_CFG_DESC_FIELD.default_value = ""
-SKILL_SUMMONED_CFG_DESC_FIELD.type = 9
-SKILL_SUMMONED_CFG_DESC_FIELD.cpp_type = 9
-
-SKILL_SUMMONED_CFG_RING_FIELD.name = "ring"
-SKILL_SUMMONED_CFG_RING_FIELD.full_name = ".ftcfg.skill_summoned_cfg.ring"
-SKILL_SUMMONED_CFG_RING_FIELD.number = 3
-SKILL_SUMMONED_CFG_RING_FIELD.index = 2
-SKILL_SUMMONED_CFG_RING_FIELD.label = 2
-SKILL_SUMMONED_CFG_RING_FIELD.has_default_value = false
-SKILL_SUMMONED_CFG_RING_FIELD.default_value = 0
-SKILL_SUMMONED_CFG_RING_FIELD.type = 5
-SKILL_SUMMONED_CFG_RING_FIELD.cpp_type = 1
-
-SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.name = "exist_time"
-SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.full_name = ".ftcfg.skill_summoned_cfg.exist_time"
-SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.number = 4
-SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.index = 3
-SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.label = 2
-SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.has_default_value = false
-SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.default_value = 0
-SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.type = 5
-SKILL_SUMMONED_CFG_EXIST_TIME_FIELD.cpp_type = 1
-
-SKILL_SUMMONED_CFG_SPEED_FIELD.name = "speed"
-SKILL_SUMMONED_CFG_SPEED_FIELD.full_name = ".ftcfg.skill_summoned_cfg.speed"
-SKILL_SUMMONED_CFG_SPEED_FIELD.number = 5
-SKILL_SUMMONED_CFG_SPEED_FIELD.index = 4
-SKILL_SUMMONED_CFG_SPEED_FIELD.label = 2
-SKILL_SUMMONED_CFG_SPEED_FIELD.has_default_value = false
-SKILL_SUMMONED_CFG_SPEED_FIELD.default_value = 0.0
-SKILL_SUMMONED_CFG_SPEED_FIELD.type = 2
-SKILL_SUMMONED_CFG_SPEED_FIELD.cpp_type = 6
-
-SKILL_SUMMONED_CFG_EFF_START_FIELD.name = "eff_start"
-SKILL_SUMMONED_CFG_EFF_START_FIELD.full_name = ".ftcfg.skill_summoned_cfg.eff_start"
-SKILL_SUMMONED_CFG_EFF_START_FIELD.number = 6
-SKILL_SUMMONED_CFG_EFF_START_FIELD.index = 5
-SKILL_SUMMONED_CFG_EFF_START_FIELD.label = 2
-SKILL_SUMMONED_CFG_EFF_START_FIELD.has_default_value = false
-SKILL_SUMMONED_CFG_EFF_START_FIELD.default_value = ""
-SKILL_SUMMONED_CFG_EFF_START_FIELD.type = 9
-SKILL_SUMMONED_CFG_EFF_START_FIELD.cpp_type = 9
-
-SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.name = "eff_start_time"
-SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.full_name = ".ftcfg.skill_summoned_cfg.eff_start_time"
-SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.number = 7
-SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.index = 6
-SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.label = 2
-SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.has_default_value = false
-SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.default_value = 0
-SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.type = 5
-SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD.cpp_type = 1
-
-SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.name = "eff_keep"
-SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.full_name = ".ftcfg.skill_summoned_cfg.eff_keep"
-SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.number = 8
-SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.index = 7
-SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.label = 2
-SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.has_default_value = false
-SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.default_value = ""
-SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.type = 9
-SKILL_SUMMONED_CFG_EFF_KEEP_FIELD.cpp_type = 9
-
-SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.name = "eff_destroy"
-SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.full_name = ".ftcfg.skill_summoned_cfg.eff_destroy"
-SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.number = 9
-SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.index = 8
-SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.label = 2
-SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.has_default_value = false
-SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.default_value = ""
-SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.type = 9
-SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD.cpp_type = 9
-
-SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.name = "eff_destroy_time"
-SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.full_name = ".ftcfg.skill_summoned_cfg.eff_destroy_time"
-SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.number = 10
-SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.index = 9
-SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.label = 2
-SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.has_default_value = false
-SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.default_value = 0
-SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.type = 5
-SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD.cpp_type = 1
-
-SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.name = "eff_keep_height"
-SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.full_name = ".ftcfg.skill_summoned_cfg.eff_keep_height"
-SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.number = 11
-SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.index = 10
-SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.label = 2
-SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.has_default_value = false
-SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.default_value = 0.0
-SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.type = 2
-SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD.cpp_type = 6
-
-SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.name = "eff_destroy_height"
-SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.full_name = ".ftcfg.skill_summoned_cfg.eff_destroy_height"
-SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.number = 12
-SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.index = 11
-SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.label = 2
-SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.has_default_value = false
-SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.default_value = 0.0
-SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.type = 2
-SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD.cpp_type = 6
-
-SKILL_SUMMONED_CFG.name = "skill_summoned_cfg"
-SKILL_SUMMONED_CFG.full_name = ".ftcfg.skill_summoned_cfg"
-SKILL_SUMMONED_CFG.nested_types = {}
-SKILL_SUMMONED_CFG.enum_types = {}
-SKILL_SUMMONED_CFG.fields = {SKILL_SUMMONED_CFG_ID_FIELD, SKILL_SUMMONED_CFG_DESC_FIELD, SKILL_SUMMONED_CFG_RING_FIELD, SKILL_SUMMONED_CFG_EXIST_TIME_FIELD, SKILL_SUMMONED_CFG_SPEED_FIELD, SKILL_SUMMONED_CFG_EFF_START_FIELD, SKILL_SUMMONED_CFG_EFF_START_TIME_FIELD, SKILL_SUMMONED_CFG_EFF_KEEP_FIELD, SKILL_SUMMONED_CFG_EFF_DESTROY_FIELD, SKILL_SUMMONED_CFG_EFF_DESTROY_TIME_FIELD, SKILL_SUMMONED_CFG_EFF_KEEP_HEIGHT_FIELD, SKILL_SUMMONED_CFG_EFF_DESTROY_HEIGHT_FIELD}
-SKILL_SUMMONED_CFG.is_extendable = false
-SKILL_SUMMONED_CFG.extensions = {}
-SKILL_SUMMONED_CFGS_ITEMS_FIELD.name = "items"
-SKILL_SUMMONED_CFGS_ITEMS_FIELD.full_name = ".ftcfg.skill_summoned_cfgs.items"
-SKILL_SUMMONED_CFGS_ITEMS_FIELD.number = 1
-SKILL_SUMMONED_CFGS_ITEMS_FIELD.index = 0
-SKILL_SUMMONED_CFGS_ITEMS_FIELD.label = 3
-SKILL_SUMMONED_CFGS_ITEMS_FIELD.has_default_value = false
-SKILL_SUMMONED_CFGS_ITEMS_FIELD.default_value = {}
-SKILL_SUMMONED_CFGS_ITEMS_FIELD.message_type = SKILL_SUMMONED_CFG
-SKILL_SUMMONED_CFGS_ITEMS_FIELD.type = 11
-SKILL_SUMMONED_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SKILL_SUMMONED_CFGS.name = "skill_summoned_cfgs"
-SKILL_SUMMONED_CFGS.full_name = ".ftcfg.skill_summoned_cfgs"
-SKILL_SUMMONED_CFGS.nested_types = {}
-SKILL_SUMMONED_CFGS.enum_types = {}
-SKILL_SUMMONED_CFGS.fields = {SKILL_SUMMONED_CFGS_ITEMS_FIELD}
-SKILL_SUMMONED_CFGS.is_extendable = false
-SKILL_SUMMONED_CFGS.extensions = {}
-CLUE_CFG_CLUE_ID_FIELD.name = "clue_id"
-CLUE_CFG_CLUE_ID_FIELD.full_name = ".ftcfg.clue_cfg.clue_id"
-CLUE_CFG_CLUE_ID_FIELD.number = 1
-CLUE_CFG_CLUE_ID_FIELD.index = 0
-CLUE_CFG_CLUE_ID_FIELD.label = 2
-CLUE_CFG_CLUE_ID_FIELD.has_default_value = false
-CLUE_CFG_CLUE_ID_FIELD.default_value = 0
-CLUE_CFG_CLUE_ID_FIELD.type = 5
-CLUE_CFG_CLUE_ID_FIELD.cpp_type = 1
-
-CLUE_CFG_MAP_ID_FIELD.name = "map_id"
-CLUE_CFG_MAP_ID_FIELD.full_name = ".ftcfg.clue_cfg.map_id"
-CLUE_CFG_MAP_ID_FIELD.number = 2
-CLUE_CFG_MAP_ID_FIELD.index = 1
-CLUE_CFG_MAP_ID_FIELD.label = 2
-CLUE_CFG_MAP_ID_FIELD.has_default_value = false
-CLUE_CFG_MAP_ID_FIELD.default_value = 0
-CLUE_CFG_MAP_ID_FIELD.type = 5
-CLUE_CFG_MAP_ID_FIELD.cpp_type = 1
-
-CLUE_CFG_SCENE_ID_FIELD.name = "scene_id"
-CLUE_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.clue_cfg.scene_id"
-CLUE_CFG_SCENE_ID_FIELD.number = 3
-CLUE_CFG_SCENE_ID_FIELD.index = 2
-CLUE_CFG_SCENE_ID_FIELD.label = 2
-CLUE_CFG_SCENE_ID_FIELD.has_default_value = false
-CLUE_CFG_SCENE_ID_FIELD.default_value = 0
-CLUE_CFG_SCENE_ID_FIELD.type = 5
-CLUE_CFG_SCENE_ID_FIELD.cpp_type = 1
-
-CLUE_CFG_POS_FIELD.name = "pos"
-CLUE_CFG_POS_FIELD.full_name = ".ftcfg.clue_cfg.pos"
-CLUE_CFG_POS_FIELD.number = 4
-CLUE_CFG_POS_FIELD.index = 3
-CLUE_CFG_POS_FIELD.label = 3
-CLUE_CFG_POS_FIELD.has_default_value = false
-CLUE_CFG_POS_FIELD.default_value = {}
-CLUE_CFG_POS_FIELD.type = 2
-CLUE_CFG_POS_FIELD.cpp_type = 6
-
-CLUE_CFG_DESC_FIELD.name = "desc"
-CLUE_CFG_DESC_FIELD.full_name = ".ftcfg.clue_cfg.desc"
-CLUE_CFG_DESC_FIELD.number = 5
-CLUE_CFG_DESC_FIELD.index = 4
-CLUE_CFG_DESC_FIELD.label = 2
-CLUE_CFG_DESC_FIELD.has_default_value = false
-CLUE_CFG_DESC_FIELD.default_value = ""
-CLUE_CFG_DESC_FIELD.type = 9
-CLUE_CFG_DESC_FIELD.cpp_type = 9
-
-CLUE_CFG_BOXES_POS_X_FIELD.name = "boxes_pos_x"
-CLUE_CFG_BOXES_POS_X_FIELD.full_name = ".ftcfg.clue_cfg.boxes_pos_x"
-CLUE_CFG_BOXES_POS_X_FIELD.number = 6
-CLUE_CFG_BOXES_POS_X_FIELD.index = 5
-CLUE_CFG_BOXES_POS_X_FIELD.label = 3
-CLUE_CFG_BOXES_POS_X_FIELD.has_default_value = false
-CLUE_CFG_BOXES_POS_X_FIELD.default_value = {}
-CLUE_CFG_BOXES_POS_X_FIELD.type = 2
-CLUE_CFG_BOXES_POS_X_FIELD.cpp_type = 6
-
-CLUE_CFG_BOXES_POS_Z_FIELD.name = "boxes_pos_z"
-CLUE_CFG_BOXES_POS_Z_FIELD.full_name = ".ftcfg.clue_cfg.boxes_pos_z"
-CLUE_CFG_BOXES_POS_Z_FIELD.number = 7
-CLUE_CFG_BOXES_POS_Z_FIELD.index = 6
-CLUE_CFG_BOXES_POS_Z_FIELD.label = 3
-CLUE_CFG_BOXES_POS_Z_FIELD.has_default_value = false
-CLUE_CFG_BOXES_POS_Z_FIELD.default_value = {}
-CLUE_CFG_BOXES_POS_Z_FIELD.type = 2
-CLUE_CFG_BOXES_POS_Z_FIELD.cpp_type = 6
-
-CLUE_CFG_COST_ID_FIELD.name = "cost_id"
-CLUE_CFG_COST_ID_FIELD.full_name = ".ftcfg.clue_cfg.cost_id"
-CLUE_CFG_COST_ID_FIELD.number = 8
-CLUE_CFG_COST_ID_FIELD.index = 7
-CLUE_CFG_COST_ID_FIELD.label = 2
-CLUE_CFG_COST_ID_FIELD.has_default_value = false
-CLUE_CFG_COST_ID_FIELD.default_value = 0
-CLUE_CFG_COST_ID_FIELD.type = 5
-CLUE_CFG_COST_ID_FIELD.cpp_type = 1
-
-CLUE_CFG_CORE_COORDINATE_FIELD.name = "core_coordinate"
-CLUE_CFG_CORE_COORDINATE_FIELD.full_name = ".ftcfg.clue_cfg.core_coordinate"
-CLUE_CFG_CORE_COORDINATE_FIELD.number = 9
-CLUE_CFG_CORE_COORDINATE_FIELD.index = 8
-CLUE_CFG_CORE_COORDINATE_FIELD.label = 3
-CLUE_CFG_CORE_COORDINATE_FIELD.has_default_value = false
-CLUE_CFG_CORE_COORDINATE_FIELD.default_value = {}
-CLUE_CFG_CORE_COORDINATE_FIELD.type = 5
-CLUE_CFG_CORE_COORDINATE_FIELD.cpp_type = 1
-
-CLUE_CFG_MAP_RANGE_FIELD.name = "map_range"
-CLUE_CFG_MAP_RANGE_FIELD.full_name = ".ftcfg.clue_cfg.map_range"
-CLUE_CFG_MAP_RANGE_FIELD.number = 10
-CLUE_CFG_MAP_RANGE_FIELD.index = 9
-CLUE_CFG_MAP_RANGE_FIELD.label = 2
-CLUE_CFG_MAP_RANGE_FIELD.has_default_value = false
-CLUE_CFG_MAP_RANGE_FIELD.default_value = 0
-CLUE_CFG_MAP_RANGE_FIELD.type = 5
-CLUE_CFG_MAP_RANGE_FIELD.cpp_type = 1
-
-CLUE_CFG.name = "clue_cfg"
-CLUE_CFG.full_name = ".ftcfg.clue_cfg"
-CLUE_CFG.nested_types = {}
-CLUE_CFG.enum_types = {}
-CLUE_CFG.fields = {CLUE_CFG_CLUE_ID_FIELD, CLUE_CFG_MAP_ID_FIELD, CLUE_CFG_SCENE_ID_FIELD, CLUE_CFG_POS_FIELD, CLUE_CFG_DESC_FIELD, CLUE_CFG_BOXES_POS_X_FIELD, CLUE_CFG_BOXES_POS_Z_FIELD, CLUE_CFG_COST_ID_FIELD, CLUE_CFG_CORE_COORDINATE_FIELD, CLUE_CFG_MAP_RANGE_FIELD}
-CLUE_CFG.is_extendable = false
-CLUE_CFG.extensions = {}
-CLUE_CFGS_ITEMS_FIELD.name = "items"
-CLUE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.clue_cfgs.items"
-CLUE_CFGS_ITEMS_FIELD.number = 1
-CLUE_CFGS_ITEMS_FIELD.index = 0
-CLUE_CFGS_ITEMS_FIELD.label = 3
-CLUE_CFGS_ITEMS_FIELD.has_default_value = false
-CLUE_CFGS_ITEMS_FIELD.default_value = {}
-CLUE_CFGS_ITEMS_FIELD.message_type = CLUE_CFG
-CLUE_CFGS_ITEMS_FIELD.type = 11
-CLUE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-CLUE_CFGS.name = "clue_cfgs"
-CLUE_CFGS.full_name = ".ftcfg.clue_cfgs"
-CLUE_CFGS.nested_types = {}
-CLUE_CFGS.enum_types = {}
-CLUE_CFGS.fields = {CLUE_CFGS_ITEMS_FIELD}
-CLUE_CFGS.is_extendable = false
-CLUE_CFGS.extensions = {}
-BOXS_CFG_BOXES_ID_FIELD.name = "boxes_id"
-BOXS_CFG_BOXES_ID_FIELD.full_name = ".ftcfg.boxs_cfg.boxes_id"
-BOXS_CFG_BOXES_ID_FIELD.number = 1
-BOXS_CFG_BOXES_ID_FIELD.index = 0
-BOXS_CFG_BOXES_ID_FIELD.label = 2
-BOXS_CFG_BOXES_ID_FIELD.has_default_value = false
-BOXS_CFG_BOXES_ID_FIELD.default_value = 0
-BOXS_CFG_BOXES_ID_FIELD.type = 5
-BOXS_CFG_BOXES_ID_FIELD.cpp_type = 1
-
-BOXS_CFG_BOX_ID_FIELD.name = "box_id"
-BOXS_CFG_BOX_ID_FIELD.full_name = ".ftcfg.boxs_cfg.box_id"
-BOXS_CFG_BOX_ID_FIELD.number = 2
-BOXS_CFG_BOX_ID_FIELD.index = 1
-BOXS_CFG_BOX_ID_FIELD.label = 3
-BOXS_CFG_BOX_ID_FIELD.has_default_value = false
-BOXS_CFG_BOX_ID_FIELD.default_value = {}
-BOXS_CFG_BOX_ID_FIELD.type = 5
-BOXS_CFG_BOX_ID_FIELD.cpp_type = 1
-
-BOXS_CFG_BOX_RATE_FIELD.name = "box_rate"
-BOXS_CFG_BOX_RATE_FIELD.full_name = ".ftcfg.boxs_cfg.box_rate"
-BOXS_CFG_BOX_RATE_FIELD.number = 3
-BOXS_CFG_BOX_RATE_FIELD.index = 2
-BOXS_CFG_BOX_RATE_FIELD.label = 3
-BOXS_CFG_BOX_RATE_FIELD.has_default_value = false
-BOXS_CFG_BOX_RATE_FIELD.default_value = {}
-BOXS_CFG_BOX_RATE_FIELD.type = 5
-BOXS_CFG_BOX_RATE_FIELD.cpp_type = 1
-
-BOXS_CFG.name = "boxs_cfg"
-BOXS_CFG.full_name = ".ftcfg.boxs_cfg"
-BOXS_CFG.nested_types = {}
-BOXS_CFG.enum_types = {}
-BOXS_CFG.fields = {BOXS_CFG_BOXES_ID_FIELD, BOXS_CFG_BOX_ID_FIELD, BOXS_CFG_BOX_RATE_FIELD}
-BOXS_CFG.is_extendable = false
-BOXS_CFG.extensions = {}
-BOXS_CFGS_ITEMS_FIELD.name = "items"
-BOXS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.boxs_cfgs.items"
-BOXS_CFGS_ITEMS_FIELD.number = 1
-BOXS_CFGS_ITEMS_FIELD.index = 0
-BOXS_CFGS_ITEMS_FIELD.label = 3
-BOXS_CFGS_ITEMS_FIELD.has_default_value = false
-BOXS_CFGS_ITEMS_FIELD.default_value = {}
-BOXS_CFGS_ITEMS_FIELD.message_type = BOXS_CFG
-BOXS_CFGS_ITEMS_FIELD.type = 11
-BOXS_CFGS_ITEMS_FIELD.cpp_type = 10
-
-BOXS_CFGS.name = "boxs_cfgs"
-BOXS_CFGS.full_name = ".ftcfg.boxs_cfgs"
-BOXS_CFGS.nested_types = {}
-BOXS_CFGS.enum_types = {}
-BOXS_CFGS.fields = {BOXS_CFGS_ITEMS_FIELD}
-BOXS_CFGS.is_extendable = false
-BOXS_CFGS.extensions = {}
-BOX_COLLECT_CFG_BOX_ID_FIELD.name = "box_id"
-BOX_COLLECT_CFG_BOX_ID_FIELD.full_name = ".ftcfg.box_collect_cfg.box_id"
-BOX_COLLECT_CFG_BOX_ID_FIELD.number = 1
-BOX_COLLECT_CFG_BOX_ID_FIELD.index = 0
-BOX_COLLECT_CFG_BOX_ID_FIELD.label = 2
-BOX_COLLECT_CFG_BOX_ID_FIELD.has_default_value = false
-BOX_COLLECT_CFG_BOX_ID_FIELD.default_value = 0
-BOX_COLLECT_CFG_BOX_ID_FIELD.type = 5
-BOX_COLLECT_CFG_BOX_ID_FIELD.cpp_type = 1
-
-BOX_COLLECT_CFG_BOX_RES_FIELD.name = "box_res"
-BOX_COLLECT_CFG_BOX_RES_FIELD.full_name = ".ftcfg.box_collect_cfg.box_res"
-BOX_COLLECT_CFG_BOX_RES_FIELD.number = 2
-BOX_COLLECT_CFG_BOX_RES_FIELD.index = 1
-BOX_COLLECT_CFG_BOX_RES_FIELD.label = 2
-BOX_COLLECT_CFG_BOX_RES_FIELD.has_default_value = false
-BOX_COLLECT_CFG_BOX_RES_FIELD.default_value = 0
-BOX_COLLECT_CFG_BOX_RES_FIELD.type = 5
-BOX_COLLECT_CFG_BOX_RES_FIELD.cpp_type = 1
-
-BOX_COLLECT_CFG_ITEM_TYPE_FIELD.name = "item_type"
-BOX_COLLECT_CFG_ITEM_TYPE_FIELD.full_name = ".ftcfg.box_collect_cfg.item_type"
-BOX_COLLECT_CFG_ITEM_TYPE_FIELD.number = 3
-BOX_COLLECT_CFG_ITEM_TYPE_FIELD.index = 2
-BOX_COLLECT_CFG_ITEM_TYPE_FIELD.label = 3
-BOX_COLLECT_CFG_ITEM_TYPE_FIELD.has_default_value = false
-BOX_COLLECT_CFG_ITEM_TYPE_FIELD.default_value = {}
-BOX_COLLECT_CFG_ITEM_TYPE_FIELD.type = 5
-BOX_COLLECT_CFG_ITEM_TYPE_FIELD.cpp_type = 1
-
-BOX_COLLECT_CFG_ITEM_ID_FIELD.name = "item_id"
-BOX_COLLECT_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.box_collect_cfg.item_id"
-BOX_COLLECT_CFG_ITEM_ID_FIELD.number = 4
-BOX_COLLECT_CFG_ITEM_ID_FIELD.index = 3
-BOX_COLLECT_CFG_ITEM_ID_FIELD.label = 3
-BOX_COLLECT_CFG_ITEM_ID_FIELD.has_default_value = false
-BOX_COLLECT_CFG_ITEM_ID_FIELD.default_value = {}
-BOX_COLLECT_CFG_ITEM_ID_FIELD.type = 5
-BOX_COLLECT_CFG_ITEM_ID_FIELD.cpp_type = 1
-
-BOX_COLLECT_CFG_ITEM_RATE_FIELD.name = "item_rate"
-BOX_COLLECT_CFG_ITEM_RATE_FIELD.full_name = ".ftcfg.box_collect_cfg.item_rate"
-BOX_COLLECT_CFG_ITEM_RATE_FIELD.number = 5
-BOX_COLLECT_CFG_ITEM_RATE_FIELD.index = 4
-BOX_COLLECT_CFG_ITEM_RATE_FIELD.label = 3
-BOX_COLLECT_CFG_ITEM_RATE_FIELD.has_default_value = false
-BOX_COLLECT_CFG_ITEM_RATE_FIELD.default_value = {}
-BOX_COLLECT_CFG_ITEM_RATE_FIELD.type = 5
-BOX_COLLECT_CFG_ITEM_RATE_FIELD.cpp_type = 1
-
-BOX_COLLECT_CFG_SHOW_TYPE_FIELD.name = "show_type"
-BOX_COLLECT_CFG_SHOW_TYPE_FIELD.full_name = ".ftcfg.box_collect_cfg.show_type"
-BOX_COLLECT_CFG_SHOW_TYPE_FIELD.number = 6
-BOX_COLLECT_CFG_SHOW_TYPE_FIELD.index = 5
-BOX_COLLECT_CFG_SHOW_TYPE_FIELD.label = 2
-BOX_COLLECT_CFG_SHOW_TYPE_FIELD.has_default_value = false
-BOX_COLLECT_CFG_SHOW_TYPE_FIELD.default_value = 0
-BOX_COLLECT_CFG_SHOW_TYPE_FIELD.type = 5
-BOX_COLLECT_CFG_SHOW_TYPE_FIELD.cpp_type = 1
-
-BOX_COLLECT_CFG_MODEL_SCALE_FIELD.name = "model_scale"
-BOX_COLLECT_CFG_MODEL_SCALE_FIELD.full_name = ".ftcfg.box_collect_cfg.model_scale"
-BOX_COLLECT_CFG_MODEL_SCALE_FIELD.number = 7
-BOX_COLLECT_CFG_MODEL_SCALE_FIELD.index = 6
-BOX_COLLECT_CFG_MODEL_SCALE_FIELD.label = 2
-BOX_COLLECT_CFG_MODEL_SCALE_FIELD.has_default_value = false
-BOX_COLLECT_CFG_MODEL_SCALE_FIELD.default_value = 0
-BOX_COLLECT_CFG_MODEL_SCALE_FIELD.type = 5
-BOX_COLLECT_CFG_MODEL_SCALE_FIELD.cpp_type = 1
-
-BOX_COLLECT_CFG.name = "box_collect_cfg"
-BOX_COLLECT_CFG.full_name = ".ftcfg.box_collect_cfg"
-BOX_COLLECT_CFG.nested_types = {}
-BOX_COLLECT_CFG.enum_types = {}
-BOX_COLLECT_CFG.fields = {BOX_COLLECT_CFG_BOX_ID_FIELD, BOX_COLLECT_CFG_BOX_RES_FIELD, BOX_COLLECT_CFG_ITEM_TYPE_FIELD, BOX_COLLECT_CFG_ITEM_ID_FIELD, BOX_COLLECT_CFG_ITEM_RATE_FIELD, BOX_COLLECT_CFG_SHOW_TYPE_FIELD, BOX_COLLECT_CFG_MODEL_SCALE_FIELD}
-BOX_COLLECT_CFG.is_extendable = false
-BOX_COLLECT_CFG.extensions = {}
-BOX_COLLECT_CFGS_ITEMS_FIELD.name = "items"
-BOX_COLLECT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.box_collect_cfgs.items"
-BOX_COLLECT_CFGS_ITEMS_FIELD.number = 1
-BOX_COLLECT_CFGS_ITEMS_FIELD.index = 0
-BOX_COLLECT_CFGS_ITEMS_FIELD.label = 3
-BOX_COLLECT_CFGS_ITEMS_FIELD.has_default_value = false
-BOX_COLLECT_CFGS_ITEMS_FIELD.default_value = {}
-BOX_COLLECT_CFGS_ITEMS_FIELD.message_type = BOX_COLLECT_CFG
-BOX_COLLECT_CFGS_ITEMS_FIELD.type = 11
-BOX_COLLECT_CFGS_ITEMS_FIELD.cpp_type = 10
-
-BOX_COLLECT_CFGS.name = "box_collect_cfgs"
-BOX_COLLECT_CFGS.full_name = ".ftcfg.box_collect_cfgs"
-BOX_COLLECT_CFGS.nested_types = {}
-BOX_COLLECT_CFGS.enum_types = {}
-BOX_COLLECT_CFGS.fields = {BOX_COLLECT_CFGS_ITEMS_FIELD}
-BOX_COLLECT_CFGS.is_extendable = false
-BOX_COLLECT_CFGS.extensions = {}
-DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.name = "event_id"
-DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.event_id"
-DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.number = 1
-DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.index = 0
-DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.label = 2
-DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.has_default_value = false
-DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.default_value = 0
-DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.type = 5
-DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD.cpp_type = 1
-
-DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.name = "discribe"
-DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.discribe"
-DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.number = 2
-DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.index = 1
-DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.label = 2
-DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.has_default_value = false
-DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.default_value = ""
-DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.type = 9
-DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD.cpp_type = 9
-
-DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.name = "boxes_id"
-DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.boxes_id"
-DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.number = 3
-DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.index = 2
-DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.label = 3
-DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.has_default_value = false
-DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.default_value = {}
-DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.type = 5
-DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD.cpp_type = 1
-
-DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.name = "dungeon_x"
-DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.dungeon_x"
-DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.number = 4
-DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.index = 3
-DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.label = 3
-DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.has_default_value = false
-DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.default_value = {}
-DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.type = 2
-DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD.cpp_type = 6
-
-DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.name = "dungeon_z"
-DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.dungeon_z"
-DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.number = 5
-DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.index = 4
-DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.label = 3
-DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.has_default_value = false
-DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.default_value = {}
-DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.type = 2
-DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD.cpp_type = 6
-
-DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.name = "map_id"
-DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.map_id"
-DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.number = 6
-DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.index = 5
-DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.label = 3
-DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.has_default_value = false
-DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.default_value = {}
-DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.type = 5
-DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD.cpp_type = 1
-
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.name = "touchoff_task_id"
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.touchoff_task_id"
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.number = 7
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.index = 6
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.label = 3
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.has_default_value = false
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.default_value = {}
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.type = 5
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD.cpp_type = 1
-
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.name = "touchoff_rate"
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.touchoff_rate"
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.number = 8
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.index = 7
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.label = 3
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.has_default_value = false
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.default_value = {}
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.type = 5
-DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD.cpp_type = 1
-
-DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.name = "elite_monster"
-DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.elite_monster"
-DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.number = 9
-DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.index = 8
-DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.label = 3
-DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.has_default_value = false
-DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.default_value = {}
-DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.type = 5
-DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD.cpp_type = 1
-
-DIG_TREASURE_EVENT_CFG_BROAD_FIELD.name = "broad"
-DIG_TREASURE_EVENT_CFG_BROAD_FIELD.full_name = ".ftcfg.dig_treasure_event_cfg.broad"
-DIG_TREASURE_EVENT_CFG_BROAD_FIELD.number = 10
-DIG_TREASURE_EVENT_CFG_BROAD_FIELD.index = 9
-DIG_TREASURE_EVENT_CFG_BROAD_FIELD.label = 2
-DIG_TREASURE_EVENT_CFG_BROAD_FIELD.has_default_value = false
-DIG_TREASURE_EVENT_CFG_BROAD_FIELD.default_value = ""
-DIG_TREASURE_EVENT_CFG_BROAD_FIELD.type = 9
-DIG_TREASURE_EVENT_CFG_BROAD_FIELD.cpp_type = 9
-
-DIG_TREASURE_EVENT_CFG.name = "dig_treasure_event_cfg"
-DIG_TREASURE_EVENT_CFG.full_name = ".ftcfg.dig_treasure_event_cfg"
-DIG_TREASURE_EVENT_CFG.nested_types = {}
-DIG_TREASURE_EVENT_CFG.enum_types = {}
-DIG_TREASURE_EVENT_CFG.fields = {DIG_TREASURE_EVENT_CFG_EVENT_ID_FIELD, DIG_TREASURE_EVENT_CFG_DISCRIBE_FIELD, DIG_TREASURE_EVENT_CFG_BOXES_ID_FIELD, DIG_TREASURE_EVENT_CFG_DUNGEON_X_FIELD, DIG_TREASURE_EVENT_CFG_DUNGEON_Z_FIELD, DIG_TREASURE_EVENT_CFG_MAP_ID_FIELD, DIG_TREASURE_EVENT_CFG_TOUCHOFF_TASK_ID_FIELD, DIG_TREASURE_EVENT_CFG_TOUCHOFF_RATE_FIELD, DIG_TREASURE_EVENT_CFG_ELITE_MONSTER_FIELD, DIG_TREASURE_EVENT_CFG_BROAD_FIELD}
-DIG_TREASURE_EVENT_CFG.is_extendable = false
-DIG_TREASURE_EVENT_CFG.extensions = {}
-DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.name = "items"
-DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.dig_treasure_event_cfgs.items"
-DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.number = 1
-DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.index = 0
-DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.label = 3
-DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.has_default_value = false
-DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.default_value = {}
-DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.message_type = DIG_TREASURE_EVENT_CFG
-DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.type = 11
-DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD.cpp_type = 10
-
-DIG_TREASURE_EVENT_CFGS.name = "dig_treasure_event_cfgs"
-DIG_TREASURE_EVENT_CFGS.full_name = ".ftcfg.dig_treasure_event_cfgs"
-DIG_TREASURE_EVENT_CFGS.nested_types = {}
-DIG_TREASURE_EVENT_CFGS.enum_types = {}
-DIG_TREASURE_EVENT_CFGS.fields = {DIG_TREASURE_EVENT_CFGS_ITEMS_FIELD}
-DIG_TREASURE_EVENT_CFGS.is_extendable = false
-DIG_TREASURE_EVENT_CFGS.extensions = {}
-DROP_POINT_CFG_ID_FIELD.name = "id"
-DROP_POINT_CFG_ID_FIELD.full_name = ".ftcfg.drop_point_cfg.id"
-DROP_POINT_CFG_ID_FIELD.number = 1
-DROP_POINT_CFG_ID_FIELD.index = 0
-DROP_POINT_CFG_ID_FIELD.label = 2
-DROP_POINT_CFG_ID_FIELD.has_default_value = false
-DROP_POINT_CFG_ID_FIELD.default_value = 0
-DROP_POINT_CFG_ID_FIELD.type = 5
-DROP_POINT_CFG_ID_FIELD.cpp_type = 1
-
-DROP_POINT_CFG_MODULE_FIELD.name = "module"
-DROP_POINT_CFG_MODULE_FIELD.full_name = ".ftcfg.drop_point_cfg.module"
-DROP_POINT_CFG_MODULE_FIELD.number = 2
-DROP_POINT_CFG_MODULE_FIELD.index = 1
-DROP_POINT_CFG_MODULE_FIELD.label = 2
-DROP_POINT_CFG_MODULE_FIELD.has_default_value = false
-DROP_POINT_CFG_MODULE_FIELD.default_value = 0
-DROP_POINT_CFG_MODULE_FIELD.type = 5
-DROP_POINT_CFG_MODULE_FIELD.cpp_type = 1
-
-DROP_POINT_CFG_MINDISTANCE_FIELD.name = "minDistance"
-DROP_POINT_CFG_MINDISTANCE_FIELD.full_name = ".ftcfg.drop_point_cfg.minDistance"
-DROP_POINT_CFG_MINDISTANCE_FIELD.number = 3
-DROP_POINT_CFG_MINDISTANCE_FIELD.index = 2
-DROP_POINT_CFG_MINDISTANCE_FIELD.label = 2
-DROP_POINT_CFG_MINDISTANCE_FIELD.has_default_value = false
-DROP_POINT_CFG_MINDISTANCE_FIELD.default_value = 0.0
-DROP_POINT_CFG_MINDISTANCE_FIELD.type = 2
-DROP_POINT_CFG_MINDISTANCE_FIELD.cpp_type = 6
-
-DROP_POINT_CFG_PICKTYPE_FIELD.name = "pickType"
-DROP_POINT_CFG_PICKTYPE_FIELD.full_name = ".ftcfg.drop_point_cfg.pickType"
-DROP_POINT_CFG_PICKTYPE_FIELD.number = 4
-DROP_POINT_CFG_PICKTYPE_FIELD.index = 3
-DROP_POINT_CFG_PICKTYPE_FIELD.label = 2
-DROP_POINT_CFG_PICKTYPE_FIELD.has_default_value = false
-DROP_POINT_CFG_PICKTYPE_FIELD.default_value = 0
-DROP_POINT_CFG_PICKTYPE_FIELD.type = 5
-DROP_POINT_CFG_PICKTYPE_FIELD.cpp_type = 1
-
-DROP_POINT_CFG_BSHOW_FIELD.name = "bShow"
-DROP_POINT_CFG_BSHOW_FIELD.full_name = ".ftcfg.drop_point_cfg.bShow"
-DROP_POINT_CFG_BSHOW_FIELD.number = 5
-DROP_POINT_CFG_BSHOW_FIELD.index = 4
-DROP_POINT_CFG_BSHOW_FIELD.label = 2
-DROP_POINT_CFG_BSHOW_FIELD.has_default_value = false
-DROP_POINT_CFG_BSHOW_FIELD.default_value = 0
-DROP_POINT_CFG_BSHOW_FIELD.type = 5
-DROP_POINT_CFG_BSHOW_FIELD.cpp_type = 1
-
-DROP_POINT_CFG_TEXTID_FIELD.name = "textId"
-DROP_POINT_CFG_TEXTID_FIELD.full_name = ".ftcfg.drop_point_cfg.textId"
-DROP_POINT_CFG_TEXTID_FIELD.number = 6
-DROP_POINT_CFG_TEXTID_FIELD.index = 5
-DROP_POINT_CFG_TEXTID_FIELD.label = 2
-DROP_POINT_CFG_TEXTID_FIELD.has_default_value = false
-DROP_POINT_CFG_TEXTID_FIELD.default_value = 0
-DROP_POINT_CFG_TEXTID_FIELD.type = 5
-DROP_POINT_CFG_TEXTID_FIELD.cpp_type = 1
-
-DROP_POINT_CFG.name = "drop_point_cfg"
-DROP_POINT_CFG.full_name = ".ftcfg.drop_point_cfg"
-DROP_POINT_CFG.nested_types = {}
-DROP_POINT_CFG.enum_types = {}
-DROP_POINT_CFG.fields = {DROP_POINT_CFG_ID_FIELD, DROP_POINT_CFG_MODULE_FIELD, DROP_POINT_CFG_MINDISTANCE_FIELD, DROP_POINT_CFG_PICKTYPE_FIELD, DROP_POINT_CFG_BSHOW_FIELD, DROP_POINT_CFG_TEXTID_FIELD}
-DROP_POINT_CFG.is_extendable = false
-DROP_POINT_CFG.extensions = {}
-DROP_POINT_CFGS_ITEMS_FIELD.name = "items"
-DROP_POINT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.drop_point_cfgs.items"
-DROP_POINT_CFGS_ITEMS_FIELD.number = 1
-DROP_POINT_CFGS_ITEMS_FIELD.index = 0
-DROP_POINT_CFGS_ITEMS_FIELD.label = 3
-DROP_POINT_CFGS_ITEMS_FIELD.has_default_value = false
-DROP_POINT_CFGS_ITEMS_FIELD.default_value = {}
-DROP_POINT_CFGS_ITEMS_FIELD.message_type = DROP_POINT_CFG
-DROP_POINT_CFGS_ITEMS_FIELD.type = 11
-DROP_POINT_CFGS_ITEMS_FIELD.cpp_type = 10
-
-DROP_POINT_CFGS.name = "drop_point_cfgs"
-DROP_POINT_CFGS.full_name = ".ftcfg.drop_point_cfgs"
-DROP_POINT_CFGS.nested_types = {}
-DROP_POINT_CFGS.enum_types = {}
-DROP_POINT_CFGS.fields = {DROP_POINT_CFGS_ITEMS_FIELD}
-DROP_POINT_CFGS.is_extendable = false
-DROP_POINT_CFGS.extensions = {}
-RANK_FUNCTION_CFG_ID_FIELD.name = "id"
-RANK_FUNCTION_CFG_ID_FIELD.full_name = ".ftcfg.rank_function_cfg.id"
-RANK_FUNCTION_CFG_ID_FIELD.number = 1
-RANK_FUNCTION_CFG_ID_FIELD.index = 0
-RANK_FUNCTION_CFG_ID_FIELD.label = 2
-RANK_FUNCTION_CFG_ID_FIELD.has_default_value = false
-RANK_FUNCTION_CFG_ID_FIELD.default_value = 0
-RANK_FUNCTION_CFG_ID_FIELD.type = 5
-RANK_FUNCTION_CFG_ID_FIELD.cpp_type = 1
-
-RANK_FUNCTION_CFG_NAME_FIELD.name = "name"
-RANK_FUNCTION_CFG_NAME_FIELD.full_name = ".ftcfg.rank_function_cfg.name"
-RANK_FUNCTION_CFG_NAME_FIELD.number = 2
-RANK_FUNCTION_CFG_NAME_FIELD.index = 1
-RANK_FUNCTION_CFG_NAME_FIELD.label = 2
-RANK_FUNCTION_CFG_NAME_FIELD.has_default_value = false
-RANK_FUNCTION_CFG_NAME_FIELD.default_value = 0
-RANK_FUNCTION_CFG_NAME_FIELD.type = 5
-RANK_FUNCTION_CFG_NAME_FIELD.cpp_type = 1
-
-RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.name = "select_show"
-RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.full_name = ".ftcfg.rank_function_cfg.select_show"
-RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.number = 3
-RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.index = 2
-RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.label = 2
-RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.has_default_value = false
-RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.default_value = 0
-RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.type = 5
-RANK_FUNCTION_CFG_SELECT_SHOW_FIELD.cpp_type = 1
-
-RANK_FUNCTION_CFG_TYPE_FIELD.name = "type"
-RANK_FUNCTION_CFG_TYPE_FIELD.full_name = ".ftcfg.rank_function_cfg.type"
-RANK_FUNCTION_CFG_TYPE_FIELD.number = 4
-RANK_FUNCTION_CFG_TYPE_FIELD.index = 3
-RANK_FUNCTION_CFG_TYPE_FIELD.label = 2
-RANK_FUNCTION_CFG_TYPE_FIELD.has_default_value = false
-RANK_FUNCTION_CFG_TYPE_FIELD.default_value = 0
-RANK_FUNCTION_CFG_TYPE_FIELD.type = 5
-RANK_FUNCTION_CFG_TYPE_FIELD.cpp_type = 1
-
-RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.name = "child_names"
-RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.full_name = ".ftcfg.rank_function_cfg.child_names"
-RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.number = 5
-RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.index = 4
-RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.label = 3
-RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.has_default_value = false
-RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.default_value = {}
-RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.type = 5
-RANK_FUNCTION_CFG_CHILD_NAMES_FIELD.cpp_type = 1
-
-RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.name = "child_types"
-RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.full_name = ".ftcfg.rank_function_cfg.child_types"
-RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.number = 6
-RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.index = 5
-RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.label = 3
-RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.has_default_value = false
-RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.default_value = {}
-RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.type = 5
-RANK_FUNCTION_CFG_CHILD_TYPES_FIELD.cpp_type = 1
-
-RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.name = "child_values"
-RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.full_name = ".ftcfg.rank_function_cfg.child_values"
-RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.number = 7
-RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.index = 6
-RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.label = 3
-RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.has_default_value = false
-RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.default_value = {}
-RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.type = 2
-RANK_FUNCTION_CFG_CHILD_VALUES_FIELD.cpp_type = 6
-
-RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.name = "show_fields"
-RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.full_name = ".ftcfg.rank_function_cfg.show_fields"
-RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.number = 8
-RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.index = 7
-RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.label = 3
-RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.has_default_value = false
-RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.default_value = {}
-RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.type = 5
-RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD.cpp_type = 1
-
-RANK_FUNCTION_CFG_HOST_FIELD_FIELD.name = "host_field"
-RANK_FUNCTION_CFG_HOST_FIELD_FIELD.full_name = ".ftcfg.rank_function_cfg.host_field"
-RANK_FUNCTION_CFG_HOST_FIELD_FIELD.number = 9
-RANK_FUNCTION_CFG_HOST_FIELD_FIELD.index = 8
-RANK_FUNCTION_CFG_HOST_FIELD_FIELD.label = 2
-RANK_FUNCTION_CFG_HOST_FIELD_FIELD.has_default_value = false
-RANK_FUNCTION_CFG_HOST_FIELD_FIELD.default_value = ""
-RANK_FUNCTION_CFG_HOST_FIELD_FIELD.type = 9
-RANK_FUNCTION_CFG_HOST_FIELD_FIELD.cpp_type = 9
-
-RANK_FUNCTION_CFG.name = "rank_function_cfg"
-RANK_FUNCTION_CFG.full_name = ".ftcfg.rank_function_cfg"
-RANK_FUNCTION_CFG.nested_types = {}
-RANK_FUNCTION_CFG.enum_types = {}
-RANK_FUNCTION_CFG.fields = {RANK_FUNCTION_CFG_ID_FIELD, RANK_FUNCTION_CFG_NAME_FIELD, RANK_FUNCTION_CFG_SELECT_SHOW_FIELD, RANK_FUNCTION_CFG_TYPE_FIELD, RANK_FUNCTION_CFG_CHILD_NAMES_FIELD, RANK_FUNCTION_CFG_CHILD_TYPES_FIELD, RANK_FUNCTION_CFG_CHILD_VALUES_FIELD, RANK_FUNCTION_CFG_SHOW_FIELDS_FIELD, RANK_FUNCTION_CFG_HOST_FIELD_FIELD}
-RANK_FUNCTION_CFG.is_extendable = false
-RANK_FUNCTION_CFG.extensions = {}
-RANK_FUNCTION_CFGS_ITEMS_FIELD.name = "items"
-RANK_FUNCTION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rank_function_cfgs.items"
-RANK_FUNCTION_CFGS_ITEMS_FIELD.number = 1
-RANK_FUNCTION_CFGS_ITEMS_FIELD.index = 0
-RANK_FUNCTION_CFGS_ITEMS_FIELD.label = 3
-RANK_FUNCTION_CFGS_ITEMS_FIELD.has_default_value = false
-RANK_FUNCTION_CFGS_ITEMS_FIELD.default_value = {}
-RANK_FUNCTION_CFGS_ITEMS_FIELD.message_type = RANK_FUNCTION_CFG
-RANK_FUNCTION_CFGS_ITEMS_FIELD.type = 11
-RANK_FUNCTION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-RANK_FUNCTION_CFGS.name = "rank_function_cfgs"
-RANK_FUNCTION_CFGS.full_name = ".ftcfg.rank_function_cfgs"
-RANK_FUNCTION_CFGS.nested_types = {}
-RANK_FUNCTION_CFGS.enum_types = {}
-RANK_FUNCTION_CFGS.fields = {RANK_FUNCTION_CFGS_ITEMS_FIELD}
-RANK_FUNCTION_CFGS.is_extendable = false
-RANK_FUNCTION_CFGS.extensions = {}
-RANK_FIELD_CFG_ID_FIELD.name = "id"
-RANK_FIELD_CFG_ID_FIELD.full_name = ".ftcfg.rank_field_cfg.id"
-RANK_FIELD_CFG_ID_FIELD.number = 1
-RANK_FIELD_CFG_ID_FIELD.index = 0
-RANK_FIELD_CFG_ID_FIELD.label = 2
-RANK_FIELD_CFG_ID_FIELD.has_default_value = false
-RANK_FIELD_CFG_ID_FIELD.default_value = 0
-RANK_FIELD_CFG_ID_FIELD.type = 5
-RANK_FIELD_CFG_ID_FIELD.cpp_type = 1
-
-RANK_FIELD_CFG_NAME_FIELD.name = "name"
-RANK_FIELD_CFG_NAME_FIELD.full_name = ".ftcfg.rank_field_cfg.name"
-RANK_FIELD_CFG_NAME_FIELD.number = 2
-RANK_FIELD_CFG_NAME_FIELD.index = 1
-RANK_FIELD_CFG_NAME_FIELD.label = 2
-RANK_FIELD_CFG_NAME_FIELD.has_default_value = false
-RANK_FIELD_CFG_NAME_FIELD.default_value = 0
-RANK_FIELD_CFG_NAME_FIELD.type = 5
-RANK_FIELD_CFG_NAME_FIELD.cpp_type = 1
-
-RANK_FIELD_CFG_FIELD_NAME_FIELD.name = "field_name"
-RANK_FIELD_CFG_FIELD_NAME_FIELD.full_name = ".ftcfg.rank_field_cfg.field_name"
-RANK_FIELD_CFG_FIELD_NAME_FIELD.number = 3
-RANK_FIELD_CFG_FIELD_NAME_FIELD.index = 2
-RANK_FIELD_CFG_FIELD_NAME_FIELD.label = 2
-RANK_FIELD_CFG_FIELD_NAME_FIELD.has_default_value = false
-RANK_FIELD_CFG_FIELD_NAME_FIELD.default_value = ""
-RANK_FIELD_CFG_FIELD_NAME_FIELD.type = 9
-RANK_FIELD_CFG_FIELD_NAME_FIELD.cpp_type = 9
-
-RANK_FIELD_CFG_CHILD_NAMES_FIELD.name = "child_names"
-RANK_FIELD_CFG_CHILD_NAMES_FIELD.full_name = ".ftcfg.rank_field_cfg.child_names"
-RANK_FIELD_CFG_CHILD_NAMES_FIELD.number = 4
-RANK_FIELD_CFG_CHILD_NAMES_FIELD.index = 3
-RANK_FIELD_CFG_CHILD_NAMES_FIELD.label = 3
-RANK_FIELD_CFG_CHILD_NAMES_FIELD.has_default_value = false
-RANK_FIELD_CFG_CHILD_NAMES_FIELD.default_value = {}
-RANK_FIELD_CFG_CHILD_NAMES_FIELD.type = 5
-RANK_FIELD_CFG_CHILD_NAMES_FIELD.cpp_type = 1
-
-RANK_FIELD_CFG_CHILD_TYPES_FIELD.name = "child_types"
-RANK_FIELD_CFG_CHILD_TYPES_FIELD.full_name = ".ftcfg.rank_field_cfg.child_types"
-RANK_FIELD_CFG_CHILD_TYPES_FIELD.number = 5
-RANK_FIELD_CFG_CHILD_TYPES_FIELD.index = 4
-RANK_FIELD_CFG_CHILD_TYPES_FIELD.label = 3
-RANK_FIELD_CFG_CHILD_TYPES_FIELD.has_default_value = false
-RANK_FIELD_CFG_CHILD_TYPES_FIELD.default_value = {}
-RANK_FIELD_CFG_CHILD_TYPES_FIELD.type = 5
-RANK_FIELD_CFG_CHILD_TYPES_FIELD.cpp_type = 1
-
-RANK_FIELD_CFG_CHILD_VALUES_FIELD.name = "child_values"
-RANK_FIELD_CFG_CHILD_VALUES_FIELD.full_name = ".ftcfg.rank_field_cfg.child_values"
-RANK_FIELD_CFG_CHILD_VALUES_FIELD.number = 6
-RANK_FIELD_CFG_CHILD_VALUES_FIELD.index = 5
-RANK_FIELD_CFG_CHILD_VALUES_FIELD.label = 3
-RANK_FIELD_CFG_CHILD_VALUES_FIELD.has_default_value = false
-RANK_FIELD_CFG_CHILD_VALUES_FIELD.default_value = {}
-RANK_FIELD_CFG_CHILD_VALUES_FIELD.type = 2
-RANK_FIELD_CFG_CHILD_VALUES_FIELD.cpp_type = 6
-
-RANK_FIELD_CFG_HOST_FIELD_FIELD.name = "host_field"
-RANK_FIELD_CFG_HOST_FIELD_FIELD.full_name = ".ftcfg.rank_field_cfg.host_field"
-RANK_FIELD_CFG_HOST_FIELD_FIELD.number = 7
-RANK_FIELD_CFG_HOST_FIELD_FIELD.index = 6
-RANK_FIELD_CFG_HOST_FIELD_FIELD.label = 2
-RANK_FIELD_CFG_HOST_FIELD_FIELD.has_default_value = false
-RANK_FIELD_CFG_HOST_FIELD_FIELD.default_value = ""
-RANK_FIELD_CFG_HOST_FIELD_FIELD.type = 9
-RANK_FIELD_CFG_HOST_FIELD_FIELD.cpp_type = 9
-
-RANK_FIELD_CFG.name = "rank_field_cfg"
-RANK_FIELD_CFG.full_name = ".ftcfg.rank_field_cfg"
-RANK_FIELD_CFG.nested_types = {}
-RANK_FIELD_CFG.enum_types = {}
-RANK_FIELD_CFG.fields = {RANK_FIELD_CFG_ID_FIELD, RANK_FIELD_CFG_NAME_FIELD, RANK_FIELD_CFG_FIELD_NAME_FIELD, RANK_FIELD_CFG_CHILD_NAMES_FIELD, RANK_FIELD_CFG_CHILD_TYPES_FIELD, RANK_FIELD_CFG_CHILD_VALUES_FIELD, RANK_FIELD_CFG_HOST_FIELD_FIELD}
-RANK_FIELD_CFG.is_extendable = false
-RANK_FIELD_CFG.extensions = {}
-RANK_FIELD_CFGS_ITEMS_FIELD.name = "items"
-RANK_FIELD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rank_field_cfgs.items"
-RANK_FIELD_CFGS_ITEMS_FIELD.number = 1
-RANK_FIELD_CFGS_ITEMS_FIELD.index = 0
-RANK_FIELD_CFGS_ITEMS_FIELD.label = 3
-RANK_FIELD_CFGS_ITEMS_FIELD.has_default_value = false
-RANK_FIELD_CFGS_ITEMS_FIELD.default_value = {}
-RANK_FIELD_CFGS_ITEMS_FIELD.message_type = RANK_FIELD_CFG
-RANK_FIELD_CFGS_ITEMS_FIELD.type = 11
-RANK_FIELD_CFGS_ITEMS_FIELD.cpp_type = 10
-
-RANK_FIELD_CFGS.name = "rank_field_cfgs"
-RANK_FIELD_CFGS.full_name = ".ftcfg.rank_field_cfgs"
-RANK_FIELD_CFGS.nested_types = {}
-RANK_FIELD_CFGS.enum_types = {}
-RANK_FIELD_CFGS.fields = {RANK_FIELD_CFGS_ITEMS_FIELD}
-RANK_FIELD_CFGS.is_extendable = false
-RANK_FIELD_CFGS.extensions = {}
-EDN_CFG_LVL_FIELD.name = "lvl"
-EDN_CFG_LVL_FIELD.full_name = ".ftcfg.edn_cfg.lvl"
-EDN_CFG_LVL_FIELD.number = 1
-EDN_CFG_LVL_FIELD.index = 0
-EDN_CFG_LVL_FIELD.label = 2
-EDN_CFG_LVL_FIELD.has_default_value = false
-EDN_CFG_LVL_FIELD.default_value = 0
-EDN_CFG_LVL_FIELD.type = 5
-EDN_CFG_LVL_FIELD.cpp_type = 1
-
-EDN_CFG_LVLUP_EXP_FIELD.name = "lvlup_exp"
-EDN_CFG_LVLUP_EXP_FIELD.full_name = ".ftcfg.edn_cfg.lvlup_exp"
-EDN_CFG_LVLUP_EXP_FIELD.number = 2
-EDN_CFG_LVLUP_EXP_FIELD.index = 1
-EDN_CFG_LVLUP_EXP_FIELD.label = 2
-EDN_CFG_LVLUP_EXP_FIELD.has_default_value = false
-EDN_CFG_LVLUP_EXP_FIELD.default_value = 0
-EDN_CFG_LVLUP_EXP_FIELD.type = 5
-EDN_CFG_LVLUP_EXP_FIELD.cpp_type = 1
-
-EDN_CFG.name = "edn_cfg"
-EDN_CFG.full_name = ".ftcfg.edn_cfg"
-EDN_CFG.nested_types = {}
-EDN_CFG.enum_types = {}
-EDN_CFG.fields = {EDN_CFG_LVL_FIELD, EDN_CFG_LVLUP_EXP_FIELD}
-EDN_CFG.is_extendable = false
-EDN_CFG.extensions = {}
-EDN_CFGS_ITEMS_FIELD.name = "items"
-EDN_CFGS_ITEMS_FIELD.full_name = ".ftcfg.edn_cfgs.items"
-EDN_CFGS_ITEMS_FIELD.number = 1
-EDN_CFGS_ITEMS_FIELD.index = 0
-EDN_CFGS_ITEMS_FIELD.label = 3
-EDN_CFGS_ITEMS_FIELD.has_default_value = false
-EDN_CFGS_ITEMS_FIELD.default_value = {}
-EDN_CFGS_ITEMS_FIELD.message_type = EDN_CFG
-EDN_CFGS_ITEMS_FIELD.type = 11
-EDN_CFGS_ITEMS_FIELD.cpp_type = 10
-
-EDN_CFGS.name = "edn_cfgs"
-EDN_CFGS.full_name = ".ftcfg.edn_cfgs"
-EDN_CFGS.nested_types = {}
-EDN_CFGS.enum_types = {}
-EDN_CFGS.fields = {EDN_CFGS_ITEMS_FIELD}
-EDN_CFGS.is_extendable = false
-EDN_CFGS.extensions = {}
-EDN_SCENE_CFG_SCENE_ID_FIELD.name = "scene_id"
-EDN_SCENE_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.edn_scene_cfg.scene_id"
-EDN_SCENE_CFG_SCENE_ID_FIELD.number = 1
-EDN_SCENE_CFG_SCENE_ID_FIELD.index = 0
-EDN_SCENE_CFG_SCENE_ID_FIELD.label = 2
-EDN_SCENE_CFG_SCENE_ID_FIELD.has_default_value = false
-EDN_SCENE_CFG_SCENE_ID_FIELD.default_value = 0
-EDN_SCENE_CFG_SCENE_ID_FIELD.type = 5
-EDN_SCENE_CFG_SCENE_ID_FIELD.cpp_type = 1
-
-EDN_SCENE_CFG_OPEN_LVL_FIELD.name = "open_lvl"
-EDN_SCENE_CFG_OPEN_LVL_FIELD.full_name = ".ftcfg.edn_scene_cfg.open_lvl"
-EDN_SCENE_CFG_OPEN_LVL_FIELD.number = 2
-EDN_SCENE_CFG_OPEN_LVL_FIELD.index = 1
-EDN_SCENE_CFG_OPEN_LVL_FIELD.label = 2
-EDN_SCENE_CFG_OPEN_LVL_FIELD.has_default_value = false
-EDN_SCENE_CFG_OPEN_LVL_FIELD.default_value = 0
-EDN_SCENE_CFG_OPEN_LVL_FIELD.type = 5
-EDN_SCENE_CFG_OPEN_LVL_FIELD.cpp_type = 1
-
-EDN_SCENE_CFG_MAPNAME_ID_FIELD.name = "mapname_id"
-EDN_SCENE_CFG_MAPNAME_ID_FIELD.full_name = ".ftcfg.edn_scene_cfg.mapname_id"
-EDN_SCENE_CFG_MAPNAME_ID_FIELD.number = 3
-EDN_SCENE_CFG_MAPNAME_ID_FIELD.index = 2
-EDN_SCENE_CFG_MAPNAME_ID_FIELD.label = 2
-EDN_SCENE_CFG_MAPNAME_ID_FIELD.has_default_value = false
-EDN_SCENE_CFG_MAPNAME_ID_FIELD.default_value = 0
-EDN_SCENE_CFG_MAPNAME_ID_FIELD.type = 5
-EDN_SCENE_CFG_MAPNAME_ID_FIELD.cpp_type = 1
-
-EDN_SCENE_CFG_MAP_NAME_FIELD.name = "map_name"
-EDN_SCENE_CFG_MAP_NAME_FIELD.full_name = ".ftcfg.edn_scene_cfg.map_name"
-EDN_SCENE_CFG_MAP_NAME_FIELD.number = 4
-EDN_SCENE_CFG_MAP_NAME_FIELD.index = 3
-EDN_SCENE_CFG_MAP_NAME_FIELD.label = 2
-EDN_SCENE_CFG_MAP_NAME_FIELD.has_default_value = false
-EDN_SCENE_CFG_MAP_NAME_FIELD.default_value = ""
-EDN_SCENE_CFG_MAP_NAME_FIELD.type = 9
-EDN_SCENE_CFG_MAP_NAME_FIELD.cpp_type = 9
-
-EDN_SCENE_CFG_MAP_IMGID_FIELD.name = "map_imgid"
-EDN_SCENE_CFG_MAP_IMGID_FIELD.full_name = ".ftcfg.edn_scene_cfg.map_imgid"
-EDN_SCENE_CFG_MAP_IMGID_FIELD.number = 5
-EDN_SCENE_CFG_MAP_IMGID_FIELD.index = 4
-EDN_SCENE_CFG_MAP_IMGID_FIELD.label = 2
-EDN_SCENE_CFG_MAP_IMGID_FIELD.has_default_value = false
-EDN_SCENE_CFG_MAP_IMGID_FIELD.default_value = 0
-EDN_SCENE_CFG_MAP_IMGID_FIELD.type = 5
-EDN_SCENE_CFG_MAP_IMGID_FIELD.cpp_type = 1
-
-EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.name = "map_relicsids"
-EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.full_name = ".ftcfg.edn_scene_cfg.map_relicsids"
-EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.number = 6
-EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.index = 5
-EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.label = 3
-EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.has_default_value = false
-EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.default_value = {}
-EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.type = 5
-EDN_SCENE_CFG_MAP_RELICSIDS_FIELD.cpp_type = 1
-
-EDN_SCENE_CFG.name = "edn_scene_cfg"
-EDN_SCENE_CFG.full_name = ".ftcfg.edn_scene_cfg"
-EDN_SCENE_CFG.nested_types = {}
-EDN_SCENE_CFG.enum_types = {}
-EDN_SCENE_CFG.fields = {EDN_SCENE_CFG_SCENE_ID_FIELD, EDN_SCENE_CFG_OPEN_LVL_FIELD, EDN_SCENE_CFG_MAPNAME_ID_FIELD, EDN_SCENE_CFG_MAP_NAME_FIELD, EDN_SCENE_CFG_MAP_IMGID_FIELD, EDN_SCENE_CFG_MAP_RELICSIDS_FIELD}
-EDN_SCENE_CFG.is_extendable = false
-EDN_SCENE_CFG.extensions = {}
-EDN_SCENE_CFGS_ITEMS_FIELD.name = "items"
-EDN_SCENE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.edn_scene_cfgs.items"
-EDN_SCENE_CFGS_ITEMS_FIELD.number = 1
-EDN_SCENE_CFGS_ITEMS_FIELD.index = 0
-EDN_SCENE_CFGS_ITEMS_FIELD.label = 3
-EDN_SCENE_CFGS_ITEMS_FIELD.has_default_value = false
-EDN_SCENE_CFGS_ITEMS_FIELD.default_value = {}
-EDN_SCENE_CFGS_ITEMS_FIELD.message_type = EDN_SCENE_CFG
-EDN_SCENE_CFGS_ITEMS_FIELD.type = 11
-EDN_SCENE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-EDN_SCENE_CFGS.name = "edn_scene_cfgs"
-EDN_SCENE_CFGS.full_name = ".ftcfg.edn_scene_cfgs"
-EDN_SCENE_CFGS.nested_types = {}
-EDN_SCENE_CFGS.enum_types = {}
-EDN_SCENE_CFGS.fields = {EDN_SCENE_CFGS_ITEMS_FIELD}
-EDN_SCENE_CFGS.is_extendable = false
-EDN_SCENE_CFGS.extensions = {}
-EDN_RELIC_CFG_ID_FIELD.name = "id"
-EDN_RELIC_CFG_ID_FIELD.full_name = ".ftcfg.edn_relic_cfg.id"
-EDN_RELIC_CFG_ID_FIELD.number = 1
-EDN_RELIC_CFG_ID_FIELD.index = 0
-EDN_RELIC_CFG_ID_FIELD.label = 2
-EDN_RELIC_CFG_ID_FIELD.has_default_value = false
-EDN_RELIC_CFG_ID_FIELD.default_value = 0
-EDN_RELIC_CFG_ID_FIELD.type = 5
-EDN_RELIC_CFG_ID_FIELD.cpp_type = 1
-
-EDN_RELIC_CFG_NAME_ID_FIELD.name = "name_id"
-EDN_RELIC_CFG_NAME_ID_FIELD.full_name = ".ftcfg.edn_relic_cfg.name_id"
-EDN_RELIC_CFG_NAME_ID_FIELD.number = 2
-EDN_RELIC_CFG_NAME_ID_FIELD.index = 1
-EDN_RELIC_CFG_NAME_ID_FIELD.label = 2
-EDN_RELIC_CFG_NAME_ID_FIELD.has_default_value = false
-EDN_RELIC_CFG_NAME_ID_FIELD.default_value = 0
-EDN_RELIC_CFG_NAME_ID_FIELD.type = 5
-EDN_RELIC_CFG_NAME_ID_FIELD.cpp_type = 1
-
-EDN_RELIC_CFG_NAME_STRING_FIELD.name = "name_string"
-EDN_RELIC_CFG_NAME_STRING_FIELD.full_name = ".ftcfg.edn_relic_cfg.name_string"
-EDN_RELIC_CFG_NAME_STRING_FIELD.number = 3
-EDN_RELIC_CFG_NAME_STRING_FIELD.index = 2
-EDN_RELIC_CFG_NAME_STRING_FIELD.label = 2
-EDN_RELIC_CFG_NAME_STRING_FIELD.has_default_value = false
-EDN_RELIC_CFG_NAME_STRING_FIELD.default_value = ""
-EDN_RELIC_CFG_NAME_STRING_FIELD.type = 9
-EDN_RELIC_CFG_NAME_STRING_FIELD.cpp_type = 9
-
-EDN_RELIC_CFG_IMAGE_ID_FIELD.name = "image_id"
-EDN_RELIC_CFG_IMAGE_ID_FIELD.full_name = ".ftcfg.edn_relic_cfg.image_id"
-EDN_RELIC_CFG_IMAGE_ID_FIELD.number = 4
-EDN_RELIC_CFG_IMAGE_ID_FIELD.index = 3
-EDN_RELIC_CFG_IMAGE_ID_FIELD.label = 2
-EDN_RELIC_CFG_IMAGE_ID_FIELD.has_default_value = false
-EDN_RELIC_CFG_IMAGE_ID_FIELD.default_value = 0
-EDN_RELIC_CFG_IMAGE_ID_FIELD.type = 5
-EDN_RELIC_CFG_IMAGE_ID_FIELD.cpp_type = 1
-
-EDN_RELIC_CFG_REWARDS_FIELD.name = "rewards"
-EDN_RELIC_CFG_REWARDS_FIELD.full_name = ".ftcfg.edn_relic_cfg.rewards"
-EDN_RELIC_CFG_REWARDS_FIELD.number = 5
-EDN_RELIC_CFG_REWARDS_FIELD.index = 4
-EDN_RELIC_CFG_REWARDS_FIELD.label = 2
-EDN_RELIC_CFG_REWARDS_FIELD.has_default_value = false
-EDN_RELIC_CFG_REWARDS_FIELD.default_value = 0
-EDN_RELIC_CFG_REWARDS_FIELD.type = 5
-EDN_RELIC_CFG_REWARDS_FIELD.cpp_type = 1
-
-EDN_RELIC_CFG_TIPS_ID_FIELD.name = "tips_id"
-EDN_RELIC_CFG_TIPS_ID_FIELD.full_name = ".ftcfg.edn_relic_cfg.tips_id"
-EDN_RELIC_CFG_TIPS_ID_FIELD.number = 6
-EDN_RELIC_CFG_TIPS_ID_FIELD.index = 5
-EDN_RELIC_CFG_TIPS_ID_FIELD.label = 2
-EDN_RELIC_CFG_TIPS_ID_FIELD.has_default_value = false
-EDN_RELIC_CFG_TIPS_ID_FIELD.default_value = 0
-EDN_RELIC_CFG_TIPS_ID_FIELD.type = 5
-EDN_RELIC_CFG_TIPS_ID_FIELD.cpp_type = 1
-
-EDN_RELIC_CFG.name = "edn_relic_cfg"
-EDN_RELIC_CFG.full_name = ".ftcfg.edn_relic_cfg"
-EDN_RELIC_CFG.nested_types = {}
-EDN_RELIC_CFG.enum_types = {}
-EDN_RELIC_CFG.fields = {EDN_RELIC_CFG_ID_FIELD, EDN_RELIC_CFG_NAME_ID_FIELD, EDN_RELIC_CFG_NAME_STRING_FIELD, EDN_RELIC_CFG_IMAGE_ID_FIELD, EDN_RELIC_CFG_REWARDS_FIELD, EDN_RELIC_CFG_TIPS_ID_FIELD}
-EDN_RELIC_CFG.is_extendable = false
-EDN_RELIC_CFG.extensions = {}
-EDN_RELIC_CFGS_ITEMS_FIELD.name = "items"
-EDN_RELIC_CFGS_ITEMS_FIELD.full_name = ".ftcfg.edn_relic_cfgs.items"
-EDN_RELIC_CFGS_ITEMS_FIELD.number = 1
-EDN_RELIC_CFGS_ITEMS_FIELD.index = 0
-EDN_RELIC_CFGS_ITEMS_FIELD.label = 3
-EDN_RELIC_CFGS_ITEMS_FIELD.has_default_value = false
-EDN_RELIC_CFGS_ITEMS_FIELD.default_value = {}
-EDN_RELIC_CFGS_ITEMS_FIELD.message_type = EDN_RELIC_CFG
-EDN_RELIC_CFGS_ITEMS_FIELD.type = 11
-EDN_RELIC_CFGS_ITEMS_FIELD.cpp_type = 10
-
-EDN_RELIC_CFGS.name = "edn_relic_cfgs"
-EDN_RELIC_CFGS.full_name = ".ftcfg.edn_relic_cfgs"
-EDN_RELIC_CFGS.nested_types = {}
-EDN_RELIC_CFGS.enum_types = {}
-EDN_RELIC_CFGS.fields = {EDN_RELIC_CFGS_ITEMS_FIELD}
-EDN_RELIC_CFGS.is_extendable = false
-EDN_RELIC_CFGS.extensions = {}
-TOWER_BASE_CFG_ID_FIELD.name = "id"
-TOWER_BASE_CFG_ID_FIELD.full_name = ".ftcfg.tower_base_cfg.id"
-TOWER_BASE_CFG_ID_FIELD.number = 1
-TOWER_BASE_CFG_ID_FIELD.index = 0
-TOWER_BASE_CFG_ID_FIELD.label = 2
-TOWER_BASE_CFG_ID_FIELD.has_default_value = false
-TOWER_BASE_CFG_ID_FIELD.default_value = 0
-TOWER_BASE_CFG_ID_FIELD.type = 5
-TOWER_BASE_CFG_ID_FIELD.cpp_type = 1
-
-TOWER_BASE_CFG_MAP_ID_FIELD.name = "map_id"
-TOWER_BASE_CFG_MAP_ID_FIELD.full_name = ".ftcfg.tower_base_cfg.map_id"
-TOWER_BASE_CFG_MAP_ID_FIELD.number = 2
-TOWER_BASE_CFG_MAP_ID_FIELD.index = 1
-TOWER_BASE_CFG_MAP_ID_FIELD.label = 3
-TOWER_BASE_CFG_MAP_ID_FIELD.has_default_value = false
-TOWER_BASE_CFG_MAP_ID_FIELD.default_value = {}
-TOWER_BASE_CFG_MAP_ID_FIELD.type = 5
-TOWER_BASE_CFG_MAP_ID_FIELD.cpp_type = 1
-
-TOWER_BASE_CFG_ITEM_ID_FIELD.name = "item_id"
-TOWER_BASE_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.tower_base_cfg.item_id"
-TOWER_BASE_CFG_ITEM_ID_FIELD.number = 3
-TOWER_BASE_CFG_ITEM_ID_FIELD.index = 2
-TOWER_BASE_CFG_ITEM_ID_FIELD.label = 2
-TOWER_BASE_CFG_ITEM_ID_FIELD.has_default_value = false
-TOWER_BASE_CFG_ITEM_ID_FIELD.default_value = 0
-TOWER_BASE_CFG_ITEM_ID_FIELD.type = 5
-TOWER_BASE_CFG_ITEM_ID_FIELD.cpp_type = 1
-
-TOWER_BASE_CFG_ITEM_COUNT_FIELD.name = "item_count"
-TOWER_BASE_CFG_ITEM_COUNT_FIELD.full_name = ".ftcfg.tower_base_cfg.item_count"
-TOWER_BASE_CFG_ITEM_COUNT_FIELD.number = 4
-TOWER_BASE_CFG_ITEM_COUNT_FIELD.index = 3
-TOWER_BASE_CFG_ITEM_COUNT_FIELD.label = 2
-TOWER_BASE_CFG_ITEM_COUNT_FIELD.has_default_value = false
-TOWER_BASE_CFG_ITEM_COUNT_FIELD.default_value = 0
-TOWER_BASE_CFG_ITEM_COUNT_FIELD.type = 5
-TOWER_BASE_CFG_ITEM_COUNT_FIELD.cpp_type = 1
-
-TOWER_BASE_CFG_RAID_ITEMID_FIELD.name = "raid_itemid"
-TOWER_BASE_CFG_RAID_ITEMID_FIELD.full_name = ".ftcfg.tower_base_cfg.raid_itemid"
-TOWER_BASE_CFG_RAID_ITEMID_FIELD.number = 5
-TOWER_BASE_CFG_RAID_ITEMID_FIELD.index = 4
-TOWER_BASE_CFG_RAID_ITEMID_FIELD.label = 2
-TOWER_BASE_CFG_RAID_ITEMID_FIELD.has_default_value = false
-TOWER_BASE_CFG_RAID_ITEMID_FIELD.default_value = 0
-TOWER_BASE_CFG_RAID_ITEMID_FIELD.type = 5
-TOWER_BASE_CFG_RAID_ITEMID_FIELD.cpp_type = 1
-
-TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.name = "raid_itemcount"
-TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.full_name = ".ftcfg.tower_base_cfg.raid_itemcount"
-TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.number = 6
-TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.index = 5
-TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.label = 2
-TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.has_default_value = false
-TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.default_value = 0
-TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.type = 5
-TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD.cpp_type = 1
-
-TOWER_BASE_CFG_MONEYTYPE_FIELD.name = "moneytype"
-TOWER_BASE_CFG_MONEYTYPE_FIELD.full_name = ".ftcfg.tower_base_cfg.moneytype"
-TOWER_BASE_CFG_MONEYTYPE_FIELD.number = 7
-TOWER_BASE_CFG_MONEYTYPE_FIELD.index = 6
-TOWER_BASE_CFG_MONEYTYPE_FIELD.label = 2
-TOWER_BASE_CFG_MONEYTYPE_FIELD.has_default_value = false
-TOWER_BASE_CFG_MONEYTYPE_FIELD.default_value = 0
-TOWER_BASE_CFG_MONEYTYPE_FIELD.type = 5
-TOWER_BASE_CFG_MONEYTYPE_FIELD.cpp_type = 1
-
-TOWER_BASE_CFG_MONEYCOUNT_FIELD.name = "moneycount"
-TOWER_BASE_CFG_MONEYCOUNT_FIELD.full_name = ".ftcfg.tower_base_cfg.moneycount"
-TOWER_BASE_CFG_MONEYCOUNT_FIELD.number = 8
-TOWER_BASE_CFG_MONEYCOUNT_FIELD.index = 7
-TOWER_BASE_CFG_MONEYCOUNT_FIELD.label = 2
-TOWER_BASE_CFG_MONEYCOUNT_FIELD.has_default_value = false
-TOWER_BASE_CFG_MONEYCOUNT_FIELD.default_value = 0
-TOWER_BASE_CFG_MONEYCOUNT_FIELD.type = 5
-TOWER_BASE_CFG_MONEYCOUNT_FIELD.cpp_type = 1
-
-TOWER_BASE_CFG_ITEMID_CROSS_FIELD.name = "itemid_cross"
-TOWER_BASE_CFG_ITEMID_CROSS_FIELD.full_name = ".ftcfg.tower_base_cfg.itemid_cross"
-TOWER_BASE_CFG_ITEMID_CROSS_FIELD.number = 9
-TOWER_BASE_CFG_ITEMID_CROSS_FIELD.index = 8
-TOWER_BASE_CFG_ITEMID_CROSS_FIELD.label = 2
-TOWER_BASE_CFG_ITEMID_CROSS_FIELD.has_default_value = false
-TOWER_BASE_CFG_ITEMID_CROSS_FIELD.default_value = 0
-TOWER_BASE_CFG_ITEMID_CROSS_FIELD.type = 5
-TOWER_BASE_CFG_ITEMID_CROSS_FIELD.cpp_type = 1
-
-TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.name = "itemcount_cross"
-TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.full_name = ".ftcfg.tower_base_cfg.itemcount_cross"
-TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.number = 10
-TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.index = 9
-TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.label = 2
-TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.has_default_value = false
-TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.default_value = 0
-TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.type = 5
-TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD.cpp_type = 1
-
-TOWER_BASE_CFG_EXP_CROSS_FIELD.name = "exp_cross"
-TOWER_BASE_CFG_EXP_CROSS_FIELD.full_name = ".ftcfg.tower_base_cfg.exp_cross"
-TOWER_BASE_CFG_EXP_CROSS_FIELD.number = 11
-TOWER_BASE_CFG_EXP_CROSS_FIELD.index = 10
-TOWER_BASE_CFG_EXP_CROSS_FIELD.label = 2
-TOWER_BASE_CFG_EXP_CROSS_FIELD.has_default_value = false
-TOWER_BASE_CFG_EXP_CROSS_FIELD.default_value = 0
-TOWER_BASE_CFG_EXP_CROSS_FIELD.type = 5
-TOWER_BASE_CFG_EXP_CROSS_FIELD.cpp_type = 1
-
-TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.name = "hangup_reward_exp"
-TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.full_name = ".ftcfg.tower_base_cfg.hangup_reward_exp"
-TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.number = 12
-TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.index = 11
-TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.label = 2
-TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.has_default_value = false
-TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.default_value = 0
-TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.type = 5
-TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD.cpp_type = 1
-
-TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.name = "hangup_reward_moneytype"
-TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.full_name = ".ftcfg.tower_base_cfg.hangup_reward_moneytype"
-TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.number = 13
-TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.index = 12
-TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.label = 2
-TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.has_default_value = false
-TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.default_value = 0
-TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.type = 5
-TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD.cpp_type = 1
-
-TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.name = "hangup_reward_money"
-TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.full_name = ".ftcfg.tower_base_cfg.hangup_reward_money"
-TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.number = 14
-TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.index = 13
-TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.label = 2
-TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.has_default_value = false
-TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.default_value = 0
-TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.type = 5
-TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD.cpp_type = 1
-
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.name = "delay_reward_item"
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.full_name = ".ftcfg.tower_base_cfg.delay_reward_item"
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.number = 15
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.index = 14
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.label = 2
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.has_default_value = false
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.default_value = 0
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.type = 5
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD.cpp_type = 1
-
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.name = "delay_reward_item_count"
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.full_name = ".ftcfg.tower_base_cfg.delay_reward_item_count"
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.number = 16
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.index = 15
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.label = 2
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.has_default_value = false
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.default_value = 0
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.type = 5
-TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD.cpp_type = 1
-
-TOWER_BASE_CFG_BIRTH_X_FIELD.name = "birth_x"
-TOWER_BASE_CFG_BIRTH_X_FIELD.full_name = ".ftcfg.tower_base_cfg.birth_x"
-TOWER_BASE_CFG_BIRTH_X_FIELD.number = 17
-TOWER_BASE_CFG_BIRTH_X_FIELD.index = 16
-TOWER_BASE_CFG_BIRTH_X_FIELD.label = 3
-TOWER_BASE_CFG_BIRTH_X_FIELD.has_default_value = false
-TOWER_BASE_CFG_BIRTH_X_FIELD.default_value = {}
-TOWER_BASE_CFG_BIRTH_X_FIELD.type = 2
-TOWER_BASE_CFG_BIRTH_X_FIELD.cpp_type = 6
-
-TOWER_BASE_CFG_BIRTH_Y_FIELD.name = "birth_y"
-TOWER_BASE_CFG_BIRTH_Y_FIELD.full_name = ".ftcfg.tower_base_cfg.birth_y"
-TOWER_BASE_CFG_BIRTH_Y_FIELD.number = 18
-TOWER_BASE_CFG_BIRTH_Y_FIELD.index = 17
-TOWER_BASE_CFG_BIRTH_Y_FIELD.label = 3
-TOWER_BASE_CFG_BIRTH_Y_FIELD.has_default_value = false
-TOWER_BASE_CFG_BIRTH_Y_FIELD.default_value = {}
-TOWER_BASE_CFG_BIRTH_Y_FIELD.type = 2
-TOWER_BASE_CFG_BIRTH_Y_FIELD.cpp_type = 6
-
-TOWER_BASE_CFG_BIRTH_Z_FIELD.name = "birth_z"
-TOWER_BASE_CFG_BIRTH_Z_FIELD.full_name = ".ftcfg.tower_base_cfg.birth_z"
-TOWER_BASE_CFG_BIRTH_Z_FIELD.number = 19
-TOWER_BASE_CFG_BIRTH_Z_FIELD.index = 18
-TOWER_BASE_CFG_BIRTH_Z_FIELD.label = 3
-TOWER_BASE_CFG_BIRTH_Z_FIELD.has_default_value = false
-TOWER_BASE_CFG_BIRTH_Z_FIELD.default_value = {}
-TOWER_BASE_CFG_BIRTH_Z_FIELD.type = 2
-TOWER_BASE_CFG_BIRTH_Z_FIELD.cpp_type = 6
-
-TOWER_BASE_CFG.name = "tower_base_cfg"
-TOWER_BASE_CFG.full_name = ".ftcfg.tower_base_cfg"
-TOWER_BASE_CFG.nested_types = {}
-TOWER_BASE_CFG.enum_types = {}
-TOWER_BASE_CFG.fields = {TOWER_BASE_CFG_ID_FIELD, TOWER_BASE_CFG_MAP_ID_FIELD, TOWER_BASE_CFG_ITEM_ID_FIELD, TOWER_BASE_CFG_ITEM_COUNT_FIELD, TOWER_BASE_CFG_RAID_ITEMID_FIELD, TOWER_BASE_CFG_RAID_ITEMCOUNT_FIELD, TOWER_BASE_CFG_MONEYTYPE_FIELD, TOWER_BASE_CFG_MONEYCOUNT_FIELD, TOWER_BASE_CFG_ITEMID_CROSS_FIELD, TOWER_BASE_CFG_ITEMCOUNT_CROSS_FIELD, TOWER_BASE_CFG_EXP_CROSS_FIELD, TOWER_BASE_CFG_HANGUP_REWARD_EXP_FIELD, TOWER_BASE_CFG_HANGUP_REWARD_MONEYTYPE_FIELD, TOWER_BASE_CFG_HANGUP_REWARD_MONEY_FIELD, TOWER_BASE_CFG_DELAY_REWARD_ITEM_FIELD, TOWER_BASE_CFG_DELAY_REWARD_ITEM_COUNT_FIELD, TOWER_BASE_CFG_BIRTH_X_FIELD, TOWER_BASE_CFG_BIRTH_Y_FIELD, TOWER_BASE_CFG_BIRTH_Z_FIELD}
-TOWER_BASE_CFG.is_extendable = false
-TOWER_BASE_CFG.extensions = {}
-TOWER_BASE_CFGS_ITEMS_FIELD.name = "items"
-TOWER_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.tower_base_cfgs.items"
-TOWER_BASE_CFGS_ITEMS_FIELD.number = 1
-TOWER_BASE_CFGS_ITEMS_FIELD.index = 0
-TOWER_BASE_CFGS_ITEMS_FIELD.label = 3
-TOWER_BASE_CFGS_ITEMS_FIELD.has_default_value = false
-TOWER_BASE_CFGS_ITEMS_FIELD.default_value = {}
-TOWER_BASE_CFGS_ITEMS_FIELD.message_type = TOWER_BASE_CFG
-TOWER_BASE_CFGS_ITEMS_FIELD.type = 11
-TOWER_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-TOWER_BASE_CFGS.name = "tower_base_cfgs"
-TOWER_BASE_CFGS.full_name = ".ftcfg.tower_base_cfgs"
-TOWER_BASE_CFGS.nested_types = {}
-TOWER_BASE_CFGS.enum_types = {}
-TOWER_BASE_CFGS.fields = {TOWER_BASE_CFGS_ITEMS_FIELD}
-TOWER_BASE_CFGS.is_extendable = false
-TOWER_BASE_CFGS.extensions = {}
-STARSPIRIT_DUNGOEN_CFG_ID_FIELD.name = "id"
-STARSPIRIT_DUNGOEN_CFG_ID_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.id"
-STARSPIRIT_DUNGOEN_CFG_ID_FIELD.number = 1
-STARSPIRIT_DUNGOEN_CFG_ID_FIELD.index = 0
-STARSPIRIT_DUNGOEN_CFG_ID_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_ID_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_ID_FIELD.default_value = 0
-STARSPIRIT_DUNGOEN_CFG_ID_FIELD.type = 5
-STARSPIRIT_DUNGOEN_CFG_ID_FIELD.cpp_type = 1
-
-STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.name = "level_state"
-STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.level_state"
-STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.number = 2
-STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.index = 1
-STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.default_value = 0
-STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.type = 5
-STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD.cpp_type = 1
-
-STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.name = "map_id"
-STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.map_id"
-STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.number = 3
-STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.index = 2
-STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.default_value = 0
-STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.type = 5
-STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD.cpp_type = 1
-
-STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.name = "map_image_id"
-STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.map_image_id"
-STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.number = 4
-STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.index = 3
-STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.default_value = 0
-STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.type = 5
-STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD.cpp_type = 1
-
-STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.name = "map_name"
-STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.map_name"
-STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.number = 5
-STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.index = 4
-STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.default_value = ""
-STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.type = 9
-STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD.cpp_type = 9
-
-STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.name = "min_fightval"
-STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.min_fightval"
-STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.number = 6
-STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.index = 5
-STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.default_value = 0
-STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.type = 13
-STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD.cpp_type = 3
-
-STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.name = "recommend_fightval"
-STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.recommend_fightval"
-STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.number = 7
-STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.index = 6
-STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.default_value = 0
-STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.type = 13
-STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD.cpp_type = 3
-
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.name = "consume_item_type"
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.consume_item_type"
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.number = 8
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.index = 7
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.default_value = 0
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.type = 13
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD.cpp_type = 3
-
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.name = "consume_item_num"
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.consume_item_num"
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.number = 9
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.index = 8
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.default_value = 0
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.type = 5
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD.cpp_type = 1
-
-STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.name = "enter_type"
-STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.enter_type"
-STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.number = 10
-STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.index = 9
-STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.default_value = nil
-STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.enum_type = config_predefine_pb.EDUNGEON_CHALLENGE_TYPE
-STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.type = 14
-STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD.cpp_type = 8
-
-STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.name = "dungoen_diff"
-STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.dungoen_diff"
-STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.number = 11
-STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.index = 10
-STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.default_value = nil
-STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.enum_type = config_predefine_pb.EDUNGEON_CHALLENGE_DIFF
-STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.type = 14
-STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD.cpp_type = 8
-
-STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.name = "enter_delay"
-STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.enter_delay"
-STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.number = 12
-STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.index = 11
-STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.default_value = 0
-STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.type = 13
-STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD.cpp_type = 3
-
-STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.name = "default_cancel_buton"
-STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.default_cancel_buton"
-STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.number = 13
-STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.index = 12
-STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.default_value = 0
-STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.type = 5
-STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD.cpp_type = 1
-
-STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.name = "reward_type"
-STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.reward_type"
-STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.number = 14
-STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.index = 13
-STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.default_value = 0
-STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.type = 5
-STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD.cpp_type = 1
-
-STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.name = "min_team_num"
-STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.min_team_num"
-STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.number = 15
-STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.index = 14
-STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.default_value = 0
-STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.type = 5
-STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD.cpp_type = 1
-
-STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.name = "icon_id"
-STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.icon_id"
-STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.number = 16
-STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.index = 15
-STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.default_value = 0
-STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.type = 5
-STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD.cpp_type = 1
-
-STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.name = "consume_show_name"
-STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.consume_show_name"
-STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.number = 17
-STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.index = 16
-STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.label = 2
-STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.default_value = ""
-STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.type = 9
-STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD.cpp_type = 9
-
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.name = "consume_item_id"
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfg.consume_item_id"
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.number = 18
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.index = 17
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.label = 3
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.default_value = {}
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.type = 5
-STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD.cpp_type = 1
-
-STARSPIRIT_DUNGOEN_CFG.name = "starspirit_dungoen_cfg"
-STARSPIRIT_DUNGOEN_CFG.full_name = ".ftcfg.starspirit_dungoen_cfg"
-STARSPIRIT_DUNGOEN_CFG.nested_types = {}
-STARSPIRIT_DUNGOEN_CFG.enum_types = {}
-STARSPIRIT_DUNGOEN_CFG.fields = {STARSPIRIT_DUNGOEN_CFG_ID_FIELD, STARSPIRIT_DUNGOEN_CFG_LEVEL_STATE_FIELD, STARSPIRIT_DUNGOEN_CFG_MAP_ID_FIELD, STARSPIRIT_DUNGOEN_CFG_MAP_IMAGE_ID_FIELD, STARSPIRIT_DUNGOEN_CFG_MAP_NAME_FIELD, STARSPIRIT_DUNGOEN_CFG_MIN_FIGHTVAL_FIELD, STARSPIRIT_DUNGOEN_CFG_RECOMMEND_FIGHTVAL_FIELD, STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_TYPE_FIELD, STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_NUM_FIELD, STARSPIRIT_DUNGOEN_CFG_ENTER_TYPE_FIELD, STARSPIRIT_DUNGOEN_CFG_DUNGOEN_DIFF_FIELD, STARSPIRIT_DUNGOEN_CFG_ENTER_DELAY_FIELD, STARSPIRIT_DUNGOEN_CFG_DEFAULT_CANCEL_BUTON_FIELD, STARSPIRIT_DUNGOEN_CFG_REWARD_TYPE_FIELD, STARSPIRIT_DUNGOEN_CFG_MIN_TEAM_NUM_FIELD, STARSPIRIT_DUNGOEN_CFG_ICON_ID_FIELD, STARSPIRIT_DUNGOEN_CFG_CONSUME_SHOW_NAME_FIELD, STARSPIRIT_DUNGOEN_CFG_CONSUME_ITEM_ID_FIELD}
-STARSPIRIT_DUNGOEN_CFG.is_extendable = false
-STARSPIRIT_DUNGOEN_CFG.extensions = {}
-STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.name = "items"
-STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.full_name = ".ftcfg.starspirit_dungoen_cfgs.items"
-STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.number = 1
-STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.index = 0
-STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.label = 3
-STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.has_default_value = false
-STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.default_value = {}
-STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.message_type = STARSPIRIT_DUNGOEN_CFG
-STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.type = 11
-STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD.cpp_type = 10
-
-STARSPIRIT_DUNGOEN_CFGS.name = "starspirit_dungoen_cfgs"
-STARSPIRIT_DUNGOEN_CFGS.full_name = ".ftcfg.starspirit_dungoen_cfgs"
-STARSPIRIT_DUNGOEN_CFGS.nested_types = {}
-STARSPIRIT_DUNGOEN_CFGS.enum_types = {}
-STARSPIRIT_DUNGOEN_CFGS.fields = {STARSPIRIT_DUNGOEN_CFGS_ITEMS_FIELD}
-STARSPIRIT_DUNGOEN_CFGS.is_extendable = false
-STARSPIRIT_DUNGOEN_CFGS.extensions = {}
-RUNE_QUALITY_CFG_RUNE_ID_FIELD.name = "rune_id"
-RUNE_QUALITY_CFG_RUNE_ID_FIELD.full_name = ".ftcfg.rune_quality_cfg.rune_id"
-RUNE_QUALITY_CFG_RUNE_ID_FIELD.number = 1
-RUNE_QUALITY_CFG_RUNE_ID_FIELD.index = 0
-RUNE_QUALITY_CFG_RUNE_ID_FIELD.label = 2
-RUNE_QUALITY_CFG_RUNE_ID_FIELD.has_default_value = false
-RUNE_QUALITY_CFG_RUNE_ID_FIELD.default_value = 0
-RUNE_QUALITY_CFG_RUNE_ID_FIELD.type = 13
-RUNE_QUALITY_CFG_RUNE_ID_FIELD.cpp_type = 3
-
-RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.name = "power_uplimit"
-RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.full_name = ".ftcfg.rune_quality_cfg.power_uplimit"
-RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.number = 2
-RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.index = 1
-RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.label = 2
-RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.has_default_value = false
-RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.default_value = 0
-RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.type = 13
-RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD.cpp_type = 3
-
-RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.name = "power_downlimit"
-RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.full_name = ".ftcfg.rune_quality_cfg.power_downlimit"
-RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.number = 3
-RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.index = 2
-RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.label = 2
-RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.has_default_value = false
-RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.default_value = 0
-RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.type = 13
-RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD.cpp_type = 3
-
-RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.name = "better_effect_rate"
-RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.full_name = ".ftcfg.rune_quality_cfg.better_effect_rate"
-RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.number = 4
-RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.index = 3
-RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.label = 2
-RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.has_default_value = false
-RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.default_value = 0
-RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.type = 5
-RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD.cpp_type = 1
-
-RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.name = "best_effect_rate"
-RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.full_name = ".ftcfg.rune_quality_cfg.best_effect_rate"
-RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.number = 5
-RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.index = 4
-RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.label = 2
-RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.has_default_value = false
-RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.default_value = 0
-RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.type = 5
-RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD.cpp_type = 1
-
-RUNE_QUALITY_CFG.name = "rune_quality_cfg"
-RUNE_QUALITY_CFG.full_name = ".ftcfg.rune_quality_cfg"
-RUNE_QUALITY_CFG.nested_types = {}
-RUNE_QUALITY_CFG.enum_types = {}
-RUNE_QUALITY_CFG.fields = {RUNE_QUALITY_CFG_RUNE_ID_FIELD, RUNE_QUALITY_CFG_POWER_UPLIMIT_FIELD, RUNE_QUALITY_CFG_POWER_DOWNLIMIT_FIELD, RUNE_QUALITY_CFG_BETTER_EFFECT_RATE_FIELD, RUNE_QUALITY_CFG_BEST_EFFECT_RATE_FIELD}
-RUNE_QUALITY_CFG.is_extendable = false
-RUNE_QUALITY_CFG.extensions = {}
-RUNE_QUALITY_CFGS_ITEMS_FIELD.name = "items"
-RUNE_QUALITY_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rune_quality_cfgs.items"
-RUNE_QUALITY_CFGS_ITEMS_FIELD.number = 1
-RUNE_QUALITY_CFGS_ITEMS_FIELD.index = 0
-RUNE_QUALITY_CFGS_ITEMS_FIELD.label = 3
-RUNE_QUALITY_CFGS_ITEMS_FIELD.has_default_value = false
-RUNE_QUALITY_CFGS_ITEMS_FIELD.default_value = {}
-RUNE_QUALITY_CFGS_ITEMS_FIELD.message_type = RUNE_QUALITY_CFG
-RUNE_QUALITY_CFGS_ITEMS_FIELD.type = 11
-RUNE_QUALITY_CFGS_ITEMS_FIELD.cpp_type = 10
-
-RUNE_QUALITY_CFGS.name = "rune_quality_cfgs"
-RUNE_QUALITY_CFGS.full_name = ".ftcfg.rune_quality_cfgs"
-RUNE_QUALITY_CFGS.nested_types = {}
-RUNE_QUALITY_CFGS.enum_types = {}
-RUNE_QUALITY_CFGS.fields = {RUNE_QUALITY_CFGS_ITEMS_FIELD}
-RUNE_QUALITY_CFGS.is_extendable = false
-RUNE_QUALITY_CFGS.extensions = {}
-RUNE_PROP_REFINE_CFG_ID_FIELD.name = "id"
-RUNE_PROP_REFINE_CFG_ID_FIELD.full_name = ".ftcfg.rune_prop_refine_cfg.id"
-RUNE_PROP_REFINE_CFG_ID_FIELD.number = 1
-RUNE_PROP_REFINE_CFG_ID_FIELD.index = 0
-RUNE_PROP_REFINE_CFG_ID_FIELD.label = 2
-RUNE_PROP_REFINE_CFG_ID_FIELD.has_default_value = false
-RUNE_PROP_REFINE_CFG_ID_FIELD.default_value = 0
-RUNE_PROP_REFINE_CFG_ID_FIELD.type = 13
-RUNE_PROP_REFINE_CFG_ID_FIELD.cpp_type = 3
-
-RUNE_PROP_REFINE_CFG_LEVEL_FIELD.name = "level"
-RUNE_PROP_REFINE_CFG_LEVEL_FIELD.full_name = ".ftcfg.rune_prop_refine_cfg.level"
-RUNE_PROP_REFINE_CFG_LEVEL_FIELD.number = 2
-RUNE_PROP_REFINE_CFG_LEVEL_FIELD.index = 1
-RUNE_PROP_REFINE_CFG_LEVEL_FIELD.label = 2
-RUNE_PROP_REFINE_CFG_LEVEL_FIELD.has_default_value = false
-RUNE_PROP_REFINE_CFG_LEVEL_FIELD.default_value = 0
-RUNE_PROP_REFINE_CFG_LEVEL_FIELD.type = 13
-RUNE_PROP_REFINE_CFG_LEVEL_FIELD.cpp_type = 3
-
-RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.name = "prop_type"
-RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.full_name = ".ftcfg.rune_prop_refine_cfg.prop_type"
-RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.number = 3
-RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.index = 2
-RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.label = 2
-RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.has_default_value = false
-RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.default_value = nil
-RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
-RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.type = 14
-RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD.cpp_type = 8
-
-RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.name = "item_id"
-RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.rune_prop_refine_cfg.item_id"
-RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.number = 4
-RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.index = 3
-RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.label = 2
-RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.has_default_value = false
-RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.default_value = 0
-RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.type = 13
-RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD.cpp_type = 3
-
-RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.name = "item_count"
-RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.full_name = ".ftcfg.rune_prop_refine_cfg.item_count"
-RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.number = 5
-RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.index = 4
-RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.label = 2
-RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.has_default_value = false
-RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.default_value = 0
-RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.type = 13
-RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD.cpp_type = 3
-
-RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.name = "silver_cost"
-RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.full_name = ".ftcfg.rune_prop_refine_cfg.silver_cost"
-RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.number = 6
-RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.index = 5
-RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.label = 2
-RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.has_default_value = false
-RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.default_value = 0
-RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.type = 13
-RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD.cpp_type = 3
-
-RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.name = "prop_limit"
-RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.full_name = ".ftcfg.rune_prop_refine_cfg.prop_limit"
-RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.number = 7
-RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.index = 6
-RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.label = 2
-RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.has_default_value = false
-RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.default_value = 0.0
-RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.type = 2
-RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD.cpp_type = 6
-
-RUNE_PROP_REFINE_CFG.name = "rune_prop_refine_cfg"
-RUNE_PROP_REFINE_CFG.full_name = ".ftcfg.rune_prop_refine_cfg"
-RUNE_PROP_REFINE_CFG.nested_types = {}
-RUNE_PROP_REFINE_CFG.enum_types = {}
-RUNE_PROP_REFINE_CFG.fields = {RUNE_PROP_REFINE_CFG_ID_FIELD, RUNE_PROP_REFINE_CFG_LEVEL_FIELD, RUNE_PROP_REFINE_CFG_PROP_TYPE_FIELD, RUNE_PROP_REFINE_CFG_ITEM_ID_FIELD, RUNE_PROP_REFINE_CFG_ITEM_COUNT_FIELD, RUNE_PROP_REFINE_CFG_SILVER_COST_FIELD, RUNE_PROP_REFINE_CFG_PROP_LIMIT_FIELD}
-RUNE_PROP_REFINE_CFG.is_extendable = false
-RUNE_PROP_REFINE_CFG.extensions = {}
-RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.name = "items"
-RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rune_prop_refine_cfgs.items"
-RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.number = 1
-RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.index = 0
-RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.label = 3
-RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.has_default_value = false
-RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.default_value = {}
-RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.message_type = RUNE_PROP_REFINE_CFG
-RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.type = 11
-RUNE_PROP_REFINE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-RUNE_PROP_REFINE_CFGS.name = "rune_prop_refine_cfgs"
-RUNE_PROP_REFINE_CFGS.full_name = ".ftcfg.rune_prop_refine_cfgs"
-RUNE_PROP_REFINE_CFGS.nested_types = {}
-RUNE_PROP_REFINE_CFGS.enum_types = {}
-RUNE_PROP_REFINE_CFGS.fields = {RUNE_PROP_REFINE_CFGS_ITEMS_FIELD}
-RUNE_PROP_REFINE_CFGS.is_extendable = false
-RUNE_PROP_REFINE_CFGS.extensions = {}
-RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.name = "level"
-RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.full_name = ".ftcfg.rune_skill_refine_cfg.level"
-RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.number = 1
-RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.index = 0
-RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.label = 2
-RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.has_default_value = false
-RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.default_value = 0
-RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.type = 13
-RUNE_SKILL_REFINE_CFG_LEVEL_FIELD.cpp_type = 3
-
-RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.name = "item_id"
-RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.rune_skill_refine_cfg.item_id"
-RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.number = 2
-RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.index = 1
-RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.label = 2
-RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.has_default_value = false
-RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.default_value = 0
-RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.type = 13
-RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD.cpp_type = 3
-
-RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.name = "item_count"
-RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.full_name = ".ftcfg.rune_skill_refine_cfg.item_count"
-RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.number = 3
-RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.index = 2
-RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.label = 2
-RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.has_default_value = false
-RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.default_value = 0
-RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.type = 13
-RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD.cpp_type = 3
-
-RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.name = "silver_cost"
-RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.full_name = ".ftcfg.rune_skill_refine_cfg.silver_cost"
-RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.number = 4
-RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.index = 3
-RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.label = 2
-RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.has_default_value = false
-RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.default_value = 0
-RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.type = 13
-RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD.cpp_type = 3
-
-RUNE_SKILL_REFINE_CFG.name = "rune_skill_refine_cfg"
-RUNE_SKILL_REFINE_CFG.full_name = ".ftcfg.rune_skill_refine_cfg"
-RUNE_SKILL_REFINE_CFG.nested_types = {}
-RUNE_SKILL_REFINE_CFG.enum_types = {}
-RUNE_SKILL_REFINE_CFG.fields = {RUNE_SKILL_REFINE_CFG_LEVEL_FIELD, RUNE_SKILL_REFINE_CFG_ITEM_ID_FIELD, RUNE_SKILL_REFINE_CFG_ITEM_COUNT_FIELD, RUNE_SKILL_REFINE_CFG_SILVER_COST_FIELD}
-RUNE_SKILL_REFINE_CFG.is_extendable = false
-RUNE_SKILL_REFINE_CFG.extensions = {}
-RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.name = "items"
-RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.rune_skill_refine_cfgs.items"
-RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.number = 1
-RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.index = 0
-RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.label = 3
-RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.has_default_value = false
-RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.default_value = {}
-RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.message_type = RUNE_SKILL_REFINE_CFG
-RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.type = 11
-RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-RUNE_SKILL_REFINE_CFGS.name = "rune_skill_refine_cfgs"
-RUNE_SKILL_REFINE_CFGS.full_name = ".ftcfg.rune_skill_refine_cfgs"
-RUNE_SKILL_REFINE_CFGS.nested_types = {}
-RUNE_SKILL_REFINE_CFGS.enum_types = {}
-RUNE_SKILL_REFINE_CFGS.fields = {RUNE_SKILL_REFINE_CFGS_ITEMS_FIELD}
-RUNE_SKILL_REFINE_CFGS.is_extendable = false
-RUNE_SKILL_REFINE_CFGS.extensions = {}
-MONTHCARD_BASE_CFG_ID_FIELD.name = "id"
-MONTHCARD_BASE_CFG_ID_FIELD.full_name = ".ftcfg.monthcard_base_cfg.id"
-MONTHCARD_BASE_CFG_ID_FIELD.number = 1
-MONTHCARD_BASE_CFG_ID_FIELD.index = 0
-MONTHCARD_BASE_CFG_ID_FIELD.label = 2
-MONTHCARD_BASE_CFG_ID_FIELD.has_default_value = false
-MONTHCARD_BASE_CFG_ID_FIELD.default_value = 0
-MONTHCARD_BASE_CFG_ID_FIELD.type = 5
-MONTHCARD_BASE_CFG_ID_FIELD.cpp_type = 1
-
-MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.name = "continueday"
-MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.full_name = ".ftcfg.monthcard_base_cfg.continueday"
-MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.number = 2
-MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.index = 1
-MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.label = 2
-MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.has_default_value = false
-MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.default_value = 0
-MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.type = 5
-MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD.cpp_type = 1
-
-MONTHCARD_BASE_CFG_PRICE_FIELD.name = "price"
-MONTHCARD_BASE_CFG_PRICE_FIELD.full_name = ".ftcfg.monthcard_base_cfg.price"
-MONTHCARD_BASE_CFG_PRICE_FIELD.number = 3
-MONTHCARD_BASE_CFG_PRICE_FIELD.index = 2
-MONTHCARD_BASE_CFG_PRICE_FIELD.label = 2
-MONTHCARD_BASE_CFG_PRICE_FIELD.has_default_value = false
-MONTHCARD_BASE_CFG_PRICE_FIELD.default_value = 0
-MONTHCARD_BASE_CFG_PRICE_FIELD.type = 5
-MONTHCARD_BASE_CFG_PRICE_FIELD.cpp_type = 1
-
-MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.name = "ingotscount"
-MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.full_name = ".ftcfg.monthcard_base_cfg.ingotscount"
-MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.number = 4
-MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.index = 3
-MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.label = 2
-MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.has_default_value = false
-MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.default_value = 0
-MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.type = 5
-MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD.cpp_type = 1
-
-MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.name = "exp_percent"
-MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.full_name = ".ftcfg.monthcard_base_cfg.exp_percent"
-MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.number = 5
-MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.index = 4
-MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.label = 2
-MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.has_default_value = false
-MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.default_value = 0
-MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.type = 5
-MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD.cpp_type = 1
-
-MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.name = "popularity_per"
-MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.full_name = ".ftcfg.monthcard_base_cfg.popularity_per"
-MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.number = 6
-MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.index = 5
-MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.label = 2
-MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.has_default_value = false
-MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.default_value = 0
-MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.type = 5
-MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD.cpp_type = 1
-
-MONTHCARD_BASE_CFG.name = "monthcard_base_cfg"
-MONTHCARD_BASE_CFG.full_name = ".ftcfg.monthcard_base_cfg"
-MONTHCARD_BASE_CFG.nested_types = {}
-MONTHCARD_BASE_CFG.enum_types = {}
-MONTHCARD_BASE_CFG.fields = {MONTHCARD_BASE_CFG_ID_FIELD, MONTHCARD_BASE_CFG_CONTINUEDAY_FIELD, MONTHCARD_BASE_CFG_PRICE_FIELD, MONTHCARD_BASE_CFG_INGOTSCOUNT_FIELD, MONTHCARD_BASE_CFG_EXP_PERCENT_FIELD, MONTHCARD_BASE_CFG_POPULARITY_PER_FIELD}
-MONTHCARD_BASE_CFG.is_extendable = false
-MONTHCARD_BASE_CFG.extensions = {}
-MONTHCARD_BASE_CFGS_ITEMS_FIELD.name = "items"
-MONTHCARD_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.monthcard_base_cfgs.items"
-MONTHCARD_BASE_CFGS_ITEMS_FIELD.number = 1
-MONTHCARD_BASE_CFGS_ITEMS_FIELD.index = 0
-MONTHCARD_BASE_CFGS_ITEMS_FIELD.label = 3
-MONTHCARD_BASE_CFGS_ITEMS_FIELD.has_default_value = false
-MONTHCARD_BASE_CFGS_ITEMS_FIELD.default_value = {}
-MONTHCARD_BASE_CFGS_ITEMS_FIELD.message_type = MONTHCARD_BASE_CFG
-MONTHCARD_BASE_CFGS_ITEMS_FIELD.type = 11
-MONTHCARD_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MONTHCARD_BASE_CFGS.name = "monthcard_base_cfgs"
-MONTHCARD_BASE_CFGS.full_name = ".ftcfg.monthcard_base_cfgs"
-MONTHCARD_BASE_CFGS.nested_types = {}
-MONTHCARD_BASE_CFGS.enum_types = {}
-MONTHCARD_BASE_CFGS.fields = {MONTHCARD_BASE_CFGS_ITEMS_FIELD}
-MONTHCARD_BASE_CFGS.is_extendable = false
-MONTHCARD_BASE_CFGS.extensions = {}
-SIGNUP_BASE_CFG_ID_FIELD.name = "id"
-SIGNUP_BASE_CFG_ID_FIELD.full_name = ".ftcfg.signup_base_cfg.id"
-SIGNUP_BASE_CFG_ID_FIELD.number = 1
-SIGNUP_BASE_CFG_ID_FIELD.index = 0
-SIGNUP_BASE_CFG_ID_FIELD.label = 2
-SIGNUP_BASE_CFG_ID_FIELD.has_default_value = false
-SIGNUP_BASE_CFG_ID_FIELD.default_value = 0
-SIGNUP_BASE_CFG_ID_FIELD.type = 5
-SIGNUP_BASE_CFG_ID_FIELD.cpp_type = 1
-
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.name = "item_number_month1"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month1"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.number = 2
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.index = 1
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.label = 3
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.has_default_value = false
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.default_value = {}
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.type = 5
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD.cpp_type = 1
-
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.name = "item_number_month2"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month2"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.number = 3
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.index = 2
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.label = 3
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.has_default_value = false
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.default_value = {}
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.type = 5
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD.cpp_type = 1
-
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.name = "item_number_month3"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month3"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.number = 4
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.index = 3
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.label = 3
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.has_default_value = false
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.default_value = {}
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.type = 5
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD.cpp_type = 1
-
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.name = "item_number_month4"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month4"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.number = 5
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.index = 4
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.label = 3
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.has_default_value = false
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.default_value = {}
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.type = 5
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD.cpp_type = 1
-
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.name = "item_number_month5"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month5"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.number = 6
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.index = 5
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.label = 3
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.has_default_value = false
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.default_value = {}
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.type = 5
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD.cpp_type = 1
-
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.name = "item_number_month6"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month6"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.number = 7
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.index = 6
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.label = 3
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.has_default_value = false
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.default_value = {}
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.type = 5
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD.cpp_type = 1
-
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.name = "item_number_month7"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month7"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.number = 8
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.index = 7
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.label = 3
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.has_default_value = false
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.default_value = {}
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.type = 5
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD.cpp_type = 1
-
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.name = "item_number_month8"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month8"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.number = 9
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.index = 8
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.label = 3
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.has_default_value = false
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.default_value = {}
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.type = 5
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD.cpp_type = 1
-
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.name = "item_number_month9"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month9"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.number = 10
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.index = 9
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.label = 3
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.has_default_value = false
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.default_value = {}
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.type = 5
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD.cpp_type = 1
-
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.name = "item_number_month10"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month10"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.number = 11
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.index = 10
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.label = 3
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.has_default_value = false
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.default_value = {}
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.type = 5
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD.cpp_type = 1
-
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.name = "item_number_month11"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month11"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.number = 12
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.index = 11
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.label = 3
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.has_default_value = false
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.default_value = {}
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.type = 5
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD.cpp_type = 1
-
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.name = "item_number_month12"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.full_name = ".ftcfg.signup_base_cfg.item_number_month12"
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.number = 13
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.index = 12
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.label = 3
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.has_default_value = false
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.default_value = {}
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.type = 5
-SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD.cpp_type = 1
-
-SIGNUP_BASE_CFG.name = "signup_base_cfg"
-SIGNUP_BASE_CFG.full_name = ".ftcfg.signup_base_cfg"
-SIGNUP_BASE_CFG.nested_types = {}
-SIGNUP_BASE_CFG.enum_types = {}
-SIGNUP_BASE_CFG.fields = {SIGNUP_BASE_CFG_ID_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH1_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH2_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH3_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH4_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH5_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH6_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH7_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH8_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH9_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH10_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH11_FIELD, SIGNUP_BASE_CFG_ITEM_NUMBER_MONTH12_FIELD}
-SIGNUP_BASE_CFG.is_extendable = false
-SIGNUP_BASE_CFG.extensions = {}
-SIGNUP_BASE_CFGS_ITEMS_FIELD.name = "items"
-SIGNUP_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.signup_base_cfgs.items"
-SIGNUP_BASE_CFGS_ITEMS_FIELD.number = 1
-SIGNUP_BASE_CFGS_ITEMS_FIELD.index = 0
-SIGNUP_BASE_CFGS_ITEMS_FIELD.label = 3
-SIGNUP_BASE_CFGS_ITEMS_FIELD.has_default_value = false
-SIGNUP_BASE_CFGS_ITEMS_FIELD.default_value = {}
-SIGNUP_BASE_CFGS_ITEMS_FIELD.message_type = SIGNUP_BASE_CFG
-SIGNUP_BASE_CFGS_ITEMS_FIELD.type = 11
-SIGNUP_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SIGNUP_BASE_CFGS.name = "signup_base_cfgs"
-SIGNUP_BASE_CFGS.full_name = ".ftcfg.signup_base_cfgs"
-SIGNUP_BASE_CFGS.nested_types = {}
-SIGNUP_BASE_CFGS.enum_types = {}
-SIGNUP_BASE_CFGS.fields = {SIGNUP_BASE_CFGS_ITEMS_FIELD}
-SIGNUP_BASE_CFGS.is_extendable = false
-SIGNUP_BASE_CFGS.extensions = {}
-SIGNUP_ACCUMULATION_CFG_ID_FIELD.name = "id"
-SIGNUP_ACCUMULATION_CFG_ID_FIELD.full_name = ".ftcfg.signup_accumulation_cfg.id"
-SIGNUP_ACCUMULATION_CFG_ID_FIELD.number = 1
-SIGNUP_ACCUMULATION_CFG_ID_FIELD.index = 0
-SIGNUP_ACCUMULATION_CFG_ID_FIELD.label = 2
-SIGNUP_ACCUMULATION_CFG_ID_FIELD.has_default_value = false
-SIGNUP_ACCUMULATION_CFG_ID_FIELD.default_value = 0
-SIGNUP_ACCUMULATION_CFG_ID_FIELD.type = 5
-SIGNUP_ACCUMULATION_CFG_ID_FIELD.cpp_type = 1
-
-SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.name = "reach_number"
-SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.full_name = ".ftcfg.signup_accumulation_cfg.reach_number"
-SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.number = 2
-SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.index = 1
-SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.label = 2
-SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.has_default_value = false
-SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.default_value = 0
-SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.type = 5
-SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD.cpp_type = 1
-
-SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.name = "reward_id"
-SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.full_name = ".ftcfg.signup_accumulation_cfg.reward_id"
-SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.number = 3
-SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.index = 2
-SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.label = 2
-SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.has_default_value = false
-SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.default_value = 0
-SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.type = 5
-SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD.cpp_type = 1
-
-SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.name = "reward_num"
-SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.full_name = ".ftcfg.signup_accumulation_cfg.reward_num"
-SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.number = 4
-SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.index = 3
-SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.label = 2
-SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.has_default_value = false
-SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.default_value = 0
-SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.type = 5
-SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD.cpp_type = 1
-
-SIGNUP_ACCUMULATION_CFG.name = "signup_accumulation_cfg"
-SIGNUP_ACCUMULATION_CFG.full_name = ".ftcfg.signup_accumulation_cfg"
-SIGNUP_ACCUMULATION_CFG.nested_types = {}
-SIGNUP_ACCUMULATION_CFG.enum_types = {}
-SIGNUP_ACCUMULATION_CFG.fields = {SIGNUP_ACCUMULATION_CFG_ID_FIELD, SIGNUP_ACCUMULATION_CFG_REACH_NUMBER_FIELD, SIGNUP_ACCUMULATION_CFG_REWARD_ID_FIELD, SIGNUP_ACCUMULATION_CFG_REWARD_NUM_FIELD}
-SIGNUP_ACCUMULATION_CFG.is_extendable = false
-SIGNUP_ACCUMULATION_CFG.extensions = {}
-SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.name = "items"
-SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.signup_accumulation_cfgs.items"
-SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.number = 1
-SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.index = 0
-SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.label = 3
-SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.has_default_value = false
-SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.default_value = {}
-SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.message_type = SIGNUP_ACCUMULATION_CFG
-SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.type = 11
-SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SIGNUP_ACCUMULATION_CFGS.name = "signup_accumulation_cfgs"
-SIGNUP_ACCUMULATION_CFGS.full_name = ".ftcfg.signup_accumulation_cfgs"
-SIGNUP_ACCUMULATION_CFGS.nested_types = {}
-SIGNUP_ACCUMULATION_CFGS.enum_types = {}
-SIGNUP_ACCUMULATION_CFGS.fields = {SIGNUP_ACCUMULATION_CFGS_ITEMS_FIELD}
-SIGNUP_ACCUMULATION_CFGS.is_extendable = false
-SIGNUP_ACCUMULATION_CFGS.extensions = {}
-SERVICE_CFG_ID_FIELD.name = "id"
-SERVICE_CFG_ID_FIELD.full_name = ".ftcfg.service_cfg.id"
-SERVICE_CFG_ID_FIELD.number = 1
-SERVICE_CFG_ID_FIELD.index = 0
-SERVICE_CFG_ID_FIELD.label = 2
-SERVICE_CFG_ID_FIELD.has_default_value = false
-SERVICE_CFG_ID_FIELD.default_value = 0
-SERVICE_CFG_ID_FIELD.type = 5
-SERVICE_CFG_ID_FIELD.cpp_type = 1
-
-SERVICE_CFG_SERVICE_ID_FIELD.name = "service_id"
-SERVICE_CFG_SERVICE_ID_FIELD.full_name = ".ftcfg.service_cfg.service_id"
-SERVICE_CFG_SERVICE_ID_FIELD.number = 2
-SERVICE_CFG_SERVICE_ID_FIELD.index = 1
-SERVICE_CFG_SERVICE_ID_FIELD.label = 2
-SERVICE_CFG_SERVICE_ID_FIELD.has_default_value = false
-SERVICE_CFG_SERVICE_ID_FIELD.default_value = 0
-SERVICE_CFG_SERVICE_ID_FIELD.type = 5
-SERVICE_CFG_SERVICE_ID_FIELD.cpp_type = 1
-
-SERVICE_CFG_PARAM1_FIELD.name = "param1"
-SERVICE_CFG_PARAM1_FIELD.full_name = ".ftcfg.service_cfg.param1"
-SERVICE_CFG_PARAM1_FIELD.number = 3
-SERVICE_CFG_PARAM1_FIELD.index = 2
-SERVICE_CFG_PARAM1_FIELD.label = 2
-SERVICE_CFG_PARAM1_FIELD.has_default_value = false
-SERVICE_CFG_PARAM1_FIELD.default_value = 0
-SERVICE_CFG_PARAM1_FIELD.type = 5
-SERVICE_CFG_PARAM1_FIELD.cpp_type = 1
-
-SERVICE_CFG_PARAM2_FIELD.name = "param2"
-SERVICE_CFG_PARAM2_FIELD.full_name = ".ftcfg.service_cfg.param2"
-SERVICE_CFG_PARAM2_FIELD.number = 4
-SERVICE_CFG_PARAM2_FIELD.index = 3
-SERVICE_CFG_PARAM2_FIELD.label = 2
-SERVICE_CFG_PARAM2_FIELD.has_default_value = false
-SERVICE_CFG_PARAM2_FIELD.default_value = 0
-SERVICE_CFG_PARAM2_FIELD.type = 5
-SERVICE_CFG_PARAM2_FIELD.cpp_type = 1
-
-SERVICE_CFG_PARAM3_FIELD.name = "param3"
-SERVICE_CFG_PARAM3_FIELD.full_name = ".ftcfg.service_cfg.param3"
-SERVICE_CFG_PARAM3_FIELD.number = 5
-SERVICE_CFG_PARAM3_FIELD.index = 4
-SERVICE_CFG_PARAM3_FIELD.label = 2
-SERVICE_CFG_PARAM3_FIELD.has_default_value = false
-SERVICE_CFG_PARAM3_FIELD.default_value = 0
-SERVICE_CFG_PARAM3_FIELD.type = 5
-SERVICE_CFG_PARAM3_FIELD.cpp_type = 1
-
-SERVICE_CFG_PARAM4_FIELD.name = "param4"
-SERVICE_CFG_PARAM4_FIELD.full_name = ".ftcfg.service_cfg.param4"
-SERVICE_CFG_PARAM4_FIELD.number = 6
-SERVICE_CFG_PARAM4_FIELD.index = 5
-SERVICE_CFG_PARAM4_FIELD.label = 2
-SERVICE_CFG_PARAM4_FIELD.has_default_value = false
-SERVICE_CFG_PARAM4_FIELD.default_value = 0
-SERVICE_CFG_PARAM4_FIELD.type = 5
-SERVICE_CFG_PARAM4_FIELD.cpp_type = 1
-
-SERVICE_CFG_PARAM5_FIELD.name = "param5"
-SERVICE_CFG_PARAM5_FIELD.full_name = ".ftcfg.service_cfg.param5"
-SERVICE_CFG_PARAM5_FIELD.number = 7
-SERVICE_CFG_PARAM5_FIELD.index = 6
-SERVICE_CFG_PARAM5_FIELD.label = 2
-SERVICE_CFG_PARAM5_FIELD.has_default_value = false
-SERVICE_CFG_PARAM5_FIELD.default_value = 0
-SERVICE_CFG_PARAM5_FIELD.type = 5
-SERVICE_CFG_PARAM5_FIELD.cpp_type = 1
-
-SERVICE_CFG.name = "service_cfg"
-SERVICE_CFG.full_name = ".ftcfg.service_cfg"
-SERVICE_CFG.nested_types = {}
-SERVICE_CFG.enum_types = {}
-SERVICE_CFG.fields = {SERVICE_CFG_ID_FIELD, SERVICE_CFG_SERVICE_ID_FIELD, SERVICE_CFG_PARAM1_FIELD, SERVICE_CFG_PARAM2_FIELD, SERVICE_CFG_PARAM3_FIELD, SERVICE_CFG_PARAM4_FIELD, SERVICE_CFG_PARAM5_FIELD}
-SERVICE_CFG.is_extendable = false
-SERVICE_CFG.extensions = {}
-SERVICE_CFGS_ITEMS_FIELD.name = "items"
-SERVICE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.service_cfgs.items"
-SERVICE_CFGS_ITEMS_FIELD.number = 1
-SERVICE_CFGS_ITEMS_FIELD.index = 0
-SERVICE_CFGS_ITEMS_FIELD.label = 3
-SERVICE_CFGS_ITEMS_FIELD.has_default_value = false
-SERVICE_CFGS_ITEMS_FIELD.default_value = {}
-SERVICE_CFGS_ITEMS_FIELD.message_type = SERVICE_CFG
-SERVICE_CFGS_ITEMS_FIELD.type = 11
-SERVICE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SERVICE_CFGS.name = "service_cfgs"
-SERVICE_CFGS.full_name = ".ftcfg.service_cfgs"
-SERVICE_CFGS.nested_types = {}
-SERVICE_CFGS.enum_types = {}
-SERVICE_CFGS.fields = {SERVICE_CFGS_ITEMS_FIELD}
-SERVICE_CFGS.is_extendable = false
-SERVICE_CFGS.extensions = {}
-MATERIAL_ITEM_CFG_NUM_FIELD.name = "num"
-MATERIAL_ITEM_CFG_NUM_FIELD.full_name = ".ftcfg.material_item_cfg.num"
-MATERIAL_ITEM_CFG_NUM_FIELD.number = 1
-MATERIAL_ITEM_CFG_NUM_FIELD.index = 0
-MATERIAL_ITEM_CFG_NUM_FIELD.label = 2
-MATERIAL_ITEM_CFG_NUM_FIELD.has_default_value = false
-MATERIAL_ITEM_CFG_NUM_FIELD.default_value = 0
-MATERIAL_ITEM_CFG_NUM_FIELD.type = 13
-MATERIAL_ITEM_CFG_NUM_FIELD.cpp_type = 3
-
-MATERIAL_ITEM_CFG_ID_FIELD.name = "id"
-MATERIAL_ITEM_CFG_ID_FIELD.full_name = ".ftcfg.material_item_cfg.id"
-MATERIAL_ITEM_CFG_ID_FIELD.number = 2
-MATERIAL_ITEM_CFG_ID_FIELD.index = 1
-MATERIAL_ITEM_CFG_ID_FIELD.label = 3
-MATERIAL_ITEM_CFG_ID_FIELD.has_default_value = false
-MATERIAL_ITEM_CFG_ID_FIELD.default_value = {}
-MATERIAL_ITEM_CFG_ID_FIELD.type = 13
-MATERIAL_ITEM_CFG_ID_FIELD.cpp_type = 3
-
-MATERIAL_ITEM_CFG_WEIGHT_FIELD.name = "weight"
-MATERIAL_ITEM_CFG_WEIGHT_FIELD.full_name = ".ftcfg.material_item_cfg.weight"
-MATERIAL_ITEM_CFG_WEIGHT_FIELD.number = 3
-MATERIAL_ITEM_CFG_WEIGHT_FIELD.index = 2
-MATERIAL_ITEM_CFG_WEIGHT_FIELD.label = 3
-MATERIAL_ITEM_CFG_WEIGHT_FIELD.has_default_value = false
-MATERIAL_ITEM_CFG_WEIGHT_FIELD.default_value = {}
-MATERIAL_ITEM_CFG_WEIGHT_FIELD.type = 5
-MATERIAL_ITEM_CFG_WEIGHT_FIELD.cpp_type = 1
-
-MATERIAL_ITEM_CFG_REWARD_ID_FIELD.name = "reward_id"
-MATERIAL_ITEM_CFG_REWARD_ID_FIELD.full_name = ".ftcfg.material_item_cfg.reward_id"
-MATERIAL_ITEM_CFG_REWARD_ID_FIELD.number = 4
-MATERIAL_ITEM_CFG_REWARD_ID_FIELD.index = 3
-MATERIAL_ITEM_CFG_REWARD_ID_FIELD.label = 3
-MATERIAL_ITEM_CFG_REWARD_ID_FIELD.has_default_value = false
-MATERIAL_ITEM_CFG_REWARD_ID_FIELD.default_value = {}
-MATERIAL_ITEM_CFG_REWARD_ID_FIELD.type = 5
-MATERIAL_ITEM_CFG_REWARD_ID_FIELD.cpp_type = 1
-
-MATERIAL_ITEM_CFG.name = "material_item_cfg"
-MATERIAL_ITEM_CFG.full_name = ".ftcfg.material_item_cfg"
-MATERIAL_ITEM_CFG.nested_types = {}
-MATERIAL_ITEM_CFG.enum_types = {}
-MATERIAL_ITEM_CFG.fields = {MATERIAL_ITEM_CFG_NUM_FIELD, MATERIAL_ITEM_CFG_ID_FIELD, MATERIAL_ITEM_CFG_WEIGHT_FIELD, MATERIAL_ITEM_CFG_REWARD_ID_FIELD}
-MATERIAL_ITEM_CFG.is_extendable = false
-MATERIAL_ITEM_CFG.extensions = {}
-MATERIAL_ITEM_CFGS_ITEMS_FIELD.name = "items"
-MATERIAL_ITEM_CFGS_ITEMS_FIELD.full_name = ".ftcfg.material_item_cfgs.items"
-MATERIAL_ITEM_CFGS_ITEMS_FIELD.number = 1
-MATERIAL_ITEM_CFGS_ITEMS_FIELD.index = 0
-MATERIAL_ITEM_CFGS_ITEMS_FIELD.label = 3
-MATERIAL_ITEM_CFGS_ITEMS_FIELD.has_default_value = false
-MATERIAL_ITEM_CFGS_ITEMS_FIELD.default_value = {}
-MATERIAL_ITEM_CFGS_ITEMS_FIELD.message_type = MATERIAL_ITEM_CFG
-MATERIAL_ITEM_CFGS_ITEMS_FIELD.type = 11
-MATERIAL_ITEM_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MATERIAL_ITEM_CFGS.name = "material_item_cfgs"
-MATERIAL_ITEM_CFGS.full_name = ".ftcfg.material_item_cfgs"
-MATERIAL_ITEM_CFGS.nested_types = {}
-MATERIAL_ITEM_CFGS.enum_types = {}
-MATERIAL_ITEM_CFGS.fields = {MATERIAL_ITEM_CFGS_ITEMS_FIELD}
-MATERIAL_ITEM_CFGS.is_extendable = false
-MATERIAL_ITEM_CFGS.extensions = {}
-STATE_CFG_ID_FIELD.name = "id"
-STATE_CFG_ID_FIELD.full_name = ".ftcfg.state_cfg.id"
-STATE_CFG_ID_FIELD.number = 1
-STATE_CFG_ID_FIELD.index = 0
-STATE_CFG_ID_FIELD.label = 2
-STATE_CFG_ID_FIELD.has_default_value = false
-STATE_CFG_ID_FIELD.default_value = 0
-STATE_CFG_ID_FIELD.type = 5
-STATE_CFG_ID_FIELD.cpp_type = 1
-
-STATE_CFG_DESC_FIELD.name = "desc"
-STATE_CFG_DESC_FIELD.full_name = ".ftcfg.state_cfg.desc"
-STATE_CFG_DESC_FIELD.number = 2
-STATE_CFG_DESC_FIELD.index = 1
-STATE_CFG_DESC_FIELD.label = 2
-STATE_CFG_DESC_FIELD.has_default_value = false
-STATE_CFG_DESC_FIELD.default_value = ""
-STATE_CFG_DESC_FIELD.type = 9
-STATE_CFG_DESC_FIELD.cpp_type = 9
-
-STATE_CFG_ACTIONS_FIELD.name = "actions"
-STATE_CFG_ACTIONS_FIELD.full_name = ".ftcfg.state_cfg.actions"
-STATE_CFG_ACTIONS_FIELD.number = 3
-STATE_CFG_ACTIONS_FIELD.index = 2
-STATE_CFG_ACTIONS_FIELD.label = 3
-STATE_CFG_ACTIONS_FIELD.has_default_value = false
-STATE_CFG_ACTIONS_FIELD.default_value = {}
-STATE_CFG_ACTIONS_FIELD.enum_type = config_predefine_pb.EBATTLESTATEACTION
-STATE_CFG_ACTIONS_FIELD.type = 14
-STATE_CFG_ACTIONS_FIELD.cpp_type = 8
-
-STATE_CFG.name = "state_cfg"
-STATE_CFG.full_name = ".ftcfg.state_cfg"
-STATE_CFG.nested_types = {}
-STATE_CFG.enum_types = {}
-STATE_CFG.fields = {STATE_CFG_ID_FIELD, STATE_CFG_DESC_FIELD, STATE_CFG_ACTIONS_FIELD}
-STATE_CFG.is_extendable = false
-STATE_CFG.extensions = {}
-STATE_CFGS_ITEMS_FIELD.name = "items"
-STATE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.state_cfgs.items"
-STATE_CFGS_ITEMS_FIELD.number = 1
-STATE_CFGS_ITEMS_FIELD.index = 0
-STATE_CFGS_ITEMS_FIELD.label = 3
-STATE_CFGS_ITEMS_FIELD.has_default_value = false
-STATE_CFGS_ITEMS_FIELD.default_value = {}
-STATE_CFGS_ITEMS_FIELD.message_type = STATE_CFG
-STATE_CFGS_ITEMS_FIELD.type = 11
-STATE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-STATE_CFGS.name = "state_cfgs"
-STATE_CFGS.full_name = ".ftcfg.state_cfgs"
-STATE_CFGS.nested_types = {}
-STATE_CFGS.enum_types = {}
-STATE_CFGS.fields = {STATE_CFGS_ITEMS_FIELD}
-STATE_CFGS.is_extendable = false
-STATE_CFGS.extensions = {}
-CAM_OPTIONS_CFG_ID_FIELD.name = "id"
-CAM_OPTIONS_CFG_ID_FIELD.full_name = ".ftcfg.cam_options_cfg.id"
-CAM_OPTIONS_CFG_ID_FIELD.number = 1
-CAM_OPTIONS_CFG_ID_FIELD.index = 0
-CAM_OPTIONS_CFG_ID_FIELD.label = 2
-CAM_OPTIONS_CFG_ID_FIELD.has_default_value = false
-CAM_OPTIONS_CFG_ID_FIELD.default_value = 0
-CAM_OPTIONS_CFG_ID_FIELD.type = 5
-CAM_OPTIONS_CFG_ID_FIELD.cpp_type = 1
-
-CAM_OPTIONS_CFG_MIN_PITCH_FIELD.name = "min_pitch"
-CAM_OPTIONS_CFG_MIN_PITCH_FIELD.full_name = ".ftcfg.cam_options_cfg.min_pitch"
-CAM_OPTIONS_CFG_MIN_PITCH_FIELD.number = 2
-CAM_OPTIONS_CFG_MIN_PITCH_FIELD.index = 1
-CAM_OPTIONS_CFG_MIN_PITCH_FIELD.label = 2
-CAM_OPTIONS_CFG_MIN_PITCH_FIELD.has_default_value = false
-CAM_OPTIONS_CFG_MIN_PITCH_FIELD.default_value = 0.0
-CAM_OPTIONS_CFG_MIN_PITCH_FIELD.type = 2
-CAM_OPTIONS_CFG_MIN_PITCH_FIELD.cpp_type = 6
-
-CAM_OPTIONS_CFG_MAX_PITCH_FIELD.name = "max_pitch"
-CAM_OPTIONS_CFG_MAX_PITCH_FIELD.full_name = ".ftcfg.cam_options_cfg.max_pitch"
-CAM_OPTIONS_CFG_MAX_PITCH_FIELD.number = 3
-CAM_OPTIONS_CFG_MAX_PITCH_FIELD.index = 2
-CAM_OPTIONS_CFG_MAX_PITCH_FIELD.label = 2
-CAM_OPTIONS_CFG_MAX_PITCH_FIELD.has_default_value = false
-CAM_OPTIONS_CFG_MAX_PITCH_FIELD.default_value = 0.0
-CAM_OPTIONS_CFG_MAX_PITCH_FIELD.type = 2
-CAM_OPTIONS_CFG_MAX_PITCH_FIELD.cpp_type = 6
-
-CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.name = "max_follow_dis"
-CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.full_name = ".ftcfg.cam_options_cfg.max_follow_dis"
-CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.number = 4
-CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.index = 3
-CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.label = 2
-CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.has_default_value = false
-CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.default_value = 0.0
-CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.type = 2
-CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD.cpp_type = 6
-
-CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.name = "min_follow_dis"
-CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.full_name = ".ftcfg.cam_options_cfg.min_follow_dis"
-CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.number = 5
-CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.index = 4
-CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.label = 2
-CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.has_default_value = false
-CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.default_value = 0.0
-CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.type = 2
-CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD.cpp_type = 6
-
-CAM_OPTIONS_CFG_DEF_YAW_FIELD.name = "def_yaw"
-CAM_OPTIONS_CFG_DEF_YAW_FIELD.full_name = ".ftcfg.cam_options_cfg.def_yaw"
-CAM_OPTIONS_CFG_DEF_YAW_FIELD.number = 6
-CAM_OPTIONS_CFG_DEF_YAW_FIELD.index = 5
-CAM_OPTIONS_CFG_DEF_YAW_FIELD.label = 2
-CAM_OPTIONS_CFG_DEF_YAW_FIELD.has_default_value = false
-CAM_OPTIONS_CFG_DEF_YAW_FIELD.default_value = 0.0
-CAM_OPTIONS_CFG_DEF_YAW_FIELD.type = 2
-CAM_OPTIONS_CFG_DEF_YAW_FIELD.cpp_type = 6
-
-CAM_OPTIONS_CFG_DEF_PITCH_FIELD.name = "def_pitch"
-CAM_OPTIONS_CFG_DEF_PITCH_FIELD.full_name = ".ftcfg.cam_options_cfg.def_pitch"
-CAM_OPTIONS_CFG_DEF_PITCH_FIELD.number = 7
-CAM_OPTIONS_CFG_DEF_PITCH_FIELD.index = 6
-CAM_OPTIONS_CFG_DEF_PITCH_FIELD.label = 2
-CAM_OPTIONS_CFG_DEF_PITCH_FIELD.has_default_value = false
-CAM_OPTIONS_CFG_DEF_PITCH_FIELD.default_value = 0.0
-CAM_OPTIONS_CFG_DEF_PITCH_FIELD.type = 2
-CAM_OPTIONS_CFG_DEF_PITCH_FIELD.cpp_type = 6
-
-CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.name = "follow_auto_rot_yaw_speed"
-CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.full_name = ".ftcfg.cam_options_cfg.follow_auto_rot_yaw_speed"
-CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.number = 8
-CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.index = 7
-CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.label = 2
-CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.has_default_value = false
-CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.default_value = 0.0
-CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.type = 2
-CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD.cpp_type = 6
-
-CAM_OPTIONS_CFG_OFFSET_X_FIELD.name = "offset_x"
-CAM_OPTIONS_CFG_OFFSET_X_FIELD.full_name = ".ftcfg.cam_options_cfg.offset_x"
-CAM_OPTIONS_CFG_OFFSET_X_FIELD.number = 9
-CAM_OPTIONS_CFG_OFFSET_X_FIELD.index = 8
-CAM_OPTIONS_CFG_OFFSET_X_FIELD.label = 2
-CAM_OPTIONS_CFG_OFFSET_X_FIELD.has_default_value = false
-CAM_OPTIONS_CFG_OFFSET_X_FIELD.default_value = 0.0
-CAM_OPTIONS_CFG_OFFSET_X_FIELD.type = 2
-CAM_OPTIONS_CFG_OFFSET_X_FIELD.cpp_type = 6
-
-CAM_OPTIONS_CFG_OFFSET_Y_FIELD.name = "offset_y"
-CAM_OPTIONS_CFG_OFFSET_Y_FIELD.full_name = ".ftcfg.cam_options_cfg.offset_y"
-CAM_OPTIONS_CFG_OFFSET_Y_FIELD.number = 10
-CAM_OPTIONS_CFG_OFFSET_Y_FIELD.index = 9
-CAM_OPTIONS_CFG_OFFSET_Y_FIELD.label = 2
-CAM_OPTIONS_CFG_OFFSET_Y_FIELD.has_default_value = false
-CAM_OPTIONS_CFG_OFFSET_Y_FIELD.default_value = 0.0
-CAM_OPTIONS_CFG_OFFSET_Y_FIELD.type = 2
-CAM_OPTIONS_CFG_OFFSET_Y_FIELD.cpp_type = 6
-
-CAM_OPTIONS_CFG_OFFSET_Z_FIELD.name = "offset_z"
-CAM_OPTIONS_CFG_OFFSET_Z_FIELD.full_name = ".ftcfg.cam_options_cfg.offset_z"
-CAM_OPTIONS_CFG_OFFSET_Z_FIELD.number = 11
-CAM_OPTIONS_CFG_OFFSET_Z_FIELD.index = 10
-CAM_OPTIONS_CFG_OFFSET_Z_FIELD.label = 2
-CAM_OPTIONS_CFG_OFFSET_Z_FIELD.has_default_value = false
-CAM_OPTIONS_CFG_OFFSET_Z_FIELD.default_value = 0.0
-CAM_OPTIONS_CFG_OFFSET_Z_FIELD.type = 2
-CAM_OPTIONS_CFG_OFFSET_Z_FIELD.cpp_type = 6
-
-CAM_OPTIONS_CFG_FOV_FIELD.name = "fov"
-CAM_OPTIONS_CFG_FOV_FIELD.full_name = ".ftcfg.cam_options_cfg.fov"
-CAM_OPTIONS_CFG_FOV_FIELD.number = 12
-CAM_OPTIONS_CFG_FOV_FIELD.index = 11
-CAM_OPTIONS_CFG_FOV_FIELD.label = 2
-CAM_OPTIONS_CFG_FOV_FIELD.has_default_value = false
-CAM_OPTIONS_CFG_FOV_FIELD.default_value = 0.0
-CAM_OPTIONS_CFG_FOV_FIELD.type = 2
-CAM_OPTIONS_CFG_FOV_FIELD.cpp_type = 6
-
-CAM_OPTIONS_CFG.name = "cam_options_cfg"
-CAM_OPTIONS_CFG.full_name = ".ftcfg.cam_options_cfg"
-CAM_OPTIONS_CFG.nested_types = {}
-CAM_OPTIONS_CFG.enum_types = {}
-CAM_OPTIONS_CFG.fields = {CAM_OPTIONS_CFG_ID_FIELD, CAM_OPTIONS_CFG_MIN_PITCH_FIELD, CAM_OPTIONS_CFG_MAX_PITCH_FIELD, CAM_OPTIONS_CFG_MAX_FOLLOW_DIS_FIELD, CAM_OPTIONS_CFG_MIN_FOLLOW_DIS_FIELD, CAM_OPTIONS_CFG_DEF_YAW_FIELD, CAM_OPTIONS_CFG_DEF_PITCH_FIELD, CAM_OPTIONS_CFG_FOLLOW_AUTO_ROT_YAW_SPEED_FIELD, CAM_OPTIONS_CFG_OFFSET_X_FIELD, CAM_OPTIONS_CFG_OFFSET_Y_FIELD, CAM_OPTIONS_CFG_OFFSET_Z_FIELD, CAM_OPTIONS_CFG_FOV_FIELD}
-CAM_OPTIONS_CFG.is_extendable = false
-CAM_OPTIONS_CFG.extensions = {}
-CAM_OPTIONS_CFGS_ITEMS_FIELD.name = "items"
-CAM_OPTIONS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.cam_options_cfgs.items"
-CAM_OPTIONS_CFGS_ITEMS_FIELD.number = 1
-CAM_OPTIONS_CFGS_ITEMS_FIELD.index = 0
-CAM_OPTIONS_CFGS_ITEMS_FIELD.label = 3
-CAM_OPTIONS_CFGS_ITEMS_FIELD.has_default_value = false
-CAM_OPTIONS_CFGS_ITEMS_FIELD.default_value = {}
-CAM_OPTIONS_CFGS_ITEMS_FIELD.message_type = CAM_OPTIONS_CFG
-CAM_OPTIONS_CFGS_ITEMS_FIELD.type = 11
-CAM_OPTIONS_CFGS_ITEMS_FIELD.cpp_type = 10
-
-CAM_OPTIONS_CFGS.name = "cam_options_cfgs"
-CAM_OPTIONS_CFGS.full_name = ".ftcfg.cam_options_cfgs"
-CAM_OPTIONS_CFGS.nested_types = {}
-CAM_OPTIONS_CFGS.enum_types = {}
-CAM_OPTIONS_CFGS.fields = {CAM_OPTIONS_CFGS_ITEMS_FIELD}
-CAM_OPTIONS_CFGS.is_extendable = false
-CAM_OPTIONS_CFGS.extensions = {}
-LEVEL_PACKAGE_CFG_ID_FIELD.name = "id"
-LEVEL_PACKAGE_CFG_ID_FIELD.full_name = ".ftcfg.level_package_cfg.id"
-LEVEL_PACKAGE_CFG_ID_FIELD.number = 1
-LEVEL_PACKAGE_CFG_ID_FIELD.index = 0
-LEVEL_PACKAGE_CFG_ID_FIELD.label = 2
-LEVEL_PACKAGE_CFG_ID_FIELD.has_default_value = false
-LEVEL_PACKAGE_CFG_ID_FIELD.default_value = 0
-LEVEL_PACKAGE_CFG_ID_FIELD.type = 5
-LEVEL_PACKAGE_CFG_ID_FIELD.cpp_type = 1
-
-LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.name = "reach_grade"
-LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.full_name = ".ftcfg.level_package_cfg.reach_grade"
-LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.number = 2
-LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.index = 1
-LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.label = 2
-LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.has_default_value = false
-LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.default_value = 0
-LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.type = 5
-LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD.cpp_type = 1
-
-LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.name = "reward_item1"
-LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.full_name = ".ftcfg.level_package_cfg.reward_item1"
-LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.number = 3
-LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.index = 2
-LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.label = 2
-LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.has_default_value = false
-LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.default_value = 0
-LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.type = 5
-LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD.cpp_type = 1
-
-LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.name = "reward_number1"
-LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.full_name = ".ftcfg.level_package_cfg.reward_number1"
-LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.number = 4
-LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.index = 3
-LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.label = 2
-LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.has_default_value = false
-LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.default_value = 0
-LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.type = 5
-LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD.cpp_type = 1
-
-LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.name = "reward_item2"
-LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.full_name = ".ftcfg.level_package_cfg.reward_item2"
-LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.number = 5
-LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.index = 4
-LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.label = 2
-LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.has_default_value = false
-LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.default_value = 0
-LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.type = 5
-LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD.cpp_type = 1
-
-LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.name = "reward_number2"
-LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.full_name = ".ftcfg.level_package_cfg.reward_number2"
-LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.number = 6
-LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.index = 5
-LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.label = 2
-LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.has_default_value = false
-LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.default_value = 0
-LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.type = 5
-LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD.cpp_type = 1
-
-LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.name = "reward_item3"
-LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.full_name = ".ftcfg.level_package_cfg.reward_item3"
-LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.number = 7
-LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.index = 6
-LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.label = 2
-LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.has_default_value = false
-LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.default_value = 0
-LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.type = 5
-LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD.cpp_type = 1
-
-LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.name = "reward_number3"
-LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.full_name = ".ftcfg.level_package_cfg.reward_number3"
-LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.number = 8
-LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.index = 7
-LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.label = 2
-LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.has_default_value = false
-LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.default_value = 0
-LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.type = 5
-LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD.cpp_type = 1
-
-LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.name = "reward_item4"
-LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.full_name = ".ftcfg.level_package_cfg.reward_item4"
-LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.number = 9
-LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.index = 8
-LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.label = 2
-LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.has_default_value = false
-LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.default_value = 0
-LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.type = 5
-LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD.cpp_type = 1
-
-LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.name = "reward_number4"
-LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.full_name = ".ftcfg.level_package_cfg.reward_number4"
-LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.number = 10
-LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.index = 9
-LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.label = 2
-LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.has_default_value = false
-LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.default_value = 0
-LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.type = 5
-LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD.cpp_type = 1
-
-LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.name = "reward_item5"
-LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.full_name = ".ftcfg.level_package_cfg.reward_item5"
-LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.number = 11
-LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.index = 10
-LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.label = 2
-LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.has_default_value = false
-LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.default_value = 0
-LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.type = 5
-LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD.cpp_type = 1
-
-LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.name = "reward_number5"
-LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.full_name = ".ftcfg.level_package_cfg.reward_number5"
-LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.number = 12
-LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.index = 11
-LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.label = 2
-LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.has_default_value = false
-LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.default_value = 0
-LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.type = 5
-LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD.cpp_type = 1
-
-LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.name = "reward_item6"
-LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.full_name = ".ftcfg.level_package_cfg.reward_item6"
-LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.number = 13
-LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.index = 12
-LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.label = 2
-LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.has_default_value = false
-LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.default_value = 0
-LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.type = 5
-LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD.cpp_type = 1
-
-LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.name = "reward_number6"
-LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.full_name = ".ftcfg.level_package_cfg.reward_number6"
-LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.number = 14
-LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.index = 13
-LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.label = 2
-LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.has_default_value = false
-LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.default_value = 0
-LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.type = 5
-LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD.cpp_type = 1
-
-LEVEL_PACKAGE_CFG.name = "level_package_cfg"
-LEVEL_PACKAGE_CFG.full_name = ".ftcfg.level_package_cfg"
-LEVEL_PACKAGE_CFG.nested_types = {}
-LEVEL_PACKAGE_CFG.enum_types = {}
-LEVEL_PACKAGE_CFG.fields = {LEVEL_PACKAGE_CFG_ID_FIELD, LEVEL_PACKAGE_CFG_REACH_GRADE_FIELD, LEVEL_PACKAGE_CFG_REWARD_ITEM1_FIELD, LEVEL_PACKAGE_CFG_REWARD_NUMBER1_FIELD, LEVEL_PACKAGE_CFG_REWARD_ITEM2_FIELD, LEVEL_PACKAGE_CFG_REWARD_NUMBER2_FIELD, LEVEL_PACKAGE_CFG_REWARD_ITEM3_FIELD, LEVEL_PACKAGE_CFG_REWARD_NUMBER3_FIELD, LEVEL_PACKAGE_CFG_REWARD_ITEM4_FIELD, LEVEL_PACKAGE_CFG_REWARD_NUMBER4_FIELD, LEVEL_PACKAGE_CFG_REWARD_ITEM5_FIELD, LEVEL_PACKAGE_CFG_REWARD_NUMBER5_FIELD, LEVEL_PACKAGE_CFG_REWARD_ITEM6_FIELD, LEVEL_PACKAGE_CFG_REWARD_NUMBER6_FIELD}
-LEVEL_PACKAGE_CFG.is_extendable = false
-LEVEL_PACKAGE_CFG.extensions = {}
-LEVEL_PACKAGE_CFGS_ITEMS_FIELD.name = "items"
-LEVEL_PACKAGE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.level_package_cfgs.items"
-LEVEL_PACKAGE_CFGS_ITEMS_FIELD.number = 1
-LEVEL_PACKAGE_CFGS_ITEMS_FIELD.index = 0
-LEVEL_PACKAGE_CFGS_ITEMS_FIELD.label = 3
-LEVEL_PACKAGE_CFGS_ITEMS_FIELD.has_default_value = false
-LEVEL_PACKAGE_CFGS_ITEMS_FIELD.default_value = {}
-LEVEL_PACKAGE_CFGS_ITEMS_FIELD.message_type = LEVEL_PACKAGE_CFG
-LEVEL_PACKAGE_CFGS_ITEMS_FIELD.type = 11
-LEVEL_PACKAGE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-LEVEL_PACKAGE_CFGS.name = "level_package_cfgs"
-LEVEL_PACKAGE_CFGS.full_name = ".ftcfg.level_package_cfgs"
-LEVEL_PACKAGE_CFGS.nested_types = {}
-LEVEL_PACKAGE_CFGS.enum_types = {}
-LEVEL_PACKAGE_CFGS.fields = {LEVEL_PACKAGE_CFGS_ITEMS_FIELD}
-LEVEL_PACKAGE_CFGS.is_extendable = false
-LEVEL_PACKAGE_CFGS.extensions = {}
-BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.name = "id"
-BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.full_name = ".ftcfg.battle_crystal_info_cfg.id"
-BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.number = 1
-BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.index = 0
-BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.label = 2
-BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.has_default_value = false
-BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.default_value = 0
-BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.type = 5
-BATTLE_CRYSTAL_INFO_CFG_ID_FIELD.cpp_type = 1
-
-BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.name = "activity_type"
-BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.full_name = ".ftcfg.battle_crystal_info_cfg.activity_type"
-BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.number = 2
-BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.index = 1
-BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.label = 2
-BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.has_default_value = false
-BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.default_value = nil
-BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.enum_type = config_predefine_pb.EBATTLEACTIVITYTYPE
-BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.type = 14
-BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD.cpp_type = 8
-
-BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.name = "func_type"
-BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.full_name = ".ftcfg.battle_crystal_info_cfg.func_type"
-BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.number = 3
-BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.index = 2
-BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.label = 2
-BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.has_default_value = false
-BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.default_value = nil
-BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
-BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.type = 14
-BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD.cpp_type = 8
-
-BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.name = "start_time"
-BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.full_name = ".ftcfg.battle_crystal_info_cfg.start_time"
-BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.number = 4
-BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.index = 3
-BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.label = 2
-BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.has_default_value = false
-BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.default_value = ""
-BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.type = 9
-BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD.cpp_type = 9
-
-BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.name = "end_time"
-BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.full_name = ".ftcfg.battle_crystal_info_cfg.end_time"
-BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.number = 5
-BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.index = 4
-BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.label = 2
-BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.has_default_value = false
-BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.default_value = ""
-BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.type = 9
-BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD.cpp_type = 9
-
-BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.name = "level_limit"
-BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.full_name = ".ftcfg.battle_crystal_info_cfg.level_limit"
-BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.number = 6
-BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.index = 5
-BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.label = 2
-BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.has_default_value = false
-BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.default_value = 0
-BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.type = 5
-BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD.cpp_type = 1
-
-BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.name = "times"
-BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.full_name = ".ftcfg.battle_crystal_info_cfg.times"
-BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.number = 7
-BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.index = 6
-BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.label = 2
-BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.has_default_value = false
-BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.default_value = 0
-BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.type = 5
-BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD.cpp_type = 1
-
-BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.name = "week_loop"
-BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.full_name = ".ftcfg.battle_crystal_info_cfg.week_loop"
-BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.number = 8
-BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.index = 7
-BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.label = 2
-BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.has_default_value = false
-BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.default_value = 0
-BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.type = 5
-BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD.cpp_type = 1
-
-BATTLE_CRYSTAL_INFO_CFG.name = "battle_crystal_info_cfg"
-BATTLE_CRYSTAL_INFO_CFG.full_name = ".ftcfg.battle_crystal_info_cfg"
-BATTLE_CRYSTAL_INFO_CFG.nested_types = {}
-BATTLE_CRYSTAL_INFO_CFG.enum_types = {}
-BATTLE_CRYSTAL_INFO_CFG.fields = {BATTLE_CRYSTAL_INFO_CFG_ID_FIELD, BATTLE_CRYSTAL_INFO_CFG_ACTIVITY_TYPE_FIELD, BATTLE_CRYSTAL_INFO_CFG_FUNC_TYPE_FIELD, BATTLE_CRYSTAL_INFO_CFG_START_TIME_FIELD, BATTLE_CRYSTAL_INFO_CFG_END_TIME_FIELD, BATTLE_CRYSTAL_INFO_CFG_LEVEL_LIMIT_FIELD, BATTLE_CRYSTAL_INFO_CFG_TIMES_FIELD, BATTLE_CRYSTAL_INFO_CFG_WEEK_LOOP_FIELD}
-BATTLE_CRYSTAL_INFO_CFG.is_extendable = false
-BATTLE_CRYSTAL_INFO_CFG.extensions = {}
-BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.name = "items"
-BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.full_name = ".ftcfg.battle_crystal_info_cfgs.items"
-BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.number = 1
-BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.index = 0
-BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.label = 3
-BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.has_default_value = false
-BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.default_value = {}
-BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.message_type = BATTLE_CRYSTAL_INFO_CFG
-BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.type = 11
-BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD.cpp_type = 10
-
-BATTLE_CRYSTAL_INFO_CFGS.name = "battle_crystal_info_cfgs"
-BATTLE_CRYSTAL_INFO_CFGS.full_name = ".ftcfg.battle_crystal_info_cfgs"
-BATTLE_CRYSTAL_INFO_CFGS.nested_types = {}
-BATTLE_CRYSTAL_INFO_CFGS.enum_types = {}
-BATTLE_CRYSTAL_INFO_CFGS.fields = {BATTLE_CRYSTAL_INFO_CFGS_ITEMS_FIELD}
-BATTLE_CRYSTAL_INFO_CFGS.is_extendable = false
-BATTLE_CRYSTAL_INFO_CFGS.extensions = {}
-BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.name = "id"
-BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.full_name = ".ftcfg.battle_crystal_rooms_cfg.id"
-BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.number = 1
-BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.index = 0
-BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.label = 2
-BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.has_default_value = false
-BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.default_value = 0
-BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.type = 5
-BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD.cpp_type = 1
-
-BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.name = "red_num"
-BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.full_name = ".ftcfg.battle_crystal_rooms_cfg.red_num"
-BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.number = 2
-BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.index = 1
-BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.label = 2
-BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.has_default_value = false
-BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.default_value = 0
-BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.type = 5
-BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD.cpp_type = 1
-
-BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.name = "blue_num"
-BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.full_name = ".ftcfg.battle_crystal_rooms_cfg.blue_num"
-BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.number = 3
-BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.index = 2
-BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.label = 2
-BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.has_default_value = false
-BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.default_value = 0
-BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.type = 5
-BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD.cpp_type = 1
-
-BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.name = "min_level"
-BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.full_name = ".ftcfg.battle_crystal_rooms_cfg.min_level"
-BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.number = 4
-BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.index = 3
-BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.label = 2
-BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.has_default_value = false
-BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.default_value = 0
-BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.type = 5
-BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD.cpp_type = 1
-
-BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.name = "max_level"
-BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.full_name = ".ftcfg.battle_crystal_rooms_cfg.max_level"
-BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.number = 5
-BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.index = 4
-BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.label = 2
-BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.has_default_value = false
-BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.default_value = 0
-BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.type = 5
-BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD.cpp_type = 1
-
-BATTLE_CRYSTAL_ROOMS_CFG.name = "battle_crystal_rooms_cfg"
-BATTLE_CRYSTAL_ROOMS_CFG.full_name = ".ftcfg.battle_crystal_rooms_cfg"
-BATTLE_CRYSTAL_ROOMS_CFG.nested_types = {}
-BATTLE_CRYSTAL_ROOMS_CFG.enum_types = {}
-BATTLE_CRYSTAL_ROOMS_CFG.fields = {BATTLE_CRYSTAL_ROOMS_CFG_ID_FIELD, BATTLE_CRYSTAL_ROOMS_CFG_RED_NUM_FIELD, BATTLE_CRYSTAL_ROOMS_CFG_BLUE_NUM_FIELD, BATTLE_CRYSTAL_ROOMS_CFG_MIN_LEVEL_FIELD, BATTLE_CRYSTAL_ROOMS_CFG_MAX_LEVEL_FIELD}
-BATTLE_CRYSTAL_ROOMS_CFG.is_extendable = false
-BATTLE_CRYSTAL_ROOMS_CFG.extensions = {}
-BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.name = "items"
-BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.battle_crystal_rooms_cfgs.items"
-BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.number = 1
-BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.index = 0
-BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.label = 3
-BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.has_default_value = false
-BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.default_value = {}
-BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.message_type = BATTLE_CRYSTAL_ROOMS_CFG
-BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.type = 11
-BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD.cpp_type = 10
-
-BATTLE_CRYSTAL_ROOMS_CFGS.name = "battle_crystal_rooms_cfgs"
-BATTLE_CRYSTAL_ROOMS_CFGS.full_name = ".ftcfg.battle_crystal_rooms_cfgs"
-BATTLE_CRYSTAL_ROOMS_CFGS.nested_types = {}
-BATTLE_CRYSTAL_ROOMS_CFGS.enum_types = {}
-BATTLE_CRYSTAL_ROOMS_CFGS.fields = {BATTLE_CRYSTAL_ROOMS_CFGS_ITEMS_FIELD}
-BATTLE_CRYSTAL_ROOMS_CFGS.is_extendable = false
-BATTLE_CRYSTAL_ROOMS_CFGS.extensions = {}
-BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.name = "id"
-BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.full_name = ".ftcfg.battle_collect_crystal_cfg.id"
-BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.number = 1
-BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.index = 0
-BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.label = 2
-BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.has_default_value = false
-BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.default_value = 0
-BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.type = 5
-BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD.cpp_type = 1
-
-BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.name = "crystal_num"
-BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.full_name = ".ftcfg.battle_collect_crystal_cfg.crystal_num"
-BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.number = 2
-BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.index = 1
-BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.label = 2
-BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.has_default_value = false
-BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.default_value = 0
-BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.type = 5
-BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD.cpp_type = 1
-
-BATTLE_COLLECT_CRYSTAL_CFG.name = "battle_collect_crystal_cfg"
-BATTLE_COLLECT_CRYSTAL_CFG.full_name = ".ftcfg.battle_collect_crystal_cfg"
-BATTLE_COLLECT_CRYSTAL_CFG.nested_types = {}
-BATTLE_COLLECT_CRYSTAL_CFG.enum_types = {}
-BATTLE_COLLECT_CRYSTAL_CFG.fields = {BATTLE_COLLECT_CRYSTAL_CFG_ID_FIELD, BATTLE_COLLECT_CRYSTAL_CFG_CRYSTAL_NUM_FIELD}
-BATTLE_COLLECT_CRYSTAL_CFG.is_extendable = false
-BATTLE_COLLECT_CRYSTAL_CFG.extensions = {}
-BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.name = "items"
-BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.battle_collect_crystal_cfgs.items"
-BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.number = 1
-BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.index = 0
-BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.label = 3
-BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.has_default_value = false
-BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.default_value = {}
-BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.message_type = BATTLE_COLLECT_CRYSTAL_CFG
-BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.type = 11
-BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD.cpp_type = 10
-
-BATTLE_COLLECT_CRYSTAL_CFGS.name = "battle_collect_crystal_cfgs"
-BATTLE_COLLECT_CRYSTAL_CFGS.full_name = ".ftcfg.battle_collect_crystal_cfgs"
-BATTLE_COLLECT_CRYSTAL_CFGS.nested_types = {}
-BATTLE_COLLECT_CRYSTAL_CFGS.enum_types = {}
-BATTLE_COLLECT_CRYSTAL_CFGS.fields = {BATTLE_COLLECT_CRYSTAL_CFGS_ITEMS_FIELD}
-BATTLE_COLLECT_CRYSTAL_CFGS.is_extendable = false
-BATTLE_COLLECT_CRYSTAL_CFGS.extensions = {}
-ELITE_LEVEL_CFG_LEVEL_ID_FIELD.name = "level_id"
-ELITE_LEVEL_CFG_LEVEL_ID_FIELD.full_name = ".ftcfg.elite_level_cfg.level_id"
-ELITE_LEVEL_CFG_LEVEL_ID_FIELD.number = 1
-ELITE_LEVEL_CFG_LEVEL_ID_FIELD.index = 0
-ELITE_LEVEL_CFG_LEVEL_ID_FIELD.label = 2
-ELITE_LEVEL_CFG_LEVEL_ID_FIELD.has_default_value = false
-ELITE_LEVEL_CFG_LEVEL_ID_FIELD.default_value = 0
-ELITE_LEVEL_CFG_LEVEL_ID_FIELD.type = 5
-ELITE_LEVEL_CFG_LEVEL_ID_FIELD.cpp_type = 1
-
-ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.name = "level_min"
-ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.full_name = ".ftcfg.elite_level_cfg.level_min"
-ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.number = 2
-ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.index = 1
-ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.label = 2
-ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.has_default_value = false
-ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.default_value = 0
-ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.type = 5
-ELITE_LEVEL_CFG_LEVEL_MIN_FIELD.cpp_type = 1
-
-ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.name = "level_max"
-ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.full_name = ".ftcfg.elite_level_cfg.level_max"
-ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.number = 3
-ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.index = 2
-ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.label = 2
-ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.has_default_value = false
-ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.default_value = 0
-ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.type = 5
-ELITE_LEVEL_CFG_LEVEL_MAX_FIELD.cpp_type = 1
-
-ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.name = "fight_power1"
-ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.full_name = ".ftcfg.elite_level_cfg.fight_power1"
-ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.number = 4
-ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.index = 3
-ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.label = 2
-ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.has_default_value = false
-ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.default_value = 0
-ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.type = 5
-ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD.cpp_type = 1
-
-ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.name = "fight_power2"
-ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.full_name = ".ftcfg.elite_level_cfg.fight_power2"
-ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.number = 5
-ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.index = 4
-ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.label = 2
-ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.has_default_value = false
-ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.default_value = 0
-ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.type = 5
-ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD.cpp_type = 1
-
-ELITE_LEVEL_CFG.name = "elite_level_cfg"
-ELITE_LEVEL_CFG.full_name = ".ftcfg.elite_level_cfg"
-ELITE_LEVEL_CFG.nested_types = {}
-ELITE_LEVEL_CFG.enum_types = {}
-ELITE_LEVEL_CFG.fields = {ELITE_LEVEL_CFG_LEVEL_ID_FIELD, ELITE_LEVEL_CFG_LEVEL_MIN_FIELD, ELITE_LEVEL_CFG_LEVEL_MAX_FIELD, ELITE_LEVEL_CFG_FIGHT_POWER1_FIELD, ELITE_LEVEL_CFG_FIGHT_POWER2_FIELD}
-ELITE_LEVEL_CFG.is_extendable = false
-ELITE_LEVEL_CFG.extensions = {}
-ELITE_LEVEL_CFGS_ITEMS_FIELD.name = "items"
-ELITE_LEVEL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.elite_level_cfgs.items"
-ELITE_LEVEL_CFGS_ITEMS_FIELD.number = 1
-ELITE_LEVEL_CFGS_ITEMS_FIELD.index = 0
-ELITE_LEVEL_CFGS_ITEMS_FIELD.label = 3
-ELITE_LEVEL_CFGS_ITEMS_FIELD.has_default_value = false
-ELITE_LEVEL_CFGS_ITEMS_FIELD.default_value = {}
-ELITE_LEVEL_CFGS_ITEMS_FIELD.message_type = ELITE_LEVEL_CFG
-ELITE_LEVEL_CFGS_ITEMS_FIELD.type = 11
-ELITE_LEVEL_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ELITE_LEVEL_CFGS.name = "elite_level_cfgs"
-ELITE_LEVEL_CFGS.full_name = ".ftcfg.elite_level_cfgs"
-ELITE_LEVEL_CFGS.nested_types = {}
-ELITE_LEVEL_CFGS.enum_types = {}
-ELITE_LEVEL_CFGS.fields = {ELITE_LEVEL_CFGS_ITEMS_FIELD}
-ELITE_LEVEL_CFGS.is_extendable = false
-ELITE_LEVEL_CFGS.extensions = {}
-ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.name = "level_id"
-ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.full_name = ".ftcfg.elite_common_info_cfg.level_id"
-ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.number = 1
-ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.index = 0
-ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.label = 2
-ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.has_default_value = false
-ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.default_value = 0
-ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.type = 5
-ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD.cpp_type = 1
-
-ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.name = "game_id"
-ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.full_name = ".ftcfg.elite_common_info_cfg.game_id"
-ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.number = 2
-ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.index = 1
-ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.label = 2
-ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.has_default_value = false
-ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.default_value = 0
-ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.type = 5
-ELITE_COMMON_INFO_CFG_GAME_ID_FIELD.cpp_type = 1
-
-ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.name = "map_id"
-ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.full_name = ".ftcfg.elite_common_info_cfg.map_id"
-ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.number = 3
-ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.index = 2
-ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.label = 2
-ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.has_default_value = false
-ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.default_value = 0
-ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.type = 5
-ELITE_COMMON_INFO_CFG_MAP_ID_FIELD.cpp_type = 1
-
-ELITE_COMMON_INFO_CFG_NODE_FIELD.name = "node"
-ELITE_COMMON_INFO_CFG_NODE_FIELD.full_name = ".ftcfg.elite_common_info_cfg.node"
-ELITE_COMMON_INFO_CFG_NODE_FIELD.number = 4
-ELITE_COMMON_INFO_CFG_NODE_FIELD.index = 3
-ELITE_COMMON_INFO_CFG_NODE_FIELD.label = 2
-ELITE_COMMON_INFO_CFG_NODE_FIELD.has_default_value = false
-ELITE_COMMON_INFO_CFG_NODE_FIELD.default_value = 0
-ELITE_COMMON_INFO_CFG_NODE_FIELD.type = 5
-ELITE_COMMON_INFO_CFG_NODE_FIELD.cpp_type = 1
-
-ELITE_COMMON_INFO_CFG_TIME_FIELD.name = "time"
-ELITE_COMMON_INFO_CFG_TIME_FIELD.full_name = ".ftcfg.elite_common_info_cfg.time"
-ELITE_COMMON_INFO_CFG_TIME_FIELD.number = 5
-ELITE_COMMON_INFO_CFG_TIME_FIELD.index = 4
-ELITE_COMMON_INFO_CFG_TIME_FIELD.label = 3
-ELITE_COMMON_INFO_CFG_TIME_FIELD.has_default_value = false
-ELITE_COMMON_INFO_CFG_TIME_FIELD.default_value = {}
-ELITE_COMMON_INFO_CFG_TIME_FIELD.type = 5
-ELITE_COMMON_INFO_CFG_TIME_FIELD.cpp_type = 1
-
-ELITE_COMMON_INFO_CFG_GRADE_FIELD.name = "grade"
-ELITE_COMMON_INFO_CFG_GRADE_FIELD.full_name = ".ftcfg.elite_common_info_cfg.grade"
-ELITE_COMMON_INFO_CFG_GRADE_FIELD.number = 6
-ELITE_COMMON_INFO_CFG_GRADE_FIELD.index = 5
-ELITE_COMMON_INFO_CFG_GRADE_FIELD.label = 3
-ELITE_COMMON_INFO_CFG_GRADE_FIELD.has_default_value = false
-ELITE_COMMON_INFO_CFG_GRADE_FIELD.default_value = {}
-ELITE_COMMON_INFO_CFG_GRADE_FIELD.type = 5
-ELITE_COMMON_INFO_CFG_GRADE_FIELD.cpp_type = 1
-
-ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.name = "reward_id"
-ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.full_name = ".ftcfg.elite_common_info_cfg.reward_id"
-ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.number = 7
-ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.index = 6
-ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.label = 3
-ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.has_default_value = false
-ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.default_value = {}
-ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.type = 5
-ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD.cpp_type = 1
-
-ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.name = "monster_level"
-ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.full_name = ".ftcfg.elite_common_info_cfg.monster_level"
-ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.number = 8
-ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.index = 7
-ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.label = 2
-ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.has_default_value = false
-ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.default_value = 0
-ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.type = 5
-ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD.cpp_type = 1
-
-ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.name = "checkpoint_time"
-ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.full_name = ".ftcfg.elite_common_info_cfg.checkpoint_time"
-ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.number = 9
-ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.index = 8
-ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.label = 2
-ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.has_default_value = false
-ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.default_value = 0
-ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.type = 5
-ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD.cpp_type = 1
-
-ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.name = "open_time"
-ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.full_name = ".ftcfg.elite_common_info_cfg.open_time"
-ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.number = 10
-ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.index = 9
-ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.label = 2
-ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.has_default_value = false
-ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.default_value = 0
-ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.type = 5
-ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD.cpp_type = 1
-
-ELITE_COMMON_INFO_CFG.name = "elite_common_info_cfg"
-ELITE_COMMON_INFO_CFG.full_name = ".ftcfg.elite_common_info_cfg"
-ELITE_COMMON_INFO_CFG.nested_types = {}
-ELITE_COMMON_INFO_CFG.enum_types = {}
-ELITE_COMMON_INFO_CFG.fields = {ELITE_COMMON_INFO_CFG_LEVEL_ID_FIELD, ELITE_COMMON_INFO_CFG_GAME_ID_FIELD, ELITE_COMMON_INFO_CFG_MAP_ID_FIELD, ELITE_COMMON_INFO_CFG_NODE_FIELD, ELITE_COMMON_INFO_CFG_TIME_FIELD, ELITE_COMMON_INFO_CFG_GRADE_FIELD, ELITE_COMMON_INFO_CFG_REWARD_ID_FIELD, ELITE_COMMON_INFO_CFG_MONSTER_LEVEL_FIELD, ELITE_COMMON_INFO_CFG_CHECKPOINT_TIME_FIELD, ELITE_COMMON_INFO_CFG_OPEN_TIME_FIELD}
-ELITE_COMMON_INFO_CFG.is_extendable = false
-ELITE_COMMON_INFO_CFG.extensions = {}
-ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.name = "items"
-ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.full_name = ".ftcfg.elite_common_info_cfgs.items"
-ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.number = 1
-ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.index = 0
-ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.label = 3
-ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.has_default_value = false
-ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.default_value = {}
-ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.message_type = ELITE_COMMON_INFO_CFG
-ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.type = 11
-ELITE_COMMON_INFO_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ELITE_COMMON_INFO_CFGS.name = "elite_common_info_cfgs"
-ELITE_COMMON_INFO_CFGS.full_name = ".ftcfg.elite_common_info_cfgs"
-ELITE_COMMON_INFO_CFGS.nested_types = {}
-ELITE_COMMON_INFO_CFGS.enum_types = {}
-ELITE_COMMON_INFO_CFGS.fields = {ELITE_COMMON_INFO_CFGS_ITEMS_FIELD}
-ELITE_COMMON_INFO_CFGS.is_extendable = false
-ELITE_COMMON_INFO_CFGS.extensions = {}
-ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.name = "level_id"
-ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.level_id"
-ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.number = 1
-ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.index = 0
-ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.label = 2
-ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.has_default_value = false
-ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.default_value = 0
-ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.type = 5
-ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD.cpp_type = 1
-
-ELITE_HELL_INFO_CFG_GAME_ID_FIELD.name = "game_id"
-ELITE_HELL_INFO_CFG_GAME_ID_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.game_id"
-ELITE_HELL_INFO_CFG_GAME_ID_FIELD.number = 2
-ELITE_HELL_INFO_CFG_GAME_ID_FIELD.index = 1
-ELITE_HELL_INFO_CFG_GAME_ID_FIELD.label = 2
-ELITE_HELL_INFO_CFG_GAME_ID_FIELD.has_default_value = false
-ELITE_HELL_INFO_CFG_GAME_ID_FIELD.default_value = 0
-ELITE_HELL_INFO_CFG_GAME_ID_FIELD.type = 5
-ELITE_HELL_INFO_CFG_GAME_ID_FIELD.cpp_type = 1
-
-ELITE_HELL_INFO_CFG_MAP_ID_FIELD.name = "map_id"
-ELITE_HELL_INFO_CFG_MAP_ID_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.map_id"
-ELITE_HELL_INFO_CFG_MAP_ID_FIELD.number = 3
-ELITE_HELL_INFO_CFG_MAP_ID_FIELD.index = 2
-ELITE_HELL_INFO_CFG_MAP_ID_FIELD.label = 2
-ELITE_HELL_INFO_CFG_MAP_ID_FIELD.has_default_value = false
-ELITE_HELL_INFO_CFG_MAP_ID_FIELD.default_value = 0
-ELITE_HELL_INFO_CFG_MAP_ID_FIELD.type = 5
-ELITE_HELL_INFO_CFG_MAP_ID_FIELD.cpp_type = 1
-
-ELITE_HELL_INFO_CFG_NODE_FIELD.name = "node"
-ELITE_HELL_INFO_CFG_NODE_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.node"
-ELITE_HELL_INFO_CFG_NODE_FIELD.number = 4
-ELITE_HELL_INFO_CFG_NODE_FIELD.index = 3
-ELITE_HELL_INFO_CFG_NODE_FIELD.label = 2
-ELITE_HELL_INFO_CFG_NODE_FIELD.has_default_value = false
-ELITE_HELL_INFO_CFG_NODE_FIELD.default_value = 0
-ELITE_HELL_INFO_CFG_NODE_FIELD.type = 5
-ELITE_HELL_INFO_CFG_NODE_FIELD.cpp_type = 1
-
-ELITE_HELL_INFO_CFG_TIME_FIELD.name = "time"
-ELITE_HELL_INFO_CFG_TIME_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.time"
-ELITE_HELL_INFO_CFG_TIME_FIELD.number = 5
-ELITE_HELL_INFO_CFG_TIME_FIELD.index = 4
-ELITE_HELL_INFO_CFG_TIME_FIELD.label = 3
-ELITE_HELL_INFO_CFG_TIME_FIELD.has_default_value = false
-ELITE_HELL_INFO_CFG_TIME_FIELD.default_value = {}
-ELITE_HELL_INFO_CFG_TIME_FIELD.type = 5
-ELITE_HELL_INFO_CFG_TIME_FIELD.cpp_type = 1
-
-ELITE_HELL_INFO_CFG_GRADE_FIELD.name = "grade"
-ELITE_HELL_INFO_CFG_GRADE_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.grade"
-ELITE_HELL_INFO_CFG_GRADE_FIELD.number = 6
-ELITE_HELL_INFO_CFG_GRADE_FIELD.index = 5
-ELITE_HELL_INFO_CFG_GRADE_FIELD.label = 3
-ELITE_HELL_INFO_CFG_GRADE_FIELD.has_default_value = false
-ELITE_HELL_INFO_CFG_GRADE_FIELD.default_value = {}
-ELITE_HELL_INFO_CFG_GRADE_FIELD.type = 5
-ELITE_HELL_INFO_CFG_GRADE_FIELD.cpp_type = 1
-
-ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.name = "reward_id"
-ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.reward_id"
-ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.number = 7
-ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.index = 6
-ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.label = 3
-ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.has_default_value = false
-ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.default_value = {}
-ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.type = 5
-ELITE_HELL_INFO_CFG_REWARD_ID_FIELD.cpp_type = 1
-
-ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.name = "monster_level"
-ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.monster_level"
-ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.number = 8
-ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.index = 7
-ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.label = 2
-ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.has_default_value = false
-ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.default_value = 0
-ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.type = 5
-ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD.cpp_type = 1
-
-ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.name = "checkpoint_time"
-ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.checkpoint_time"
-ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.number = 9
-ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.index = 8
-ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.label = 2
-ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.has_default_value = false
-ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.default_value = 0
-ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.type = 5
-ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD.cpp_type = 1
-
-ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.name = "open_time"
-ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.full_name = ".ftcfg.elite_hell_info_cfg.open_time"
-ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.number = 10
-ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.index = 9
-ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.label = 2
-ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.has_default_value = false
-ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.default_value = 0
-ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.type = 5
-ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD.cpp_type = 1
-
-ELITE_HELL_INFO_CFG.name = "elite_hell_info_cfg"
-ELITE_HELL_INFO_CFG.full_name = ".ftcfg.elite_hell_info_cfg"
-ELITE_HELL_INFO_CFG.nested_types = {}
-ELITE_HELL_INFO_CFG.enum_types = {}
-ELITE_HELL_INFO_CFG.fields = {ELITE_HELL_INFO_CFG_LEVEL_ID_FIELD, ELITE_HELL_INFO_CFG_GAME_ID_FIELD, ELITE_HELL_INFO_CFG_MAP_ID_FIELD, ELITE_HELL_INFO_CFG_NODE_FIELD, ELITE_HELL_INFO_CFG_TIME_FIELD, ELITE_HELL_INFO_CFG_GRADE_FIELD, ELITE_HELL_INFO_CFG_REWARD_ID_FIELD, ELITE_HELL_INFO_CFG_MONSTER_LEVEL_FIELD, ELITE_HELL_INFO_CFG_CHECKPOINT_TIME_FIELD, ELITE_HELL_INFO_CFG_OPEN_TIME_FIELD}
-ELITE_HELL_INFO_CFG.is_extendable = false
-ELITE_HELL_INFO_CFG.extensions = {}
-ELITE_HELL_INFO_CFGS_ITEMS_FIELD.name = "items"
-ELITE_HELL_INFO_CFGS_ITEMS_FIELD.full_name = ".ftcfg.elite_hell_info_cfgs.items"
-ELITE_HELL_INFO_CFGS_ITEMS_FIELD.number = 1
-ELITE_HELL_INFO_CFGS_ITEMS_FIELD.index = 0
-ELITE_HELL_INFO_CFGS_ITEMS_FIELD.label = 3
-ELITE_HELL_INFO_CFGS_ITEMS_FIELD.has_default_value = false
-ELITE_HELL_INFO_CFGS_ITEMS_FIELD.default_value = {}
-ELITE_HELL_INFO_CFGS_ITEMS_FIELD.message_type = ELITE_HELL_INFO_CFG
-ELITE_HELL_INFO_CFGS_ITEMS_FIELD.type = 11
-ELITE_HELL_INFO_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ELITE_HELL_INFO_CFGS.name = "elite_hell_info_cfgs"
-ELITE_HELL_INFO_CFGS.full_name = ".ftcfg.elite_hell_info_cfgs"
-ELITE_HELL_INFO_CFGS.nested_types = {}
-ELITE_HELL_INFO_CFGS.enum_types = {}
-ELITE_HELL_INFO_CFGS.fields = {ELITE_HELL_INFO_CFGS_ITEMS_FIELD}
-ELITE_HELL_INFO_CFGS.is_extendable = false
-ELITE_HELL_INFO_CFGS.extensions = {}
-ELITE_REWARD_CFG_ID_FIELD.name = "id"
-ELITE_REWARD_CFG_ID_FIELD.full_name = ".ftcfg.elite_reward_cfg.id"
-ELITE_REWARD_CFG_ID_FIELD.number = 1
-ELITE_REWARD_CFG_ID_FIELD.index = 0
-ELITE_REWARD_CFG_ID_FIELD.label = 2
-ELITE_REWARD_CFG_ID_FIELD.has_default_value = false
-ELITE_REWARD_CFG_ID_FIELD.default_value = 0
-ELITE_REWARD_CFG_ID_FIELD.type = 5
-ELITE_REWARD_CFG_ID_FIELD.cpp_type = 1
-
-ELITE_REWARD_CFG_ITEM_ID_FIELD.name = "item_id"
-ELITE_REWARD_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.elite_reward_cfg.item_id"
-ELITE_REWARD_CFG_ITEM_ID_FIELD.number = 2
-ELITE_REWARD_CFG_ITEM_ID_FIELD.index = 1
-ELITE_REWARD_CFG_ITEM_ID_FIELD.label = 3
-ELITE_REWARD_CFG_ITEM_ID_FIELD.has_default_value = false
-ELITE_REWARD_CFG_ITEM_ID_FIELD.default_value = {}
-ELITE_REWARD_CFG_ITEM_ID_FIELD.type = 5
-ELITE_REWARD_CFG_ITEM_ID_FIELD.cpp_type = 1
-
-ELITE_REWARD_CFG_ITEM_COUNT_FIELD.name = "item_count"
-ELITE_REWARD_CFG_ITEM_COUNT_FIELD.full_name = ".ftcfg.elite_reward_cfg.item_count"
-ELITE_REWARD_CFG_ITEM_COUNT_FIELD.number = 3
-ELITE_REWARD_CFG_ITEM_COUNT_FIELD.index = 2
-ELITE_REWARD_CFG_ITEM_COUNT_FIELD.label = 3
-ELITE_REWARD_CFG_ITEM_COUNT_FIELD.has_default_value = false
-ELITE_REWARD_CFG_ITEM_COUNT_FIELD.default_value = {}
-ELITE_REWARD_CFG_ITEM_COUNT_FIELD.type = 5
-ELITE_REWARD_CFG_ITEM_COUNT_FIELD.cpp_type = 1
-
-ELITE_REWARD_CFG.name = "elite_reward_cfg"
-ELITE_REWARD_CFG.full_name = ".ftcfg.elite_reward_cfg"
-ELITE_REWARD_CFG.nested_types = {}
-ELITE_REWARD_CFG.enum_types = {}
-ELITE_REWARD_CFG.fields = {ELITE_REWARD_CFG_ID_FIELD, ELITE_REWARD_CFG_ITEM_ID_FIELD, ELITE_REWARD_CFG_ITEM_COUNT_FIELD}
-ELITE_REWARD_CFG.is_extendable = false
-ELITE_REWARD_CFG.extensions = {}
-ELITE_REWARD_CFGS_ITEMS_FIELD.name = "items"
-ELITE_REWARD_CFGS_ITEMS_FIELD.full_name = ".ftcfg.elite_reward_cfgs.items"
-ELITE_REWARD_CFGS_ITEMS_FIELD.number = 1
-ELITE_REWARD_CFGS_ITEMS_FIELD.index = 0
-ELITE_REWARD_CFGS_ITEMS_FIELD.label = 3
-ELITE_REWARD_CFGS_ITEMS_FIELD.has_default_value = false
-ELITE_REWARD_CFGS_ITEMS_FIELD.default_value = {}
-ELITE_REWARD_CFGS_ITEMS_FIELD.message_type = ELITE_REWARD_CFG
-ELITE_REWARD_CFGS_ITEMS_FIELD.type = 11
-ELITE_REWARD_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ELITE_REWARD_CFGS.name = "elite_reward_cfgs"
-ELITE_REWARD_CFGS.full_name = ".ftcfg.elite_reward_cfgs"
-ELITE_REWARD_CFGS.nested_types = {}
-ELITE_REWARD_CFGS.enum_types = {}
-ELITE_REWARD_CFGS.fields = {ELITE_REWARD_CFGS_ITEMS_FIELD}
-ELITE_REWARD_CFGS.is_extendable = false
-ELITE_REWARD_CFGS.extensions = {}
-SUBSYS_CFG_ID_FIELD.name = "id"
-SUBSYS_CFG_ID_FIELD.full_name = ".ftcfg.subsys_cfg.id"
-SUBSYS_CFG_ID_FIELD.number = 1
-SUBSYS_CFG_ID_FIELD.index = 0
-SUBSYS_CFG_ID_FIELD.label = 2
-SUBSYS_CFG_ID_FIELD.has_default_value = false
-SUBSYS_CFG_ID_FIELD.default_value = 0
-SUBSYS_CFG_ID_FIELD.type = 5
-SUBSYS_CFG_ID_FIELD.cpp_type = 1
-
-SUBSYS_CFG_NAME_FIELD.name = "name"
-SUBSYS_CFG_NAME_FIELD.full_name = ".ftcfg.subsys_cfg.name"
-SUBSYS_CFG_NAME_FIELD.number = 2
-SUBSYS_CFG_NAME_FIELD.index = 1
-SUBSYS_CFG_NAME_FIELD.label = 2
-SUBSYS_CFG_NAME_FIELD.has_default_value = false
-SUBSYS_CFG_NAME_FIELD.default_value = ""
-SUBSYS_CFG_NAME_FIELD.type = 9
-SUBSYS_CFG_NAME_FIELD.cpp_type = 9
-
-SUBSYS_CFG_TITLE_ID_FIELD.name = "title_id"
-SUBSYS_CFG_TITLE_ID_FIELD.full_name = ".ftcfg.subsys_cfg.title_id"
-SUBSYS_CFG_TITLE_ID_FIELD.number = 3
-SUBSYS_CFG_TITLE_ID_FIELD.index = 2
-SUBSYS_CFG_TITLE_ID_FIELD.label = 2
-SUBSYS_CFG_TITLE_ID_FIELD.has_default_value = false
-SUBSYS_CFG_TITLE_ID_FIELD.default_value = 0
-SUBSYS_CFG_TITLE_ID_FIELD.type = 5
-SUBSYS_CFG_TITLE_ID_FIELD.cpp_type = 1
-
-SUBSYS_CFG_DESC_ID_FIELD.name = "desc_id"
-SUBSYS_CFG_DESC_ID_FIELD.full_name = ".ftcfg.subsys_cfg.desc_id"
-SUBSYS_CFG_DESC_ID_FIELD.number = 4
-SUBSYS_CFG_DESC_ID_FIELD.index = 3
-SUBSYS_CFG_DESC_ID_FIELD.label = 2
-SUBSYS_CFG_DESC_ID_FIELD.has_default_value = false
-SUBSYS_CFG_DESC_ID_FIELD.default_value = 0
-SUBSYS_CFG_DESC_ID_FIELD.type = 5
-SUBSYS_CFG_DESC_ID_FIELD.cpp_type = 1
-
-SUBSYS_CFG_UI_STYLE_FIELD.name = "ui_style"
-SUBSYS_CFG_UI_STYLE_FIELD.full_name = ".ftcfg.subsys_cfg.ui_style"
-SUBSYS_CFG_UI_STYLE_FIELD.number = 5
-SUBSYS_CFG_UI_STYLE_FIELD.index = 4
-SUBSYS_CFG_UI_STYLE_FIELD.label = 2
-SUBSYS_CFG_UI_STYLE_FIELD.has_default_value = false
-SUBSYS_CFG_UI_STYLE_FIELD.default_value = 0
-SUBSYS_CFG_UI_STYLE_FIELD.type = 5
-SUBSYS_CFG_UI_STYLE_FIELD.cpp_type = 1
-
-SUBSYS_CFG_NOTES_FIELD.name = "notes"
-SUBSYS_CFG_NOTES_FIELD.full_name = ".ftcfg.subsys_cfg.notes"
-SUBSYS_CFG_NOTES_FIELD.number = 6
-SUBSYS_CFG_NOTES_FIELD.index = 5
-SUBSYS_CFG_NOTES_FIELD.label = 2
-SUBSYS_CFG_NOTES_FIELD.has_default_value = false
-SUBSYS_CFG_NOTES_FIELD.default_value = ""
-SUBSYS_CFG_NOTES_FIELD.type = 9
-SUBSYS_CFG_NOTES_FIELD.cpp_type = 9
-
-SUBSYS_CFG.name = "subsys_cfg"
-SUBSYS_CFG.full_name = ".ftcfg.subsys_cfg"
-SUBSYS_CFG.nested_types = {}
-SUBSYS_CFG.enum_types = {}
-SUBSYS_CFG.fields = {SUBSYS_CFG_ID_FIELD, SUBSYS_CFG_NAME_FIELD, SUBSYS_CFG_TITLE_ID_FIELD, SUBSYS_CFG_DESC_ID_FIELD, SUBSYS_CFG_UI_STYLE_FIELD, SUBSYS_CFG_NOTES_FIELD}
-SUBSYS_CFG.is_extendable = false
-SUBSYS_CFG.extensions = {}
-SUBSYS_CFGS_ITEMS_FIELD.name = "items"
-SUBSYS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.subsys_cfgs.items"
-SUBSYS_CFGS_ITEMS_FIELD.number = 1
-SUBSYS_CFGS_ITEMS_FIELD.index = 0
-SUBSYS_CFGS_ITEMS_FIELD.label = 3
-SUBSYS_CFGS_ITEMS_FIELD.has_default_value = false
-SUBSYS_CFGS_ITEMS_FIELD.default_value = {}
-SUBSYS_CFGS_ITEMS_FIELD.message_type = SUBSYS_CFG
-SUBSYS_CFGS_ITEMS_FIELD.type = 11
-SUBSYS_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SUBSYS_CFGS.name = "subsys_cfgs"
-SUBSYS_CFGS.full_name = ".ftcfg.subsys_cfgs"
-SUBSYS_CFGS.nested_types = {}
-SUBSYS_CFGS.enum_types = {}
-SUBSYS_CFGS.fields = {SUBSYS_CFGS_ITEMS_FIELD}
-SUBSYS_CFGS.is_extendable = false
-SUBSYS_CFGS.extensions = {}
-BAG_ROUTINE_CFG_ID_FIELD.name = "id"
-BAG_ROUTINE_CFG_ID_FIELD.full_name = ".ftcfg.bag_routine_cfg.id"
-BAG_ROUTINE_CFG_ID_FIELD.number = 1
-BAG_ROUTINE_CFG_ID_FIELD.index = 0
-BAG_ROUTINE_CFG_ID_FIELD.label = 2
-BAG_ROUTINE_CFG_ID_FIELD.has_default_value = false
-BAG_ROUTINE_CFG_ID_FIELD.default_value = 0
-BAG_ROUTINE_CFG_ID_FIELD.type = 13
-BAG_ROUTINE_CFG_ID_FIELD.cpp_type = 3
-
-BAG_ROUTINE_CFG_BAG_TYPE_FIELD.name = "bag_type"
-BAG_ROUTINE_CFG_BAG_TYPE_FIELD.full_name = ".ftcfg.bag_routine_cfg.bag_type"
-BAG_ROUTINE_CFG_BAG_TYPE_FIELD.number = 2
-BAG_ROUTINE_CFG_BAG_TYPE_FIELD.index = 1
-BAG_ROUTINE_CFG_BAG_TYPE_FIELD.label = 2
-BAG_ROUTINE_CFG_BAG_TYPE_FIELD.has_default_value = false
-BAG_ROUTINE_CFG_BAG_TYPE_FIELD.default_value = 0
-BAG_ROUTINE_CFG_BAG_TYPE_FIELD.type = 13
-BAG_ROUTINE_CFG_BAG_TYPE_FIELD.cpp_type = 3
-
-BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.name = "bag_initial"
-BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.full_name = ".ftcfg.bag_routine_cfg.bag_initial"
-BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.number = 3
-BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.index = 2
-BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.label = 2
-BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.has_default_value = false
-BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.default_value = 0
-BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.type = 13
-BAG_ROUTINE_CFG_BAG_INITIAL_FIELD.cpp_type = 3
-
-BAG_ROUTINE_CFG_BAG_MAX_FIELD.name = "bag_max"
-BAG_ROUTINE_CFG_BAG_MAX_FIELD.full_name = ".ftcfg.bag_routine_cfg.bag_max"
-BAG_ROUTINE_CFG_BAG_MAX_FIELD.number = 4
-BAG_ROUTINE_CFG_BAG_MAX_FIELD.index = 3
-BAG_ROUTINE_CFG_BAG_MAX_FIELD.label = 2
-BAG_ROUTINE_CFG_BAG_MAX_FIELD.has_default_value = false
-BAG_ROUTINE_CFG_BAG_MAX_FIELD.default_value = 0
-BAG_ROUTINE_CFG_BAG_MAX_FIELD.type = 13
-BAG_ROUTINE_CFG_BAG_MAX_FIELD.cpp_type = 3
-
-BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.name = "bag_openlevel"
-BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.full_name = ".ftcfg.bag_routine_cfg.bag_openlevel"
-BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.number = 5
-BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.index = 4
-BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.label = 2
-BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.has_default_value = false
-BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.default_value = 0
-BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.type = 5
-BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD.cpp_type = 1
-
-BAG_ROUTINE_CFG.name = "bag_routine_cfg"
-BAG_ROUTINE_CFG.full_name = ".ftcfg.bag_routine_cfg"
-BAG_ROUTINE_CFG.nested_types = {}
-BAG_ROUTINE_CFG.enum_types = {}
-BAG_ROUTINE_CFG.fields = {BAG_ROUTINE_CFG_ID_FIELD, BAG_ROUTINE_CFG_BAG_TYPE_FIELD, BAG_ROUTINE_CFG_BAG_INITIAL_FIELD, BAG_ROUTINE_CFG_BAG_MAX_FIELD, BAG_ROUTINE_CFG_BAG_OPENLEVEL_FIELD}
-BAG_ROUTINE_CFG.is_extendable = false
-BAG_ROUTINE_CFG.extensions = {}
-BAG_ROUTINE_CFGS_ITEMS_FIELD.name = "items"
-BAG_ROUTINE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.bag_routine_cfgs.items"
-BAG_ROUTINE_CFGS_ITEMS_FIELD.number = 1
-BAG_ROUTINE_CFGS_ITEMS_FIELD.index = 0
-BAG_ROUTINE_CFGS_ITEMS_FIELD.label = 3
-BAG_ROUTINE_CFGS_ITEMS_FIELD.has_default_value = false
-BAG_ROUTINE_CFGS_ITEMS_FIELD.default_value = {}
-BAG_ROUTINE_CFGS_ITEMS_FIELD.message_type = BAG_ROUTINE_CFG
-BAG_ROUTINE_CFGS_ITEMS_FIELD.type = 11
-BAG_ROUTINE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-BAG_ROUTINE_CFGS.name = "bag_routine_cfgs"
-BAG_ROUTINE_CFGS.full_name = ".ftcfg.bag_routine_cfgs"
-BAG_ROUTINE_CFGS.nested_types = {}
-BAG_ROUTINE_CFGS.enum_types = {}
-BAG_ROUTINE_CFGS.fields = {BAG_ROUTINE_CFGS_ITEMS_FIELD}
-BAG_ROUTINE_CFGS.is_extendable = false
-BAG_ROUTINE_CFGS.extensions = {}
-DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.name = "unlock_count"
-DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.full_name = ".ftcfg.depot_unlock_cfg.unlock_count"
-DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.number = 1
-DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.index = 0
-DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.label = 2
-DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.has_default_value = false
-DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.default_value = 0
-DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.type = 13
-DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD.cpp_type = 3
-
-DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.name = "currency_type"
-DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.full_name = ".ftcfg.depot_unlock_cfg.currency_type"
-DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.number = 2
-DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.index = 1
-DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.label = 2
-DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.has_default_value = false
-DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.default_value = 0
-DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.type = 13
-DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD.cpp_type = 3
-
-DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.name = "currency_count"
-DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.full_name = ".ftcfg.depot_unlock_cfg.currency_count"
-DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.number = 3
-DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.index = 2
-DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.label = 2
-DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.has_default_value = false
-DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.default_value = 0
-DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.type = 5
-DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD.cpp_type = 1
-
-DEPOT_UNLOCK_CFG.name = "depot_unlock_cfg"
-DEPOT_UNLOCK_CFG.full_name = ".ftcfg.depot_unlock_cfg"
-DEPOT_UNLOCK_CFG.nested_types = {}
-DEPOT_UNLOCK_CFG.enum_types = {}
-DEPOT_UNLOCK_CFG.fields = {DEPOT_UNLOCK_CFG_UNLOCK_COUNT_FIELD, DEPOT_UNLOCK_CFG_CURRENCY_TYPE_FIELD, DEPOT_UNLOCK_CFG_CURRENCY_COUNT_FIELD}
-DEPOT_UNLOCK_CFG.is_extendable = false
-DEPOT_UNLOCK_CFG.extensions = {}
-DEPOT_UNLOCK_CFGS_ITEMS_FIELD.name = "items"
-DEPOT_UNLOCK_CFGS_ITEMS_FIELD.full_name = ".ftcfg.depot_unlock_cfgs.items"
-DEPOT_UNLOCK_CFGS_ITEMS_FIELD.number = 1
-DEPOT_UNLOCK_CFGS_ITEMS_FIELD.index = 0
-DEPOT_UNLOCK_CFGS_ITEMS_FIELD.label = 3
-DEPOT_UNLOCK_CFGS_ITEMS_FIELD.has_default_value = false
-DEPOT_UNLOCK_CFGS_ITEMS_FIELD.default_value = {}
-DEPOT_UNLOCK_CFGS_ITEMS_FIELD.message_type = DEPOT_UNLOCK_CFG
-DEPOT_UNLOCK_CFGS_ITEMS_FIELD.type = 11
-DEPOT_UNLOCK_CFGS_ITEMS_FIELD.cpp_type = 10
-
-DEPOT_UNLOCK_CFGS.name = "depot_unlock_cfgs"
-DEPOT_UNLOCK_CFGS.full_name = ".ftcfg.depot_unlock_cfgs"
-DEPOT_UNLOCK_CFGS.nested_types = {}
-DEPOT_UNLOCK_CFGS.enum_types = {}
-DEPOT_UNLOCK_CFGS.fields = {DEPOT_UNLOCK_CFGS_ITEMS_FIELD}
-DEPOT_UNLOCK_CFGS.is_extendable = false
-DEPOT_UNLOCK_CFGS.extensions = {}
-ROLE_PARTS_CFG_ID_FIELD.name = "id"
-ROLE_PARTS_CFG_ID_FIELD.full_name = ".ftcfg.role_parts_cfg.id"
-ROLE_PARTS_CFG_ID_FIELD.number = 1
-ROLE_PARTS_CFG_ID_FIELD.index = 0
-ROLE_PARTS_CFG_ID_FIELD.label = 2
-ROLE_PARTS_CFG_ID_FIELD.has_default_value = false
-ROLE_PARTS_CFG_ID_FIELD.default_value = 0
-ROLE_PARTS_CFG_ID_FIELD.type = 5
-ROLE_PARTS_CFG_ID_FIELD.cpp_type = 1
-
-ROLE_PARTS_CFG_NAME_ID_FIELD.name = "name_id"
-ROLE_PARTS_CFG_NAME_ID_FIELD.full_name = ".ftcfg.role_parts_cfg.name_id"
-ROLE_PARTS_CFG_NAME_ID_FIELD.number = 2
-ROLE_PARTS_CFG_NAME_ID_FIELD.index = 1
-ROLE_PARTS_CFG_NAME_ID_FIELD.label = 2
-ROLE_PARTS_CFG_NAME_ID_FIELD.has_default_value = false
-ROLE_PARTS_CFG_NAME_ID_FIELD.default_value = 0
-ROLE_PARTS_CFG_NAME_ID_FIELD.type = 5
-ROLE_PARTS_CFG_NAME_ID_FIELD.cpp_type = 1
-
-ROLE_PARTS_CFG_SLOT_FIELD.name = "slot"
-ROLE_PARTS_CFG_SLOT_FIELD.full_name = ".ftcfg.role_parts_cfg.slot"
-ROLE_PARTS_CFG_SLOT_FIELD.number = 3
-ROLE_PARTS_CFG_SLOT_FIELD.index = 2
-ROLE_PARTS_CFG_SLOT_FIELD.label = 2
-ROLE_PARTS_CFG_SLOT_FIELD.has_default_value = false
-ROLE_PARTS_CFG_SLOT_FIELD.default_value = 0
-ROLE_PARTS_CFG_SLOT_FIELD.type = 5
-ROLE_PARTS_CFG_SLOT_FIELD.cpp_type = 1
-
-ROLE_PARTS_CFG_RES_ID_FIELD.name = "res_id"
-ROLE_PARTS_CFG_RES_ID_FIELD.full_name = ".ftcfg.role_parts_cfg.res_id"
-ROLE_PARTS_CFG_RES_ID_FIELD.number = 4
-ROLE_PARTS_CFG_RES_ID_FIELD.index = 3
-ROLE_PARTS_CFG_RES_ID_FIELD.label = 2
-ROLE_PARTS_CFG_RES_ID_FIELD.has_default_value = false
-ROLE_PARTS_CFG_RES_ID_FIELD.default_value = 0
-ROLE_PARTS_CFG_RES_ID_FIELD.type = 5
-ROLE_PARTS_CFG_RES_ID_FIELD.cpp_type = 1
-
-ROLE_PARTS_CFG.name = "role_parts_cfg"
-ROLE_PARTS_CFG.full_name = ".ftcfg.role_parts_cfg"
-ROLE_PARTS_CFG.nested_types = {}
-ROLE_PARTS_CFG.enum_types = {}
-ROLE_PARTS_CFG.fields = {ROLE_PARTS_CFG_ID_FIELD, ROLE_PARTS_CFG_NAME_ID_FIELD, ROLE_PARTS_CFG_SLOT_FIELD, ROLE_PARTS_CFG_RES_ID_FIELD}
-ROLE_PARTS_CFG.is_extendable = false
-ROLE_PARTS_CFG.extensions = {}
-ROLE_PARTS_CFGS_ITEMS_FIELD.name = "items"
-ROLE_PARTS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.role_parts_cfgs.items"
-ROLE_PARTS_CFGS_ITEMS_FIELD.number = 1
-ROLE_PARTS_CFGS_ITEMS_FIELD.index = 0
-ROLE_PARTS_CFGS_ITEMS_FIELD.label = 3
-ROLE_PARTS_CFGS_ITEMS_FIELD.has_default_value = false
-ROLE_PARTS_CFGS_ITEMS_FIELD.default_value = {}
-ROLE_PARTS_CFGS_ITEMS_FIELD.message_type = ROLE_PARTS_CFG
-ROLE_PARTS_CFGS_ITEMS_FIELD.type = 11
-ROLE_PARTS_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ROLE_PARTS_CFGS.name = "role_parts_cfgs"
-ROLE_PARTS_CFGS.full_name = ".ftcfg.role_parts_cfgs"
-ROLE_PARTS_CFGS.nested_types = {}
-ROLE_PARTS_CFGS.enum_types = {}
-ROLE_PARTS_CFGS.fields = {ROLE_PARTS_CFGS_ITEMS_FIELD}
-ROLE_PARTS_CFGS.is_extendable = false
-ROLE_PARTS_CFGS.extensions = {}
-SUPPRESS_CFG_SCENE_ID_FIELD.name = "scene_id"
-SUPPRESS_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.suppress_cfg.scene_id"
-SUPPRESS_CFG_SCENE_ID_FIELD.number = 1
-SUPPRESS_CFG_SCENE_ID_FIELD.index = 0
-SUPPRESS_CFG_SCENE_ID_FIELD.label = 2
-SUPPRESS_CFG_SCENE_ID_FIELD.has_default_value = false
-SUPPRESS_CFG_SCENE_ID_FIELD.default_value = 0
-SUPPRESS_CFG_SCENE_ID_FIELD.type = 5
-SUPPRESS_CFG_SCENE_ID_FIELD.cpp_type = 1
-
-SUPPRESS_CFG_FIT_LVL_FIELD.name = "fit_lvl"
-SUPPRESS_CFG_FIT_LVL_FIELD.full_name = ".ftcfg.suppress_cfg.fit_lvl"
-SUPPRESS_CFG_FIT_LVL_FIELD.number = 2
-SUPPRESS_CFG_FIT_LVL_FIELD.index = 1
-SUPPRESS_CFG_FIT_LVL_FIELD.label = 3
-SUPPRESS_CFG_FIT_LVL_FIELD.has_default_value = false
-SUPPRESS_CFG_FIT_LVL_FIELD.default_value = {}
-SUPPRESS_CFG_FIT_LVL_FIELD.type = 5
-SUPPRESS_CFG_FIT_LVL_FIELD.cpp_type = 1
-
-SUPPRESS_CFG_GROUP_COUNT_FIELD.name = "group_count"
-SUPPRESS_CFG_GROUP_COUNT_FIELD.full_name = ".ftcfg.suppress_cfg.group_count"
-SUPPRESS_CFG_GROUP_COUNT_FIELD.number = 3
-SUPPRESS_CFG_GROUP_COUNT_FIELD.index = 2
-SUPPRESS_CFG_GROUP_COUNT_FIELD.label = 3
-SUPPRESS_CFG_GROUP_COUNT_FIELD.has_default_value = false
-SUPPRESS_CFG_GROUP_COUNT_FIELD.default_value = {}
-SUPPRESS_CFG_GROUP_COUNT_FIELD.type = 5
-SUPPRESS_CFG_GROUP_COUNT_FIELD.cpp_type = 1
-
-SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.name = "kill_bos_chest"
-SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.full_name = ".ftcfg.suppress_cfg.kill_bos_chest"
-SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.number = 4
-SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.index = 3
-SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.label = 3
-SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.has_default_value = false
-SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.default_value = {}
-SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.type = 5
-SUPPRESS_CFG_KILL_BOS_CHEST_FIELD.cpp_type = 1
-
-SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.name = "boss_map_signsid"
-SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.full_name = ".ftcfg.suppress_cfg.boss_map_signsid"
-SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.number = 5
-SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.index = 4
-SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.label = 3
-SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.has_default_value = false
-SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.default_value = {}
-SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.type = 5
-SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD.cpp_type = 1
-
-SUPPRESS_CFG.name = "suppress_cfg"
-SUPPRESS_CFG.full_name = ".ftcfg.suppress_cfg"
-SUPPRESS_CFG.nested_types = {}
-SUPPRESS_CFG.enum_types = {}
-SUPPRESS_CFG.fields = {SUPPRESS_CFG_SCENE_ID_FIELD, SUPPRESS_CFG_FIT_LVL_FIELD, SUPPRESS_CFG_GROUP_COUNT_FIELD, SUPPRESS_CFG_KILL_BOS_CHEST_FIELD, SUPPRESS_CFG_BOSS_MAP_SIGNSID_FIELD}
-SUPPRESS_CFG.is_extendable = false
-SUPPRESS_CFG.extensions = {}
-SUPPRESS_CFGS_ITEMS_FIELD.name = "items"
-SUPPRESS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.suppress_cfgs.items"
-SUPPRESS_CFGS_ITEMS_FIELD.number = 1
-SUPPRESS_CFGS_ITEMS_FIELD.index = 0
-SUPPRESS_CFGS_ITEMS_FIELD.label = 3
-SUPPRESS_CFGS_ITEMS_FIELD.has_default_value = false
-SUPPRESS_CFGS_ITEMS_FIELD.default_value = {}
-SUPPRESS_CFGS_ITEMS_FIELD.message_type = SUPPRESS_CFG
-SUPPRESS_CFGS_ITEMS_FIELD.type = 11
-SUPPRESS_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SUPPRESS_CFGS.name = "suppress_cfgs"
-SUPPRESS_CFGS.full_name = ".ftcfg.suppress_cfgs"
-SUPPRESS_CFGS.nested_types = {}
-SUPPRESS_CFGS.enum_types = {}
-SUPPRESS_CFGS.fields = {SUPPRESS_CFGS_ITEMS_FIELD}
-SUPPRESS_CFGS.is_extendable = false
-SUPPRESS_CFGS.extensions = {}
-SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.name = "scene_id"
-SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.suppress_group_cfg.scene_id"
-SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.number = 1
-SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.index = 0
-SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.label = 2
-SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.has_default_value = false
-SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.default_value = 0
-SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.type = 5
-SUPPRESS_GROUP_CFG_SCENE_ID_FIELD.cpp_type = 1
-
-SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.name = "refresh_num"
-SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.full_name = ".ftcfg.suppress_group_cfg.refresh_num"
-SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.number = 2
-SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.index = 1
-SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.label = 2
-SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.has_default_value = false
-SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.default_value = 0
-SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.type = 5
-SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD.cpp_type = 1
-
-SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.name = "monster_map_signsid"
-SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.full_name = ".ftcfg.suppress_group_cfg.monster_map_signsid"
-SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.number = 3
-SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.index = 2
-SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.label = 3
-SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.has_default_value = false
-SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.default_value = {}
-SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.type = 5
-SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD.cpp_type = 1
-
-SUPPRESS_GROUP_CFG.name = "suppress_group_cfg"
-SUPPRESS_GROUP_CFG.full_name = ".ftcfg.suppress_group_cfg"
-SUPPRESS_GROUP_CFG.nested_types = {}
-SUPPRESS_GROUP_CFG.enum_types = {}
-SUPPRESS_GROUP_CFG.fields = {SUPPRESS_GROUP_CFG_SCENE_ID_FIELD, SUPPRESS_GROUP_CFG_REFRESH_NUM_FIELD, SUPPRESS_GROUP_CFG_MONSTER_MAP_SIGNSID_FIELD}
-SUPPRESS_GROUP_CFG.is_extendable = false
-SUPPRESS_GROUP_CFG.extensions = {}
-SUPPRESS_GROUP_CFGS_ITEMS_FIELD.name = "items"
-SUPPRESS_GROUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.suppress_group_cfgs.items"
-SUPPRESS_GROUP_CFGS_ITEMS_FIELD.number = 1
-SUPPRESS_GROUP_CFGS_ITEMS_FIELD.index = 0
-SUPPRESS_GROUP_CFGS_ITEMS_FIELD.label = 3
-SUPPRESS_GROUP_CFGS_ITEMS_FIELD.has_default_value = false
-SUPPRESS_GROUP_CFGS_ITEMS_FIELD.default_value = {}
-SUPPRESS_GROUP_CFGS_ITEMS_FIELD.message_type = SUPPRESS_GROUP_CFG
-SUPPRESS_GROUP_CFGS_ITEMS_FIELD.type = 11
-SUPPRESS_GROUP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SUPPRESS_GROUP_CFGS.name = "suppress_group_cfgs"
-SUPPRESS_GROUP_CFGS.full_name = ".ftcfg.suppress_group_cfgs"
-SUPPRESS_GROUP_CFGS.nested_types = {}
-SUPPRESS_GROUP_CFGS.enum_types = {}
-SUPPRESS_GROUP_CFGS.fields = {SUPPRESS_GROUP_CFGS_ITEMS_FIELD}
-SUPPRESS_GROUP_CFGS.is_extendable = false
-SUPPRESS_GROUP_CFGS.extensions = {}
-UI_CONTRIBUTION_CFG_ID_FIELD.name = "id"
-UI_CONTRIBUTION_CFG_ID_FIELD.full_name = ".ftcfg.ui_contribution_cfg.id"
-UI_CONTRIBUTION_CFG_ID_FIELD.number = 1
-UI_CONTRIBUTION_CFG_ID_FIELD.index = 0
-UI_CONTRIBUTION_CFG_ID_FIELD.label = 2
-UI_CONTRIBUTION_CFG_ID_FIELD.has_default_value = false
-UI_CONTRIBUTION_CFG_ID_FIELD.default_value = 0
-UI_CONTRIBUTION_CFG_ID_FIELD.type = 5
-UI_CONTRIBUTION_CFG_ID_FIELD.cpp_type = 1
-
-UI_CONTRIBUTION_CFG_TITLEID_FIELD.name = "titleid"
-UI_CONTRIBUTION_CFG_TITLEID_FIELD.full_name = ".ftcfg.ui_contribution_cfg.titleid"
-UI_CONTRIBUTION_CFG_TITLEID_FIELD.number = 2
-UI_CONTRIBUTION_CFG_TITLEID_FIELD.index = 1
-UI_CONTRIBUTION_CFG_TITLEID_FIELD.label = 2
-UI_CONTRIBUTION_CFG_TITLEID_FIELD.has_default_value = false
-UI_CONTRIBUTION_CFG_TITLEID_FIELD.default_value = 0
-UI_CONTRIBUTION_CFG_TITLEID_FIELD.type = 5
-UI_CONTRIBUTION_CFG_TITLEID_FIELD.cpp_type = 1
-
-UI_CONTRIBUTION_CFG_TYPE_FIELD.name = "type"
-UI_CONTRIBUTION_CFG_TYPE_FIELD.full_name = ".ftcfg.ui_contribution_cfg.type"
-UI_CONTRIBUTION_CFG_TYPE_FIELD.number = 3
-UI_CONTRIBUTION_CFG_TYPE_FIELD.index = 2
-UI_CONTRIBUTION_CFG_TYPE_FIELD.label = 2
-UI_CONTRIBUTION_CFG_TYPE_FIELD.has_default_value = false
-UI_CONTRIBUTION_CFG_TYPE_FIELD.default_value = 0
-UI_CONTRIBUTION_CFG_TYPE_FIELD.type = 5
-UI_CONTRIBUTION_CFG_TYPE_FIELD.cpp_type = 1
-
-UI_CONTRIBUTION_CFG_IMAGEID_FIELD.name = "imageid"
-UI_CONTRIBUTION_CFG_IMAGEID_FIELD.full_name = ".ftcfg.ui_contribution_cfg.imageid"
-UI_CONTRIBUTION_CFG_IMAGEID_FIELD.number = 4
-UI_CONTRIBUTION_CFG_IMAGEID_FIELD.index = 3
-UI_CONTRIBUTION_CFG_IMAGEID_FIELD.label = 2
-UI_CONTRIBUTION_CFG_IMAGEID_FIELD.has_default_value = false
-UI_CONTRIBUTION_CFG_IMAGEID_FIELD.default_value = 0
-UI_CONTRIBUTION_CFG_IMAGEID_FIELD.type = 5
-UI_CONTRIBUTION_CFG_IMAGEID_FIELD.cpp_type = 1
-
-UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.name = "subtitle_1id"
-UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.full_name = ".ftcfg.ui_contribution_cfg.subtitle_1id"
-UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.number = 5
-UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.index = 4
-UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.label = 2
-UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.has_default_value = false
-UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.default_value = 0
-UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.type = 5
-UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD.cpp_type = 1
-
-UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.name = "subtitle_2id"
-UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.full_name = ".ftcfg.ui_contribution_cfg.subtitle_2id"
-UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.number = 6
-UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.index = 5
-UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.label = 2
-UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.has_default_value = false
-UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.default_value = 0
-UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.type = 5
-UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD.cpp_type = 1
-
-UI_CONTRIBUTION_CFG_ATLASID_FIELD.name = "atlasid"
-UI_CONTRIBUTION_CFG_ATLASID_FIELD.full_name = ".ftcfg.ui_contribution_cfg.atlasid"
-UI_CONTRIBUTION_CFG_ATLASID_FIELD.number = 7
-UI_CONTRIBUTION_CFG_ATLASID_FIELD.index = 6
-UI_CONTRIBUTION_CFG_ATLASID_FIELD.label = 2
-UI_CONTRIBUTION_CFG_ATLASID_FIELD.has_default_value = false
-UI_CONTRIBUTION_CFG_ATLASID_FIELD.default_value = 0
-UI_CONTRIBUTION_CFG_ATLASID_FIELD.type = 5
-UI_CONTRIBUTION_CFG_ATLASID_FIELD.cpp_type = 1
-
-UI_CONTRIBUTION_CFG_ICONNAME_FIELD.name = "iconname"
-UI_CONTRIBUTION_CFG_ICONNAME_FIELD.full_name = ".ftcfg.ui_contribution_cfg.iconname"
-UI_CONTRIBUTION_CFG_ICONNAME_FIELD.number = 8
-UI_CONTRIBUTION_CFG_ICONNAME_FIELD.index = 7
-UI_CONTRIBUTION_CFG_ICONNAME_FIELD.label = 2
-UI_CONTRIBUTION_CFG_ICONNAME_FIELD.has_default_value = false
-UI_CONTRIBUTION_CFG_ICONNAME_FIELD.default_value = ""
-UI_CONTRIBUTION_CFG_ICONNAME_FIELD.type = 9
-UI_CONTRIBUTION_CFG_ICONNAME_FIELD.cpp_type = 9
-
-UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.name = "btntextid"
-UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.full_name = ".ftcfg.ui_contribution_cfg.btntextid"
-UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.number = 9
-UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.index = 8
-UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.label = 2
-UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.has_default_value = false
-UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.default_value = 0
-UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.type = 5
-UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD.cpp_type = 1
-
-UI_CONTRIBUTION_CFG_TIPSID_FIELD.name = "tipsid"
-UI_CONTRIBUTION_CFG_TIPSID_FIELD.full_name = ".ftcfg.ui_contribution_cfg.tipsid"
-UI_CONTRIBUTION_CFG_TIPSID_FIELD.number = 10
-UI_CONTRIBUTION_CFG_TIPSID_FIELD.index = 9
-UI_CONTRIBUTION_CFG_TIPSID_FIELD.label = 2
-UI_CONTRIBUTION_CFG_TIPSID_FIELD.has_default_value = false
-UI_CONTRIBUTION_CFG_TIPSID_FIELD.default_value = 0
-UI_CONTRIBUTION_CFG_TIPSID_FIELD.type = 5
-UI_CONTRIBUTION_CFG_TIPSID_FIELD.cpp_type = 1
-
-UI_CONTRIBUTION_CFG.name = "ui_contribution_cfg"
-UI_CONTRIBUTION_CFG.full_name = ".ftcfg.ui_contribution_cfg"
-UI_CONTRIBUTION_CFG.nested_types = {}
-UI_CONTRIBUTION_CFG.enum_types = {}
-UI_CONTRIBUTION_CFG.fields = {UI_CONTRIBUTION_CFG_ID_FIELD, UI_CONTRIBUTION_CFG_TITLEID_FIELD, UI_CONTRIBUTION_CFG_TYPE_FIELD, UI_CONTRIBUTION_CFG_IMAGEID_FIELD, UI_CONTRIBUTION_CFG_SUBTITLE_1ID_FIELD, UI_CONTRIBUTION_CFG_SUBTITLE_2ID_FIELD, UI_CONTRIBUTION_CFG_ATLASID_FIELD, UI_CONTRIBUTION_CFG_ICONNAME_FIELD, UI_CONTRIBUTION_CFG_BTNTEXTID_FIELD, UI_CONTRIBUTION_CFG_TIPSID_FIELD}
-UI_CONTRIBUTION_CFG.is_extendable = false
-UI_CONTRIBUTION_CFG.extensions = {}
-UI_CONTRIBUTION_CFGS_ITEMS_FIELD.name = "items"
-UI_CONTRIBUTION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.ui_contribution_cfgs.items"
-UI_CONTRIBUTION_CFGS_ITEMS_FIELD.number = 1
-UI_CONTRIBUTION_CFGS_ITEMS_FIELD.index = 0
-UI_CONTRIBUTION_CFGS_ITEMS_FIELD.label = 3
-UI_CONTRIBUTION_CFGS_ITEMS_FIELD.has_default_value = false
-UI_CONTRIBUTION_CFGS_ITEMS_FIELD.default_value = {}
-UI_CONTRIBUTION_CFGS_ITEMS_FIELD.message_type = UI_CONTRIBUTION_CFG
-UI_CONTRIBUTION_CFGS_ITEMS_FIELD.type = 11
-UI_CONTRIBUTION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-UI_CONTRIBUTION_CFGS.name = "ui_contribution_cfgs"
-UI_CONTRIBUTION_CFGS.full_name = ".ftcfg.ui_contribution_cfgs"
-UI_CONTRIBUTION_CFGS.nested_types = {}
-UI_CONTRIBUTION_CFGS.enum_types = {}
-UI_CONTRIBUTION_CFGS.fields = {UI_CONTRIBUTION_CFGS_ITEMS_FIELD}
-UI_CONTRIBUTION_CFGS.is_extendable = false
-UI_CONTRIBUTION_CFGS.extensions = {}
-ACTIVITY_DUNGEON_CFG_ID_FIELD.name = "id"
-ACTIVITY_DUNGEON_CFG_ID_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.id"
-ACTIVITY_DUNGEON_CFG_ID_FIELD.number = 1
-ACTIVITY_DUNGEON_CFG_ID_FIELD.index = 0
-ACTIVITY_DUNGEON_CFG_ID_FIELD.label = 2
-ACTIVITY_DUNGEON_CFG_ID_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_ID_FIELD.default_value = 0
-ACTIVITY_DUNGEON_CFG_ID_FIELD.type = 5
-ACTIVITY_DUNGEON_CFG_ID_FIELD.cpp_type = 1
-
-ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.name = "resouce_name"
-ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.resouce_name"
-ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.number = 2
-ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.index = 1
-ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.label = 2
-ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.default_value = ""
-ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.type = 9
-ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD.cpp_type = 9
-
-ACTIVITY_DUNGEON_CFG_TYPE_FIELD.name = "type"
-ACTIVITY_DUNGEON_CFG_TYPE_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.type"
-ACTIVITY_DUNGEON_CFG_TYPE_FIELD.number = 3
-ACTIVITY_DUNGEON_CFG_TYPE_FIELD.index = 2
-ACTIVITY_DUNGEON_CFG_TYPE_FIELD.label = 2
-ACTIVITY_DUNGEON_CFG_TYPE_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_TYPE_FIELD.default_value = 0
-ACTIVITY_DUNGEON_CFG_TYPE_FIELD.type = 5
-ACTIVITY_DUNGEON_CFG_TYPE_FIELD.cpp_type = 1
-
-ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.name = "level_limit"
-ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.level_limit"
-ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.number = 4
-ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.index = 3
-ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.label = 2
-ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.default_value = 0
-ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.type = 5
-ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD.cpp_type = 1
-
-ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.name = "map_id"
-ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.map_id"
-ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.number = 5
-ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.index = 4
-ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.label = 2
-ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.default_value = 0
-ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.type = 5
-ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD.cpp_type = 1
-
-ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.name = "map_name"
-ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.map_name"
-ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.number = 6
-ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.index = 5
-ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.label = 2
-ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.default_value = ""
-ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.type = 9
-ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD.cpp_type = 9
-
-ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.name = "map_imgid"
-ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.map_imgid"
-ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.number = 7
-ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.index = 6
-ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.label = 2
-ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.default_value = 0
-ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.type = 5
-ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD.cpp_type = 1
-
-ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.name = "recommend_fightvalue"
-ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.recommend_fightvalue"
-ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.number = 8
-ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.index = 7
-ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.label = 2
-ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.default_value = 0
-ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.type = 5
-ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD.cpp_type = 1
-
-ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.name = "low_fightvalue"
-ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.low_fightvalue"
-ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.number = 9
-ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.index = 8
-ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.label = 2
-ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.default_value = 0
-ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.type = 5
-ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD.cpp_type = 1
-
-ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.name = "advanced_item"
-ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.advanced_item"
-ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.number = 10
-ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.index = 9
-ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.label = 2
-ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.default_value = 0
-ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.type = 13
-ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD.cpp_type = 3
-
-ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.name = "normal_item"
-ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.normal_item"
-ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.number = 11
-ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.index = 10
-ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.label = 2
-ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.default_value = 0
-ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.type = 13
-ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD.cpp_type = 3
-
-ACTIVITY_DUNGEON_CFG_TIMES_FIELD.name = "times"
-ACTIVITY_DUNGEON_CFG_TIMES_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.times"
-ACTIVITY_DUNGEON_CFG_TIMES_FIELD.number = 12
-ACTIVITY_DUNGEON_CFG_TIMES_FIELD.index = 11
-ACTIVITY_DUNGEON_CFG_TIMES_FIELD.label = 2
-ACTIVITY_DUNGEON_CFG_TIMES_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_TIMES_FIELD.default_value = 0
-ACTIVITY_DUNGEON_CFG_TIMES_FIELD.type = 5
-ACTIVITY_DUNGEON_CFG_TIMES_FIELD.cpp_type = 1
-
-ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.name = "isonlycaptain"
-ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.isonlycaptain"
-ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.number = 13
-ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.index = 12
-ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.label = 2
-ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.default_value = 0
-ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.type = 5
-ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD.cpp_type = 1
-
-ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.name = "wait_time"
-ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.wait_time"
-ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.number = 14
-ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.index = 13
-ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.label = 2
-ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.default_value = 0
-ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.type = 5
-ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD.cpp_type = 1
-
-ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.name = "alonerewards"
-ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.alonerewards"
-ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.number = 15
-ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.index = 14
-ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.label = 3
-ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.default_value = {}
-ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.type = 13
-ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD.cpp_type = 3
-
-ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.name = "teamrewards"
-ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.teamrewards"
-ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.number = 16
-ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.index = 15
-ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.label = 3
-ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.default_value = {}
-ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.type = 13
-ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD.cpp_type = 3
-
-ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.name = "max_timer"
-ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.max_timer"
-ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.number = 17
-ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.index = 16
-ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.label = 2
-ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.default_value = 0
-ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.type = 5
-ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD.cpp_type = 1
-
-ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.name = "max_wave"
-ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.max_wave"
-ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.number = 18
-ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.index = 17
-ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.label = 2
-ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.default_value = 0
-ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.type = 5
-ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD.cpp_type = 1
-
-ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.name = "money_posx"
-ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.money_posx"
-ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.number = 19
-ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.index = 18
-ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.label = 3
-ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.default_value = {}
-ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.type = 2
-ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD.cpp_type = 6
-
-ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.name = "money_posy"
-ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.money_posy"
-ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.number = 20
-ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.index = 19
-ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.label = 3
-ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.default_value = {}
-ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.type = 2
-ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD.cpp_type = 6
-
-ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.name = "money_posz"
-ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.full_name = ".ftcfg.activity_dungeon_cfg.money_posz"
-ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.number = 21
-ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.index = 20
-ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.label = 3
-ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.default_value = {}
-ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.type = 2
-ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD.cpp_type = 6
-
-ACTIVITY_DUNGEON_CFG.name = "activity_dungeon_cfg"
-ACTIVITY_DUNGEON_CFG.full_name = ".ftcfg.activity_dungeon_cfg"
-ACTIVITY_DUNGEON_CFG.nested_types = {}
-ACTIVITY_DUNGEON_CFG.enum_types = {}
-ACTIVITY_DUNGEON_CFG.fields = {ACTIVITY_DUNGEON_CFG_ID_FIELD, ACTIVITY_DUNGEON_CFG_RESOUCE_NAME_FIELD, ACTIVITY_DUNGEON_CFG_TYPE_FIELD, ACTIVITY_DUNGEON_CFG_LEVEL_LIMIT_FIELD, ACTIVITY_DUNGEON_CFG_MAP_ID_FIELD, ACTIVITY_DUNGEON_CFG_MAP_NAME_FIELD, ACTIVITY_DUNGEON_CFG_MAP_IMGID_FIELD, ACTIVITY_DUNGEON_CFG_RECOMMEND_FIGHTVALUE_FIELD, ACTIVITY_DUNGEON_CFG_LOW_FIGHTVALUE_FIELD, ACTIVITY_DUNGEON_CFG_ADVANCED_ITEM_FIELD, ACTIVITY_DUNGEON_CFG_NORMAL_ITEM_FIELD, ACTIVITY_DUNGEON_CFG_TIMES_FIELD, ACTIVITY_DUNGEON_CFG_ISONLYCAPTAIN_FIELD, ACTIVITY_DUNGEON_CFG_WAIT_TIME_FIELD, ACTIVITY_DUNGEON_CFG_ALONEREWARDS_FIELD, ACTIVITY_DUNGEON_CFG_TEAMREWARDS_FIELD, ACTIVITY_DUNGEON_CFG_MAX_TIMER_FIELD, ACTIVITY_DUNGEON_CFG_MAX_WAVE_FIELD, ACTIVITY_DUNGEON_CFG_MONEY_POSX_FIELD, ACTIVITY_DUNGEON_CFG_MONEY_POSY_FIELD, ACTIVITY_DUNGEON_CFG_MONEY_POSZ_FIELD}
-ACTIVITY_DUNGEON_CFG.is_extendable = false
-ACTIVITY_DUNGEON_CFG.extensions = {}
-ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.name = "items"
-ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.full_name = ".ftcfg.activity_dungeon_cfgs.items"
-ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.number = 1
-ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.index = 0
-ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.label = 3
-ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.has_default_value = false
-ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.default_value = {}
-ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.message_type = ACTIVITY_DUNGEON_CFG
-ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.type = 11
-ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ACTIVITY_DUNGEON_CFGS.name = "activity_dungeon_cfgs"
-ACTIVITY_DUNGEON_CFGS.full_name = ".ftcfg.activity_dungeon_cfgs"
-ACTIVITY_DUNGEON_CFGS.nested_types = {}
-ACTIVITY_DUNGEON_CFGS.enum_types = {}
-ACTIVITY_DUNGEON_CFGS.fields = {ACTIVITY_DUNGEON_CFGS_ITEMS_FIELD}
-ACTIVITY_DUNGEON_CFGS.is_extendable = false
-ACTIVITY_DUNGEON_CFGS.extensions = {}
-RESOURCE_COMPUND_CFG_ID_FIELD.name = "id"
-RESOURCE_COMPUND_CFG_ID_FIELD.full_name = ".ftcfg.resource_compund_cfg.id"
-RESOURCE_COMPUND_CFG_ID_FIELD.number = 1
-RESOURCE_COMPUND_CFG_ID_FIELD.index = 0
-RESOURCE_COMPUND_CFG_ID_FIELD.label = 2
-RESOURCE_COMPUND_CFG_ID_FIELD.has_default_value = false
-RESOURCE_COMPUND_CFG_ID_FIELD.default_value = 0
-RESOURCE_COMPUND_CFG_ID_FIELD.type = 13
-RESOURCE_COMPUND_CFG_ID_FIELD.cpp_type = 3
-
-RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.name = "need_item_num"
-RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.full_name = ".ftcfg.resource_compund_cfg.need_item_num"
-RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.number = 2
-RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.index = 1
-RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.label = 2
-RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.has_default_value = false
-RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.default_value = 0
-RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.type = 5
-RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD.cpp_type = 1
-
-RESOURCE_COMPUND_CFG.name = "resource_compund_cfg"
-RESOURCE_COMPUND_CFG.full_name = ".ftcfg.resource_compund_cfg"
-RESOURCE_COMPUND_CFG.nested_types = {}
-RESOURCE_COMPUND_CFG.enum_types = {}
-RESOURCE_COMPUND_CFG.fields = {RESOURCE_COMPUND_CFG_ID_FIELD, RESOURCE_COMPUND_CFG_NEED_ITEM_NUM_FIELD}
-RESOURCE_COMPUND_CFG.is_extendable = false
-RESOURCE_COMPUND_CFG.extensions = {}
-RESOURCE_COMPUND_CFGS_ITEMS_FIELD.name = "items"
-RESOURCE_COMPUND_CFGS_ITEMS_FIELD.full_name = ".ftcfg.resource_compund_cfgs.items"
-RESOURCE_COMPUND_CFGS_ITEMS_FIELD.number = 1
-RESOURCE_COMPUND_CFGS_ITEMS_FIELD.index = 0
-RESOURCE_COMPUND_CFGS_ITEMS_FIELD.label = 3
-RESOURCE_COMPUND_CFGS_ITEMS_FIELD.has_default_value = false
-RESOURCE_COMPUND_CFGS_ITEMS_FIELD.default_value = {}
-RESOURCE_COMPUND_CFGS_ITEMS_FIELD.message_type = RESOURCE_COMPUND_CFG
-RESOURCE_COMPUND_CFGS_ITEMS_FIELD.type = 11
-RESOURCE_COMPUND_CFGS_ITEMS_FIELD.cpp_type = 10
-
-RESOURCE_COMPUND_CFGS.name = "resource_compund_cfgs"
-RESOURCE_COMPUND_CFGS.full_name = ".ftcfg.resource_compund_cfgs"
-RESOURCE_COMPUND_CFGS.nested_types = {}
-RESOURCE_COMPUND_CFGS.enum_types = {}
-RESOURCE_COMPUND_CFGS.fields = {RESOURCE_COMPUND_CFGS_ITEMS_FIELD}
-RESOURCE_COMPUND_CFGS.is_extendable = false
-RESOURCE_COMPUND_CFGS.extensions = {}
-ROUTE_MARK_CFG_ID_FIELD.name = "id"
-ROUTE_MARK_CFG_ID_FIELD.full_name = ".ftcfg.route_mark_cfg.id"
-ROUTE_MARK_CFG_ID_FIELD.number = 1
-ROUTE_MARK_CFG_ID_FIELD.index = 0
-ROUTE_MARK_CFG_ID_FIELD.label = 2
-ROUTE_MARK_CFG_ID_FIELD.has_default_value = false
-ROUTE_MARK_CFG_ID_FIELD.default_value = 0
-ROUTE_MARK_CFG_ID_FIELD.type = 5
-ROUTE_MARK_CFG_ID_FIELD.cpp_type = 1
-
-ROUTE_MARK_CFG_MODEL_ID_FIELD.name = "model_id"
-ROUTE_MARK_CFG_MODEL_ID_FIELD.full_name = ".ftcfg.route_mark_cfg.model_id"
-ROUTE_MARK_CFG_MODEL_ID_FIELD.number = 2
-ROUTE_MARK_CFG_MODEL_ID_FIELD.index = 1
-ROUTE_MARK_CFG_MODEL_ID_FIELD.label = 2
-ROUTE_MARK_CFG_MODEL_ID_FIELD.has_default_value = false
-ROUTE_MARK_CFG_MODEL_ID_FIELD.default_value = 0
-ROUTE_MARK_CFG_MODEL_ID_FIELD.type = 5
-ROUTE_MARK_CFG_MODEL_ID_FIELD.cpp_type = 1
-
-ROUTE_MARK_CFG_SCENE_ID_FIELD.name = "scene_id"
-ROUTE_MARK_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.route_mark_cfg.scene_id"
-ROUTE_MARK_CFG_SCENE_ID_FIELD.number = 3
-ROUTE_MARK_CFG_SCENE_ID_FIELD.index = 2
-ROUTE_MARK_CFG_SCENE_ID_FIELD.label = 2
-ROUTE_MARK_CFG_SCENE_ID_FIELD.has_default_value = false
-ROUTE_MARK_CFG_SCENE_ID_FIELD.default_value = 0
-ROUTE_MARK_CFG_SCENE_ID_FIELD.type = 5
-ROUTE_MARK_CFG_SCENE_ID_FIELD.cpp_type = 1
-
-ROUTE_MARK_CFG_POS_X_FIELD.name = "pos_x"
-ROUTE_MARK_CFG_POS_X_FIELD.full_name = ".ftcfg.route_mark_cfg.pos_x"
-ROUTE_MARK_CFG_POS_X_FIELD.number = 4
-ROUTE_MARK_CFG_POS_X_FIELD.index = 3
-ROUTE_MARK_CFG_POS_X_FIELD.label = 2
-ROUTE_MARK_CFG_POS_X_FIELD.has_default_value = false
-ROUTE_MARK_CFG_POS_X_FIELD.default_value = 0
-ROUTE_MARK_CFG_POS_X_FIELD.type = 5
-ROUTE_MARK_CFG_POS_X_FIELD.cpp_type = 1
-
-ROUTE_MARK_CFG_POS_Y_FIELD.name = "pos_y"
-ROUTE_MARK_CFG_POS_Y_FIELD.full_name = ".ftcfg.route_mark_cfg.pos_y"
-ROUTE_MARK_CFG_POS_Y_FIELD.number = 5
-ROUTE_MARK_CFG_POS_Y_FIELD.index = 4
-ROUTE_MARK_CFG_POS_Y_FIELD.label = 2
-ROUTE_MARK_CFG_POS_Y_FIELD.has_default_value = false
-ROUTE_MARK_CFG_POS_Y_FIELD.default_value = 0
-ROUTE_MARK_CFG_POS_Y_FIELD.type = 5
-ROUTE_MARK_CFG_POS_Y_FIELD.cpp_type = 1
-
-ROUTE_MARK_CFG_POS_Z_FIELD.name = "pos_z"
-ROUTE_MARK_CFG_POS_Z_FIELD.full_name = ".ftcfg.route_mark_cfg.pos_z"
-ROUTE_MARK_CFG_POS_Z_FIELD.number = 6
-ROUTE_MARK_CFG_POS_Z_FIELD.index = 5
-ROUTE_MARK_CFG_POS_Z_FIELD.label = 2
-ROUTE_MARK_CFG_POS_Z_FIELD.has_default_value = false
-ROUTE_MARK_CFG_POS_Z_FIELD.default_value = 0
-ROUTE_MARK_CFG_POS_Z_FIELD.type = 5
-ROUTE_MARK_CFG_POS_Z_FIELD.cpp_type = 1
-
-ROUTE_MARK_CFG.name = "route_mark_cfg"
-ROUTE_MARK_CFG.full_name = ".ftcfg.route_mark_cfg"
-ROUTE_MARK_CFG.nested_types = {}
-ROUTE_MARK_CFG.enum_types = {}
-ROUTE_MARK_CFG.fields = {ROUTE_MARK_CFG_ID_FIELD, ROUTE_MARK_CFG_MODEL_ID_FIELD, ROUTE_MARK_CFG_SCENE_ID_FIELD, ROUTE_MARK_CFG_POS_X_FIELD, ROUTE_MARK_CFG_POS_Y_FIELD, ROUTE_MARK_CFG_POS_Z_FIELD}
-ROUTE_MARK_CFG.is_extendable = false
-ROUTE_MARK_CFG.extensions = {}
-ROUTE_MARK_CFGS_ITEMS_FIELD.name = "items"
-ROUTE_MARK_CFGS_ITEMS_FIELD.full_name = ".ftcfg.route_mark_cfgs.items"
-ROUTE_MARK_CFGS_ITEMS_FIELD.number = 1
-ROUTE_MARK_CFGS_ITEMS_FIELD.index = 0
-ROUTE_MARK_CFGS_ITEMS_FIELD.label = 3
-ROUTE_MARK_CFGS_ITEMS_FIELD.has_default_value = false
-ROUTE_MARK_CFGS_ITEMS_FIELD.default_value = {}
-ROUTE_MARK_CFGS_ITEMS_FIELD.message_type = ROUTE_MARK_CFG
-ROUTE_MARK_CFGS_ITEMS_FIELD.type = 11
-ROUTE_MARK_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ROUTE_MARK_CFGS.name = "route_mark_cfgs"
-ROUTE_MARK_CFGS.full_name = ".ftcfg.route_mark_cfgs"
-ROUTE_MARK_CFGS.nested_types = {}
-ROUTE_MARK_CFGS.enum_types = {}
-ROUTE_MARK_CFGS.fields = {ROUTE_MARK_CFGS_ITEMS_FIELD}
-ROUTE_MARK_CFGS.is_extendable = false
-ROUTE_MARK_CFGS.extensions = {}
-JUMP_CFG_ID_FIELD.name = "id"
-JUMP_CFG_ID_FIELD.full_name = ".ftcfg.jump_cfg.id"
-JUMP_CFG_ID_FIELD.number = 1
-JUMP_CFG_ID_FIELD.index = 0
-JUMP_CFG_ID_FIELD.label = 2
-JUMP_CFG_ID_FIELD.has_default_value = false
-JUMP_CFG_ID_FIELD.default_value = 0
-JUMP_CFG_ID_FIELD.type = 5
-JUMP_CFG_ID_FIELD.cpp_type = 1
-
-JUMP_CFG_WAY_POINTS_FIELD.name = "way_points"
-JUMP_CFG_WAY_POINTS_FIELD.full_name = ".ftcfg.jump_cfg.way_points"
-JUMP_CFG_WAY_POINTS_FIELD.number = 2
-JUMP_CFG_WAY_POINTS_FIELD.index = 1
-JUMP_CFG_WAY_POINTS_FIELD.label = 3
-JUMP_CFG_WAY_POINTS_FIELD.has_default_value = false
-JUMP_CFG_WAY_POINTS_FIELD.default_value = {}
-JUMP_CFG_WAY_POINTS_FIELD.type = 2
-JUMP_CFG_WAY_POINTS_FIELD.cpp_type = 6
-
-JUMP_CFG_JUMP_ACTION_ID_FIELD.name = "jump_action_id"
-JUMP_CFG_JUMP_ACTION_ID_FIELD.full_name = ".ftcfg.jump_cfg.jump_action_id"
-JUMP_CFG_JUMP_ACTION_ID_FIELD.number = 3
-JUMP_CFG_JUMP_ACTION_ID_FIELD.index = 2
-JUMP_CFG_JUMP_ACTION_ID_FIELD.label = 3
-JUMP_CFG_JUMP_ACTION_ID_FIELD.has_default_value = false
-JUMP_CFG_JUMP_ACTION_ID_FIELD.default_value = {}
-JUMP_CFG_JUMP_ACTION_ID_FIELD.type = 5
-JUMP_CFG_JUMP_ACTION_ID_FIELD.cpp_type = 1
-
-JUMP_CFG.name = "jump_cfg"
-JUMP_CFG.full_name = ".ftcfg.jump_cfg"
-JUMP_CFG.nested_types = {}
-JUMP_CFG.enum_types = {}
-JUMP_CFG.fields = {JUMP_CFG_ID_FIELD, JUMP_CFG_WAY_POINTS_FIELD, JUMP_CFG_JUMP_ACTION_ID_FIELD}
-JUMP_CFG.is_extendable = false
-JUMP_CFG.extensions = {}
-JUMP_CFGS_ITEMS_FIELD.name = "items"
-JUMP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.jump_cfgs.items"
-JUMP_CFGS_ITEMS_FIELD.number = 1
-JUMP_CFGS_ITEMS_FIELD.index = 0
-JUMP_CFGS_ITEMS_FIELD.label = 3
-JUMP_CFGS_ITEMS_FIELD.has_default_value = false
-JUMP_CFGS_ITEMS_FIELD.default_value = {}
-JUMP_CFGS_ITEMS_FIELD.message_type = JUMP_CFG
-JUMP_CFGS_ITEMS_FIELD.type = 11
-JUMP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-JUMP_CFGS.name = "jump_cfgs"
-JUMP_CFGS.full_name = ".ftcfg.jump_cfgs"
-JUMP_CFGS.nested_types = {}
-JUMP_CFGS.enum_types = {}
-JUMP_CFGS.fields = {JUMP_CFGS_ITEMS_FIELD}
-JUMP_CFGS.is_extendable = false
-JUMP_CFGS.extensions = {}
-JUMP_ACTION_CFG_ID_FIELD.name = "id"
-JUMP_ACTION_CFG_ID_FIELD.full_name = ".ftcfg.jump_action_cfg.id"
-JUMP_ACTION_CFG_ID_FIELD.number = 1
-JUMP_ACTION_CFG_ID_FIELD.index = 0
-JUMP_ACTION_CFG_ID_FIELD.label = 2
-JUMP_ACTION_CFG_ID_FIELD.has_default_value = false
-JUMP_ACTION_CFG_ID_FIELD.default_value = 0
-JUMP_ACTION_CFG_ID_FIELD.type = 5
-JUMP_ACTION_CFG_ID_FIELD.cpp_type = 1
-
-JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.name = "animation_name"
-JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.full_name = ".ftcfg.jump_action_cfg.animation_name"
-JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.number = 2
-JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.index = 1
-JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.label = 2
-JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.has_default_value = false
-JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.default_value = ""
-JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.type = 9
-JUMP_ACTION_CFG_ANIMATION_NAME_FIELD.cpp_type = 9
-
-JUMP_ACTION_CFG_SPLITES_FIELD.name = "splites"
-JUMP_ACTION_CFG_SPLITES_FIELD.full_name = ".ftcfg.jump_action_cfg.splites"
-JUMP_ACTION_CFG_SPLITES_FIELD.number = 3
-JUMP_ACTION_CFG_SPLITES_FIELD.index = 2
-JUMP_ACTION_CFG_SPLITES_FIELD.label = 3
-JUMP_ACTION_CFG_SPLITES_FIELD.has_default_value = false
-JUMP_ACTION_CFG_SPLITES_FIELD.default_value = {}
-JUMP_ACTION_CFG_SPLITES_FIELD.type = 2
-JUMP_ACTION_CFG_SPLITES_FIELD.cpp_type = 6
-
-JUMP_ACTION_CFG_DURATION_FIELD.name = "duration"
-JUMP_ACTION_CFG_DURATION_FIELD.full_name = ".ftcfg.jump_action_cfg.duration"
-JUMP_ACTION_CFG_DURATION_FIELD.number = 4
-JUMP_ACTION_CFG_DURATION_FIELD.index = 3
-JUMP_ACTION_CFG_DURATION_FIELD.label = 2
-JUMP_ACTION_CFG_DURATION_FIELD.has_default_value = false
-JUMP_ACTION_CFG_DURATION_FIELD.default_value = 0.0
-JUMP_ACTION_CFG_DURATION_FIELD.type = 2
-JUMP_ACTION_CFG_DURATION_FIELD.cpp_type = 6
-
-JUMP_ACTION_CFG.name = "jump_action_cfg"
-JUMP_ACTION_CFG.full_name = ".ftcfg.jump_action_cfg"
-JUMP_ACTION_CFG.nested_types = {}
-JUMP_ACTION_CFG.enum_types = {}
-JUMP_ACTION_CFG.fields = {JUMP_ACTION_CFG_ID_FIELD, JUMP_ACTION_CFG_ANIMATION_NAME_FIELD, JUMP_ACTION_CFG_SPLITES_FIELD, JUMP_ACTION_CFG_DURATION_FIELD}
-JUMP_ACTION_CFG.is_extendable = false
-JUMP_ACTION_CFG.extensions = {}
-JUMP_ACTION_CFGS_ITEMS_FIELD.name = "items"
-JUMP_ACTION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.jump_action_cfgs.items"
-JUMP_ACTION_CFGS_ITEMS_FIELD.number = 1
-JUMP_ACTION_CFGS_ITEMS_FIELD.index = 0
-JUMP_ACTION_CFGS_ITEMS_FIELD.label = 3
-JUMP_ACTION_CFGS_ITEMS_FIELD.has_default_value = false
-JUMP_ACTION_CFGS_ITEMS_FIELD.default_value = {}
-JUMP_ACTION_CFGS_ITEMS_FIELD.message_type = JUMP_ACTION_CFG
-JUMP_ACTION_CFGS_ITEMS_FIELD.type = 11
-JUMP_ACTION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-JUMP_ACTION_CFGS.name = "jump_action_cfgs"
-JUMP_ACTION_CFGS.full_name = ".ftcfg.jump_action_cfgs"
-JUMP_ACTION_CFGS.nested_types = {}
-JUMP_ACTION_CFGS.enum_types = {}
-JUMP_ACTION_CFGS.fields = {JUMP_ACTION_CFGS_ITEMS_FIELD}
-JUMP_ACTION_CFGS.is_extendable = false
-JUMP_ACTION_CFGS.extensions = {}
-MAGIC_ATT_CFG_ID_FIELD.name = "id"
-MAGIC_ATT_CFG_ID_FIELD.full_name = ".ftcfg.magic_att_cfg.id"
-MAGIC_ATT_CFG_ID_FIELD.number = 1
-MAGIC_ATT_CFG_ID_FIELD.index = 0
-MAGIC_ATT_CFG_ID_FIELD.label = 2
-MAGIC_ATT_CFG_ID_FIELD.has_default_value = false
-MAGIC_ATT_CFG_ID_FIELD.default_value = 0
-MAGIC_ATT_CFG_ID_FIELD.type = 5
-MAGIC_ATT_CFG_ID_FIELD.cpp_type = 1
-
-MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.name = "magic_type"
-MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.full_name = ".ftcfg.magic_att_cfg.magic_type"
-MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.number = 2
-MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.index = 1
-MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.label = 2
-MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.has_default_value = false
-MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.default_value = 0
-MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.type = 5
-MAGIC_ATT_CFG_MAGIC_TYPE_FIELD.cpp_type = 1
-
-MAGIC_ATT_CFG_RANGE_FIELD.name = "range"
-MAGIC_ATT_CFG_RANGE_FIELD.full_name = ".ftcfg.magic_att_cfg.range"
-MAGIC_ATT_CFG_RANGE_FIELD.number = 3
-MAGIC_ATT_CFG_RANGE_FIELD.index = 2
-MAGIC_ATT_CFG_RANGE_FIELD.label = 2
-MAGIC_ATT_CFG_RANGE_FIELD.has_default_value = false
-MAGIC_ATT_CFG_RANGE_FIELD.default_value = 0
-MAGIC_ATT_CFG_RANGE_FIELD.type = 5
-MAGIC_ATT_CFG_RANGE_FIELD.cpp_type = 1
-
-MAGIC_ATT_CFG_PROP_TYPE_FIELD.name = "prop_type"
-MAGIC_ATT_CFG_PROP_TYPE_FIELD.full_name = ".ftcfg.magic_att_cfg.prop_type"
-MAGIC_ATT_CFG_PROP_TYPE_FIELD.number = 4
-MAGIC_ATT_CFG_PROP_TYPE_FIELD.index = 3
-MAGIC_ATT_CFG_PROP_TYPE_FIELD.label = 3
-MAGIC_ATT_CFG_PROP_TYPE_FIELD.has_default_value = false
-MAGIC_ATT_CFG_PROP_TYPE_FIELD.default_value = {}
-MAGIC_ATT_CFG_PROP_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPOPTYPE
-MAGIC_ATT_CFG_PROP_TYPE_FIELD.type = 14
-MAGIC_ATT_CFG_PROP_TYPE_FIELD.cpp_type = 8
-
-MAGIC_ATT_CFG_ATT_TYPE_FIELD.name = "att_type"
-MAGIC_ATT_CFG_ATT_TYPE_FIELD.full_name = ".ftcfg.magic_att_cfg.att_type"
-MAGIC_ATT_CFG_ATT_TYPE_FIELD.number = 5
-MAGIC_ATT_CFG_ATT_TYPE_FIELD.index = 4
-MAGIC_ATT_CFG_ATT_TYPE_FIELD.label = 3
-MAGIC_ATT_CFG_ATT_TYPE_FIELD.has_default_value = false
-MAGIC_ATT_CFG_ATT_TYPE_FIELD.default_value = {}
-MAGIC_ATT_CFG_ATT_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
-MAGIC_ATT_CFG_ATT_TYPE_FIELD.type = 14
-MAGIC_ATT_CFG_ATT_TYPE_FIELD.cpp_type = 8
-
-MAGIC_ATT_CFG_ATT_VALUE_FIELD.name = "att_value"
-MAGIC_ATT_CFG_ATT_VALUE_FIELD.full_name = ".ftcfg.magic_att_cfg.att_value"
-MAGIC_ATT_CFG_ATT_VALUE_FIELD.number = 6
-MAGIC_ATT_CFG_ATT_VALUE_FIELD.index = 5
-MAGIC_ATT_CFG_ATT_VALUE_FIELD.label = 3
-MAGIC_ATT_CFG_ATT_VALUE_FIELD.has_default_value = false
-MAGIC_ATT_CFG_ATT_VALUE_FIELD.default_value = {}
-MAGIC_ATT_CFG_ATT_VALUE_FIELD.type = 2
-MAGIC_ATT_CFG_ATT_VALUE_FIELD.cpp_type = 6
-
-MAGIC_ATT_CFG_NAME_FIELD.name = "name"
-MAGIC_ATT_CFG_NAME_FIELD.full_name = ".ftcfg.magic_att_cfg.name"
-MAGIC_ATT_CFG_NAME_FIELD.number = 7
-MAGIC_ATT_CFG_NAME_FIELD.index = 6
-MAGIC_ATT_CFG_NAME_FIELD.label = 2
-MAGIC_ATT_CFG_NAME_FIELD.has_default_value = false
-MAGIC_ATT_CFG_NAME_FIELD.default_value = ""
-MAGIC_ATT_CFG_NAME_FIELD.type = 9
-MAGIC_ATT_CFG_NAME_FIELD.cpp_type = 9
-
-MAGIC_ATT_CFG_DESC_FIELD.name = "desc"
-MAGIC_ATT_CFG_DESC_FIELD.full_name = ".ftcfg.magic_att_cfg.desc"
-MAGIC_ATT_CFG_DESC_FIELD.number = 8
-MAGIC_ATT_CFG_DESC_FIELD.index = 7
-MAGIC_ATT_CFG_DESC_FIELD.label = 2
-MAGIC_ATT_CFG_DESC_FIELD.has_default_value = false
-MAGIC_ATT_CFG_DESC_FIELD.default_value = ""
-MAGIC_ATT_CFG_DESC_FIELD.type = 9
-MAGIC_ATT_CFG_DESC_FIELD.cpp_type = 9
-
-MAGIC_ATT_CFG_ICON_FIELD.name = "icon"
-MAGIC_ATT_CFG_ICON_FIELD.full_name = ".ftcfg.magic_att_cfg.icon"
-MAGIC_ATT_CFG_ICON_FIELD.number = 9
-MAGIC_ATT_CFG_ICON_FIELD.index = 8
-MAGIC_ATT_CFG_ICON_FIELD.label = 2
-MAGIC_ATT_CFG_ICON_FIELD.has_default_value = false
-MAGIC_ATT_CFG_ICON_FIELD.default_value = 0
-MAGIC_ATT_CFG_ICON_FIELD.type = 5
-MAGIC_ATT_CFG_ICON_FIELD.cpp_type = 1
-
-MAGIC_ATT_CFG.name = "magic_att_cfg"
-MAGIC_ATT_CFG.full_name = ".ftcfg.magic_att_cfg"
-MAGIC_ATT_CFG.nested_types = {}
-MAGIC_ATT_CFG.enum_types = {}
-MAGIC_ATT_CFG.fields = {MAGIC_ATT_CFG_ID_FIELD, MAGIC_ATT_CFG_MAGIC_TYPE_FIELD, MAGIC_ATT_CFG_RANGE_FIELD, MAGIC_ATT_CFG_PROP_TYPE_FIELD, MAGIC_ATT_CFG_ATT_TYPE_FIELD, MAGIC_ATT_CFG_ATT_VALUE_FIELD, MAGIC_ATT_CFG_NAME_FIELD, MAGIC_ATT_CFG_DESC_FIELD, MAGIC_ATT_CFG_ICON_FIELD}
-MAGIC_ATT_CFG.is_extendable = false
-MAGIC_ATT_CFG.extensions = {}
-MAGIC_ATT_CFGS_ITEMS_FIELD.name = "items"
-MAGIC_ATT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_att_cfgs.items"
-MAGIC_ATT_CFGS_ITEMS_FIELD.number = 1
-MAGIC_ATT_CFGS_ITEMS_FIELD.index = 0
-MAGIC_ATT_CFGS_ITEMS_FIELD.label = 3
-MAGIC_ATT_CFGS_ITEMS_FIELD.has_default_value = false
-MAGIC_ATT_CFGS_ITEMS_FIELD.default_value = {}
-MAGIC_ATT_CFGS_ITEMS_FIELD.message_type = MAGIC_ATT_CFG
-MAGIC_ATT_CFGS_ITEMS_FIELD.type = 11
-MAGIC_ATT_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MAGIC_ATT_CFGS.name = "magic_att_cfgs"
-MAGIC_ATT_CFGS.full_name = ".ftcfg.magic_att_cfgs"
-MAGIC_ATT_CFGS.nested_types = {}
-MAGIC_ATT_CFGS.enum_types = {}
-MAGIC_ATT_CFGS.fields = {MAGIC_ATT_CFGS_ITEMS_FIELD}
-MAGIC_ATT_CFGS.is_extendable = false
-MAGIC_ATT_CFGS.extensions = {}
-MAGIC_OSTIOLE_CFG_ID_FIELD.name = "id"
-MAGIC_OSTIOLE_CFG_ID_FIELD.full_name = ".ftcfg.magic_ostiole_cfg.id"
-MAGIC_OSTIOLE_CFG_ID_FIELD.number = 1
-MAGIC_OSTIOLE_CFG_ID_FIELD.index = 0
-MAGIC_OSTIOLE_CFG_ID_FIELD.label = 2
-MAGIC_OSTIOLE_CFG_ID_FIELD.has_default_value = false
-MAGIC_OSTIOLE_CFG_ID_FIELD.default_value = 0
-MAGIC_OSTIOLE_CFG_ID_FIELD.type = 5
-MAGIC_OSTIOLE_CFG_ID_FIELD.cpp_type = 1
-
-MAGIC_OSTIOLE_CFG_POS_FIELD.name = "pos"
-MAGIC_OSTIOLE_CFG_POS_FIELD.full_name = ".ftcfg.magic_ostiole_cfg.pos"
-MAGIC_OSTIOLE_CFG_POS_FIELD.number = 2
-MAGIC_OSTIOLE_CFG_POS_FIELD.index = 1
-MAGIC_OSTIOLE_CFG_POS_FIELD.label = 2
-MAGIC_OSTIOLE_CFG_POS_FIELD.has_default_value = false
-MAGIC_OSTIOLE_CFG_POS_FIELD.default_value = 0
-MAGIC_OSTIOLE_CFG_POS_FIELD.type = 5
-MAGIC_OSTIOLE_CFG_POS_FIELD.cpp_type = 1
-
-MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.name = "magic_type"
-MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.full_name = ".ftcfg.magic_ostiole_cfg.magic_type"
-MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.number = 3
-MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.index = 2
-MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.label = 2
-MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.has_default_value = false
-MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.default_value = 0
-MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.type = 5
-MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD.cpp_type = 1
-
-MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.name = "player_level"
-MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.full_name = ".ftcfg.magic_ostiole_cfg.player_level"
-MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.number = 4
-MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.index = 3
-MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.label = 2
-MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.has_default_value = false
-MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.default_value = 0
-MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.type = 5
-MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD.cpp_type = 1
-
-MAGIC_OSTIOLE_CFG_RANGE_FIELD.name = "range"
-MAGIC_OSTIOLE_CFG_RANGE_FIELD.full_name = ".ftcfg.magic_ostiole_cfg.range"
-MAGIC_OSTIOLE_CFG_RANGE_FIELD.number = 5
-MAGIC_OSTIOLE_CFG_RANGE_FIELD.index = 4
-MAGIC_OSTIOLE_CFG_RANGE_FIELD.label = 2
-MAGIC_OSTIOLE_CFG_RANGE_FIELD.has_default_value = false
-MAGIC_OSTIOLE_CFG_RANGE_FIELD.default_value = 0
-MAGIC_OSTIOLE_CFG_RANGE_FIELD.type = 5
-MAGIC_OSTIOLE_CFG_RANGE_FIELD.cpp_type = 1
-
-MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.name = "item_id"
-MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.magic_ostiole_cfg.item_id"
-MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.number = 6
-MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.index = 5
-MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.label = 2
-MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.has_default_value = false
-MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.default_value = 0
-MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.type = 5
-MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD.cpp_type = 1
-
-MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.name = "item_num"
-MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.full_name = ".ftcfg.magic_ostiole_cfg.item_num"
-MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.number = 7
-MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.index = 6
-MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.label = 2
-MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.has_default_value = false
-MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.default_value = 0
-MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.type = 5
-MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD.cpp_type = 1
-
-MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.name = "max_beatific"
-MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.full_name = ".ftcfg.magic_ostiole_cfg.max_beatific"
-MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.number = 8
-MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.index = 7
-MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.label = 2
-MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.has_default_value = false
-MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.default_value = 0
-MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.type = 5
-MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD.cpp_type = 1
-
-MAGIC_OSTIOLE_CFG.name = "magic_ostiole_cfg"
-MAGIC_OSTIOLE_CFG.full_name = ".ftcfg.magic_ostiole_cfg"
-MAGIC_OSTIOLE_CFG.nested_types = {}
-MAGIC_OSTIOLE_CFG.enum_types = {}
-MAGIC_OSTIOLE_CFG.fields = {MAGIC_OSTIOLE_CFG_ID_FIELD, MAGIC_OSTIOLE_CFG_POS_FIELD, MAGIC_OSTIOLE_CFG_MAGIC_TYPE_FIELD, MAGIC_OSTIOLE_CFG_PLAYER_LEVEL_FIELD, MAGIC_OSTIOLE_CFG_RANGE_FIELD, MAGIC_OSTIOLE_CFG_ITEM_ID_FIELD, MAGIC_OSTIOLE_CFG_ITEM_NUM_FIELD, MAGIC_OSTIOLE_CFG_MAX_BEATIFIC_FIELD}
-MAGIC_OSTIOLE_CFG.is_extendable = false
-MAGIC_OSTIOLE_CFG.extensions = {}
-MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.name = "items"
-MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_ostiole_cfgs.items"
-MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.number = 1
-MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.index = 0
-MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.label = 3
-MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.has_default_value = false
-MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.default_value = {}
-MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.message_type = MAGIC_OSTIOLE_CFG
-MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.type = 11
-MAGIC_OSTIOLE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MAGIC_OSTIOLE_CFGS.name = "magic_ostiole_cfgs"
-MAGIC_OSTIOLE_CFGS.full_name = ".ftcfg.magic_ostiole_cfgs"
-MAGIC_OSTIOLE_CFGS.nested_types = {}
-MAGIC_OSTIOLE_CFGS.enum_types = {}
-MAGIC_OSTIOLE_CFGS.fields = {MAGIC_OSTIOLE_CFGS_ITEMS_FIELD}
-MAGIC_OSTIOLE_CFGS.is_extendable = false
-MAGIC_OSTIOLE_CFGS.extensions = {}
-MAGIC_LEVELUP_CFG_ID_FIELD.name = "id"
-MAGIC_LEVELUP_CFG_ID_FIELD.full_name = ".ftcfg.magic_levelup_cfg.id"
-MAGIC_LEVELUP_CFG_ID_FIELD.number = 1
-MAGIC_LEVELUP_CFG_ID_FIELD.index = 0
-MAGIC_LEVELUP_CFG_ID_FIELD.label = 2
-MAGIC_LEVELUP_CFG_ID_FIELD.has_default_value = false
-MAGIC_LEVELUP_CFG_ID_FIELD.default_value = 0
-MAGIC_LEVELUP_CFG_ID_FIELD.type = 5
-MAGIC_LEVELUP_CFG_ID_FIELD.cpp_type = 1
-
-MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.name = "magic_level"
-MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.full_name = ".ftcfg.magic_levelup_cfg.magic_level"
-MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.number = 2
-MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.index = 1
-MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.label = 2
-MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.has_default_value = false
-MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.default_value = 0
-MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.type = 5
-MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD.cpp_type = 1
-
-MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.name = "prop_type"
-MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.full_name = ".ftcfg.magic_levelup_cfg.prop_type"
-MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.number = 3
-MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.index = 2
-MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.label = 3
-MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.has_default_value = false
-MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.default_value = {}
-MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPOPTYPE
-MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.type = 14
-MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD.cpp_type = 8
-
-MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.name = "att_type"
-MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.full_name = ".ftcfg.magic_levelup_cfg.att_type"
-MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.number = 4
-MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.index = 3
-MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.label = 3
-MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.has_default_value = false
-MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.default_value = {}
-MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
-MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.type = 14
-MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD.cpp_type = 8
-
-MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.name = "att_value"
-MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.full_name = ".ftcfg.magic_levelup_cfg.att_value"
-MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.number = 5
-MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.index = 4
-MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.label = 3
-MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.has_default_value = false
-MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.default_value = {}
-MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.type = 2
-MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD.cpp_type = 6
-
-MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.name = "item_id"
-MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.magic_levelup_cfg.item_id"
-MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.number = 6
-MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.index = 5
-MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.label = 2
-MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.has_default_value = false
-MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.default_value = 0
-MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.type = 5
-MAGIC_LEVELUP_CFG_ITEM_ID_FIELD.cpp_type = 1
-
-MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.name = "item_num"
-MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.full_name = ".ftcfg.magic_levelup_cfg.item_num"
-MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.number = 7
-MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.index = 6
-MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.label = 2
-MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.has_default_value = false
-MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.default_value = 0
-MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.type = 5
-MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD.cpp_type = 1
-
-MAGIC_LEVELUP_CFG_RANGE_FIELD.name = "range"
-MAGIC_LEVELUP_CFG_RANGE_FIELD.full_name = ".ftcfg.magic_levelup_cfg.range"
-MAGIC_LEVELUP_CFG_RANGE_FIELD.number = 8
-MAGIC_LEVELUP_CFG_RANGE_FIELD.index = 7
-MAGIC_LEVELUP_CFG_RANGE_FIELD.label = 2
-MAGIC_LEVELUP_CFG_RANGE_FIELD.has_default_value = false
-MAGIC_LEVELUP_CFG_RANGE_FIELD.default_value = 0
-MAGIC_LEVELUP_CFG_RANGE_FIELD.type = 5
-MAGIC_LEVELUP_CFG_RANGE_FIELD.cpp_type = 1
-
-MAGIC_LEVELUP_CFG.name = "magic_levelup_cfg"
-MAGIC_LEVELUP_CFG.full_name = ".ftcfg.magic_levelup_cfg"
-MAGIC_LEVELUP_CFG.nested_types = {}
-MAGIC_LEVELUP_CFG.enum_types = {}
-MAGIC_LEVELUP_CFG.fields = {MAGIC_LEVELUP_CFG_ID_FIELD, MAGIC_LEVELUP_CFG_MAGIC_LEVEL_FIELD, MAGIC_LEVELUP_CFG_PROP_TYPE_FIELD, MAGIC_LEVELUP_CFG_ATT_TYPE_FIELD, MAGIC_LEVELUP_CFG_ATT_VALUE_FIELD, MAGIC_LEVELUP_CFG_ITEM_ID_FIELD, MAGIC_LEVELUP_CFG_ITEM_NUM_FIELD, MAGIC_LEVELUP_CFG_RANGE_FIELD}
-MAGIC_LEVELUP_CFG.is_extendable = false
-MAGIC_LEVELUP_CFG.extensions = {}
-MAGIC_LEVELUP_CFGS_ITEMS_FIELD.name = "items"
-MAGIC_LEVELUP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_levelup_cfgs.items"
-MAGIC_LEVELUP_CFGS_ITEMS_FIELD.number = 1
-MAGIC_LEVELUP_CFGS_ITEMS_FIELD.index = 0
-MAGIC_LEVELUP_CFGS_ITEMS_FIELD.label = 3
-MAGIC_LEVELUP_CFGS_ITEMS_FIELD.has_default_value = false
-MAGIC_LEVELUP_CFGS_ITEMS_FIELD.default_value = {}
-MAGIC_LEVELUP_CFGS_ITEMS_FIELD.message_type = MAGIC_LEVELUP_CFG
-MAGIC_LEVELUP_CFGS_ITEMS_FIELD.type = 11
-MAGIC_LEVELUP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MAGIC_LEVELUP_CFGS.name = "magic_levelup_cfgs"
-MAGIC_LEVELUP_CFGS.full_name = ".ftcfg.magic_levelup_cfgs"
-MAGIC_LEVELUP_CFGS.nested_types = {}
-MAGIC_LEVELUP_CFGS.enum_types = {}
-MAGIC_LEVELUP_CFGS.fields = {MAGIC_LEVELUP_CFGS_ITEMS_FIELD}
-MAGIC_LEVELUP_CFGS.is_extendable = false
-MAGIC_LEVELUP_CFGS.extensions = {}
-MAGIC_COMBINATION_CFG_ID_FIELD.name = "id"
-MAGIC_COMBINATION_CFG_ID_FIELD.full_name = ".ftcfg.magic_combination_cfg.id"
-MAGIC_COMBINATION_CFG_ID_FIELD.number = 1
-MAGIC_COMBINATION_CFG_ID_FIELD.index = 0
-MAGIC_COMBINATION_CFG_ID_FIELD.label = 2
-MAGIC_COMBINATION_CFG_ID_FIELD.has_default_value = false
-MAGIC_COMBINATION_CFG_ID_FIELD.default_value = 0
-MAGIC_COMBINATION_CFG_ID_FIELD.type = 5
-MAGIC_COMBINATION_CFG_ID_FIELD.cpp_type = 1
-
-MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.name = "combination_level"
-MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.full_name = ".ftcfg.magic_combination_cfg.combination_level"
-MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.number = 2
-MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.index = 1
-MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.label = 2
-MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.has_default_value = false
-MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.default_value = 0
-MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.type = 5
-MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD.cpp_type = 1
-
-MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.name = "magic_ids"
-MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.full_name = ".ftcfg.magic_combination_cfg.magic_ids"
-MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.number = 3
-MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.index = 2
-MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.label = 3
-MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.has_default_value = false
-MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.default_value = {}
-MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.type = 5
-MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD.cpp_type = 1
-
-MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.name = "magic_num"
-MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.full_name = ".ftcfg.magic_combination_cfg.magic_num"
-MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.number = 4
-MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.index = 3
-MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.label = 3
-MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.has_default_value = false
-MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.default_value = {}
-MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.type = 5
-MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD.cpp_type = 1
-
-MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.name = "prop_type"
-MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.full_name = ".ftcfg.magic_combination_cfg.prop_type"
-MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.number = 5
-MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.index = 4
-MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.label = 2
-MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.has_default_value = false
-MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.default_value = nil
-MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPOPTYPE
-MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.type = 14
-MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD.cpp_type = 8
-
-MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.name = "att_type"
-MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.full_name = ".ftcfg.magic_combination_cfg.att_type"
-MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.number = 6
-MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.index = 5
-MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.label = 2
-MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.has_default_value = false
-MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.default_value = nil
-MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
-MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.type = 14
-MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD.cpp_type = 8
-
-MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.name = "att_value"
-MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.full_name = ".ftcfg.magic_combination_cfg.att_value"
-MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.number = 7
-MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.index = 6
-MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.label = 2
-MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.has_default_value = false
-MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.default_value = 0.0
-MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.type = 2
-MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD.cpp_type = 6
-
-MAGIC_COMBINATION_CFG_MG_NAME_FIELD.name = "mg_name"
-MAGIC_COMBINATION_CFG_MG_NAME_FIELD.full_name = ".ftcfg.magic_combination_cfg.mg_name"
-MAGIC_COMBINATION_CFG_MG_NAME_FIELD.number = 8
-MAGIC_COMBINATION_CFG_MG_NAME_FIELD.index = 7
-MAGIC_COMBINATION_CFG_MG_NAME_FIELD.label = 2
-MAGIC_COMBINATION_CFG_MG_NAME_FIELD.has_default_value = false
-MAGIC_COMBINATION_CFG_MG_NAME_FIELD.default_value = ""
-MAGIC_COMBINATION_CFG_MG_NAME_FIELD.type = 9
-MAGIC_COMBINATION_CFG_MG_NAME_FIELD.cpp_type = 9
-
-MAGIC_COMBINATION_CFG.name = "magic_combination_cfg"
-MAGIC_COMBINATION_CFG.full_name = ".ftcfg.magic_combination_cfg"
-MAGIC_COMBINATION_CFG.nested_types = {}
-MAGIC_COMBINATION_CFG.enum_types = {}
-MAGIC_COMBINATION_CFG.fields = {MAGIC_COMBINATION_CFG_ID_FIELD, MAGIC_COMBINATION_CFG_COMBINATION_LEVEL_FIELD, MAGIC_COMBINATION_CFG_MAGIC_IDS_FIELD, MAGIC_COMBINATION_CFG_MAGIC_NUM_FIELD, MAGIC_COMBINATION_CFG_PROP_TYPE_FIELD, MAGIC_COMBINATION_CFG_ATT_TYPE_FIELD, MAGIC_COMBINATION_CFG_ATT_VALUE_FIELD, MAGIC_COMBINATION_CFG_MG_NAME_FIELD}
-MAGIC_COMBINATION_CFG.is_extendable = false
-MAGIC_COMBINATION_CFG.extensions = {}
-MAGIC_COMBINATION_CFGS_ITEMS_FIELD.name = "items"
-MAGIC_COMBINATION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_combination_cfgs.items"
-MAGIC_COMBINATION_CFGS_ITEMS_FIELD.number = 1
-MAGIC_COMBINATION_CFGS_ITEMS_FIELD.index = 0
-MAGIC_COMBINATION_CFGS_ITEMS_FIELD.label = 3
-MAGIC_COMBINATION_CFGS_ITEMS_FIELD.has_default_value = false
-MAGIC_COMBINATION_CFGS_ITEMS_FIELD.default_value = {}
-MAGIC_COMBINATION_CFGS_ITEMS_FIELD.message_type = MAGIC_COMBINATION_CFG
-MAGIC_COMBINATION_CFGS_ITEMS_FIELD.type = 11
-MAGIC_COMBINATION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MAGIC_COMBINATION_CFGS.name = "magic_combination_cfgs"
-MAGIC_COMBINATION_CFGS.full_name = ".ftcfg.magic_combination_cfgs"
-MAGIC_COMBINATION_CFGS.nested_types = {}
-MAGIC_COMBINATION_CFGS.enum_types = {}
-MAGIC_COMBINATION_CFGS.fields = {MAGIC_COMBINATION_CFGS_ITEMS_FIELD}
-MAGIC_COMBINATION_CFGS.is_extendable = false
-MAGIC_COMBINATION_CFGS.extensions = {}
-CONVOY_BIAOCHE_CFG_ID_FIELD.name = "id"
-CONVOY_BIAOCHE_CFG_ID_FIELD.full_name = ".ftcfg.convoy_biaoche_cfg.id"
-CONVOY_BIAOCHE_CFG_ID_FIELD.number = 1
-CONVOY_BIAOCHE_CFG_ID_FIELD.index = 0
-CONVOY_BIAOCHE_CFG_ID_FIELD.label = 2
-CONVOY_BIAOCHE_CFG_ID_FIELD.has_default_value = false
-CONVOY_BIAOCHE_CFG_ID_FIELD.default_value = 0
-CONVOY_BIAOCHE_CFG_ID_FIELD.type = 5
-CONVOY_BIAOCHE_CFG_ID_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.name = "activity_type"
-CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.full_name = ".ftcfg.convoy_biaoche_cfg.activity_type"
-CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.number = 2
-CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.index = 1
-CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.label = 2
-CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.has_default_value = false
-CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.default_value = nil
-CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.enum_type = config_predefine_pb.EBATTLEACTIVITYTYPE
-CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.type = 14
-CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD.cpp_type = 8
-
-CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.name = "first_start_time"
-CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.full_name = ".ftcfg.convoy_biaoche_cfg.first_start_time"
-CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.number = 3
-CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.index = 2
-CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.label = 2
-CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.has_default_value = false
-CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.default_value = ""
-CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.type = 9
-CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD.cpp_type = 9
-
-CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.name = "first_end_time"
-CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.full_name = ".ftcfg.convoy_biaoche_cfg.first_end_time"
-CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.number = 4
-CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.index = 3
-CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.label = 2
-CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.has_default_value = false
-CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.default_value = ""
-CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.type = 9
-CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD.cpp_type = 9
-
-CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.name = "second_start_time"
-CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.full_name = ".ftcfg.convoy_biaoche_cfg.second_start_time"
-CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.number = 5
-CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.index = 4
-CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.label = 2
-CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.has_default_value = false
-CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.default_value = ""
-CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.type = 9
-CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD.cpp_type = 9
-
-CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.name = "second_end_time"
-CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.full_name = ".ftcfg.convoy_biaoche_cfg.second_end_time"
-CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.number = 6
-CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.index = 5
-CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.label = 2
-CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.has_default_value = false
-CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.default_value = ""
-CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.type = 9
-CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD.cpp_type = 9
-
-CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.name = "scene_id"
-CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.convoy_biaoche_cfg.scene_id"
-CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.number = 7
-CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.index = 6
-CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.label = 3
-CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.has_default_value = false
-CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.default_value = {}
-CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.type = 5
-CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.name = "week_loop"
-CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.full_name = ".ftcfg.convoy_biaoche_cfg.week_loop"
-CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.number = 8
-CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.index = 7
-CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.label = 2
-CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.has_default_value = false
-CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.default_value = 0
-CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.type = 5
-CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_CFG.name = "convoy_biaoche_cfg"
-CONVOY_BIAOCHE_CFG.full_name = ".ftcfg.convoy_biaoche_cfg"
-CONVOY_BIAOCHE_CFG.nested_types = {}
-CONVOY_BIAOCHE_CFG.enum_types = {}
-CONVOY_BIAOCHE_CFG.fields = {CONVOY_BIAOCHE_CFG_ID_FIELD, CONVOY_BIAOCHE_CFG_ACTIVITY_TYPE_FIELD, CONVOY_BIAOCHE_CFG_FIRST_START_TIME_FIELD, CONVOY_BIAOCHE_CFG_FIRST_END_TIME_FIELD, CONVOY_BIAOCHE_CFG_SECOND_START_TIME_FIELD, CONVOY_BIAOCHE_CFG_SECOND_END_TIME_FIELD, CONVOY_BIAOCHE_CFG_SCENE_ID_FIELD, CONVOY_BIAOCHE_CFG_WEEK_LOOP_FIELD}
-CONVOY_BIAOCHE_CFG.is_extendable = false
-CONVOY_BIAOCHE_CFG.extensions = {}
-CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.name = "items"
-CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.convoy_biaoche_cfgs.items"
-CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.number = 1
-CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.index = 0
-CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.label = 3
-CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.has_default_value = false
-CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.default_value = {}
-CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.message_type = CONVOY_BIAOCHE_CFG
-CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.type = 11
-CONVOY_BIAOCHE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-CONVOY_BIAOCHE_CFGS.name = "convoy_biaoche_cfgs"
-CONVOY_BIAOCHE_CFGS.full_name = ".ftcfg.convoy_biaoche_cfgs"
-CONVOY_BIAOCHE_CFGS.nested_types = {}
-CONVOY_BIAOCHE_CFGS.enum_types = {}
-CONVOY_BIAOCHE_CFGS.fields = {CONVOY_BIAOCHE_CFGS_ITEMS_FIELD}
-CONVOY_BIAOCHE_CFGS.is_extendable = false
-CONVOY_BIAOCHE_CFGS.extensions = {}
-CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.name = "id"
-CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.id"
-CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.number = 1
-CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.index = 0
-CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.default_value = 0
-CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.name = "level_min"
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.level_min"
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.number = 2
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.index = 1
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.default_value = 0
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.name = "level_max"
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.level_max"
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.number = 3
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.index = 2
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.default_value = 0
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.name = "mission_rate"
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.mission_rate"
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.number = 4
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.index = 3
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.label = 3
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.default_value = {}
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.name = "person_mission_id"
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.person_mission_id"
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.number = 5
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.index = 4
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.label = 3
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.default_value = {}
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.name = "team_mission_id"
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.team_mission_id"
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.number = 6
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.index = 5
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.label = 3
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.default_value = {}
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.name = "mission_npc_distance"
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.mission_npc_distance"
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.number = 7
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.index = 6
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.default_value = 0.0
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.type = 1
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD.cpp_type = 5
-
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.name = "mission_need_itemid"
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.mission_need_itemid"
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.number = 8
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.index = 7
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.default_value = 0
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.name = "escort_distance_limit"
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.escort_distance_limit"
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.number = 9
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.index = 8
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.default_value = 0.0
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.type = 1
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD.cpp_type = 5
-
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.name = "escort_time_limit"
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.escort_time_limit"
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.number = 10
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.index = 9
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.default_value = 0
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.name = "ride_limit"
-CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.ride_limit"
-CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.number = 11
-CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.index = 10
-CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.default_value = 0.0
-CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.type = 1
-CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD.cpp_type = 5
-
-CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.name = "node_stay_time"
-CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.node_stay_time"
-CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.number = 12
-CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.index = 11
-CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.default_value = 0
-CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.name = "same_camp_distance_limit"
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.same_camp_distance_limit"
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.number = 13
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.index = 12
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.default_value = 0.0
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.type = 1
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD.cpp_type = 5
-
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.name = "same_camp_time_limit"
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.same_camp_time_limit"
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.number = 14
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.index = 13
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.default_value = 0
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.name = "robber_distance_limit"
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.robber_distance_limit"
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.number = 15
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.index = 14
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.default_value = 0.0
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.type = 1
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD.cpp_type = 5
-
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.name = "robber_time_limit"
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.robber_time_limit"
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.number = 16
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.index = 15
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.default_value = 0
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.name = "complete_time_limit"
-CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.complete_time_limit"
-CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.number = 17
-CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.index = 16
-CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.default_value = 0
-CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.name = "person_camp_reward"
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.person_camp_reward"
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.number = 18
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.index = 17
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.default_value = 0
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.name = "person_enemy_reward"
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.person_enemy_reward"
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.number = 19
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.index = 18
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.label = 3
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.default_value = {}
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.name = "team_camp_reward"
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.team_camp_reward"
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.number = 20
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.index = 19
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.default_value = 0
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.name = "team_enemy_reward"
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.team_enemy_reward"
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.number = 21
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.index = 20
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.label = 3
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.default_value = {}
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.name = "gold_limit"
-CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.gold_limit"
-CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.number = 22
-CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.index = 21
-CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.default_value = 0
-CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.name = "silver_limit"
-CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.silver_limit"
-CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.number = 23
-CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.index = 22
-CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.label = 2
-CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.default_value = 0
-CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.name = "free_pos"
-CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.free_pos"
-CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.number = 24
-CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.index = 23
-CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.label = 3
-CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.default_value = {}
-CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.name = "alliance_pos"
-CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfg.alliance_pos"
-CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.number = 25
-CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.index = 24
-CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.label = 3
-CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.default_value = {}
-CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.type = 5
-CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD.cpp_type = 1
-
-CONVOY_BIAOCHE_SCENE_CFG.name = "convoy_biaoche_scene_cfg"
-CONVOY_BIAOCHE_SCENE_CFG.full_name = ".ftcfg.convoy_biaoche_scene_cfg"
-CONVOY_BIAOCHE_SCENE_CFG.nested_types = {}
-CONVOY_BIAOCHE_SCENE_CFG.enum_types = {}
-CONVOY_BIAOCHE_SCENE_CFG.fields = {CONVOY_BIAOCHE_SCENE_CFG_ID_FIELD, CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MIN_FIELD, CONVOY_BIAOCHE_SCENE_CFG_LEVEL_MAX_FIELD, CONVOY_BIAOCHE_SCENE_CFG_MISSION_RATE_FIELD, CONVOY_BIAOCHE_SCENE_CFG_PERSON_MISSION_ID_FIELD, CONVOY_BIAOCHE_SCENE_CFG_TEAM_MISSION_ID_FIELD, CONVOY_BIAOCHE_SCENE_CFG_MISSION_NPC_DISTANCE_FIELD, CONVOY_BIAOCHE_SCENE_CFG_MISSION_NEED_ITEMID_FIELD, CONVOY_BIAOCHE_SCENE_CFG_ESCORT_DISTANCE_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_ESCORT_TIME_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_RIDE_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_NODE_STAY_TIME_FIELD, CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_DISTANCE_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_SAME_CAMP_TIME_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_ROBBER_DISTANCE_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_ROBBER_TIME_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_COMPLETE_TIME_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_PERSON_CAMP_REWARD_FIELD, CONVOY_BIAOCHE_SCENE_CFG_PERSON_ENEMY_REWARD_FIELD, CONVOY_BIAOCHE_SCENE_CFG_TEAM_CAMP_REWARD_FIELD, CONVOY_BIAOCHE_SCENE_CFG_TEAM_ENEMY_REWARD_FIELD, CONVOY_BIAOCHE_SCENE_CFG_GOLD_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_SILVER_LIMIT_FIELD, CONVOY_BIAOCHE_SCENE_CFG_FREE_POS_FIELD, CONVOY_BIAOCHE_SCENE_CFG_ALLIANCE_POS_FIELD}
-CONVOY_BIAOCHE_SCENE_CFG.is_extendable = false
-CONVOY_BIAOCHE_SCENE_CFG.extensions = {}
-CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.name = "items"
-CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.convoy_biaoche_scene_cfgs.items"
-CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.number = 1
-CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.index = 0
-CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.label = 3
-CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.has_default_value = false
-CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.default_value = {}
-CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.message_type = CONVOY_BIAOCHE_SCENE_CFG
-CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.type = 11
-CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-CONVOY_BIAOCHE_SCENE_CFGS.name = "convoy_biaoche_scene_cfgs"
-CONVOY_BIAOCHE_SCENE_CFGS.full_name = ".ftcfg.convoy_biaoche_scene_cfgs"
-CONVOY_BIAOCHE_SCENE_CFGS.nested_types = {}
-CONVOY_BIAOCHE_SCENE_CFGS.enum_types = {}
-CONVOY_BIAOCHE_SCENE_CFGS.fields = {CONVOY_BIAOCHE_SCENE_CFGS_ITEMS_FIELD}
-CONVOY_BIAOCHE_SCENE_CFGS.is_extendable = false
-CONVOY_BIAOCHE_SCENE_CFGS.extensions = {}
-ACTIVITY_INFO_CFG_ID_FIELD.name = "id"
-ACTIVITY_INFO_CFG_ID_FIELD.full_name = ".ftcfg.activity_info_cfg.id"
-ACTIVITY_INFO_CFG_ID_FIELD.number = 1
-ACTIVITY_INFO_CFG_ID_FIELD.index = 0
-ACTIVITY_INFO_CFG_ID_FIELD.label = 2
-ACTIVITY_INFO_CFG_ID_FIELD.has_default_value = false
-ACTIVITY_INFO_CFG_ID_FIELD.default_value = 0
-ACTIVITY_INFO_CFG_ID_FIELD.type = 5
-ACTIVITY_INFO_CFG_ID_FIELD.cpp_type = 1
-
-ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.name = "activity_type"
-ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.full_name = ".ftcfg.activity_info_cfg.activity_type"
-ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.number = 2
-ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.index = 1
-ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.label = 2
-ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.has_default_value = false
-ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.default_value = nil
-ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.enum_type = config_predefine_pb.EBATTLEACTIVITYTYPE
-ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.type = 14
-ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD.cpp_type = 8
-
-ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.name = "func_type"
-ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.full_name = ".ftcfg.activity_info_cfg.func_type"
-ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.number = 3
-ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.index = 2
-ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.label = 2
-ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.has_default_value = false
-ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.default_value = nil
-ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.enum_type = config_predefine_pb.EFUNCTYPE
-ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.type = 14
-ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD.cpp_type = 8
-
-ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.name = "entry_time"
-ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.full_name = ".ftcfg.activity_info_cfg.entry_time"
-ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.number = 4
-ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.index = 3
-ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.label = 2
-ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.has_default_value = false
-ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.default_value = ""
-ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.type = 9
-ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD.cpp_type = 9
-
-ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.name = "entry_end_time"
-ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.full_name = ".ftcfg.activity_info_cfg.entry_end_time"
-ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.number = 5
-ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.index = 4
-ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.label = 2
-ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.has_default_value = false
-ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.default_value = ""
-ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.type = 9
-ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD.cpp_type = 9
-
-ACTIVITY_INFO_CFG_START_TIME_FIELD.name = "start_time"
-ACTIVITY_INFO_CFG_START_TIME_FIELD.full_name = ".ftcfg.activity_info_cfg.start_time"
-ACTIVITY_INFO_CFG_START_TIME_FIELD.number = 6
-ACTIVITY_INFO_CFG_START_TIME_FIELD.index = 5
-ACTIVITY_INFO_CFG_START_TIME_FIELD.label = 2
-ACTIVITY_INFO_CFG_START_TIME_FIELD.has_default_value = false
-ACTIVITY_INFO_CFG_START_TIME_FIELD.default_value = ""
-ACTIVITY_INFO_CFG_START_TIME_FIELD.type = 9
-ACTIVITY_INFO_CFG_START_TIME_FIELD.cpp_type = 9
-
-ACTIVITY_INFO_CFG_END_TIME_FIELD.name = "end_time"
-ACTIVITY_INFO_CFG_END_TIME_FIELD.full_name = ".ftcfg.activity_info_cfg.end_time"
-ACTIVITY_INFO_CFG_END_TIME_FIELD.number = 7
-ACTIVITY_INFO_CFG_END_TIME_FIELD.index = 6
-ACTIVITY_INFO_CFG_END_TIME_FIELD.label = 2
-ACTIVITY_INFO_CFG_END_TIME_FIELD.has_default_value = false
-ACTIVITY_INFO_CFG_END_TIME_FIELD.default_value = ""
-ACTIVITY_INFO_CFG_END_TIME_FIELD.type = 9
-ACTIVITY_INFO_CFG_END_TIME_FIELD.cpp_type = 9
-
-ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.name = "level_limit"
-ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.full_name = ".ftcfg.activity_info_cfg.level_limit"
-ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.number = 8
-ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.index = 7
-ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.label = 2
-ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.has_default_value = false
-ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.default_value = 0
-ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.type = 5
-ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD.cpp_type = 1
-
-ACTIVITY_INFO_CFG_TIMES_FIELD.name = "times"
-ACTIVITY_INFO_CFG_TIMES_FIELD.full_name = ".ftcfg.activity_info_cfg.times"
-ACTIVITY_INFO_CFG_TIMES_FIELD.number = 9
-ACTIVITY_INFO_CFG_TIMES_FIELD.index = 8
-ACTIVITY_INFO_CFG_TIMES_FIELD.label = 2
-ACTIVITY_INFO_CFG_TIMES_FIELD.has_default_value = false
-ACTIVITY_INFO_CFG_TIMES_FIELD.default_value = 0
-ACTIVITY_INFO_CFG_TIMES_FIELD.type = 5
-ACTIVITY_INFO_CFG_TIMES_FIELD.cpp_type = 1
-
-ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.name = "week_loop"
-ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.full_name = ".ftcfg.activity_info_cfg.week_loop"
-ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.number = 10
-ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.index = 9
-ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.label = 2
-ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.has_default_value = false
-ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.default_value = 0
-ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.type = 5
-ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD.cpp_type = 1
-
-ACTIVITY_INFO_CFG.name = "activity_info_cfg"
-ACTIVITY_INFO_CFG.full_name = ".ftcfg.activity_info_cfg"
-ACTIVITY_INFO_CFG.nested_types = {}
-ACTIVITY_INFO_CFG.enum_types = {}
-ACTIVITY_INFO_CFG.fields = {ACTIVITY_INFO_CFG_ID_FIELD, ACTIVITY_INFO_CFG_ACTIVITY_TYPE_FIELD, ACTIVITY_INFO_CFG_FUNC_TYPE_FIELD, ACTIVITY_INFO_CFG_ENTRY_TIME_FIELD, ACTIVITY_INFO_CFG_ENTRY_END_TIME_FIELD, ACTIVITY_INFO_CFG_START_TIME_FIELD, ACTIVITY_INFO_CFG_END_TIME_FIELD, ACTIVITY_INFO_CFG_LEVEL_LIMIT_FIELD, ACTIVITY_INFO_CFG_TIMES_FIELD, ACTIVITY_INFO_CFG_WEEK_LOOP_FIELD}
-ACTIVITY_INFO_CFG.is_extendable = false
-ACTIVITY_INFO_CFG.extensions = {}
-ACTIVITY_INFO_CFGS_ITEMS_FIELD.name = "items"
-ACTIVITY_INFO_CFGS_ITEMS_FIELD.full_name = ".ftcfg.activity_info_cfgs.items"
-ACTIVITY_INFO_CFGS_ITEMS_FIELD.number = 1
-ACTIVITY_INFO_CFGS_ITEMS_FIELD.index = 0
-ACTIVITY_INFO_CFGS_ITEMS_FIELD.label = 3
-ACTIVITY_INFO_CFGS_ITEMS_FIELD.has_default_value = false
-ACTIVITY_INFO_CFGS_ITEMS_FIELD.default_value = {}
-ACTIVITY_INFO_CFGS_ITEMS_FIELD.message_type = ACTIVITY_INFO_CFG
-ACTIVITY_INFO_CFGS_ITEMS_FIELD.type = 11
-ACTIVITY_INFO_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ACTIVITY_INFO_CFGS.name = "activity_info_cfgs"
-ACTIVITY_INFO_CFGS.full_name = ".ftcfg.activity_info_cfgs"
-ACTIVITY_INFO_CFGS.nested_types = {}
-ACTIVITY_INFO_CFGS.enum_types = {}
-ACTIVITY_INFO_CFGS.fields = {ACTIVITY_INFO_CFGS_ITEMS_FIELD}
-ACTIVITY_INFO_CFGS.is_extendable = false
-ACTIVITY_INFO_CFGS.extensions = {}
-ACTIVITY_ROOMS_CFG_ID_FIELD.name = "id"
-ACTIVITY_ROOMS_CFG_ID_FIELD.full_name = ".ftcfg.activity_rooms_cfg.id"
-ACTIVITY_ROOMS_CFG_ID_FIELD.number = 1
-ACTIVITY_ROOMS_CFG_ID_FIELD.index = 0
-ACTIVITY_ROOMS_CFG_ID_FIELD.label = 2
-ACTIVITY_ROOMS_CFG_ID_FIELD.has_default_value = false
-ACTIVITY_ROOMS_CFG_ID_FIELD.default_value = 0
-ACTIVITY_ROOMS_CFG_ID_FIELD.type = 5
-ACTIVITY_ROOMS_CFG_ID_FIELD.cpp_type = 1
-
-ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.name = "area_id"
-ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.full_name = ".ftcfg.activity_rooms_cfg.area_id"
-ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.number = 2
-ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.index = 1
-ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.label = 2
-ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.has_default_value = false
-ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.default_value = 0
-ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.type = 5
-ACTIVITY_ROOMS_CFG_AREA_ID_FIELD.cpp_type = 1
-
-ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.name = "red_num"
-ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.full_name = ".ftcfg.activity_rooms_cfg.red_num"
-ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.number = 3
-ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.index = 2
-ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.label = 2
-ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.has_default_value = false
-ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.default_value = 0
-ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.type = 5
-ACTIVITY_ROOMS_CFG_RED_NUM_FIELD.cpp_type = 1
-
-ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.name = "blue_num"
-ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.full_name = ".ftcfg.activity_rooms_cfg.blue_num"
-ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.number = 4
-ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.index = 3
-ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.label = 2
-ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.has_default_value = false
-ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.default_value = 0
-ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.type = 5
-ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD.cpp_type = 1
-
-ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.name = "min_level"
-ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.full_name = ".ftcfg.activity_rooms_cfg.min_level"
-ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.number = 5
-ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.index = 4
-ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.label = 2
-ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.has_default_value = false
-ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.default_value = 0
-ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.type = 5
-ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD.cpp_type = 1
-
-ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.name = "max_level"
-ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.full_name = ".ftcfg.activity_rooms_cfg.max_level"
-ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.number = 6
-ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.index = 5
-ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.label = 2
-ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.has_default_value = false
-ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.default_value = 0
-ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.type = 5
-ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD.cpp_type = 1
-
-ACTIVITY_ROOMS_CFG.name = "activity_rooms_cfg"
-ACTIVITY_ROOMS_CFG.full_name = ".ftcfg.activity_rooms_cfg"
-ACTIVITY_ROOMS_CFG.nested_types = {}
-ACTIVITY_ROOMS_CFG.enum_types = {}
-ACTIVITY_ROOMS_CFG.fields = {ACTIVITY_ROOMS_CFG_ID_FIELD, ACTIVITY_ROOMS_CFG_AREA_ID_FIELD, ACTIVITY_ROOMS_CFG_RED_NUM_FIELD, ACTIVITY_ROOMS_CFG_BLUE_NUM_FIELD, ACTIVITY_ROOMS_CFG_MIN_LEVEL_FIELD, ACTIVITY_ROOMS_CFG_MAX_LEVEL_FIELD}
-ACTIVITY_ROOMS_CFG.is_extendable = false
-ACTIVITY_ROOMS_CFG.extensions = {}
-ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.name = "items"
-ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.activity_rooms_cfgs.items"
-ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.number = 1
-ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.index = 0
-ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.label = 3
-ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.has_default_value = false
-ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.default_value = {}
-ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.message_type = ACTIVITY_ROOMS_CFG
-ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.type = 11
-ACTIVITY_ROOMS_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ACTIVITY_ROOMS_CFGS.name = "activity_rooms_cfgs"
-ACTIVITY_ROOMS_CFGS.full_name = ".ftcfg.activity_rooms_cfgs"
-ACTIVITY_ROOMS_CFGS.nested_types = {}
-ACTIVITY_ROOMS_CFGS.enum_types = {}
-ACTIVITY_ROOMS_CFGS.fields = {ACTIVITY_ROOMS_CFGS_ITEMS_FIELD}
-ACTIVITY_ROOMS_CFGS.is_extendable = false
-ACTIVITY_ROOMS_CFGS.extensions = {}
-GROW_POINT_CFG_ID_FIELD.name = "id"
-GROW_POINT_CFG_ID_FIELD.full_name = ".ftcfg.grow_point_cfg.id"
-GROW_POINT_CFG_ID_FIELD.number = 1
-GROW_POINT_CFG_ID_FIELD.index = 0
-GROW_POINT_CFG_ID_FIELD.label = 2
-GROW_POINT_CFG_ID_FIELD.has_default_value = false
-GROW_POINT_CFG_ID_FIELD.default_value = 0
-GROW_POINT_CFG_ID_FIELD.type = 5
-GROW_POINT_CFG_ID_FIELD.cpp_type = 1
-
-GROW_POINT_CFG_NAME_FIELD.name = "name"
-GROW_POINT_CFG_NAME_FIELD.full_name = ".ftcfg.grow_point_cfg.name"
-GROW_POINT_CFG_NAME_FIELD.number = 2
-GROW_POINT_CFG_NAME_FIELD.index = 1
-GROW_POINT_CFG_NAME_FIELD.label = 2
-GROW_POINT_CFG_NAME_FIELD.has_default_value = false
-GROW_POINT_CFG_NAME_FIELD.default_value = 0
-GROW_POINT_CFG_NAME_FIELD.type = 5
-GROW_POINT_CFG_NAME_FIELD.cpp_type = 1
-
-GROW_POINT_CFG_MODULE_FIELD.name = "module"
-GROW_POINT_CFG_MODULE_FIELD.full_name = ".ftcfg.grow_point_cfg.module"
-GROW_POINT_CFG_MODULE_FIELD.number = 3
-GROW_POINT_CFG_MODULE_FIELD.index = 2
-GROW_POINT_CFG_MODULE_FIELD.label = 2
-GROW_POINT_CFG_MODULE_FIELD.has_default_value = false
-GROW_POINT_CFG_MODULE_FIELD.default_value = 0
-GROW_POINT_CFG_MODULE_FIELD.type = 5
-GROW_POINT_CFG_MODULE_FIELD.cpp_type = 1
-
-GROW_POINT_CFG_DESC_FIELD.name = "desc"
-GROW_POINT_CFG_DESC_FIELD.full_name = ".ftcfg.grow_point_cfg.desc"
-GROW_POINT_CFG_DESC_FIELD.number = 4
-GROW_POINT_CFG_DESC_FIELD.index = 3
-GROW_POINT_CFG_DESC_FIELD.label = 2
-GROW_POINT_CFG_DESC_FIELD.has_default_value = false
-GROW_POINT_CFG_DESC_FIELD.default_value = 0
-GROW_POINT_CFG_DESC_FIELD.type = 5
-GROW_POINT_CFG_DESC_FIELD.cpp_type = 1
-
-GROW_POINT_CFG_MAP_ID_FIELD.name = "map_id"
-GROW_POINT_CFG_MAP_ID_FIELD.full_name = ".ftcfg.grow_point_cfg.map_id"
-GROW_POINT_CFG_MAP_ID_FIELD.number = 5
-GROW_POINT_CFG_MAP_ID_FIELD.index = 4
-GROW_POINT_CFG_MAP_ID_FIELD.label = 2
-GROW_POINT_CFG_MAP_ID_FIELD.has_default_value = false
-GROW_POINT_CFG_MAP_ID_FIELD.default_value = 0
-GROW_POINT_CFG_MAP_ID_FIELD.type = 5
-GROW_POINT_CFG_MAP_ID_FIELD.cpp_type = 1
-
-GROW_POINT_CFG_POS_X_FIELD.name = "pos_x"
-GROW_POINT_CFG_POS_X_FIELD.full_name = ".ftcfg.grow_point_cfg.pos_x"
-GROW_POINT_CFG_POS_X_FIELD.number = 6
-GROW_POINT_CFG_POS_X_FIELD.index = 5
-GROW_POINT_CFG_POS_X_FIELD.label = 2
-GROW_POINT_CFG_POS_X_FIELD.has_default_value = false
-GROW_POINT_CFG_POS_X_FIELD.default_value = 0.0
-GROW_POINT_CFG_POS_X_FIELD.type = 2
-GROW_POINT_CFG_POS_X_FIELD.cpp_type = 6
-
-GROW_POINT_CFG_POS_Y_FIELD.name = "pos_y"
-GROW_POINT_CFG_POS_Y_FIELD.full_name = ".ftcfg.grow_point_cfg.pos_y"
-GROW_POINT_CFG_POS_Y_FIELD.number = 7
-GROW_POINT_CFG_POS_Y_FIELD.index = 6
-GROW_POINT_CFG_POS_Y_FIELD.label = 2
-GROW_POINT_CFG_POS_Y_FIELD.has_default_value = false
-GROW_POINT_CFG_POS_Y_FIELD.default_value = 0.0
-GROW_POINT_CFG_POS_Y_FIELD.type = 2
-GROW_POINT_CFG_POS_Y_FIELD.cpp_type = 6
-
-GROW_POINT_CFG_POS_Z_FIELD.name = "pos_z"
-GROW_POINT_CFG_POS_Z_FIELD.full_name = ".ftcfg.grow_point_cfg.pos_z"
-GROW_POINT_CFG_POS_Z_FIELD.number = 8
-GROW_POINT_CFG_POS_Z_FIELD.index = 7
-GROW_POINT_CFG_POS_Z_FIELD.label = 2
-GROW_POINT_CFG_POS_Z_FIELD.has_default_value = false
-GROW_POINT_CFG_POS_Z_FIELD.default_value = 0.0
-GROW_POINT_CFG_POS_Z_FIELD.type = 2
-GROW_POINT_CFG_POS_Z_FIELD.cpp_type = 6
-
-GROW_POINT_CFG_MAX_COUNT_FIELD.name = "max_count"
-GROW_POINT_CFG_MAX_COUNT_FIELD.full_name = ".ftcfg.grow_point_cfg.max_count"
-GROW_POINT_CFG_MAX_COUNT_FIELD.number = 9
-GROW_POINT_CFG_MAX_COUNT_FIELD.index = 8
-GROW_POINT_CFG_MAX_COUNT_FIELD.label = 2
-GROW_POINT_CFG_MAX_COUNT_FIELD.has_default_value = false
-GROW_POINT_CFG_MAX_COUNT_FIELD.default_value = 0
-GROW_POINT_CFG_MAX_COUNT_FIELD.type = 5
-GROW_POINT_CFG_MAX_COUNT_FIELD.cpp_type = 1
-
-GROW_POINT_CFG_SHOW_COUNT_FIELD.name = "show_count"
-GROW_POINT_CFG_SHOW_COUNT_FIELD.full_name = ".ftcfg.grow_point_cfg.show_count"
-GROW_POINT_CFG_SHOW_COUNT_FIELD.number = 10
-GROW_POINT_CFG_SHOW_COUNT_FIELD.index = 9
-GROW_POINT_CFG_SHOW_COUNT_FIELD.label = 2
-GROW_POINT_CFG_SHOW_COUNT_FIELD.has_default_value = false
-GROW_POINT_CFG_SHOW_COUNT_FIELD.default_value = false
-GROW_POINT_CFG_SHOW_COUNT_FIELD.type = 8
-GROW_POINT_CFG_SHOW_COUNT_FIELD.cpp_type = 7
-
-GROW_POINT_CFG_QUALITY_FIELD.name = "quality"
-GROW_POINT_CFG_QUALITY_FIELD.full_name = ".ftcfg.grow_point_cfg.quality"
-GROW_POINT_CFG_QUALITY_FIELD.number = 11
-GROW_POINT_CFG_QUALITY_FIELD.index = 10
-GROW_POINT_CFG_QUALITY_FIELD.label = 2
-GROW_POINT_CFG_QUALITY_FIELD.has_default_value = false
-GROW_POINT_CFG_QUALITY_FIELD.default_value = 0
-GROW_POINT_CFG_QUALITY_FIELD.type = 5
-GROW_POINT_CFG_QUALITY_FIELD.cpp_type = 1
-
-GROW_POINT_CFG_SKILL_INDEX_FIELD.name = "skill_index"
-GROW_POINT_CFG_SKILL_INDEX_FIELD.full_name = ".ftcfg.grow_point_cfg.skill_index"
-GROW_POINT_CFG_SKILL_INDEX_FIELD.number = 12
-GROW_POINT_CFG_SKILL_INDEX_FIELD.index = 11
-GROW_POINT_CFG_SKILL_INDEX_FIELD.label = 2
-GROW_POINT_CFG_SKILL_INDEX_FIELD.has_default_value = false
-GROW_POINT_CFG_SKILL_INDEX_FIELD.default_value = 0
-GROW_POINT_CFG_SKILL_INDEX_FIELD.type = 5
-GROW_POINT_CFG_SKILL_INDEX_FIELD.cpp_type = 1
-
-GROW_POINT_CFG.name = "grow_point_cfg"
-GROW_POINT_CFG.full_name = ".ftcfg.grow_point_cfg"
-GROW_POINT_CFG.nested_types = {}
-GROW_POINT_CFG.enum_types = {}
-GROW_POINT_CFG.fields = {GROW_POINT_CFG_ID_FIELD, GROW_POINT_CFG_NAME_FIELD, GROW_POINT_CFG_MODULE_FIELD, GROW_POINT_CFG_DESC_FIELD, GROW_POINT_CFG_MAP_ID_FIELD, GROW_POINT_CFG_POS_X_FIELD, GROW_POINT_CFG_POS_Y_FIELD, GROW_POINT_CFG_POS_Z_FIELD, GROW_POINT_CFG_MAX_COUNT_FIELD, GROW_POINT_CFG_SHOW_COUNT_FIELD, GROW_POINT_CFG_QUALITY_FIELD, GROW_POINT_CFG_SKILL_INDEX_FIELD}
-GROW_POINT_CFG.is_extendable = false
-GROW_POINT_CFG.extensions = {}
-GROW_POINT_CFGS_ITEMS_FIELD.name = "items"
-GROW_POINT_CFGS_ITEMS_FIELD.full_name = ".ftcfg.grow_point_cfgs.items"
-GROW_POINT_CFGS_ITEMS_FIELD.number = 1
-GROW_POINT_CFGS_ITEMS_FIELD.index = 0
-GROW_POINT_CFGS_ITEMS_FIELD.label = 3
-GROW_POINT_CFGS_ITEMS_FIELD.has_default_value = false
-GROW_POINT_CFGS_ITEMS_FIELD.default_value = {}
-GROW_POINT_CFGS_ITEMS_FIELD.message_type = GROW_POINT_CFG
-GROW_POINT_CFGS_ITEMS_FIELD.type = 11
-GROW_POINT_CFGS_ITEMS_FIELD.cpp_type = 10
-
-GROW_POINT_CFGS.name = "grow_point_cfgs"
-GROW_POINT_CFGS.full_name = ".ftcfg.grow_point_cfgs"
-GROW_POINT_CFGS.nested_types = {}
-GROW_POINT_CFGS.enum_types = {}
-GROW_POINT_CFGS.fields = {GROW_POINT_CFGS_ITEMS_FIELD}
-GROW_POINT_CFGS.is_extendable = false
-GROW_POINT_CFGS.extensions = {}
-ERRORCODE_NOTIFY_CFG_ID_FIELD.name = "id"
-ERRORCODE_NOTIFY_CFG_ID_FIELD.full_name = ".ftcfg.errorcode_notify_cfg.id"
-ERRORCODE_NOTIFY_CFG_ID_FIELD.number = 1
-ERRORCODE_NOTIFY_CFG_ID_FIELD.index = 0
-ERRORCODE_NOTIFY_CFG_ID_FIELD.label = 2
-ERRORCODE_NOTIFY_CFG_ID_FIELD.has_default_value = false
-ERRORCODE_NOTIFY_CFG_ID_FIELD.default_value = 0
-ERRORCODE_NOTIFY_CFG_ID_FIELD.type = 5
-ERRORCODE_NOTIFY_CFG_ID_FIELD.cpp_type = 1
-
-ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.name = "content"
-ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.full_name = ".ftcfg.errorcode_notify_cfg.content"
-ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.number = 2
-ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.index = 1
-ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.label = 2
-ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.has_default_value = false
-ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.default_value = ""
-ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.type = 9
-ERRORCODE_NOTIFY_CFG_CONTENT_FIELD.cpp_type = 9
-
-ERRORCODE_NOTIFY_CFG.name = "errorcode_notify_cfg"
-ERRORCODE_NOTIFY_CFG.full_name = ".ftcfg.errorcode_notify_cfg"
-ERRORCODE_NOTIFY_CFG.nested_types = {}
-ERRORCODE_NOTIFY_CFG.enum_types = {}
-ERRORCODE_NOTIFY_CFG.fields = {ERRORCODE_NOTIFY_CFG_ID_FIELD, ERRORCODE_NOTIFY_CFG_CONTENT_FIELD}
-ERRORCODE_NOTIFY_CFG.is_extendable = false
-ERRORCODE_NOTIFY_CFG.extensions = {}
-ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.name = "items"
-ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.full_name = ".ftcfg.errorcode_notify_cfgs.items"
-ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.number = 1
-ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.index = 0
-ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.label = 3
-ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.has_default_value = false
-ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.default_value = {}
-ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.message_type = ERRORCODE_NOTIFY_CFG
-ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.type = 11
-ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD.cpp_type = 10
-
-ERRORCODE_NOTIFY_CFGS.name = "errorcode_notify_cfgs"
-ERRORCODE_NOTIFY_CFGS.full_name = ".ftcfg.errorcode_notify_cfgs"
-ERRORCODE_NOTIFY_CFGS.nested_types = {}
-ERRORCODE_NOTIFY_CFGS.enum_types = {}
-ERRORCODE_NOTIFY_CFGS.fields = {ERRORCODE_NOTIFY_CFGS_ITEMS_FIELD}
-ERRORCODE_NOTIFY_CFGS.is_extendable = false
-ERRORCODE_NOTIFY_CFGS.extensions = {}
-OPEN_RULES_DATA_CFG_ID_FIELD.name = "id"
-OPEN_RULES_DATA_CFG_ID_FIELD.full_name = ".ftcfg.open_rules_data_cfg.id"
-OPEN_RULES_DATA_CFG_ID_FIELD.number = 1
-OPEN_RULES_DATA_CFG_ID_FIELD.index = 0
-OPEN_RULES_DATA_CFG_ID_FIELD.label = 2
-OPEN_RULES_DATA_CFG_ID_FIELD.has_default_value = false
-OPEN_RULES_DATA_CFG_ID_FIELD.default_value = 0
-OPEN_RULES_DATA_CFG_ID_FIELD.type = 5
-OPEN_RULES_DATA_CFG_ID_FIELD.cpp_type = 1
-
-OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.name = "open_rules_type"
-OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.full_name = ".ftcfg.open_rules_data_cfg.open_rules_type"
-OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.number = 2
-OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.index = 1
-OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.label = 2
-OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.has_default_value = false
-OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.default_value = 0
-OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.type = 5
-OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD.cpp_type = 1
-
-OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.name = "limit_type"
-OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.full_name = ".ftcfg.open_rules_data_cfg.limit_type"
-OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.number = 3
-OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.index = 2
-OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.label = 2
-OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.has_default_value = false
-OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.default_value = 0
-OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.type = 5
-OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD.cpp_type = 1
-
-OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.name = "limit_day"
-OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.full_name = ".ftcfg.open_rules_data_cfg.limit_day"
-OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.number = 4
-OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.index = 3
-OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.label = 2
-OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.has_default_value = false
-OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.default_value = 0
-OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.type = 5
-OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD.cpp_type = 1
-
-OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.name = "begin_hour"
-OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.full_name = ".ftcfg.open_rules_data_cfg.begin_hour"
-OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.number = 5
-OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.index = 4
-OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.label = 2
-OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.has_default_value = false
-OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.default_value = 0
-OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.type = 5
-OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD.cpp_type = 1
-
-OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.name = "begin_min"
-OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.full_name = ".ftcfg.open_rules_data_cfg.begin_min"
-OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.number = 6
-OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.index = 5
-OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.label = 2
-OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.has_default_value = false
-OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.default_value = 0
-OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.type = 5
-OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD.cpp_type = 1
-
-OPEN_RULES_DATA_CFG_END_HOUR_FIELD.name = "end_hour"
-OPEN_RULES_DATA_CFG_END_HOUR_FIELD.full_name = ".ftcfg.open_rules_data_cfg.end_hour"
-OPEN_RULES_DATA_CFG_END_HOUR_FIELD.number = 7
-OPEN_RULES_DATA_CFG_END_HOUR_FIELD.index = 6
-OPEN_RULES_DATA_CFG_END_HOUR_FIELD.label = 2
-OPEN_RULES_DATA_CFG_END_HOUR_FIELD.has_default_value = false
-OPEN_RULES_DATA_CFG_END_HOUR_FIELD.default_value = 0
-OPEN_RULES_DATA_CFG_END_HOUR_FIELD.type = 5
-OPEN_RULES_DATA_CFG_END_HOUR_FIELD.cpp_type = 1
-
-OPEN_RULES_DATA_CFG_END_MIN_FIELD.name = "end_min"
-OPEN_RULES_DATA_CFG_END_MIN_FIELD.full_name = ".ftcfg.open_rules_data_cfg.end_min"
-OPEN_RULES_DATA_CFG_END_MIN_FIELD.number = 8
-OPEN_RULES_DATA_CFG_END_MIN_FIELD.index = 7
-OPEN_RULES_DATA_CFG_END_MIN_FIELD.label = 2
-OPEN_RULES_DATA_CFG_END_MIN_FIELD.has_default_value = false
-OPEN_RULES_DATA_CFG_END_MIN_FIELD.default_value = 0
-OPEN_RULES_DATA_CFG_END_MIN_FIELD.type = 5
-OPEN_RULES_DATA_CFG_END_MIN_FIELD.cpp_type = 1
-
-OPEN_RULES_DATA_CFG.name = "open_rules_data_cfg"
-OPEN_RULES_DATA_CFG.full_name = ".ftcfg.open_rules_data_cfg"
-OPEN_RULES_DATA_CFG.nested_types = {}
-OPEN_RULES_DATA_CFG.enum_types = {}
-OPEN_RULES_DATA_CFG.fields = {OPEN_RULES_DATA_CFG_ID_FIELD, OPEN_RULES_DATA_CFG_OPEN_RULES_TYPE_FIELD, OPEN_RULES_DATA_CFG_LIMIT_TYPE_FIELD, OPEN_RULES_DATA_CFG_LIMIT_DAY_FIELD, OPEN_RULES_DATA_CFG_BEGIN_HOUR_FIELD, OPEN_RULES_DATA_CFG_BEGIN_MIN_FIELD, OPEN_RULES_DATA_CFG_END_HOUR_FIELD, OPEN_RULES_DATA_CFG_END_MIN_FIELD}
-OPEN_RULES_DATA_CFG.is_extendable = false
-OPEN_RULES_DATA_CFG.extensions = {}
-OPEN_RULES_DATA_CFGS_ITEMS_FIELD.name = "items"
-OPEN_RULES_DATA_CFGS_ITEMS_FIELD.full_name = ".ftcfg.open_rules_data_cfgs.items"
-OPEN_RULES_DATA_CFGS_ITEMS_FIELD.number = 1
-OPEN_RULES_DATA_CFGS_ITEMS_FIELD.index = 0
-OPEN_RULES_DATA_CFGS_ITEMS_FIELD.label = 3
-OPEN_RULES_DATA_CFGS_ITEMS_FIELD.has_default_value = false
-OPEN_RULES_DATA_CFGS_ITEMS_FIELD.default_value = {}
-OPEN_RULES_DATA_CFGS_ITEMS_FIELD.message_type = OPEN_RULES_DATA_CFG
-OPEN_RULES_DATA_CFGS_ITEMS_FIELD.type = 11
-OPEN_RULES_DATA_CFGS_ITEMS_FIELD.cpp_type = 10
-
-OPEN_RULES_DATA_CFGS.name = "open_rules_data_cfgs"
-OPEN_RULES_DATA_CFGS.full_name = ".ftcfg.open_rules_data_cfgs"
-OPEN_RULES_DATA_CFGS.nested_types = {}
-OPEN_RULES_DATA_CFGS.enum_types = {}
-OPEN_RULES_DATA_CFGS.fields = {OPEN_RULES_DATA_CFGS_ITEMS_FIELD}
-OPEN_RULES_DATA_CFGS.is_extendable = false
-OPEN_RULES_DATA_CFGS.extensions = {}
-CAMPBOSS_CFG_ID_FIELD.name = "id"
-CAMPBOSS_CFG_ID_FIELD.full_name = ".ftcfg.campboss_cfg.id"
-CAMPBOSS_CFG_ID_FIELD.number = 1
-CAMPBOSS_CFG_ID_FIELD.index = 0
-CAMPBOSS_CFG_ID_FIELD.label = 2
-CAMPBOSS_CFG_ID_FIELD.has_default_value = false
-CAMPBOSS_CFG_ID_FIELD.default_value = 0
-CAMPBOSS_CFG_ID_FIELD.type = 5
-CAMPBOSS_CFG_ID_FIELD.cpp_type = 1
-
-CAMPBOSS_CFG_NEED_LEVEL_FIELD.name = "need_level"
-CAMPBOSS_CFG_NEED_LEVEL_FIELD.full_name = ".ftcfg.campboss_cfg.need_level"
-CAMPBOSS_CFG_NEED_LEVEL_FIELD.number = 2
-CAMPBOSS_CFG_NEED_LEVEL_FIELD.index = 1
-CAMPBOSS_CFG_NEED_LEVEL_FIELD.label = 2
-CAMPBOSS_CFG_NEED_LEVEL_FIELD.has_default_value = false
-CAMPBOSS_CFG_NEED_LEVEL_FIELD.default_value = 0
-CAMPBOSS_CFG_NEED_LEVEL_FIELD.type = 5
-CAMPBOSS_CFG_NEED_LEVEL_FIELD.cpp_type = 1
-
-CAMPBOSS_CFG_SCENE_ID_FIELD.name = "scene_id"
-CAMPBOSS_CFG_SCENE_ID_FIELD.full_name = ".ftcfg.campboss_cfg.scene_id"
-CAMPBOSS_CFG_SCENE_ID_FIELD.number = 3
-CAMPBOSS_CFG_SCENE_ID_FIELD.index = 2
-CAMPBOSS_CFG_SCENE_ID_FIELD.label = 2
-CAMPBOSS_CFG_SCENE_ID_FIELD.has_default_value = false
-CAMPBOSS_CFG_SCENE_ID_FIELD.default_value = 0
-CAMPBOSS_CFG_SCENE_ID_FIELD.type = 5
-CAMPBOSS_CFG_SCENE_ID_FIELD.cpp_type = 1
-
-CAMPBOSS_CFG_MAP_ID_FIELD.name = "map_id"
-CAMPBOSS_CFG_MAP_ID_FIELD.full_name = ".ftcfg.campboss_cfg.map_id"
-CAMPBOSS_CFG_MAP_ID_FIELD.number = 4
-CAMPBOSS_CFG_MAP_ID_FIELD.index = 3
-CAMPBOSS_CFG_MAP_ID_FIELD.label = 2
-CAMPBOSS_CFG_MAP_ID_FIELD.has_default_value = false
-CAMPBOSS_CFG_MAP_ID_FIELD.default_value = 0
-CAMPBOSS_CFG_MAP_ID_FIELD.type = 5
-CAMPBOSS_CFG_MAP_ID_FIELD.cpp_type = 1
-
-CAMPBOSS_CFG_X_POINT_FIELD.name = "x_point"
-CAMPBOSS_CFG_X_POINT_FIELD.full_name = ".ftcfg.campboss_cfg.x_point"
-CAMPBOSS_CFG_X_POINT_FIELD.number = 5
-CAMPBOSS_CFG_X_POINT_FIELD.index = 4
-CAMPBOSS_CFG_X_POINT_FIELD.label = 2
-CAMPBOSS_CFG_X_POINT_FIELD.has_default_value = false
-CAMPBOSS_CFG_X_POINT_FIELD.default_value = 0.0
-CAMPBOSS_CFG_X_POINT_FIELD.type = 2
-CAMPBOSS_CFG_X_POINT_FIELD.cpp_type = 6
-
-CAMPBOSS_CFG_Y_POINT_FIELD.name = "y_point"
-CAMPBOSS_CFG_Y_POINT_FIELD.full_name = ".ftcfg.campboss_cfg.y_point"
-CAMPBOSS_CFG_Y_POINT_FIELD.number = 6
-CAMPBOSS_CFG_Y_POINT_FIELD.index = 5
-CAMPBOSS_CFG_Y_POINT_FIELD.label = 2
-CAMPBOSS_CFG_Y_POINT_FIELD.has_default_value = false
-CAMPBOSS_CFG_Y_POINT_FIELD.default_value = 0.0
-CAMPBOSS_CFG_Y_POINT_FIELD.type = 2
-CAMPBOSS_CFG_Y_POINT_FIELD.cpp_type = 6
-
-CAMPBOSS_CFG_Z_POINT_FIELD.name = "z_point"
-CAMPBOSS_CFG_Z_POINT_FIELD.full_name = ".ftcfg.campboss_cfg.z_point"
-CAMPBOSS_CFG_Z_POINT_FIELD.number = 7
-CAMPBOSS_CFG_Z_POINT_FIELD.index = 6
-CAMPBOSS_CFG_Z_POINT_FIELD.label = 2
-CAMPBOSS_CFG_Z_POINT_FIELD.has_default_value = false
-CAMPBOSS_CFG_Z_POINT_FIELD.default_value = 0.0
-CAMPBOSS_CFG_Z_POINT_FIELD.type = 2
-CAMPBOSS_CFG_Z_POINT_FIELD.cpp_type = 6
-
-CAMPBOSS_CFG.name = "campboss_cfg"
-CAMPBOSS_CFG.full_name = ".ftcfg.campboss_cfg"
-CAMPBOSS_CFG.nested_types = {}
-CAMPBOSS_CFG.enum_types = {}
-CAMPBOSS_CFG.fields = {CAMPBOSS_CFG_ID_FIELD, CAMPBOSS_CFG_NEED_LEVEL_FIELD, CAMPBOSS_CFG_SCENE_ID_FIELD, CAMPBOSS_CFG_MAP_ID_FIELD, CAMPBOSS_CFG_X_POINT_FIELD, CAMPBOSS_CFG_Y_POINT_FIELD, CAMPBOSS_CFG_Z_POINT_FIELD}
-CAMPBOSS_CFG.is_extendable = false
-CAMPBOSS_CFG.extensions = {}
-CAMPBOSS_CFGS_ITEMS_FIELD.name = "items"
-CAMPBOSS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.campboss_cfgs.items"
-CAMPBOSS_CFGS_ITEMS_FIELD.number = 1
-CAMPBOSS_CFGS_ITEMS_FIELD.index = 0
-CAMPBOSS_CFGS_ITEMS_FIELD.label = 3
-CAMPBOSS_CFGS_ITEMS_FIELD.has_default_value = false
-CAMPBOSS_CFGS_ITEMS_FIELD.default_value = {}
-CAMPBOSS_CFGS_ITEMS_FIELD.message_type = CAMPBOSS_CFG
-CAMPBOSS_CFGS_ITEMS_FIELD.type = 11
-CAMPBOSS_CFGS_ITEMS_FIELD.cpp_type = 10
-
-CAMPBOSS_CFGS.name = "campboss_cfgs"
-CAMPBOSS_CFGS.full_name = ".ftcfg.campboss_cfgs"
-CAMPBOSS_CFGS.nested_types = {}
-CAMPBOSS_CFGS.enum_types = {}
-CAMPBOSS_CFGS.fields = {CAMPBOSS_CFGS_ITEMS_FIELD}
-CAMPBOSS_CFGS.is_extendable = false
-CAMPBOSS_CFGS.extensions = {}
-TIPS_CFG_ID_FIELD.name = "id"
-TIPS_CFG_ID_FIELD.full_name = ".ftcfg.tips_cfg.id"
-TIPS_CFG_ID_FIELD.number = 1
-TIPS_CFG_ID_FIELD.index = 0
-TIPS_CFG_ID_FIELD.label = 2
-TIPS_CFG_ID_FIELD.has_default_value = false
-TIPS_CFG_ID_FIELD.default_value = 0
-TIPS_CFG_ID_FIELD.type = 5
-TIPS_CFG_ID_FIELD.cpp_type = 1
-
-TIPS_CFG_TYPE_FIELD.name = "type"
-TIPS_CFG_TYPE_FIELD.full_name = ".ftcfg.tips_cfg.type"
-TIPS_CFG_TYPE_FIELD.number = 2
-TIPS_CFG_TYPE_FIELD.index = 1
-TIPS_CFG_TYPE_FIELD.label = 2
-TIPS_CFG_TYPE_FIELD.has_default_value = false
-TIPS_CFG_TYPE_FIELD.default_value = nil
-TIPS_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ESYSTEMCHATTYPE
-TIPS_CFG_TYPE_FIELD.type = 14
-TIPS_CFG_TYPE_FIELD.cpp_type = 8
-
-TIPS_CFG_CONTENT_FIELD.name = "content"
-TIPS_CFG_CONTENT_FIELD.full_name = ".ftcfg.tips_cfg.content"
-TIPS_CFG_CONTENT_FIELD.number = 3
-TIPS_CFG_CONTENT_FIELD.index = 2
-TIPS_CFG_CONTENT_FIELD.label = 2
-TIPS_CFG_CONTENT_FIELD.has_default_value = false
-TIPS_CFG_CONTENT_FIELD.default_value = ""
-TIPS_CFG_CONTENT_FIELD.type = 9
-TIPS_CFG_CONTENT_FIELD.cpp_type = 9
-
-TIPS_CFG.name = "tips_cfg"
-TIPS_CFG.full_name = ".ftcfg.tips_cfg"
-TIPS_CFG.nested_types = {}
-TIPS_CFG.enum_types = {}
-TIPS_CFG.fields = {TIPS_CFG_ID_FIELD, TIPS_CFG_TYPE_FIELD, TIPS_CFG_CONTENT_FIELD}
-TIPS_CFG.is_extendable = false
-TIPS_CFG.extensions = {}
-TIPS_CFGS_ITEMS_FIELD.name = "items"
-TIPS_CFGS_ITEMS_FIELD.full_name = ".ftcfg.tips_cfgs.items"
-TIPS_CFGS_ITEMS_FIELD.number = 1
-TIPS_CFGS_ITEMS_FIELD.index = 0
-TIPS_CFGS_ITEMS_FIELD.label = 3
-TIPS_CFGS_ITEMS_FIELD.has_default_value = false
-TIPS_CFGS_ITEMS_FIELD.default_value = {}
-TIPS_CFGS_ITEMS_FIELD.message_type = TIPS_CFG
-TIPS_CFGS_ITEMS_FIELD.type = 11
-TIPS_CFGS_ITEMS_FIELD.cpp_type = 10
-
-TIPS_CFGS.name = "tips_cfgs"
-TIPS_CFGS.full_name = ".ftcfg.tips_cfgs"
-TIPS_CFGS.nested_types = {}
-TIPS_CFGS.enum_types = {}
-TIPS_CFGS.fields = {TIPS_CFGS_ITEMS_FIELD}
-TIPS_CFGS.is_extendable = false
-TIPS_CFGS.extensions = {}
-CAMP_RELATION_CFG_ID_FIELD.name = "id"
-CAMP_RELATION_CFG_ID_FIELD.full_name = ".ftcfg.camp_relation_cfg.id"
-CAMP_RELATION_CFG_ID_FIELD.number = 1
-CAMP_RELATION_CFG_ID_FIELD.index = 0
-CAMP_RELATION_CFG_ID_FIELD.label = 2
-CAMP_RELATION_CFG_ID_FIELD.has_default_value = false
-CAMP_RELATION_CFG_ID_FIELD.default_value = 0
-CAMP_RELATION_CFG_ID_FIELD.type = 5
-CAMP_RELATION_CFG_ID_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_SCRIP_FIELD.name = "scrip"
-CAMP_RELATION_CFG_SCRIP_FIELD.full_name = ".ftcfg.camp_relation_cfg.scrip"
-CAMP_RELATION_CFG_SCRIP_FIELD.number = 2
-CAMP_RELATION_CFG_SCRIP_FIELD.index = 1
-CAMP_RELATION_CFG_SCRIP_FIELD.label = 2
-CAMP_RELATION_CFG_SCRIP_FIELD.has_default_value = false
-CAMP_RELATION_CFG_SCRIP_FIELD.default_value = ""
-CAMP_RELATION_CFG_SCRIP_FIELD.type = 9
-CAMP_RELATION_CFG_SCRIP_FIELD.cpp_type = 9
-
-CAMP_RELATION_CFG_TYPE_FIELD.name = "type"
-CAMP_RELATION_CFG_TYPE_FIELD.full_name = ".ftcfg.camp_relation_cfg.type"
-CAMP_RELATION_CFG_TYPE_FIELD.number = 3
-CAMP_RELATION_CFG_TYPE_FIELD.index = 2
-CAMP_RELATION_CFG_TYPE_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.name = "type_scrip"
-CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.full_name = ".ftcfg.camp_relation_cfg.type_scrip"
-CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.number = 4
-CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.index = 3
-CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.default_value = ""
-CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.type = 9
-CAMP_RELATION_CFG_TYPE_SCRIP_FIELD.cpp_type = 9
-
-CAMP_RELATION_CFG_TYPE0_FIELD.name = "type0"
-CAMP_RELATION_CFG_TYPE0_FIELD.full_name = ".ftcfg.camp_relation_cfg.type0"
-CAMP_RELATION_CFG_TYPE0_FIELD.number = 5
-CAMP_RELATION_CFG_TYPE0_FIELD.index = 4
-CAMP_RELATION_CFG_TYPE0_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE0_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE0_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE0_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE0_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_TYPE1_FIELD.name = "type1"
-CAMP_RELATION_CFG_TYPE1_FIELD.full_name = ".ftcfg.camp_relation_cfg.type1"
-CAMP_RELATION_CFG_TYPE1_FIELD.number = 6
-CAMP_RELATION_CFG_TYPE1_FIELD.index = 5
-CAMP_RELATION_CFG_TYPE1_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE1_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE1_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE1_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE1_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_TYPE2_FIELD.name = "type2"
-CAMP_RELATION_CFG_TYPE2_FIELD.full_name = ".ftcfg.camp_relation_cfg.type2"
-CAMP_RELATION_CFG_TYPE2_FIELD.number = 7
-CAMP_RELATION_CFG_TYPE2_FIELD.index = 6
-CAMP_RELATION_CFG_TYPE2_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE2_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE2_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE2_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE2_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_TYPE3_FIELD.name = "type3"
-CAMP_RELATION_CFG_TYPE3_FIELD.full_name = ".ftcfg.camp_relation_cfg.type3"
-CAMP_RELATION_CFG_TYPE3_FIELD.number = 8
-CAMP_RELATION_CFG_TYPE3_FIELD.index = 7
-CAMP_RELATION_CFG_TYPE3_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE3_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE3_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE3_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE3_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_TYPE4_FIELD.name = "type4"
-CAMP_RELATION_CFG_TYPE4_FIELD.full_name = ".ftcfg.camp_relation_cfg.type4"
-CAMP_RELATION_CFG_TYPE4_FIELD.number = 9
-CAMP_RELATION_CFG_TYPE4_FIELD.index = 8
-CAMP_RELATION_CFG_TYPE4_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE4_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE4_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE4_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE4_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_TYPE5_FIELD.name = "type5"
-CAMP_RELATION_CFG_TYPE5_FIELD.full_name = ".ftcfg.camp_relation_cfg.type5"
-CAMP_RELATION_CFG_TYPE5_FIELD.number = 10
-CAMP_RELATION_CFG_TYPE5_FIELD.index = 9
-CAMP_RELATION_CFG_TYPE5_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE5_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE5_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE5_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE5_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_TYPE6_FIELD.name = "type6"
-CAMP_RELATION_CFG_TYPE6_FIELD.full_name = ".ftcfg.camp_relation_cfg.type6"
-CAMP_RELATION_CFG_TYPE6_FIELD.number = 11
-CAMP_RELATION_CFG_TYPE6_FIELD.index = 10
-CAMP_RELATION_CFG_TYPE6_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE6_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE6_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE6_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE6_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_TYPE7_FIELD.name = "type7"
-CAMP_RELATION_CFG_TYPE7_FIELD.full_name = ".ftcfg.camp_relation_cfg.type7"
-CAMP_RELATION_CFG_TYPE7_FIELD.number = 12
-CAMP_RELATION_CFG_TYPE7_FIELD.index = 11
-CAMP_RELATION_CFG_TYPE7_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE7_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE7_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE7_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE7_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_TYPE8_FIELD.name = "type8"
-CAMP_RELATION_CFG_TYPE8_FIELD.full_name = ".ftcfg.camp_relation_cfg.type8"
-CAMP_RELATION_CFG_TYPE8_FIELD.number = 13
-CAMP_RELATION_CFG_TYPE8_FIELD.index = 12
-CAMP_RELATION_CFG_TYPE8_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE8_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE8_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE8_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE8_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_TYPE9_FIELD.name = "type9"
-CAMP_RELATION_CFG_TYPE9_FIELD.full_name = ".ftcfg.camp_relation_cfg.type9"
-CAMP_RELATION_CFG_TYPE9_FIELD.number = 14
-CAMP_RELATION_CFG_TYPE9_FIELD.index = 13
-CAMP_RELATION_CFG_TYPE9_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE9_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE9_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE9_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE9_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_TYPE10_FIELD.name = "type10"
-CAMP_RELATION_CFG_TYPE10_FIELD.full_name = ".ftcfg.camp_relation_cfg.type10"
-CAMP_RELATION_CFG_TYPE10_FIELD.number = 15
-CAMP_RELATION_CFG_TYPE10_FIELD.index = 14
-CAMP_RELATION_CFG_TYPE10_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE10_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE10_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE10_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE10_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_TYPE11_FIELD.name = "type11"
-CAMP_RELATION_CFG_TYPE11_FIELD.full_name = ".ftcfg.camp_relation_cfg.type11"
-CAMP_RELATION_CFG_TYPE11_FIELD.number = 16
-CAMP_RELATION_CFG_TYPE11_FIELD.index = 15
-CAMP_RELATION_CFG_TYPE11_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE11_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE11_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE11_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE11_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_TYPE12_FIELD.name = "type12"
-CAMP_RELATION_CFG_TYPE12_FIELD.full_name = ".ftcfg.camp_relation_cfg.type12"
-CAMP_RELATION_CFG_TYPE12_FIELD.number = 17
-CAMP_RELATION_CFG_TYPE12_FIELD.index = 16
-CAMP_RELATION_CFG_TYPE12_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE12_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE12_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE12_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE12_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_TYPE13_FIELD.name = "type13"
-CAMP_RELATION_CFG_TYPE13_FIELD.full_name = ".ftcfg.camp_relation_cfg.type13"
-CAMP_RELATION_CFG_TYPE13_FIELD.number = 18
-CAMP_RELATION_CFG_TYPE13_FIELD.index = 17
-CAMP_RELATION_CFG_TYPE13_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE13_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE13_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE13_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE13_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_TYPE14_FIELD.name = "type14"
-CAMP_RELATION_CFG_TYPE14_FIELD.full_name = ".ftcfg.camp_relation_cfg.type14"
-CAMP_RELATION_CFG_TYPE14_FIELD.number = 19
-CAMP_RELATION_CFG_TYPE14_FIELD.index = 18
-CAMP_RELATION_CFG_TYPE14_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE14_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE14_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE14_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE14_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG_TYPE15_FIELD.name = "type15"
-CAMP_RELATION_CFG_TYPE15_FIELD.full_name = ".ftcfg.camp_relation_cfg.type15"
-CAMP_RELATION_CFG_TYPE15_FIELD.number = 20
-CAMP_RELATION_CFG_TYPE15_FIELD.index = 19
-CAMP_RELATION_CFG_TYPE15_FIELD.label = 2
-CAMP_RELATION_CFG_TYPE15_FIELD.has_default_value = false
-CAMP_RELATION_CFG_TYPE15_FIELD.default_value = 0
-CAMP_RELATION_CFG_TYPE15_FIELD.type = 5
-CAMP_RELATION_CFG_TYPE15_FIELD.cpp_type = 1
-
-CAMP_RELATION_CFG.name = "camp_relation_cfg"
-CAMP_RELATION_CFG.full_name = ".ftcfg.camp_relation_cfg"
-CAMP_RELATION_CFG.nested_types = {}
-CAMP_RELATION_CFG.enum_types = {}
-CAMP_RELATION_CFG.fields = {CAMP_RELATION_CFG_ID_FIELD, CAMP_RELATION_CFG_SCRIP_FIELD, CAMP_RELATION_CFG_TYPE_FIELD, CAMP_RELATION_CFG_TYPE_SCRIP_FIELD, CAMP_RELATION_CFG_TYPE0_FIELD, CAMP_RELATION_CFG_TYPE1_FIELD, CAMP_RELATION_CFG_TYPE2_FIELD, CAMP_RELATION_CFG_TYPE3_FIELD, CAMP_RELATION_CFG_TYPE4_FIELD, CAMP_RELATION_CFG_TYPE5_FIELD, CAMP_RELATION_CFG_TYPE6_FIELD, CAMP_RELATION_CFG_TYPE7_FIELD, CAMP_RELATION_CFG_TYPE8_FIELD, CAMP_RELATION_CFG_TYPE9_FIELD, CAMP_RELATION_CFG_TYPE10_FIELD, CAMP_RELATION_CFG_TYPE11_FIELD, CAMP_RELATION_CFG_TYPE12_FIELD, CAMP_RELATION_CFG_TYPE13_FIELD, CAMP_RELATION_CFG_TYPE14_FIELD, CAMP_RELATION_CFG_TYPE15_FIELD}
-CAMP_RELATION_CFG.is_extendable = false
-CAMP_RELATION_CFG.extensions = {}
-CAMP_RELATION_CFGS_ITEMS_FIELD.name = "items"
-CAMP_RELATION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.camp_relation_cfgs.items"
-CAMP_RELATION_CFGS_ITEMS_FIELD.number = 1
-CAMP_RELATION_CFGS_ITEMS_FIELD.index = 0
-CAMP_RELATION_CFGS_ITEMS_FIELD.label = 3
-CAMP_RELATION_CFGS_ITEMS_FIELD.has_default_value = false
-CAMP_RELATION_CFGS_ITEMS_FIELD.default_value = {}
-CAMP_RELATION_CFGS_ITEMS_FIELD.message_type = CAMP_RELATION_CFG
-CAMP_RELATION_CFGS_ITEMS_FIELD.type = 11
-CAMP_RELATION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-CAMP_RELATION_CFGS.name = "camp_relation_cfgs"
-CAMP_RELATION_CFGS.full_name = ".ftcfg.camp_relation_cfgs"
-CAMP_RELATION_CFGS.nested_types = {}
-CAMP_RELATION_CFGS.enum_types = {}
-CAMP_RELATION_CFGS.fields = {CAMP_RELATION_CFGS_ITEMS_FIELD}
-CAMP_RELATION_CFGS.is_extendable = false
-CAMP_RELATION_CFGS.extensions = {}
-CAMP_CHANGE_COST_CFG_ID_FIELD.name = "id"
-CAMP_CHANGE_COST_CFG_ID_FIELD.full_name = ".ftcfg.camp_change_cost_cfg.id"
-CAMP_CHANGE_COST_CFG_ID_FIELD.number = 1
-CAMP_CHANGE_COST_CFG_ID_FIELD.index = 0
-CAMP_CHANGE_COST_CFG_ID_FIELD.label = 2
-CAMP_CHANGE_COST_CFG_ID_FIELD.has_default_value = false
-CAMP_CHANGE_COST_CFG_ID_FIELD.default_value = 0
-CAMP_CHANGE_COST_CFG_ID_FIELD.type = 5
-CAMP_CHANGE_COST_CFG_ID_FIELD.cpp_type = 1
-
-CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.name = "coin_type"
-CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.full_name = ".ftcfg.camp_change_cost_cfg.coin_type"
-CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.number = 2
-CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.index = 1
-CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.label = 3
-CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.has_default_value = false
-CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.default_value = {}
-CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.type = 5
-CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD.cpp_type = 1
-
-CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.name = "coin_num"
-CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.full_name = ".ftcfg.camp_change_cost_cfg.coin_num"
-CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.number = 3
-CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.index = 2
-CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.label = 3
-CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.has_default_value = false
-CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.default_value = {}
-CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.type = 5
-CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD.cpp_type = 1
-
-CAMP_CHANGE_COST_CFG.name = "camp_change_cost_cfg"
-CAMP_CHANGE_COST_CFG.full_name = ".ftcfg.camp_change_cost_cfg"
-CAMP_CHANGE_COST_CFG.nested_types = {}
-CAMP_CHANGE_COST_CFG.enum_types = {}
-CAMP_CHANGE_COST_CFG.fields = {CAMP_CHANGE_COST_CFG_ID_FIELD, CAMP_CHANGE_COST_CFG_COIN_TYPE_FIELD, CAMP_CHANGE_COST_CFG_COIN_NUM_FIELD}
-CAMP_CHANGE_COST_CFG.is_extendable = false
-CAMP_CHANGE_COST_CFG.extensions = {}
-CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.name = "items"
-CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.full_name = ".ftcfg.camp_change_cost_cfgs.items"
-CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.number = 1
-CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.index = 0
-CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.label = 3
-CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.has_default_value = false
-CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.default_value = {}
-CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.message_type = CAMP_CHANGE_COST_CFG
-CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.type = 11
-CAMP_CHANGE_COST_CFGS_ITEMS_FIELD.cpp_type = 10
-
-CAMP_CHANGE_COST_CFGS.name = "camp_change_cost_cfgs"
-CAMP_CHANGE_COST_CFGS.full_name = ".ftcfg.camp_change_cost_cfgs"
-CAMP_CHANGE_COST_CFGS.nested_types = {}
-CAMP_CHANGE_COST_CFGS.enum_types = {}
-CAMP_CHANGE_COST_CFGS.fields = {CAMP_CHANGE_COST_CFGS_ITEMS_FIELD}
-CAMP_CHANGE_COST_CFGS.is_extendable = false
-CAMP_CHANGE_COST_CFGS.extensions = {}
-RANDOMMAN_CFG_NAME0_FIELD.name = "name0"
-RANDOMMAN_CFG_NAME0_FIELD.full_name = ".ftcfg.randomman_cfg.name0"
-RANDOMMAN_CFG_NAME0_FIELD.number = 1
-RANDOMMAN_CFG_NAME0_FIELD.index = 0
-RANDOMMAN_CFG_NAME0_FIELD.label = 2
-RANDOMMAN_CFG_NAME0_FIELD.has_default_value = false
-RANDOMMAN_CFG_NAME0_FIELD.default_value = ""
-RANDOMMAN_CFG_NAME0_FIELD.type = 9
-RANDOMMAN_CFG_NAME0_FIELD.cpp_type = 9
-
-RANDOMMAN_CFG_NAME1_FIELD.name = "name1"
-RANDOMMAN_CFG_NAME1_FIELD.full_name = ".ftcfg.randomman_cfg.name1"
-RANDOMMAN_CFG_NAME1_FIELD.number = 2
-RANDOMMAN_CFG_NAME1_FIELD.index = 1
-RANDOMMAN_CFG_NAME1_FIELD.label = 2
-RANDOMMAN_CFG_NAME1_FIELD.has_default_value = false
-RANDOMMAN_CFG_NAME1_FIELD.default_value = ""
-RANDOMMAN_CFG_NAME1_FIELD.type = 9
-RANDOMMAN_CFG_NAME1_FIELD.cpp_type = 9
-
-RANDOMMAN_CFG.name = "randomman_cfg"
-RANDOMMAN_CFG.full_name = ".ftcfg.randomman_cfg"
-RANDOMMAN_CFG.nested_types = {}
-RANDOMMAN_CFG.enum_types = {}
-RANDOMMAN_CFG.fields = {RANDOMMAN_CFG_NAME0_FIELD, RANDOMMAN_CFG_NAME1_FIELD}
-RANDOMMAN_CFG.is_extendable = false
-RANDOMMAN_CFG.extensions = {}
-RANDOMMAN_CFGS_ITEMS_FIELD.name = "items"
-RANDOMMAN_CFGS_ITEMS_FIELD.full_name = ".ftcfg.randomman_cfgs.items"
-RANDOMMAN_CFGS_ITEMS_FIELD.number = 1
-RANDOMMAN_CFGS_ITEMS_FIELD.index = 0
-RANDOMMAN_CFGS_ITEMS_FIELD.label = 3
-RANDOMMAN_CFGS_ITEMS_FIELD.has_default_value = false
-RANDOMMAN_CFGS_ITEMS_FIELD.default_value = {}
-RANDOMMAN_CFGS_ITEMS_FIELD.message_type = RANDOMMAN_CFG
-RANDOMMAN_CFGS_ITEMS_FIELD.type = 11
-RANDOMMAN_CFGS_ITEMS_FIELD.cpp_type = 10
-
-RANDOMMAN_CFGS.name = "randomman_cfgs"
-RANDOMMAN_CFGS.full_name = ".ftcfg.randomman_cfgs"
-RANDOMMAN_CFGS.nested_types = {}
-RANDOMMAN_CFGS.enum_types = {}
-RANDOMMAN_CFGS.fields = {RANDOMMAN_CFGS_ITEMS_FIELD}
-RANDOMMAN_CFGS.is_extendable = false
-RANDOMMAN_CFGS.extensions = {}
-RANDOMWOMAN_CFG_NAME0_FIELD.name = "name0"
-RANDOMWOMAN_CFG_NAME0_FIELD.full_name = ".ftcfg.randomwoman_cfg.name0"
-RANDOMWOMAN_CFG_NAME0_FIELD.number = 1
-RANDOMWOMAN_CFG_NAME0_FIELD.index = 0
-RANDOMWOMAN_CFG_NAME0_FIELD.label = 2
-RANDOMWOMAN_CFG_NAME0_FIELD.has_default_value = false
-RANDOMWOMAN_CFG_NAME0_FIELD.default_value = ""
-RANDOMWOMAN_CFG_NAME0_FIELD.type = 9
-RANDOMWOMAN_CFG_NAME0_FIELD.cpp_type = 9
-
-RANDOMWOMAN_CFG_NAME1_FIELD.name = "name1"
-RANDOMWOMAN_CFG_NAME1_FIELD.full_name = ".ftcfg.randomwoman_cfg.name1"
-RANDOMWOMAN_CFG_NAME1_FIELD.number = 2
-RANDOMWOMAN_CFG_NAME1_FIELD.index = 1
-RANDOMWOMAN_CFG_NAME1_FIELD.label = 2
-RANDOMWOMAN_CFG_NAME1_FIELD.has_default_value = false
-RANDOMWOMAN_CFG_NAME1_FIELD.default_value = ""
-RANDOMWOMAN_CFG_NAME1_FIELD.type = 9
-RANDOMWOMAN_CFG_NAME1_FIELD.cpp_type = 9
-
-RANDOMWOMAN_CFG.name = "randomwoman_cfg"
-RANDOMWOMAN_CFG.full_name = ".ftcfg.randomwoman_cfg"
-RANDOMWOMAN_CFG.nested_types = {}
-RANDOMWOMAN_CFG.enum_types = {}
-RANDOMWOMAN_CFG.fields = {RANDOMWOMAN_CFG_NAME0_FIELD, RANDOMWOMAN_CFG_NAME1_FIELD}
-RANDOMWOMAN_CFG.is_extendable = false
-RANDOMWOMAN_CFG.extensions = {}
-RANDOMWOMAN_CFGS_ITEMS_FIELD.name = "items"
-RANDOMWOMAN_CFGS_ITEMS_FIELD.full_name = ".ftcfg.randomwoman_cfgs.items"
-RANDOMWOMAN_CFGS_ITEMS_FIELD.number = 1
-RANDOMWOMAN_CFGS_ITEMS_FIELD.index = 0
-RANDOMWOMAN_CFGS_ITEMS_FIELD.label = 3
-RANDOMWOMAN_CFGS_ITEMS_FIELD.has_default_value = false
-RANDOMWOMAN_CFGS_ITEMS_FIELD.default_value = {}
-RANDOMWOMAN_CFGS_ITEMS_FIELD.message_type = RANDOMWOMAN_CFG
-RANDOMWOMAN_CFGS_ITEMS_FIELD.type = 11
-RANDOMWOMAN_CFGS_ITEMS_FIELD.cpp_type = 10
-
-RANDOMWOMAN_CFGS.name = "randomwoman_cfgs"
-RANDOMWOMAN_CFGS.full_name = ".ftcfg.randomwoman_cfgs"
-RANDOMWOMAN_CFGS.nested_types = {}
-RANDOMWOMAN_CFGS.enum_types = {}
-RANDOMWOMAN_CFGS.fields = {RANDOMWOMAN_CFGS_ITEMS_FIELD}
-RANDOMWOMAN_CFGS.is_extendable = false
-RANDOMWOMAN_CFGS.extensions = {}
-SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.name = "star_level"
-SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.star_level"
-SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.number = 1
-SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.index = 0
-SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.default_value = 0
-SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.type = 13
-SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD.cpp_type = 3
-
-SOUL_BASE_ATTR_CFG_LEVEL_FIELD.name = "level"
-SOUL_BASE_ATTR_CFG_LEVEL_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.level"
-SOUL_BASE_ATTR_CFG_LEVEL_FIELD.number = 2
-SOUL_BASE_ATTR_CFG_LEVEL_FIELD.index = 1
-SOUL_BASE_ATTR_CFG_LEVEL_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_LEVEL_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_LEVEL_FIELD.default_value = 0
-SOUL_BASE_ATTR_CFG_LEVEL_FIELD.type = 13
-SOUL_BASE_ATTR_CFG_LEVEL_FIELD.cpp_type = 3
-
-SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.name = "fight_power"
-SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.fight_power"
-SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.number = 3
-SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.index = 2
-SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.default_value = 0
-SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.type = 5
-SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD.cpp_type = 1
-
-SOUL_BASE_ATTR_CFG_ATTACK_FIELD.name = "attack"
-SOUL_BASE_ATTR_CFG_ATTACK_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.attack"
-SOUL_BASE_ATTR_CFG_ATTACK_FIELD.number = 4
-SOUL_BASE_ATTR_CFG_ATTACK_FIELD.index = 3
-SOUL_BASE_ATTR_CFG_ATTACK_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_ATTACK_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_ATTACK_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_ATTACK_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_ATTACK_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.name = "defense"
-SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.defense"
-SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.number = 5
-SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.index = 4
-SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_DEFENSE_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_MAXHP_FIELD.name = "maxHp"
-SOUL_BASE_ATTR_CFG_MAXHP_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.maxHp"
-SOUL_BASE_ATTR_CFG_MAXHP_FIELD.number = 6
-SOUL_BASE_ATTR_CFG_MAXHP_FIELD.index = 5
-SOUL_BASE_ATTR_CFG_MAXHP_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_MAXHP_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_MAXHP_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_MAXHP_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_MAXHP_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.name = "criticalRate"
-SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.criticalRate"
-SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.number = 7
-SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.index = 6
-SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.name = "criticalPowerRate"
-SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.criticalPowerRate"
-SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.number = 8
-SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.index = 7
-SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_HITRATE_FIELD.name = "hitRate"
-SOUL_BASE_ATTR_CFG_HITRATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.hitRate"
-SOUL_BASE_ATTR_CFG_HITRATE_FIELD.number = 9
-SOUL_BASE_ATTR_CFG_HITRATE_FIELD.index = 8
-SOUL_BASE_ATTR_CFG_HITRATE_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_HITRATE_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_HITRATE_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_HITRATE_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_HITRATE_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.name = "defyBlockRate"
-SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.defyBlockRate"
-SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.number = 10
-SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.index = 9
-SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_MAUD_FIELD.name = "maud"
-SOUL_BASE_ATTR_CFG_MAUD_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.maud"
-SOUL_BASE_ATTR_CFG_MAUD_FIELD.number = 11
-SOUL_BASE_ATTR_CFG_MAUD_FIELD.index = 10
-SOUL_BASE_ATTR_CFG_MAUD_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_MAUD_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_MAUD_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_MAUD_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_MAUD_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_MIND_FIELD.name = "mind"
-SOUL_BASE_ATTR_CFG_MIND_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.mind"
-SOUL_BASE_ATTR_CFG_MIND_FIELD.number = 12
-SOUL_BASE_ATTR_CFG_MIND_FIELD.index = 11
-SOUL_BASE_ATTR_CFG_MIND_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_MIND_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_MIND_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_MIND_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_MIND_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.name = "constitution"
-SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.constitution"
-SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.number = 13
-SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.index = 12
-SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.name = "blockRate"
-SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.blockRate"
-SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.number = 14
-SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.index = 13
-SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.name = "dodgeRate"
-SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.dodgeRate"
-SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.number = 15
-SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.index = 14
-SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_DODGERATE_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.name = "antiCriticalRate"
-SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.antiCriticalRate"
-SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.number = 16
-SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.index = 15
-SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.name = "antiCriticalPowerRate"
-SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.antiCriticalPowerRate"
-SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.number = 17
-SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.index = 16
-SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.name = "hpHitReturn"
-SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.hpHitReturn"
-SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.number = 18
-SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.index = 17
-SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.name = "intensity"
-SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.intensity"
-SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.number = 19
-SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.index = 18
-SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_INTENSITY_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.name = "defyDefenseRate"
-SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.defyDefenseRate"
-SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.number = 20
-SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.index = 19
-SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.name = "deadlyRate"
-SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.full_name = ".ftcfg.soul_base_attr_cfg.deadlyRate"
-SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.number = 21
-SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.index = 20
-SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.label = 2
-SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.default_value = 0.0
-SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.type = 2
-SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD.cpp_type = 6
-
-SOUL_BASE_ATTR_CFG.name = "soul_base_attr_cfg"
-SOUL_BASE_ATTR_CFG.full_name = ".ftcfg.soul_base_attr_cfg"
-SOUL_BASE_ATTR_CFG.nested_types = {}
-SOUL_BASE_ATTR_CFG.enum_types = {}
-SOUL_BASE_ATTR_CFG.fields = {SOUL_BASE_ATTR_CFG_STAR_LEVEL_FIELD, SOUL_BASE_ATTR_CFG_LEVEL_FIELD, SOUL_BASE_ATTR_CFG_FIGHT_POWER_FIELD, SOUL_BASE_ATTR_CFG_ATTACK_FIELD, SOUL_BASE_ATTR_CFG_DEFENSE_FIELD, SOUL_BASE_ATTR_CFG_MAXHP_FIELD, SOUL_BASE_ATTR_CFG_CRITICALRATE_FIELD, SOUL_BASE_ATTR_CFG_CRITICALPOWERRATE_FIELD, SOUL_BASE_ATTR_CFG_HITRATE_FIELD, SOUL_BASE_ATTR_CFG_DEFYBLOCKRATE_FIELD, SOUL_BASE_ATTR_CFG_MAUD_FIELD, SOUL_BASE_ATTR_CFG_MIND_FIELD, SOUL_BASE_ATTR_CFG_CONSTITUTION_FIELD, SOUL_BASE_ATTR_CFG_BLOCKRATE_FIELD, SOUL_BASE_ATTR_CFG_DODGERATE_FIELD, SOUL_BASE_ATTR_CFG_ANTICRITICALRATE_FIELD, SOUL_BASE_ATTR_CFG_ANTICRITICALPOWERRATE_FIELD, SOUL_BASE_ATTR_CFG_HPHITRETURN_FIELD, SOUL_BASE_ATTR_CFG_INTENSITY_FIELD, SOUL_BASE_ATTR_CFG_DEFYDEFENSERATE_FIELD, SOUL_BASE_ATTR_CFG_DEADLYRATE_FIELD}
-SOUL_BASE_ATTR_CFG.is_extendable = false
-SOUL_BASE_ATTR_CFG.extensions = {}
-SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.name = "items"
-SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.full_name = ".ftcfg.soul_base_attr_cfgs.items"
-SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.number = 1
-SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.index = 0
-SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.label = 3
-SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.has_default_value = false
-SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.default_value = {}
-SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.message_type = SOUL_BASE_ATTR_CFG
-SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.type = 11
-SOUL_BASE_ATTR_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SOUL_BASE_ATTR_CFGS.name = "soul_base_attr_cfgs"
-SOUL_BASE_ATTR_CFGS.full_name = ".ftcfg.soul_base_attr_cfgs"
-SOUL_BASE_ATTR_CFGS.nested_types = {}
-SOUL_BASE_ATTR_CFGS.enum_types = {}
-SOUL_BASE_ATTR_CFGS.fields = {SOUL_BASE_ATTR_CFGS_ITEMS_FIELD}
-SOUL_BASE_ATTR_CFGS.is_extendable = false
-SOUL_BASE_ATTR_CFGS.extensions = {}
-SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.name = "star_level"
-SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.full_name = ".ftcfg.soul_magic_attr_cfg.star_level"
-SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.number = 1
-SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.index = 0
-SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.label = 2
-SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.has_default_value = false
-SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.default_value = 0
-SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.type = 13
-SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD.cpp_type = 3
-
-SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.name = "level"
-SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.full_name = ".ftcfg.soul_magic_attr_cfg.level"
-SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.number = 2
-SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.index = 1
-SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.label = 2
-SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.has_default_value = false
-SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.default_value = 0
-SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.type = 13
-SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD.cpp_type = 3
-
-SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.name = "fight_power"
-SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.full_name = ".ftcfg.soul_magic_attr_cfg.fight_power"
-SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.number = 3
-SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.index = 2
-SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.label = 2
-SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.has_default_value = false
-SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.default_value = 0
-SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.type = 5
-SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD.cpp_type = 1
-
-SOUL_MAGIC_ATTR_CFG.name = "soul_magic_attr_cfg"
-SOUL_MAGIC_ATTR_CFG.full_name = ".ftcfg.soul_magic_attr_cfg"
-SOUL_MAGIC_ATTR_CFG.nested_types = {}
-SOUL_MAGIC_ATTR_CFG.enum_types = {}
-SOUL_MAGIC_ATTR_CFG.fields = {SOUL_MAGIC_ATTR_CFG_STAR_LEVEL_FIELD, SOUL_MAGIC_ATTR_CFG_LEVEL_FIELD, SOUL_MAGIC_ATTR_CFG_FIGHT_POWER_FIELD}
-SOUL_MAGIC_ATTR_CFG.is_extendable = false
-SOUL_MAGIC_ATTR_CFG.extensions = {}
-SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.name = "items"
-SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.full_name = ".ftcfg.soul_magic_attr_cfgs.items"
-SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.number = 1
-SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.index = 0
-SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.label = 3
-SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.has_default_value = false
-SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.default_value = {}
-SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.message_type = SOUL_MAGIC_ATTR_CFG
-SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.type = 11
-SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SOUL_MAGIC_ATTR_CFGS.name = "soul_magic_attr_cfgs"
-SOUL_MAGIC_ATTR_CFGS.full_name = ".ftcfg.soul_magic_attr_cfgs"
-SOUL_MAGIC_ATTR_CFGS.nested_types = {}
-SOUL_MAGIC_ATTR_CFGS.enum_types = {}
-SOUL_MAGIC_ATTR_CFGS.fields = {SOUL_MAGIC_ATTR_CFGS_ITEMS_FIELD}
-SOUL_MAGIC_ATTR_CFGS.is_extendable = false
-SOUL_MAGIC_ATTR_CFGS.extensions = {}
-SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.name = "star_level"
-SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.star_level"
-SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.number = 1
-SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.index = 0
-SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.label = 2
-SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.has_default_value = false
-SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.default_value = 0
-SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.type = 13
-SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD.cpp_type = 3
-
-SOUL_SUIT_ATTR_CFG_SUITID_FIELD.name = "suitid"
-SOUL_SUIT_ATTR_CFG_SUITID_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.suitid"
-SOUL_SUIT_ATTR_CFG_SUITID_FIELD.number = 2
-SOUL_SUIT_ATTR_CFG_SUITID_FIELD.index = 1
-SOUL_SUIT_ATTR_CFG_SUITID_FIELD.label = 2
-SOUL_SUIT_ATTR_CFG_SUITID_FIELD.has_default_value = false
-SOUL_SUIT_ATTR_CFG_SUITID_FIELD.default_value = 0
-SOUL_SUIT_ATTR_CFG_SUITID_FIELD.type = 5
-SOUL_SUIT_ATTR_CFG_SUITID_FIELD.cpp_type = 1
-
-SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.name = "suitname"
-SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.suitname"
-SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.number = 3
-SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.index = 2
-SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.label = 2
-SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.has_default_value = false
-SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.default_value = ""
-SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.type = 9
-SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD.cpp_type = 9
-
-SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.name = "suit_num"
-SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.suit_num"
-SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.number = 4
-SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.index = 3
-SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.label = 2
-SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.has_default_value = false
-SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.default_value = 0
-SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.type = 5
-SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD.cpp_type = 1
-
-SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.name = "prop_type"
-SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.prop_type"
-SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.number = 5
-SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.index = 4
-SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.label = 2
-SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.has_default_value = false
-SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.default_value = nil
-SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPOPTYPE
-SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.type = 14
-SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD.cpp_type = 8
-
-SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.name = "suit_type"
-SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.suit_type"
-SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.number = 6
-SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.index = 5
-SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.label = 2
-SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.has_default_value = false
-SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.default_value = nil
-SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
-SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.type = 14
-SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD.cpp_type = 8
-
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.name = "fight_power"
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.fight_power"
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.number = 7
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.index = 6
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.label = 2
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.has_default_value = false
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.default_value = 0
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.type = 5
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD.cpp_type = 1
-
-SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.name = "suit_data"
-SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.suit_data"
-SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.number = 8
-SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.index = 7
-SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.label = 2
-SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.has_default_value = false
-SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.default_value = 0.0
-SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.type = 2
-SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD.cpp_type = 6
-
-SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.name = "suit_cion"
-SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.suit_cion"
-SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.number = 9
-SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.index = 8
-SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.label = 2
-SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.has_default_value = false
-SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.default_value = 0
-SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.type = 5
-SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD.cpp_type = 1
-
-SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.name = "suit_two_num"
-SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.suit_two_num"
-SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.number = 10
-SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.index = 9
-SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.label = 2
-SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.has_default_value = false
-SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.default_value = 0
-SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.type = 5
-SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD.cpp_type = 1
-
-SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.name = "suit_skill"
-SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.suit_skill"
-SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.number = 11
-SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.index = 10
-SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.label = 2
-SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.has_default_value = false
-SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.default_value = 0
-SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.type = 5
-SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD.cpp_type = 1
-
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.name = "fight_power_two"
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.full_name = ".ftcfg.soul_suit_attr_cfg.fight_power_two"
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.number = 12
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.index = 11
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.label = 2
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.has_default_value = false
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.default_value = 0
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.type = 5
-SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD.cpp_type = 1
-
-SOUL_SUIT_ATTR_CFG.name = "soul_suit_attr_cfg"
-SOUL_SUIT_ATTR_CFG.full_name = ".ftcfg.soul_suit_attr_cfg"
-SOUL_SUIT_ATTR_CFG.nested_types = {}
-SOUL_SUIT_ATTR_CFG.enum_types = {}
-SOUL_SUIT_ATTR_CFG.fields = {SOUL_SUIT_ATTR_CFG_STAR_LEVEL_FIELD, SOUL_SUIT_ATTR_CFG_SUITID_FIELD, SOUL_SUIT_ATTR_CFG_SUITNAME_FIELD, SOUL_SUIT_ATTR_CFG_SUIT_NUM_FIELD, SOUL_SUIT_ATTR_CFG_PROP_TYPE_FIELD, SOUL_SUIT_ATTR_CFG_SUIT_TYPE_FIELD, SOUL_SUIT_ATTR_CFG_FIGHT_POWER_FIELD, SOUL_SUIT_ATTR_CFG_SUIT_DATA_FIELD, SOUL_SUIT_ATTR_CFG_SUIT_CION_FIELD, SOUL_SUIT_ATTR_CFG_SUIT_TWO_NUM_FIELD, SOUL_SUIT_ATTR_CFG_SUIT_SKILL_FIELD, SOUL_SUIT_ATTR_CFG_FIGHT_POWER_TWO_FIELD}
-SOUL_SUIT_ATTR_CFG.is_extendable = false
-SOUL_SUIT_ATTR_CFG.extensions = {}
-SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.name = "items"
-SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.full_name = ".ftcfg.soul_suit_attr_cfgs.items"
-SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.number = 1
-SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.index = 0
-SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.label = 3
-SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.has_default_value = false
-SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.default_value = {}
-SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.message_type = SOUL_SUIT_ATTR_CFG
-SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.type = 11
-SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SOUL_SUIT_ATTR_CFGS.name = "soul_suit_attr_cfgs"
-SOUL_SUIT_ATTR_CFGS.full_name = ".ftcfg.soul_suit_attr_cfgs"
-SOUL_SUIT_ATTR_CFGS.nested_types = {}
-SOUL_SUIT_ATTR_CFGS.enum_types = {}
-SOUL_SUIT_ATTR_CFGS.fields = {SOUL_SUIT_ATTR_CFGS_ITEMS_FIELD}
-SOUL_SUIT_ATTR_CFGS.is_extendable = false
-SOUL_SUIT_ATTR_CFGS.extensions = {}
-SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.name = "star_level"
-SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.full_name = ".ftcfg.soul_level_up_cfg.star_level"
-SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.number = 1
-SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.index = 0
-SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.label = 2
-SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.has_default_value = false
-SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.default_value = 0
-SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.type = 13
-SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD.cpp_type = 3
-
-SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.name = "exp_one"
-SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_one"
-SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.number = 2
-SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.index = 1
-SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.label = 2
-SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.has_default_value = false
-SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.default_value = 0
-SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.type = 5
-SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD.cpp_type = 1
-
-SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.name = "exp_two"
-SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_two"
-SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.number = 3
-SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.index = 2
-SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.label = 2
-SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.has_default_value = false
-SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.default_value = 0
-SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.type = 5
-SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD.cpp_type = 1
-
-SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.name = "exp_three"
-SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_three"
-SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.number = 4
-SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.index = 3
-SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.label = 2
-SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.has_default_value = false
-SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.default_value = 0
-SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.type = 5
-SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD.cpp_type = 1
-
-SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.name = "exp_four"
-SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_four"
-SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.number = 5
-SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.index = 4
-SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.label = 2
-SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.has_default_value = false
-SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.default_value = 0
-SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.type = 5
-SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD.cpp_type = 1
-
-SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.name = "exp_five"
-SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_five"
-SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.number = 6
-SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.index = 5
-SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.label = 2
-SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.has_default_value = false
-SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.default_value = 0
-SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.type = 5
-SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD.cpp_type = 1
-
-SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.name = "exp_six"
-SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_six"
-SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.number = 7
-SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.index = 6
-SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.label = 2
-SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.has_default_value = false
-SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.default_value = 0
-SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.type = 5
-SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD.cpp_type = 1
-
-SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.name = "exp_seven"
-SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_seven"
-SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.number = 8
-SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.index = 7
-SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.label = 2
-SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.has_default_value = false
-SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.default_value = 0
-SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.type = 5
-SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD.cpp_type = 1
-
-SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.name = "exp_eight"
-SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_eight"
-SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.number = 9
-SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.index = 8
-SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.label = 2
-SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.has_default_value = false
-SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.default_value = 0
-SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.type = 5
-SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD.cpp_type = 1
-
-SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.name = "exp_nine"
-SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_nine"
-SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.number = 10
-SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.index = 9
-SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.label = 2
-SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.has_default_value = false
-SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.default_value = 0
-SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.type = 5
-SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD.cpp_type = 1
-
-SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.name = "exp_ten"
-SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_ten"
-SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.number = 11
-SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.index = 10
-SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.label = 2
-SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.has_default_value = false
-SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.default_value = 0
-SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.type = 5
-SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD.cpp_type = 1
-
-SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.name = "exp_change"
-SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.full_name = ".ftcfg.soul_level_up_cfg.exp_change"
-SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.number = 12
-SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.index = 11
-SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.label = 2
-SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.has_default_value = false
-SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.default_value = 0
-SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.type = 5
-SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD.cpp_type = 1
-
-SOUL_LEVEL_UP_CFG.name = "soul_level_up_cfg"
-SOUL_LEVEL_UP_CFG.full_name = ".ftcfg.soul_level_up_cfg"
-SOUL_LEVEL_UP_CFG.nested_types = {}
-SOUL_LEVEL_UP_CFG.enum_types = {}
-SOUL_LEVEL_UP_CFG.fields = {SOUL_LEVEL_UP_CFG_STAR_LEVEL_FIELD, SOUL_LEVEL_UP_CFG_EXP_ONE_FIELD, SOUL_LEVEL_UP_CFG_EXP_TWO_FIELD, SOUL_LEVEL_UP_CFG_EXP_THREE_FIELD, SOUL_LEVEL_UP_CFG_EXP_FOUR_FIELD, SOUL_LEVEL_UP_CFG_EXP_FIVE_FIELD, SOUL_LEVEL_UP_CFG_EXP_SIX_FIELD, SOUL_LEVEL_UP_CFG_EXP_SEVEN_FIELD, SOUL_LEVEL_UP_CFG_EXP_EIGHT_FIELD, SOUL_LEVEL_UP_CFG_EXP_NINE_FIELD, SOUL_LEVEL_UP_CFG_EXP_TEN_FIELD, SOUL_LEVEL_UP_CFG_EXP_CHANGE_FIELD}
-SOUL_LEVEL_UP_CFG.is_extendable = false
-SOUL_LEVEL_UP_CFG.extensions = {}
-SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.name = "items"
-SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.full_name = ".ftcfg.soul_level_up_cfgs.items"
-SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.number = 1
-SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.index = 0
-SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.label = 3
-SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.has_default_value = false
-SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.default_value = {}
-SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.message_type = SOUL_LEVEL_UP_CFG
-SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.type = 11
-SOUL_LEVEL_UP_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SOUL_LEVEL_UP_CFGS.name = "soul_level_up_cfgs"
-SOUL_LEVEL_UP_CFGS.full_name = ".ftcfg.soul_level_up_cfgs"
-SOUL_LEVEL_UP_CFGS.nested_types = {}
-SOUL_LEVEL_UP_CFGS.enum_types = {}
-SOUL_LEVEL_UP_CFGS.fields = {SOUL_LEVEL_UP_CFGS_ITEMS_FIELD}
-SOUL_LEVEL_UP_CFGS.is_extendable = false
-SOUL_LEVEL_UP_CFGS.extensions = {}
-SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.name = "magic_id"
-SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.magic_id"
-SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.number = 1
-SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.index = 0
-SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.label = 2
-SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.has_default_value = false
-SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.default_value = 0
-SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.type = 5
-SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD.cpp_type = 1
-
-SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.name = "magic_name"
-SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.magic_name"
-SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.number = 2
-SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.index = 1
-SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.label = 2
-SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.has_default_value = false
-SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.default_value = ""
-SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.type = 9
-SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD.cpp_type = 9
-
-SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.name = "quality"
-SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.quality"
-SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.number = 3
-SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.index = 2
-SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.label = 2
-SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.has_default_value = false
-SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.default_value = nil
-SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.enum_type = config_predefine_pb.EITEMCOLOR
-SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.type = 14
-SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD.cpp_type = 8
-
-SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.name = "proptype"
-SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.proptype"
-SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.number = 4
-SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.index = 3
-SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.label = 2
-SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.has_default_value = false
-SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.default_value = nil
-SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.enum_type = config_predefine_pb.ECPROPOPTYPE
-SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.type = 14
-SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD.cpp_type = 8
-
-SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.name = "type"
-SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.type"
-SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.number = 5
-SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.index = 4
-SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.label = 2
-SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.has_default_value = false
-SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.default_value = nil
-SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.enum_type = config_predefine_pb.ECPROPTYPE
-SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.type = 14
-SOUL_MAGIC_ROCK_CFG_TYPE_FIELD.cpp_type = 8
-
-SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.name = "min_data"
-SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.min_data"
-SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.number = 6
-SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.index = 5
-SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.label = 2
-SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.has_default_value = false
-SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.default_value = 0.0
-SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.type = 2
-SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD.cpp_type = 6
-
-SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.name = "max_data"
-SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.max_data"
-SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.number = 7
-SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.index = 6
-SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.label = 2
-SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.has_default_value = false
-SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.default_value = 0.0
-SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.type = 2
-SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD.cpp_type = 6
-
-SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.name = "max_add"
-SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.max_add"
-SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.number = 8
-SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.index = 7
-SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.label = 2
-SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.has_default_value = false
-SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.default_value = 0.0
-SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.type = 2
-SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD.cpp_type = 6
-
-SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.name = "success_ratio"
-SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.success_ratio"
-SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.number = 9
-SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.index = 8
-SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.label = 2
-SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.has_default_value = false
-SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.default_value = 0.0
-SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.type = 2
-SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD.cpp_type = 6
-
-SOUL_MAGIC_ROCK_CFG_ICON_FIELD.name = "icon"
-SOUL_MAGIC_ROCK_CFG_ICON_FIELD.full_name = ".ftcfg.soul_magic_rock_cfg.icon"
-SOUL_MAGIC_ROCK_CFG_ICON_FIELD.number = 10
-SOUL_MAGIC_ROCK_CFG_ICON_FIELD.index = 9
-SOUL_MAGIC_ROCK_CFG_ICON_FIELD.label = 2
-SOUL_MAGIC_ROCK_CFG_ICON_FIELD.has_default_value = false
-SOUL_MAGIC_ROCK_CFG_ICON_FIELD.default_value = 0
-SOUL_MAGIC_ROCK_CFG_ICON_FIELD.type = 5
-SOUL_MAGIC_ROCK_CFG_ICON_FIELD.cpp_type = 1
-
-SOUL_MAGIC_ROCK_CFG.name = "soul_magic_rock_cfg"
-SOUL_MAGIC_ROCK_CFG.full_name = ".ftcfg.soul_magic_rock_cfg"
-SOUL_MAGIC_ROCK_CFG.nested_types = {}
-SOUL_MAGIC_ROCK_CFG.enum_types = {}
-SOUL_MAGIC_ROCK_CFG.fields = {SOUL_MAGIC_ROCK_CFG_MAGIC_ID_FIELD, SOUL_MAGIC_ROCK_CFG_MAGIC_NAME_FIELD, SOUL_MAGIC_ROCK_CFG_QUALITY_FIELD, SOUL_MAGIC_ROCK_CFG_PROPTYPE_FIELD, SOUL_MAGIC_ROCK_CFG_TYPE_FIELD, SOUL_MAGIC_ROCK_CFG_MIN_DATA_FIELD, SOUL_MAGIC_ROCK_CFG_MAX_DATA_FIELD, SOUL_MAGIC_ROCK_CFG_MAX_ADD_FIELD, SOUL_MAGIC_ROCK_CFG_SUCCESS_RATIO_FIELD, SOUL_MAGIC_ROCK_CFG_ICON_FIELD}
-SOUL_MAGIC_ROCK_CFG.is_extendable = false
-SOUL_MAGIC_ROCK_CFG.extensions = {}
-SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.name = "items"
-SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.full_name = ".ftcfg.soul_magic_rock_cfgs.items"
-SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.number = 1
-SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.index = 0
-SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.label = 3
-SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.has_default_value = false
-SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.default_value = {}
-SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.message_type = SOUL_MAGIC_ROCK_CFG
-SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.type = 11
-SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SOUL_MAGIC_ROCK_CFGS.name = "soul_magic_rock_cfgs"
-SOUL_MAGIC_ROCK_CFGS.full_name = ".ftcfg.soul_magic_rock_cfgs"
-SOUL_MAGIC_ROCK_CFGS.nested_types = {}
-SOUL_MAGIC_ROCK_CFGS.enum_types = {}
-SOUL_MAGIC_ROCK_CFGS.fields = {SOUL_MAGIC_ROCK_CFGS_ITEMS_FIELD}
-SOUL_MAGIC_ROCK_CFGS.is_extendable = false
-SOUL_MAGIC_ROCK_CFGS.extensions = {}
-SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.name = "refine_id"
-SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.full_name = ".ftcfg.soul_refine_rock_cfg.refine_id"
-SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.number = 1
-SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.index = 0
-SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.label = 2
-SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.has_default_value = false
-SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.default_value = 0
-SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.type = 5
-SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD.cpp_type = 1
-
-SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.name = "level"
-SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.full_name = ".ftcfg.soul_refine_rock_cfg.level"
-SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.number = 2
-SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.index = 1
-SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.label = 2
-SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.has_default_value = false
-SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.default_value = 0
-SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.type = 13
-SOUL_REFINE_ROCK_CFG_LEVEL_FIELD.cpp_type = 3
-
-SOUL_REFINE_ROCK_CFG_COUNT_FIELD.name = "count"
-SOUL_REFINE_ROCK_CFG_COUNT_FIELD.full_name = ".ftcfg.soul_refine_rock_cfg.count"
-SOUL_REFINE_ROCK_CFG_COUNT_FIELD.number = 3
-SOUL_REFINE_ROCK_CFG_COUNT_FIELD.index = 2
-SOUL_REFINE_ROCK_CFG_COUNT_FIELD.label = 2
-SOUL_REFINE_ROCK_CFG_COUNT_FIELD.has_default_value = false
-SOUL_REFINE_ROCK_CFG_COUNT_FIELD.default_value = 0
-SOUL_REFINE_ROCK_CFG_COUNT_FIELD.type = 5
-SOUL_REFINE_ROCK_CFG_COUNT_FIELD.cpp_type = 1
-
-SOUL_REFINE_ROCK_CFG_ICON_FIELD.name = "icon"
-SOUL_REFINE_ROCK_CFG_ICON_FIELD.full_name = ".ftcfg.soul_refine_rock_cfg.icon"
-SOUL_REFINE_ROCK_CFG_ICON_FIELD.number = 4
-SOUL_REFINE_ROCK_CFG_ICON_FIELD.index = 3
-SOUL_REFINE_ROCK_CFG_ICON_FIELD.label = 2
-SOUL_REFINE_ROCK_CFG_ICON_FIELD.has_default_value = false
-SOUL_REFINE_ROCK_CFG_ICON_FIELD.default_value = 0
-SOUL_REFINE_ROCK_CFG_ICON_FIELD.type = 5
-SOUL_REFINE_ROCK_CFG_ICON_FIELD.cpp_type = 1
-
-SOUL_REFINE_ROCK_CFG_NAME_FIELD.name = "name"
-SOUL_REFINE_ROCK_CFG_NAME_FIELD.full_name = ".ftcfg.soul_refine_rock_cfg.name"
-SOUL_REFINE_ROCK_CFG_NAME_FIELD.number = 5
-SOUL_REFINE_ROCK_CFG_NAME_FIELD.index = 4
-SOUL_REFINE_ROCK_CFG_NAME_FIELD.label = 2
-SOUL_REFINE_ROCK_CFG_NAME_FIELD.has_default_value = false
-SOUL_REFINE_ROCK_CFG_NAME_FIELD.default_value = 0
-SOUL_REFINE_ROCK_CFG_NAME_FIELD.type = 5
-SOUL_REFINE_ROCK_CFG_NAME_FIELD.cpp_type = 1
-
-SOUL_REFINE_ROCK_CFG_DESC_FIELD.name = "desc"
-SOUL_REFINE_ROCK_CFG_DESC_FIELD.full_name = ".ftcfg.soul_refine_rock_cfg.desc"
-SOUL_REFINE_ROCK_CFG_DESC_FIELD.number = 6
-SOUL_REFINE_ROCK_CFG_DESC_FIELD.index = 5
-SOUL_REFINE_ROCK_CFG_DESC_FIELD.label = 2
-SOUL_REFINE_ROCK_CFG_DESC_FIELD.has_default_value = false
-SOUL_REFINE_ROCK_CFG_DESC_FIELD.default_value = 0
-SOUL_REFINE_ROCK_CFG_DESC_FIELD.type = 5
-SOUL_REFINE_ROCK_CFG_DESC_FIELD.cpp_type = 1
-
-SOUL_REFINE_ROCK_CFG_POSITION_FIELD.name = "position"
-SOUL_REFINE_ROCK_CFG_POSITION_FIELD.full_name = ".ftcfg.soul_refine_rock_cfg.position"
-SOUL_REFINE_ROCK_CFG_POSITION_FIELD.number = 7
-SOUL_REFINE_ROCK_CFG_POSITION_FIELD.index = 6
-SOUL_REFINE_ROCK_CFG_POSITION_FIELD.label = 2
-SOUL_REFINE_ROCK_CFG_POSITION_FIELD.has_default_value = false
-SOUL_REFINE_ROCK_CFG_POSITION_FIELD.default_value = 0
-SOUL_REFINE_ROCK_CFG_POSITION_FIELD.type = 5
-SOUL_REFINE_ROCK_CFG_POSITION_FIELD.cpp_type = 1
-
-SOUL_REFINE_ROCK_CFG.name = "soul_refine_rock_cfg"
-SOUL_REFINE_ROCK_CFG.full_name = ".ftcfg.soul_refine_rock_cfg"
-SOUL_REFINE_ROCK_CFG.nested_types = {}
-SOUL_REFINE_ROCK_CFG.enum_types = {}
-SOUL_REFINE_ROCK_CFG.fields = {SOUL_REFINE_ROCK_CFG_REFINE_ID_FIELD, SOUL_REFINE_ROCK_CFG_LEVEL_FIELD, SOUL_REFINE_ROCK_CFG_COUNT_FIELD, SOUL_REFINE_ROCK_CFG_ICON_FIELD, SOUL_REFINE_ROCK_CFG_NAME_FIELD, SOUL_REFINE_ROCK_CFG_DESC_FIELD, SOUL_REFINE_ROCK_CFG_POSITION_FIELD}
-SOUL_REFINE_ROCK_CFG.is_extendable = false
-SOUL_REFINE_ROCK_CFG.extensions = {}
-SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.name = "items"
-SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.full_name = ".ftcfg.soul_refine_rock_cfgs.items"
-SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.number = 1
-SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.index = 0
-SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.label = 3
-SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.has_default_value = false
-SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.default_value = {}
-SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.message_type = SOUL_REFINE_ROCK_CFG
-SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.type = 11
-SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD.cpp_type = 10
-
-SOUL_REFINE_ROCK_CFGS.name = "soul_refine_rock_cfgs"
-SOUL_REFINE_ROCK_CFGS.full_name = ".ftcfg.soul_refine_rock_cfgs"
-SOUL_REFINE_ROCK_CFGS.nested_types = {}
-SOUL_REFINE_ROCK_CFGS.enum_types = {}
-SOUL_REFINE_ROCK_CFGS.fields = {SOUL_REFINE_ROCK_CFGS_ITEMS_FIELD}
-SOUL_REFINE_ROCK_CFGS.is_extendable = false
-SOUL_REFINE_ROCK_CFGS.extensions = {}
-WIZARD_TASK_CFG_LEVEL_ID_FIELD.name = "level_id"
-WIZARD_TASK_CFG_LEVEL_ID_FIELD.full_name = ".ftcfg.wizard_task_cfg.level_id"
-WIZARD_TASK_CFG_LEVEL_ID_FIELD.number = 1
-WIZARD_TASK_CFG_LEVEL_ID_FIELD.index = 0
-WIZARD_TASK_CFG_LEVEL_ID_FIELD.label = 2
-WIZARD_TASK_CFG_LEVEL_ID_FIELD.has_default_value = false
-WIZARD_TASK_CFG_LEVEL_ID_FIELD.default_value = 0
-WIZARD_TASK_CFG_LEVEL_ID_FIELD.type = 5
-WIZARD_TASK_CFG_LEVEL_ID_FIELD.cpp_type = 1
-
-WIZARD_TASK_CFG_LEVEL_MIN_FIELD.name = "level_min"
-WIZARD_TASK_CFG_LEVEL_MIN_FIELD.full_name = ".ftcfg.wizard_task_cfg.level_min"
-WIZARD_TASK_CFG_LEVEL_MIN_FIELD.number = 2
-WIZARD_TASK_CFG_LEVEL_MIN_FIELD.index = 1
-WIZARD_TASK_CFG_LEVEL_MIN_FIELD.label = 2
-WIZARD_TASK_CFG_LEVEL_MIN_FIELD.has_default_value = false
-WIZARD_TASK_CFG_LEVEL_MIN_FIELD.default_value = 0
-WIZARD_TASK_CFG_LEVEL_MIN_FIELD.type = 5
-WIZARD_TASK_CFG_LEVEL_MIN_FIELD.cpp_type = 1
-
-WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.name = "use_item_id"
-WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.full_name = ".ftcfg.wizard_task_cfg.use_item_id"
-WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.number = 3
-WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.index = 2
-WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.label = 2
-WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.has_default_value = false
-WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.default_value = 0
-WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.type = 5
-WIZARD_TASK_CFG_USE_ITEM_ID_FIELD.cpp_type = 1
-
-WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.name = "use_item_num"
-WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.full_name = ".ftcfg.wizard_task_cfg.use_item_num"
-WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.number = 4
-WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.index = 3
-WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.label = 2
-WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.has_default_value = false
-WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.default_value = 0
-WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.type = 5
-WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD.cpp_type = 1
-
-WIZARD_TASK_CFG.name = "wizard_task_cfg"
-WIZARD_TASK_CFG.full_name = ".ftcfg.wizard_task_cfg"
-WIZARD_TASK_CFG.nested_types = {}
-WIZARD_TASK_CFG.enum_types = {}
-WIZARD_TASK_CFG.fields = {WIZARD_TASK_CFG_LEVEL_ID_FIELD, WIZARD_TASK_CFG_LEVEL_MIN_FIELD, WIZARD_TASK_CFG_USE_ITEM_ID_FIELD, WIZARD_TASK_CFG_USE_ITEM_NUM_FIELD}
-WIZARD_TASK_CFG.is_extendable = false
-WIZARD_TASK_CFG.extensions = {}
-WIZARD_TASK_CFGS_ITEMS_FIELD.name = "items"
-WIZARD_TASK_CFGS_ITEMS_FIELD.full_name = ".ftcfg.wizard_task_cfgs.items"
-WIZARD_TASK_CFGS_ITEMS_FIELD.number = 1
-WIZARD_TASK_CFGS_ITEMS_FIELD.index = 0
-WIZARD_TASK_CFGS_ITEMS_FIELD.label = 3
-WIZARD_TASK_CFGS_ITEMS_FIELD.has_default_value = false
-WIZARD_TASK_CFGS_ITEMS_FIELD.default_value = {}
-WIZARD_TASK_CFGS_ITEMS_FIELD.message_type = WIZARD_TASK_CFG
-WIZARD_TASK_CFGS_ITEMS_FIELD.type = 11
-WIZARD_TASK_CFGS_ITEMS_FIELD.cpp_type = 10
-
-WIZARD_TASK_CFGS.name = "wizard_task_cfgs"
-WIZARD_TASK_CFGS.full_name = ".ftcfg.wizard_task_cfgs"
-WIZARD_TASK_CFGS.nested_types = {}
-WIZARD_TASK_CFGS.enum_types = {}
-WIZARD_TASK_CFGS.fields = {WIZARD_TASK_CFGS_ITEMS_FIELD}
-WIZARD_TASK_CFGS.is_extendable = false
-WIZARD_TASK_CFGS.extensions = {}
-WIZARD_LEVEL_CFG_ID_FIELD.name = "id"
-WIZARD_LEVEL_CFG_ID_FIELD.full_name = ".ftcfg.wizard_level_cfg.id"
-WIZARD_LEVEL_CFG_ID_FIELD.number = 1
-WIZARD_LEVEL_CFG_ID_FIELD.index = 0
-WIZARD_LEVEL_CFG_ID_FIELD.label = 2
-WIZARD_LEVEL_CFG_ID_FIELD.has_default_value = false
-WIZARD_LEVEL_CFG_ID_FIELD.default_value = 0
-WIZARD_LEVEL_CFG_ID_FIELD.type = 5
-WIZARD_LEVEL_CFG_ID_FIELD.cpp_type = 1
-
-WIZARD_LEVEL_CFG_LEGENDARY_FIELD.name = "legendary"
-WIZARD_LEVEL_CFG_LEGENDARY_FIELD.full_name = ".ftcfg.wizard_level_cfg.legendary"
-WIZARD_LEVEL_CFG_LEGENDARY_FIELD.number = 2
-WIZARD_LEVEL_CFG_LEGENDARY_FIELD.index = 1
-WIZARD_LEVEL_CFG_LEGENDARY_FIELD.label = 2
-WIZARD_LEVEL_CFG_LEGENDARY_FIELD.has_default_value = false
-WIZARD_LEVEL_CFG_LEGENDARY_FIELD.default_value = 0
-WIZARD_LEVEL_CFG_LEGENDARY_FIELD.type = 5
-WIZARD_LEVEL_CFG_LEGENDARY_FIELD.cpp_type = 1
-
-WIZARD_LEVEL_CFG_ICON_ID_FIELD.name = "icon_id"
-WIZARD_LEVEL_CFG_ICON_ID_FIELD.full_name = ".ftcfg.wizard_level_cfg.icon_id"
-WIZARD_LEVEL_CFG_ICON_ID_FIELD.number = 3
-WIZARD_LEVEL_CFG_ICON_ID_FIELD.index = 2
-WIZARD_LEVEL_CFG_ICON_ID_FIELD.label = 2
-WIZARD_LEVEL_CFG_ICON_ID_FIELD.has_default_value = false
-WIZARD_LEVEL_CFG_ICON_ID_FIELD.default_value = 0
-WIZARD_LEVEL_CFG_ICON_ID_FIELD.type = 5
-WIZARD_LEVEL_CFG_ICON_ID_FIELD.cpp_type = 1
-
-WIZARD_LEVEL_CFG_NAME_FIELD.name = "name"
-WIZARD_LEVEL_CFG_NAME_FIELD.full_name = ".ftcfg.wizard_level_cfg.name"
-WIZARD_LEVEL_CFG_NAME_FIELD.number = 4
-WIZARD_LEVEL_CFG_NAME_FIELD.index = 3
-WIZARD_LEVEL_CFG_NAME_FIELD.label = 2
-WIZARD_LEVEL_CFG_NAME_FIELD.has_default_value = false
-WIZARD_LEVEL_CFG_NAME_FIELD.default_value = 0
-WIZARD_LEVEL_CFG_NAME_FIELD.type = 5
-WIZARD_LEVEL_CFG_NAME_FIELD.cpp_type = 1
-
-WIZARD_LEVEL_CFG_REWARD_ID_FIELD.name = "reward_id"
-WIZARD_LEVEL_CFG_REWARD_ID_FIELD.full_name = ".ftcfg.wizard_level_cfg.reward_id"
-WIZARD_LEVEL_CFG_REWARD_ID_FIELD.number = 5
-WIZARD_LEVEL_CFG_REWARD_ID_FIELD.index = 4
-WIZARD_LEVEL_CFG_REWARD_ID_FIELD.label = 2
-WIZARD_LEVEL_CFG_REWARD_ID_FIELD.has_default_value = false
-WIZARD_LEVEL_CFG_REWARD_ID_FIELD.default_value = 0
-WIZARD_LEVEL_CFG_REWARD_ID_FIELD.type = 5
-WIZARD_LEVEL_CFG_REWARD_ID_FIELD.cpp_type = 1
-
-WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.name = "del_legendary"
-WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.full_name = ".ftcfg.wizard_level_cfg.del_legendary"
-WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.number = 6
-WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.index = 5
-WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.label = 2
-WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.has_default_value = false
-WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.default_value = 0
-WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.type = 5
-WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD.cpp_type = 1
-
-WIZARD_LEVEL_CFG.name = "wizard_level_cfg"
-WIZARD_LEVEL_CFG.full_name = ".ftcfg.wizard_level_cfg"
-WIZARD_LEVEL_CFG.nested_types = {}
-WIZARD_LEVEL_CFG.enum_types = {}
-WIZARD_LEVEL_CFG.fields = {WIZARD_LEVEL_CFG_ID_FIELD, WIZARD_LEVEL_CFG_LEGENDARY_FIELD, WIZARD_LEVEL_CFG_ICON_ID_FIELD, WIZARD_LEVEL_CFG_NAME_FIELD, WIZARD_LEVEL_CFG_REWARD_ID_FIELD, WIZARD_LEVEL_CFG_DEL_LEGENDARY_FIELD}
-WIZARD_LEVEL_CFG.is_extendable = false
-WIZARD_LEVEL_CFG.extensions = {}
-WIZARD_LEVEL_CFGS_ITEMS_FIELD.name = "items"
-WIZARD_LEVEL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.wizard_level_cfgs.items"
-WIZARD_LEVEL_CFGS_ITEMS_FIELD.number = 1
-WIZARD_LEVEL_CFGS_ITEMS_FIELD.index = 0
-WIZARD_LEVEL_CFGS_ITEMS_FIELD.label = 3
-WIZARD_LEVEL_CFGS_ITEMS_FIELD.has_default_value = false
-WIZARD_LEVEL_CFGS_ITEMS_FIELD.default_value = {}
-WIZARD_LEVEL_CFGS_ITEMS_FIELD.message_type = WIZARD_LEVEL_CFG
-WIZARD_LEVEL_CFGS_ITEMS_FIELD.type = 11
-WIZARD_LEVEL_CFGS_ITEMS_FIELD.cpp_type = 10
-
-WIZARD_LEVEL_CFGS.name = "wizard_level_cfgs"
-WIZARD_LEVEL_CFGS.full_name = ".ftcfg.wizard_level_cfgs"
-WIZARD_LEVEL_CFGS.nested_types = {}
-WIZARD_LEVEL_CFGS.enum_types = {}
-WIZARD_LEVEL_CFGS.fields = {WIZARD_LEVEL_CFGS_ITEMS_FIELD}
-WIZARD_LEVEL_CFGS.is_extendable = false
-WIZARD_LEVEL_CFGS.extensions = {}
-WIZARD_BASE_CFG_ID_FIELD.name = "id"
-WIZARD_BASE_CFG_ID_FIELD.full_name = ".ftcfg.wizard_base_cfg.id"
-WIZARD_BASE_CFG_ID_FIELD.number = 1
-WIZARD_BASE_CFG_ID_FIELD.index = 0
-WIZARD_BASE_CFG_ID_FIELD.label = 2
-WIZARD_BASE_CFG_ID_FIELD.has_default_value = false
-WIZARD_BASE_CFG_ID_FIELD.default_value = 0
-WIZARD_BASE_CFG_ID_FIELD.type = 5
-WIZARD_BASE_CFG_ID_FIELD.cpp_type = 1
-
-WIZARD_BASE_CFG_DATA_FIELD.name = "data"
-WIZARD_BASE_CFG_DATA_FIELD.full_name = ".ftcfg.wizard_base_cfg.data"
-WIZARD_BASE_CFG_DATA_FIELD.number = 2
-WIZARD_BASE_CFG_DATA_FIELD.index = 1
-WIZARD_BASE_CFG_DATA_FIELD.label = 2
-WIZARD_BASE_CFG_DATA_FIELD.has_default_value = false
-WIZARD_BASE_CFG_DATA_FIELD.default_value = 0.0
-WIZARD_BASE_CFG_DATA_FIELD.type = 1
-WIZARD_BASE_CFG_DATA_FIELD.cpp_type = 5
-
-WIZARD_BASE_CFG.name = "wizard_base_cfg"
-WIZARD_BASE_CFG.full_name = ".ftcfg.wizard_base_cfg"
-WIZARD_BASE_CFG.nested_types = {}
-WIZARD_BASE_CFG.enum_types = {}
-WIZARD_BASE_CFG.fields = {WIZARD_BASE_CFG_ID_FIELD, WIZARD_BASE_CFG_DATA_FIELD}
-WIZARD_BASE_CFG.is_extendable = false
-WIZARD_BASE_CFG.extensions = {}
-WIZARD_BASE_CFGS_ITEMS_FIELD.name = "items"
-WIZARD_BASE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.wizard_base_cfgs.items"
-WIZARD_BASE_CFGS_ITEMS_FIELD.number = 1
-WIZARD_BASE_CFGS_ITEMS_FIELD.index = 0
-WIZARD_BASE_CFGS_ITEMS_FIELD.label = 3
-WIZARD_BASE_CFGS_ITEMS_FIELD.has_default_value = false
-WIZARD_BASE_CFGS_ITEMS_FIELD.default_value = {}
-WIZARD_BASE_CFGS_ITEMS_FIELD.message_type = WIZARD_BASE_CFG
-WIZARD_BASE_CFGS_ITEMS_FIELD.type = 11
-WIZARD_BASE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-WIZARD_BASE_CFGS.name = "wizard_base_cfgs"
-WIZARD_BASE_CFGS.full_name = ".ftcfg.wizard_base_cfgs"
-WIZARD_BASE_CFGS.nested_types = {}
-WIZARD_BASE_CFGS.enum_types = {}
-WIZARD_BASE_CFGS.fields = {WIZARD_BASE_CFGS_ITEMS_FIELD}
-WIZARD_BASE_CFGS.is_extendable = false
-WIZARD_BASE_CFGS.extensions = {}
-MAGIC_DIVINE_CFG_ID_FIELD.name = "id"
-MAGIC_DIVINE_CFG_ID_FIELD.full_name = ".ftcfg.magic_divine_cfg.id"
-MAGIC_DIVINE_CFG_ID_FIELD.number = 1
-MAGIC_DIVINE_CFG_ID_FIELD.index = 0
-MAGIC_DIVINE_CFG_ID_FIELD.label = 2
-MAGIC_DIVINE_CFG_ID_FIELD.has_default_value = false
-MAGIC_DIVINE_CFG_ID_FIELD.default_value = 0
-MAGIC_DIVINE_CFG_ID_FIELD.type = 5
-MAGIC_DIVINE_CFG_ID_FIELD.cpp_type = 1
-
-MAGIC_DIVINE_CFG_PROP_ID_FIELD.name = "prop_id"
-MAGIC_DIVINE_CFG_PROP_ID_FIELD.full_name = ".ftcfg.magic_divine_cfg.prop_id"
-MAGIC_DIVINE_CFG_PROP_ID_FIELD.number = 2
-MAGIC_DIVINE_CFG_PROP_ID_FIELD.index = 1
-MAGIC_DIVINE_CFG_PROP_ID_FIELD.label = 3
-MAGIC_DIVINE_CFG_PROP_ID_FIELD.has_default_value = false
-MAGIC_DIVINE_CFG_PROP_ID_FIELD.default_value = {}
-MAGIC_DIVINE_CFG_PROP_ID_FIELD.type = 5
-MAGIC_DIVINE_CFG_PROP_ID_FIELD.cpp_type = 1
-
-MAGIC_DIVINE_CFG_PROP_NUM_FIELD.name = "prop_num"
-MAGIC_DIVINE_CFG_PROP_NUM_FIELD.full_name = ".ftcfg.magic_divine_cfg.prop_num"
-MAGIC_DIVINE_CFG_PROP_NUM_FIELD.number = 3
-MAGIC_DIVINE_CFG_PROP_NUM_FIELD.index = 2
-MAGIC_DIVINE_CFG_PROP_NUM_FIELD.label = 3
-MAGIC_DIVINE_CFG_PROP_NUM_FIELD.has_default_value = false
-MAGIC_DIVINE_CFG_PROP_NUM_FIELD.default_value = {}
-MAGIC_DIVINE_CFG_PROP_NUM_FIELD.type = 5
-MAGIC_DIVINE_CFG_PROP_NUM_FIELD.cpp_type = 1
-
-MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.name = "week_day"
-MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.full_name = ".ftcfg.magic_divine_cfg.week_day"
-MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.number = 4
-MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.index = 3
-MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.label = 2
-MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.has_default_value = false
-MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.default_value = 0
-MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.type = 5
-MAGIC_DIVINE_CFG_WEEK_DAY_FIELD.cpp_type = 1
-
-MAGIC_DIVINE_CFG_TIMES_FIELD.name = "times"
-MAGIC_DIVINE_CFG_TIMES_FIELD.full_name = ".ftcfg.magic_divine_cfg.times"
-MAGIC_DIVINE_CFG_TIMES_FIELD.number = 5
-MAGIC_DIVINE_CFG_TIMES_FIELD.index = 4
-MAGIC_DIVINE_CFG_TIMES_FIELD.label = 3
-MAGIC_DIVINE_CFG_TIMES_FIELD.has_default_value = false
-MAGIC_DIVINE_CFG_TIMES_FIELD.default_value = {}
-MAGIC_DIVINE_CFG_TIMES_FIELD.type = 5
-MAGIC_DIVINE_CFG_TIMES_FIELD.cpp_type = 1
-
-MAGIC_DIVINE_CFG_SECTION_ID_FIELD.name = "section_id"
-MAGIC_DIVINE_CFG_SECTION_ID_FIELD.full_name = ".ftcfg.magic_divine_cfg.section_id"
-MAGIC_DIVINE_CFG_SECTION_ID_FIELD.number = 6
-MAGIC_DIVINE_CFG_SECTION_ID_FIELD.index = 5
-MAGIC_DIVINE_CFG_SECTION_ID_FIELD.label = 2
-MAGIC_DIVINE_CFG_SECTION_ID_FIELD.has_default_value = false
-MAGIC_DIVINE_CFG_SECTION_ID_FIELD.default_value = 0
-MAGIC_DIVINE_CFG_SECTION_ID_FIELD.type = 5
-MAGIC_DIVINE_CFG_SECTION_ID_FIELD.cpp_type = 1
-
-MAGIC_DIVINE_CFG_LEVEL_FIELD.name = "level"
-MAGIC_DIVINE_CFG_LEVEL_FIELD.full_name = ".ftcfg.magic_divine_cfg.level"
-MAGIC_DIVINE_CFG_LEVEL_FIELD.number = 7
-MAGIC_DIVINE_CFG_LEVEL_FIELD.index = 6
-MAGIC_DIVINE_CFG_LEVEL_FIELD.label = 2
-MAGIC_DIVINE_CFG_LEVEL_FIELD.has_default_value = false
-MAGIC_DIVINE_CFG_LEVEL_FIELD.default_value = 0
-MAGIC_DIVINE_CFG_LEVEL_FIELD.type = 5
-MAGIC_DIVINE_CFG_LEVEL_FIELD.cpp_type = 1
-
-MAGIC_DIVINE_CFG.name = "magic_divine_cfg"
-MAGIC_DIVINE_CFG.full_name = ".ftcfg.magic_divine_cfg"
-MAGIC_DIVINE_CFG.nested_types = {}
-MAGIC_DIVINE_CFG.enum_types = {}
-MAGIC_DIVINE_CFG.fields = {MAGIC_DIVINE_CFG_ID_FIELD, MAGIC_DIVINE_CFG_PROP_ID_FIELD, MAGIC_DIVINE_CFG_PROP_NUM_FIELD, MAGIC_DIVINE_CFG_WEEK_DAY_FIELD, MAGIC_DIVINE_CFG_TIMES_FIELD, MAGIC_DIVINE_CFG_SECTION_ID_FIELD, MAGIC_DIVINE_CFG_LEVEL_FIELD}
-MAGIC_DIVINE_CFG.is_extendable = false
-MAGIC_DIVINE_CFG.extensions = {}
-MAGIC_DIVINE_CFGS_ITEMS_FIELD.name = "items"
-MAGIC_DIVINE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_divine_cfgs.items"
-MAGIC_DIVINE_CFGS_ITEMS_FIELD.number = 1
-MAGIC_DIVINE_CFGS_ITEMS_FIELD.index = 0
-MAGIC_DIVINE_CFGS_ITEMS_FIELD.label = 3
-MAGIC_DIVINE_CFGS_ITEMS_FIELD.has_default_value = false
-MAGIC_DIVINE_CFGS_ITEMS_FIELD.default_value = {}
-MAGIC_DIVINE_CFGS_ITEMS_FIELD.message_type = MAGIC_DIVINE_CFG
-MAGIC_DIVINE_CFGS_ITEMS_FIELD.type = 11
-MAGIC_DIVINE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MAGIC_DIVINE_CFGS.name = "magic_divine_cfgs"
-MAGIC_DIVINE_CFGS.full_name = ".ftcfg.magic_divine_cfgs"
-MAGIC_DIVINE_CFGS.nested_types = {}
-MAGIC_DIVINE_CFGS.enum_types = {}
-MAGIC_DIVINE_CFGS.fields = {MAGIC_DIVINE_CFGS_ITEMS_FIELD}
-MAGIC_DIVINE_CFGS.is_extendable = false
-MAGIC_DIVINE_CFGS.extensions = {}
-DIVINE_SECTION_CFG_ID_FIELD.name = "id"
-DIVINE_SECTION_CFG_ID_FIELD.full_name = ".ftcfg.divine_section_cfg.id"
-DIVINE_SECTION_CFG_ID_FIELD.number = 1
-DIVINE_SECTION_CFG_ID_FIELD.index = 0
-DIVINE_SECTION_CFG_ID_FIELD.label = 2
-DIVINE_SECTION_CFG_ID_FIELD.has_default_value = false
-DIVINE_SECTION_CFG_ID_FIELD.default_value = 0
-DIVINE_SECTION_CFG_ID_FIELD.type = 5
-DIVINE_SECTION_CFG_ID_FIELD.cpp_type = 1
-
-DIVINE_SECTION_CFG_GROUP_FIELD.name = "group"
-DIVINE_SECTION_CFG_GROUP_FIELD.full_name = ".ftcfg.divine_section_cfg.group"
-DIVINE_SECTION_CFG_GROUP_FIELD.number = 2
-DIVINE_SECTION_CFG_GROUP_FIELD.index = 1
-DIVINE_SECTION_CFG_GROUP_FIELD.label = 2
-DIVINE_SECTION_CFG_GROUP_FIELD.has_default_value = false
-DIVINE_SECTION_CFG_GROUP_FIELD.default_value = 0
-DIVINE_SECTION_CFG_GROUP_FIELD.type = 5
-DIVINE_SECTION_CFG_GROUP_FIELD.cpp_type = 1
-
-DIVINE_SECTION_CFG_GROUP_NAME_FIELD.name = "group_name"
-DIVINE_SECTION_CFG_GROUP_NAME_FIELD.full_name = ".ftcfg.divine_section_cfg.group_name"
-DIVINE_SECTION_CFG_GROUP_NAME_FIELD.number = 3
-DIVINE_SECTION_CFG_GROUP_NAME_FIELD.index = 2
-DIVINE_SECTION_CFG_GROUP_NAME_FIELD.label = 2
-DIVINE_SECTION_CFG_GROUP_NAME_FIELD.has_default_value = false
-DIVINE_SECTION_CFG_GROUP_NAME_FIELD.default_value = 0
-DIVINE_SECTION_CFG_GROUP_NAME_FIELD.type = 5
-DIVINE_SECTION_CFG_GROUP_NAME_FIELD.cpp_type = 1
-
-DIVINE_SECTION_CFG_SECTION_FIELD.name = "section"
-DIVINE_SECTION_CFG_SECTION_FIELD.full_name = ".ftcfg.divine_section_cfg.section"
-DIVINE_SECTION_CFG_SECTION_FIELD.number = 4
-DIVINE_SECTION_CFG_SECTION_FIELD.index = 3
-DIVINE_SECTION_CFG_SECTION_FIELD.label = 2
-DIVINE_SECTION_CFG_SECTION_FIELD.has_default_value = false
-DIVINE_SECTION_CFG_SECTION_FIELD.default_value = 0
-DIVINE_SECTION_CFG_SECTION_FIELD.type = 5
-DIVINE_SECTION_CFG_SECTION_FIELD.cpp_type = 1
-
-DIVINE_SECTION_CFG_SECTION_NAME_FIELD.name = "section_name"
-DIVINE_SECTION_CFG_SECTION_NAME_FIELD.full_name = ".ftcfg.divine_section_cfg.section_name"
-DIVINE_SECTION_CFG_SECTION_NAME_FIELD.number = 5
-DIVINE_SECTION_CFG_SECTION_NAME_FIELD.index = 4
-DIVINE_SECTION_CFG_SECTION_NAME_FIELD.label = 2
-DIVINE_SECTION_CFG_SECTION_NAME_FIELD.has_default_value = false
-DIVINE_SECTION_CFG_SECTION_NAME_FIELD.default_value = 0
-DIVINE_SECTION_CFG_SECTION_NAME_FIELD.type = 5
-DIVINE_SECTION_CFG_SECTION_NAME_FIELD.cpp_type = 1
-
-DIVINE_SECTION_CFG_SECTION_DESC_FIELD.name = "section_desc"
-DIVINE_SECTION_CFG_SECTION_DESC_FIELD.full_name = ".ftcfg.divine_section_cfg.section_desc"
-DIVINE_SECTION_CFG_SECTION_DESC_FIELD.number = 6
-DIVINE_SECTION_CFG_SECTION_DESC_FIELD.index = 5
-DIVINE_SECTION_CFG_SECTION_DESC_FIELD.label = 2
-DIVINE_SECTION_CFG_SECTION_DESC_FIELD.has_default_value = false
-DIVINE_SECTION_CFG_SECTION_DESC_FIELD.default_value = 0
-DIVINE_SECTION_CFG_SECTION_DESC_FIELD.type = 5
-DIVINE_SECTION_CFG_SECTION_DESC_FIELD.cpp_type = 1
-
-DIVINE_SECTION_CFG_MISSION_ID_FIELD.name = "mission_id"
-DIVINE_SECTION_CFG_MISSION_ID_FIELD.full_name = ".ftcfg.divine_section_cfg.mission_id"
-DIVINE_SECTION_CFG_MISSION_ID_FIELD.number = 7
-DIVINE_SECTION_CFG_MISSION_ID_FIELD.index = 6
-DIVINE_SECTION_CFG_MISSION_ID_FIELD.label = 2
-DIVINE_SECTION_CFG_MISSION_ID_FIELD.has_default_value = false
-DIVINE_SECTION_CFG_MISSION_ID_FIELD.default_value = 0
-DIVINE_SECTION_CFG_MISSION_ID_FIELD.type = 5
-DIVINE_SECTION_CFG_MISSION_ID_FIELD.cpp_type = 1
-
-DIVINE_SECTION_CFG_PARTNER_ID_FIELD.name = "partner_id"
-DIVINE_SECTION_CFG_PARTNER_ID_FIELD.full_name = ".ftcfg.divine_section_cfg.partner_id"
-DIVINE_SECTION_CFG_PARTNER_ID_FIELD.number = 8
-DIVINE_SECTION_CFG_PARTNER_ID_FIELD.index = 7
-DIVINE_SECTION_CFG_PARTNER_ID_FIELD.label = 3
-DIVINE_SECTION_CFG_PARTNER_ID_FIELD.has_default_value = false
-DIVINE_SECTION_CFG_PARTNER_ID_FIELD.default_value = {}
-DIVINE_SECTION_CFG_PARTNER_ID_FIELD.type = 5
-DIVINE_SECTION_CFG_PARTNER_ID_FIELD.cpp_type = 1
-
-DIVINE_SECTION_CFG.name = "divine_section_cfg"
-DIVINE_SECTION_CFG.full_name = ".ftcfg.divine_section_cfg"
-DIVINE_SECTION_CFG.nested_types = {}
-DIVINE_SECTION_CFG.enum_types = {}
-DIVINE_SECTION_CFG.fields = {DIVINE_SECTION_CFG_ID_FIELD, DIVINE_SECTION_CFG_GROUP_FIELD, DIVINE_SECTION_CFG_GROUP_NAME_FIELD, DIVINE_SECTION_CFG_SECTION_FIELD, DIVINE_SECTION_CFG_SECTION_NAME_FIELD, DIVINE_SECTION_CFG_SECTION_DESC_FIELD, DIVINE_SECTION_CFG_MISSION_ID_FIELD, DIVINE_SECTION_CFG_PARTNER_ID_FIELD}
-DIVINE_SECTION_CFG.is_extendable = false
-DIVINE_SECTION_CFG.extensions = {}
-DIVINE_SECTION_CFGS_ITEMS_FIELD.name = "items"
-DIVINE_SECTION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.divine_section_cfgs.items"
-DIVINE_SECTION_CFGS_ITEMS_FIELD.number = 1
-DIVINE_SECTION_CFGS_ITEMS_FIELD.index = 0
-DIVINE_SECTION_CFGS_ITEMS_FIELD.label = 3
-DIVINE_SECTION_CFGS_ITEMS_FIELD.has_default_value = false
-DIVINE_SECTION_CFGS_ITEMS_FIELD.default_value = {}
-DIVINE_SECTION_CFGS_ITEMS_FIELD.message_type = DIVINE_SECTION_CFG
-DIVINE_SECTION_CFGS_ITEMS_FIELD.type = 11
-DIVINE_SECTION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-DIVINE_SECTION_CFGS.name = "divine_section_cfgs"
-DIVINE_SECTION_CFGS.full_name = ".ftcfg.divine_section_cfgs"
-DIVINE_SECTION_CFGS.nested_types = {}
-DIVINE_SECTION_CFGS.enum_types = {}
-DIVINE_SECTION_CFGS.fields = {DIVINE_SECTION_CFGS_ITEMS_FIELD}
-DIVINE_SECTION_CFGS.is_extendable = false
-DIVINE_SECTION_CFGS.extensions = {}
-DIVINE_MISSION_CFG_ID_FIELD.name = "id"
-DIVINE_MISSION_CFG_ID_FIELD.full_name = ".ftcfg.divine_mission_cfg.id"
-DIVINE_MISSION_CFG_ID_FIELD.number = 1
-DIVINE_MISSION_CFG_ID_FIELD.index = 0
-DIVINE_MISSION_CFG_ID_FIELD.label = 2
-DIVINE_MISSION_CFG_ID_FIELD.has_default_value = false
-DIVINE_MISSION_CFG_ID_FIELD.default_value = 0
-DIVINE_MISSION_CFG_ID_FIELD.type = 5
-DIVINE_MISSION_CFG_ID_FIELD.cpp_type = 1
-
-DIVINE_MISSION_CFG_MISSION_ID_FIELD.name = "mission_id"
-DIVINE_MISSION_CFG_MISSION_ID_FIELD.full_name = ".ftcfg.divine_mission_cfg.mission_id"
-DIVINE_MISSION_CFG_MISSION_ID_FIELD.number = 2
-DIVINE_MISSION_CFG_MISSION_ID_FIELD.index = 1
-DIVINE_MISSION_CFG_MISSION_ID_FIELD.label = 2
-DIVINE_MISSION_CFG_MISSION_ID_FIELD.has_default_value = false
-DIVINE_MISSION_CFG_MISSION_ID_FIELD.default_value = 0
-DIVINE_MISSION_CFG_MISSION_ID_FIELD.type = 5
-DIVINE_MISSION_CFG_MISSION_ID_FIELD.cpp_type = 1
-
-DIVINE_MISSION_CFG_RANGE_FIELD.name = "range"
-DIVINE_MISSION_CFG_RANGE_FIELD.full_name = ".ftcfg.divine_mission_cfg.range"
-DIVINE_MISSION_CFG_RANGE_FIELD.number = 3
-DIVINE_MISSION_CFG_RANGE_FIELD.index = 2
-DIVINE_MISSION_CFG_RANGE_FIELD.label = 2
-DIVINE_MISSION_CFG_RANGE_FIELD.has_default_value = false
-DIVINE_MISSION_CFG_RANGE_FIELD.default_value = 0
-DIVINE_MISSION_CFG_RANGE_FIELD.type = 5
-DIVINE_MISSION_CFG_RANGE_FIELD.cpp_type = 1
-
-DIVINE_MISSION_CFG_QUALITY_FIELD.name = "quality"
-DIVINE_MISSION_CFG_QUALITY_FIELD.full_name = ".ftcfg.divine_mission_cfg.quality"
-DIVINE_MISSION_CFG_QUALITY_FIELD.number = 4
-DIVINE_MISSION_CFG_QUALITY_FIELD.index = 3
-DIVINE_MISSION_CFG_QUALITY_FIELD.label = 2
-DIVINE_MISSION_CFG_QUALITY_FIELD.has_default_value = false
-DIVINE_MISSION_CFG_QUALITY_FIELD.default_value = 0
-DIVINE_MISSION_CFG_QUALITY_FIELD.type = 5
-DIVINE_MISSION_CFG_QUALITY_FIELD.cpp_type = 1
-
-DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.name = "fetters_num"
-DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.full_name = ".ftcfg.divine_mission_cfg.fetters_num"
-DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.number = 5
-DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.index = 4
-DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.label = 2
-DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.has_default_value = false
-DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.default_value = 0
-DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.type = 5
-DIVINE_MISSION_CFG_FETTERS_NUM_FIELD.cpp_type = 1
-
-DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.name = "qualityrange"
-DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.full_name = ".ftcfg.divine_mission_cfg.qualityrange"
-DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.number = 6
-DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.index = 5
-DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.label = 2
-DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.has_default_value = false
-DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.default_value = 0
-DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.type = 5
-DIVINE_MISSION_CFG_QUALITYRANGE_FIELD.cpp_type = 1
-
-DIVINE_MISSION_CFG.name = "divine_mission_cfg"
-DIVINE_MISSION_CFG.full_name = ".ftcfg.divine_mission_cfg"
-DIVINE_MISSION_CFG.nested_types = {}
-DIVINE_MISSION_CFG.enum_types = {}
-DIVINE_MISSION_CFG.fields = {DIVINE_MISSION_CFG_ID_FIELD, DIVINE_MISSION_CFG_MISSION_ID_FIELD, DIVINE_MISSION_CFG_RANGE_FIELD, DIVINE_MISSION_CFG_QUALITY_FIELD, DIVINE_MISSION_CFG_FETTERS_NUM_FIELD, DIVINE_MISSION_CFG_QUALITYRANGE_FIELD}
-DIVINE_MISSION_CFG.is_extendable = false
-DIVINE_MISSION_CFG.extensions = {}
-DIVINE_MISSION_CFGS_ITEMS_FIELD.name = "items"
-DIVINE_MISSION_CFGS_ITEMS_FIELD.full_name = ".ftcfg.divine_mission_cfgs.items"
-DIVINE_MISSION_CFGS_ITEMS_FIELD.number = 1
-DIVINE_MISSION_CFGS_ITEMS_FIELD.index = 0
-DIVINE_MISSION_CFGS_ITEMS_FIELD.label = 3
-DIVINE_MISSION_CFGS_ITEMS_FIELD.has_default_value = false
-DIVINE_MISSION_CFGS_ITEMS_FIELD.default_value = {}
-DIVINE_MISSION_CFGS_ITEMS_FIELD.message_type = DIVINE_MISSION_CFG
-DIVINE_MISSION_CFGS_ITEMS_FIELD.type = 11
-DIVINE_MISSION_CFGS_ITEMS_FIELD.cpp_type = 10
-
-DIVINE_MISSION_CFGS.name = "divine_mission_cfgs"
-DIVINE_MISSION_CFGS.full_name = ".ftcfg.divine_mission_cfgs"
-DIVINE_MISSION_CFGS.nested_types = {}
-DIVINE_MISSION_CFGS.enum_types = {}
-DIVINE_MISSION_CFGS.fields = {DIVINE_MISSION_CFGS_ITEMS_FIELD}
-DIVINE_MISSION_CFGS.is_extendable = false
-DIVINE_MISSION_CFGS.extensions = {}
-MAGIC_SKILL_CFG_ID_FIELD.name = "id"
-MAGIC_SKILL_CFG_ID_FIELD.full_name = ".ftcfg.magic_skill_cfg.id"
-MAGIC_SKILL_CFG_ID_FIELD.number = 1
-MAGIC_SKILL_CFG_ID_FIELD.index = 0
-MAGIC_SKILL_CFG_ID_FIELD.label = 2
-MAGIC_SKILL_CFG_ID_FIELD.has_default_value = false
-MAGIC_SKILL_CFG_ID_FIELD.default_value = 0
-MAGIC_SKILL_CFG_ID_FIELD.type = 13
-MAGIC_SKILL_CFG_ID_FIELD.cpp_type = 3
-
-MAGIC_SKILL_CFG_LAYERID_FIELD.name = "layerid"
-MAGIC_SKILL_CFG_LAYERID_FIELD.full_name = ".ftcfg.magic_skill_cfg.layerid"
-MAGIC_SKILL_CFG_LAYERID_FIELD.number = 2
-MAGIC_SKILL_CFG_LAYERID_FIELD.index = 1
-MAGIC_SKILL_CFG_LAYERID_FIELD.label = 2
-MAGIC_SKILL_CFG_LAYERID_FIELD.has_default_value = false
-MAGIC_SKILL_CFG_LAYERID_FIELD.default_value = 0
-MAGIC_SKILL_CFG_LAYERID_FIELD.type = 13
-MAGIC_SKILL_CFG_LAYERID_FIELD.cpp_type = 3
-
-MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.name = "max_level"
-MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.full_name = ".ftcfg.magic_skill_cfg.max_level"
-MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.number = 3
-MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.index = 2
-MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.label = 2
-MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.has_default_value = false
-MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.default_value = 0
-MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.type = 13
-MAGIC_SKILL_CFG_MAX_LEVEL_FIELD.cpp_type = 3
-
-MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.name = "magicid_arr"
-MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.full_name = ".ftcfg.magic_skill_cfg.magicid_arr"
-MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.number = 4
-MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.index = 3
-MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.label = 3
-MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.has_default_value = false
-MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.default_value = {}
-MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.type = 13
-MAGIC_SKILL_CFG_MAGICID_ARR_FIELD.cpp_type = 3
-
-MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.name = "magic_type"
-MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.full_name = ".ftcfg.magic_skill_cfg.magic_type"
-MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.number = 5
-MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.index = 4
-MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.label = 2
-MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.has_default_value = false
-MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.default_value = 0
-MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.type = 13
-MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD.cpp_type = 3
-
-MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.name = "slot_lock_cond"
-MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.full_name = ".ftcfg.magic_skill_cfg.slot_lock_cond"
-MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.number = 6
-MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.index = 5
-MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.label = 2
-MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.has_default_value = false
-MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.default_value = 0
-MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.type = 13
-MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD.cpp_type = 3
-
-MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.name = "skill_position"
-MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.full_name = ".ftcfg.magic_skill_cfg.skill_position"
-MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.number = 7
-MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.index = 6
-MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.label = 2
-MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.has_default_value = false
-MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.default_value = 0
-MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.type = 13
-MAGIC_SKILL_CFG_SKILL_POSITION_FIELD.cpp_type = 3
-
-MAGIC_SKILL_CFG_SKILL_ICON_FIELD.name = "skill_icon"
-MAGIC_SKILL_CFG_SKILL_ICON_FIELD.full_name = ".ftcfg.magic_skill_cfg.skill_icon"
-MAGIC_SKILL_CFG_SKILL_ICON_FIELD.number = 8
-MAGIC_SKILL_CFG_SKILL_ICON_FIELD.index = 7
-MAGIC_SKILL_CFG_SKILL_ICON_FIELD.label = 2
-MAGIC_SKILL_CFG_SKILL_ICON_FIELD.has_default_value = false
-MAGIC_SKILL_CFG_SKILL_ICON_FIELD.default_value = 0
-MAGIC_SKILL_CFG_SKILL_ICON_FIELD.type = 13
-MAGIC_SKILL_CFG_SKILL_ICON_FIELD.cpp_type = 3
-
-MAGIC_SKILL_CFG_SKILL_NAME_FIELD.name = "skill_name"
-MAGIC_SKILL_CFG_SKILL_NAME_FIELD.full_name = ".ftcfg.magic_skill_cfg.skill_name"
-MAGIC_SKILL_CFG_SKILL_NAME_FIELD.number = 9
-MAGIC_SKILL_CFG_SKILL_NAME_FIELD.index = 8
-MAGIC_SKILL_CFG_SKILL_NAME_FIELD.label = 2
-MAGIC_SKILL_CFG_SKILL_NAME_FIELD.has_default_value = false
-MAGIC_SKILL_CFG_SKILL_NAME_FIELD.default_value = 0
-MAGIC_SKILL_CFG_SKILL_NAME_FIELD.type = 13
-MAGIC_SKILL_CFG_SKILL_NAME_FIELD.cpp_type = 3
-
-MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.name = "skill_condition"
-MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.full_name = ".ftcfg.magic_skill_cfg.skill_condition"
-MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.number = 10
-MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.index = 9
-MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.label = 2
-MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.has_default_value = false
-MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.default_value = 0
-MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.type = 13
-MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD.cpp_type = 3
-
-MAGIC_SKILL_CFG.name = "magic_skill_cfg"
-MAGIC_SKILL_CFG.full_name = ".ftcfg.magic_skill_cfg"
-MAGIC_SKILL_CFG.nested_types = {}
-MAGIC_SKILL_CFG.enum_types = {}
-MAGIC_SKILL_CFG.fields = {MAGIC_SKILL_CFG_ID_FIELD, MAGIC_SKILL_CFG_LAYERID_FIELD, MAGIC_SKILL_CFG_MAX_LEVEL_FIELD, MAGIC_SKILL_CFG_MAGICID_ARR_FIELD, MAGIC_SKILL_CFG_MAGIC_TYPE_FIELD, MAGIC_SKILL_CFG_SLOT_LOCK_COND_FIELD, MAGIC_SKILL_CFG_SKILL_POSITION_FIELD, MAGIC_SKILL_CFG_SKILL_ICON_FIELD, MAGIC_SKILL_CFG_SKILL_NAME_FIELD, MAGIC_SKILL_CFG_SKILL_CONDITION_FIELD}
-MAGIC_SKILL_CFG.is_extendable = false
-MAGIC_SKILL_CFG.extensions = {}
-MAGIC_SKILL_CFGS_ITEMS_FIELD.name = "items"
-MAGIC_SKILL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_skill_cfgs.items"
-MAGIC_SKILL_CFGS_ITEMS_FIELD.number = 1
-MAGIC_SKILL_CFGS_ITEMS_FIELD.index = 0
-MAGIC_SKILL_CFGS_ITEMS_FIELD.label = 3
-MAGIC_SKILL_CFGS_ITEMS_FIELD.has_default_value = false
-MAGIC_SKILL_CFGS_ITEMS_FIELD.default_value = {}
-MAGIC_SKILL_CFGS_ITEMS_FIELD.message_type = MAGIC_SKILL_CFG
-MAGIC_SKILL_CFGS_ITEMS_FIELD.type = 11
-MAGIC_SKILL_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MAGIC_SKILL_CFGS.name = "magic_skill_cfgs"
-MAGIC_SKILL_CFGS.full_name = ".ftcfg.magic_skill_cfgs"
-MAGIC_SKILL_CFGS.nested_types = {}
-MAGIC_SKILL_CFGS.enum_types = {}
-MAGIC_SKILL_CFGS.fields = {MAGIC_SKILL_CFGS_ITEMS_FIELD}
-MAGIC_SKILL_CFGS.is_extendable = false
-MAGIC_SKILL_CFGS.extensions = {}
-MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.name = "level"
-MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.level"
-MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.number = 1
-MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.index = 0
-MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.label = 2
-MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.has_default_value = false
-MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.default_value = 0
-MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.type = 13
-MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD.cpp_type = 3
-
-MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.name = "next_level"
-MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.next_level"
-MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.number = 2
-MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.index = 1
-MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.label = 2
-MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.has_default_value = false
-MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.default_value = 0
-MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.type = 13
-MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD.cpp_type = 3
-
-MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.name = "magicid"
-MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.magicid"
-MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.number = 3
-MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.index = 2
-MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.label = 2
-MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.has_default_value = false
-MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.default_value = 0
-MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.type = 13
-MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD.cpp_type = 3
-
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.name = "attribute_type"
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.attribute_type"
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.number = 4
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.index = 3
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.label = 3
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.has_default_value = false
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.default_value = {}
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.type = 13
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD.cpp_type = 3
-
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.name = "attribute_value"
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.attribute_value"
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.number = 5
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.index = 4
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.label = 3
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.has_default_value = false
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.default_value = {}
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.type = 13
-MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD.cpp_type = 3
-
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.name = "formation_base_rate_incr"
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.formation_base_rate_incr"
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.number = 6
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.index = 5
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.label = 2
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.has_default_value = false
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.default_value = 0.0
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.type = 2
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD.cpp_type = 6
-
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.name = "formation_rate"
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.formation_rate"
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.number = 7
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.index = 6
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.label = 2
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.has_default_value = false
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.default_value = 0.0
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.type = 2
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD.cpp_type = 6
-
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.name = "formation_rate_incr"
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.formation_rate_incr"
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.number = 8
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.index = 7
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.label = 2
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.has_default_value = false
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.default_value = 0.0
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.type = 2
-MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD.cpp_type = 6
-
-MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.name = "skill_tips"
-MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.skill_tips"
-MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.number = 9
-MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.index = 8
-MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.label = 3
-MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.has_default_value = false
-MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.default_value = {}
-MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.type = 13
-MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD.cpp_type = 3
-
-MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.name = "partner_tips"
-MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfg.partner_tips"
-MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.number = 10
-MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.index = 9
-MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.label = 3
-MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.has_default_value = false
-MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.default_value = {}
-MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.type = 2
-MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD.cpp_type = 6
-
-MAGIC_SKILL_UPLEVEL_CFG.name = "magic_skill_uplevel_cfg"
-MAGIC_SKILL_UPLEVEL_CFG.full_name = ".ftcfg.magic_skill_uplevel_cfg"
-MAGIC_SKILL_UPLEVEL_CFG.nested_types = {}
-MAGIC_SKILL_UPLEVEL_CFG.enum_types = {}
-MAGIC_SKILL_UPLEVEL_CFG.fields = {MAGIC_SKILL_UPLEVEL_CFG_LEVEL_FIELD, MAGIC_SKILL_UPLEVEL_CFG_NEXT_LEVEL_FIELD, MAGIC_SKILL_UPLEVEL_CFG_MAGICID_FIELD, MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_TYPE_FIELD, MAGIC_SKILL_UPLEVEL_CFG_ATTRIBUTE_VALUE_FIELD, MAGIC_SKILL_UPLEVEL_CFG_FORMATION_BASE_RATE_INCR_FIELD, MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_FIELD, MAGIC_SKILL_UPLEVEL_CFG_FORMATION_RATE_INCR_FIELD, MAGIC_SKILL_UPLEVEL_CFG_SKILL_TIPS_FIELD, MAGIC_SKILL_UPLEVEL_CFG_PARTNER_TIPS_FIELD}
-MAGIC_SKILL_UPLEVEL_CFG.is_extendable = false
-MAGIC_SKILL_UPLEVEL_CFG.extensions = {}
-MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.name = "items"
-MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_skill_uplevel_cfgs.items"
-MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.number = 1
-MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.index = 0
-MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.label = 3
-MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.has_default_value = false
-MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.default_value = {}
-MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.message_type = MAGIC_SKILL_UPLEVEL_CFG
-MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.type = 11
-MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MAGIC_SKILL_UPLEVEL_CFGS.name = "magic_skill_uplevel_cfgs"
-MAGIC_SKILL_UPLEVEL_CFGS.full_name = ".ftcfg.magic_skill_uplevel_cfgs"
-MAGIC_SKILL_UPLEVEL_CFGS.nested_types = {}
-MAGIC_SKILL_UPLEVEL_CFGS.enum_types = {}
-MAGIC_SKILL_UPLEVEL_CFGS.fields = {MAGIC_SKILL_UPLEVEL_CFGS_ITEMS_FIELD}
-MAGIC_SKILL_UPLEVEL_CFGS.is_extendable = false
-MAGIC_SKILL_UPLEVEL_CFGS.extensions = {}
-MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.name = "layerid"
-MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.full_name = ".ftcfg.magic_skill_layer_cfg.layerid"
-MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.number = 1
-MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.index = 0
-MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.label = 2
-MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.has_default_value = false
-MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.default_value = 0
-MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.type = 13
-MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD.cpp_type = 3
-
-MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.name = "role_level"
-MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.full_name = ".ftcfg.magic_skill_layer_cfg.role_level"
-MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.number = 2
-MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.index = 1
-MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.label = 2
-MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.has_default_value = false
-MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.default_value = 0
-MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.type = 13
-MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD.cpp_type = 3
-
-MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.name = "layerid_arr"
-MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.full_name = ".ftcfg.magic_skill_layer_cfg.layerid_arr"
-MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.number = 3
-MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.index = 2
-MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.label = 3
-MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.has_default_value = false
-MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.default_value = {}
-MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.type = 13
-MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD.cpp_type = 3
-
-MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.name = "max_magic_skill_num"
-MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.full_name = ".ftcfg.magic_skill_layer_cfg.max_magic_skill_num"
-MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.number = 4
-MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.index = 3
-MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.label = 2
-MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.has_default_value = false
-MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.default_value = 0
-MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.type = 13
-MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD.cpp_type = 3
-
-MAGIC_SKILL_LAYER_CFG.name = "magic_skill_layer_cfg"
-MAGIC_SKILL_LAYER_CFG.full_name = ".ftcfg.magic_skill_layer_cfg"
-MAGIC_SKILL_LAYER_CFG.nested_types = {}
-MAGIC_SKILL_LAYER_CFG.enum_types = {}
-MAGIC_SKILL_LAYER_CFG.fields = {MAGIC_SKILL_LAYER_CFG_LAYERID_FIELD, MAGIC_SKILL_LAYER_CFG_ROLE_LEVEL_FIELD, MAGIC_SKILL_LAYER_CFG_LAYERID_ARR_FIELD, MAGIC_SKILL_LAYER_CFG_MAX_MAGIC_SKILL_NUM_FIELD}
-MAGIC_SKILL_LAYER_CFG.is_extendable = false
-MAGIC_SKILL_LAYER_CFG.extensions = {}
-MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.name = "items"
-MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_skill_layer_cfgs.items"
-MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.number = 1
-MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.index = 0
-MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.label = 3
-MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.has_default_value = false
-MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.default_value = {}
-MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.message_type = MAGIC_SKILL_LAYER_CFG
-MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.type = 11
-MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MAGIC_SKILL_LAYER_CFGS.name = "magic_skill_layer_cfgs"
-MAGIC_SKILL_LAYER_CFGS.full_name = ".ftcfg.magic_skill_layer_cfgs"
-MAGIC_SKILL_LAYER_CFGS.nested_types = {}
-MAGIC_SKILL_LAYER_CFGS.enum_types = {}
-MAGIC_SKILL_LAYER_CFGS.fields = {MAGIC_SKILL_LAYER_CFGS_ITEMS_FIELD}
-MAGIC_SKILL_LAYER_CFGS.is_extendable = false
-MAGIC_SKILL_LAYER_CFGS.extensions = {}
-MAGIC_POINT_REFINE_CFG_CONFID_FIELD.name = "confid"
-MAGIC_POINT_REFINE_CFG_CONFID_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.confid"
-MAGIC_POINT_REFINE_CFG_CONFID_FIELD.number = 1
-MAGIC_POINT_REFINE_CFG_CONFID_FIELD.index = 0
-MAGIC_POINT_REFINE_CFG_CONFID_FIELD.label = 2
-MAGIC_POINT_REFINE_CFG_CONFID_FIELD.has_default_value = false
-MAGIC_POINT_REFINE_CFG_CONFID_FIELD.default_value = 0
-MAGIC_POINT_REFINE_CFG_CONFID_FIELD.type = 13
-MAGIC_POINT_REFINE_CFG_CONFID_FIELD.cpp_type = 3
-
-MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.name = "main_quest_id"
-MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.main_quest_id"
-MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.number = 2
-MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.index = 1
-MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.label = 2
-MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.has_default_value = false
-MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.default_value = 0
-MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.type = 13
-MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD.cpp_type = 3
-
-MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.name = "role_level"
-MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.role_level"
-MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.number = 3
-MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.index = 2
-MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.label = 2
-MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.has_default_value = false
-MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.default_value = 0
-MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.type = 13
-MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD.cpp_type = 3
-
-MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.name = "min_point"
-MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.min_point"
-MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.number = 4
-MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.index = 3
-MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.label = 2
-MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.has_default_value = false
-MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.default_value = 0
-MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.type = 13
-MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD.cpp_type = 3
-
-MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.name = "max_point"
-MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.max_point"
-MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.number = 5
-MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.index = 4
-MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.label = 2
-MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.has_default_value = false
-MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.default_value = 0
-MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.type = 13
-MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD.cpp_type = 3
-
-MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.name = "item_id"
-MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.item_id"
-MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.number = 6
-MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.index = 5
-MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.label = 2
-MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.has_default_value = false
-MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.default_value = 0
-MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.type = 13
-MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD.cpp_type = 3
-
-MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.name = "item_num"
-MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.item_num"
-MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.number = 7
-MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.index = 6
-MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.label = 2
-MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.has_default_value = false
-MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.default_value = 0
-MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.type = 13
-MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD.cpp_type = 3
-
-MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.name = "coin_type"
-MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.coin_type"
-MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.number = 8
-MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.index = 7
-MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.label = 3
-MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.has_default_value = false
-MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.default_value = {}
-MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.type = 13
-MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD.cpp_type = 3
-
-MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.name = "coin_num"
-MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.coin_num"
-MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.number = 9
-MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.index = 8
-MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.label = 3
-MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.has_default_value = false
-MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.default_value = {}
-MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.type = 13
-MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD.cpp_type = 3
-
-MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.name = "refine_time"
-MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.refine_time"
-MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.number = 10
-MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.index = 9
-MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.label = 2
-MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.has_default_value = false
-MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.default_value = 0
-MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.type = 13
-MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD.cpp_type = 3
-
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.name = "cancel_coin_type"
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.cancel_coin_type"
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.number = 11
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.index = 10
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.label = 3
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.has_default_value = false
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.default_value = {}
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.type = 13
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD.cpp_type = 3
-
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.name = "cancel_coin_num"
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.full_name = ".ftcfg.magic_point_refine_cfg.cancel_coin_num"
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.number = 12
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.index = 11
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.label = 3
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.has_default_value = false
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.default_value = {}
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.type = 13
-MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD.cpp_type = 3
-
-MAGIC_POINT_REFINE_CFG.name = "magic_point_refine_cfg"
-MAGIC_POINT_REFINE_CFG.full_name = ".ftcfg.magic_point_refine_cfg"
-MAGIC_POINT_REFINE_CFG.nested_types = {}
-MAGIC_POINT_REFINE_CFG.enum_types = {}
-MAGIC_POINT_REFINE_CFG.fields = {MAGIC_POINT_REFINE_CFG_CONFID_FIELD, MAGIC_POINT_REFINE_CFG_MAIN_QUEST_ID_FIELD, MAGIC_POINT_REFINE_CFG_ROLE_LEVEL_FIELD, MAGIC_POINT_REFINE_CFG_MIN_POINT_FIELD, MAGIC_POINT_REFINE_CFG_MAX_POINT_FIELD, MAGIC_POINT_REFINE_CFG_ITEM_ID_FIELD, MAGIC_POINT_REFINE_CFG_ITEM_NUM_FIELD, MAGIC_POINT_REFINE_CFG_COIN_TYPE_FIELD, MAGIC_POINT_REFINE_CFG_COIN_NUM_FIELD, MAGIC_POINT_REFINE_CFG_REFINE_TIME_FIELD, MAGIC_POINT_REFINE_CFG_CANCEL_COIN_TYPE_FIELD, MAGIC_POINT_REFINE_CFG_CANCEL_COIN_NUM_FIELD}
-MAGIC_POINT_REFINE_CFG.is_extendable = false
-MAGIC_POINT_REFINE_CFG.extensions = {}
-MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.name = "items"
-MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.full_name = ".ftcfg.magic_point_refine_cfgs.items"
-MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.number = 1
-MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.index = 0
-MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.label = 3
-MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.has_default_value = false
-MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.default_value = {}
-MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.message_type = MAGIC_POINT_REFINE_CFG
-MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.type = 11
-MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD.cpp_type = 10
-
-MAGIC_POINT_REFINE_CFGS.name = "magic_point_refine_cfgs"
-MAGIC_POINT_REFINE_CFGS.full_name = ".ftcfg.magic_point_refine_cfgs"
-MAGIC_POINT_REFINE_CFGS.nested_types = {}
-MAGIC_POINT_REFINE_CFGS.enum_types = {}
-MAGIC_POINT_REFINE_CFGS.fields = {MAGIC_POINT_REFINE_CFGS_ITEMS_FIELD}
-MAGIC_POINT_REFINE_CFGS.is_extendable = false
-MAGIC_POINT_REFINE_CFGS.extensions = {}
-
-activation_cfg = protobuf.Message(ACTIVATION_CFG)
-activation_cfgs = protobuf.Message(ACTIVATION_CFGS)
-activation_reward_cfg = protobuf.Message(ACTIVATION_REWARD_CFG)
-activation_reward_cfgs = protobuf.Message(ACTIVATION_REWARD_CFGS)
-activity_cfg = protobuf.Message(ACTIVITY_CFG)
-activity_cfgs = protobuf.Message(ACTIVITY_CFGS)
-activity_dungeon_cfg = protobuf.Message(ACTIVITY_DUNGEON_CFG)
-activity_dungeon_cfgs = protobuf.Message(ACTIVITY_DUNGEON_CFGS)
-activity_info_cfg = protobuf.Message(ACTIVITY_INFO_CFG)
-activity_info_cfgs = protobuf.Message(ACTIVITY_INFO_CFGS)
-activity_rooms_cfg = protobuf.Message(ACTIVITY_ROOMS_CFG)
-activity_rooms_cfgs = protobuf.Message(ACTIVITY_ROOMS_CFGS)
-arena_data_cfg = protobuf.Message(ARENA_DATA_CFG)
-arena_data_cfgs = protobuf.Message(ARENA_DATA_CFGS)
-arena_reward_cfg = protobuf.Message(ARENA_REWARD_CFG)
-arena_reward_cfgs = protobuf.Message(ARENA_REWARD_CFGS)
-attribute_show_cfg = protobuf.Message(ATTRIBUTE_SHOW_CFG)
-attribute_show_cfgs = protobuf.Message(ATTRIBUTE_SHOW_CFGS)
-bag_routine_cfg = protobuf.Message(BAG_ROUTINE_CFG)
-bag_routine_cfgs = protobuf.Message(BAG_ROUTINE_CFGS)
-base_prop_cfg = protobuf.Message(BASE_PROP_CFG)
-base_prop_cfgs = protobuf.Message(BASE_PROP_CFGS)
-battle_collect_crystal_cfg = protobuf.Message(BATTLE_COLLECT_CRYSTAL_CFG)
-battle_collect_crystal_cfgs = protobuf.Message(BATTLE_COLLECT_CRYSTAL_CFGS)
-battle_crystal_info_cfg = protobuf.Message(BATTLE_CRYSTAL_INFO_CFG)
-battle_crystal_info_cfgs = protobuf.Message(BATTLE_CRYSTAL_INFO_CFGS)
-battle_crystal_rooms_cfg = protobuf.Message(BATTLE_CRYSTAL_ROOMS_CFG)
-battle_crystal_rooms_cfgs = protobuf.Message(BATTLE_CRYSTAL_ROOMS_CFGS)
-boss_show_cam_cfg = protobuf.Message(BOSS_SHOW_CAM_CFG)
-boss_show_cam_cfgs = protobuf.Message(BOSS_SHOW_CAM_CFGS)
-boss_show_ui_cfg = protobuf.Message(BOSS_SHOW_UI_CFG)
-boss_show_ui_cfgs = protobuf.Message(BOSS_SHOW_UI_CFGS)
-boss_showinfo_cfg = protobuf.Message(BOSS_SHOWINFO_CFG)
-boss_showinfo_cfgs = protobuf.Message(BOSS_SHOWINFO_CFGS)
-box_collect_cfg = protobuf.Message(BOX_COLLECT_CFG)
-box_collect_cfgs = protobuf.Message(BOX_COLLECT_CFGS)
-boxs_cfg = protobuf.Message(BOXS_CFG)
-boxs_cfgs = protobuf.Message(BOXS_CFGS)
-buff_cfg = protobuf.Message(BUFF_CFG)
-buff_cfgs = protobuf.Message(BUFF_CFGS)
-buff_effect_cfg = protobuf.Message(BUFF_EFFECT_CFG)
-buff_effect_cfgs = protobuf.Message(BUFF_EFFECT_CFGS)
-building_mission_pool_cfg = protobuf.Message(BUILDING_MISSION_POOL_CFG)
-building_mission_pool_cfgs = protobuf.Message(BUILDING_MISSION_POOL_CFGS)
-business_activity_cfg = protobuf.Message(BUSINESS_ACTIVITY_CFG)
-business_activity_cfgs = protobuf.Message(BUSINESS_ACTIVITY_CFGS)
-cam_options_cfg = protobuf.Message(CAM_OPTIONS_CFG)
-cam_options_cfgs = protobuf.Message(CAM_OPTIONS_CFGS)
-camp_change_cost_cfg = protobuf.Message(CAMP_CHANGE_COST_CFG)
-camp_change_cost_cfgs = protobuf.Message(CAMP_CHANGE_COST_CFGS)
-camp_relation_cfg = protobuf.Message(CAMP_RELATION_CFG)
-camp_relation_cfgs = protobuf.Message(CAMP_RELATION_CFGS)
-campboss_cfg = protobuf.Message(CAMPBOSS_CFG)
-campboss_cfgs = protobuf.Message(CAMPBOSS_CFGS)
-char_default_cfg = protobuf.Message(CHAR_DEFAULT_CFG)
-char_default_cfgs = protobuf.Message(CHAR_DEFAULT_CFGS)
-chest_drop_cfg = protobuf.Message(CHEST_DROP_CFG)
-chest_drop_cfgs = protobuf.Message(CHEST_DROP_CFGS)
-client_trigger_action_cfg = protobuf.Message(CLIENT_TRIGGER_ACTION_CFG)
-client_trigger_action_cfgs = protobuf.Message(CLIENT_TRIGGER_ACTION_CFGS)
-client_trigger_cfg = protobuf.Message(CLIENT_TRIGGER_CFG)
-client_trigger_cfgs = protobuf.Message(CLIENT_TRIGGER_CFGS)
-client_trigger_condition_cfg = protobuf.Message(CLIENT_TRIGGER_CONDITION_CFG)
-client_trigger_condition_cfgs = protobuf.Message(CLIENT_TRIGGER_CONDITION_CFGS)
-client_trigger_event_cfg = protobuf.Message(CLIENT_TRIGGER_EVENT_CFG)
-client_trigger_event_cfgs = protobuf.Message(CLIENT_TRIGGER_EVENT_CFGS)
-client_trigger_variable_cfg = protobuf.Message(CLIENT_TRIGGER_VARIABLE_CFG)
-client_trigger_variable_cfgs = protobuf.Message(CLIENT_TRIGGER_VARIABLE_CFGS)
-clue_cfg = protobuf.Message(CLUE_CFG)
-clue_cfgs = protobuf.Message(CLUE_CFGS)
-convoy_biaoche_cfg = protobuf.Message(CONVOY_BIAOCHE_CFG)
-convoy_biaoche_cfgs = protobuf.Message(CONVOY_BIAOCHE_CFGS)
-convoy_biaoche_scene_cfg = protobuf.Message(CONVOY_BIAOCHE_SCENE_CFG)
-convoy_biaoche_scene_cfgs = protobuf.Message(CONVOY_BIAOCHE_SCENE_CFGS)
-cooldown_cfg = protobuf.Message(COOLDOWN_CFG)
-cooldown_cfgs = protobuf.Message(COOLDOWN_CFGS)
-crusade_base_cfg = protobuf.Message(CRUSADE_BASE_CFG)
-crusade_base_cfgs = protobuf.Message(CRUSADE_BASE_CFGS)
-crusade_dungon_cfg = protobuf.Message(CRUSADE_DUNGON_CFG)
-crusade_dungon_cfgs = protobuf.Message(CRUSADE_DUNGON_CFGS)
-depot_unlock_cfg = protobuf.Message(DEPOT_UNLOCK_CFG)
-depot_unlock_cfgs = protobuf.Message(DEPOT_UNLOCK_CFGS)
-dig_treasure_event_cfg = protobuf.Message(DIG_TREASURE_EVENT_CFG)
-dig_treasure_event_cfgs = protobuf.Message(DIG_TREASURE_EVENT_CFGS)
-divine_mission_cfg = protobuf.Message(DIVINE_MISSION_CFG)
-divine_mission_cfgs = protobuf.Message(DIVINE_MISSION_CFGS)
-divine_section_cfg = protobuf.Message(DIVINE_SECTION_CFG)
-divine_section_cfgs = protobuf.Message(DIVINE_SECTION_CFGS)
-drop_point_cfg = protobuf.Message(DROP_POINT_CFG)
-drop_point_cfgs = protobuf.Message(DROP_POINT_CFGS)
-edn_cfg = protobuf.Message(EDN_CFG)
-edn_cfgs = protobuf.Message(EDN_CFGS)
-edn_relic_cfg = protobuf.Message(EDN_RELIC_CFG)
-edn_relic_cfgs = protobuf.Message(EDN_RELIC_CFGS)
-edn_scene_cfg = protobuf.Message(EDN_SCENE_CFG)
-edn_scene_cfgs = protobuf.Message(EDN_SCENE_CFGS)
-elite_common_info_cfg = protobuf.Message(ELITE_COMMON_INFO_CFG)
-elite_common_info_cfgs = protobuf.Message(ELITE_COMMON_INFO_CFGS)
-elite_hell_info_cfg = protobuf.Message(ELITE_HELL_INFO_CFG)
-elite_hell_info_cfgs = protobuf.Message(ELITE_HELL_INFO_CFGS)
-elite_level_cfg = protobuf.Message(ELITE_LEVEL_CFG)
-elite_level_cfgs = protobuf.Message(ELITE_LEVEL_CFGS)
-elite_reward_cfg = protobuf.Message(ELITE_REWARD_CFG)
-elite_reward_cfgs = protobuf.Message(ELITE_REWARD_CFGS)
-equip_cfg = protobuf.Message(EQUIP_CFG)
-equip_cfgs = protobuf.Message(EQUIP_CFGS)
-equip_list_cfg = protobuf.Message(EQUIP_LIST_CFG)
-equip_list_cfgs = protobuf.Message(EQUIP_LIST_CFGS)
-equip_set_cfg = protobuf.Message(EQUIP_SET_CFG)
-equip_set_cfgs = protobuf.Message(EQUIP_SET_CFGS)
-equip_set_prop_cfg = protobuf.Message(EQUIP_SET_PROP_CFG)
-equip_set_prop_cfgs = protobuf.Message(EQUIP_SET_PROP_CFGS)
-errorcode_notify_cfg = protobuf.Message(ERRORCODE_NOTIFY_CFG)
-errorcode_notify_cfgs = protobuf.Message(ERRORCODE_NOTIFY_CFGS)
-fashion_appreciation_cfg = protobuf.Message(FASHION_APPRECIATION_CFG)
-fashion_appreciation_cfgs = protobuf.Message(FASHION_APPRECIATION_CFGS)
-fashion_cfg = protobuf.Message(FASHION_CFG)
-fashion_cfgs = protobuf.Message(FASHION_CFGS)
-fashion_cost_cfg = protobuf.Message(FASHION_COST_CFG)
-fashion_cost_cfgs = protobuf.Message(FASHION_COST_CFGS)
-fate_value_reward_cfg = protobuf.Message(FATE_VALUE_REWARD_CFG)
-fate_value_reward_cfgs = protobuf.Message(FATE_VALUE_REWARD_CFGS)
-fetter_cfg = protobuf.Message(FETTER_CFG)
-fetter_cfgs = protobuf.Message(FETTER_CFGS)
-fightcirme_reward_cfg = protobuf.Message(FIGHTCIRME_REWARD_CFG)
-fightcirme_reward_cfgs = protobuf.Message(FIGHTCIRME_REWARD_CFGS)
-fightcrime_cfg = protobuf.Message(FIGHTCRIME_CFG)
-fightcrime_cfgs = protobuf.Message(FIGHTCRIME_CFGS)
-fightcrime_monster_cfg = protobuf.Message(FIGHTCRIME_MONSTER_CFG)
-fightcrime_monster_cfgs = protobuf.Message(FIGHTCRIME_MONSTER_CFGS)
-formula_cfg = protobuf.Message(FORMULA_CFG)
-formula_cfgs = protobuf.Message(FORMULA_CFGS)
-friend_title_cfg = protobuf.Message(FRIEND_TITLE_CFG)
-friend_title_cfgs = protobuf.Message(FRIEND_TITLE_CFGS)
-func_type_weight_cfg = protobuf.Message(FUNC_TYPE_WEIGHT_CFG)
-func_type_weight_cfgs = protobuf.Message(FUNC_TYPE_WEIGHT_CFGS)
-gemstone_inlay_cfg = protobuf.Message(GEMSTONE_INLAY_CFG)
-gemstone_inlay_cfgs = protobuf.Message(GEMSTONE_INLAY_CFGS)
-gemstone_list_cfg = protobuf.Message(GEMSTONE_LIST_CFG)
-gemstone_list_cfgs = protobuf.Message(GEMSTONE_LIST_CFGS)
-gift_giving_cfg = protobuf.Message(GIFT_GIVING_CFG)
-gift_giving_cfgs = protobuf.Message(GIFT_GIVING_CFGS)
-global_param_cfg = protobuf.Message(GLOBAL_PARAM_CFG)
-global_param_cfgs = protobuf.Message(GLOBAL_PARAM_CFGS)
-grow_point_cfg = protobuf.Message(GROW_POINT_CFG)
-grow_point_cfgs = protobuf.Message(GROW_POINT_CFGS)
-guil_post_cfg = protobuf.Message(GUIL_POST_CFG)
-guil_post_cfgs = protobuf.Message(GUIL_POST_CFGS)
-guild_base_cfg = protobuf.Message(GUILD_BASE_CFG)
-guild_base_cfgs = protobuf.Message(GUILD_BASE_CFGS)
-guild_building_mission_cfg = protobuf.Message(GUILD_BUILDING_MISSION_CFG)
-guild_building_mission_cfgs = protobuf.Message(GUILD_BUILDING_MISSION_CFGS)
-guild_flag_cfg = protobuf.Message(GUILD_FLAG_CFG)
-guild_flag_cfgs = protobuf.Message(GUILD_FLAG_CFGS)
-guild_mission_base_cfg = protobuf.Message(GUILD_MISSION_BASE_CFG)
-guild_mission_base_cfgs = protobuf.Message(GUILD_MISSION_BASE_CFGS)
-guild_mission_cfg = protobuf.Message(GUILD_MISSION_CFG)
-guild_mission_cfgs = protobuf.Message(GUILD_MISSION_CFGS)
-guild_practice_group_cfg = protobuf.Message(GUILD_PRACTICE_GROUP_CFG)
-guild_practice_group_cfgs = protobuf.Message(GUILD_PRACTICE_GROUP_CFGS)
-guild_practice_group_cont_cfg = protobuf.Message(GUILD_PRACTICE_GROUP_CONT_CFG)
-guild_practice_group_cont_cfgs = protobuf.Message(GUILD_PRACTICE_GROUP_CONT_CFGS)
-independent_random_reward_cfg = protobuf.Message(INDEPENDENT_RANDOM_REWARD_CFG)
-independent_random_reward_cfgs = protobuf.Message(INDEPENDENT_RANDOM_REWARD_CFGS)
-inner_alchemy_cfg = protobuf.Message(INNER_ALCHEMY_CFG)
-inner_alchemy_cfgs = protobuf.Message(INNER_ALCHEMY_CFGS)
-inner_alchemy_group_cfg = protobuf.Message(INNER_ALCHEMY_GROUP_CFG)
-inner_alchemy_group_cfgs = protobuf.Message(INNER_ALCHEMY_GROUP_CFGS)
-item_cfg = protobuf.Message(ITEM_CFG)
-item_cfgs = protobuf.Message(ITEM_CFGS)
-jewelry_make_cfg = protobuf.Message(JEWELRY_MAKE_CFG)
-jewelry_make_cfgs = protobuf.Message(JEWELRY_MAKE_CFGS)
-jump_action_cfg = protobuf.Message(JUMP_ACTION_CFG)
-jump_action_cfgs = protobuf.Message(JUMP_ACTION_CFGS)
-jump_cfg = protobuf.Message(JUMP_CFG)
-jump_cfgs = protobuf.Message(JUMP_CFGS)
-language_cfg = protobuf.Message(LANGUAGE_CFG)
-language_cfgs = protobuf.Message(LANGUAGE_CFGS)
-level_exp_cfg = protobuf.Message(LEVEL_EXP_CFG)
-level_exp_cfgs = protobuf.Message(LEVEL_EXP_CFGS)
-level_package_cfg = protobuf.Message(LEVEL_PACKAGE_CFG)
-level_package_cfgs = protobuf.Message(LEVEL_PACKAGE_CFGS)
-magic_att_cfg = protobuf.Message(MAGIC_ATT_CFG)
-magic_att_cfgs = protobuf.Message(MAGIC_ATT_CFGS)
-magic_combination_cfg = protobuf.Message(MAGIC_COMBINATION_CFG)
-magic_combination_cfgs = protobuf.Message(MAGIC_COMBINATION_CFGS)
-magic_divine_cfg = protobuf.Message(MAGIC_DIVINE_CFG)
-magic_divine_cfgs = protobuf.Message(MAGIC_DIVINE_CFGS)
-magic_levelup_cfg = protobuf.Message(MAGIC_LEVELUP_CFG)
-magic_levelup_cfgs = protobuf.Message(MAGIC_LEVELUP_CFGS)
-magic_ostiole_cfg = protobuf.Message(MAGIC_OSTIOLE_CFG)
-magic_ostiole_cfgs = protobuf.Message(MAGIC_OSTIOLE_CFGS)
-magic_point_refine_cfg = protobuf.Message(MAGIC_POINT_REFINE_CFG)
-magic_point_refine_cfgs = protobuf.Message(MAGIC_POINT_REFINE_CFGS)
-magic_skill_cfg = protobuf.Message(MAGIC_SKILL_CFG)
-magic_skill_cfgs = protobuf.Message(MAGIC_SKILL_CFGS)
-magic_skill_layer_cfg = protobuf.Message(MAGIC_SKILL_LAYER_CFG)
-magic_skill_layer_cfgs = protobuf.Message(MAGIC_SKILL_LAYER_CFGS)
-magic_skill_uplevel_cfg = protobuf.Message(MAGIC_SKILL_UPLEVEL_CFG)
-magic_skill_uplevel_cfgs = protobuf.Message(MAGIC_SKILL_UPLEVEL_CFGS)
-mall_item_cfg = protobuf.Message(MALL_ITEM_CFG)
-mall_item_cfgs = protobuf.Message(MALL_ITEM_CFGS)
-map_signs_cfg = protobuf.Message(MAP_SIGNS_CFG)
-map_signs_cfgs = protobuf.Message(MAP_SIGNS_CFGS)
-material_item_cfg = protobuf.Message(MATERIAL_ITEM_CFG)
-material_item_cfgs = protobuf.Message(MATERIAL_ITEM_CFGS)
-medal_base_cfg = protobuf.Message(MEDAL_BASE_CFG)
-medal_base_cfgs = protobuf.Message(MEDAL_BASE_CFGS)
-medal_composite_addition_cfg = protobuf.Message(MEDAL_COMPOSITE_ADDITION_CFG)
-medal_composite_addition_cfgs = protobuf.Message(MEDAL_COMPOSITE_ADDITION_CFGS)
-medal_group_cfg = protobuf.Message(MEDAL_GROUP_CFG)
-medal_group_cfgs = protobuf.Message(MEDAL_GROUP_CFGS)
-medal_open_level_cfg = protobuf.Message(MEDAL_OPEN_LEVEL_CFG)
-medal_open_level_cfgs = protobuf.Message(MEDAL_OPEN_LEVEL_CFGS)
-medal_star_open_level_cfg = protobuf.Message(MEDAL_STAR_OPEN_LEVEL_CFG)
-medal_star_open_level_cfgs = protobuf.Message(MEDAL_STAR_OPEN_LEVEL_CFGS)
-minimap_cfg = protobuf.Message(MINIMAP_CFG)
-minimap_cfgs = protobuf.Message(MINIMAP_CFGS)
-mission_cfg = protobuf.Message(MISSION_CFG)
-mission_cfgs = protobuf.Message(MISSION_CFGS)
-mission_group_cfg = protobuf.Message(MISSION_GROUP_CFG)
-mission_group_cfgs = protobuf.Message(MISSION_GROUP_CFGS)
-monster_cfg = protobuf.Message(MONSTER_CFG)
-monster_cfgs = protobuf.Message(MONSTER_CFGS)
-monthcard_base_cfg = protobuf.Message(MONTHCARD_BASE_CFG)
-monthcard_base_cfgs = protobuf.Message(MONTHCARD_BASE_CFGS)
-mountequip_cfg = protobuf.Message(MOUNTEQUIP_CFG)
-mountequip_cfgs = protobuf.Message(MOUNTEQUIP_CFGS)
-npc_function_cfg = protobuf.Message(NPC_FUNCTION_CFG)
-npc_function_cfgs = protobuf.Message(NPC_FUNCTION_CFGS)
-npc_spawn_method_cfg = protobuf.Message(NPC_SPAWN_METHOD_CFG)
-npc_spawn_method_cfgs = protobuf.Message(NPC_SPAWN_METHOD_CFGS)
-open_rules_data_cfg = protobuf.Message(OPEN_RULES_DATA_CFG)
-open_rules_data_cfgs = protobuf.Message(OPEN_RULES_DATA_CFGS)
-partenr_experience_cfg = protobuf.Message(PARTENR_EXPERIENCE_CFG)
-partenr_experience_cfgs = protobuf.Message(PARTENR_EXPERIENCE_CFGS)
-partner_activation_cfg = protobuf.Message(PARTNER_ACTIVATION_CFG)
-partner_activation_cfgs = protobuf.Message(PARTNER_ACTIVATION_CFGS)
-partner_attribute_cfg = protobuf.Message(PARTNER_ATTRIBUTE_CFG)
-partner_attribute_cfgs = protobuf.Message(PARTNER_ATTRIBUTE_CFGS)
-partner_base_cfg = protobuf.Message(PARTNER_BASE_CFG)
-partner_base_cfgs = protobuf.Message(PARTNER_BASE_CFGS)
-partner_chip_cfg = protobuf.Message(PARTNER_CHIP_CFG)
-partner_chip_cfgs = protobuf.Message(PARTNER_CHIP_CFGS)
-partner_currency_cfg = protobuf.Message(PARTNER_CURRENCY_CFG)
-partner_currency_cfgs = protobuf.Message(PARTNER_CURRENCY_CFGS)
-partner_equiphecheng_cfg = protobuf.Message(PARTNER_EQUIPHECHENG_CFG)
-partner_equiphecheng_cfgs = protobuf.Message(PARTNER_EQUIPHECHENG_CFGS)
-partner_formation_cfg = protobuf.Message(PARTNER_FORMATION_CFG)
-partner_formation_cfgs = protobuf.Message(PARTNER_FORMATION_CFGS)
-partner_impre_levelup_cfg = protobuf.Message(PARTNER_IMPRE_LEVELUP_CFG)
-partner_impre_levelup_cfgs = protobuf.Message(PARTNER_IMPRE_LEVELUP_CFGS)
-partner_impression_cfg = protobuf.Message(PARTNER_IMPRESSION_CFG)
-partner_impression_cfgs = protobuf.Message(PARTNER_IMPRESSION_CFGS)
-partner_item_compound_cfg = protobuf.Message(PARTNER_ITEM_COMPOUND_CFG)
-partner_item_compound_cfgs = protobuf.Message(PARTNER_ITEM_COMPOUND_CFGS)
-partner_mood_cfg = protobuf.Message(PARTNER_MOOD_CFG)
-partner_mood_cfgs = protobuf.Message(PARTNER_MOOD_CFGS)
-partner_multiple_cfg = protobuf.Message(PARTNER_MULTIPLE_CFG)
-partner_multiple_cfgs = protobuf.Message(PARTNER_MULTIPLE_CFGS)
-partner_passiveskill_cfg = protobuf.Message(PARTNER_PASSIVESKILL_CFG)
-partner_passiveskill_cfgs = protobuf.Message(PARTNER_PASSIVESKILL_CFGS)
-partner_star_cfg = protobuf.Message(PARTNER_STAR_CFG)
-partner_star_cfgs = protobuf.Message(PARTNER_STAR_CFGS)
-partner_study_cfg = protobuf.Message(PARTNER_STUDY_CFG)
-partner_study_cfgs = protobuf.Message(PARTNER_STUDY_CFGS)
-playscg_cfg = protobuf.Message(PLAYSCG_CFG)
-playscg_cfgs = protobuf.Message(PLAYSCG_CFGS)
-plot_data_cfg = protobuf.Message(PLOT_DATA_CFG)
-plot_data_cfgs = protobuf.Message(PLOT_DATA_CFGS)
-prop_type_cfg = protobuf.Message(PROP_TYPE_CFG)
-prop_type_cfgs = protobuf.Message(PROP_TYPE_CFGS)
-randomman_cfg = protobuf.Message(RANDOMMAN_CFG)
-randomman_cfgs = protobuf.Message(RANDOMMAN_CFGS)
-randomwoman_cfg = protobuf.Message(RANDOMWOMAN_CFG)
-randomwoman_cfgs = protobuf.Message(RANDOMWOMAN_CFGS)
-rank_field_cfg = protobuf.Message(RANK_FIELD_CFG)
-rank_field_cfgs = protobuf.Message(RANK_FIELD_CFGS)
-rank_function_cfg = protobuf.Message(RANK_FUNCTION_CFG)
-rank_function_cfgs = protobuf.Message(RANK_FUNCTION_CFGS)
-res_path_cfg = protobuf.Message(RES_PATH_CFG)
-res_path_cfgs = protobuf.Message(RES_PATH_CFGS)
-resource_compund_cfg = protobuf.Message(RESOURCE_COMPUND_CFG)
-resource_compund_cfgs = protobuf.Message(RESOURCE_COMPUND_CFGS)
-revive_show_cfg = protobuf.Message(REVIVE_SHOW_CFG)
-revive_show_cfgs = protobuf.Message(REVIVE_SHOW_CFGS)
-reward_cfg = protobuf.Message(REWARD_CFG)
-reward_cfgs = protobuf.Message(REWARD_CFGS)
-role_parts_cfg = protobuf.Message(ROLE_PARTS_CFG)
-role_parts_cfgs = protobuf.Message(ROLE_PARTS_CFGS)
-route_mark_cfg = protobuf.Message(ROUTE_MARK_CFG)
-route_mark_cfgs = protobuf.Message(ROUTE_MARK_CFGS)
-rune_decompose_cfg = protobuf.Message(RUNE_DECOMPOSE_CFG)
-rune_decompose_cfgs = protobuf.Message(RUNE_DECOMPOSE_CFGS)
-rune_make_cfg = protobuf.Message(RUNE_MAKE_CFG)
-rune_make_cfgs = protobuf.Message(RUNE_MAKE_CFGS)
-rune_make_list_cfg = protobuf.Message(RUNE_MAKE_LIST_CFG)
-rune_make_list_cfgs = protobuf.Message(RUNE_MAKE_LIST_CFGS)
-rune_prop_group_cfg = protobuf.Message(RUNE_PROP_GROUP_CFG)
-rune_prop_group_cfgs = protobuf.Message(RUNE_PROP_GROUP_CFGS)
-rune_prop_refine_cfg = protobuf.Message(RUNE_PROP_REFINE_CFG)
-rune_prop_refine_cfgs = protobuf.Message(RUNE_PROP_REFINE_CFGS)
-rune_quality_cfg = protobuf.Message(RUNE_QUALITY_CFG)
-rune_quality_cfgs = protobuf.Message(RUNE_QUALITY_CFGS)
-rune_skill_group_cfg = protobuf.Message(RUNE_SKILL_GROUP_CFG)
-rune_skill_group_cfgs = protobuf.Message(RUNE_SKILL_GROUP_CFGS)
-rune_skill_refine_cfg = protobuf.Message(RUNE_SKILL_REFINE_CFG)
-rune_skill_refine_cfgs = protobuf.Message(RUNE_SKILL_REFINE_CFGS)
-scene_area_cfg = protobuf.Message(SCENE_AREA_CFG)
-scene_area_cfgs = protobuf.Message(SCENE_AREA_CFGS)
-scene_cfg = protobuf.Message(SCENE_CFG)
-scene_cfgs = protobuf.Message(SCENE_CFGS)
-scene_door_cfg = protobuf.Message(SCENE_DOOR_CFG)
-scene_door_cfgs = protobuf.Message(SCENE_DOOR_CFGS)
-scene_event_cfg = protobuf.Message(SCENE_EVENT_CFG)
-scene_event_cfgs = protobuf.Message(SCENE_EVENT_CFGS)
-scene_function_cfg = protobuf.Message(SCENE_FUNCTION_CFG)
-scene_function_cfgs = protobuf.Message(SCENE_FUNCTION_CFGS)
-scene_organ_cfg = protobuf.Message(SCENE_ORGAN_CFG)
-scene_organ_cfgs = protobuf.Message(SCENE_ORGAN_CFGS)
-scene_portal_cfg = protobuf.Message(SCENE_PORTAL_CFG)
-scene_portal_cfgs = protobuf.Message(SCENE_PORTAL_CFGS)
-scene_trigger_cfg = protobuf.Message(SCENE_TRIGGER_CFG)
-scene_trigger_cfgs = protobuf.Message(SCENE_TRIGGER_CFGS)
-service_cfg = protobuf.Message(SERVICE_CFG)
-service_cfgs = protobuf.Message(SERVICE_CFGS)
-shop_type_cfg = protobuf.Message(SHOP_TYPE_CFG)
-shop_type_cfgs = protobuf.Message(SHOP_TYPE_CFGS)
-signup_accumulation_cfg = protobuf.Message(SIGNUP_ACCUMULATION_CFG)
-signup_accumulation_cfgs = protobuf.Message(SIGNUP_ACCUMULATION_CFGS)
-signup_base_cfg = protobuf.Message(SIGNUP_BASE_CFG)
-signup_base_cfgs = protobuf.Message(SIGNUP_BASE_CFGS)
-skill_cfg = protobuf.Message(SKILL_CFG)
-skill_cfgs = protobuf.Message(SKILL_CFGS)
-skill_condition_cfg = protobuf.Message(SKILL_CONDITION_CFG)
-skill_condition_cfgs = protobuf.Message(SKILL_CONDITION_CFGS)
-skill_id_cfg = protobuf.Message(SKILL_ID_CFG)
-skill_id_cfgs = protobuf.Message(SKILL_ID_CFGS)
-skill_summoned_cfg = protobuf.Message(SKILL_SUMMONED_CFG)
-skill_summoned_cfgs = protobuf.Message(SKILL_SUMMONED_CFGS)
-skill_summoned_npc_cfg = protobuf.Message(SKILL_SUMMONED_NPC_CFG)
-skill_summoned_npc_cfgs = protobuf.Message(SKILL_SUMMONED_NPC_CFGS)
-soul_base_attr_cfg = protobuf.Message(SOUL_BASE_ATTR_CFG)
-soul_base_attr_cfgs = protobuf.Message(SOUL_BASE_ATTR_CFGS)
-soul_level_up_cfg = protobuf.Message(SOUL_LEVEL_UP_CFG)
-soul_level_up_cfgs = protobuf.Message(SOUL_LEVEL_UP_CFGS)
-soul_magic_attr_cfg = protobuf.Message(SOUL_MAGIC_ATTR_CFG)
-soul_magic_attr_cfgs = protobuf.Message(SOUL_MAGIC_ATTR_CFGS)
-soul_magic_rock_cfg = protobuf.Message(SOUL_MAGIC_ROCK_CFG)
-soul_magic_rock_cfgs = protobuf.Message(SOUL_MAGIC_ROCK_CFGS)
-soul_refine_rock_cfg = protobuf.Message(SOUL_REFINE_ROCK_CFG)
-soul_refine_rock_cfgs = protobuf.Message(SOUL_REFINE_ROCK_CFGS)
-soul_suit_attr_cfg = protobuf.Message(SOUL_SUIT_ATTR_CFG)
-soul_suit_attr_cfgs = protobuf.Message(SOUL_SUIT_ATTR_CFGS)
-starspirit_dungoen_cfg = protobuf.Message(STARSPIRIT_DUNGOEN_CFG)
-starspirit_dungoen_cfgs = protobuf.Message(STARSPIRIT_DUNGOEN_CFGS)
-state_cfg = protobuf.Message(STATE_CFG)
-state_cfgs = protobuf.Message(STATE_CFGS)
-strength_convert_cfg = protobuf.Message(STRENGTH_CONVERT_CFG)
-strength_convert_cfgs = protobuf.Message(STRENGTH_CONVERT_CFGS)
-strengthen_cfg = protobuf.Message(STRENGTHEN_CFG)
-strengthen_cfgs = protobuf.Message(STRENGTHEN_CFGS)
-subsys_cfg = protobuf.Message(SUBSYS_CFG)
-subsys_cfgs = protobuf.Message(SUBSYS_CFGS)
-suppress_cfg = protobuf.Message(SUPPRESS_CFG)
-suppress_cfgs = protobuf.Message(SUPPRESS_CFGS)
-suppress_group_cfg = protobuf.Message(SUPPRESS_GROUP_CFG)
-suppress_group_cfgs = protobuf.Message(SUPPRESS_GROUP_CFGS)
-test_cfg = protobuf.Message(TEST_CFG)
-test_cfgs = protobuf.Message(TEST_CFGS)
-tips_cfg = protobuf.Message(TIPS_CFG)
-tips_cfgs = protobuf.Message(TIPS_CFGS)
-tower_base_cfg = protobuf.Message(TOWER_BASE_CFG)
-tower_base_cfgs = protobuf.Message(TOWER_BASE_CFGS)
-trade_filter_rules_cfg = protobuf.Message(TRADE_FILTER_RULES_CFG)
-trade_filter_rules_cfgs = protobuf.Message(TRADE_FILTER_RULES_CFGS)
-trade_sort_rules_cfg = protobuf.Message(TRADE_SORT_RULES_CFG)
-trade_sort_rules_cfgs = protobuf.Message(TRADE_SORT_RULES_CFGS)
-trade_sub_tabs_cfg = protobuf.Message(TRADE_SUB_TABS_CFG)
-trade_sub_tabs_cfgs = protobuf.Message(TRADE_SUB_TABS_CFGS)
-trade_top_tabs_cfg = protobuf.Message(TRADE_TOP_TABS_CFG)
-trade_top_tabs_cfgs = protobuf.Message(TRADE_TOP_TABS_CFGS)
-treasure_rooms_cfg = protobuf.Message(TREASURE_ROOMS_CFG)
-treasure_rooms_cfgs = protobuf.Message(TREASURE_ROOMS_CFGS)
-trigger_action_cfg = protobuf.Message(TRIGGER_ACTION_CFG)
-trigger_action_cfgs = protobuf.Message(TRIGGER_ACTION_CFGS)
-trigger_condition_cfg = protobuf.Message(TRIGGER_CONDITION_CFG)
-trigger_condition_cfgs = protobuf.Message(TRIGGER_CONDITION_CFGS)
-trigger_event_cfg = protobuf.Message(TRIGGER_EVENT_CFG)
-trigger_event_cfgs = protobuf.Message(TRIGGER_EVENT_CFGS)
-trigger_variable_cfg = protobuf.Message(TRIGGER_VARIABLE_CFG)
-trigger_variable_cfgs = protobuf.Message(TRIGGER_VARIABLE_CFGS)
-ui_contribution_cfg = protobuf.Message(UI_CONTRIBUTION_CFG)
-ui_contribution_cfgs = protobuf.Message(UI_CONTRIBUTION_CFGS)
-weight_random_reward_cfg = protobuf.Message(WEIGHT_RANDOM_REWARD_CFG)
-weight_random_reward_cfgs = protobuf.Message(WEIGHT_RANDOM_REWARD_CFGS)
-wizard_base_cfg = protobuf.Message(WIZARD_BASE_CFG)
-wizard_base_cfgs = protobuf.Message(WIZARD_BASE_CFGS)
-wizard_level_cfg = protobuf.Message(WIZARD_LEVEL_CFG)
-wizard_level_cfgs = protobuf.Message(WIZARD_LEVEL_CFGS)
-wizard_task_cfg = protobuf.Message(WIZARD_TASK_CFG)
-wizard_task_cfgs = protobuf.Message(WIZARD_TASK_CFGS)
-world_map_cfg = protobuf.Message(WORLD_MAP_CFG)
-world_map_cfgs = protobuf.Message(WORLD_MAP_CFGS)
-zone_location_cfg = protobuf.Message(ZONE_LOCATION_CFG)
-zone_location_cfgs = protobuf.Message(ZONE_LOCATION_CFGS)
-
diff --git a/server-beta/test/example/vm.txt b/server-beta/test/example/vm.txt
deleted file mode 100644
index f2f4144d..00000000
--- a/server-beta/test/example/vm.txt
+++ /dev/null
@@ -1,1544 +0,0 @@
-local env = require 'core.env'
-local library = require 'core.library'
-local createValue = require 'core.value'
-
-local DefaultSource = { start = 0, finish = 0 }
-local GlobalChild
-
--- 根据赋值顺序决定遍历顺序的表
-local function orderTable()
- local t = {}
- local list = {}
- local mark = {}
- return setmetatable(t, {
- __newindex = function (self, k, v)
- if not mark[k] then
- mark[k] = true
- list[#list+1] = k
- end
- rawset(self, k, v)
- end,
- __pairs = function (self)
- local i = 0
- return function ()
- while true do
- i = i + 1
- local k = list[i]
- if not k then
- return nil, nil
- end
- local v = t[k]
- if v ~= nil then
- return k, v
- end
- end
- end
- end,
- })
-end
-
-local function readOnly(t)
- return setmetatable({}, {
- __index = function (self, k)
- if k == nil then
- return nil
- end
- local v = t[k]
- if type(v) == 'table' then
- v = readOnly(v)
- end
- self[k] = v
- return v
- end,
- __len = function (self)
- return #t
- end,
- __pairs = function (self)
- local keys = {}
- local mark = {}
- for k in next, self do
- keys[#keys+1] = k
- end
- for k in pairs(t) do
- if not mark[k] then
- mark[k] = true
- keys[#keys+1] = k
- end
- end
- local i = 0
- return function ()
- i = i + 1
- local k = keys[i]
- return k, self[k]
- end
- end,
- __source = t,
- })
-end
-
-local mt = {}
-mt.__index = mt
-
-function mt:createDummyVar(source, value)
- local loc = {
- type = 'local',
- key = '',
- source = source or DefaultSource,
- }
- self:setValue(loc, value, source)
- return loc
-end
-
-function mt:createLocal(key, source, value)
- local loc = {
- type = 'local',
- key = key,
- source = source or DefaultSource,
- close = self.scope.block.finish,
- }
-
- if source then
- source.isLocal = true
- end
-
- local shadow = self.scope.locals[key]
- if shadow then
- shadow.close = source and (source.start-1)
- local group
- if shadow.shadow then
- group = shadow.shadow
- else
- group = { shadow }
- shadow.shadow = group
- end
- group[#group+1] = loc
- loc.shadow = group
- end
-
- self.scope.locals[key] = loc
- self.results.locals[#self.results.locals+1] = loc
-
- self:addInfo(loc, 'local', source)
- self:setValue(loc, value, source)
- return loc
-end
-
-function mt:createArg(key, source, value)
- local loc = self:createLocal(key, source, value)
- if source then
- source.isArg = true
- end
- return loc
-end
-
-function mt:scopePush(block)
- if not block.start then
- error('Scope push without start!')
- end
- self.scope:push()
- self.scope.block = block
-end
-
-function mt:scopePop()
- self.scope:pop()
-end
-
-function mt:addInfo(obj, type, source)
- if source and not source.start then
- error('Miss start: ' .. table.dump(source))
- end
- obj[#obj+1] = {
- type = type,
- source = source or DefaultSource,
- }
- if source then
- source.uri = self.uri
- local other = self.results.sources[source]
- if other then
- if other.type == 'multi-source' then
- other[#other+1] = obj
- else
- other = {
- type = 'multi-source',
- [1] = other,
- [2] = obj,
- }
- end
- else
- self.results.sources[source] = obj
- end
- if type == 'set' or type == 'return' then
- if not obj.declarat then
- obj.declarat = source
- end
- end
- end
- return obj
-end
-
-function mt:createDots(index, source)
- local dots = {
- type = 'dots',
- source = source or DefaultSource,
- func = self:getCurrentFunction(),
- index = index,
- }
- self.chunk.dots = dots
- return dots
-end
-
-function mt:buildTable(source)
- local tbl = self:createValue('table', source)
- if not source then
- return tbl
- end
- local n = 0
- for index, obj in ipairs(source) do
- if obj.type == 'pair' then
- local value = self:getExp(obj[2])
- local key = obj[1]
- if key.index then
- local index = self:getIndex(key)
- local field = self:createField(tbl, index, key)
- if value.type == 'list' then
- self:setValue(field, value[1], key)
- else
- self:setValue(field, value, key)
- end
- else
- if key.type == 'name' then
- local field = self:createField(tbl, key[1], key)
- self.results.indexs[#self.results.indexs+1] = field
- key.isIndex = true
- if value.type == 'list' then
- self:setValue(field, value[1], key)
- else
- self:setValue(field, value, key)
- end
- end
- end
- else
- local value = self:getExp(obj)
- if value.type == 'list' then
- if index == #source then
- for i, v in ipairs(value) do
- local field = self:createField(tbl, n + i)
- self:setValue(field, v)
- end
- else
- n = n + 1
- local field = self:createField(tbl, n)
- self:setValue(field, value[1])
- end
- else
- n = n + 1
- local field = self:createField(tbl, n)
- self:setValue(field, value)
- end
- -- 处理写了一半的 key = value,把name类的数组元素视为哈希键
- if obj.type == 'name' then
- obj.isIndex = true
- end
- end
- end
- return tbl
-end
-
-function mt:mergeValue(a, b, mark)
- if a == b then
- return
- end
- if not mark then
- mark = {}
- end
- if mark[a] or mark[b] then
- return
- end
- if a.uri ~= self.uri then
- return
- end
- mark[a] = true
- mark[b] = true
- self:mergeChild(a, b, mark)
- for k in pairs(a) do
- a[k] = nil
- end
- for k, v in pairs(b) do
- a[k] = v
- end
-end
-
-function mt:mergeField(a, b, mark)
- if a == b then
- return
- end
- if not mark then
- mark = {}
- end
- for i, info in ipairs(a) do
- a[i] = nil
- b[#b+1] = info
- end
- for i, v in ipairs(b) do
- a[i] = v
- end
- self:mergeValue(a.value, b.value, mark)
-end
-
-function mt:mergeChild(a, b, mark)
- if a == b then
- return
- end
- if not a.child and not b.child then
- return
- end
- if not mark then
- mark = {}
- end
- if a.uri ~= self.uri then
- return
- end
- if b.uri == self.uri then
- local child = a.child or orderTable()
- local other = b.child or orderTable()
- a.child = nil
- b.child = nil
- for k, v in pairs(other) do
- if child[k] then
- self:mergeField(child[k], v, mark)
- else
- child[k] = v
- end
- end
- a.child = child
- b.child = child
- else
- local child = a.child or orderTable()
- local other = b.child
- if not other then
- return
- end
- a.child = nil
- for k, v in pairs(other) do
- child[k] = v
- end
- a.child = child
- end
-end
-
-function mt:setValue(var, value, source)
- if value and value.type == 'list' then
- error('Cant set value list')
- end
- value = value or self:createValue('any', source)
- if source and source.start then
- self:addInfo(var, 'set', source)
- self:addInfo(value, 'set', source)
- end
- if var.value then
- if value.type == 'any' then
- self:mergeChild(var.value, value)
- elseif value.type == 'nil' then
- self:mergeValue(var.value, value)
- elseif var.value.uri == self.uri then
- var.value = value
- end
- value = var.value
- else
- var.value = value
- end
- return value
-end
-
-function mt:getValue(var)
- if not var.value then
- var.value = self:createValue('any')
- end
- return var.value
-end
-
-function mt:createField(pValue, name, source)
- if pValue.type == 'local' or pValue.type == 'field' then
- error('Only value can create field')
- end
- local field = {
- type = 'field',
- key = name,
- source = source or DefaultSource,
- }
-
- if not pValue.child then
- pValue.child = orderTable()
- end
- pValue.child[name] = field
- self:inference(pValue, 'table')
- return field
-end
-
-function mt:getField(pValue, name, source)
- local field = (pValue.child and pValue.child[name])
- if not field and pValue.ENV then
- if self.lsp then
- field = self.lsp:getGlobal(name)
- end
- end
- if not field then
- field = self:createField(pValue, name, source)
- end
- return field
-end
-
-function mt:isGlobal(field)
- if field.type ~= 'field' then
- return false
- end
- if field.parent.value.ENV then
- return true
- else
- return false
- end
-end
-
-function mt:buildFunction(exp, object)
- local func = self:createValue('function', exp)
- func.args = {}
- func.argValues = {}
-
- if not exp then
- return func
- end
-
- self:scopePush(exp)
- self.chunk:push()
- self.chunk:cut 'dots'
- self.chunk:cut 'labels'
- self.chunk.func = func
-
- if object then
- local var = self:createArg('self', object.source, self:getValue(object))
- var.hide = true
- func.args[1] = var
- end
-
- local stop
- self:forList(exp.arg, function (arg)
- if stop then
- return
- end
- if arg.type == 'name' then
- local var = self:createArg(arg[1], arg)
- arg.isArg = true
- func.args[#func.args+1] = var
- func.argValues[#func.args] = self:getValue(var)
- elseif arg.type == '...' then
- self:createDots(#func.args+1, arg)
- for _ = 1, 10 do
- func.argValues[#func.argValues+1] = self:createValue('any', arg)
- end
- stop = true
- end
- end)
-
- self:doActions(exp)
-
- self.results.funcs[#self.results.funcs+1] = func
-
- self.chunk:pop()
- self:scopePop()
-
- return func
-end
-
-function mt:forList(list, callback)
- if not list then
- return
- end
- if list.type == 'list' then
- for i = 1, #list do
- callback(list[i])
- end
- else
- callback(list)
- end
-end
-
-function mt:countList(list)
- if not list then
- return 0
- end
- if list.type == 'list' then
- return #list
- end
- return 1
-end
-
-function mt:updateFunctionArgs(func)
- if not func.argValues then
- return
- end
- if not func.args then
- return
- end
-
- local values = func.argValues
- for i, var in ipairs(func.args) do
- if var.type == 'dots' then
- local list = {
- type = 'list',
- }
- for n = i, #values do
- list[n-i+1] = values[n]
- end
- self:setValue(var, list)
- break
- else
- self:setValue(var, values[i])
- end
- end
-end
-
-function mt:setFunctionArg(func, values)
- if func.uri ~= self.uri then
- return
- end
- if not func.argValues then
- func.argValues = {}
- end
- for i = 1, #values do
- if not func.argValues[i] then
- func.argValues[i] = values[i]
- end
- self:inference(values[i], func.argValues[i].type)
- self:inference(func.argValues[i], values[i].type)
- end
-
- self:updateFunctionArgs(func)
-end
-
-function mt:getFunctionArg(func, i)
- if not func.argValues then
- func.argValues = {}
- end
- if not func.argValues[i] then
- for n = #func.argValues+1, i do
- func.argValues[n] = self:createValue('any')
- end
- end
- return func.argValues[i]
-end
-
-function mt:checkMetaIndex(value, meta)
- local index = self:getField(meta, '__index')
- if not index then
- return
- end
- local indexValue = self:getValue(index)
- -- TODO 支持function
- self:mergeChild(value, indexValue)
-end
-
-function mt:callSetMetaTable(func, values)
- if not values[1] then
- values[1] = self:createValue('any')
- end
- if not values[2] then
- values[2] = self:createValue('any')
- end
- self:setFunctionReturn(func, 1, values[1])
-
- values[1].metatable = values[2]
- -- 检查 __index
- self:checkMetaIndex(values[1], values[2])
-end
-
-function mt:getRequire(strValue, destVM)
- -- 取出对方的主函数
- local main = destVM.results.main
- -- 获取主函数返回值,注意不能修改对方的环境
- local mainValue
- if main.returns then
- mainValue = readOnly(main.returns[1])
- else
- mainValue = self:createValue('boolean', nil, true)
- mainValue.uri = destVM.uri
- end
-
- return mainValue
-end
-
-function mt:getLoadFile(strValue, destVM)
- -- 取出对方的主函数
- local main = destVM.results.main
- -- loadfile 的返回值就是对方的主函数
- local mainValue = readOnly(main)
-
- return mainValue
-end
-
-function mt:tryRequireOne(strValue, mode)
- if not self.lsp or not self.lsp.workspace then
- return nil
- end
- local str = strValue.value
- if type(str) == 'string' then
- -- 支持 require 'xxx' 的转到定义
- local strSource = strValue.source
- self.results.sources[strSource] = strValue
- strValue.isRequire = true
-
- local uri
- if mode == 'require' then
- uri = self.lsp.workspace:searchPath(self.uri, str)
- elseif mode == 'loadfile' then
- uri = self.lsp.workspace:loadPath(self.uri, str)
- elseif mode == 'dofile' then
- uri = self.lsp.workspace:loadPath(self.uri, str)
- end
- if not uri then
- return nil
- end
-
- strValue.uri = uri
- -- 如果取不到VM(不编译),则做个标记,之后再取一次
- local destVM = self.lsp:getVM(uri)
- self.lsp:compileChain(self.uri, uri)
- if destVM then
- if mode == 'require' then
- return self:getRequire(strValue, destVM)
- elseif mode == 'loadfile' then
- return self:getLoadFile(strValue, destVM)
- elseif mode == 'dofile' then
- return self:getRequire(strValue, destVM)
- end
- end
- end
- return nil
-end
-
-function mt:callRequire(func, values)
- if not values[1] then
- values[1] = self:createValue('any')
- end
- local str = values[1].value
- if type(str) ~= 'string' then
- return
- end
- local lib = library.library[str]
- if lib then
- local value = self:getLibValue(lib, 'library')
- self:setFunctionReturn(func, 1, value)
- return
- else
- local requireValue = self:tryRequireOne(values[1], 'require')
- if not requireValue then
- requireValue = self:createValue('boolean')
- requireValue.isRequire = true
- end
- self:setFunctionReturn(func, 1, requireValue)
- end
-end
-
-function mt:callLoadFile(func, values)
- if not values[1] then
- values[1] = self:createValue('any')
- end
- local str = values[1].value
- if type(str) ~= 'string' then
- return
- end
- local requireValue = self:tryRequireOne(values[1], 'loadfile')
- if not requireValue then
- requireValue = self:createValue('any')
- requireValue.isRequire = true
- end
- self:setFunctionReturn(func, 1, requireValue)
-end
-
-function mt:callDoFile(func, values)
- if not values[1] then
- values[1] = self:createValue('any')
- end
- local str = values[1].value
- if type(str) ~= 'string' then
- return
- end
- local requireValue = self:tryRequireOne(values[1], 'dofile')
- if not requireValue then
- requireValue = self:createValue('any')
- requireValue.isRequire = true
- end
- self:setFunctionReturn(func, 1, requireValue)
-end
-
-function mt:call(func, values)
- self:inference(func, 'function')
- local lib = func.lib
- if lib then
- if lib.args then
- for i, arg in ipairs(lib.args) do
- if arg.type == '...' then
- self:inference(self:getFunctionArg(func, i), 'any')
- else
- self:inference(self:getFunctionArg(func, i), arg.type or 'any')
- end
- end
- end
- if lib.returns then
- for i, rtn in ipairs(lib.returns) do
- if rtn.type == '...' then
- self:inference(self:getFunctionReturns(func, i), 'any')
- else
- self:inference(self:getFunctionReturns(func, i), rtn.type or 'any')
- end
- end
- end
- if lib.special then
- if lib.special == 'setmetatable' then
- self:callSetMetaTable(func, values)
- elseif lib.special == 'require' then
- self:callRequire(func, values)
- elseif lib.special == 'loadfile' then
- self:callLoadFile(func, values)
- elseif lib.special == 'dofile' then
- self:callDoFile(func, values)
- end
- end
- end
-
- self:setFunctionArg(func, values)
-
- return self:getFunctionReturns(func)
-end
-
-function mt:getCurrentFunction()
- return self.chunk.func
-end
-
-function mt:mergeFunctionReturn(func, index, value)
- if not func.returns[index] then
- func.returns[index] = value
- return
- end
- if value.type == 'nil' then
- return
- end
- if value == 'any' and func.returns[index] ~= 'nil' then
- return
- end
- func.returns[index] = value
-end
-
-function mt:setFunctionReturn(func, index, value)
- func:set('hasReturn', true)
- if not func.returns then
- func.returns = {
- type = 'list',
- }
- end
- if value then
- if value.type == 'list' then
- for i, v in ipairs(value) do
- self:mergeFunctionReturn(func, index+i-1, v)
- end
- else
- self:mergeFunctionReturn(func, index, value)
- end
- else
- self:mergeFunctionReturn(func, index, self:createValue('any'))
- end
-end
-
-function mt:getFunctionReturns(func, i)
- if func.maxReturns and i and func.maxReturns < i then
- return self:createValue('nil')
- end
- if not func.returns then
- func.returns = {
- type = 'list',
- }
- end
- if i then
- if not func.returns[i] then
- for n = #func.returns+1, i do
- func.returns[n] = self:createValue('any')
- end
- end
- return func.returns[i]
- else
- return func.returns
- end
-end
-
-function mt:inference(value, type)
- if type == '...' then
- error('Value type cant be ...')
- end
- if value.type == 'any' and type ~= 'nil' then
- value.type = type
- end
-end
-
-function mt:createValue(tp, source, v)
- local value = createValue(tp, self.uri, source, v)
- local lib = library.object[tp]
- if lib then
- self:getLibChild(value, lib, 'object')
- end
- return value
-end
-
-function mt:getLibChild(value, lib, parentType)
- if lib.child then
- if self.libraryChild[lib] then
- value.child = self.libraryChild[lib]
- return
- end
- self.libraryChild[lib] = {}
- for fName, fLib in pairs(lib.child) do
- local fField = self:createField(value, fName)
- local fValue = self:getLibValue(fLib, parentType)
- self:setValue(fField, fValue)
- end
- if value.child then
- for k, v in pairs(value.child) do
- self.libraryChild[lib][k] = v
- end
- end
- value.child = self.libraryChild[lib]
- end
-end
-
-function mt:getLibValue(lib, parentType, v)
- if self.libraryValue[lib] then
- return self.libraryValue[lib]
- end
- local tp = lib.type
- local value
- if tp == 'table' then
- value = self:createValue('table')
- elseif tp == 'function' then
- value = self:createValue('function')
- if lib.returns then
- local dots
- for i, rtn in ipairs(lib.returns) do
- self:setFunctionReturn(value, i, self:getLibValue(rtn, parentType))
- if rtn.type == '...' then
- dots = true
- end
- end
- if not dots then
- value.maxReturns = #lib.returns
- end
- else
- value.maxReturns = 0
- end
- if lib.args then
- local values = {}
- for i, arg in ipairs(lib.args) do
- values[i] = self:getLibValue(arg, parentType) or self:createValue('any')
- end
- self:setFunctionArg(value, values)
- end
- elseif tp == 'string' then
- value = self:createValue('string', nil, v or lib.value)
- elseif tp == 'boolean' then
- value = self:createValue('boolean', nil, v or lib.value)
- elseif tp == 'number' then
- value = self:createValue('number', nil, v or lib.value)
- elseif tp == 'integer' then
- value = self:createValue('integer', nil, v or lib.value)
- elseif tp == 'nil' then
- value = self:createValue('nil')
- elseif tp == '...' then
- value = self:createValue('any')
- else
- value = self:createValue(tp or 'any')
- end
- self.libraryValue[lib] = value
- value.lib = lib
- value.parentType = parentType
-
- self:getLibChild(value, lib, parentType)
-
- return value
-end
-
-function mt:getName(name, source)
- local loc = self.scope.locals[name]
- if loc then
- return loc
- end
- local ENV = self.scope.locals._ENV
- local global = self:getField(self:getValue(ENV), name, source)
- global.parent = ENV
- return global
-end
-
-function mt:getIndex(obj)
- local tp = obj.type
- if tp == 'name' then
- local var = self:getName(obj[1])
- local value = self:getValue(var)
- self:addInfo(var, 'get', obj)
- return value
- elseif (tp == 'string' or tp == 'number' or tp == 'boolean') then
- return obj[1]
- else
- return self:getExp(obj)
- end
-end
-
--- expect表示遇到 ... 时,期待的返回数量
-function mt:unpackDots(res, expect)
- local dots = self:getDots(1)
- local func = dots.func
- local start = dots.index
- if expect then
- local finish = start + expect - 1
- for i = start, finish do
- res[#res+1] = self:getFunctionArg(func, i)
- end
- else
- if not func.argValues then
- return
- end
- for i = start, #func.argValues do
- res[#res+1] = func.argValues[i]
- end
- end
-end
-
-function mt:unpackList(list, expect)
- local res = {
- type = 'list',
- }
- if not list then
- return res
- end
- if list.type == 'list' or list.type == 'call' then
- for i, exp in ipairs(list) do
- if exp.type == '...' then
- self:unpackDots(res, expect)
- break
- end
- local value = self:getExp(exp)
- if value.type == 'list' then
- if i == #list then
- for _, v in ipairs(value) do
- res[#res+1] = v
- end
- else
- res[#res+1] = value[1]
- end
- else
- res[#res+1] = value
- end
- end
- elseif list.type == '...' then
- self:unpackDots(res, expect)
- else
- local value = self:getExp(list)
- if value.type == 'list' then
- for i, v in ipairs(value) do
- res[i] = v
- end
- else
- res[1] = value
- end
- end
- for _, v in ipairs(res) do
- if v.type == 'list' then
- error('Unpack list')
- end
- end
- return res
-end
-
-function mt:getSimple(simple, mode)
- local value = self:getExp(simple[1])
- local field
- local parentName
- local tp = simple[1].type
- if tp == 'name' then
- field = self:getName(simple[1][1])
- parentName = field.key
- elseif tp == 'string' or tp == 'number' or tp == 'nil' or tp == 'boolean' then
- local v = self:createValue(tp, simple[1], simple[1][1])
- field = self:createDummyVar(simple[1], v)
- parentName = '*' .. tp
- else
- local v = self:createValue('any', simple[1])
- field = self:createDummyVar(simple[1], v)
- parentName = '?'
- end
- local object
- local lastField = field
- for i = 2, #simple do
- local obj = simple[i]
- local tp = obj.type
-
- if tp == 'call' then
- local args = self:unpackList(obj)
- if object then
- table.insert(args, 1, self:getValue(object))
- end
- local func = value
- -- 函数的返回值一定是list
- value = self:call(func, args)
- if i < #simple then
- value = value[1] or self:createValue('any')
- end
- self.results.calls[#self.results.calls+1] = {
- args = obj,
- lastObj = simple[i-1],
- nextObj = simple[i+1],
- func = func,
- }
- parentName = parentName .. '(...)'
- elseif tp == 'index' then
- local child = obj[1]
- local index = self:getIndex(child)
- field = self:getField(value, index, child)
- field.parentValue = value
- value = self:getValue(field)
- if mode == 'value' or i < #simple then
- self:addInfo(field, 'get', obj)
- end
- field.parent = lastField
- lastField = field
- obj.object = object
- obj.parentName = parentName
- if obj[1].type == 'string' then
- parentName = ('%s[%q]'):format(parentName, index)
- elseif obj[1].type == 'number' or obj[1].type == 'boolean' then
- parentName = ('%s[%s]'):format(parentName, index)
- else
- parentName = ('%s[?]'):format(parentName)
- end
- elseif tp == 'name' then
- field = self:getField(value, obj[1], obj)
- field.parentValue = value
- value = self:getValue(field)
- if mode == 'value' or i < #simple then
- self:addInfo(field, 'get', obj)
- end
- field.parent = lastField
- lastField = field
- obj.object = object
- obj.parentName = parentName
- parentName = parentName .. '.' .. field.key
- elseif tp == ':' then
- object = field
- simple[i-1].colon = obj
- elseif tp == '.' then
- simple[i-1].dot = obj
- end
- end
- if mode == 'value' then
- return value, object
- elseif mode == 'field' then
- return field, object
- end
- error('Unknow simple mode: ' .. mode)
-end
-
-function mt:isTrue(v)
- if v.type == 'nil' then
- return false
- end
- if v.type == 'boolean' and not v.value then
- return false
- end
- return true
-end
-
-function mt:getBinary(exp)
- local v1 = self:getExp(exp[1])
- local v2 = self:getExp(exp[2])
- local op = exp.op
- -- TODO 搜索元方法
- if op == 'or' then
- if self:isTrue(v1) then
- return v1
- else
- return v2
- end
- elseif op == 'and' then
- if self:isTrue(v1) then
- return v2
- else
- return v1
- end
- elseif op == '<='
- or op == '>='
- or op == '<'
- or op == '>'
- then
- self:inference(v1, 'number')
- self:inference(v2, 'number')
- return self:createValue('boolean')
- elseif op == '~='
- or op == '=='
- then
- return self:createValue('boolean')
- elseif op == '|'
- or op == '~'
- or op == '&'
- or op == '<<'
- or op == '>>'
- then
- self:inference(v1, 'integer')
- self:inference(v2, 'integer')
- if math.type(v1.value) == 'integer' and math.type(v2.value) == 'integer' then
- if op == '|' then
- return self:createValue('integer', v1.value | v2.value)
- elseif op == '~' then
- return self:createValue('integer', v1.value ~ v2.value)
- elseif op == '&' then
- return self:createValue('integer', v1.value &v2.value)
- elseif op == '<<' then
- return self:createValue('integer', v1.value << v2.value)
- elseif op == '>>' then
- return self:createValue('integer', v1.value >> v2.value)
- end
- end
- return self:createValue('integer')
- elseif op == '..' then
- self:inference(v1, 'string')
- self:inference(v2, 'string')
- if type(v1.value) == 'string' and type(v2.value) == 'string' then
- return self:createValue('string', nil, v1.value .. v2.value)
- end
- return self:createValue('string')
- elseif op == '+'
- or op == '-'
- or op == '*'
- or op == '/'
- or op == '^'
- or op == '%'
- or op == '//'
- then
- self:inference(v1, 'number')
- self:inference(v2, 'number')
- if type(v1.value) == 'number' and type(v2.value) == 'number' then
- if op == '+' then
- return self:createValue('number', nil, v1.value + v2.value)
- elseif op == '-' then
- return self:createValue('number', nil, v1.value - v2.value)
- elseif op == '*' then
- return self:createValue('number', nil, v1.value * v2.value)
- elseif op == '/' then
- if v2.value ~= 0 then
- return self:createValue('number', nil, v1.value / v2.value)
- end
- elseif op == '^' then
- return self:createValue('number', nil, v1.value ^ v2.value)
- elseif op == '%' then
- if v2.value ~= 0 then
- return self:createValue('number', nil, v1.value % v2.value)
- end
- elseif op == '//' then
- if v2.value ~= 0 then
- return self:createValue('number', nil, v1.value // v2.value)
- end
- end
- end
- return self:createValue('number')
- end
- return nil
-end
-
-function mt:getUnary(exp)
- local v1 = self:getExp(exp[1])
- local op = exp.op
- -- TODO 搜索元方法
- if op == 'not' then
- return self:createValue('boolean')
- elseif op == '#' then
- self:inference(v1, 'table')
- if type(v1.value) == 'string' then
- return self:createValue('integer', nil, #v1.value)
- end
- return self:createValue('integer')
- elseif op == '-' then
- self:inference(v1, 'number')
- if type(v1.value) == 'number' then
- return self:createValue('number', nil, -v1.value)
- end
- return self:createValue('number')
- elseif op == '~' then
- self:inference(v1, 'integer')
- if math.type(v1.value) == 'integer' then
- return self:createValue('integer', nil, ~v1.value)
- end
- return self:createValue('integer')
- end
- return nil
-end
-
-function mt:getDots()
- if not self.chunk.dots then
- self:createDots(1)
- end
- return self.chunk.dots
-end
-
-function mt:getExp(exp)
- local tp = exp.type
- if tp == 'nil' then
- return self:createValue('nil', exp)
- elseif tp == 'string' then
- self.results.strings[#self.results.strings+1] = exp
- return self:createValue('string', exp, exp[1])
- elseif tp == 'boolean' then
- return self:createValue('boolean', exp, exp[1])
- elseif tp == 'number' then
- return self:createValue('number', exp, exp[1])
- elseif tp == 'name' then
- local var = self:getName(exp[1], exp)
- local value = self:getValue(var)
- self:addInfo(var, 'get', exp)
- return value
- elseif tp == 'simple' then
- return self:getSimple(exp, 'value')
- elseif tp == 'binary' then
- return self:getBinary(exp)
- elseif tp == 'unary' then
- return self:getUnary(exp)
- elseif tp == 'function' then
- return self:buildFunction(exp)
- elseif tp == 'table' then
- return self:buildTable(exp)
- elseif tp == '...' then
- local value = { type = 'list' }
- self:unpackDots(value)
- return value
- end
- error('Unkown exp type: ' .. tostring(tp))
-end
-
-function mt:doDo(action)
- self:scopePush(action)
- self:doActions(action)
- self:scopePop()
-end
-
-function mt:doReturn(action)
- self:getCurrentFunction():set('hasReturn', true)
- for i, exp in ipairs(action) do
- local value = self:getExp(exp)
- if value.type == 'list' then
- if i == #action then
- if #value == 0 then
- value[1] = self:createValue('any', exp)
- end
- for x, v in ipairs(value) do
- self:addInfo(v, 'return', exp)
- self:setFunctionReturn(self:getCurrentFunction(), i + x - 1, v)
- end
- break
- else
- local v = value[1] or self:createValue('nil', exp)
- self:addInfo(v, 'return', exp)
- self:setFunctionReturn(self:getCurrentFunction(), i, v)
- end
- else
- self:addInfo(value, 'return', exp)
- self:setFunctionReturn(self:getCurrentFunction(), i, value)
- end
- end
-end
-
-function mt:createLabel(action)
- local name = action[1]
- if not self.chunk.labels[name] then
- local label = {
- type = 'label',
- key = name,
- }
- self.chunk.labels[name] = label
- self.results.labels[#self.results.labels+1] = label
- end
- return self.chunk.labels[name]
-end
-
-function mt:doSet(action)
- if not action[2] then
- return
- end
- local n = self:countList(action[1])
- -- 要先计算值
- local values = self:unpackList(action[2], n)
- self:forList(action[1], function (key)
- local value = table.remove(values, 1)
- if key.type == 'name' then
- local var = self:getName(key[1], key)
- self:setValue(var, value, key)
- if self:isGlobal(var) then
- self.results.globals[#self.results.globals+1] = {
- type = 'global',
- global = var,
- }
- end
- elseif key.type == 'simple' then
- local field = self:getSimple(key, 'field')
- self:setValue(field, value, key[#key])
- local var = field
- repeat
- if self:isGlobal(var) then
- self.results.globals[#self.results.globals+1] = {
- type = 'field',
- global = var,
- }
- break
- end
- var = var.parent
- until not var
- end
- end)
-end
-
-function mt:doLocal(action)
- local n = self:countList(action[1])
- local values
- if action[2] then
- values = self:unpackList(action[2], n)
- end
- self:forList(action[1], function (key)
- local value
- if values then
- value = table.remove(values, 1)
- end
- self:createLocal(key[1], key, value)
- end)
-end
-
-function mt:doIf(action)
- for _, block in ipairs(action) do
- if block.filter then
- self:getExp(block.filter)
- end
-
- self:scopePush(block)
- self:doActions(block)
- self:scopePop()
- end
-end
-
-function mt:doLoop(action)
-
- local min = self:unpackList(action.min)[1]
- self:getExp(action.max)
- if action.step then
- self:getExp(action.step)
- end
-
- self:scopePush(action)
- self:createLocal(action.arg[1], action.arg, min)
- self:doActions(action)
- self:scopePop()
-end
-
-function mt:doIn(action)
- local args = self:unpackList(action.exp)
-
- self:scopePush(action)
- local func = table.remove(args, 1) or self:createValue('any')
- local values = self:call(func, args)
- self:forList(action.arg, function (arg)
- local value = table.remove(values, 1)
- self:createLocal(arg[1], arg, value)
- end)
-
- self:doActions(action)
-
- self:scopePop()
-end
-
-function mt:doWhile(action)
-
- self:getExp(action.filter)
-
- self:scopePush(action)
- self:doActions(action)
- self:scopePop()
-end
-
-function mt:doRepeat(action)
- self:scopePush(action)
- self:doActions(action)
- self:getExp(action.filter)
- self:scopePop()
-end
-
-function mt:doFunction(action)
- local name = action.name
- local var, object
- local source
- if name then
- if name.type == 'simple' then
- var, object = self:getSimple(name, 'field')
- source = name[#name]
- else
- var = self:getName(name[1], name)
- source = name
- end
- end
- local func = self:buildFunction(action, object)
- if var then
- self:setValue(var, func, source)
- end
-end
-
-function mt:doLocalFunction(action)
- local name = action.name
- local var, object
- local source
- if name then
- if name.type == 'simple' then
- var, object = self:getSimple(name, 'field')
- source = name[#name]
- else
- var = self:createLocal(name[1], name)
- source = name
- end
- end
- local func = self:buildFunction(action, object)
- if var then
- self:setValue(var, func, source)
- end
-end
-
-function mt:doAction(action)
- if not action then
- -- Skip
- return
- end
- local tp = action.type
- if tp == 'do' then
- self:doDo(action)
- elseif tp == 'break' then
- elseif tp == 'return' then
- self:doReturn(action)
- elseif tp == 'label' then
- local label = self:createLabel(action)
- self:addInfo(label, 'set', action)
- elseif tp == 'goto' then
- local label = self:createLabel(action)
- self:addInfo(label, 'goto', action)
- elseif tp == 'set' then
- self:doSet(action)
- elseif tp == 'local' then
- self:doLocal(action)
- elseif tp == 'simple' then
- -- call
- self:getSimple(action, 'value')
- elseif tp == 'if' then
- self:doIf(action)
- elseif tp == 'loop' then
- self:doLoop(action)
- elseif tp == 'in' then
- self:doIn(action)
- elseif tp == 'while' then
- self:doWhile(action)
- elseif tp == 'repeat' then
- self:doRepeat(action)
- elseif tp == 'function' then
- self:doFunction(action)
- elseif tp == 'localfunction' then
- self:doLocalFunction(action)
- else
- self:getExp(action)
- end
-end
-
-function mt:doActions(actions)
- for _, action in ipairs(actions) do
- self:doAction(action)
- if coroutine.isyieldable() then
- coroutine.yield()
- end
- end
-end
-
-function mt:createEnvironment()
- self.scope.block = { start = 0, finish = math.maxinteger }
- -- 整个文件是一个函数
- self.chunk.func = self:buildFunction()
- self.results.main = self.chunk.func
- -- 隐藏的上值`_ENV`
- local parent = self:createLocal('_ENV')
- parent.hide = true
- local envValue = self:setValue(parent, self:buildTable())
- -- _ENV 有个特殊标记
- envValue.ENV = true
- -- 隐藏的参数`...`
- self:createDots(1)
-
- -- 设置全局变量
- if not GlobalChild then
- for name, lib in pairs(library.global) do
- local field = self:createField(envValue, name)
- local value = self:getLibValue(lib, 'global')
- value = self:setValue(field, value)
- end
- GlobalChild = envValue.child
- end
- envValue.child = readOnly(GlobalChild)
-
- -- 设置 _G 使用 _ENV 的child
- local g = self:getField(envValue, '_G')
- local gValue = self:getValue(g)
- gValue.child = envValue.child
- self.env = envValue
-end
-
-local function compile(ast, lsp, uri)
- local vm = setmetatable({
- scope = env {
- locals = {},
- },
- chunk = env {
- labels = {},
- },
- results = {
- locals = {},
- labels = {},
- funcs = {},
- calls = {},
- sources= {},
- strings= {},
- indexs = {},
- globals= {},
- main = nil,
- },
- libraryValue = {},
- libraryChild = {},
- lsp = lsp,
- uri = uri,
- }, mt)
-
- -- 创建初始环境
- vm:createEnvironment()
-
- -- 执行代码
- vm:doActions(ast)
-
- vm.scope = nil
- vm.chunk = nil
- vm.libraryValue = nil
- vm.libraryChild = nil
-
- return vm
-end
-
-return function (ast, lsp, uri)
- if not ast then
- return nil
- end
- local suc, res = xpcall(compile, log.error, ast, lsp, uri)
- if not suc then
- return nil
- end
- return res
-end
diff --git a/server-beta/test/full/dirty.lua b/server-beta/test/full/dirty.lua
deleted file mode 100644
index 5fe4e998..00000000
--- a/server-beta/test/full/dirty.lua
+++ /dev/null
@@ -1,15 +0,0 @@
-TEST [[
-a.
-]]
-
-TEST [[
-a:
-]]
-
-TEST [[
-end
-]]
-
-TEST [[
-table.02X
-]]
diff --git a/server-beta/test/full/example.lua b/server-beta/test/full/example.lua
deleted file mode 100644
index 5b096655..00000000
--- a/server-beta/test/full/example.lua
+++ /dev/null
@@ -1,43 +0,0 @@
-local util = require 'utility'
-local parser = require 'parser'
-local files = require 'files'
-local diag = require 'core.diagnostics'
-
--- 临时
-local function testIfExit(path)
- local buf = util.loadFile(path:string())
- if buf then
- local vm
-
- local clock = os.clock()
- local max = 100
- local need
- for i = 1, max do
- vm = TEST(buf)
- local passed = os.clock() - clock
- if passed >= 1.0 or i == max then
- need = passed / i
- break
- end
- end
- print(('基准编译测试[%s]单次耗时:%.10f'):format(path:filename():string(), need))
-
- local clock = os.clock()
- local max = 100
- local need
- local lines = parser:lines(buf)
- for i = 1, max do
- files.removeAll()
- files.setText('', buf)
- diag('')
- local passed = os.clock() - clock
- if passed >= 1.0 or i == max then
- need = passed / i
- break
- end
- end
- print(('基准诊断测试[%s]单次耗时:%.10f'):format(path:filename():string(), need))
- end
-end
-testIfExit(ROOT / 'test' / 'example' / 'vm.txt')
-testIfExit(ROOT / 'test' / 'example' / 'largeGlobal.txt')
diff --git a/server-beta/test/full/init.lua b/server-beta/test/full/init.lua
deleted file mode 100644
index f370671e..00000000
--- a/server-beta/test/full/init.lua
+++ /dev/null
@@ -1,13 +0,0 @@
-local parser = require 'parser'
-
-rawset(_G, 'TEST', true)
-
-function TEST(script)
- local ast = parser:compile(script, 'lua', 'Lua 5.3')
- assert(ast)
- return ast
-end
-
-require 'full.normal'
-require 'full.example'
-require 'full.dirty'
diff --git a/server-beta/test/full/normal.lua b/server-beta/test/full/normal.lua
deleted file mode 100644
index a673e74b..00000000
--- a/server-beta/test/full/normal.lua
+++ /dev/null
@@ -1,157 +0,0 @@
-TEST [[
-do
- x = 1
-end
-]]
-
-TEST [[
-return nil, 1, true, 'xx'
-]]
-
-TEST [[
-return a
-]]
-
-TEST [[
-retrun a.b:c(1, 2, ...)[1][name]
-]]
-
-TEST [[
-return 1 + 1
-]]
-
-TEST [[
-return -1
-]]
-
-TEST [[
-return ...
-]]
-
-TEST [[
-return function (a, b, ...)
-end
-]]
-
-TEST [[
-return {
- a = 1,
- b = {
- c = d,
- e = f,
- },
- g,
- h,
- 1,
-}
-]]
-
-TEST [[
-::LABEL::
-goto LABEL
-goto NEXT
-::NEXT::
-]]
-
-TEST [[
-a, b, c = 1, 2, ...
-]]
-
-TEST [[
-local a, b, c = 1, 2, ...
-]]
-
-TEST [[
-a[#a+1] = 1
-]]
-
-TEST [[
-xx(a, b, 2, 3, ...)
-]]
-
-TEST [[
-if a then
-elseif b then
-elseif c then
-else
-end
-]]
-
-TEST [[
-for i = 1, 10, 1 do
-end
-]]
-
-TEST [[
-for a, b, c in pairs(t) do
-end
-]]
-
-TEST [[
-while true do
-end
-]]
-
-TEST [[
-repeat
-until true
-]]
-
-TEST [[
-function xx:yy(a, b, c, ...)
-end
-]]
-
-TEST [[
-local function xx(a, b, c, ...)
-end
-]]
-
-TEST [[
-local v = 1
-local function xx()
- print(v)
-end
-local v = 2
-xx()
-]]
-
-TEST [[
-return {
- 1, 2, 3
-}
-]]
-
-TEST [[
-return function ()
-end
-]]
-
-TEST [[
-t[...] = 1
-]]
-
-TEST [[
-return {
- [...] = ...
-}
-]]
-
-TEST [[
--- 选取单位
----@param center point
----@param radius number
----@param height number
----@return unit[]
-function scene:selectByCylinder(center, radius, height)
-end
-]]
-
-TEST [[
-local x = ,
-]]
-
-TEST [[
----@type any|fun():nil
-local t
-]]
diff --git a/server-beta/test/highlight/init.lua b/server-beta/test/highlight/init.lua
deleted file mode 100644
index 0b916fd1..00000000
--- a/server-beta/test/highlight/init.lua
+++ /dev/null
@@ -1,149 +0,0 @@
-local core = require 'core.highlight'
-local files = require 'files'
-
-local function catch_target(script)
- local list = {}
- local cur = 1
- while true do
- local start, finish = script:find('<[!?].-[!?]>', cur)
- if not start then
- break
- end
- list[#list+1] = {
- start = start + 2,
- finish = finish - 2,
- }
- cur = finish + 1
- end
- return list
-end
-
-local function founded(targets, results)
- if #targets ~= #results then
- return false
- end
- for _, target in ipairs(targets) do
- for _, result in ipairs(results) do
- if target[1] == result[1] and target[2] == result[2] then
- goto NEXT
- end
- end
- do return false end
- ::NEXT::
- end
- return true
-end
-
-function TEST(script)
- local target = catch_target(script)
- for _, enter in ipairs(target) do
- local start, finish = enter.start, enter.finish
- files.removeAll()
- local pos = (start + finish) // 2 + 1
- local new_script = script:gsub('<[!?~]', ' '):gsub('[!?~]>', ' ')
- files.setText('', new_script)
-
- local positions = core('', pos)
- if positions then
- assert(founded(target, positions))
- else
- assert(#target == 0)
- end
- end
-end
-
-TEST [[
-local <!a!> = 1
-]]
-
-TEST [[
-local <!a!> = 1
-<!a!> = 2
-<!a!> = <!a!>
-]]
-
-TEST [[
-t.<!a!> = 1
-a = t.<!a!>
-]]
-
-TEST [[
-t = {
- [<!"a"!>] = 1,
- <!a!> = 1,
-}
-t[<!'a'!>] = 1
-a = t.<!a!>
-]]
-
-TEST [[
-:: <!a!> ::
-goto <!a!>
-]]
-
-TEST [[
-local function f(<!a!>)
- return <!a!>
-end
-]]
-
-TEST [[
-local s = <!'asd/gadasd.fad.zxczg'!>
-]]
-
-TEST [[
-local b = <!true!>
-]]
-
-TEST [[
-local n = <!nil!>
-]]
-
-TEST [[
-local n = <!1.2354!>
-]]
-
-TEST [[
-local <!function!> f () <!end!>
-]]
-
-TEST [[
-<!function!> f () <!end!>
-]]
-
-TEST [[
-return <!function!> () <!end!>
-]]
-
-TEST [[
-<!if!> true <!then!>
-<!elseif!> true <!then!>
-<!elseif!> true <!then!>
-<!else!>
-<!end!>
-]]
-
-TEST [[
-<!for!> _ <!in!> _ <!do!>
-<!end!>
-]]
-
-TEST [[
-<!for!> i = 1, 10 <!do!>
-<!end!>
-]]
-
-TEST [[
-<!while!> true <!do!>
-<!end!>
-]]
-
-TEST [[
-<!repeat!>
-<!until!> true
-]]
-
-TEST [[
-<!do!>
-<!end!>
-]]
diff --git a/server-beta/test/hover/init.lua b/server-beta/test/hover/init.lua
deleted file mode 100644
index 6a1c275b..00000000
--- a/server-beta/test/hover/init.lua
+++ /dev/null
@@ -1,935 +0,0 @@
-local core = require 'core.hover'
-local files = require 'files'
-
-rawset(_G, 'TEST', true)
-
-function TEST(script)
- return function (expect)
- files.removeAll()
- local start = script:find('<?', 1, true)
- local finish = script:find('?>', 1, true)
- local pos = (start + finish) // 2 + 1
- local new_script = script:gsub('<[!?]', ' '):gsub('[!?]>', ' ')
- files.setText('', new_script)
- local hover = core('', pos)
- assert(hover)
- expect = expect:gsub('^[\r\n]*(.-)[\r\n]*$', '%1'):gsub('\r\n', '\n')
- local label = hover.label:gsub('^[\r\n]*(.-)[\r\n]*$', '%1'):gsub('\r\n', '\n')
- assert(expect == label)
- end
-end
-
-TEST [[
-local function <?x?>(a, b)
-end
-]]
-"function x(a: any, b: any)"
-
-TEST [[
-local function x(a, b)
-end
-<?x?>()
-]]
-"function x(a: any, b: any)"
-
-TEST [[
-local mt = {}
-mt.__index = mt
-
-function mt:init(a, b, c)
- return
-end
-
-local obj = setmetatable({}, mt)
-
-obj:<?init?>(1, '测试')
-]]
-[[
-function mt:init(a: any, b: any, c: any)
-]]
-
-TEST [[
-local mt = {}
-mt.__index = mt
-mt.type = 'Class'
-
-function mt:init(a, b, c)
- return
-end
-
-local obj = setmetatable({}, mt)
-
-obj:<?init?>(1, '测试')
-]]
-[[
-function Class:init(a: any, b: any, c: any)
-]]
-
-TEST [[
-local mt = {}
-mt.__index = mt
-mt.__name = 'Class'
-
-function mt:init(a, b, c)
- return
-end
-
-local obj = setmetatable({}, mt)
-
-obj:<?init?>(1, '测试')
-]]
-[[
-function Class:init(a: any, b: any, c: any)
-]]
-
-TEST [[
-local mt = {}
-mt.__index = mt
-
-function mt:init(a, b, c)
- return {}
-end
-
-local obj = setmetatable({}, mt)
-
-obj:<?init?>(1, '测试')
-]]
-[[
-function mt:init(a: any, b: any, c: any)
- -> table
-]]
-
-TEST [[
-local mt = {}
-mt.__index = mt
-
-function mt:init(a, b, c)
- return {}
-end
-
-local obj = setmetatable({}, mt)
-
-obj:init(1, '测试')
-obj.<?init?>(obj, 1, '测试')
-]]
-[[
-function mt:init(a: any, b: any, c: any)
- -> table
-]]
-
-TEST [[
-function obj.xxx()
-end
-
-obj.<?xxx?>()
-]]
-"function obj.xxx()"
-
--- 不不同调用方式推断定义
---TEST [[
---obj.<?xxx?>()
---]]
---[[function obj.xxx()
--- -> any
---]]
-
-TEST [[
-local <?x?> = 1
-]]
-"local x: integer = 1"
-
-TEST [[
-<?x?> = 1
-]]
-"global x: integer = 1"
-
-TEST [[
-local t = {}
-t.<?x?> = 1
-]]
-"field t.x: integer = 1"
-
-TEST [[
-t = {}
-t.<?x?> = 1
-]]
-"global t.x: integer = 1"
-
-TEST [[
-local <?obj?> = {}
-]]
-"local obj: {}"
-
-TEST [[
-local mt = {}
-mt.__name = 'class'
-
-local <?obj?> = setmetatable({}, mt)
-]]
-"local obj: class {}"
-
-TEST [[
-local mt = {}
-mt.name = 'class'
-mt.__index = mt
-
-local <?obj?> = setmetatable({}, mt)
-]]
-[[
-local obj: class {
- __index: table,
- name: string = "class",
-}
-]]
-
-TEST [[
-local mt = {}
-mt.TYPE = 'class'
-mt.__index = mt
-
-local <?obj?> = setmetatable({}, mt)
-]]
-[[
-local obj: *class {
- TYPE: string = "class",
- __index: table,
-}
-]]
-
-TEST [[
-local mt = {}
-mt.Class = 'class'
-mt.__index = mt
-
-local <?obj?> = setmetatable({}, mt)
-]]
-[[
-local obj: *class {
- Class: string = "class",
- __index: table,
-}
-]]
-
-TEST[[
-local fs = require 'bee.filesystem'
-local <?root?> = fs.current_path()
-]]
-"local root: *bee::filesystem"
-
-TEST[[
-('xx'):<?yy?>()
-]]
-[[function *string:yy()
- -> any]]
-
-TEST [[
-local <?v?> = collectgarbage()
-]]
-"local v: any"
-
-TEST [[
-local type
-w2l:get_default()[<?type?>]
-]]
-"local type: any"
-
-TEST [[
-<?load?>()
-]]
-[=[
-function load(chunk: string/function [, chunkname: string [, mode: string [, env: table]]])
- -> function, error_message: string
-]=]
-
-TEST [[
-string.<?lower?>()
-]]
-[[
-function string.lower(string)
- -> string
-]]
-
-TEST [[
-local function x(a, ...)
-end
-
-<?x?>(1, 2, 3, 4, 5, 6, 7)
-]]
-[[
-function x(a: number, ...)
-]]
-
-TEST [[
-local function x()
- return y()
-end
-
-<?x?>()
-]]
-[[
-function x()
- -> any
-]]
-
-TEST [[
-local mt = {}
-mt.__index = mt
-
-function mt:add(a, b)
-end
-
-local function init()
- return setmetatable({}, mt)
-end
-
-local t = init()
-t:<?add?>()
-]]
-[[
-function mt:add(a: any, b: any)
-]]
-
-TEST [[
-local <?t?> = - 1000
-]]
-[[local t: number = -1000]]
-
-TEST [[
-for <?c?> in io.lines() do
-end
-]]
-[[local c: string]]
-
-TEST [[
-local function f()
- return ...
-end
-local <?n?> = f()
-]]
-[[local n: any]]
-
-TEST [[
-local <?n?> = table.unpack(t)
-]]
-[[local n: any]]
-
-TEST [[
-local <?n?>
-table.pack(n)
-]]
-[[
-local n: any
-]]
-
-TEST [[
-(<?'xxx'?>):sub()
-]]
-(nil)
-
-TEST [[
-local <?t?> = {
- a = 1,
- b = 2,
- c = 3,
-}
-]]
-[[
-local t: {
- a: number = 1,
- b: number = 2,
- c: number = 3,
-}
-]]
-
-TEST [[
-local <?t?> = {
- a = 1,
- [1] = 2,
- [true] = 3,
- [5.5] = 4,
- [{}] = 5,
- [function () end] = 6,
- ["b"] = 7,
- ["012"] = 8,
-}
-]]
-[[
-local t: {
- ["012"]: number = 8,
- [*function]: number = 6,
- [*table]: number = 5,
- [001]: number = 2,
- [5.5]: number = 4,
- [true]: number = 3,
- a: number = 1,
- b: number = 7,
-}
-]]
-
-TEST [[
-local <?t?> = {}
-t[#t+1] = 1
-t[#t+1] = 1
-
-local any = collectgarbage()
-t[any] = any
-]]
-[[
-local t: {
- [*number]: number = 1,
-}
-]]
-
-TEST[[
-local x = 1
-local y = x
-print(<?y?>)
-]]
-[[
-local y: number = 1
-]]
-
-TEST[[
-local mt = {}
-mt.a = 1
-mt.b = 2
-mt.c = 3
-local <?obj?> = setmetatable({}, {__index = mt})
-]]
-[[
-local obj: {
- a: number = 1,
- b: number = 2,
- c: number = 3,
-}
-]]
-
-TEST[[
-local mt = {}
-mt.__index = {}
-
-function mt:test(a, b)
- self:<?test?>()
-end
-]]
-[[
-function mt:test(a: any, b: any)
-]]
-
-TEST[[
-local mt = {}
-mt.__index = mt
-mt.__name = 'obj'
-
-function mt:remove()
-end
-
-local <?self?> = setmetatable({
- id = 1,
-}, mt)
-]]
-[[
-local self: *obj {
- __index: table,
- __name: string = "obj",
- id: number = 1,
- remove: function,
-}
-]]
-
-TEST[[
-local <?sssss?> = require 'utf8'
-]]
-[[
-local sssss<utf8>: {
- char: function,
- charpattern: string,
- codepoint: function,
- codes: function,
- len: function,
- offset: function,
-}
-]]
-
-TEST[[
-function a(v)
- print(<?v?>)
-end
-a(1)
-]]
-[[
-local v: number = 1
-]]
-
-TEST[[
-function a(v)
- print(<?v?>)
-end
-pcall(a, 1)
-]]
-[[
-local v: number = 1
-]]
-
-TEST[[
-function a(v)
- print(<?v?>)
-end
-xpcall(a, log.error, 1)
-]]
-[[
-local v: number = 1
-]]
-
-TEST[[
-function a(v)
- return 'a'
-end
-local _, <?r?> = pcall(a, 1)
-]]
-[[
-local r: string = "a"
-]]
-
-TEST[[
-local <?n?> = rawlen()
-]]
-[[
-local n: integer
-]]
-
-TEST[[
-<?next?>()
-]]
-[[
-function next(table: table [, index: any])
- -> key: any, value: any
-]]
-
-TEST[[
-local <?n?> = pairs()
-]]
-[[
-function n<next>(table: table [, index: any])
- -> key: any, value: any
-]]
-
-TEST[[
-local <?x?> = '\a'
-]]
-[[local x: string = "\007"]]
-
-TEST[[
----@class Class
-local <?x?> = class()
-]]
-[[
-local x: *Class {}
-]]
-
-TEST[[
----@class Class
-<?x?> = class()
-]]
-[[
-global x: *Class {}
-]]
-
-TEST[[
-local t = {
- ---@class Class
- <?x?> = class()
-}
-]]
-[[
-field x: *Class {}
-]]
-
-TEST[[
----@type Class
-local <?x?> = class()
-]]
-[[
-local x: *Class {}
-]]
-
-TEST[[
----@type Class
-<?x?> = class()
-]]
-[[
-global x: *Class {}
-]]
-
-TEST[[
-local t = {
- ---@type Class
- <?x?> = class()
-}
-]]
-[[
-field x: *Class {}
-]]
-
-TEST[[
----@type A|B|C
-local <?x?> = class()
-]]
-[[
-local x: *A|B|C {}
-]]
-
-TEST[[
----@class Class
-local <?x?> = {
- b = 1
-}
-]]
-[[
-local x: *Class {
- b: number = 1,
-}
-]]
-
-TEST [[
----@class Class
-local mt = {}
-
----@param t Class
-function f(<?t?>)
-end
-]]
-[[
-local t: *Class {}
-]]
-
-TEST [[
----@class Class
-local mt = {}
-
----@param t Class
-function f(t)
- print(<?t?>)
-end
-]]
-[[
-local t: *Class {}
-]]
-
-TEST [[
----@class Class
-local mt = {}
-
----@param t Class
-function f(t)
-end
-
-f(<?s?>)
-]]
-[[
-global s: *Class {}
-]]
-
-TEST [[
----@class Class
-
----@param k Class
-for <?k?> in pairs(t) do
-end
-]]
-[[
-local k<key>: *Class {}
-]]
-
-TEST [[
----@class Class
-
----@param v Class
-for k, <?v?> in pairs(t) do
-end
-]]
-[[
-local v<value>: *Class {}
-]]
-
-TEST [[
----@return A|B
----@return C
-local function <?f?>()
-end
-]]
-[[
-function f()
- -> A|B, C
-]]
-
-TEST [[
----@generic T
----@param x T
----@return T
-local function f(x)
-end
-
-local <?r?> = f(1)
-]]
-[[
-local r: number
-]]
-
-TEST [[
----@param x number
----@param y boolean
-local function <?f?>(x, y)
-end
-]]
-[[
-function f(x: number, y: boolean)
-]]
-
-TEST [[
----@vararg Class
-local function f(...)
- local _, <?x?> = ...
-end
-f(1, 2, 3)
-]]
-[[
-local x: *Class = 2
-]]
-
-TEST [[
----@vararg Class
-local function f(...)
- local _, <?x?> = ...
-end
-]]
-[[
-local x: *Class {}
-]]
-
-TEST [[
----@type string[]
-local <?x?>
-]]
-[[
-local x: {
- [*integer]: string,
-}
-]]
-
-TEST [[
----@type (string|boolean)[]
-local <?x?>
-]]
-[[
-local x: {
- [*integer]: string|boolean,
-}
-]]
-
-TEST [[
----@type string[]
-local t
-local <?x?> = t[1]
-]]
-[[
-local x: string
-]]
-
-TEST [[
----@type string[]
-local t
-for _, <?x?> in ipairs(t) do
-end
-]]
-[[
-local x: string
-]]
-
-TEST [[
----@type string[]
-local t
-for _, <?x?> in pairs(t) do
-end
-]]
-[[
-local x: string
-]]
-
-TEST [[
----@type string[]
-local t
-for <?k?>, v in pairs(t) do
-end
-]]
-[[
-local k: integer
-]]
-
-TEST [[
----@type table<ClassA, ClassB>
-local <?x?>
-]]
-[[
-local x: {
- [*ClassA]: ClassB,
-}
-]]
-
-TEST [[
----@type table<ClassA, ClassB>
-local t
-for _, <?x?> in pairs(t) do
-end
-]]
-[[
-local x: *ClassB
-]]
-
-TEST [[
----@type table<ClassA, ClassB>
-local t
-for <?k?>, v in pairs(t) do
-end
-]]
-[[
-local k: *ClassA
-]]
-
-TEST [[
----@type fun(x: number, y: number):boolean
-local <?f?>
-]]
-[[
-function f(x: number, y: number)
- -> boolean
-]]
-
-TEST [[
----@type fun(x: number, y: number):boolean
-local f
-f(<?a?>)
-]]
-[[
-global a: number
-]]
-
-TEST [[
----@type fun(x: number, y: number):boolean
-local f
-local <?r?> = f()
-]]
-[[
-local r: boolean
-]]
-
-TEST [[
----@param f fun():void
-function t(<?f?>) end
-]]
-[[
-function ()
- -> void
-]]
-
-TEST [[
----@type fun(a:any, b:any)
-local f
-local t = {f = f}
-t:<?f?>()
-]]
-[[
-function f(b: any)
- -> any
-]]
-
-TEST [[
----@param names string[]
-local function f(<?names?>)
-end
-]]
-[[
-local names: {
- [*integer]: string,
-}
-]]
-
-TEST [[
----@return any
-function <?f?>()
- ---@type integer
- local a
- return a
-end
-]]
-[[
-function f()
- -> any
-]]
-
-TEST [[
----@return any
-function f()
- ---@type integer
- local a
- return a
-end
-
-local <?x?> = f()
-]]
-[[
-local x: any
-]]
-
-TEST [[
-local <?x?> <close> <const> = 1
-]]
-[[
-local x <close> <const>: number = 1
-]]
-
-TEST [[
----@param x number {optional = 'after'}
----@param y boolean {optional = 'self'}
----@param z string
-function <?f?>(x, y, z) end
-]]
-[=[
-function f([x: number [, y: boolean], z: string])
-]=]
-
-TEST [[
----@return string {name = 'key'}
----@return string {name = 'value'}
-function <?f?>() end
-]]
-[=[
-function f()
- -> key: string, value: string
-]=]
-
-TEST [[
----@return {name = 'x', optional = 'after'}
----@return string {name = 'y', optional = 'self'}
----@return string {name = 'z'}
-function <?f?>() end
-]]
-[=[
-function f()
- -> [x: any [, y: string], z: string]
-]=]
-
-TEST [[
----@return {name = 'x', optional = 'after'}
----@return string {name = 'y', optional = 'self'}
----@return string {name = 'z'}
-function f()
- return function (a, b)
- end
-end
-
-<?f2?> = f()
-]]
-[=[
-function f2(a: any, b: any)
-]=]
diff --git a/server-beta/test/other/init.lua b/server-beta/test/other/init.lua
deleted file mode 100644
index 069a2454..00000000
--- a/server-beta/test/other/init.lua
+++ /dev/null
@@ -1,11 +0,0 @@
-local fs = require 'bee.filesystem'
-local platform = require 'bee.platform'
-local path = fs.path '/a/b/c/d/e/../../../..'
-local absolute = fs.absolute(path)
-if platform.OS == 'Windows' then
- assert(absolute:string():sub(-2) == '/a', absolute:string())
-elseif platform.OS == 'Linux' then
- assert(absolute:string():sub(-3) == '/a/', absolute:string())
-elseif platform.OS == 'macOS' then
- -- 不支持
-end
diff --git a/server-beta/test/references/init.lua b/server-beta/test/references/init.lua
deleted file mode 100644
index 951ff516..00000000
--- a/server-beta/test/references/init.lua
+++ /dev/null
@@ -1,142 +0,0 @@
-local core = require 'core.reference'
-local files = require 'files'
-
-local function catch_target(script)
- local list = {}
- local cur = 1
- while true do
- local start, finish = script:find('<[!?].-[!?]>', cur)
- if not start then
- break
- end
- list[#list+1] = { start + 2, finish - 2 }
- cur = finish + 1
- end
- return list
-end
-
-local function founded(targets, results)
- if #targets ~= #results then
- return false
- end
- for _, target in ipairs(targets) do
- for _, result in ipairs(results) do
- if target[1] == result[1] and target[2] == result[2] then
- goto NEXT
- end
- end
- do return false end
- ::NEXT::
- end
- return true
-end
-
-function TEST(script)
- files.removeAll()
- local target = catch_target(script)
- local start = script:find('<[?~]')
- local finish = script:find('[?~]>')
- local pos = (start + finish) // 2 + 1
- local new_script = script:gsub('<[!?~]', ' '):gsub('[!?~]>', ' ')
- files.setText('', new_script)
-
- local results = core('', pos)
- if results then
- local positions = {}
- for i, result in ipairs(results) do
- positions[i] = { result.target.start, result.target.finish }
- end
- assert(founded(target, positions))
- else
- assert(#target == 0)
- end
-end
-
-TEST [[
-local <?a?> = 1
-<!a!> = <!a!>
-]]
-
-TEST [[
-t.<?a?> = 1
-t.<!a!> = t.<!a!>
-]]
-
-TEST [[
-:: <!LABEL!> ::
-goto <?LABEL?>
-if true then
- goto <!LABEL!>
-end
-]]
-
-TEST [[
-:: <?LABEL?> ::
-goto <!LABEL!>
-if true then
- goto <!LABEL!>
-end
-]]
-
-TEST [[
-local a = 1
-local <?a?> = 1
-<!a!> = <!a!>
-]]
-
-TEST [[
-local t = {
- <?a?> = 1
-}
-print(t.<!a!>)
-]]
-
-TEST [[
-local t = {
- [<?'a'?>] = 1
-}
-print(t.<!a!>)
-]]
-
-TEST [[
-local <!mt!> = {}
-function <!mt!>:a()
- <?self?>:remove()
-end
-]]
-
-TEST [[
-local function f()
- return <~<!function~> ()
- end!>
-end
-
-local <!f2!> = f()
-]]
-
-TEST [[
-local function f()
- return nil, <~<!function~> ()
- end!>
-end
-
-local _, <!f2!> = f()
-]]
-
-TEST [[
-table.<!dump!>()
-function table.<?dump?>()
-end
-]]
-
---TEST [[
------@class <!Class!>
------@type <?Class?>
------@type <!Class!>
---]]
---
---TEST [[
------@class <?Class?>
------@type <!Class!>
------@type <!Class!>
---]]
diff --git a/server-beta/test/rename/init.lua b/server-beta/test/rename/init.lua
deleted file mode 100644
index a1595d9a..00000000
--- a/server-beta/test/rename/init.lua
+++ /dev/null
@@ -1,165 +0,0 @@
-local core = require 'core.rename'
-local files = require 'files'
-
-local function replace(text, positions)
- local buf = {}
- table.sort(positions, function (a, b)
- return a.start < b.start
- end)
- local lastPos = 1
- for _, info in ipairs(positions) do
- buf[#buf+1] = text:sub(lastPos, info.start - 1)
- buf[#buf+1] = info.text
- lastPos = info.finish + 1
- end
- buf[#buf+1] = text:sub(lastPos)
- return table.concat(buf)
-end
-
-function TEST(oldName, newName)
- return function (oldScript)
- return function (newScript)
- files.removeAll()
- files.setText('', oldScript)
- local pos = oldScript:find('[^%w_]'..oldName..'[^%w_]')
- assert(pos)
-
- local positions = core.rename('', pos+1, newName)
- local script = oldScript
- if positions then
- script = replace(script, positions)
- end
- assert(script == newScript)
- end
- end
-end
-
-TEST ('a', 'b') [[
-local a = 1
-]] [[
-local b = 1
-]]
-
-TEST ('a', 'b') [[
-local a = 1
-a = 2
-a = a
-]] [[
-local b = 1
-b = 2
-b = b
-]]
-
-TEST ('a', 'b') [[
-t.a = 1
-a = t.a
-a = t['a']
-a = t["a"]
-a = t[ [=[a]=] ]
-]] [[
-t.b = 1
-a = t.b
-a = t['b']
-a = t["b"]
-a = t[ [=[b]=] ]
-]]
-
-TEST ('a', 'b') [[
-:: a ::
-goto a
-]] [[
-:: b ::
-goto b
-]]
-
-TEST ('a', 'b') [[
-local function f(a)
- return a
-end
-]] [[
-local function f(b)
- return b
-end
-]]
-
-TEST ('a', '!!!') [[
-t = {
- a = 0
-}
-t.a = 1
-a = t.a
-]] [[
-t = {
- ["!!!"] = 0
-}
-t["!!!"] = 1
-a = t["!!!"]
-]]
-
-TEST ('a', '!!!') [[
-t = {
- ['a'] = 0
-}
-t.a = 1
-a = t.a
-]] [[
-t = {
- ['!!!'] = 0
-}
-t["!!!"] = 1
-a = t["!!!"]
-]]
-
-TEST ('a', '"') [[
-print(t[ "a" ])
-]] [[
-print(t[ "\"" ])
-]]
-
-TEST ('a', '!!!') [[
-function mt:a()
-end
-mt:a()
-]] [[
-mt["!!!"] = function (self)
-end
-mt:!!!()
-]]
-
-TEST ('a', '!!!') [[
-function mt:a(x, y)
-end
-mt:a()
-]] [[
-mt["!!!"] = function (self, x, y)
-end
-mt:!!!()
-]]
-
-TEST ('a', '!!!') [[
-a = a
-]] [[
-_ENV["!!!"] = _ENV["!!!"]
-]]
-
-TEST ('a', '!!!') [[
-function a() end
-]] [[
-_ENV["!!!"] = function () end
-]]
-
-TEST ('a', 'a.b') [[
-function a() end
-a()
-]] [[
-function a.b() end
-a.b()
-]]
-
-TEST ('a', 'a:b') [[
-function a() end
-a()
-]] [[
-function a:b() end
-a:b()
-]]
diff --git a/server-beta/test/signature/init.lua b/server-beta/test/signature/init.lua
deleted file mode 100644
index a2a647e7..00000000
--- a/server-beta/test/signature/init.lua
+++ /dev/null
@@ -1,137 +0,0 @@
-local parser = require 'parser'
-local core = require 'core'
-local buildVM = require 'vm'
-
-rawset(_G, 'TEST', true)
-
-function TEST(script)
- return function (expect)
- local pos = script:find('$', 1, true)
- local new_script = script:gsub('%$', '')
- local ast = parser:parse(new_script, 'lua', 'Lua 5.3')
- local vm = buildVM(ast)
- assert(vm)
- local hovers = core.signature(vm, pos)
- if hovers then
- assert(expect)
- local hover = hovers[#hovers]
-
- local label = hover.label:gsub('^[\r\n]*(.-)[\r\n]*$', '%1'):gsub('\r\n', '\n')
- expect.label = expect.label:gsub('^[\r\n]*(.-)[\r\n]*$', '%1'):gsub('\r\n', '\n')
- local arg = hover.argLabel
-
- assert(expect.label == label)
- assert(expect.arg[1] == arg[1])
- assert(expect.arg[2] == arg[2])
- else
- assert(expect == nil)
- end
- end
-end
-
-TEST [[
-local function x(a, b)
-end
-
-x($
-]]
-{
- label = "function x(a: any, b: any)",
- arg = {12, 17},
-}
-
-TEST [[
-local function x(a, b)
-end
-
-x($)
-]]
-{
- label = "function x(a: any, b: any)",
- arg = {12, 17},
-}
-
-TEST [[
-local function x(a, b)
-end
-
-x(xxx$)
-]]
-{
- label = "function x(a: any, b: any)",
- arg = {12, 17},
-}
-
-TEST [[
-local function x(a, b)
-end
-
-x(xxx, $)
-]]
-{
- label = "function x(a: any, b: any)",
- arg = {20, 25},
-}
-
-TEST [[
-function mt:f(a)
-end
-
-mt:f($
-]]
-{
- label = 'function mt:f(a: any)',
- arg = {15, 20},
-}
-
-TEST [[
-(''):sub($
-]]
-{
- label = [[
-function *string:sub(i: integer [, j: integer(-1)])
- -> string
-]],
- arg = {22, 31},
-}
-
-TEST [[
-(''):sub(1)$
-]]
-(nil)
-
-TEST [[
-local function f(a, b, c)
-end
-
-f(1, 'string$')
-]]
-(nil)
-
-TEST [[
-pcall(function () $ end)
-]]
-(nil)
-
-TEST [[
-table.unpack {$}
-]]
-(nil)
-
-TEST [[
----@type fun(x: number, y: number):boolean
-local zzzz
-zzzz($)
-]]
-{
- label = [[
-function zzzz(x: number, y: number)
- -> boolean
-]],
- arg = {15, 23},
-}
-
-TEST [[
-('abc'):format(f($))
-]]
-(nil)
diff --git a/server-beta/test/type_inference/init.lua b/server-beta/test/type_inference/init.lua
deleted file mode 100644
index f509ca3f..00000000
--- a/server-beta/test/type_inference/init.lua
+++ /dev/null
@@ -1,229 +0,0 @@
-local files = require 'files'
-local config = require 'config'
-local vm = require 'vm'
-local guide = require 'parser.guide'
-
-rawset(_G, 'TEST', true)
-
-local function getSource(pos)
- local ast = files.getAst('')
- return guide.eachSourceContain(ast.ast, pos, function (source)
- if source.type == 'local'
- or source.type == 'getlocal'
- or source.type == 'setlocal'
- or source.type == 'setglobal'
- or source.type == 'getglobal'
- or source.type == 'field'
- or source.type == 'method' then
- return source
- end
- end)
-end
-
-function TEST(wanted)
- return function (script)
- files.removeAll()
- local start = script:find('<?', 1, true)
- local finish = script:find('?>', 1, true)
- local pos = (start + finish) // 2 + 1
- local newScript = script:gsub('<[!?]', ' '):gsub('[!?]>', ' ')
- files.setText('', newScript)
- local source = getSource(pos)
- assert(source)
- local result = vm.getType(source) or 'any'
- assert(wanted == result)
- end
-end
-
-config.config.runtime.version = 'Lua 5.4'
-
-TEST 'string' [[
-local <?var?> = '111'
-]]
-
-TEST 'boolean' [[
-local <?var?> = true
-]]
-
-TEST 'integer' [[
-local <?var?> = 1
-]]
-
-TEST 'number' [[
-local <?var?> = 1.0
-]]
-
-TEST 'string' [[
-local var = '111'
-t.<?x?> = var
-]]
-
-TEST 'any' [[
-local <?var?>
-var = '111'
-]]
-
-TEST 'string' [[
-local var
-var = '111'
-print(<?var?>)
-]]
-
-TEST 'function' [[
-function <?xx?>()
-end
-]]
-
-TEST 'function' [[
-local function <?xx?>()
-end
-]]
-
-TEST 'function' [[
-local xx
-<?xx?> = function ()
-end
-]]
-
-TEST 'table' [[
-local <?t?> = {}
-]]
-
-TEST 'function' [[
-<?x?>()
-]]
-
-TEST 'table' [[
-<?t?>.x = 1
-]]
-
-TEST 'boolean' [[
-<?x?> = not y
-]]
-
-TEST 'integer' [[
-<?x?> = #y
-]]
-
-TEST 'number' [[
-<?x?> = - y
-]]
-
-TEST 'integer' [[
-<?x?> = ~ y
-]]
-
-TEST 'integer' [[
-local a = true
-local b = 1
-<?x?> = a and b
-]]
-
-TEST 'integer' [[
-local a = false
-local b = 1
-<?x?> = a or b
-]]
-
-TEST 'boolean' [[
-<?x?> = a == b
-]]
-
-TEST 'integer' [[
-<?x?> = a << b
-]]
-
-TEST 'string' [[
-<?x?> = a .. b
-]]
-
-TEST 'number' [[
-<?x?> = a + b
-]]
-
-TEST 'table' [[
-<?table?>()
-]]
-
-TEST 'string' [[
-<?x?> = _VERSION
-]]
-
-TEST 'function' [[
-<?x?> = ('x').sub
-]]
-
-TEST 'function' [[
-<?x?> = _VERSION.sub
-]]
-
-TEST 'table' [[
-<?x?> = setmetatable({})
-]]
-
-TEST 'integer' [[
-local function x()
- return 1
-end
-<?y?> = x()
-]]
-
-TEST 'string|table' [[
-local y = #<?x?>
-]]
-
-TEST 'integer' [[
-local y = <?x?> << 0
-]]
-
-TEST 'integer' [[
-local function f(<?a?>, b)
- return a << b
-end
-]]
-
--- 不根据调用者的输入参数来推测
---TEST 'number' [[
---local function x(a)
--- return <?a?>
---end
---x(1)
---]]
-
-TEST 'table' [[
-setmetatable(<?b?>)
-]]
-
--- 不根据对方函数内的使用情况来推测
---TEST 'number' [[
---local function x(a)
--- _ = a + 1
---end
---local b
---x(<?b?>)
---]]
-
---TEST 'number' [[
---local function x(a, ...)
--- local _, <?b?>, _ = ...
---end
---x(nil, 'xx', 1, true)
---]]
-
--- 引用不跨越参数
---TEST 'number' [[
---local function x(a, ...)
--- return true, 'ss', ...
---end
---local _, _, _, <?b?>, _ = x(nil, true, 1, 'yy')
---]]
-
--- 暂不支持这些特殊情况,之后用其他语法定义
---TEST 'integer' [[
---for <?i?> in ipairs(t) do
---end
---]]
---
---TEST 'any' [[
---local <?x?> = next()
---]]