summaryrefslogtreecommitdiff
path: root/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib')
-rwxr-xr-xvendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.0/ffi_c.bundlebin0 -> 332473 bytes
-rwxr-xr-xvendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.1/ffi_c.bundlebin0 -> 266153 bytes
-rwxr-xr-xvendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.2/ffi_c.bundlebin0 -> 266153 bytes
-rwxr-xr-xvendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.3/ffi_c.bundlebin0 -> 265625 bytes
-rwxr-xr-xvendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.4/ffi_c.bundlebin0 -> 265657 bytes
-rwxr-xr-xvendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/4.0/ffi_c.bundlebin0 -> 282361 bytes
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi.rb27
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/abstract_memory.rb44
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/autopointer.rb186
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/buffer.rb4
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/callback.rb4
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/compat.rb54
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/data_converter.rb67
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/dynamic_library.rb118
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/enum.rb302
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/errno.rb43
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/ffi.rb109
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/function.rb94
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/io.rb62
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/library.rb592
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/library_path.rb109
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/managedstruct.rb84
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/memorypointer.rb1
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform.rb187
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-darwin/types.conf130
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-freebsd/types.conf128
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-freebsd12/types.conf181
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-linux/types.conf175
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-openbsd/types.conf134
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-windows/types.conf52
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/arm-freebsd/types.conf152
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/arm-freebsd12/types.conf152
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/arm-linux/types.conf132
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/hppa1.1-linux/types.conf178
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/hppa2.0-linux/types.conf178
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-cygwin/types.conf3
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-darwin/types.conf100
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-freebsd/types.conf152
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-freebsd12/types.conf152
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-gnu/types.conf107
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-linux/types.conf103
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-netbsd/types.conf126
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-openbsd/types.conf128
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-solaris/types.conf122
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-windows/types.conf52
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/ia64-linux/types.conf104
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/loongarch64-linux/types.conf141
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mips-linux/types.conf102
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mips64-linux/types.conf104
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mips64el-linux/types.conf104
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsel-linux/types.conf102
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsisa32r6-linux/types.conf102
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsisa32r6el-linux/types.conf102
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsisa64r6-linux/types.conf104
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsisa64r6el-linux/types.conf104
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc-aix/types.conf180
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc-darwin/types.conf100
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc-linux/types.conf130
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc-openbsd/types.conf156
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc64-linux/types.conf104
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc64le-linux/types.conf100
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/riscv64-linux/types.conf104
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/s390-linux/types.conf102
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/s390x-linux/types.conf102
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparc-linux/types.conf102
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparc-solaris/types.conf128
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparcv9-linux/types.conf102
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparcv9-openbsd/types.conf156
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparcv9-solaris/types.conf128
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sw_64-linux/types.conf141
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-cygwin/types.conf3
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-darwin/types.conf130
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-dragonflybsd/types.conf130
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-freebsd/types.conf128
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-freebsd12/types.conf158
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-haiku/types.conf117
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-linux/types.conf132
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-msys/types.conf119
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-netbsd/types.conf128
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-openbsd/types.conf134
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-solaris/types.conf122
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-windows/types.conf52
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/pointer.rb167
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/struct.rb317
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/struct_by_reference.rb72
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/struct_layout.rb96
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/struct_layout_builder.rb227
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/tools/const_generator.rb232
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/tools/generator.rb105
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/tools/generator_task.rb32
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/tools/struct_generator.rb195
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/types.rb222
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/union.rb43
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/variadic.rb80
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/version.rb3
95 files changed, 10772 insertions, 0 deletions
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.0/ffi_c.bundle b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.0/ffi_c.bundle
new file mode 100755
index 0000000..918356b
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.0/ffi_c.bundle
Binary files differ
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.1/ffi_c.bundle b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.1/ffi_c.bundle
new file mode 100755
index 0000000..564fcc9
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.1/ffi_c.bundle
Binary files differ
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.2/ffi_c.bundle b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.2/ffi_c.bundle
new file mode 100755
index 0000000..d2b2bbd
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.2/ffi_c.bundle
Binary files differ
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.3/ffi_c.bundle b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.3/ffi_c.bundle
new file mode 100755
index 0000000..73e4ee0
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.3/ffi_c.bundle
Binary files differ
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.4/ffi_c.bundle b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.4/ffi_c.bundle
new file mode 100755
index 0000000..4e7efc3
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/3.4/ffi_c.bundle
Binary files differ
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/4.0/ffi_c.bundle b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/4.0/ffi_c.bundle
new file mode 100755
index 0000000..de98252
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/4.0/ffi_c.bundle
Binary files differ
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi.rb
new file mode 100644
index 0000000..3fb20a8
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi.rb
@@ -0,0 +1,27 @@
+if RUBY_ENGINE == 'ruby'
+ begin
+ require RUBY_VERSION.split('.')[0, 2].join('.') + '/ffi_c'
+ rescue Exception
+ require 'ffi_c'
+ end
+
+ require 'ffi/ffi'
+
+elsif RUBY_ENGINE == 'jruby' && (RUBY_ENGINE_VERSION.split('.').map(&:to_i) <=> [9, 2, 20]) >= 0
+ JRuby::Util.load_ext("org.jruby.ext.ffi.FFIService")
+ require 'ffi/ffi'
+
+elsif RUBY_ENGINE == 'truffleruby' && (RUBY_ENGINE_VERSION.split('.').map(&:to_i) <=> [20, 1, 0]) >= 0
+ require 'truffleruby/ffi_backend'
+ require 'ffi/ffi'
+
+else
+ # Remove the ffi gem dir from the load path, then reload the internal ffi implementation
+ $LOAD_PATH.delete(File.dirname(__FILE__))
+ $LOAD_PATH.delete(File.join(File.dirname(__FILE__), 'ffi'))
+ unless $LOADED_FEATURES.nil?
+ $LOADED_FEATURES.delete(__FILE__)
+ $LOADED_FEATURES.delete('ffi.rb')
+ end
+ require 'ffi.rb'
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/abstract_memory.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/abstract_memory.rb
new file mode 100644
index 0000000..e0aa221
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/abstract_memory.rb
@@ -0,0 +1,44 @@
+#
+# Copyright (C) 2020 Lars Kanis
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
+
+
+module FFI
+ class AbstractMemory
+ LONG_MAX = FFI::Pointer.new(1).size
+ private_constant :LONG_MAX
+
+ # Return +true+ if +self+ has a size limit.
+ #
+ # @return [Boolean]
+ def size_limit?
+ size != LONG_MAX
+ end
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/autopointer.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/autopointer.rb
new file mode 100644
index 0000000..4dd6113
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/autopointer.rb
@@ -0,0 +1,186 @@
+#
+# Copyright (C) 2008-2010 Wayne Meissner
+# Copyright (C) 2008 Mike Dalessio
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+module FFI
+ class AutoPointer < Pointer
+ extend DataConverter
+
+ # @overload initialize(pointer, method)
+ # @param pointer [Pointer]
+ # @param method [Method]
+ # @return [self]
+ # The passed Method will be invoked at GC time.
+ # @overload initialize(pointer, proc)
+ # @param pointer [Pointer]
+ # @return [self]
+ # The passed Proc will be invoked at GC time (SEE WARNING BELOW!)
+ # @note WARNING: passing a proc _may_ cause your pointer to never be
+ # GC'd, unless you're careful to avoid trapping a reference to the
+ # pointer in the proc. See the test specs for examples.
+ # @overload initialize(pointer)
+ # @param pointer [Pointer]
+ # @return [self]
+ # The pointer's release() class method will be invoked at GC time.
+ #
+ # @note The safest, and therefore preferred, calling
+ # idiom is to pass a Method as the second parameter. Example usage:
+ #
+ # class PointerHelper
+ # def self.release(pointer)
+ # ...
+ # end
+ # end
+ #
+ # p = AutoPointer.new(other_pointer, PointerHelper.method(:release))
+ #
+ # The above code will cause PointerHelper#release to be invoked at GC time.
+ #
+ # @note
+ # The last calling idiom (only one parameter) is generally only
+ # going to be useful if you subclass {AutoPointer}, and override
+ # #release, which by default does nothing.
+ def initialize(ptr, proc=nil)
+ raise TypeError, "Invalid pointer" if ptr.nil? || !ptr.kind_of?(Pointer) ||
+ ptr.kind_of?(MemoryPointer) || ptr.kind_of?(AutoPointer)
+ super(ptr.type_size, ptr)
+
+ @releaser = if proc
+ if not proc.respond_to?(:call)
+ raise RuntimeError.new("proc must be callable")
+ end
+ Releaser.new(ptr, proc)
+
+ else
+ if not self.class.respond_to?(:release, true)
+ raise RuntimeError.new("no release method defined")
+ end
+ Releaser.new(ptr, self.class.method(:release))
+ end
+
+ ObjectSpace.define_finalizer(self, @releaser)
+ self
+ end
+
+ def dup
+ raise RuntimeError, "cannot duplicate FFI::AutoPointer"
+ end
+
+ alias clone dup
+
+ # @return [nil]
+ # Free the pointer.
+ def free
+ @releaser.free
+ end
+
+ # @param [Boolean] autorelease
+ # @return [Boolean] +autorelease+
+ # Set +autorelease+ property. See {Pointer Autorelease section at Pointer}.
+ def autorelease=(autorelease)
+ raise FrozenError.new("can't modify frozen #{self.class}") if frozen?
+ @releaser.autorelease=(autorelease)
+ end
+
+ # @return [Boolean] +autorelease+
+ # Get +autorelease+ property. See {Pointer Autorelease section at Pointer}.
+ def autorelease?
+ @releaser.autorelease
+ end
+
+ # @abstract Base class for {AutoPointer}'s releasers.
+ #
+ # All subclasses of Releaser should define a +#release(ptr)+ method.
+ # A releaser is an object in charge of release an {AutoPointer}.
+ class Releaser
+ attr_accessor :autorelease
+
+ # @param [Pointer] ptr
+ # @param [#call] proc
+ # @return [nil]
+ # A new instance of Releaser.
+ def initialize(ptr, proc)
+ @ptr = ptr
+ @proc = proc
+ @autorelease = true
+ end
+
+ # @return [nil]
+ # Free pointer.
+ def free
+ if @ptr
+ release(@ptr)
+ @autorelease = false
+ @ptr = nil
+ @proc = nil
+ end
+ end
+
+ # @param args
+ # Release pointer if +autorelease+ is set.
+ def call(*args)
+ release(@ptr) if @autorelease && @ptr
+ end
+
+ # Release +ptr+ by using Proc or Method defined at +ptr+
+ # {AutoPointer#initialize initialization}.
+ #
+ # @param [Pointer] ptr
+ # @return [nil]
+ def release(ptr)
+ @proc.call(ptr)
+ end
+ end
+
+ # Return native type of AutoPointer.
+ #
+ # Override {DataConverter#native_type}.
+ # @return [Type::POINTER]
+ # @raise {RuntimeError} if class does not implement a +#release+ method
+ def self.native_type
+ if not self.respond_to?(:release, true)
+ raise RuntimeError.new("no release method defined for #{self.inspect}")
+ end
+ Type::POINTER
+ end
+
+ # Create a new AutoPointer.
+ #
+ # Override {DataConverter#from_native}.
+ # @overload self.from_native(ptr, ctx)
+ # @param [Pointer] ptr
+ # @param ctx not used. Please set +nil+.
+ # @return [AutoPointer]
+ def self.from_native(val, ctx)
+ self.new(val)
+ end
+ end
+
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/buffer.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/buffer.rb
new file mode 100644
index 0000000..449e45b
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/buffer.rb
@@ -0,0 +1,4 @@
+#
+# All the code from this file is now implemented in C. This file remains
+# to satisfy any leftover require 'ffi/buffer' in user code
+#
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/callback.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/callback.rb
new file mode 100644
index 0000000..32d52f7
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/callback.rb
@@ -0,0 +1,4 @@
+#
+# All the code from this file is now implemented in C. This file remains
+# to satisfy any leftover require 'ffi/callback' in user code
+#
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/compat.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/compat.rb
new file mode 100644
index 0000000..051724f
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/compat.rb
@@ -0,0 +1,54 @@
+#
+# Copyright (C) 2023-2023 Lars Kanis
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+module FFI
+ if defined?(Ractor.make_shareable)
+ # This is for FFI internal use only.
+ def self.make_shareable(obj)
+ Ractor.make_shareable(obj)
+ end
+ else
+ def self.make_shareable(obj)
+ obj.freeze
+ end
+ end
+
+ if defined?(Ractor.shareable_proc)
+ # This is for FFI internal use only.
+ def self.shareable_proc(**kwargs, &block)
+ Ractor.shareable_proc(**kwargs, &block)
+ end
+ else
+ def self.shareable_proc(**_kwargs, &block)
+ block
+ end
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/data_converter.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/data_converter.rb
new file mode 100644
index 0000000..7852e7e
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/data_converter.rb
@@ -0,0 +1,67 @@
+#
+# Copyright (C) 2008-2010 Wayne Meissner
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
+
+module FFI
+ # This module is used to extend somes classes and give then a common API.
+ #
+ # Most of methods defined here must be overridden.
+ module DataConverter
+ # Get native type.
+ #
+ # @overload native_type(type)
+ # @param [String, Symbol, Type] type
+ # @return [Type]
+ # Get native type from +type+.
+ #
+ # @overload native_type
+ # @raise {NotImplementedError} This method must be overridden.
+ def native_type(type = nil)
+ if type
+ @native_type = FFI.find_type(type)
+ else
+ native_type = @native_type
+ unless native_type
+ raise NotImplementedError, 'native_type method not overridden and no native_type set'
+ end
+ native_type
+ end
+ end
+
+ # Convert to a native type.
+ def to_native(value, ctx)
+ value
+ end
+
+ # Convert from a native type.
+ def from_native(value, ctx)
+ value
+ end
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/dynamic_library.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/dynamic_library.rb
new file mode 100644
index 0000000..468ce04
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/dynamic_library.rb
@@ -0,0 +1,118 @@
+#
+# Copyright (C) 2008-2010 Wayne Meissner
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
+
+module FFI
+ class DynamicLibrary
+ SEARCH_PATH = []
+
+ # The following search paths are tried, if the library could not be loaded in the first attempt.
+ # They are only executed on Macos in the following order:
+ if FFI::Platform.mac?
+
+ # 1. Try library paths possibly defined in LD_LIBRARY_PATH DYLD_LIBRARY_PATH first.
+ # This is because dlopen doesn't respect LD_LIBRARY_PATH and DYLD_LIBRARY_PATH is deleted by SIP-protected binaries.
+ # See here for details: https://github.com/ffi/ffi/issues/923#issuecomment-1872565313
+ %w[LD_LIBRARY_PATH DYLD_LIBRARY_PATH].each do |custom_path|
+ SEARCH_PATH.concat ENV.fetch(custom_path,"").split(File::PATH_SEPARATOR)
+ end
+
+ # 2. Then on macos/arm64 try /opt/homebrew/lib, since this is a typical standard directory.
+ # FFI is often used together with homebrew, so that we hardcode the path for arm64 here.
+ if FFI::Platform::ARCH == 'aarch64'
+ SEARCH_PATH << '/opt/homebrew/lib'
+ end
+
+ # 3. Then try typical system directories starting with the /local/ directory first.
+ #
+ # /usr/local/lib is used by homebrow on x86_64.
+ # /opt/local/lib is used by MacPorts and Fink.
+ # /usr/lib is there, because it was always there.
+ SEARCH_PATH.concat %w[/opt/local/lib /usr/local/lib /usr/lib]
+ end
+
+ # On Linux the library lookup paths are usually defined through /etc/ld.so.conf, which can be changed at will with root permissions.
+ # Also LD_LIBRARY_PATH is respected by the dynamic loader, so that there's usually no need and no advantage to do a fallback handling.
+ #
+ # Windows has it's own library lookup logic, very different to what we do here.
+ # See: https://github.com/oneclick/rubyinstaller2/wiki/For-gem-developers#user-content-dll-loading
+
+ FFI.make_shareable(SEARCH_PATH)
+ SEARCH_PATH_MESSAGE = "Searched in <system library path>#{ SEARCH_PATH.map{|a| ', ' + a}.join }".freeze
+
+ def self.load_library(name, flags)
+ if name == FFI::CURRENT_PROCESS
+ FFI::DynamicLibrary.open(nil, RTLD_LAZY | RTLD_LOCAL)
+ else
+ flags ||= RTLD_LAZY | RTLD_LOCAL
+
+ libnames = (name.is_a?(::Array) ? name : [name])
+ libnames = libnames.map(&:to_s).map { |n| [n, FFI.map_library_name(n)].uniq }.flatten.compact
+ errors = []
+
+ libnames.each do |libname|
+ lib = try_load(libname, flags, errors)
+ return lib if lib
+
+ unless libname.start_with?("/")
+ SEARCH_PATH.each do |prefix|
+ path = "#{prefix}/#{libname}"
+ if File.exist?(path)
+ lib = try_load(path, flags, errors)
+ return lib if lib
+ end
+ end
+ end
+ end
+
+ raise LoadError, [*errors, SEARCH_PATH_MESSAGE].join(".\n")
+ end
+ end
+ private_class_method :load_library
+
+ def self.try_load(libname, flags, errors)
+ begin
+ lib = FFI::DynamicLibrary.open(libname, flags)
+ return lib if lib
+
+ # LoadError for C ext & JRuby, RuntimeError for TruffleRuby
+ rescue LoadError, RuntimeError => ex
+ if ex.message =~ /(([^ \t()])+\.so([^ \t:()])*):([ \t])*(invalid ELF header|file too short|invalid file format)/
+ if File.binread($1) =~ /(?:GROUP|INPUT) *\( *([^ \)]+)/
+ return try_load($1, flags, errors)
+ end
+ end
+
+ errors << ex
+ nil
+ end
+ end
+ private_class_method :try_load
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/enum.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/enum.rb
new file mode 100644
index 0000000..af78331
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/enum.rb
@@ -0,0 +1,302 @@
+#
+# Copyright (C) 2009, 2010 Wayne Meissner
+# Copyright (C) 2009 Luc Heinrich
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+module FFI
+
+ # An instance of this class permits to manage {Enum}s. In fact, Enums is a collection of {Enum}s.
+ class Enums
+
+ def initialize
+ @all_enums = Array.new
+ @tagged_enums = Hash.new
+ @symbol_map = Hash.new
+ end
+
+ # @param [Enum] enum
+ # Add an {Enum} to the collection.
+ def <<(enum)
+ @all_enums << enum
+ @tagged_enums[enum.tag] = enum unless enum.tag.nil?
+ @symbol_map.merge!(enum.symbol_map)
+ end
+
+ # @param query enum tag or part of an enum name
+ # @return [Enum]
+ # Find a {Enum} in collection.
+ def find(query)
+ if @tagged_enums.has_key?(query)
+ @tagged_enums[query]
+ else
+ @all_enums.detect { |enum| enum.symbols.include?(query) }
+ end
+ end
+
+ # @param symbol a symbol to find in merge symbol maps of all enums.
+ # @return a symbol
+ def __map_symbol(symbol)
+ @symbol_map[symbol]
+ end
+
+ end
+
+ # Represents a C enum.
+ #
+ # For a C enum:
+ # enum fruits {
+ # apple,
+ # banana,
+ # orange,
+ # pineapple
+ # };
+ # are defined this vocabulary:
+ # * a _symbol_ is a word from the enumeration (ie. _apple_, by example);
+ # * a _value_ is the value of a symbol in the enumeration (by example, apple has value _0_ and banana _1_).
+ class Enum
+ include DataConverter
+
+ attr_reader :tag
+ attr_reader :native_type
+
+ # @overload initialize(info, tag=nil)
+ # @param [nil, Enumerable] info
+ # @param [nil, Symbol] tag enum tag
+ # @overload initialize(native_type, info, tag=nil)
+ # @param [FFI::Type] native_type Native type for new Enum
+ # @param [nil, Enumerable] info symbols and values for new Enum
+ # @param [nil, Symbol] tag name of new Enum
+ def initialize(*args)
+ @native_type = args.first.kind_of?(FFI::Type) ? args.shift : Type::INT
+ info, @tag = *args
+ @kv_map = Hash.new
+ unless info.nil?
+ last_cst = nil
+ value = 0
+ info.each do |i|
+ case i
+ when Symbol
+ raise ArgumentError, "duplicate enum key" if @kv_map.has_key?(i)
+ @kv_map[i] = value
+ last_cst = i
+ value += 1
+ when Integer
+ @kv_map[last_cst] = i
+ value = i+1
+ end
+ end
+ end
+ @vk_map = @kv_map.invert
+ end
+
+ # @return [Array] enum symbol names
+ def symbols
+ @kv_map.keys
+ end
+
+ # Get a symbol or a value from the enum.
+ # @overload [](query)
+ # Get enum value from symbol.
+ # @param [Symbol] query
+ # @return [Integer]
+ # @overload [](query)
+ # Get enum symbol from value.
+ # @param [Integer] query
+ # @return [Symbol]
+ def [](query)
+ case query
+ when Symbol
+ @kv_map[query]
+ when Integer
+ @vk_map[query]
+ end
+ end
+ alias find []
+
+ # Get the symbol map.
+ # @return [Hash]
+ def symbol_map
+ @kv_map
+ end
+
+ alias to_h symbol_map
+ alias to_hash symbol_map
+
+ # @param [Symbol, Integer, #to_int] val
+ # @param ctx unused
+ # @return [Integer] value of a enum symbol
+ def to_native(val, ctx)
+ @kv_map[val] || if val.is_a?(Integer)
+ val
+ elsif val.respond_to?(:to_int)
+ val.to_int
+ else
+ raise ArgumentError, "invalid enum value, #{val.inspect}"
+ end
+ end
+
+ # @param val
+ # @return symbol name if it exists for +val+.
+ def from_native(val, ctx)
+ @vk_map[val] || val
+ end
+ end
+
+ # Represents a C enum whose values are power of 2
+ #
+ # @example
+ # enum {
+ # red = (1<<0),
+ # green = (1<<1),
+ # blue = (1<<2)
+ # }
+ #
+ # Contrary to classical enums, bitmask values are usually combined
+ # when used.
+ class Bitmask < Enum
+
+ # @overload initialize(info, tag=nil)
+ # @param [nil, Enumerable] info symbols and bit rank for new Bitmask
+ # @param [nil, Symbol] tag name of new Bitmask
+ # @overload initialize(native_type, info, tag=nil)
+ # @param [FFI::Type] native_type Native type for new Bitmask
+ # @param [nil, Enumerable] info symbols and bit rank for new Bitmask
+ # @param [nil, Symbol] tag name of new Bitmask
+ def initialize(*args)
+ @native_type = args.first.kind_of?(FFI::Type) ? args.shift : Type::INT
+ @signed = [Type::INT8, Type::INT16, Type::INT32, Type::INT64].include?(@native_type)
+ info, @tag = *args
+ @kv_map = Hash.new
+ unless info.nil?
+ last_cst = nil
+ value = 0
+ info.each do |i|
+ case i
+ when Symbol
+ raise ArgumentError, "duplicate bitmask key" if @kv_map.has_key?(i)
+ @kv_map[i] = 1 << value
+ last_cst = i
+ value += 1
+ when Integer
+ raise ArgumentError, "bitmask index should be positive" if i<0
+ @kv_map[last_cst] = 1 << i
+ value = i+1
+ end
+ end
+ end
+ @vk_map = @kv_map.invert
+ end
+
+ # Get a symbol list or a value from the bitmask
+ # @overload [](*query)
+ # Get bitmask value from symbol list
+ # @param [Symbol] query
+ # @return [Integer]
+ # @overload [](query)
+ # Get bitmask value from symbol array
+ # @param [Array<Symbol>] query
+ # @return [Integer]
+ # @overload [](*query)
+ # Get a list of bitmask symbols corresponding to
+ # the or reduction of a list of integer
+ # @param [Integer] query
+ # @return [Array<Symbol>]
+ # @overload [](query)
+ # Get a list of bitmask symbols corresponding to
+ # the or reduction of a list of integer
+ # @param [Array<Integer>] query
+ # @return [Array<Symbol>]
+ def [](*query)
+ flat_query = query.flatten
+ raise ArgumentError, "query should be homogeneous, #{query.inspect}" unless flat_query.all? { |o| o.is_a?(Symbol) } || flat_query.all? { |o| o.is_a?(Integer) || o.respond_to?(:to_int) }
+ case flat_query[0]
+ when Symbol
+ flat_query.inject(0) do |val, o|
+ v = @kv_map[o]
+ if v then val | v else val end
+ end
+ when Integer, ->(o) { o.respond_to?(:to_int) }
+ val = flat_query.inject(0) { |mask, o| mask |= o.to_int }
+ @kv_map.select { |_, v| v & val != 0 }.keys
+ end
+ end
+
+ # Get the native value of a bitmask
+ # @overload to_native(query, ctx)
+ # @param [Symbol, Integer, #to_int] query
+ # @param ctx unused
+ # @return [Integer] value of a bitmask
+ # @overload to_native(query, ctx)
+ # @param [Array<Symbol, Integer, #to_int>] query
+ # @param ctx unused
+ # @return [Integer] value of a bitmask
+ def to_native(query, ctx)
+ return 0 if query.nil?
+ flat_query = [query].flatten
+ res = flat_query.inject(0) do |val, o|
+ case o
+ when Symbol
+ v = @kv_map[o]
+ raise ArgumentError, "invalid bitmask value, #{o.inspect}" unless v
+ val | v
+ when Integer
+ val | o
+ when ->(obj) { obj.respond_to?(:to_int) }
+ val | o.to_int
+ else
+ raise ArgumentError, "invalid bitmask value, #{o.inspect}"
+ end
+ end
+ # Take two's complement of positive values bigger than the max value
+ # for the type when native type is signed.
+ if @signed && res >= (1 << (@native_type.size * 8 - 1))
+ res = -(-res & ((1 << (@native_type.size * 8)) - 1))
+ end
+ res
+ end
+
+ # @param [Integer] val
+ # @param ctx unused
+ # @return [Array<Symbol, Integer>] list of symbol names corresponding to val, plus an optional remainder if some bits don't match any constant
+ def from_native(val, ctx)
+ flags = @kv_map.select { |_, v| v & val != 0 }
+ list = flags.keys
+ # force an unsigned value of the correct size
+ val &= (1 << (@native_type.size * 8)) - 1 if @signed
+ # If there are unmatch flags,
+ # return them in an integer,
+ # else information can be lost.
+ # Similar to Enum behavior.
+ remainder = val ^ flags.values.reduce(0, :|)
+ list.push remainder unless remainder == 0
+ return list
+ end
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/errno.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/errno.rb
new file mode 100644
index 0000000..de82d89
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/errno.rb
@@ -0,0 +1,43 @@
+#
+# Copyright (C) 2008-2010 Wayne Meissner
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
+
+module FFI
+ # @return (see FFI::LastError.error)
+ # @see FFI::LastError.error
+ def self.errno
+ FFI::LastError.error
+ end
+ # @param error (see FFI::LastError.error=)
+ # @return (see FFI::LastError.error=)
+ # @see FFI::LastError.error=
+ def self.errno=(error)
+ FFI::LastError.error = error
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/ffi.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/ffi.rb
new file mode 100644
index 0000000..4782270
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/ffi.rb
@@ -0,0 +1,109 @@
+#
+# Copyright (C) 2008-2010 JRuby project
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+require 'ffi/compat'
+require 'ffi/platform'
+require 'ffi/data_converter'
+require 'ffi/types'
+require 'ffi/library_path'
+require 'ffi/library'
+require 'ffi/errno'
+require 'ffi/abstract_memory'
+require 'ffi/pointer'
+require 'ffi/memorypointer'
+require 'ffi/struct'
+require 'ffi/union'
+require 'ffi/managedstruct'
+require 'ffi/callback'
+require 'ffi/io'
+require 'ffi/autopointer'
+require 'ffi/variadic'
+require 'ffi/enum'
+require 'ffi/version'
+require 'ffi/function'
+
+module FFI
+ module ModernForkTracking
+ def _fork
+ pid = super
+ if pid == 0
+ FFI._async_cb_dispatcher_atfork_child
+ end
+ pid
+ end
+ end
+
+ module LegacyForkTracking
+ module KernelExt
+ def fork
+ if block_given?
+ super do
+ FFI._async_cb_dispatcher_atfork_child
+ yield
+ end
+ else
+ pid = super
+ FFI._async_cb_dispatcher_atfork_child if pid.nil?
+ pid
+ end
+ end
+ end
+
+ module KernelExtPrivate
+ include KernelExt
+ private :fork
+ end
+
+ module IOExt
+ def popen(*args)
+ return super unless args[0] == '-'
+
+ super(*args) do |pipe|
+ FFI._async_cb_dispatcher_atfork_child if pipe.nil?
+ yield pipe
+ end
+ end
+ ruby2_keywords :popen if respond_to?(:ruby2_keywords)
+ end
+ end
+
+ if Process.respond_to?(:_fork)
+ # The nice Ruby 3.1+ way of doing things
+ ::Process.singleton_class.prepend(ModernForkTracking)
+ elsif Process.respond_to?(:fork)
+ # Barf. Old CRuby.
+ # Most of the inspiration for how to do this was stolen from ActiveSupport.
+ ::Object.prepend(LegacyForkTracking::KernelExtPrivate)
+ ::Object.singleton_class.prepend(LegacyForkTracking::KernelExt)
+ ::Kernel.prepend(LegacyForkTracking::KernelExtPrivate)
+ ::Kernel.singleton_class.prepend(LegacyForkTracking::KernelExt)
+ ::IO.singleton_class.prepend(LegacyForkTracking::IOExt)
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/function.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/function.rb
new file mode 100644
index 0000000..d8d4765
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/function.rb
@@ -0,0 +1,94 @@
+#
+# Copyright (C) 2008-2010 JRuby project
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+module FFI
+ class Function
+ # Only MRI allows function type queries
+ if private_method_defined?(:type)
+ # Retrieve the return type of the function
+ #
+ # This method returns FFI type returned by the function.
+ #
+ # @return [FFI::Type]
+ def return_type
+ type.return_type
+ end
+
+ # Retrieve Array of parameter types
+ #
+ # This method returns an Array of FFI types accepted as function parameters.
+ #
+ # @return [Array<FFI::Type>]
+ def param_types
+ type.param_types
+ end
+ end
+
+ if RUBY_PLATFORM == 'aarch64-mingw-ucrt'
+ # Use a workaround for https://github.com/libffi/libffi/issues/905
+ def attach(mod, name)
+ this = self
+ body = proc do |*args, &block|
+ this.call(*args, &block)
+ end
+
+ mod.define_method(name, body)
+ mod.define_singleton_method(name, body)
+
+ # Store function Proc's for re-definition as Ractor-shareable in Library#freeze
+ funcs = mod.instance_variable_get("@ffi_function_procs")
+ unless funcs
+ funcs = {}
+ mod.instance_variable_set("@ffi_function_procs", funcs)
+ end
+ funcs[name] = self
+
+ self
+ end
+ end
+
+ # Stash the Function in a module variable so it can be inspected by attached_functions.
+ # On CRuby it also ensures that it does not get garbage collected.
+ module RegisterAttach
+ def attach(mod, name)
+ funcs = mod.instance_variable_defined?("@ffi_functions") && mod.instance_variable_get("@ffi_functions")
+ unless funcs
+ funcs = {}
+ mod.instance_variable_set("@ffi_functions", funcs)
+ end
+ funcs[name.to_sym] = self
+ # Jump to the native attach method of CRuby, JRuby or Tuffleruby
+ super
+ end
+ end
+ private_constant :RegisterAttach
+ prepend RegisterAttach
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/io.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/io.rb
new file mode 100644
index 0000000..7fb2857
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/io.rb
@@ -0,0 +1,62 @@
+#
+# Copyright (C) 2008, 2009 Wayne Meissner
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
+
+module FFI
+
+ # This module implements a couple of class methods to play with IO.
+ module IO
+ # @param [Integer] fd file decriptor
+ # @param [String] mode mode string
+ # @return [::IO]
+ # Synonym for IO::for_fd.
+ def self.for_fd(fd, mode = "r")
+ ::IO.for_fd(fd, mode)
+ end
+
+ # @param [#read] io io to read from
+ # @param [AbstractMemory] buf destination for data read from +io+
+ # @param [nil, Integer] len maximul number of bytes to read from +io+. If +nil+,
+ # read until end of file.
+ # @return [Integer] length really read, in bytes
+ #
+ # A version of IO#read that reads data from an IO and put then into a native buffer.
+ #
+ # This will be optimized at some future time to eliminate the double copy.
+ #
+ def self.native_read(io, buf, len)
+ tmp = io.read(len)
+ return -1 unless tmp
+ buf.put_bytes(0, tmp)
+ tmp.length
+ end
+
+ end
+end
+
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/library.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/library.rb
new file mode 100644
index 0000000..e497b64
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/library.rb
@@ -0,0 +1,592 @@
+#
+# Copyright (C) 2008-2010 Wayne Meissner
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
+
+require 'ffi/dynamic_library'
+
+module FFI
+ CURRENT_PROCESS = USE_THIS_PROCESS_AS_LIBRARY = FFI.make_shareable(Object.new)
+
+ # @param [String, FFI::LibraryPath] lib library name or LibraryPath object
+ # @return [String] library name formatted for current platform
+ # Transform a generic library name to a platform library name
+ # @example
+ # # Linux
+ # FFI.map_library_name 'c' # -> "libc.so.6"
+ # FFI.map_library_name 'jpeg' # -> "libjpeg.so"
+ # # Windows
+ # FFI.map_library_name 'c' # -> "msvcrt.dll"
+ # FFI.map_library_name 'jpeg' # -> "jpeg.dll"
+ def self.map_library_name(lib)
+ # Mangle the library name to reflect the native library naming conventions
+ LibraryPath.wrap(lib).to_s
+ end
+
+ # Exception raised when a function is not found in libraries
+ class NotFoundError < LoadError
+ def initialize(function, *libraries)
+ super("Function '#{function}' not found in [#{libraries[0].nil? ? 'current process' : libraries.join(", ")}]")
+ end
+ end
+
+ # This module is the base to use native functions.
+ #
+ # A basic usage may be:
+ # require 'ffi'
+ #
+ # module Hello
+ # extend FFI::Library
+ # ffi_lib FFI::Library::LIBC
+ # attach_function 'puts', [ :string ], :int
+ # end
+ #
+ # Hello.puts("Hello, World")
+ #
+ #
+ module Library
+ CURRENT_PROCESS = FFI::CURRENT_PROCESS
+ LIBC = FFI::Platform::LIBC
+
+ # @param mod extended object
+ # @return [nil]
+ # @raise {RuntimeError} if +mod+ is not a Module
+ # Test if extended object is a Module. If not, raise RuntimeError.
+ def self.extended(mod)
+ raise RuntimeError.new("must only be extended by module") unless mod.kind_of?(::Module)
+ end
+
+
+ # @param [Array] names names of libraries to load
+ # @return [Array<DynamicLibrary>]
+ # @raise {LoadError} if a library cannot be opened
+ # Load native libraries.
+ def ffi_lib(*names)
+ raise LoadError.new("library names list must not be empty") if names.empty?
+
+ lib_flags = defined?(@ffi_lib_flags) && @ffi_lib_flags
+
+ @ffi_libs = names.map do |name|
+ FFI::DynamicLibrary.send(:load_library, name, lib_flags)
+ end
+ end
+
+ # Set the calling convention for {#attach_function} and {#callback}
+ #
+ # @see http://en.wikipedia.org/wiki/Stdcall#stdcall
+ # @note +:stdcall+ is typically used for attaching Windows API functions
+ #
+ # @param [Symbol] convention one of +:default+, +:stdcall+
+ # @return [Symbol] the new calling convention
+ def ffi_convention(convention = nil)
+ @ffi_convention ||= :default
+ @ffi_convention = convention if convention
+ @ffi_convention
+ end
+
+ # @see #ffi_lib
+ # @return [Array<FFI::DynamicLibrary>] array of currently loaded FFI libraries
+ # @raise [LoadError] if no libraries have been loaded (using {#ffi_lib})
+ # Get FFI libraries loaded using {#ffi_lib}.
+ def ffi_libraries
+ raise LoadError.new("no library specified") if !defined?(@ffi_libs) || @ffi_libs.empty?
+ @ffi_libs
+ end
+
+ # Flags used in {#ffi_lib}.
+ #
+ # This map allows you to supply symbols to {#ffi_lib_flags} instead of
+ # the actual constants.
+ FlagsMap = {
+ :global => DynamicLibrary::RTLD_GLOBAL,
+ :local => DynamicLibrary::RTLD_LOCAL,
+ :lazy => DynamicLibrary::RTLD_LAZY,
+ :now => DynamicLibrary::RTLD_NOW
+ }
+
+ # Sets library flags for {#ffi_lib}.
+ #
+ # @example
+ # ffi_lib_flags(:lazy, :local) # => 5
+ #
+ # @param [Symbol, …] flags (see {FlagsMap})
+ # @return [Integer] the new value
+ def ffi_lib_flags(*flags)
+ @ffi_lib_flags = flags.inject(0) { |result, f| result | FlagsMap[f] }
+ end
+
+
+ ##
+ # @overload attach_function(func, args, returns, options = {})
+ # @example attach function without an explicit name
+ # module Foo
+ # extend FFI::Library
+ # ffi_lib FFI::Library::LIBC
+ # attach_function :malloc, [:size_t], :pointer
+ # end
+ # # now callable via Foo.malloc
+ # @overload attach_function(name, func, args, returns, options = {})
+ # @example attach function with an explicit name
+ # module Bar
+ # extend FFI::Library
+ # ffi_lib FFI::Library::LIBC
+ # attach_function :c_malloc, :malloc, [:size_t], :pointer
+ # end
+ # # now callable via Bar.c_malloc
+ #
+ # Attach C function +func+ to this module.
+ #
+ #
+ # @param [#to_s] name name of ruby method to attach as
+ # @param [#to_s] func name of C function to attach
+ # @param [Array<Symbol>] args an array of types
+ # @param [Symbol] returns type of return value
+ # @option options [Boolean] :blocking (@blocking) set to true if the C function is a blocking call
+ # @option options [Symbol] :convention (:default) calling convention (see {#ffi_convention})
+ # @option options [FFI::Enums] :enums
+ # @option options [Hash] :type_map
+ #
+ # @return [FFI::VariadicInvoker]
+ #
+ # @raise [FFI::NotFoundError] if +func+ cannot be found in the attached libraries (see {#ffi_lib})
+ def attach_function(name, func, args, returns = nil, options = nil)
+ mname, a2, a3, a4, a5 = name, func, args, returns, options
+ cname, arg_types, ret_type, opts = (a4 && (a2.is_a?(String) || a2.is_a?(Symbol))) ? [ a2, a3, a4, a5 ] : [ mname.to_s, a2, a3, a4 ]
+
+ # Convert :foo to the native type
+ arg_types = arg_types.map { |e| find_type(e) }
+ options = {
+ :convention => ffi_convention,
+ :type_map => defined?(@ffi_typedefs) ? @ffi_typedefs : nil,
+ :blocking => defined?(@blocking) && @blocking,
+ :enums => defined?(@ffi_enums) ? @ffi_enums : nil,
+ }
+
+ @blocking = false
+ options.merge!(opts) if opts && opts.is_a?(Hash)
+
+ # Try to locate the function in any of the libraries
+ invokers = []
+ ffi_libraries.each do |lib|
+ if invokers.empty?
+ begin
+ function = nil
+ function_names(cname, arg_types).find do |fname|
+ function = lib.find_function(fname)
+ end
+ raise LoadError unless function
+
+ invokers << if arg_types[-1] == FFI::NativeType::VARARGS
+ VariadicInvoker.new(function, arg_types, find_type(ret_type), options)
+
+ else
+ Function.new(find_type(ret_type), arg_types, function, options)
+ end
+
+ rescue LoadError
+ end
+ end
+ end
+ invoker = invokers.compact.shift
+ raise FFI::NotFoundError.new(cname.to_s, ffi_libraries.map { |lib| lib.name }) unless invoker
+
+ invoker.attach(self, mname.to_s)
+ invoker
+ end
+
+ # @param [#to_s] name function name
+ # @param [Array] arg_types function's argument types
+ # @return [Array<String>]
+ # This function returns a list of possible names to lookup.
+ # @note Function names on windows may be decorated if they are using stdcall. See
+ # * http://en.wikipedia.org/wiki/Name_mangling#C_name_decoration_in_Microsoft_Windows
+ # * http://msdn.microsoft.com/en-us/library/zxk0tw93%28v=VS.100%29.aspx
+ # * http://en.wikibooks.org/wiki/X86_Disassembly/Calling_Conventions#STDCALL
+ # Note that decorated names can be overridden via def files. Also note that the
+ # windows api, although using, doesn't have decorated names.
+ def function_names(name, arg_types)
+ result = [name.to_s]
+ if ffi_convention == :stdcall
+ # Get the size of each parameter
+ size = arg_types.inject(0) do |mem, arg|
+ size = arg.size
+ # The size must be a multiple of 4
+ size += (4 - size) % 4
+ mem + size
+ end
+
+ result << "_#{name.to_s}@#{size}" # win32
+ result << "#{name.to_s}@#{size}" # win64
+ end
+ result
+ end
+
+ # @overload attach_variable(mname, cname, type)
+ # @param [#to_s] mname name of ruby method to attach as
+ # @param [#to_s] cname name of C variable to attach
+ # @param [DataConverter, Struct, Symbol, Type] type C variable's type
+ # @example
+ # module Bar
+ # extend FFI::Library
+ # ffi_lib 'my_lib'
+ # attach_variable :c_myvar, :myvar, :long
+ # end
+ # # now callable via Bar.c_myvar
+ # @overload attach_variable(cname, type)
+ # @param [#to_s] mname name of ruby method to attach as
+ # @param [DataConverter, Struct, Symbol, Type] type C variable's type
+ # @example
+ # module Bar
+ # extend FFI::Library
+ # ffi_lib 'my_lib'
+ # attach_variable :myvar, :long
+ # end
+ # # now callable via Bar.myvar
+ # @return [DynamicLibrary::Symbol]
+ # @raise {FFI::NotFoundError} if +cname+ cannot be found in libraries
+ #
+ # Attach C variable +cname+ to this module.
+ def attach_variable(mname, a1, a2 = nil)
+ cname, type = a2 ? [ a1, a2 ] : [ mname.to_s, a1 ]
+ mname = mname.to_sym
+ address = nil
+ ffi_libraries.each do |lib|
+ begin
+ address = lib.find_variable(cname.to_s)
+ break unless address.nil?
+ rescue LoadError
+ end
+ end
+
+ raise FFI::NotFoundError.new(cname, ffi_libraries) if address.nil? || address.null?
+ if type.is_a?(Class) && type < FFI::Struct
+ # If it is a global struct, just attach directly to the pointer
+ s = s = type.new(address) # Assigning twice to suppress unused variable warning
+ self.module_eval(<<-code, __FILE__, __LINE__)
+ @ffi_gsvars = {} unless defined?(@ffi_gsvars)
+ @ffi_gsvars[#{mname.inspect}] = s
+ def self.#{mname}
+ @ffi_gsvars[#{mname.inspect}]
+ end
+ code
+
+ else
+ sc = Class.new(FFI::Struct)
+ sc.layout :gvar, find_type(type)
+ s = sc.new(address)
+ #
+ # Attach to this module as mname/mname=
+ #
+ self.module_eval(<<-code, __FILE__, __LINE__)
+ @ffi_gvars = {} unless defined?(@ffi_gvars)
+ @ffi_gvars[#{mname.inspect}] = s
+ def self.#{mname}
+ @ffi_gvars[#{mname.inspect}][:gvar]
+ end
+ def self.#{mname}=(value)
+ @ffi_gvars[#{mname.inspect}][:gvar] = value
+ end
+ code
+
+ end
+
+ address
+ end
+
+
+ # @overload callback(name, params, ret)
+ # @param name callback name to add to type map
+ # @param [Array] params array of parameters' types
+ # @param [DataConverter, Struct, Symbol, Type] ret callback return type
+ # @overload callback(params, ret)
+ # @param [Array] params array of parameters' types
+ # @param [DataConverter, Struct, Symbol, Type] ret callback return type
+ # @return [FFI::CallbackInfo]
+ def callback(*args)
+ raise ArgumentError, "wrong number of arguments" if args.length < 2 || args.length > 3
+ name, params, ret = if args.length == 3
+ args
+ else
+ [ nil, args[0], args[1] ]
+ end
+
+ native_params = params.map { |e| find_type(e) }
+ raise ArgumentError, "callbacks cannot have variadic parameters" if native_params.include?(FFI::Type::VARARGS)
+ options = Hash.new
+ options[:convention] = ffi_convention
+ options[:enums] = @ffi_enums if defined?(@ffi_enums)
+ ret_type = find_type(ret)
+ if ret_type == Type::STRING
+ raise TypeError, ":string is not allowed as return type of callbacks"
+ end
+ cb = FFI::CallbackInfo.new(ret_type, native_params, options)
+
+ # Add to the symbol -> type map (unless there was no name)
+ unless name.nil?
+ typedef cb, name
+ end
+
+ cb
+ end
+
+ # Register or get an already registered type definition.
+ #
+ # To register a new type definition, +old+ should be a {FFI::Type}. +add+
+ # is in this case the type definition.
+ #
+ # If +old+ is a {DataConverter}, a {Type::Mapped} is returned.
+ #
+ # If +old+ is +:enum+
+ # * and +add+ is an +Array+, a call to {#enum} is made with +add+ as single parameter;
+ # * in others cases, +info+ is used to create a named enum.
+ #
+ # If +old+ is a key for type map, #typedef get +old+ type definition.
+ #
+ # @param [DataConverter, Symbol, Type] old
+ # @param [Symbol] add
+ # @param [Symbol] info
+ # @return [FFI::Enum, FFI::Type]
+ def typedef(old, add, info=nil)
+ @ffi_typedefs = Hash.new unless defined?(@ffi_typedefs)
+
+ @ffi_typedefs[add] = if old.kind_of?(FFI::Type)
+ old
+
+ elsif @ffi_typedefs.has_key?(old)
+ @ffi_typedefs[old]
+
+ elsif old.is_a?(DataConverter)
+ FFI::Type::Mapped.new(old)
+
+ elsif old == :enum
+ if add.kind_of?(Array)
+ self.enum(add)
+ else
+ self.enum(info, add)
+ end
+
+ else
+ FFI.find_type(old)
+ end
+ end
+
+ # @param [DataConverter, Type, Struct, Symbol] t type to find
+ # @return [Type]
+ # Find a type definition.
+ def find_type(t)
+ if t.kind_of?(Type)
+ t
+
+ elsif defined?(@ffi_typedefs) && @ffi_typedefs.has_key?(t)
+ @ffi_typedefs[t]
+
+ elsif t.is_a?(Class) && t < Struct
+ Type::POINTER
+
+ elsif t.is_a?(DataConverter)
+ # Add a typedef so next time the converter is used, it hits the cache
+ typedef Type::Mapped.new(t), t
+
+ end || FFI.find_type(t)
+ end
+
+ private
+ # Generic enum builder
+ # @param [Class] klass can be one of FFI::Enum or FFI::Bitmask
+ # @param args (see #enum or #bitmask)
+ def generic_enum(klass, *args)
+ native_type = args.first.kind_of?(FFI::Type) ? args.shift : nil
+ name, values = if args[0].kind_of?(Symbol) && args[1].kind_of?(Array)
+ [ args[0], args[1] ]
+ elsif args[0].kind_of?(Array)
+ [ nil, args[0] ]
+ else
+ [ nil, args ]
+ end
+ @ffi_enums = FFI::Enums.new unless defined?(@ffi_enums)
+ @ffi_enums << (e = native_type ? klass.new(native_type, values, name) : klass.new(values, name))
+
+ # If called with a name, add a typedef alias
+ typedef(e, name) if name
+ e
+ end
+
+ public
+ # @overload enum(name, values)
+ # Create a named enum.
+ # @example
+ # enum :foo, [:zero, :one, :two] # named enum
+ # @param [Symbol] name name for new enum
+ # @param [Array] values values for enum
+ # @overload enum(*args)
+ # Create an unnamed enum.
+ # @example
+ # enum :zero, :one, :two # unnamed enum
+ # @param args values for enum
+ # @overload enum(values)
+ # Create an unnamed enum.
+ # @example
+ # enum [:zero, :one, :two] # unnamed enum, equivalent to above example
+ # @param [Array] values values for enum
+ # @overload enum(native_type, name, values)
+ # Create a named enum and specify the native type.
+ # @example
+ # enum FFI::Type::UINT64, :foo, [:zero, :one, :two] # named enum
+ # @param [FFI::Type] native_type native type for new enum
+ # @param [Symbol] name name for new enum
+ # @param [Array] values values for enum
+ # @overload enum(native_type, *args)
+ # Create an unnamed enum and specify the native type.
+ # @example
+ # enum FFI::Type::UINT64, :zero, :one, :two # unnamed enum
+ # @param [FFI::Type] native_type native type for new enum
+ # @param args values for enum
+ # @overload enum(native_type, values)
+ # Create an unnamed enum and specify the native type.
+ # @example
+ # enum Type::UINT64, [:zero, :one, :two] # unnamed enum, equivalent to above example
+ # @param [FFI::Type] native_type native type for new enum
+ # @param [Array] values values for enum
+ # @return [FFI::Enum]
+ # Create a new {FFI::Enum}.
+ def enum(*args)
+ generic_enum(FFI::Enum, *args)
+ end
+
+ # @overload bitmask(name, values)
+ # Create a named bitmask
+ # @example
+ # bitmask :foo, [:red, :green, :blue] # bits 0,1,2 are used
+ # bitmask :foo, [:red, :green, 5, :blue] # bits 0,5,6 are used
+ # @param [Symbol] name for new bitmask
+ # @param [Array<Symbol, Integer>] values for new bitmask
+ # @overload bitmask(*args)
+ # Create an unamed bitmask
+ # @example
+ # bm = bitmask :red, :green, :blue # bits 0,1,2 are used
+ # bm = bitmask :red, :green, 5, blue # bits 0,5,6 are used
+ # @param [Symbol, Integer] args values for new bitmask
+ # @overload bitmask(values)
+ # Create an unamed bitmask
+ # @example
+ # bm = bitmask [:red, :green, :blue] # bits 0,1,2 are used
+ # bm = bitmask [:red, :green, 5, blue] # bits 0,5,6 are used
+ # @param [Array<Symbol, Integer>] values for new bitmask
+ # @overload bitmask(native_type, name, values)
+ # Create a named enum and specify the native type.
+ # @example
+ # bitmask FFI::Type::UINT64, :foo, [:red, :green, :blue]
+ # @param [FFI::Type] native_type native type for new bitmask
+ # @param [Symbol] name for new bitmask
+ # @param [Array<Symbol, Integer>] values for new bitmask
+ # @overload bitmask(native_type, *args)
+ # @example
+ # bitmask FFI::Type::UINT64, :red, :green, :blue
+ # @param [FFI::Type] native_type native type for new bitmask
+ # @param [Symbol, Integer] args values for new bitmask
+ # @overload bitmask(native_type, values)
+ # Create a named enum and specify the native type.
+ # @example
+ # bitmask FFI::Type::UINT64, [:red, :green, :blue]
+ # @param [FFI::Type] native_type native type for new bitmask
+ # @param [Array<Symbol, Integer>] values for new bitmask
+ # @return [FFI::Bitmask]
+ # Create a new FFI::Bitmask
+ def bitmask(*args)
+ generic_enum(FFI::Bitmask, *args)
+ end
+
+ # @param name
+ # @return [FFI::Enum]
+ # Find an enum by name.
+ def enum_type(name)
+ @ffi_enums.find(name) if defined?(@ffi_enums)
+ end
+
+ # @param symbol
+ # @return [FFI::Enum]
+ # Find an enum by a symbol it contains.
+ def enum_value(symbol)
+ @ffi_enums.__map_symbol(symbol)
+ end
+
+ # Retrieve all attached functions and their function signature
+ #
+ # This method returns a Hash of method names of attached functions connected by #attach_function and the corresponding function type.
+ # The function type responds to #return_type and #param_types which return the FFI types of the function signature.
+ #
+ # @return [Hash< Symbol => [FFI::Function, FFI::VariadicInvoker] >]
+ def attached_functions
+ @ffi_functions || {}
+ end
+
+ # Retrieve all attached variables and their type
+ #
+ # This method returns a Hash of variable names and the corresponding type or variables connected by #attach_variable .
+ #
+ # @return [Hash< Symbol => ffi_type >]
+ def attached_variables
+ (
+ (defined?(@ffi_gsvars) ? @ffi_gsvars : {}).map do |name, gvar|
+ [name, gvar.class]
+ end +
+ (defined?(@ffi_gvars) ? @ffi_gvars : {}).map do |name, gvar|
+ [name, gvar.layout[:gvar].type]
+ end
+ ).to_h
+ end
+
+ # Freeze all definitions of the module
+ #
+ # This freezes the module's definitions, so that it can be used in a Ractor.
+ # No further functions or variables can be attached and no further enums or typedefs can be created in this module afterwards.
+ def freeze
+ # @ffi_function_procs is only used on aarch64-mingw-ucrt
+ instance_variable_get("@ffi_function_procs")&.each do |name, func|
+ # Redefine attached functions as Ractor-shareable.
+ # The function Proc can't be shareable from the beginning, since it references enums and typedefs.
+ this = FFI.make_shareable(func)
+ body = FFI.shareable_proc(self: nil) do |*args, &block|
+ this.call(*args, &block)
+ end
+ undef_method(name)
+ singleton_class.undef_method(name)
+
+ define_method(name, body)
+ define_singleton_method(name, body)
+ end
+
+ instance_variables.each do |name|
+ var = instance_variable_get(name)
+ FFI.make_shareable(var)
+ end
+ super
+ nil
+ end
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/library_path.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/library_path.rb
new file mode 100644
index 0000000..5575a5f
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/library_path.rb
@@ -0,0 +1,109 @@
+#
+# Copyright (C) 2023 Lars Kanis
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
+
+module FFI
+ # Transform a generic library name and ABI number to a platform library name
+ #
+ # Example:
+ # module LibVips
+ # extend FFI::Library
+ # ffi_lib LibraryPath.new("vips", abi_number: 42)
+ # end
+ #
+ # This translates to the following library file names:
+ # libvips-42.dll on Windows
+ # libvips.so.42 on Linux
+ # libvips.42.dylib on Macos
+ #
+ # See https://packaging.ubuntu.com/html/libraries.html for more information about library naming.
+ class LibraryPath
+ attr_reader :name
+ attr_reader :abi_number
+ attr_reader :root
+
+ # Build a new library path
+ #
+ # * <tt>name</tt> : The name of the library without file prefix or suffix.
+ # * <tt>abi_number</tt> : The ABI number of the library.
+ # * <tt>root</tt> : An optional base path prepended to the library name.
+ def initialize(name, abi_number: nil, root: nil)
+ @name = name
+ @abi_number = abi_number
+ @root = root
+ end
+
+ def self.wrap(value)
+ # We allow instances of LibraryPath to pass through transparently:
+ return value if value.is_a?(self)
+
+ # We special case a library named 'c' to be the standard C library:
+ return Library::LIBC if value == 'c'
+
+ # If provided a relative file name we convert it into a library path:
+ if value && File.basename(value) == value
+ return self.new(value)
+ end
+
+ # Otherwise, we assume it's a full path to a library:
+ return value
+ end
+
+ def full_name
+ # If the abi_number is given, we format it specifically according to platform rules:
+ if abi_number
+ if Platform.windows?
+ "#{Platform::LIBPREFIX}#{name}-#{abi_number}.#{Platform::LIBSUFFIX}"
+ elsif Platform.mac?
+ "#{Platform::LIBPREFIX}#{name}.#{abi_number}.#{Platform::LIBSUFFIX}"
+ else # Linux? BSD? etc.
+ "#{Platform::LIBPREFIX}#{name}.#{Platform::LIBSUFFIX}.#{abi_number}"
+ end
+ else
+ # Otherwise we just add prefix and suffix:
+ lib = name
+ # Add library prefix if missing
+ lib = Platform::LIBPREFIX + lib unless lib =~ /^#{Platform::LIBPREFIX}/
+ # Add library extension if missing
+ r = Platform.windows? || Platform.mac? ? "\\.#{Platform::LIBSUFFIX}$" : "\\.so($|\\.[1234567890]+)"
+ lib += ".#{Platform::LIBSUFFIX}" unless lib =~ /#{r}/
+ lib
+ end
+ end
+
+ def to_s
+ if root
+ # If the root path is given, we generate the full path:
+ File.join(root, full_name)
+ else
+ full_name
+ end
+ end
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/managedstruct.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/managedstruct.rb
new file mode 100644
index 0000000..5d243e5
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/managedstruct.rb
@@ -0,0 +1,84 @@
+# Copyright (C) 2008 Mike Dalessio
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+module FFI
+ #
+ # FFI::ManagedStruct allows custom garbage-collection of your FFI::Structs.
+ #
+ # The typical use case would be when interacting with a library
+ # that has a nontrivial memory management design, such as a linked
+ # list or a binary tree.
+ #
+ # When the {Struct} instance is garbage collected, FFI::ManagedStruct will
+ # invoke the class's release() method during object finalization.
+ #
+ # @example Example usage:
+ # module MyLibrary
+ # ffi_lib "libmylibrary"
+ # attach_function :new_dlist, [], :pointer
+ # attach_function :destroy_dlist, [:pointer], :void
+ # end
+ #
+ # class DoublyLinkedList < FFI::ManagedStruct
+ # @@@
+ # struct do |s|
+ # s.name 'struct dlist'
+ # s.include 'dlist.h'
+ # s.field :head, :pointer
+ # s.field :tail, :pointer
+ # end
+ # @@@
+ #
+ # def self.release ptr
+ # MyLibrary.destroy_dlist(ptr)
+ # end
+ # end
+ #
+ # begin
+ # ptr = DoublyLinkedList.new(MyLibrary.new_dlist)
+ # # do something with the list
+ # end
+ # # struct is out of scope, and will be GC'd using DoublyLinkedList#release
+ #
+ #
+ class ManagedStruct < FFI::Struct
+
+ # @overload initialize(pointer)
+ # @param [Pointer] pointer
+ # Create a new ManagedStruct which will invoke the class method #release on
+ # @overload initialize
+ # A new instance of FFI::ManagedStruct.
+ def initialize(pointer=nil)
+ raise NoMethodError, "release() not implemented for class #{self}" unless self.class.respond_to?(:release, true)
+ raise ArgumentError, "Must supply a pointer to memory for the Struct" unless pointer
+ super AutoPointer.new(pointer, self.class.method(:release))
+ end
+
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/memorypointer.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/memorypointer.rb
new file mode 100644
index 0000000..9f07bc6
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/memorypointer.rb
@@ -0,0 +1 @@
+# This class is now implemented in C
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform.rb
new file mode 100644
index 0000000..5ac4dd7
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform.rb
@@ -0,0 +1,187 @@
+#
+# Copyright (C) 2008, 2009 Wayne Meissner
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
+
+require 'rbconfig'
+require_relative 'compat'
+
+module FFI
+ class PlatformError < LoadError; end
+
+ # This module defines different constants and class methods to play with
+ # various platforms.
+ module Platform
+ OS = FFI.make_shareable(case RbConfig::CONFIG['host_os'].downcase
+ when /linux/
+ "linux"
+ when /darwin/
+ "darwin"
+ when /freebsd/
+ "freebsd"
+ when /netbsd/
+ "netbsd"
+ when /openbsd/
+ "openbsd"
+ when /dragonfly/
+ "dragonflybsd"
+ when /sunos|solaris/
+ "solaris"
+ when /mingw|mswin/
+ "windows"
+ else
+ RbConfig::CONFIG['host_os'].downcase
+ end)
+
+ OSVERSION = RbConfig::CONFIG['host_os'].gsub(/[^\d]/, '').to_i
+
+ CPU = FFI.make_shareable(RbConfig::CONFIG['host_cpu'])
+
+ ARCH = FFI.make_shareable(case CPU.downcase
+ when /amd64|x86_64|x64/
+ "x86_64"
+ when /i\d86|x86|i86pc/
+ "i386"
+ when /ppc64|powerpc64/
+ "powerpc64"
+ when /ppc|powerpc/
+ "powerpc"
+ when /sparcv9|sparc64/
+ "sparcv9"
+ when /arm64|aarch64/ # MacOS calls it "arm64", other operating systems "aarch64"
+ "aarch64"
+ when /^arm/
+ if OS == "darwin" # Ruby before 3.0 reports "arm" instead of "arm64" as host_cpu on darwin
+ "aarch64"
+ else
+ "arm"
+ end
+ else
+ RbConfig::CONFIG['host_cpu']
+ end)
+
+ private
+ # @param [String) os
+ # @return [Boolean]
+ # Test if current OS is +os+.
+ def self.is_os(os)
+ OS == os
+ end
+
+ IS_GNU = defined?(GNU_LIBC)
+ IS_LINUX = is_os("linux")
+ IS_MAC = is_os("darwin")
+ IS_FREEBSD = is_os("freebsd")
+ IS_NETBSD = is_os("netbsd")
+ IS_OPENBSD = is_os("openbsd")
+ IS_DRAGONFLYBSD = is_os("dragonfly")
+ IS_SOLARIS = is_os("solaris")
+ IS_WINDOWS = is_os("windows")
+ IS_BSD = IS_MAC || IS_FREEBSD || IS_NETBSD || IS_OPENBSD || IS_DRAGONFLYBSD
+
+ # Add the version for known ABI breaks
+ name_version = "12" if IS_FREEBSD && OSVERSION >= 12 # 64-bit inodes
+
+ NAME = FFI.make_shareable("#{ARCH}-#{OS}#{name_version}")
+ CONF_DIR = FFI.make_shareable(File.join(File.dirname(__FILE__), 'platform', NAME))
+
+ public
+
+ LIBPREFIX = FFI.make_shareable(case OS
+ when /windows|msys/
+ ''
+ when /cygwin/
+ 'cyg'
+ else
+ 'lib'
+ end)
+
+ LIBSUFFIX = FFI.make_shareable(case OS
+ when /darwin/
+ 'dylib'
+ when /linux|bsd|solaris/
+ 'so'
+ when /windows|cygwin|msys/
+ 'dll'
+ else
+ # Punt and just assume a sane unix (i.e. anything but AIX)
+ 'so'
+ end)
+
+ LIBC = FFI.make_shareable(if IS_WINDOWS
+ crtname = RbConfig::CONFIG["RUBY_SO_NAME"][/msvc\w+/] || 'ucrtbase'
+ "#{crtname}.dll"
+ elsif IS_GNU
+ GNU_LIBC
+ elsif OS == 'cygwin'
+ "cygwin1.dll"
+ elsif OS == 'msys'
+ # Not sure how msys 1.0 behaves, tested on MSYS2.
+ "msys-2.0.dll"
+ else
+ "#{LIBPREFIX}c.#{LIBSUFFIX}"
+ end)
+
+ LITTLE_ENDIAN = 1234 unless defined?(LITTLE_ENDIAN)
+ BIG_ENDIAN = 4321 unless defined?(BIG_ENDIAN)
+ unless defined?(BYTE_ORDER)
+ BYTE_ORDER = [0x12345678].pack("I") == [0x12345678].pack("N") ? BIG_ENDIAN : LITTLE_ENDIAN
+ end
+
+ # Test if current OS is a *BSD (include MAC)
+ # @return [Boolean]
+ def self.bsd?
+ IS_BSD
+ end
+
+ # Test if current OS is Windows
+ # @return [Boolean]
+ def self.windows?
+ IS_WINDOWS
+ end
+
+ # Test if current OS is Mac OS
+ # @return [Boolean]
+ def self.mac?
+ IS_MAC
+ end
+
+ # Test if current OS is Solaris (Sun OS)
+ # @return [Boolean]
+ def self.solaris?
+ IS_SOLARIS
+ end
+
+ # Test if current OS is a unix OS
+ # @return [Boolean]
+ def self.unix?
+ !IS_WINDOWS
+ end
+ end
+end
+
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-darwin/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-darwin/types.conf
new file mode 100644
index 0000000..68841bb
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-darwin/types.conf
@@ -0,0 +1,130 @@
+rbx.platform.typedef.__darwin_blkcnt_t = long_long
+rbx.platform.typedef.__darwin_blksize_t = int
+rbx.platform.typedef.__darwin_clock_t = ulong
+rbx.platform.typedef.__darwin_ct_rune_t = int
+rbx.platform.typedef.__darwin_dev_t = int
+rbx.platform.typedef.__darwin_fsblkcnt_t = uint
+rbx.platform.typedef.__darwin_fsfilcnt_t = uint
+rbx.platform.typedef.__darwin_gid_t = uint
+rbx.platform.typedef.__darwin_id_t = uint
+rbx.platform.typedef.__darwin_ino64_t = ulong_long
+rbx.platform.typedef.__darwin_ino_t = ulong_long
+rbx.platform.typedef.__darwin_intptr_t = long
+rbx.platform.typedef.__darwin_mach_port_name_t = uint
+rbx.platform.typedef.__darwin_mach_port_t = uint
+rbx.platform.typedef.__darwin_mode_t = ushort
+rbx.platform.typedef.__darwin_natural_t = uint
+rbx.platform.typedef.__darwin_off_t = long_long
+rbx.platform.typedef.__darwin_pid_t = int
+rbx.platform.typedef.__darwin_pthread_key_t = ulong
+rbx.platform.typedef.__darwin_ptrdiff_t = long
+rbx.platform.typedef.__darwin_rune_t = int
+rbx.platform.typedef.__darwin_sigset_t = uint
+rbx.platform.typedef.__darwin_size_t = ulong
+rbx.platform.typedef.__darwin_socklen_t = uint
+rbx.platform.typedef.__darwin_ssize_t = long
+rbx.platform.typedef.__darwin_suseconds_t = int
+rbx.platform.typedef.__darwin_time_t = long
+rbx.platform.typedef.__darwin_uid_t = uint
+rbx.platform.typedef.__darwin_useconds_t = uint
+rbx.platform.typedef.__darwin_uuid_string_t[37] = char
+rbx.platform.typedef.__darwin_uuid_t[16] = uchar
+rbx.platform.typedef.__darwin_wchar_t = int
+rbx.platform.typedef.__darwin_wint_t = int
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = ulong
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = int
+rbx.platform.typedef.errno_t = int
+rbx.platform.typedef.fd_mask = int
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.fsblkcnt_t = uint
+rbx.platform.typedef.fsfilcnt_t = uint
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino64_t = ulong_long
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = short
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long_long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long_long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.mode_t = ushort
+rbx.platform.typedef.nlink_t = ushort
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = ulong
+rbx.platform.typedef.ptrdiff_t = long
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long_long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.rsize_t = ulong
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.sae_associd_t = uint
+rbx.platform.typedef.sae_connid_t = uint
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = int
+rbx.platform.typedef.swblk_t = int
+rbx.platform.typedef.syscall_arg_t = ulong_long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = ushort
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong_long
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong_long
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.user_addr_t = ulong_long
+rbx.platform.typedef.user_long_t = long_long
+rbx.platform.typedef.user_off_t = long_long
+rbx.platform.typedef.user_size_t = ulong_long
+rbx.platform.typedef.user_ssize_t = long_long
+rbx.platform.typedef.user_time_t = long_long
+rbx.platform.typedef.user_ulong_t = ulong_long
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.wchar_t = int
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-freebsd/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-freebsd/types.conf
new file mode 100644
index 0000000..8d111e0
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-freebsd/types.conf
@@ -0,0 +1,128 @@
+rbx.platform.typedef.__clock_t = int
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__cpuid_t = ulong
+rbx.platform.typedef.__dev_t = int
+rbx.platform.typedef.__fd_mask = int
+rbx.platform.typedef.__fixpt_t = uint
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__in_addr_t = uint
+rbx.platform.typedef.__in_port_t = ushort
+rbx.platform.typedef.__ino_t = uint
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_fast16_t = int
+rbx.platform.typedef.__int_fast32_t = int
+rbx.platform.typedef.__int_fast64_t = long_long
+rbx.platform.typedef.__int_fast8_t = int
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long_long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intmax_t = long_long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off_t = long_long
+rbx.platform.typedef.__paddr_t = ulong
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__psize_t = ulong
+rbx.platform.typedef.__ptrdiff_t = long
+rbx.platform.typedef.__register_t = long_long
+rbx.platform.typedef.__rlim_t = ulong_long
+rbx.platform.typedef.__rune_t = int
+rbx.platform.typedef.__sa_family_t = uchar
+rbx.platform.typedef.__segsz_t = int
+rbx.platform.typedef.__size_t = ulong
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__swblk_t = int
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = int
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_fast16_t = uint
+rbx.platform.typedef.__uint_fast32_t = uint
+rbx.platform.typedef.__uint_fast64_t = ulong_long
+rbx.platform.typedef.__uint_fast8_t = uint
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong_long
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong_long
+rbx.platform.typedef.__uintptr_t = ulong
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.__vaddr_t = ulong
+rbx.platform.typedef.__vsize_t = ulong
+rbx.platform.typedef.__wchar_t = int
+rbx.platform.typedef.__wctrans_t = pointer
+rbx.platform.typedef.__wctype_t = pointer
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = int
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cpuid_t = ulong
+rbx.platform.typedef.daddr32_t = int
+rbx.platform.typedef.daddr64_t = long_long
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = int
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = uint
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.paddr_t = ulong
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.psize_t = ulong
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long_long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = int
+rbx.platform.typedef.swblk_t = int
+rbx.platform.typedef.time_t = int
+rbx.platform.typedef.timer_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.unchar = uchar
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.vaddr_t = ulong
+rbx.platform.typedef.vsize_t = ulong
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-freebsd12/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-freebsd12/types.conf
new file mode 100644
index 0000000..3ccb8f6
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-freebsd12/types.conf
@@ -0,0 +1,181 @@
+rbx.platform.typedef.*) = pointer
+rbx.platform.typedef.___wchar_t = uint
+rbx.platform.typedef.__accmode_t = int
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = int
+rbx.platform.typedef.__char16_t = ushort
+rbx.platform.typedef.__char32_t = uint
+rbx.platform.typedef.__clock_t = int
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__cpulevel_t = int
+rbx.platform.typedef.__cpusetid_t = int
+rbx.platform.typedef.__cpuwhich_t = int
+rbx.platform.typedef.__critical_t = long
+rbx.platform.typedef.__ct_rune_t = int
+rbx.platform.typedef.__daddr_t = long
+rbx.platform.typedef.__dev_t = ulong
+rbx.platform.typedef.__fd_mask = ulong
+rbx.platform.typedef.__fflags_t = uint
+rbx.platform.typedef.__fixpt_t = uint
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = long
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_fast16_t = int
+rbx.platform.typedef.__int_fast32_t = int
+rbx.platform.typedef.__int_fast64_t = long
+rbx.platform.typedef.__int_fast8_t = int
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intfptr_t = long
+rbx.platform.typedef.__intmax_t = long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = long
+rbx.platform.typedef.__lwpid_t = int
+rbx.platform.typedef.__mode_t = ushort
+rbx.platform.typedef.__nl_item = int
+rbx.platform.typedef.__nlink_t = ulong
+rbx.platform.typedef.__off64_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__ptrdiff_t = long
+rbx.platform.typedef.__register_t = long
+rbx.platform.typedef.__rlim_t = long
+rbx.platform.typedef.__rman_res_t = ulong
+rbx.platform.typedef.__rune_t = int
+rbx.platform.typedef.__sa_family_t = uchar
+rbx.platform.typedef.__segsz_t = long
+rbx.platform.typedef.__size_t = ulong
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__u_register_t = ulong
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_fast16_t = uint
+rbx.platform.typedef.__uint_fast32_t = uint
+rbx.platform.typedef.__uint_fast64_t = ulong
+rbx.platform.typedef.__uint_fast8_t = uint
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintfptr_t = ulong
+rbx.platform.typedef.__uintmax_t = ulong
+rbx.platform.typedef.__uintptr_t = ulong
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.__vm_offset_t = ulong
+rbx.platform.typedef.__vm_paddr_t = ulong
+rbx.platform.typedef.__vm_size_t = ulong
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.accmode_t = int
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.c_caddr_t = pointer
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.cap_ioctl_t = ulong
+rbx.platform.typedef.clock_t = int
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cpulevel_t = int
+rbx.platform.typedef.cpusetid_t = int
+rbx.platform.typedef.cpuwhich_t = int
+rbx.platform.typedef.critical_t = long
+rbx.platform.typedef.daddr_t = long
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.fd_mask = ulong
+rbx.platform.typedef.fflags_t = uint
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = long
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = int
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long
+rbx.platform.typedef.int_fast8_t = int
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = long
+rbx.platform.typedef.kpaddr_t = ulong
+rbx.platform.typedef.ksize_t = ulong
+rbx.platform.typedef.kssize_t = long
+rbx.platform.typedef.kvaddr_t = ulong
+rbx.platform.typedef.lwpid_t = int
+rbx.platform.typedef.mode_t = ushort
+rbx.platform.typedef.nlink_t = ulong
+rbx.platform.typedef.off64_t = long
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = int
+rbx.platform.typedef.ptrdiff_t = long
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = long
+rbx.platform.typedef.rman_res_t = ulong
+rbx.platform.typedef.rsize_t = ulong
+rbx.platform.typedef.rune_t = int
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.sbintime_t = long
+rbx.platform.typedef.segsz_t = long
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_register_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = uint
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong
+rbx.platform.typedef.uint_fast8_t = uint
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.vm_offset_t = ulong
+rbx.platform.typedef.vm_ooffset_t = ulong
+rbx.platform.typedef.vm_paddr_t = ulong
+rbx.platform.typedef.vm_pindex_t = ulong
+rbx.platform.typedef.vm_size_t = ulong
+rbx.platform.typedef.wchar_t = uint
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-linux/types.conf
new file mode 100644
index 0000000..c56206e
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-linux/types.conf
@@ -0,0 +1,175 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.__blkcnt64_t = long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = int
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__fsword_t = long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intmax_t = long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__kernel_caddr_t = string
+rbx.platform.typedef.__kernel_clock_t = long
+rbx.platform.typedef.__kernel_clockid_t = int
+rbx.platform.typedef.__kernel_daddr_t = int
+rbx.platform.typedef.__kernel_gid16_t = ushort
+rbx.platform.typedef.__kernel_gid32_t = uint
+rbx.platform.typedef.__kernel_gid_t = uint
+rbx.platform.typedef.__kernel_ino_t = ulong
+rbx.platform.typedef.__kernel_ipc_pid_t = int
+rbx.platform.typedef.__kernel_key_t = int
+rbx.platform.typedef.__kernel_loff_t = long_long
+rbx.platform.typedef.__kernel_long_t = long
+rbx.platform.typedef.__kernel_mode_t = uint
+rbx.platform.typedef.__kernel_mqd_t = int
+rbx.platform.typedef.__kernel_off_t = long
+rbx.platform.typedef.__kernel_old_dev_t = uint
+rbx.platform.typedef.__kernel_old_gid_t = ushort
+rbx.platform.typedef.__kernel_old_time_t = long
+rbx.platform.typedef.__kernel_old_uid_t = ushort
+rbx.platform.typedef.__kernel_pid_t = int
+rbx.platform.typedef.__kernel_ptrdiff_t = long
+rbx.platform.typedef.__kernel_size_t = ulong
+rbx.platform.typedef.__kernel_ssize_t = long
+rbx.platform.typedef.__kernel_suseconds_t = long
+rbx.platform.typedef.__kernel_time64_t = long_long
+rbx.platform.typedef.__kernel_time_t = long
+rbx.platform.typedef.__kernel_timer_t = int
+rbx.platform.typedef.__kernel_uid16_t = ushort
+rbx.platform.typedef.__kernel_uid32_t = uint
+rbx.platform.typedef.__kernel_uid_t = uint
+rbx.platform.typedef.__kernel_ulong_t = ulong
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long
+rbx.platform.typedef.__rlim64_t = ulong
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds64_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__syscall_slong_t = long
+rbx.platform.typedef.__syscall_ulong_t = ulong
+rbx.platform.typedef.__thrd_t = ulong
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__tss_t = uint
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = long
+rbx.platform.typedef.int_fast32_t = long
+rbx.platform.typedef.int_fast64_t = long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.ptrdiff_t = long
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = ulong
+rbx.platform.typedef.uint_fast32_t = ulong
+rbx.platform.typedef.uint_fast64_t = ulong
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.wchar_t = uint
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-openbsd/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-openbsd/types.conf
new file mode 100644
index 0000000..6abc9c0
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-openbsd/types.conf
@@ -0,0 +1,134 @@
+rbx.platform.typedef.__blkcnt_t = long_long
+rbx.platform.typedef.__blksize_t = int
+rbx.platform.typedef.__clock_t = long_long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__cpuid_t = ulong
+rbx.platform.typedef.__dev_t = int
+rbx.platform.typedef.__fd_mask = uint
+rbx.platform.typedef.__fixpt_t = uint
+rbx.platform.typedef.__fsblkcnt_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong_long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__in_addr_t = uint
+rbx.platform.typedef.__in_port_t = ushort
+rbx.platform.typedef.__ino_t = ulong_long
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_fast16_t = int
+rbx.platform.typedef.__int_fast32_t = int
+rbx.platform.typedef.__int_fast64_t = long_long
+rbx.platform.typedef.__int_fast8_t = int
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long_long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intmax_t = long_long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off_t = long_long
+rbx.platform.typedef.__paddr_t = ulong
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__psize_t = ulong
+rbx.platform.typedef.__ptrdiff_t = long
+rbx.platform.typedef.__register_t = long
+rbx.platform.typedef.__rlim_t = ulong_long
+rbx.platform.typedef.__rune_t = int
+rbx.platform.typedef.__sa_family_t = uchar
+rbx.platform.typedef.__segsz_t = int
+rbx.platform.typedef.__size_t = ulong
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__swblk_t = int
+rbx.platform.typedef.__time_t = long_long
+rbx.platform.typedef.__timer_t = int
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_fast16_t = uint
+rbx.platform.typedef.__uint_fast32_t = uint
+rbx.platform.typedef.__uint_fast64_t = ulong_long
+rbx.platform.typedef.__uint_fast8_t = uint
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong_long
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong_long
+rbx.platform.typedef.__uintptr_t = ulong
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.__vaddr_t = ulong
+rbx.platform.typedef.__vsize_t = ulong
+rbx.platform.typedef.__wchar_t = int
+rbx.platform.typedef.__wctrans_t = pointer
+rbx.platform.typedef.__wctype_t = pointer
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = long_long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cpuid_t = ulong
+rbx.platform.typedef.daddr32_t = int
+rbx.platform.typedef.daddr_t = long_long
+rbx.platform.typedef.dev_t = int
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.paddr_t = ulong
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.psize_t = ulong
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.sigset_t = uint
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.swblk_t = int
+rbx.platform.typedef.time_t = long_long
+rbx.platform.typedef.timer_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.unchar = uchar
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.vaddr_t = ulong
+rbx.platform.typedef.vsize_t = ulong
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-windows/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-windows/types.conf
new file mode 100644
index 0000000..5bdbbde
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/aarch64-windows/types.conf
@@ -0,0 +1,52 @@
+rbx.platform.typedef.__time32_t = long
+rbx.platform.typedef.__time64_t = long_long
+rbx.platform.typedef._dev_t = uint
+rbx.platform.typedef._ino_t = ushort
+rbx.platform.typedef._mode_t = ushort
+rbx.platform.typedef._off64_t = long_long
+rbx.platform.typedef._off_t = long
+rbx.platform.typedef._pid_t = long_long
+rbx.platform.typedef._sigset_t = ulong_long
+rbx.platform.typedef.dev_t = uint
+rbx.platform.typedef.errno_t = int
+rbx.platform.typedef.ino_t = ushort
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = short
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long_long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long_long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long_long
+rbx.platform.typedef.intptr_t = long_long
+rbx.platform.typedef.mode_t = ushort
+rbx.platform.typedef.off32_t = long
+rbx.platform.typedef.off64_t = long_long
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = long_long
+rbx.platform.typedef.ptrdiff_t = long_long
+rbx.platform.typedef.rsize_t = ulong_long
+rbx.platform.typedef.size_t = ulong_long
+rbx.platform.typedef.ssize_t = long_long
+rbx.platform.typedef.time_t = long_long
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = ushort
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong_long
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least64_t = ulong_long
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong_long
+rbx.platform.typedef.uintptr_t = ulong_long
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.wchar_t = ushort
+rbx.platform.typedef.wctype_t = ushort
+rbx.platform.typedef.wint_t = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/arm-freebsd/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/arm-freebsd/types.conf
new file mode 100644
index 0000000..cfbb90f
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/arm-freebsd/types.conf
@@ -0,0 +1,152 @@
+
+rbx.platform.typedef.*) = pointer
+rbx.platform.typedef.__accmode_t = int
+rbx.platform.typedef.__blkcnt_t = long_long
+rbx.platform.typedef.__blksize_t = uint
+rbx.platform.typedef.__clock_t = ulong
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__cpulevel_t = int
+rbx.platform.typedef.__cpumask_t = uint
+rbx.platform.typedef.__cpusetid_t = int
+rbx.platform.typedef.__cpuwhich_t = int
+rbx.platform.typedef.__critical_t = int
+rbx.platform.typedef.__ct_rune_t = int
+rbx.platform.typedef.__dev_t = uint
+rbx.platform.typedef.__fd_mask = ulong
+rbx.platform.typedef.__fflags_t = uint
+rbx.platform.typedef.__fixpt_t = uint
+rbx.platform.typedef.__fsblkcnt_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong_long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = long_long
+rbx.platform.typedef.__ino_t = uint
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_fast16_t = int
+rbx.platform.typedef.__int_fast32_t = int
+rbx.platform.typedef.__int_fast64_t = long_long
+rbx.platform.typedef.__int_fast8_t = int
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long_long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intfptr_t = int
+rbx.platform.typedef.__intmax_t = long_long
+rbx.platform.typedef.__intptr_t = int
+rbx.platform.typedef.__key_t = long
+rbx.platform.typedef.__lwpid_t = int
+rbx.platform.typedef.__mode_t = ushort
+rbx.platform.typedef.__nl_item = int
+rbx.platform.typedef.__nlink_t = ushort
+rbx.platform.typedef.__off_t = long_long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__ptrdiff_t = int
+rbx.platform.typedef.__register_t = int
+rbx.platform.typedef.__rlim_t = long_long
+rbx.platform.typedef.__rune_t = int
+rbx.platform.typedef.__sa_family_t = uchar
+rbx.platform.typedef.__segsz_t = int
+rbx.platform.typedef.__size_t = uint
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = int
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__time_t = int
+rbx.platform.typedef.__u_register_t = uint
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_fast16_t = uint
+rbx.platform.typedef.__uint_fast32_t = uint
+rbx.platform.typedef.__uint_fast64_t = ulong_long
+rbx.platform.typedef.__uint_fast8_t = uint
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong_long
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintfptr_t = uint
+rbx.platform.typedef.__uintmax_t = ulong_long
+rbx.platform.typedef.__uintptr_t = uint
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.__vm_offset_t = uint
+rbx.platform.typedef.__vm_ooffset_t = long_long
+rbx.platform.typedef.__vm_paddr_t = uint
+rbx.platform.typedef.__vm_pindex_t = ulong_long
+rbx.platform.typedef.__vm_size_t = uint
+rbx.platform.typedef.__wchar_t = int
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.accmode_t = int
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = uint
+rbx.platform.typedef.c_caddr_t = pointer
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = ulong
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cpulevel_t = int
+rbx.platform.typedef.cpumask_t = uint
+rbx.platform.typedef.cpusetid_t = int
+rbx.platform.typedef.cpuwhich_t = int
+rbx.platform.typedef.critical_t = int
+rbx.platform.typedef.daddr_t = long_long
+rbx.platform.typedef.dev_t = uint
+rbx.platform.typedef.fd_mask = ulong
+rbx.platform.typedef.fflags_t = uint
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = long_long
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = uint
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.intptr_t = int
+rbx.platform.typedef.key_t = long
+rbx.platform.typedef.lwpid_t = int
+rbx.platform.typedef.mode_t = ushort
+rbx.platform.typedef.nlink_t = ushort
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = int
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = int
+rbx.platform.typedef.rlim_t = long_long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_register_t = uint
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uintptr_t = uint
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.vm_offset_t = uint
+rbx.platform.typedef.vm_ooffset_t = long_long
+rbx.platform.typedef.vm_paddr_t = uint
+rbx.platform.typedef.vm_pindex_t = ulong_long
+rbx.platform.typedef.vm_size_t = uint
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/arm-freebsd12/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/arm-freebsd12/types.conf
new file mode 100644
index 0000000..523370d
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/arm-freebsd12/types.conf
@@ -0,0 +1,152 @@
+
+rbx.platform.typedef.*) = pointer
+rbx.platform.typedef.__accmode_t = int
+rbx.platform.typedef.__blkcnt_t = long_long
+rbx.platform.typedef.__blksize_t = uint
+rbx.platform.typedef.__clock_t = ulong
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__cpulevel_t = int
+rbx.platform.typedef.__cpumask_t = uint
+rbx.platform.typedef.__cpusetid_t = int
+rbx.platform.typedef.__cpuwhich_t = int
+rbx.platform.typedef.__critical_t = int
+rbx.platform.typedef.__ct_rune_t = int
+rbx.platform.typedef.__dev_t = ulong_long
+rbx.platform.typedef.__fd_mask = ulong
+rbx.platform.typedef.__fflags_t = uint
+rbx.platform.typedef.__fixpt_t = uint
+rbx.platform.typedef.__fsblkcnt_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong_long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = long_long
+rbx.platform.typedef.__ino_t = ulong_long
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_fast16_t = int
+rbx.platform.typedef.__int_fast32_t = int
+rbx.platform.typedef.__int_fast64_t = long_long
+rbx.platform.typedef.__int_fast8_t = int
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long_long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intfptr_t = int
+rbx.platform.typedef.__intmax_t = long_long
+rbx.platform.typedef.__intptr_t = int
+rbx.platform.typedef.__key_t = long
+rbx.platform.typedef.__lwpid_t = int
+rbx.platform.typedef.__mode_t = ushort
+rbx.platform.typedef.__nl_item = int
+rbx.platform.typedef.__nlink_t = ulong_long
+rbx.platform.typedef.__off_t = long_long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__ptrdiff_t = int
+rbx.platform.typedef.__register_t = int
+rbx.platform.typedef.__rlim_t = long_long
+rbx.platform.typedef.__rune_t = int
+rbx.platform.typedef.__sa_family_t = uchar
+rbx.platform.typedef.__segsz_t = int
+rbx.platform.typedef.__size_t = uint
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = int
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__time_t = int
+rbx.platform.typedef.__u_register_t = uint
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_fast16_t = uint
+rbx.platform.typedef.__uint_fast32_t = uint
+rbx.platform.typedef.__uint_fast64_t = ulong_long
+rbx.platform.typedef.__uint_fast8_t = uint
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong_long
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintfptr_t = uint
+rbx.platform.typedef.__uintmax_t = ulong_long
+rbx.platform.typedef.__uintptr_t = uint
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.__vm_offset_t = uint
+rbx.platform.typedef.__vm_ooffset_t = long_long
+rbx.platform.typedef.__vm_paddr_t = uint
+rbx.platform.typedef.__vm_pindex_t = ulong_long
+rbx.platform.typedef.__vm_size_t = uint
+rbx.platform.typedef.__wchar_t = int
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.accmode_t = int
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = uint
+rbx.platform.typedef.c_caddr_t = pointer
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = ulong
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cpulevel_t = int
+rbx.platform.typedef.cpumask_t = uint
+rbx.platform.typedef.cpusetid_t = int
+rbx.platform.typedef.cpuwhich_t = int
+rbx.platform.typedef.critical_t = int
+rbx.platform.typedef.daddr_t = long_long
+rbx.platform.typedef.dev_t = ulong_long
+rbx.platform.typedef.fd_mask = ulong
+rbx.platform.typedef.fflags_t = uint
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = long_long
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.intptr_t = int
+rbx.platform.typedef.key_t = long
+rbx.platform.typedef.lwpid_t = int
+rbx.platform.typedef.mode_t = ushort
+rbx.platform.typedef.nlink_t = ulong_long
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = int
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = int
+rbx.platform.typedef.rlim_t = long_long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_register_t = uint
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uintptr_t = uint
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.vm_offset_t = uint
+rbx.platform.typedef.vm_ooffset_t = long_long
+rbx.platform.typedef.vm_paddr_t = uint
+rbx.platform.typedef.vm_pindex_t = ulong_long
+rbx.platform.typedef.vm_size_t = uint
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/arm-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/arm-linux/types.conf
new file mode 100644
index 0000000..a070d39
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/arm-linux/types.conf
@@ -0,0 +1,132 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.__blkcnt64_t = long_long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong_long
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong_long
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__fsword_t = int
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong_long
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intmax_t = long_long
+rbx.platform.typedef.__intptr_t = int
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long_long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long_long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long_long
+rbx.platform.typedef.__rlim64_t = ulong_long
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = int
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__syscall_slong_t = long
+rbx.platform.typedef.__syscall_ulong_t = ulong
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong_long
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong_long
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong_long
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = int
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long_long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long_long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long_long
+rbx.platform.typedef.intptr_t = int
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long_long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.ptrdiff_t = int
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = uint
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong_long
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong_long
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong_long
+rbx.platform.typedef.uintptr_t = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.wchar_t = uint
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/hppa1.1-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/hppa1.1-linux/types.conf
new file mode 100644
index 0000000..c8a8141
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/hppa1.1-linux/types.conf
@@ -0,0 +1,178 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.__blkcnt64_t = long_long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong_long
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong_long
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__fsword_t = int
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong_long
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long_long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intmax_t = long_long
+rbx.platform.typedef.__intptr_t = int
+rbx.platform.typedef.__kernel_caddr_t = string
+rbx.platform.typedef.__kernel_clock_t = long
+rbx.platform.typedef.__kernel_clockid_t = int
+rbx.platform.typedef.__kernel_daddr_t = int
+rbx.platform.typedef.__kernel_gid16_t = ushort
+rbx.platform.typedef.__kernel_gid32_t = uint
+rbx.platform.typedef.__kernel_gid_t = uint
+rbx.platform.typedef.__kernel_ino64_t = ulong_long
+rbx.platform.typedef.__kernel_ino_t = ulong
+rbx.platform.typedef.__kernel_ipc_pid_t = ushort
+rbx.platform.typedef.__kernel_key_t = int
+rbx.platform.typedef.__kernel_loff_t = long_long
+rbx.platform.typedef.__kernel_long_t = long
+rbx.platform.typedef.__kernel_mode_t = ushort
+rbx.platform.typedef.__kernel_mqd_t = int
+rbx.platform.typedef.__kernel_off64_t = long_long
+rbx.platform.typedef.__kernel_off_t = long
+rbx.platform.typedef.__kernel_old_dev_t = uint
+rbx.platform.typedef.__kernel_old_gid_t = uint
+rbx.platform.typedef.__kernel_old_time_t = long
+rbx.platform.typedef.__kernel_old_uid_t = uint
+rbx.platform.typedef.__kernel_pid_t = int
+rbx.platform.typedef.__kernel_ptrdiff_t = int
+rbx.platform.typedef.__kernel_size_t = uint
+rbx.platform.typedef.__kernel_ssize_t = int
+rbx.platform.typedef.__kernel_suseconds_t = long
+rbx.platform.typedef.__kernel_time64_t = long_long
+rbx.platform.typedef.__kernel_time_t = long
+rbx.platform.typedef.__kernel_timer_t = int
+rbx.platform.typedef.__kernel_uid16_t = ushort
+rbx.platform.typedef.__kernel_uid32_t = uint
+rbx.platform.typedef.__kernel_uid_t = uint
+rbx.platform.typedef.__kernel_ulong_t = ulong
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long_long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long_long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long_long
+rbx.platform.typedef.__rlim64_t = ulong_long
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = int
+rbx.platform.typedef.__suseconds64_t = long_long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__syscall_slong_t = long
+rbx.platform.typedef.__syscall_ulong_t = ulong
+rbx.platform.typedef.__thrd_t = ulong
+rbx.platform.typedef.__time64_t = long_long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__tss_t = uint
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong_long
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong_long
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong_long
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong_long
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = int
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long_long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long_long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long_long
+rbx.platform.typedef.intptr_t = int
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long_long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.ptrdiff_t = int
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = uint
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong_long
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong_long
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong_long
+rbx.platform.typedef.uintptr_t = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.wchar_t = long
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/hppa2.0-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/hppa2.0-linux/types.conf
new file mode 100644
index 0000000..c8a8141
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/hppa2.0-linux/types.conf
@@ -0,0 +1,178 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.__blkcnt64_t = long_long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong_long
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong_long
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__fsword_t = int
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong_long
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long_long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intmax_t = long_long
+rbx.platform.typedef.__intptr_t = int
+rbx.platform.typedef.__kernel_caddr_t = string
+rbx.platform.typedef.__kernel_clock_t = long
+rbx.platform.typedef.__kernel_clockid_t = int
+rbx.platform.typedef.__kernel_daddr_t = int
+rbx.platform.typedef.__kernel_gid16_t = ushort
+rbx.platform.typedef.__kernel_gid32_t = uint
+rbx.platform.typedef.__kernel_gid_t = uint
+rbx.platform.typedef.__kernel_ino64_t = ulong_long
+rbx.platform.typedef.__kernel_ino_t = ulong
+rbx.platform.typedef.__kernel_ipc_pid_t = ushort
+rbx.platform.typedef.__kernel_key_t = int
+rbx.platform.typedef.__kernel_loff_t = long_long
+rbx.platform.typedef.__kernel_long_t = long
+rbx.platform.typedef.__kernel_mode_t = ushort
+rbx.platform.typedef.__kernel_mqd_t = int
+rbx.platform.typedef.__kernel_off64_t = long_long
+rbx.platform.typedef.__kernel_off_t = long
+rbx.platform.typedef.__kernel_old_dev_t = uint
+rbx.platform.typedef.__kernel_old_gid_t = uint
+rbx.platform.typedef.__kernel_old_time_t = long
+rbx.platform.typedef.__kernel_old_uid_t = uint
+rbx.platform.typedef.__kernel_pid_t = int
+rbx.platform.typedef.__kernel_ptrdiff_t = int
+rbx.platform.typedef.__kernel_size_t = uint
+rbx.platform.typedef.__kernel_ssize_t = int
+rbx.platform.typedef.__kernel_suseconds_t = long
+rbx.platform.typedef.__kernel_time64_t = long_long
+rbx.platform.typedef.__kernel_time_t = long
+rbx.platform.typedef.__kernel_timer_t = int
+rbx.platform.typedef.__kernel_uid16_t = ushort
+rbx.platform.typedef.__kernel_uid32_t = uint
+rbx.platform.typedef.__kernel_uid_t = uint
+rbx.platform.typedef.__kernel_ulong_t = ulong
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long_long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long_long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long_long
+rbx.platform.typedef.__rlim64_t = ulong_long
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = int
+rbx.platform.typedef.__suseconds64_t = long_long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__syscall_slong_t = long
+rbx.platform.typedef.__syscall_ulong_t = ulong
+rbx.platform.typedef.__thrd_t = ulong
+rbx.platform.typedef.__time64_t = long_long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__tss_t = uint
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong_long
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong_long
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong_long
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong_long
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = int
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long_long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long_long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long_long
+rbx.platform.typedef.intptr_t = int
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long_long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.ptrdiff_t = int
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = uint
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong_long
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong_long
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong_long
+rbx.platform.typedef.uintptr_t = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.wchar_t = long
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-cygwin/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-cygwin/types.conf
new file mode 100644
index 0000000..93f6b86
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-cygwin/types.conf
@@ -0,0 +1,3 @@
+rbx.platform.typedef.ptrdiff_t = int
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.ssize_t = int
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-darwin/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-darwin/types.conf
new file mode 100644
index 0000000..ae100f4
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-darwin/types.conf
@@ -0,0 +1,100 @@
+rbx.platform.typedef.__darwin_blkcnt_t = long_long
+rbx.platform.typedef.__darwin_blksize_t = int
+rbx.platform.typedef.__darwin_clock_t = ulong
+rbx.platform.typedef.__darwin_ct_rune_t = int
+rbx.platform.typedef.__darwin_dev_t = int
+rbx.platform.typedef.__darwin_fsblkcnt_t = uint
+rbx.platform.typedef.__darwin_fsfilcnt_t = uint
+rbx.platform.typedef.__darwin_gid_t = uint
+rbx.platform.typedef.__darwin_id_t = uint
+rbx.platform.typedef.__darwin_ino64_t = ulong_long
+rbx.platform.typedef.__darwin_ino_t = ulong_long
+rbx.platform.typedef.__darwin_intptr_t = long
+rbx.platform.typedef.__darwin_mach_port_name_t = uint
+rbx.platform.typedef.__darwin_mach_port_t = uint
+rbx.platform.typedef.__darwin_mode_t = ushort
+rbx.platform.typedef.__darwin_natural_t = uint
+rbx.platform.typedef.__darwin_off_t = long_long
+rbx.platform.typedef.__darwin_pid_t = int
+rbx.platform.typedef.__darwin_pthread_key_t = ulong
+rbx.platform.typedef.__darwin_ptrdiff_t = int
+rbx.platform.typedef.__darwin_rune_t = int
+rbx.platform.typedef.__darwin_sigset_t = uint
+rbx.platform.typedef.__darwin_size_t = ulong
+rbx.platform.typedef.__darwin_socklen_t = uint
+rbx.platform.typedef.__darwin_ssize_t = long
+rbx.platform.typedef.__darwin_suseconds_t = int
+rbx.platform.typedef.__darwin_time_t = long
+rbx.platform.typedef.__darwin_uid_t = uint
+rbx.platform.typedef.__darwin_useconds_t = uint
+rbx.platform.typedef.__darwin_uuid_t[16] = uchar
+rbx.platform.typedef.__darwin_wchar_t = int
+rbx.platform.typedef.__darwin_wint_t = int
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = ulong
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = int
+rbx.platform.typedef.fd_mask = int
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.fsblkcnt_t = uint
+rbx.platform.typedef.fsfilcnt_t = uint
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino64_t = ulong_long
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.mode_t = ushort
+rbx.platform.typedef.nlink_t = ushort
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = ulong
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = int
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = int
+rbx.platform.typedef.swblk_t = int
+rbx.platform.typedef.syscall_arg_t = ulong_long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.user_addr_t = ulong_long
+rbx.platform.typedef.user_long_t = long_long
+rbx.platform.typedef.user_size_t = ulong_long
+rbx.platform.typedef.user_ssize_t = long_long
+rbx.platform.typedef.user_time_t = long_long
+rbx.platform.typedef.user_ulong_t = ulong_long
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-freebsd/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-freebsd/types.conf
new file mode 100644
index 0000000..6c882d4
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-freebsd/types.conf
@@ -0,0 +1,152 @@
+
+rbx.platform.typedef.*) = pointer
+rbx.platform.typedef.__accmode_t = int
+rbx.platform.typedef.__blkcnt_t = long_long
+rbx.platform.typedef.__blksize_t = uint
+rbx.platform.typedef.__clock_t = ulong
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__cpulevel_t = int
+rbx.platform.typedef.__cpumask_t = uint
+rbx.platform.typedef.__cpusetid_t = int
+rbx.platform.typedef.__cpuwhich_t = int
+rbx.platform.typedef.__critical_t = int
+rbx.platform.typedef.__ct_rune_t = int
+rbx.platform.typedef.__dev_t = uint
+rbx.platform.typedef.__fd_mask = ulong
+rbx.platform.typedef.__fflags_t = uint
+rbx.platform.typedef.__fixpt_t = uint
+rbx.platform.typedef.__fsblkcnt_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong_long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = long_long
+rbx.platform.typedef.__ino_t = uint
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_fast16_t = int
+rbx.platform.typedef.__int_fast32_t = int
+rbx.platform.typedef.__int_fast64_t = long_long
+rbx.platform.typedef.__int_fast8_t = int
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long_long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intfptr_t = int
+rbx.platform.typedef.__intmax_t = long_long
+rbx.platform.typedef.__intptr_t = int
+rbx.platform.typedef.__key_t = long
+rbx.platform.typedef.__lwpid_t = int
+rbx.platform.typedef.__mode_t = ushort
+rbx.platform.typedef.__nl_item = int
+rbx.platform.typedef.__nlink_t = ushort
+rbx.platform.typedef.__off_t = long_long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__ptrdiff_t = int
+rbx.platform.typedef.__register_t = int
+rbx.platform.typedef.__rlim_t = long_long
+rbx.platform.typedef.__rune_t = int
+rbx.platform.typedef.__sa_family_t = uchar
+rbx.platform.typedef.__segsz_t = int
+rbx.platform.typedef.__size_t = uint
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = int
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__u_register_t = uint
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_fast16_t = uint
+rbx.platform.typedef.__uint_fast32_t = uint
+rbx.platform.typedef.__uint_fast64_t = ulong_long
+rbx.platform.typedef.__uint_fast8_t = uint
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong_long
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintfptr_t = uint
+rbx.platform.typedef.__uintmax_t = ulong_long
+rbx.platform.typedef.__uintptr_t = uint
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.__vm_offset_t = uint
+rbx.platform.typedef.__vm_ooffset_t = long_long
+rbx.platform.typedef.__vm_paddr_t = uint
+rbx.platform.typedef.__vm_pindex_t = ulong_long
+rbx.platform.typedef.__vm_size_t = uint
+rbx.platform.typedef.__wchar_t = int
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.accmode_t = int
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = uint
+rbx.platform.typedef.c_caddr_t = pointer
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = ulong
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cpulevel_t = int
+rbx.platform.typedef.cpumask_t = uint
+rbx.platform.typedef.cpusetid_t = int
+rbx.platform.typedef.cpuwhich_t = int
+rbx.platform.typedef.critical_t = int
+rbx.platform.typedef.daddr_t = long_long
+rbx.platform.typedef.dev_t = uint
+rbx.platform.typedef.fd_mask = ulong
+rbx.platform.typedef.fflags_t = uint
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = long_long
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = uint
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.intptr_t = int
+rbx.platform.typedef.key_t = long
+rbx.platform.typedef.lwpid_t = int
+rbx.platform.typedef.mode_t = ushort
+rbx.platform.typedef.nlink_t = ushort
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = int
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = int
+rbx.platform.typedef.rlim_t = long_long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_register_t = uint
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uintptr_t = uint
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.vm_offset_t = uint
+rbx.platform.typedef.vm_ooffset_t = long_long
+rbx.platform.typedef.vm_paddr_t = uint
+rbx.platform.typedef.vm_pindex_t = ulong_long
+rbx.platform.typedef.vm_size_t = uint
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-freebsd12/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-freebsd12/types.conf
new file mode 100644
index 0000000..523370d
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-freebsd12/types.conf
@@ -0,0 +1,152 @@
+
+rbx.platform.typedef.*) = pointer
+rbx.platform.typedef.__accmode_t = int
+rbx.platform.typedef.__blkcnt_t = long_long
+rbx.platform.typedef.__blksize_t = uint
+rbx.platform.typedef.__clock_t = ulong
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__cpulevel_t = int
+rbx.platform.typedef.__cpumask_t = uint
+rbx.platform.typedef.__cpusetid_t = int
+rbx.platform.typedef.__cpuwhich_t = int
+rbx.platform.typedef.__critical_t = int
+rbx.platform.typedef.__ct_rune_t = int
+rbx.platform.typedef.__dev_t = ulong_long
+rbx.platform.typedef.__fd_mask = ulong
+rbx.platform.typedef.__fflags_t = uint
+rbx.platform.typedef.__fixpt_t = uint
+rbx.platform.typedef.__fsblkcnt_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong_long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = long_long
+rbx.platform.typedef.__ino_t = ulong_long
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_fast16_t = int
+rbx.platform.typedef.__int_fast32_t = int
+rbx.platform.typedef.__int_fast64_t = long_long
+rbx.platform.typedef.__int_fast8_t = int
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long_long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intfptr_t = int
+rbx.platform.typedef.__intmax_t = long_long
+rbx.platform.typedef.__intptr_t = int
+rbx.platform.typedef.__key_t = long
+rbx.platform.typedef.__lwpid_t = int
+rbx.platform.typedef.__mode_t = ushort
+rbx.platform.typedef.__nl_item = int
+rbx.platform.typedef.__nlink_t = ulong_long
+rbx.platform.typedef.__off_t = long_long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__ptrdiff_t = int
+rbx.platform.typedef.__register_t = int
+rbx.platform.typedef.__rlim_t = long_long
+rbx.platform.typedef.__rune_t = int
+rbx.platform.typedef.__sa_family_t = uchar
+rbx.platform.typedef.__segsz_t = int
+rbx.platform.typedef.__size_t = uint
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = int
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__time_t = int
+rbx.platform.typedef.__u_register_t = uint
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_fast16_t = uint
+rbx.platform.typedef.__uint_fast32_t = uint
+rbx.platform.typedef.__uint_fast64_t = ulong_long
+rbx.platform.typedef.__uint_fast8_t = uint
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong_long
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintfptr_t = uint
+rbx.platform.typedef.__uintmax_t = ulong_long
+rbx.platform.typedef.__uintptr_t = uint
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.__vm_offset_t = uint
+rbx.platform.typedef.__vm_ooffset_t = long_long
+rbx.platform.typedef.__vm_paddr_t = uint
+rbx.platform.typedef.__vm_pindex_t = ulong_long
+rbx.platform.typedef.__vm_size_t = uint
+rbx.platform.typedef.__wchar_t = int
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.accmode_t = int
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = uint
+rbx.platform.typedef.c_caddr_t = pointer
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = ulong
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cpulevel_t = int
+rbx.platform.typedef.cpumask_t = uint
+rbx.platform.typedef.cpusetid_t = int
+rbx.platform.typedef.cpuwhich_t = int
+rbx.platform.typedef.critical_t = int
+rbx.platform.typedef.daddr_t = long_long
+rbx.platform.typedef.dev_t = ulong_long
+rbx.platform.typedef.fd_mask = ulong
+rbx.platform.typedef.fflags_t = uint
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = long_long
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.intptr_t = int
+rbx.platform.typedef.key_t = long
+rbx.platform.typedef.lwpid_t = int
+rbx.platform.typedef.mode_t = ushort
+rbx.platform.typedef.nlink_t = ulong_long
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = int
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = int
+rbx.platform.typedef.rlim_t = long_long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_register_t = uint
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uintptr_t = uint
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.vm_offset_t = uint
+rbx.platform.typedef.vm_ooffset_t = long_long
+rbx.platform.typedef.vm_paddr_t = uint
+rbx.platform.typedef.vm_pindex_t = ulong_long
+rbx.platform.typedef.vm_size_t = uint
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-gnu/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-gnu/types.conf
new file mode 100644
index 0000000..fa2fa8c
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-gnu/types.conf
@@ -0,0 +1,107 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long_long
+rbx.platform.typedef.__blkcnt64_t = long_long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = uint
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong_long
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__fsid_t = ulong_long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong_long
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = int
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long_long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long_long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__pthread_key = int
+rbx.platform.typedef.__pthread_t = int
+rbx.platform.typedef.__quad_t = long_long
+rbx.platform.typedef.__rlim64_t = ulong_long
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__sigset_t = ulong
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = int
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__swblk_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = int
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong_long
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = uint
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.fsid_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long_long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = int
+rbx.platform.typedef.pthread_t = int
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.sigset_t = ulong
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-linux/types.conf
new file mode 100644
index 0000000..feb6bc4
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-linux/types.conf
@@ -0,0 +1,103 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long_long
+rbx.platform.typedef.__blkcnt64_t = long_long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong_long
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong_long
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong_long
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = int
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long_long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long_long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long_long
+rbx.platform.typedef.__rlim64_t = ulong_long
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = int
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__swblk_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong_long
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong_long
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long_long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-netbsd/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-netbsd/types.conf
new file mode 100644
index 0000000..a5aba89
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-netbsd/types.conf
@@ -0,0 +1,126 @@
+rbx.platform.typedef.__clock_t = int
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__cpuid_t = ulong
+rbx.platform.typedef.__dev_t = int
+rbx.platform.typedef.__fd_mask = int
+rbx.platform.typedef.__fixpt_t = uint
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__in_addr_t = uint
+rbx.platform.typedef.__in_port_t = ushort
+rbx.platform.typedef.__ino_t = uint
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_fast16_t = int
+rbx.platform.typedef.__int_fast32_t = int
+rbx.platform.typedef.__int_fast64_t = long_long
+rbx.platform.typedef.__int_fast8_t = int
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long_long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intmax_t = long_long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off_t = long_long
+rbx.platform.typedef.__paddr_t = ulong
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__psize_t = ulong
+rbx.platform.typedef.__ptrdiff_t = long
+rbx.platform.typedef.__register_t = int
+rbx.platform.typedef.__rlim_t = ulong_long
+rbx.platform.typedef.__rune_t = int
+rbx.platform.typedef.__sa_family_t = uchar
+rbx.platform.typedef.__segsz_t = int
+rbx.platform.typedef.__size_t = ulong
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = int
+rbx.platform.typedef.__swblk_t = int
+rbx.platform.typedef.__time_t = int
+rbx.platform.typedef.__timer_t = int
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_fast16_t = uint
+rbx.platform.typedef.__uint_fast32_t = uint
+rbx.platform.typedef.__uint_fast64_t = ulong_long
+rbx.platform.typedef.__uint_fast8_t = uint
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong_long
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong_long
+rbx.platform.typedef.__uintptr_t = ulong
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.__vaddr_t = ulong
+rbx.platform.typedef.__vsize_t = ulong
+rbx.platform.typedef.__wchar_t = int
+rbx.platform.typedef.__wctrans_t = pointer
+rbx.platform.typedef.__wctype_t = pointer
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = int
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cpuid_t = ulong
+rbx.platform.typedef.daddr32_t = int
+rbx.platform.typedef.daddr64_t = long_long
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = int
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = uint
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.paddr_t = ulong
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.psize_t = ulong
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = int
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = int
+rbx.platform.typedef.swblk_t = int
+rbx.platform.typedef.time_t = int
+rbx.platform.typedef.timer_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.unchar = uchar
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.vaddr_t = ulong
+rbx.platform.typedef.vsize_t = ulong
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-openbsd/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-openbsd/types.conf
new file mode 100644
index 0000000..15a0d61
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-openbsd/types.conf
@@ -0,0 +1,128 @@
+rbx.platform.typedef.__clock_t = int
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__cpuid_t = ulong
+rbx.platform.typedef.__dev_t = int
+rbx.platform.typedef.__fd_mask = int
+rbx.platform.typedef.__fixpt_t = uint
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__in_addr_t = uint
+rbx.platform.typedef.__in_port_t = ushort
+rbx.platform.typedef.__ino_t = uint
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_fast16_t = int
+rbx.platform.typedef.__int_fast32_t = int
+rbx.platform.typedef.__int_fast64_t = long_long
+rbx.platform.typedef.__int_fast8_t = int
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long_long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intmax_t = long_long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off_t = long_long
+rbx.platform.typedef.__paddr_t = ulong
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__psize_t = ulong
+rbx.platform.typedef.__ptrdiff_t = long
+rbx.platform.typedef.__register_t = int
+rbx.platform.typedef.__rlim_t = ulong_long
+rbx.platform.typedef.__rune_t = int
+rbx.platform.typedef.__sa_family_t = uchar
+rbx.platform.typedef.__segsz_t = int
+rbx.platform.typedef.__size_t = ulong
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = int
+rbx.platform.typedef.__swblk_t = int
+rbx.platform.typedef.__time_t = int
+rbx.platform.typedef.__timer_t = int
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_fast16_t = uint
+rbx.platform.typedef.__uint_fast32_t = uint
+rbx.platform.typedef.__uint_fast64_t = ulong_long
+rbx.platform.typedef.__uint_fast8_t = uint
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong_long
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong_long
+rbx.platform.typedef.__uintptr_t = ulong
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.__vaddr_t = ulong
+rbx.platform.typedef.__vsize_t = ulong
+rbx.platform.typedef.__wchar_t = int
+rbx.platform.typedef.__wctrans_t = pointer
+rbx.platform.typedef.__wctype_t = pointer
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = int
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cpuid_t = ulong
+rbx.platform.typedef.daddr32_t = int
+rbx.platform.typedef.daddr64_t = long_long
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = int
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = uint
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.paddr_t = ulong
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.psize_t = ulong
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = int
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = int
+rbx.platform.typedef.swblk_t = int
+rbx.platform.typedef.time_t = int
+rbx.platform.typedef.timer_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.unchar = uchar
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.vaddr_t = ulong
+rbx.platform.typedef.vsize_t = ulong
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-solaris/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-solaris/types.conf
new file mode 100644
index 0000000..22a2414
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-solaris/types.conf
@@ -0,0 +1,122 @@
+rbx.platform.typedef.*caddr_t = char
+rbx.platform.typedef.blkcnt64_t = long_long
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cnt_t = short
+rbx.platform.typedef.cpu_flag_t = ushort
+rbx.platform.typedef.ctid_t = long
+rbx.platform.typedef.daddr_t = long
+rbx.platform.typedef.datalink_id_t = uint
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.diskaddr_t = ulong_long
+rbx.platform.typedef.disp_lock_t = uchar
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fds_mask = long
+rbx.platform.typedef.fsblkcnt64_t = ulong_long
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt64_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.hrtime_t = long_long
+rbx.platform.typedef.id_t = long
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.index_t = short
+rbx.platform.typedef.ino64_t = ulong_long
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = int
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long_long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long_long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long_long
+rbx.platform.typedef.intptr_t = int
+rbx.platform.typedef.ipaddr_t = uint
+rbx.platform.typedef.k_fltset_t = uint
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.len_t = ulong_long
+rbx.platform.typedef.lgrp_id_t = long
+rbx.platform.typedef.lock_t = uchar
+rbx.platform.typedef.longlong_t = long_long
+rbx.platform.typedef.major_t = ulong
+rbx.platform.typedef.minor_t = ulong
+rbx.platform.typedef.mode_t = ulong
+rbx.platform.typedef.model_t = uint
+rbx.platform.typedef.nfds_t = ulong
+rbx.platform.typedef.nlink_t = ulong
+rbx.platform.typedef.o_dev_t = short
+rbx.platform.typedef.o_gid_t = ushort
+rbx.platform.typedef.o_ino_t = ushort
+rbx.platform.typedef.o_mode_t = ushort
+rbx.platform.typedef.o_nlink_t = short
+rbx.platform.typedef.o_pid_t = short
+rbx.platform.typedef.o_uid_t = ushort
+rbx.platform.typedef.off64_t = long_long
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.offset_t = long_long
+rbx.platform.typedef.pad64_t = long_long
+rbx.platform.typedef.pfn_t = ulong
+rbx.platform.typedef.pgcnt_t = ulong
+rbx.platform.typedef.pid_t = long
+rbx.platform.typedef.poolid_t = long
+rbx.platform.typedef.pri_t = short
+rbx.platform.typedef.projid_t = long
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_t = uint
+rbx.platform.typedef.ptrdiff_t = int
+rbx.platform.typedef.rlim64_t = ulong_long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.spgcnt_t = long
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.sysid_t = short
+rbx.platform.typedef.t_scalar_t = long
+rbx.platform.typedef.t_uscalar_t = ulong
+rbx.platform.typedef.taskid_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_longlong_t = ulong_long
+rbx.platform.typedef.u_offset_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uchar_t = uchar
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = uint
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong_long
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong_long
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uint_t = uint
+rbx.platform.typedef.uintmax_t = ulong_long
+rbx.platform.typedef.uintptr_t = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ulong_t = ulong
+rbx.platform.typedef.unchar = uchar
+rbx.platform.typedef.upad64_t = ulong_long
+rbx.platform.typedef.use_t = uchar
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.ushort_t = ushort
+rbx.platform.typedef.zoneid_t = long
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-windows/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-windows/types.conf
new file mode 100644
index 0000000..a5d0b05
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/i386-windows/types.conf
@@ -0,0 +1,52 @@
+rbx.platform.typedef.__time32_t = long
+rbx.platform.typedef.__time64_t = long_long
+rbx.platform.typedef._dev_t = uint
+rbx.platform.typedef._ino_t = ushort
+rbx.platform.typedef._mode_t = ushort
+rbx.platform.typedef._off64_t = long_long
+rbx.platform.typedef._off_t = long
+rbx.platform.typedef._pid_t = int
+rbx.platform.typedef._sigset_t = ulong
+rbx.platform.typedef.dev_t = uint
+rbx.platform.typedef.errno_t = int
+rbx.platform.typedef.ino_t = ushort
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = short
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long_long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long_long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long_long
+rbx.platform.typedef.intptr_t = int
+rbx.platform.typedef.mode_t = ushort
+rbx.platform.typedef.off32_t = long
+rbx.platform.typedef.off64_t = long_long
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.ptrdiff_t = int
+rbx.platform.typedef.rsize_t = uint
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = ushort
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong_long
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least64_t = ulong_long
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong_long
+rbx.platform.typedef.uintptr_t = uint
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.wchar_t = ushort
+rbx.platform.typedef.wctype_t = ushort
+rbx.platform.typedef.wint_t = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/ia64-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/ia64-linux/types.conf
new file mode 100644
index 0000000..e0eeecc
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/ia64-linux/types.conf
@@ -0,0 +1,104 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long
+rbx.platform.typedef.__blkcnt64_t = long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__in_addr_t = uint
+rbx.platform.typedef.__in_port_t = ushort
+rbx.platform.typedef.__ino64_t = ulong
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = ulong
+rbx.platform.typedef.__off64_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long
+rbx.platform.typedef.__rlim64_t = ulong
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__swblk_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = ulong
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/loongarch64-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/loongarch64-linux/types.conf
new file mode 100644
index 0000000..aa8716d
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/loongarch64-linux/types.conf
@@ -0,0 +1,141 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.__blkcnt64_t = long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = int
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__fsword_t = long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intmax_t = long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long
+rbx.platform.typedef.__rlim64_t = ulong
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__syscall_slong_t = long
+rbx.platform.typedef.__syscall_ulong_t = ulong
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = long
+rbx.platform.typedef.int_fast32_t = long
+rbx.platform.typedef.int_fast64_t = long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.ptrdiff_t = long
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = ulong
+rbx.platform.typedef.uint_fast32_t = ulong
+rbx.platform.typedef.uint_fast64_t = ulong
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.wchar_t = int
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mips-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mips-linux/types.conf
new file mode 100644
index 0000000..24e8202
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mips-linux/types.conf
@@ -0,0 +1,102 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long_long
+rbx.platform.typedef.__blkcnt64_t = long_long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong_long
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong_long
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong_long
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = int
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long_long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long_long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long_long
+rbx.platform.typedef.__rlim64_t = ulong_long
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = int
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__swblk_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong_long
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong_long
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long_long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mips64-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mips64-linux/types.conf
new file mode 100644
index 0000000..b61f4f7
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mips64-linux/types.conf
@@ -0,0 +1,104 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long
+rbx.platform.typedef.__blkcnt64_t = long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__fsword_t = long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = ulong
+rbx.platform.typedef.__off64_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long
+rbx.platform.typedef.__rlim64_t = ulong
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__syscall_slong_t = long
+rbx.platform.typedef.__syscall_ulong_t = ulong
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = ulong
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mips64el-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mips64el-linux/types.conf
new file mode 100644
index 0000000..b61f4f7
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mips64el-linux/types.conf
@@ -0,0 +1,104 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long
+rbx.platform.typedef.__blkcnt64_t = long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__fsword_t = long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = ulong
+rbx.platform.typedef.__off64_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long
+rbx.platform.typedef.__rlim64_t = ulong
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__syscall_slong_t = long
+rbx.platform.typedef.__syscall_ulong_t = ulong
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = ulong
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsel-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsel-linux/types.conf
new file mode 100644
index 0000000..24e8202
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsel-linux/types.conf
@@ -0,0 +1,102 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long_long
+rbx.platform.typedef.__blkcnt64_t = long_long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong_long
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong_long
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong_long
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = int
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long_long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long_long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long_long
+rbx.platform.typedef.__rlim64_t = ulong_long
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = int
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__swblk_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong_long
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong_long
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long_long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsisa32r6-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsisa32r6-linux/types.conf
new file mode 100644
index 0000000..24e8202
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsisa32r6-linux/types.conf
@@ -0,0 +1,102 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long_long
+rbx.platform.typedef.__blkcnt64_t = long_long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong_long
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong_long
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong_long
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = int
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long_long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long_long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long_long
+rbx.platform.typedef.__rlim64_t = ulong_long
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = int
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__swblk_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong_long
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong_long
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long_long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsisa32r6el-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsisa32r6el-linux/types.conf
new file mode 100644
index 0000000..24e8202
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsisa32r6el-linux/types.conf
@@ -0,0 +1,102 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long_long
+rbx.platform.typedef.__blkcnt64_t = long_long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong_long
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong_long
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong_long
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = int
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long_long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long_long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long_long
+rbx.platform.typedef.__rlim64_t = ulong_long
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = int
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__swblk_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong_long
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong_long
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long_long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsisa64r6-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsisa64r6-linux/types.conf
new file mode 100644
index 0000000..b61f4f7
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsisa64r6-linux/types.conf
@@ -0,0 +1,104 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long
+rbx.platform.typedef.__blkcnt64_t = long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__fsword_t = long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = ulong
+rbx.platform.typedef.__off64_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long
+rbx.platform.typedef.__rlim64_t = ulong
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__syscall_slong_t = long
+rbx.platform.typedef.__syscall_ulong_t = ulong
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = ulong
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsisa64r6el-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsisa64r6el-linux/types.conf
new file mode 100644
index 0000000..b61f4f7
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/mipsisa64r6el-linux/types.conf
@@ -0,0 +1,104 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long
+rbx.platform.typedef.__blkcnt64_t = long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__fsword_t = long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = ulong
+rbx.platform.typedef.__off64_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long
+rbx.platform.typedef.__rlim64_t = ulong
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__syscall_slong_t = long
+rbx.platform.typedef.__syscall_ulong_t = ulong
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = ulong
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc-aix/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc-aix/types.conf
new file mode 100644
index 0000000..cbd20e7
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc-aix/types.conf
@@ -0,0 +1,180 @@
+rbx.platform.typedef.UTF32Char = uint
+rbx.platform.typedef.UniChar = ushort
+rbx.platform.typedef.__cptr32 = string
+rbx.platform.typedef.__cptr64 = ulong_long
+rbx.platform.typedef.__long32_t = long
+rbx.platform.typedef.__long64_t = int
+rbx.platform.typedef.__ptr32 = pointer
+rbx.platform.typedef.__ptr64 = ulong_long
+rbx.platform.typedef.__ulong32_t = ulong
+rbx.platform.typedef.__ulong64_t = uint
+rbx.platform.typedef.aptx_t = ushort
+rbx.platform.typedef.blkcnt32_t = int
+rbx.platform.typedef.blkcnt64_t = ulong_long
+rbx.platform.typedef.blkcnt_t = int
+rbx.platform.typedef.blksize32_t = int
+rbx.platform.typedef.blksize64_t = ulong_long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.boolean_t = int
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.chan_t = int
+rbx.platform.typedef.class_id_t = uint
+rbx.platform.typedef.clock_t = int
+rbx.platform.typedef.clockid_t = long_long
+rbx.platform.typedef.cnt64_t = long_long
+rbx.platform.typedef.cnt_t = short
+rbx.platform.typedef.crid_t = int
+rbx.platform.typedef.daddr32_t = int
+rbx.platform.typedef.daddr64_t = long_long
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev32_t = uint
+rbx.platform.typedef.dev64_t = ulong_long
+rbx.platform.typedef.dev_t = uint
+rbx.platform.typedef.esid_t = uint
+rbx.platform.typedef.ext_t = int
+rbx.platform.typedef.fpos64_t = long_long
+rbx.platform.typedef.fpos_t = long
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino32_t = uint
+rbx.platform.typedef.ino64_t = ulong_long
+rbx.platform.typedef.ino_t = uint
+rbx.platform.typedef.int16 = short
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32 = int
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int32long64_t = int
+rbx.platform.typedef.int64 = long_long
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8 = char
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = short
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long_long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long_long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intfast_t = int
+rbx.platform.typedef.intmax_t = long_long
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.krpn_t = int
+rbx.platform.typedef.kvmhandle_t = ulong
+rbx.platform.typedef.kvmid_t = long
+rbx.platform.typedef.kvpn_t = int
+rbx.platform.typedef.level_t = int
+rbx.platform.typedef.liobn_t = uint
+rbx.platform.typedef.long32int64_t = long
+rbx.platform.typedef.longlong_t = long_long
+rbx.platform.typedef.mid_t = pointer
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.mtyp_t = long
+rbx.platform.typedef.nlink_t = short
+rbx.platform.typedef.off64_t = long_long
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.offset_t = long_long
+rbx.platform.typedef.paddr_t = long
+rbx.platform.typedef.pdtx_t = int
+rbx.platform.typedef.pid32_t = int
+rbx.platform.typedef.pid64_t = ulong_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pshift_t = ushort
+rbx.platform.typedef.psize_t = long_long
+rbx.platform.typedef.psx_t = short
+rbx.platform.typedef.ptex_t = ulong
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_t = uint
+rbx.platform.typedef.ptrdiff_t = long
+rbx.platform.typedef.rlim64_t = ulong_long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.rpn64_t = long_long
+rbx.platform.typedef.rpn_t = int
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.signal_t = int
+rbx.platform.typedef.size64_t = ulong_long
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.slab_t[12] = char
+rbx.platform.typedef.snidx_t = int
+rbx.platform.typedef.socklen_t = ulong
+rbx.platform.typedef.soff_t = int
+rbx.platform.typedef.sshift_t = ushort
+rbx.platform.typedef.ssize64_t = long_long
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = int
+rbx.platform.typedef.swblk_t = int
+rbx.platform.typedef.swhatx_t = ulong
+rbx.platform.typedef.tid32_t = int
+rbx.platform.typedef.tid64_t = ulong_long
+rbx.platform.typedef.tid_t = int
+rbx.platform.typedef.time32_t = int
+rbx.platform.typedef.time64_t = long_long
+rbx.platform.typedef.time_t = int
+rbx.platform.typedef.timer32_t = int
+rbx.platform.typedef.timer64_t = long_long
+rbx.platform.typedef.timer_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16 = ushort
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32 = uint
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64 = ulong_long
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8 = uchar
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_longlong_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uchar = uchar
+rbx.platform.typedef.uchar_t = uchar
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint32long64_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = ushort
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong_long
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong_long
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uint_t = uint
+rbx.platform.typedef.uintfast_t = uint
+rbx.platform.typedef.uintmax_t = ulong_long
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ulong32int64_t = ulong
+rbx.platform.typedef.ulong_t = ulong
+rbx.platform.typedef.unidx_t = int
+rbx.platform.typedef.unit_addr_t = ulong_long
+rbx.platform.typedef.ureg_t = ulong
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.ushort_t = ushort
+rbx.platform.typedef.va_list = string
+rbx.platform.typedef.vmfkey_t = uint
+rbx.platform.typedef.vmhandle32_t = uint
+rbx.platform.typedef.vmhandle_t = ulong
+rbx.platform.typedef.vmhwkey_t = int
+rbx.platform.typedef.vmid32_t = int
+rbx.platform.typedef.vmid64_t = long_long
+rbx.platform.typedef.vmid_t = long
+rbx.platform.typedef.vmidx_t = int
+rbx.platform.typedef.vmkey_t = int
+rbx.platform.typedef.vmlpghandle_t = ulong
+rbx.platform.typedef.vmm_lock_t = int
+rbx.platform.typedef.vmnodeidx_t = int
+rbx.platform.typedef.vmprkey_t = uint
+rbx.platform.typedef.vmsize_t = int
+rbx.platform.typedef.vpn_t = int
+rbx.platform.typedef.wchar_t = ushort
+rbx.platform.typedef.wctype_t = uint
+rbx.platform.typedef.wint_t = int
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc-darwin/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc-darwin/types.conf
new file mode 100644
index 0000000..ae100f4
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc-darwin/types.conf
@@ -0,0 +1,100 @@
+rbx.platform.typedef.__darwin_blkcnt_t = long_long
+rbx.platform.typedef.__darwin_blksize_t = int
+rbx.platform.typedef.__darwin_clock_t = ulong
+rbx.platform.typedef.__darwin_ct_rune_t = int
+rbx.platform.typedef.__darwin_dev_t = int
+rbx.platform.typedef.__darwin_fsblkcnt_t = uint
+rbx.platform.typedef.__darwin_fsfilcnt_t = uint
+rbx.platform.typedef.__darwin_gid_t = uint
+rbx.platform.typedef.__darwin_id_t = uint
+rbx.platform.typedef.__darwin_ino64_t = ulong_long
+rbx.platform.typedef.__darwin_ino_t = ulong_long
+rbx.platform.typedef.__darwin_intptr_t = long
+rbx.platform.typedef.__darwin_mach_port_name_t = uint
+rbx.platform.typedef.__darwin_mach_port_t = uint
+rbx.platform.typedef.__darwin_mode_t = ushort
+rbx.platform.typedef.__darwin_natural_t = uint
+rbx.platform.typedef.__darwin_off_t = long_long
+rbx.platform.typedef.__darwin_pid_t = int
+rbx.platform.typedef.__darwin_pthread_key_t = ulong
+rbx.platform.typedef.__darwin_ptrdiff_t = int
+rbx.platform.typedef.__darwin_rune_t = int
+rbx.platform.typedef.__darwin_sigset_t = uint
+rbx.platform.typedef.__darwin_size_t = ulong
+rbx.platform.typedef.__darwin_socklen_t = uint
+rbx.platform.typedef.__darwin_ssize_t = long
+rbx.platform.typedef.__darwin_suseconds_t = int
+rbx.platform.typedef.__darwin_time_t = long
+rbx.platform.typedef.__darwin_uid_t = uint
+rbx.platform.typedef.__darwin_useconds_t = uint
+rbx.platform.typedef.__darwin_uuid_t[16] = uchar
+rbx.platform.typedef.__darwin_wchar_t = int
+rbx.platform.typedef.__darwin_wint_t = int
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = ulong
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = int
+rbx.platform.typedef.fd_mask = int
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.fsblkcnt_t = uint
+rbx.platform.typedef.fsfilcnt_t = uint
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino64_t = ulong_long
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.mode_t = ushort
+rbx.platform.typedef.nlink_t = ushort
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = ulong
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = int
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = int
+rbx.platform.typedef.swblk_t = int
+rbx.platform.typedef.syscall_arg_t = ulong_long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.user_addr_t = ulong_long
+rbx.platform.typedef.user_long_t = long_long
+rbx.platform.typedef.user_size_t = ulong_long
+rbx.platform.typedef.user_ssize_t = long_long
+rbx.platform.typedef.user_time_t = long_long
+rbx.platform.typedef.user_ulong_t = ulong_long
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc-linux/types.conf
new file mode 100644
index 0000000..42eec13
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc-linux/types.conf
@@ -0,0 +1,130 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long_long
+rbx.platform.typedef.__blkcnt64_t = long_long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong_long
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong_long
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__fsword_t = int
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong_long
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = int
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long_long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long_long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long_long
+rbx.platform.typedef.__rlim64_t = ulong_long
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = int
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__syscall_slong_t = long
+rbx.platform.typedef.__syscall_ulong_t = ulong
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong_long
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong_long
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = int
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long_long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long_long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long_long
+rbx.platform.typedef.intptr_t = int
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long_long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.ptrdiff_t = int
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = uint
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong_long
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong_long
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong_long
+rbx.platform.typedef.uintptr_t = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.wchar_t = long
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc-openbsd/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc-openbsd/types.conf
new file mode 100644
index 0000000..aea7955
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc-openbsd/types.conf
@@ -0,0 +1,156 @@
+rbx.platform.typedef.__blkcnt_t = long_long
+rbx.platform.typedef.__blksize_t = int
+rbx.platform.typedef.__clock_t = long_long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__cpuid_t = ulong
+rbx.platform.typedef.__dev_t = int
+rbx.platform.typedef.__fd_mask = uint
+rbx.platform.typedef.__fixpt_t = uint
+rbx.platform.typedef.__fsblkcnt_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong_long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__in_addr_t = uint
+rbx.platform.typedef.__in_port_t = ushort
+rbx.platform.typedef.__ino_t = ulong_long
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_fast16_t = int
+rbx.platform.typedef.__int_fast32_t = int
+rbx.platform.typedef.__int_fast64_t = long_long
+rbx.platform.typedef.__int_fast8_t = int
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long_long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intmax_t = long_long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off_t = long_long
+rbx.platform.typedef.__paddr_t = ulong
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__psize_t = ulong
+rbx.platform.typedef.__ptrdiff_t = long
+rbx.platform.typedef.__register_t = long
+rbx.platform.typedef.__rlim_t = ulong_long
+rbx.platform.typedef.__rune_t = int
+rbx.platform.typedef.__sa_family_t = uchar
+rbx.platform.typedef.__segsz_t = int
+rbx.platform.typedef.__size_t = ulong
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__swblk_t = int
+rbx.platform.typedef.__time_t = long_long
+rbx.platform.typedef.__timer_t = int
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_fast16_t = uint
+rbx.platform.typedef.__uint_fast32_t = uint
+rbx.platform.typedef.__uint_fast64_t = ulong_long
+rbx.platform.typedef.__uint_fast8_t = uint
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong_long
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong_long
+rbx.platform.typedef.__uintptr_t = ulong
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.__vaddr_t = ulong
+rbx.platform.typedef.__vsize_t = ulong
+rbx.platform.typedef.__wchar_t = int
+rbx.platform.typedef.__wctrans_t = pointer
+rbx.platform.typedef.__wctype_t = pointer
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = long_long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cpuid_t = ulong
+rbx.platform.typedef.daddr32_t = int
+rbx.platform.typedef.daddr_t = long_long
+rbx.platform.typedef.dev_t = int
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = int
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long_long
+rbx.platform.typedef.int_fast8_t = int
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long_long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long_long
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.paddr_t = ulong
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.psize_t = ulong
+rbx.platform.typedef.ptrdiff_t = long
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.sigset_t = uint
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.swblk_t = int
+rbx.platform.typedef.time_t = long_long
+rbx.platform.typedef.timer_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = uint
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong_long
+rbx.platform.typedef.uint_fast8_t = uint
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong_long
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong_long
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.unchar = uchar
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.vaddr_t = ulong
+rbx.platform.typedef.vsize_t = ulong
+rbx.platform.typedef.wchar_t = int
+rbx.platform.typedef.wint_t = int
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc64-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc64-linux/types.conf
new file mode 100644
index 0000000..b61f4f7
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc64-linux/types.conf
@@ -0,0 +1,104 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long
+rbx.platform.typedef.__blkcnt64_t = long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__fsword_t = long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = ulong
+rbx.platform.typedef.__off64_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long
+rbx.platform.typedef.__rlim64_t = ulong
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__syscall_slong_t = long
+rbx.platform.typedef.__syscall_ulong_t = ulong
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = ulong
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc64le-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc64le-linux/types.conf
new file mode 100644
index 0000000..9ac9c2e
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/powerpc64le-linux/types.conf
@@ -0,0 +1,100 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long
+rbx.platform.typedef.__blkcnt64_t = long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = ulong
+rbx.platform.typedef.__off64_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long
+rbx.platform.typedef.__rlim64_t = ulong
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__swblk_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = ulong
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/riscv64-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/riscv64-linux/types.conf
new file mode 100644
index 0000000..ede0f98
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/riscv64-linux/types.conf
@@ -0,0 +1,104 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long
+rbx.platform.typedef.__blkcnt64_t = long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = int
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__fsword_t = long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long
+rbx.platform.typedef.__rlim64_t = ulong
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__syscall_slong_t = long
+rbx.platform.typedef.__syscall_ulong_t = ulong
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/s390-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/s390-linux/types.conf
new file mode 100644
index 0000000..291b032
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/s390-linux/types.conf
@@ -0,0 +1,102 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long_long
+rbx.platform.typedef.__blkcnt64_t = long_long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong_long
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong_long
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong_long
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = int
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long_long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long_long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long_long
+rbx.platform.typedef.__rlim64_t = ulong_long
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__swblk_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong_long
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong_long
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long_long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/s390x-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/s390x-linux/types.conf
new file mode 100644
index 0000000..32a7feb
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/s390x-linux/types.conf
@@ -0,0 +1,102 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long
+rbx.platform.typedef.__blkcnt64_t = long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = ulong
+rbx.platform.typedef.__off64_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long
+rbx.platform.typedef.__rlim64_t = ulong
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__swblk_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = ulong
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparc-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparc-linux/types.conf
new file mode 100644
index 0000000..aea09d3
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparc-linux/types.conf
@@ -0,0 +1,102 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long_long
+rbx.platform.typedef.__blkcnt64_t = long_long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong_long
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong_long
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong_long
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = int
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long_long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long_long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long_long
+rbx.platform.typedef.__rlim64_t = ulong_long
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = int
+rbx.platform.typedef.__suseconds_t = int
+rbx.platform.typedef.__swblk_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong_long
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong_long
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long_long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = int
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparc-solaris/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparc-solaris/types.conf
new file mode 100644
index 0000000..a1548e5
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparc-solaris/types.conf
@@ -0,0 +1,128 @@
+rbx.platform.typedef.() = pointer
+rbx.platform.typedef.*caddr_t = char
+rbx.platform.typedef.Psocklen_t = pointer
+rbx.platform.typedef.avl_index_t = uint
+rbx.platform.typedef.blkcnt64_t = long_long
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cnt_t = short
+rbx.platform.typedef.cpu_flag_t = ushort
+rbx.platform.typedef.ctid_t = long
+rbx.platform.typedef.daddr_t = long
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.diskaddr_t = ulong_long
+rbx.platform.typedef.disp_lock_t = uchar
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fds_mask = long
+rbx.platform.typedef.fsblkcnt64_t = ulong_long
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt64_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = long
+rbx.platform.typedef.hrtime_t = long_long
+rbx.platform.typedef.id_t = long
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.index_t = short
+rbx.platform.typedef.ino64_t = ulong_long
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int) = pointer
+rbx.platform.typedef.int) = pointer
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = int
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long_long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long_long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long_long
+rbx.platform.typedef.intptr_t = int
+rbx.platform.typedef.ipaddr_t = uint
+rbx.platform.typedef.k_fltset_t = uint
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.kid_t = int
+rbx.platform.typedef.len_t = ulong_long
+rbx.platform.typedef.lock_t = uchar
+rbx.platform.typedef.longlong_t = long_long
+rbx.platform.typedef.major_t = ulong
+rbx.platform.typedef.minor_t = ulong
+rbx.platform.typedef.mode_t = ulong
+rbx.platform.typedef.model_t = uint
+rbx.platform.typedef.nfds_t = ulong
+rbx.platform.typedef.nlink_t = ulong
+rbx.platform.typedef.o_dev_t = short
+rbx.platform.typedef.o_gid_t = ushort
+rbx.platform.typedef.o_ino_t = ushort
+rbx.platform.typedef.o_mode_t = ushort
+rbx.platform.typedef.o_nlink_t = short
+rbx.platform.typedef.o_pid_t = short
+rbx.platform.typedef.o_uid_t = ushort
+rbx.platform.typedef.off64_t = long_long
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.offset_t = long_long
+rbx.platform.typedef.pad64_t = long_long
+rbx.platform.typedef.pfn_t = ulong
+rbx.platform.typedef.pgcnt_t = ulong
+rbx.platform.typedef.pid_t = long
+rbx.platform.typedef.poolid_t = long
+rbx.platform.typedef.pri_t = short
+rbx.platform.typedef.projid_t = long
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_t = uint
+rbx.platform.typedef.ptrdiff_t = int
+rbx.platform.typedef.rlim64_t = ulong_long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.size_t) = pointer
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.spgcnt_t = long
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.sysid_t = short
+rbx.platform.typedef.t_scalar_t = long
+rbx.platform.typedef.t_uscalar_t = ulong
+rbx.platform.typedef.taskid_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = int
+rbx.platform.typedef.ts_t = long_long
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_longlong_t = ulong_long
+rbx.platform.typedef.u_offset_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uchar_t = uchar
+rbx.platform.typedef.uid_t = long
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = uint
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong_long
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong_long
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uint_t = uint
+rbx.platform.typedef.uintmax_t = ulong_long
+rbx.platform.typedef.uintptr_t = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ulong_t = ulong
+rbx.platform.typedef.unchar = uchar
+rbx.platform.typedef.upad64_t = ulong_long
+rbx.platform.typedef.use_t = uchar
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.ushort_t = ushort
+rbx.platform.typedef.zoneid_t = long
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparcv9-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparcv9-linux/types.conf
new file mode 100644
index 0000000..7626bfc
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparcv9-linux/types.conf
@@ -0,0 +1,102 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.*__qaddr_t = long
+rbx.platform.typedef.__blkcnt64_t = long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long
+rbx.platform.typedef.__rlim64_t = ulong
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = int
+rbx.platform.typedef.__swblk_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = int
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparcv9-openbsd/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparcv9-openbsd/types.conf
new file mode 100644
index 0000000..aea7955
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparcv9-openbsd/types.conf
@@ -0,0 +1,156 @@
+rbx.platform.typedef.__blkcnt_t = long_long
+rbx.platform.typedef.__blksize_t = int
+rbx.platform.typedef.__clock_t = long_long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__cpuid_t = ulong
+rbx.platform.typedef.__dev_t = int
+rbx.platform.typedef.__fd_mask = uint
+rbx.platform.typedef.__fixpt_t = uint
+rbx.platform.typedef.__fsblkcnt_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong_long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__in_addr_t = uint
+rbx.platform.typedef.__in_port_t = ushort
+rbx.platform.typedef.__ino_t = ulong_long
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_fast16_t = int
+rbx.platform.typedef.__int_fast32_t = int
+rbx.platform.typedef.__int_fast64_t = long_long
+rbx.platform.typedef.__int_fast8_t = int
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long_long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intmax_t = long_long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off_t = long_long
+rbx.platform.typedef.__paddr_t = ulong
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__psize_t = ulong
+rbx.platform.typedef.__ptrdiff_t = long
+rbx.platform.typedef.__register_t = long
+rbx.platform.typedef.__rlim_t = ulong_long
+rbx.platform.typedef.__rune_t = int
+rbx.platform.typedef.__sa_family_t = uchar
+rbx.platform.typedef.__segsz_t = int
+rbx.platform.typedef.__size_t = ulong
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__swblk_t = int
+rbx.platform.typedef.__time_t = long_long
+rbx.platform.typedef.__timer_t = int
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_fast16_t = uint
+rbx.platform.typedef.__uint_fast32_t = uint
+rbx.platform.typedef.__uint_fast64_t = ulong_long
+rbx.platform.typedef.__uint_fast8_t = uint
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong_long
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong_long
+rbx.platform.typedef.__uintptr_t = ulong
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.__vaddr_t = ulong
+rbx.platform.typedef.__vsize_t = ulong
+rbx.platform.typedef.__wchar_t = int
+rbx.platform.typedef.__wctrans_t = pointer
+rbx.platform.typedef.__wctype_t = pointer
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = long_long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cpuid_t = ulong
+rbx.platform.typedef.daddr32_t = int
+rbx.platform.typedef.daddr_t = long_long
+rbx.platform.typedef.dev_t = int
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = int
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long_long
+rbx.platform.typedef.int_fast8_t = int
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long_long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long_long
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.paddr_t = ulong
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.psize_t = ulong
+rbx.platform.typedef.ptrdiff_t = long
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.sigset_t = uint
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.swblk_t = int
+rbx.platform.typedef.time_t = long_long
+rbx.platform.typedef.timer_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = uint
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong_long
+rbx.platform.typedef.uint_fast8_t = uint
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong_long
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong_long
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.unchar = uchar
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.vaddr_t = ulong
+rbx.platform.typedef.vsize_t = ulong
+rbx.platform.typedef.wchar_t = int
+rbx.platform.typedef.wint_t = int
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparcv9-solaris/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparcv9-solaris/types.conf
new file mode 100644
index 0000000..a1548e5
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sparcv9-solaris/types.conf
@@ -0,0 +1,128 @@
+rbx.platform.typedef.() = pointer
+rbx.platform.typedef.*caddr_t = char
+rbx.platform.typedef.Psocklen_t = pointer
+rbx.platform.typedef.avl_index_t = uint
+rbx.platform.typedef.blkcnt64_t = long_long
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cnt_t = short
+rbx.platform.typedef.cpu_flag_t = ushort
+rbx.platform.typedef.ctid_t = long
+rbx.platform.typedef.daddr_t = long
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.diskaddr_t = ulong_long
+rbx.platform.typedef.disp_lock_t = uchar
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fds_mask = long
+rbx.platform.typedef.fsblkcnt64_t = ulong_long
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt64_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = long
+rbx.platform.typedef.hrtime_t = long_long
+rbx.platform.typedef.id_t = long
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.index_t = short
+rbx.platform.typedef.ino64_t = ulong_long
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int) = pointer
+rbx.platform.typedef.int) = pointer
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = int
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long_long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long_long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long_long
+rbx.platform.typedef.intptr_t = int
+rbx.platform.typedef.ipaddr_t = uint
+rbx.platform.typedef.k_fltset_t = uint
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.kid_t = int
+rbx.platform.typedef.len_t = ulong_long
+rbx.platform.typedef.lock_t = uchar
+rbx.platform.typedef.longlong_t = long_long
+rbx.platform.typedef.major_t = ulong
+rbx.platform.typedef.minor_t = ulong
+rbx.platform.typedef.mode_t = ulong
+rbx.platform.typedef.model_t = uint
+rbx.platform.typedef.nfds_t = ulong
+rbx.platform.typedef.nlink_t = ulong
+rbx.platform.typedef.o_dev_t = short
+rbx.platform.typedef.o_gid_t = ushort
+rbx.platform.typedef.o_ino_t = ushort
+rbx.platform.typedef.o_mode_t = ushort
+rbx.platform.typedef.o_nlink_t = short
+rbx.platform.typedef.o_pid_t = short
+rbx.platform.typedef.o_uid_t = ushort
+rbx.platform.typedef.off64_t = long_long
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.offset_t = long_long
+rbx.platform.typedef.pad64_t = long_long
+rbx.platform.typedef.pfn_t = ulong
+rbx.platform.typedef.pgcnt_t = ulong
+rbx.platform.typedef.pid_t = long
+rbx.platform.typedef.poolid_t = long
+rbx.platform.typedef.pri_t = short
+rbx.platform.typedef.projid_t = long
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_t = uint
+rbx.platform.typedef.ptrdiff_t = int
+rbx.platform.typedef.rlim64_t = ulong_long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = uint
+rbx.platform.typedef.size_t) = pointer
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.spgcnt_t = long
+rbx.platform.typedef.ssize_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.sysid_t = short
+rbx.platform.typedef.t_scalar_t = long
+rbx.platform.typedef.t_uscalar_t = ulong
+rbx.platform.typedef.taskid_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = int
+rbx.platform.typedef.ts_t = long_long
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_longlong_t = ulong_long
+rbx.platform.typedef.u_offset_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uchar_t = uchar
+rbx.platform.typedef.uid_t = long
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = uint
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong_long
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong_long
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uint_t = uint
+rbx.platform.typedef.uintmax_t = ulong_long
+rbx.platform.typedef.uintptr_t = uint
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ulong_t = ulong
+rbx.platform.typedef.unchar = uchar
+rbx.platform.typedef.upad64_t = ulong_long
+rbx.platform.typedef.use_t = uchar
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.ushort_t = ushort
+rbx.platform.typedef.zoneid_t = long
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sw_64-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sw_64-linux/types.conf
new file mode 100644
index 0000000..aa8716d
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/sw_64-linux/types.conf
@@ -0,0 +1,141 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.__blkcnt64_t = long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = int
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__fsword_t = long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intmax_t = long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off64_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long
+rbx.platform.typedef.__rlim64_t = ulong
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__syscall_slong_t = long
+rbx.platform.typedef.__syscall_ulong_t = ulong
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = long
+rbx.platform.typedef.int_fast32_t = long
+rbx.platform.typedef.int_fast64_t = long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.ptrdiff_t = long
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = ulong
+rbx.platform.typedef.uint_fast32_t = ulong
+rbx.platform.typedef.uint_fast64_t = ulong
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.wchar_t = int
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-cygwin/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-cygwin/types.conf
new file mode 100644
index 0000000..5bef6d7
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-cygwin/types.conf
@@ -0,0 +1,3 @@
+rbx.platform.typedef.ptrdiff_t = int64
+rbx.platform.typedef.size_t = uint64
+rbx.platform.typedef.ssize_t = int64
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-darwin/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-darwin/types.conf
new file mode 100644
index 0000000..68841bb
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-darwin/types.conf
@@ -0,0 +1,130 @@
+rbx.platform.typedef.__darwin_blkcnt_t = long_long
+rbx.platform.typedef.__darwin_blksize_t = int
+rbx.platform.typedef.__darwin_clock_t = ulong
+rbx.platform.typedef.__darwin_ct_rune_t = int
+rbx.platform.typedef.__darwin_dev_t = int
+rbx.platform.typedef.__darwin_fsblkcnt_t = uint
+rbx.platform.typedef.__darwin_fsfilcnt_t = uint
+rbx.platform.typedef.__darwin_gid_t = uint
+rbx.platform.typedef.__darwin_id_t = uint
+rbx.platform.typedef.__darwin_ino64_t = ulong_long
+rbx.platform.typedef.__darwin_ino_t = ulong_long
+rbx.platform.typedef.__darwin_intptr_t = long
+rbx.platform.typedef.__darwin_mach_port_name_t = uint
+rbx.platform.typedef.__darwin_mach_port_t = uint
+rbx.platform.typedef.__darwin_mode_t = ushort
+rbx.platform.typedef.__darwin_natural_t = uint
+rbx.platform.typedef.__darwin_off_t = long_long
+rbx.platform.typedef.__darwin_pid_t = int
+rbx.platform.typedef.__darwin_pthread_key_t = ulong
+rbx.platform.typedef.__darwin_ptrdiff_t = long
+rbx.platform.typedef.__darwin_rune_t = int
+rbx.platform.typedef.__darwin_sigset_t = uint
+rbx.platform.typedef.__darwin_size_t = ulong
+rbx.platform.typedef.__darwin_socklen_t = uint
+rbx.platform.typedef.__darwin_ssize_t = long
+rbx.platform.typedef.__darwin_suseconds_t = int
+rbx.platform.typedef.__darwin_time_t = long
+rbx.platform.typedef.__darwin_uid_t = uint
+rbx.platform.typedef.__darwin_useconds_t = uint
+rbx.platform.typedef.__darwin_uuid_string_t[37] = char
+rbx.platform.typedef.__darwin_uuid_t[16] = uchar
+rbx.platform.typedef.__darwin_wchar_t = int
+rbx.platform.typedef.__darwin_wint_t = int
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = ulong
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = int
+rbx.platform.typedef.errno_t = int
+rbx.platform.typedef.fd_mask = int
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.fsblkcnt_t = uint
+rbx.platform.typedef.fsfilcnt_t = uint
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino64_t = ulong_long
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = short
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long_long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long_long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.mode_t = ushort
+rbx.platform.typedef.nlink_t = ushort
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = ulong
+rbx.platform.typedef.ptrdiff_t = long
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long_long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.rsize_t = ulong
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.sae_associd_t = uint
+rbx.platform.typedef.sae_connid_t = uint
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = int
+rbx.platform.typedef.swblk_t = int
+rbx.platform.typedef.syscall_arg_t = ulong_long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = ushort
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong_long
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong_long
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.user_addr_t = ulong_long
+rbx.platform.typedef.user_long_t = long_long
+rbx.platform.typedef.user_off_t = long_long
+rbx.platform.typedef.user_size_t = ulong_long
+rbx.platform.typedef.user_ssize_t = long_long
+rbx.platform.typedef.user_time_t = long_long
+rbx.platform.typedef.user_ulong_t = ulong_long
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.wchar_t = int
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-dragonflybsd/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-dragonflybsd/types.conf
new file mode 100644
index 0000000..889f6a3
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-dragonflybsd/types.conf
@@ -0,0 +1,130 @@
+rbx.platform.typedef.*) = pointer
+rbx.platform.typedef.___wchar_t = int
+rbx.platform.typedef.__clock_t = ulong
+rbx.platform.typedef.__clockid_t = ulong
+rbx.platform.typedef.__fd_mask = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_fast16_t = int
+rbx.platform.typedef.__int_fast32_t = int
+rbx.platform.typedef.__int_fast64_t = long
+rbx.platform.typedef.__int_fast8_t = int
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intlp_t = long
+rbx.platform.typedef.__intmax_t = long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__ptrdiff_t = long
+rbx.platform.typedef.__register_t = long
+rbx.platform.typedef.__rlim_t = long
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__size_t = ulong
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = int
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_fast16_t = uint
+rbx.platform.typedef.__uint_fast32_t = uint
+rbx.platform.typedef.__uint_fast64_t = ulong
+rbx.platform.typedef.__uint_fast8_t = uint
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintlp_t = ulong
+rbx.platform.typedef.__uintmax_t = ulong
+rbx.platform.typedef.__uintptr_t = ulong
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.c_caddr_t = pointer
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = ulong
+rbx.platform.typedef.clockid_t = ulong
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = uint
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = long
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = int
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long
+rbx.platform.typedef.int_fast8_t = int
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = long
+rbx.platform.typedef.lwpid_t = int
+rbx.platform.typedef.mode_t = ushort
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = int
+rbx.platform.typedef.ptrdiff_t = long
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.segsz_t = long
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_daddr_t = uint
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = uint
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong
+rbx.platform.typedef.uint_fast8_t = uint
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.unchar = uchar
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.v_caddr_t = pointer
+rbx.platform.typedef.wchar_t = int
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-freebsd/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-freebsd/types.conf
new file mode 100644
index 0000000..8dbe370
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-freebsd/types.conf
@@ -0,0 +1,128 @@
+rbx.platform.typedef.__clock_t = int
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__cpuid_t = ulong
+rbx.platform.typedef.__dev_t = int
+rbx.platform.typedef.__fd_mask = int
+rbx.platform.typedef.__fixpt_t = uint
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__in_addr_t = uint
+rbx.platform.typedef.__in_port_t = ushort
+rbx.platform.typedef.__ino_t = uint
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_fast16_t = int
+rbx.platform.typedef.__int_fast32_t = int
+rbx.platform.typedef.__int_fast64_t = long_long
+rbx.platform.typedef.__int_fast8_t = int
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long_long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intmax_t = long_long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off_t = long_long
+rbx.platform.typedef.__paddr_t = ulong
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__psize_t = ulong
+rbx.platform.typedef.__ptrdiff_t = long
+rbx.platform.typedef.__register_t = long_long
+rbx.platform.typedef.__rlim_t = ulong_long
+rbx.platform.typedef.__rune_t = int
+rbx.platform.typedef.__sa_family_t = uchar
+rbx.platform.typedef.__segsz_t = int
+rbx.platform.typedef.__size_t = ulong
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__swblk_t = int
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = int
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_fast16_t = uint
+rbx.platform.typedef.__uint_fast32_t = uint
+rbx.platform.typedef.__uint_fast64_t = ulong_long
+rbx.platform.typedef.__uint_fast8_t = uint
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong_long
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong_long
+rbx.platform.typedef.__uintptr_t = ulong
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.__vaddr_t = ulong
+rbx.platform.typedef.__vsize_t = ulong
+rbx.platform.typedef.__wchar_t = int
+rbx.platform.typedef.__wctrans_t = pointer
+rbx.platform.typedef.__wctype_t = pointer
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = int
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cpuid_t = ulong
+rbx.platform.typedef.daddr32_t = int
+rbx.platform.typedef.daddr64_t = long_long
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = int
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = uint
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.paddr_t = ulong
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.psize_t = ulong
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long_long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.swblk_t = int
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.unchar = uchar
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.vaddr_t = ulong
+rbx.platform.typedef.vsize_t = ulong
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-freebsd12/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-freebsd12/types.conf
new file mode 100644
index 0000000..31b1073
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-freebsd12/types.conf
@@ -0,0 +1,158 @@
+rbx.platform.typedef.*) = pointer
+rbx.platform.typedef.___wchar_t = int
+rbx.platform.typedef.__accmode_t = int
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = int
+rbx.platform.typedef.__char16_t = ushort
+rbx.platform.typedef.__char32_t = uint
+rbx.platform.typedef.__clock_t = int
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__cpulevel_t = int
+rbx.platform.typedef.__cpusetid_t = int
+rbx.platform.typedef.__cpuwhich_t = int
+rbx.platform.typedef.__critical_t = long
+rbx.platform.typedef.__ct_rune_t = int
+rbx.platform.typedef.__dev_t = ulong
+rbx.platform.typedef.__fd_mask = ulong
+rbx.platform.typedef.__fflags_t = uint
+rbx.platform.typedef.__fixpt_t = uint
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = long
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_fast16_t = int
+rbx.platform.typedef.__int_fast32_t = int
+rbx.platform.typedef.__int_fast64_t = long
+rbx.platform.typedef.__int_fast8_t = int
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intfptr_t = long
+rbx.platform.typedef.__intmax_t = long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = long
+rbx.platform.typedef.__lwpid_t = int
+rbx.platform.typedef.__mode_t = ushort
+rbx.platform.typedef.__nl_item = int
+rbx.platform.typedef.__nlink_t = ulong
+rbx.platform.typedef.__off64_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__ptrdiff_t = long
+rbx.platform.typedef.__register_t = long
+rbx.platform.typedef.__rlim_t = long
+rbx.platform.typedef.__rman_res_t = ulong
+rbx.platform.typedef.__rune_t = int
+rbx.platform.typedef.__sa_family_t = uchar
+rbx.platform.typedef.__segsz_t = long
+rbx.platform.typedef.__size_t = ulong
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__u_register_t = ulong
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_fast16_t = uint
+rbx.platform.typedef.__uint_fast32_t = uint
+rbx.platform.typedef.__uint_fast64_t = ulong
+rbx.platform.typedef.__uint_fast8_t = uint
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintfptr_t = ulong
+rbx.platform.typedef.__uintmax_t = ulong
+rbx.platform.typedef.__uintptr_t = ulong
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.__vm_offset_t = ulong
+rbx.platform.typedef.__vm_paddr_t = ulong
+rbx.platform.typedef.__vm_size_t = ulong
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.accmode_t = int
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.c_caddr_t = pointer
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.cap_ioctl_t = ulong
+rbx.platform.typedef.clock_t = int
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cpulevel_t = int
+rbx.platform.typedef.cpusetid_t = int
+rbx.platform.typedef.cpuwhich_t = int
+rbx.platform.typedef.critical_t = long
+rbx.platform.typedef.daddr_t = long
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.fd_mask = ulong
+rbx.platform.typedef.fflags_t = uint
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = long
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.intmax_t = long
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = long
+rbx.platform.typedef.ksize_t = ulong
+rbx.platform.typedef.kvaddr_t = ulong
+rbx.platform.typedef.lwpid_t = int
+rbx.platform.typedef.mode_t = ushort
+rbx.platform.typedef.nlink_t = ulong
+rbx.platform.typedef.off64_t = long
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = int
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = long
+rbx.platform.typedef.rman_res_t = ulong
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.sbintime_t = long
+rbx.platform.typedef.segsz_t = long
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_register_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.vm_offset_t = ulong
+rbx.platform.typedef.vm_ooffset_t = long
+rbx.platform.typedef.vm_paddr_t = ulong
+rbx.platform.typedef.vm_pindex_t = ulong
+rbx.platform.typedef.vm_size_t = ulong
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-haiku/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-haiku/types.conf
new file mode 100644
index 0000000..d5ddfa7
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-haiku/types.conf
@@ -0,0 +1,117 @@
+rbx.platform.typedef.__haiku_addr_t = ulong
+rbx.platform.typedef.__haiku_generic_addr_t = ulong
+rbx.platform.typedef.__haiku_int16 = short
+rbx.platform.typedef.__haiku_int32 = int
+rbx.platform.typedef.__haiku_int64 = long
+rbx.platform.typedef.__haiku_int8 = char
+rbx.platform.typedef.__haiku_phys_addr_t = ulong
+rbx.platform.typedef.__haiku_phys_saddr_t = long
+rbx.platform.typedef.__haiku_saddr_t = long
+rbx.platform.typedef.__haiku_std_int16 = short
+rbx.platform.typedef.__haiku_std_int32 = int
+rbx.platform.typedef.__haiku_std_int64 = long
+rbx.platform.typedef.__haiku_std_int8 = char
+rbx.platform.typedef.__haiku_std_uint16 = ushort
+rbx.platform.typedef.__haiku_std_uint32 = uint
+rbx.platform.typedef.__haiku_std_uint64 = ulong
+rbx.platform.typedef.__haiku_std_uint8 = uchar
+rbx.platform.typedef.__haiku_uint16 = ushort
+rbx.platform.typedef.__haiku_uint32 = uint
+rbx.platform.typedef.__haiku_uint64 = ulong
+rbx.platform.typedef.__haiku_uint8 = uchar
+rbx.platform.typedef.addr_t = ulong
+rbx.platform.typedef.bigtime_t = long
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.caddr_t = pointer
+rbx.platform.typedef.clock_t = int
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cnt_t = int
+rbx.platform.typedef.daddr_t = long
+rbx.platform.typedef.dev_t = int
+rbx.platform.typedef.fd_mask = uint
+rbx.platform.typedef.fsblkcnt_t = long
+rbx.platform.typedef.fsfilcnt_t = long
+rbx.platform.typedef.generic_addr_t = ulong
+rbx.platform.typedef.generic_size_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = int
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = long
+rbx.platform.typedef.int16 = short
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32 = int
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64 = long
+rbx.platform.typedef.int64_t = long
+rbx.platform.typedef.int8 = char
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = int
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long
+rbx.platform.typedef.int_fast8_t = int
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nanotime_t = long
+rbx.platform.typedef.nlink_t = int
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.perform_code = uint
+rbx.platform.typedef.phys_addr_t = ulong
+rbx.platform.typedef.phys_size_t = ulong
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = int
+rbx.platform.typedef.ptrdiff_t = long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.sig_atomic_t = int
+rbx.platform.typedef.sigset_t = ulong
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.status_t = int
+rbx.platform.typedef.suseconds_t = int
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.type_code = uint
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uchar = uchar
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16 = ushort
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32 = uint
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64 = ulong
+rbx.platform.typedef.uint64_t = ulong
+rbx.platform.typedef.uint8 = uchar
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = uint
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong
+rbx.platform.typedef.uint_fast8_t = uint
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.umode_t = uint
+rbx.platform.typedef.unchar = uchar
+rbx.platform.typedef.unichar = ushort
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.void*) = pointer
+rbx.platform.typedef.wchar_t = int
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-linux/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-linux/types.conf
new file mode 100644
index 0000000..060f161
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-linux/types.conf
@@ -0,0 +1,132 @@
+rbx.platform.typedef.*__caddr_t = char
+rbx.platform.typedef.__blkcnt64_t = long
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = long
+rbx.platform.typedef.__clock_t = long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__daddr_t = int
+rbx.platform.typedef.__dev_t = ulong
+rbx.platform.typedef.__fd_mask = long
+rbx.platform.typedef.__fsblkcnt64_t = ulong
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt64_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__fsword_t = long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino64_t = ulong
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__intmax_t = long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = int
+rbx.platform.typedef.__loff_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = ulong
+rbx.platform.typedef.__off64_t = long
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__priority_which_t = int
+rbx.platform.typedef.__quad_t = long
+rbx.platform.typedef.__rlim64_t = ulong
+rbx.platform.typedef.__rlim_t = ulong
+rbx.platform.typedef.__rlimit_resource_t = int
+rbx.platform.typedef.__rusage_who_t = int
+rbx.platform.typedef.__sig_atomic_t = int
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__syscall_slong_t = long
+rbx.platform.typedef.__syscall_ulong_t = ulong
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = pointer
+rbx.platform.typedef.__u_char = uchar
+rbx.platform.typedef.__u_int = uint
+rbx.platform.typedef.__u_long = ulong
+rbx.platform.typedef.__u_quad_t = ulong
+rbx.platform.typedef.__u_short = ushort
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = long
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = long
+rbx.platform.typedef.int_fast32_t = long
+rbx.platform.typedef.int_fast64_t = long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.loff_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = ulong
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_once_t = int
+rbx.platform.typedef.pthread_t = ulong
+rbx.platform.typedef.ptrdiff_t = long
+rbx.platform.typedef.quad_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = pointer
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = ulong
+rbx.platform.typedef.uint_fast32_t = ulong
+rbx.platform.typedef.uint_fast64_t = ulong
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.wchar_t = int
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-msys/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-msys/types.conf
new file mode 100644
index 0000000..aa827c0
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-msys/types.conf
@@ -0,0 +1,119 @@
+rbx.platform.typedef.*addr_t = char
+rbx.platform.typedef.__ULong = uint
+rbx.platform.typedef.__blkcnt_t = long
+rbx.platform.typedef.__blksize_t = int
+rbx.platform.typedef.__clock_t = ulong
+rbx.platform.typedef.__clockid_t = ulong
+rbx.platform.typedef.__cpu_mask = ulong
+rbx.platform.typedef.__dev_t = uint
+rbx.platform.typedef.__fsblkcnt_t = ulong
+rbx.platform.typedef.__fsfilcnt_t = ulong
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__ino_t = ulong
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intmax_t = long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = long_long
+rbx.platform.typedef.__loff_t = long_long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nl_item = int
+rbx.platform.typedef.__nlink_t = ushort
+rbx.platform.typedef.__off_t = long
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__sigset_t = ulong
+rbx.platform.typedef.__size_t = ulong
+rbx.platform.typedef.__socklen_t = int
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__time_t = long
+rbx.platform.typedef.__timer_t = ulong
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong
+rbx.platform.typedef.__uintptr_t = ulong
+rbx.platform.typedef.__useconds_t = ulong
+rbx.platform.typedef._fpos64_t = long_long
+rbx.platform.typedef._fpos_t = long
+rbx.platform.typedef._off64_t = long_long
+rbx.platform.typedef._off_t = long
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = ulong
+rbx.platform.typedef.clockid_t = ulong
+rbx.platform.typedef.daddr_t = long
+rbx.platform.typedef.dev_t = uint
+rbx.platform.typedef.fd_mask = ulong
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = long
+rbx.platform.typedef.int_fast32_t = long
+rbx.platform.typedef.int_fast64_t = long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = long_long
+rbx.platform.typedef.loff_t = long_long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = ushort
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.ptrdiff_t = long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sbintime_t = long
+rbx.platform.typedef.sig_atomic_t = int
+rbx.platform.typedef.sigset_t = ulong
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = int
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = ulong
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_register_t = ulong
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = ulong
+rbx.platform.typedef.uint_fast32_t = ulong
+rbx.platform.typedef.uint_fast64_t = ulong
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.useconds_t = ulong
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.vm_offset_t = ulong
+rbx.platform.typedef.vm_size_t = ulong
+rbx.platform.typedef.wint_t = uint
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-netbsd/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-netbsd/types.conf
new file mode 100644
index 0000000..15a0d61
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-netbsd/types.conf
@@ -0,0 +1,128 @@
+rbx.platform.typedef.__clock_t = int
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__cpuid_t = ulong
+rbx.platform.typedef.__dev_t = int
+rbx.platform.typedef.__fd_mask = int
+rbx.platform.typedef.__fixpt_t = uint
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__in_addr_t = uint
+rbx.platform.typedef.__in_port_t = ushort
+rbx.platform.typedef.__ino_t = uint
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_fast16_t = int
+rbx.platform.typedef.__int_fast32_t = int
+rbx.platform.typedef.__int_fast64_t = long_long
+rbx.platform.typedef.__int_fast8_t = int
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long_long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intmax_t = long_long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off_t = long_long
+rbx.platform.typedef.__paddr_t = ulong
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__psize_t = ulong
+rbx.platform.typedef.__ptrdiff_t = long
+rbx.platform.typedef.__register_t = int
+rbx.platform.typedef.__rlim_t = ulong_long
+rbx.platform.typedef.__rune_t = int
+rbx.platform.typedef.__sa_family_t = uchar
+rbx.platform.typedef.__segsz_t = int
+rbx.platform.typedef.__size_t = ulong
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = int
+rbx.platform.typedef.__swblk_t = int
+rbx.platform.typedef.__time_t = int
+rbx.platform.typedef.__timer_t = int
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_fast16_t = uint
+rbx.platform.typedef.__uint_fast32_t = uint
+rbx.platform.typedef.__uint_fast64_t = ulong_long
+rbx.platform.typedef.__uint_fast8_t = uint
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong_long
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong_long
+rbx.platform.typedef.__uintptr_t = ulong
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.__vaddr_t = ulong
+rbx.platform.typedef.__vsize_t = ulong
+rbx.platform.typedef.__wchar_t = int
+rbx.platform.typedef.__wctrans_t = pointer
+rbx.platform.typedef.__wctype_t = pointer
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = int
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cpuid_t = ulong
+rbx.platform.typedef.daddr32_t = int
+rbx.platform.typedef.daddr64_t = long_long
+rbx.platform.typedef.daddr_t = int
+rbx.platform.typedef.dev_t = int
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = uint
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.key_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.paddr_t = ulong
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.psize_t = ulong
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = int
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = int
+rbx.platform.typedef.swblk_t = int
+rbx.platform.typedef.time_t = int
+rbx.platform.typedef.timer_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.unchar = uchar
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.vaddr_t = ulong
+rbx.platform.typedef.vsize_t = ulong
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-openbsd/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-openbsd/types.conf
new file mode 100644
index 0000000..6abc9c0
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-openbsd/types.conf
@@ -0,0 +1,134 @@
+rbx.platform.typedef.__blkcnt_t = long_long
+rbx.platform.typedef.__blksize_t = int
+rbx.platform.typedef.__clock_t = long_long
+rbx.platform.typedef.__clockid_t = int
+rbx.platform.typedef.__cpuid_t = ulong
+rbx.platform.typedef.__dev_t = int
+rbx.platform.typedef.__fd_mask = uint
+rbx.platform.typedef.__fixpt_t = uint
+rbx.platform.typedef.__fsblkcnt_t = ulong_long
+rbx.platform.typedef.__fsfilcnt_t = ulong_long
+rbx.platform.typedef.__gid_t = uint
+rbx.platform.typedef.__id_t = uint
+rbx.platform.typedef.__in_addr_t = uint
+rbx.platform.typedef.__in_port_t = ushort
+rbx.platform.typedef.__ino_t = ulong_long
+rbx.platform.typedef.__int16_t = short
+rbx.platform.typedef.__int32_t = int
+rbx.platform.typedef.__int64_t = long_long
+rbx.platform.typedef.__int8_t = char
+rbx.platform.typedef.__int_fast16_t = int
+rbx.platform.typedef.__int_fast32_t = int
+rbx.platform.typedef.__int_fast64_t = long_long
+rbx.platform.typedef.__int_fast8_t = int
+rbx.platform.typedef.__int_least16_t = short
+rbx.platform.typedef.__int_least32_t = int
+rbx.platform.typedef.__int_least64_t = long_long
+rbx.platform.typedef.__int_least8_t = char
+rbx.platform.typedef.__intmax_t = long_long
+rbx.platform.typedef.__intptr_t = long
+rbx.platform.typedef.__key_t = long
+rbx.platform.typedef.__mode_t = uint
+rbx.platform.typedef.__nlink_t = uint
+rbx.platform.typedef.__off_t = long_long
+rbx.platform.typedef.__paddr_t = ulong
+rbx.platform.typedef.__pid_t = int
+rbx.platform.typedef.__psize_t = ulong
+rbx.platform.typedef.__ptrdiff_t = long
+rbx.platform.typedef.__register_t = long
+rbx.platform.typedef.__rlim_t = ulong_long
+rbx.platform.typedef.__rune_t = int
+rbx.platform.typedef.__sa_family_t = uchar
+rbx.platform.typedef.__segsz_t = int
+rbx.platform.typedef.__size_t = ulong
+rbx.platform.typedef.__socklen_t = uint
+rbx.platform.typedef.__ssize_t = long
+rbx.platform.typedef.__suseconds_t = long
+rbx.platform.typedef.__swblk_t = int
+rbx.platform.typedef.__time_t = long_long
+rbx.platform.typedef.__timer_t = int
+rbx.platform.typedef.__uid_t = uint
+rbx.platform.typedef.__uint16_t = ushort
+rbx.platform.typedef.__uint32_t = uint
+rbx.platform.typedef.__uint64_t = ulong_long
+rbx.platform.typedef.__uint8_t = uchar
+rbx.platform.typedef.__uint_fast16_t = uint
+rbx.platform.typedef.__uint_fast32_t = uint
+rbx.platform.typedef.__uint_fast64_t = ulong_long
+rbx.platform.typedef.__uint_fast8_t = uint
+rbx.platform.typedef.__uint_least16_t = ushort
+rbx.platform.typedef.__uint_least32_t = uint
+rbx.platform.typedef.__uint_least64_t = ulong_long
+rbx.platform.typedef.__uint_least8_t = uchar
+rbx.platform.typedef.__uintmax_t = ulong_long
+rbx.platform.typedef.__uintptr_t = ulong
+rbx.platform.typedef.__useconds_t = uint
+rbx.platform.typedef.__vaddr_t = ulong
+rbx.platform.typedef.__vsize_t = ulong
+rbx.platform.typedef.__wchar_t = int
+rbx.platform.typedef.__wctrans_t = pointer
+rbx.platform.typedef.__wctype_t = pointer
+rbx.platform.typedef.__wint_t = int
+rbx.platform.typedef.blkcnt_t = long_long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.caddr_t = string
+rbx.platform.typedef.clock_t = long_long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cpuid_t = ulong
+rbx.platform.typedef.daddr32_t = int
+rbx.platform.typedef.daddr_t = long_long
+rbx.platform.typedef.dev_t = int
+rbx.platform.typedef.fixpt_t = uint
+rbx.platform.typedef.fsblkcnt_t = ulong_long
+rbx.platform.typedef.fsfilcnt_t = ulong_long
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.id_t = uint
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.ino_t = ulong_long
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.key_t = long
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.paddr_t = ulong
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.psize_t = ulong
+rbx.platform.typedef.qaddr_t = pointer
+rbx.platform.typedef.quad_t = long_long
+rbx.platform.typedef.register_t = long
+rbx.platform.typedef.rlim_t = ulong_long
+rbx.platform.typedef.sa_family_t = uchar
+rbx.platform.typedef.segsz_t = int
+rbx.platform.typedef.sigset_t = uint
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.swblk_t = int
+rbx.platform.typedef.time_t = long_long
+rbx.platform.typedef.timer_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_int16_t = ushort
+rbx.platform.typedef.u_int32_t = uint
+rbx.platform.typedef.u_int64_t = ulong_long
+rbx.platform.typedef.u_int8_t = uchar
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_quad_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.unchar = uchar
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.vaddr_t = ulong
+rbx.platform.typedef.vsize_t = ulong
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-solaris/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-solaris/types.conf
new file mode 100644
index 0000000..a7890d1
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-solaris/types.conf
@@ -0,0 +1,122 @@
+rbx.platform.typedef.*caddr_t = char
+rbx.platform.typedef.blkcnt64_t = long
+rbx.platform.typedef.blkcnt_t = long
+rbx.platform.typedef.blksize_t = int
+rbx.platform.typedef.clock_t = long
+rbx.platform.typedef.clockid_t = int
+rbx.platform.typedef.cnt_t = short
+rbx.platform.typedef.cpu_flag_t = ushort
+rbx.platform.typedef.ctid_t = int
+rbx.platform.typedef.daddr_t = long
+rbx.platform.typedef.datalink_id_t = uint
+rbx.platform.typedef.dev_t = ulong
+rbx.platform.typedef.diskaddr_t = ulong_long
+rbx.platform.typedef.disp_lock_t = uchar
+rbx.platform.typedef.fd_mask = long
+rbx.platform.typedef.fds_mask = long
+rbx.platform.typedef.fsblkcnt64_t = ulong
+rbx.platform.typedef.fsblkcnt_t = ulong
+rbx.platform.typedef.fsfilcnt64_t = ulong
+rbx.platform.typedef.fsfilcnt_t = ulong
+rbx.platform.typedef.gid_t = uint
+rbx.platform.typedef.hrtime_t = long_long
+rbx.platform.typedef.id_t = int
+rbx.platform.typedef.in_addr_t = uint
+rbx.platform.typedef.in_port_t = ushort
+rbx.platform.typedef.index_t = short
+rbx.platform.typedef.ino64_t = ulong
+rbx.platform.typedef.ino_t = ulong
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = int
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long
+rbx.platform.typedef.intptr_t = long
+rbx.platform.typedef.ipaddr_t = uint
+rbx.platform.typedef.k_fltset_t = uint
+rbx.platform.typedef.key_t = int
+rbx.platform.typedef.len_t = ulong_long
+rbx.platform.typedef.lgrp_id_t = int
+rbx.platform.typedef.lock_t = uchar
+rbx.platform.typedef.longlong_t = long_long
+rbx.platform.typedef.major_t = uint
+rbx.platform.typedef.minor_t = uint
+rbx.platform.typedef.mode_t = uint
+rbx.platform.typedef.model_t = uint
+rbx.platform.typedef.nfds_t = ulong
+rbx.platform.typedef.nlink_t = uint
+rbx.platform.typedef.o_dev_t = short
+rbx.platform.typedef.o_gid_t = ushort
+rbx.platform.typedef.o_ino_t = ushort
+rbx.platform.typedef.o_mode_t = ushort
+rbx.platform.typedef.o_nlink_t = short
+rbx.platform.typedef.o_pid_t = short
+rbx.platform.typedef.o_uid_t = ushort
+rbx.platform.typedef.off64_t = long
+rbx.platform.typedef.off_t = long
+rbx.platform.typedef.offset_t = long_long
+rbx.platform.typedef.pad64_t = long
+rbx.platform.typedef.pfn_t = ulong
+rbx.platform.typedef.pgcnt_t = ulong
+rbx.platform.typedef.pid_t = int
+rbx.platform.typedef.poolid_t = int
+rbx.platform.typedef.pri_t = short
+rbx.platform.typedef.projid_t = int
+rbx.platform.typedef.pthread_key_t = uint
+rbx.platform.typedef.pthread_t = uint
+rbx.platform.typedef.ptrdiff_t = long
+rbx.platform.typedef.rlim64_t = ulong_long
+rbx.platform.typedef.rlim_t = ulong
+rbx.platform.typedef.sa_family_t = ushort
+rbx.platform.typedef.size_t = ulong
+rbx.platform.typedef.socklen_t = uint
+rbx.platform.typedef.spgcnt_t = long
+rbx.platform.typedef.ssize_t = long
+rbx.platform.typedef.suseconds_t = long
+rbx.platform.typedef.sysid_t = short
+rbx.platform.typedef.t_scalar_t = int
+rbx.platform.typedef.t_uscalar_t = uint
+rbx.platform.typedef.taskid_t = int
+rbx.platform.typedef.time_t = long
+rbx.platform.typedef.timer_t = int
+rbx.platform.typedef.u_char = uchar
+rbx.platform.typedef.u_int = uint
+rbx.platform.typedef.u_long = ulong
+rbx.platform.typedef.u_longlong_t = ulong_long
+rbx.platform.typedef.u_offset_t = ulong_long
+rbx.platform.typedef.u_short = ushort
+rbx.platform.typedef.uchar_t = uchar
+rbx.platform.typedef.uid_t = uint
+rbx.platform.typedef.uint = uint
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint32_t = uint
+rbx.platform.typedef.uint64_t = ulong
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = uint
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least32_t = uint
+rbx.platform.typedef.uint_least64_t = ulong
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uint_t = uint
+rbx.platform.typedef.uintmax_t = ulong
+rbx.platform.typedef.uintptr_t = ulong
+rbx.platform.typedef.ulong = ulong
+rbx.platform.typedef.ulong_t = ulong
+rbx.platform.typedef.unchar = uchar
+rbx.platform.typedef.upad64_t = ulong
+rbx.platform.typedef.use_t = uchar
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.ushort = ushort
+rbx.platform.typedef.ushort_t = ushort
+rbx.platform.typedef.zoneid_t = int
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-windows/types.conf b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-windows/types.conf
new file mode 100644
index 0000000..5bdbbde
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/platform/x86_64-windows/types.conf
@@ -0,0 +1,52 @@
+rbx.platform.typedef.__time32_t = long
+rbx.platform.typedef.__time64_t = long_long
+rbx.platform.typedef._dev_t = uint
+rbx.platform.typedef._ino_t = ushort
+rbx.platform.typedef._mode_t = ushort
+rbx.platform.typedef._off64_t = long_long
+rbx.platform.typedef._off_t = long
+rbx.platform.typedef._pid_t = long_long
+rbx.platform.typedef._sigset_t = ulong_long
+rbx.platform.typedef.dev_t = uint
+rbx.platform.typedef.errno_t = int
+rbx.platform.typedef.ino_t = ushort
+rbx.platform.typedef.int16_t = short
+rbx.platform.typedef.int32_t = int
+rbx.platform.typedef.int64_t = long_long
+rbx.platform.typedef.int8_t = char
+rbx.platform.typedef.int_fast16_t = short
+rbx.platform.typedef.int_fast32_t = int
+rbx.platform.typedef.int_fast64_t = long_long
+rbx.platform.typedef.int_fast8_t = char
+rbx.platform.typedef.int_least16_t = short
+rbx.platform.typedef.int_least32_t = int
+rbx.platform.typedef.int_least64_t = long_long
+rbx.platform.typedef.int_least8_t = char
+rbx.platform.typedef.intmax_t = long_long
+rbx.platform.typedef.intptr_t = long_long
+rbx.platform.typedef.mode_t = ushort
+rbx.platform.typedef.off32_t = long
+rbx.platform.typedef.off64_t = long_long
+rbx.platform.typedef.off_t = long_long
+rbx.platform.typedef.pid_t = long_long
+rbx.platform.typedef.ptrdiff_t = long_long
+rbx.platform.typedef.rsize_t = ulong_long
+rbx.platform.typedef.size_t = ulong_long
+rbx.platform.typedef.ssize_t = long_long
+rbx.platform.typedef.time_t = long_long
+rbx.platform.typedef.uint16_t = ushort
+rbx.platform.typedef.uint64_t = ulong_long
+rbx.platform.typedef.uint8_t = uchar
+rbx.platform.typedef.uint_fast16_t = ushort
+rbx.platform.typedef.uint_fast32_t = uint
+rbx.platform.typedef.uint_fast64_t = ulong_long
+rbx.platform.typedef.uint_fast8_t = uchar
+rbx.platform.typedef.uint_least16_t = ushort
+rbx.platform.typedef.uint_least64_t = ulong_long
+rbx.platform.typedef.uint_least8_t = uchar
+rbx.platform.typedef.uintmax_t = ulong_long
+rbx.platform.typedef.uintptr_t = ulong_long
+rbx.platform.typedef.useconds_t = uint
+rbx.platform.typedef.wchar_t = ushort
+rbx.platform.typedef.wctype_t = ushort
+rbx.platform.typedef.wint_t = ushort
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/pointer.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/pointer.rb
new file mode 100644
index 0000000..e65835f
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/pointer.rb
@@ -0,0 +1,167 @@
+#
+# Copyright (C) 2008, 2009 Wayne Meissner
+# Copyright (c) 2007, 2008 Evan Phoenix
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+require 'ffi/platform'
+
+# NOTE: all method definitions in this file are conditional on
+# whether they are not already defined. This is needed because
+# some Ruby implementations (e.g., TruffleRuby) might already
+# provide these methods due to using FFI internally, and we
+# should not override them to avoid warnings.
+
+module FFI
+ class Pointer
+
+ # Pointer size
+ SIZE = Platform::ADDRESS_SIZE / 8 unless const_defined?(:SIZE)
+
+ # Return the size of a pointer on the current platform, in bytes
+ # @return [Integer]
+ def self.size
+ SIZE
+ end unless respond_to?(:size)
+
+ # @param [nil,Integer] len length of string to return
+ # @return [String]
+ # Read pointer's contents as a string, or the first +len+ bytes of the
+ # equivalent string if +len+ is not +nil+.
+ def read_string(len=nil)
+ if len
+ return ''.b if len == 0
+ get_bytes(0, len)
+ else
+ get_string(0)
+ end
+ end unless method_defined?(:read_string)
+
+ # @param [Integer] len length of string to return
+ # @return [String]
+ # Read the first +len+ bytes of pointer's contents as a string.
+ #
+ # Same as:
+ # ptr.read_string(len) # with len not nil
+ def read_string_length(len)
+ get_bytes(0, len)
+ end unless method_defined?(:read_string_length)
+
+ # @return [String]
+ # Read pointer's contents as a string.
+ #
+ # Same as:
+ # ptr.read_string # with no len
+ def read_string_to_null
+ get_string(0)
+ end unless method_defined?(:read_string_to_null)
+
+ # @param [String] str string to write
+ # @param [Integer] len length of string to return
+ # @return [self]
+ # Write +len+ first bytes of +str+ in pointer's contents.
+ #
+ # Same as:
+ # ptr.write_string(str, len) # with len not nil
+ def write_string_length(str, len)
+ put_bytes(0, str, 0, len)
+ end unless method_defined?(:write_string_length)
+
+ # @param [String] str string to write
+ # @param [Integer] len length of string to return
+ # @return [self]
+ # Write +str+ in pointer's contents, or first +len+ bytes if
+ # +len+ is not +nil+.
+ def write_string(str, len=nil)
+ len = str.bytesize unless len
+ # Write the string data without NUL termination
+ put_bytes(0, str, 0, len)
+ end unless method_defined?(:write_string)
+
+ # @param [Type] type type of data to read from pointer's contents
+ # @param [Symbol] reader method to send to +self+ to read +type+
+ # @param [Integer] length
+ # @return [Array]
+ # Read an array of +type+ of length +length+.
+ # @example
+ # ptr.read_array_of_type(TYPE_UINT8, :read_uint8, 4) # -> [1, 2, 3, 4]
+ def read_array_of_type(type, reader, length)
+ ary = []
+ size = FFI.type_size(type)
+ tmp = self
+ length.times { |j|
+ ary << tmp.send(reader)
+ tmp += size unless j == length-1 # avoid OOB
+ }
+ ary
+ end unless method_defined?(:read_array_of_type)
+
+ # @param [Type] type type of data to write to pointer's contents
+ # @param [Symbol] writer method to send to +self+ to write +type+
+ # @param [Array] ary
+ # @return [self]
+ # Write +ary+ in pointer's contents as +type+.
+ # @example
+ # ptr.write_array_of_type(TYPE_UINT8, :put_uint8, [1, 2, 3 ,4])
+ def write_array_of_type(type, writer, ary)
+ size = FFI.type_size(type)
+ ary.each_with_index { |val, i|
+ break unless i < self.size
+ self.send(writer, i * size, val)
+ }
+ self
+ end unless method_defined?(:write_array_of_type)
+
+ # @return [self]
+ def to_ptr
+ self
+ end unless method_defined?(:to_ptr)
+
+ # @param [Symbol,Type] type of data to read
+ # @return [Object]
+ # Read pointer's contents as +type+
+ #
+ # Same as:
+ # ptr.get(type, 0)
+ def read(type)
+ get(type, 0)
+ end unless method_defined?(:read)
+
+ # @param [Symbol,Type] type of data to read
+ # @param [Object] value to write
+ # @return [nil]
+ # Write +value+ of type +type+ to pointer's content
+ #
+ # Same as:
+ # ptr.put(type, 0)
+ def write(type, value)
+ put(type, 0, value)
+ end unless method_defined?(:write)
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/struct.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/struct.rb
new file mode 100644
index 0000000..bf6228a
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/struct.rb
@@ -0,0 +1,317 @@
+#
+# Copyright (C) 2008-2010 Wayne Meissner
+# Copyright (C) 2008, 2009 Andrea Fazzi
+# Copyright (C) 2008, 2009 Luc Heinrich
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+require 'ffi/platform'
+require 'ffi/struct_layout'
+require 'ffi/struct_layout_builder'
+require 'ffi/struct_by_reference'
+
+module FFI
+
+ class Struct
+
+ # Get struct size
+ # @return [Integer]
+ def size
+ self.class.size
+ end
+
+ # @return [Integer] Struct alignment
+ def alignment
+ self.class.alignment
+ end
+ alias_method :align, :alignment
+
+ # (see FFI::StructLayout#offset_of)
+ def offset_of(name)
+ self.class.offset_of(name)
+ end
+
+ # (see FFI::StructLayout#members)
+ def members
+ self.class.members
+ end
+
+ # @return [Array]
+ # Get array of values from Struct fields.
+ def values
+ members.map { |m| self[m] }
+ end
+
+ # (see FFI::StructLayout#offsets)
+ def offsets
+ self.class.offsets
+ end
+
+ # Clear the struct content.
+ # @return [self]
+ def clear
+ pointer.clear
+ self
+ end
+
+ # Get {Pointer} to struct content.
+ # @return [AbstractMemory]
+ def to_ptr
+ pointer
+ end
+
+ # Get struct size
+ # @return [Integer]
+ def self.size
+ defined?(@layout) ? @layout.size : defined?(@size) ? @size : 0
+ end
+
+ # set struct size
+ # @param [Integer] size
+ # @return [size]
+ def self.size=(size)
+ raise ArgumentError, "Size already set" if defined?(@size) || defined?(@layout)
+ @size = size
+ end
+
+ # @return (see Struct#alignment)
+ def self.alignment
+ @layout.alignment
+ end
+
+ # (see FFI::Type#members)
+ def self.members
+ @layout.members
+ end
+
+ # (see FFI::StructLayout#offsets)
+ def self.offsets
+ @layout.offsets
+ end
+
+ # (see FFI::StructLayout#offset_of)
+ def self.offset_of(name)
+ @layout.offset_of(name)
+ end
+
+ def self.in
+ ptr(:in)
+ end
+
+ def self.out
+ ptr(:out)
+ end
+
+ def self.ptr(flags = :inout)
+ @ref_data_type ||= Type::Mapped.new(StructByReference.new(self))
+ end
+
+ def self.val
+ @val_data_type ||= StructByValue.new(self)
+ end
+
+ def self.by_value
+ self.val
+ end
+
+ def self.by_ref(flags = :inout)
+ self.ptr(flags)
+ end
+
+ class ManagedStructConverter < StructByReference
+
+ # @param [Struct] struct_class
+ def initialize(struct_class)
+ super(struct_class)
+
+ raise NoMethodError, "release() not implemented for class #{struct_class}" unless struct_class.respond_to? :release
+ @method = struct_class.method(:release)
+ end
+
+ # @param [Pointer] ptr
+ # @param [nil] ctx
+ # @return [Struct]
+ def from_native(ptr, ctx)
+ struct_class.new(AutoPointer.new(ptr, @method))
+ end
+ end
+
+ def self.auto_ptr
+ @managed_type ||= Type::Mapped.new(ManagedStructConverter.new(self))
+ end
+
+
+ class << self
+ public
+
+ # @return [StructLayout]
+ # @overload layout
+ # @return [StructLayout]
+ # Get struct layout.
+ # @overload layout(*spec)
+ # @param [Array<Symbol, Integer>,Array(Hash)] spec
+ # @return [StructLayout]
+ # Create struct layout from +spec+.
+ # @example Creating a layout from an array +spec+
+ # class MyStruct < Struct
+ # layout :field1, :int,
+ # :field2, :pointer,
+ # :field3, :string
+ # end
+ # @example Creating a layout from an array +spec+ with offset
+ # class MyStructWithOffset < Struct
+ # layout :field1, :int,
+ # :field2, :pointer, 6, # set offset to 6 for this field
+ # :field3, :string
+ # end
+ # @example Creating a layout from a hash +spec+
+ # class MyStructFromHash < Struct
+ # layout :field1 => :int,
+ # :field2 => :pointer,
+ # :field3 => :string
+ # end
+ # @example Creating a layout with pointers to functions
+ # class MyFunctionTable < Struct
+ # layout :function1, callback([:int, :int], :int),
+ # :function2, callback([:pointer], :void),
+ # :field3, :string
+ # end
+ def layout(*spec)
+ return @layout if spec.size == 0
+
+ warn "[DEPRECATION] Struct layout is already defined for class #{self.inspect}. Redefinition as in #{caller[0]} will be disallowed in ffi-2.0." if defined?(@layout)
+
+ builder = StructLayoutBuilder.new
+ builder.union = self < Union
+ builder.packed = @packed if defined?(@packed)
+ builder.alignment = @min_alignment if defined?(@min_alignment)
+
+ if spec[0].kind_of?(Hash)
+ hash_layout(builder, spec)
+ else
+ array_layout(builder, spec)
+ end
+ builder.size = @size if defined?(@size) && @size > builder.size
+ cspec = builder.build
+ @layout = cspec unless self == Struct
+ @size = cspec.size
+ return cspec
+ end
+
+
+ protected
+
+ def callback(params, ret)
+ mod = enclosing_module
+ ret_type = find_type(ret, mod)
+ if ret_type == Type::STRING
+ raise TypeError, ":string is not allowed as return type of callbacks"
+ end
+ FFI::CallbackInfo.new(ret_type, params.map { |e| find_type(e, mod) })
+ end
+
+ def packed(packed = 1)
+ @packed = packed
+ end
+ alias :pack :packed
+
+ def aligned(alignment = 1)
+ @min_alignment = alignment
+ end
+ alias :align :aligned
+
+ def enclosing_module
+ begin
+ mod = self.name.split("::")[0..-2].inject(Object) { |obj, c| obj.const_get(c) }
+ if mod.respond_to?(:find_type) && (mod.is_a?(FFI::Library) || mod < FFI::Struct)
+ mod
+ end
+ rescue Exception
+ nil
+ end
+ end
+
+
+ def find_field_type(type, mod = enclosing_module)
+ if type.kind_of?(Class) && type < Struct
+ FFI::Type::Struct.new(type)
+
+ elsif type.kind_of?(Class) && type < FFI::StructLayout::Field
+ type
+
+ elsif type.kind_of?(::Array)
+ FFI::Type::Array.new(find_field_type(type[0]), type[1])
+
+ else
+ find_type(type, mod)
+ end
+ end
+
+ def find_type(type, mod = enclosing_module)
+ if mod
+ mod.find_type(type)
+ end || FFI.find_type(type)
+ end
+
+ private
+
+ # @param [StructLayoutBuilder] builder
+ # @param [Hash] spec
+ # @return [builder]
+ # Add hash +spec+ to +builder+.
+ def hash_layout(builder, spec)
+ spec[0].each do |name, type|
+ builder.add name, find_field_type(type), nil
+ end
+ end
+
+ # @param [StructLayoutBuilder] builder
+ # @param [Array<Symbol, Integer>] spec
+ # @return [builder]
+ # Add array +spec+ to +builder+.
+ def array_layout(builder, spec)
+ i = 0
+ while i < spec.size
+ name, type = spec[i, 2]
+ i += 2
+
+ # If the next param is a Integer, it specifies the offset
+ if spec[i].kind_of?(Integer)
+ offset = spec[i]
+ i += 1
+ else
+ offset = nil
+ end
+
+ builder.add name, find_field_type(type), offset
+ end
+ end
+ end
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/struct_by_reference.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/struct_by_reference.rb
new file mode 100644
index 0000000..9ed1f71
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/struct_by_reference.rb
@@ -0,0 +1,72 @@
+#
+# Copyright (C) 2010 Wayne Meissner
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.#
+
+module FFI
+ # This class includes the {FFI::DataConverter} module.
+ class StructByReference
+ include DataConverter
+
+ attr_reader :struct_class
+
+ # @param [Struct] struct_class
+ def initialize(struct_class)
+ unless Class === struct_class and struct_class < FFI::Struct
+ raise TypeError, 'wrong type (expected subclass of FFI::Struct)'
+ end
+ @struct_class = struct_class
+ end
+
+ # Always get {FFI::Type}::POINTER.
+ def native_type(_type = nil)
+ FFI::Type::POINTER
+ end
+
+ # @param [nil, Struct] value
+ # @param [nil] ctx
+ # @return [AbstractMemory] Pointer on +value+.
+ def to_native(value, ctx)
+ return Pointer::NULL if value.nil?
+
+ unless @struct_class === value
+ raise TypeError, "wrong argument type #{value.class} (expected #{@struct_class})"
+ end
+
+ value.pointer
+ end
+
+ # @param [AbstractMemory] value
+ # @param [nil] ctx
+ # @return [Struct]
+ # Create a struct from content of memory +value+.
+ def from_native(value, ctx)
+ @struct_class.new(value)
+ end
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/struct_layout.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/struct_layout.rb
new file mode 100644
index 0000000..fb84202
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/struct_layout.rb
@@ -0,0 +1,96 @@
+#
+# Copyright (C) 2008-2010 Wayne Meissner
+# Copyright (C) 2008, 2009 Andrea Fazzi
+# Copyright (C) 2008, 2009 Luc Heinrich
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+module FFI
+
+ class StructLayout
+
+ # @return [Array<Array(Symbol, Integer)>
+ # Get an array of tuples (field name, offset of the field).
+ def offsets
+ members.map { |m| [ m, self[m].offset ] }
+ end
+
+ # @return [Integer]
+ # Get the offset of a field.
+ def offset_of(field_name)
+ self[field_name].offset
+ end
+
+ # An enum {Field} in a {StructLayout}.
+ class Enum < Field
+
+ # @param [AbstractMemory] ptr pointer on a {Struct}
+ # @return [Object]
+ # Get an object of type {#type} from memory pointed by +ptr+.
+ def get(ptr)
+ type.find(ptr.get_int(offset))
+ end
+
+ # @param [AbstractMemory] ptr pointer on a {Struct}
+ # @param value
+ # @return [nil]
+ # Set +value+ into memory pointed by +ptr+.
+ def put(ptr, value)
+ ptr.put_int(offset, type.find(value))
+ end
+
+ end
+
+ class InnerStruct < Field
+ def get(ptr)
+ type.struct_class.new(ptr.slice(self.offset, self.size))
+ end
+
+ def put(ptr, value)
+ raise TypeError, "wrong value type (expected #{type.struct_class})" unless value.is_a?(type.struct_class)
+ ptr.slice(self.offset, self.size).__copy_from__(value.pointer, self.size)
+ end
+ end
+
+ class Mapped < Field
+ def initialize(name, offset, type, orig_field)
+ @orig_field = orig_field
+ super(name, offset, type)
+ end
+
+ def get(ptr)
+ type.from_native(@orig_field.get(ptr), nil)
+ end
+
+ def put(ptr, value)
+ @orig_field.put(ptr, type.to_native(value, nil))
+ end
+ end
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/struct_layout_builder.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/struct_layout_builder.rb
new file mode 100644
index 0000000..2221a60
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/struct_layout_builder.rb
@@ -0,0 +1,227 @@
+#
+# Copyright (C) 2008-2010 Wayne Meissner
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+module FFI
+
+ # Build a {StructLayout struct layout}.
+ class StructLayoutBuilder
+ attr_reader :size
+ attr_reader :alignment
+
+ def initialize
+ @size = 0
+ @alignment = 1
+ @min_alignment = 1
+ @packed = false
+ @union = false
+ @fields = Array.new
+ end
+
+ # Set size attribute with +size+ only if +size+ is greater than attribute value.
+ # @param [Integer] size
+ def size=(size)
+ @size = size if size > @size
+ end
+
+ # Set alignment attribute with +align+ only if it is greater than attribute value.
+ # @param [Integer] align
+ def alignment=(align)
+ @alignment = align if align > @alignment
+ @min_alignment = align
+ end
+
+ # Set union attribute.
+ # Set to +true+ to build a {Union} instead of a {Struct}.
+ # @param [Boolean] is_union
+ # @return [is_union]
+ def union=(is_union)
+ @union = is_union
+ end
+
+ # Building a {Union} or a {Struct} ?
+ #
+ # @return [Boolean]
+ #
+ def union?
+ @union
+ end
+
+ # Set packed attribute
+ # @overload packed=(packed) Set alignment and packed attributes to
+ # +packed+.
+ #
+ # @param [Integer] packed
+ #
+ # @return [packed]
+ # @overload packed=(packed) Set packed attribute.
+ # @param packed
+ #
+ # @return [0,1]
+ #
+ def packed=(packed)
+ if packed.is_a?(0.class)
+ @alignment = packed
+ @packed = packed
+ else
+ @packed = packed ? 1 : 0
+ end
+ end
+
+
+ # List of number types
+ NUMBER_TYPES = [
+ Type::INT8,
+ Type::UINT8,
+ Type::INT16,
+ Type::UINT16,
+ Type::INT32,
+ Type::UINT32,
+ Type::LONG,
+ Type::ULONG,
+ Type::INT64,
+ Type::UINT64,
+ Type::FLOAT32,
+ Type::FLOAT64,
+ Type::LONGDOUBLE,
+ Type::BOOL,
+ ].freeze
+
+ # @param [String, Symbol] name name of the field
+ # @param [Array, DataConverter, Struct, StructLayout::Field, Symbol, Type] type type of the field
+ # @param [Integer, nil] offset
+ # @return [self]
+ # Add a field to the builder.
+ # @note Setting +offset+ to +nil+ or +-1+ is equivalent to +0+.
+ def add(name, type, offset = nil)
+
+ if offset.nil? || offset == -1
+ offset = @union ? 0 : align(@size, @packed ? [ @packed, type.alignment ].min : [ @min_alignment, type.alignment ].max)
+ end
+
+ #
+ # If a FFI::Type type was passed in as the field arg, try and convert to a StructLayout::Field instance
+ #
+ field = type.is_a?(StructLayout::Field) ? type : field_for_type(name, offset, type)
+ @fields << field
+ @alignment = [ @alignment, field.alignment ].max unless @packed
+ @size = [ @size, field.size + (@union ? 0 : field.offset) ].max
+
+ return self
+ end
+
+ # @param (see #add)
+ # @return (see #add)
+ # Same as {#add}.
+ # @see #add
+ def add_field(name, type, offset = nil)
+ add(name, type, offset)
+ end
+
+ # @param (see #add)
+ # @return (see #add)
+ # Add a struct as a field to the builder.
+ def add_struct(name, type, offset = nil)
+ add(name, Type::Struct.new(type), offset)
+ end
+
+ # @param name (see #add)
+ # @param type (see #add)
+ # @param [Integer] count array length
+ # @param offset (see #add)
+ # @return (see #add)
+ # Add an array as a field to the builder.
+ def add_array(name, type, count, offset = nil)
+ add(name, Type::Array.new(type, count), offset)
+ end
+
+ # @return [StructLayout]
+ # Build and return the struct layout.
+ def build
+ # Add tail padding if the struct is not packed
+ size = @packed ? @size : align(@size, @alignment)
+
+ layout = StructLayout.new(@fields, size, @alignment)
+ layout.__union! if @union
+ layout
+ end
+
+ private
+
+ # @param [Integer] offset
+ # @param [Integer] align
+ # @return [Integer]
+ def align(offset, align)
+ align + ((offset - 1) & ~(align - 1));
+ end
+
+ # @param (see #add)
+ # @return [StructLayout::Field]
+ def field_for_type(name, offset, type)
+ field_class = case
+ when type.is_a?(Type::Function)
+ StructLayout::Function
+
+ when type.is_a?(Type::Struct)
+ StructLayout::InnerStruct
+
+ when type.is_a?(Type::Array)
+ StructLayout::Array
+
+ when type.is_a?(FFI::Enum)
+ StructLayout::Enum
+
+ when NUMBER_TYPES.include?(type)
+ StructLayout::Number
+
+ when type == Type::POINTER
+ StructLayout::Pointer
+
+ when type == Type::STRING
+ StructLayout::String
+
+ when type.is_a?(Class) && type < StructLayout::Field
+ type
+
+ when type.is_a?(DataConverter)
+ return StructLayout::Mapped.new(name, offset, Type::Mapped.new(type), field_for_type(name, offset, type.native_type))
+
+ when type.is_a?(Type::Mapped)
+ return StructLayout::Mapped.new(name, offset, type, field_for_type(name, offset, type.native_type))
+
+ else
+ raise TypeError, "invalid struct field type #{type.inspect}"
+ end
+
+ field_class.new(name, offset, type)
+ end
+ end
+
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/tools/const_generator.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/tools/const_generator.rb
new file mode 100644
index 0000000..70ba9c2
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/tools/const_generator.rb
@@ -0,0 +1,232 @@
+require 'tempfile'
+require 'open3'
+
+module FFI
+
+ # ConstGenerator turns C constants into ruby values.
+ #
+ # @example a simple example for stdio
+ # require 'ffi/tools/const_generator'
+ # cg = FFI::ConstGenerator.new('stdio') do |gen|
+ # gen.const(:SEEK_SET)
+ # gen.const('SEEK_CUR')
+ # gen.const('seek_end') # this constant does not exist
+ # end # #calculate called automatically at the end of the block
+ #
+ # cg['SEEK_SET'] # => 0
+ # cg['SEEK_CUR'] # => 1
+ # cg['seek_end'] # => nil
+ # cg.to_ruby # => "SEEK_SET = 0\nSEEK_CUR = 1\n# seek_end not available"
+ class ConstGenerator
+ @options = {}
+ attr_reader :constants
+
+ # Creates a new constant generator that uses +prefix+ as a name, and an
+ # options hash.
+ #
+ # The only option is +:required+, which if set to +true+ raises an error if a
+ # constant you have requested was not found.
+ #
+ # @param [#to_s] prefix
+ # @param [Hash] options
+ # @return
+ # @option options [Boolean] :required
+ # @overload initialize(prefix, options)
+ # @overload initialize(prefix, options) { |gen| ... }
+ # @yieldparam [ConstGenerator] gen new generator is passed to the block
+ # When passed a block, {#calculate} is automatically called at the end of
+ # the block, otherwise you must call it yourself.
+ def initialize(prefix = nil, options = {})
+ @includes = ['stdio.h', 'stddef.h']
+ @constants = {}
+ @prefix = prefix
+
+ @required = options[:required]
+ @options = options
+
+ if block_given? then
+ yield self
+ calculate self.class.options.merge(options)
+ end
+ end
+ # Set class options
+ # These options are merged with {#initialize} options when it is called with a block.
+ # @param [Hash] options
+ # @return [Hash] class options
+ def self.options=(options)
+ @options = options
+ end
+ # Get class options.
+ # @return [Hash] class options
+ def self.options
+ @options
+ end
+ # @param [String] name
+ # @return constant value (converted if a +converter+ was defined).
+ # Access a constant by name.
+ def [](name)
+ @constants[name].converted_value
+ end
+
+ # Request the value for C constant +name+.
+ #
+ # @param [#to_s] name C constant name
+ # @param [String] format a printf format string to print the value out
+ # @param [String] cast a C cast for the value
+ # @param ruby_name alternate ruby name for {#to_ruby}
+ #
+ # @overload const(name, format=nil, cast='', ruby_name=nil, converter=nil)
+ # +converter+ is a Method or a Proc.
+ # @param [#call] converter convert the value from a string to the appropriate
+ # type for {#to_ruby}.
+ # @overload const(name, format=nil, cast='', ruby_name=nil) { |value| ... }
+ # Use a converter block. This block convert the value from a string to the
+ # appropriate type for {#to_ruby}.
+ # @yieldparam value constant value
+ def const(name, format = nil, cast = '', ruby_name = nil, converter = nil,
+ &converter_proc)
+ format ||= '%d'
+ cast ||= ''
+
+ if converter_proc and converter then
+ raise ArgumentError, "Supply only converter or converter block"
+ end
+
+ converter = converter_proc if converter.nil?
+
+ const = Constant.new name, format, cast, ruby_name, converter
+ @constants[name.to_s] = const
+ return const
+ end
+
+ # Calculate constants values.
+ # @param [Hash] options
+ # @option options [String] :cppflags flags for C compiler
+ # @return [nil]
+ # @raise if a constant is missing and +:required+ was set to +true+ (see {#initialize})
+ def calculate(options = {})
+ binary_path = nil
+
+ Tempfile.open("#{@prefix}.const_generator") do |f|
+ binary_path = f.path + ".bin"
+ @includes.each do |inc|
+ f.puts "#include <#{inc}>"
+ end
+ f.puts "\nint main(int argc, char **argv)\n{"
+
+ @constants.each_value do |const|
+ f.puts <<-EOF
+ #ifdef #{const.name}
+ printf("#{const.name} #{const.format}\\n", #{const.cast}#{const.name});
+ #endif
+ EOF
+ end
+
+ f.puts "\n\treturn 0;\n}"
+ f.flush
+
+ cc = ENV['CC'] || 'gcc'
+ output = `#{cc} #{options[:cppflags]} -D_DARWIN_USE_64_BIT_INODE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -x c -Wall -Werror #{f.path} -o #{binary_path} 2>&1`
+
+ unless $?.success? then
+ output = output.split("\n").map { |l| "\t#{l}" }.join "\n"
+ raise "Compilation error generating constants #{@prefix}:\n#{output}"
+ end
+ end
+
+ output = `#{binary_path}`
+ File.unlink(binary_path + (FFI::Platform.windows? ? ".exe" : ""))
+ output.each_line do |line|
+ line =~ /^(\S+)\s(.*)$/
+ const = @constants[$1]
+ const.value = $2
+ end
+
+ missing_constants = @constants.select do |name, constant|
+ constant.value.nil?
+ end.map { |name,| name }
+
+ if @required and not missing_constants.empty? then
+ raise "Missing required constants for #{@prefix}: #{missing_constants.join ', '}"
+ end
+ end
+
+ # Dump constants to +io+.
+ # @param [#puts] io
+ # @return [nil]
+ def dump_constants(io)
+ @constants.each do |name, constant|
+ name = [@prefix, name].join '.' if @prefix
+ io.puts "#{name} = #{constant.converted_value}"
+ end
+ end
+
+ # Outputs values for discovered constants. If the constant's value was
+ # not discovered it is not omitted.
+ # @return [String]
+ def to_ruby
+ @constants.sort_by { |name,| name }.map do |name, constant|
+ if constant.value.nil? then
+ "# #{name} not available"
+ else
+ constant.to_ruby
+ end
+ end.join "\n"
+ end
+
+ # Add additional C include file(s) to calculate constants from.
+ # @note +stdio.h+ and +stddef.h+ automatically included
+ # @param [List<String>, Array<String>] i include file(s)
+ # @return [Array<String>] array of include files
+ def include(*i)
+ @includes |= i.flatten
+ end
+
+ end
+
+ # This class hold constants for {ConstGenerator}
+ class ConstGenerator::Constant
+
+ attr_reader :name, :format, :cast
+ attr_accessor :value
+
+ # @param [#to_s] name
+ # @param [String] format a printf format string to print the value out
+ # @param [String] cast a C cast for the value
+ # @param ruby_name alternate ruby name for {#to_ruby}
+ # @param [#call] converter convert the value from a string to the appropriate
+ # type for {#to_ruby}.
+ def initialize(name, format, cast, ruby_name = nil, converter=nil)
+ @name = name
+ @format = format
+ @cast = cast
+ @ruby_name = ruby_name
+ @converter = converter
+ @value = nil
+ end
+
+ # Return constant value (converted if a +converter+ was defined).
+ # @return constant value.
+ def converted_value
+ if @converter
+ @converter.call(@value)
+ else
+ @value
+ end
+ end
+
+ # get constant ruby name
+ # @return [String]
+ def ruby_name
+ @ruby_name || @name
+ end
+
+ # Get an evaluable string from constant.
+ # @return [String]
+ def to_ruby
+ "#{ruby_name} = #{converted_value}"
+ end
+
+ end
+
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/tools/generator.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/tools/generator.rb
new file mode 100644
index 0000000..5552ea5
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/tools/generator.rb
@@ -0,0 +1,105 @@
+require 'ffi/tools/struct_generator'
+require 'ffi/tools/const_generator'
+
+module FFI
+
+ ##
+ # Generate files with C structs for FFI::Struct and C constants.
+ #
+ # == A simple example
+ #
+ # In file +zlib.rb.ffi+:
+ # module Zlib
+ # @@@
+ # constants do |c|
+ # c.include "zlib.h"
+ # c.const :ZLIB_VERNUM
+ # end
+ # @@@
+ #
+ # class ZStream < FFI::Struct
+ #
+ # struct do |s|
+ # s.name "struct z_stream_s"
+ # s.include "zlib.h"
+ #
+ # s.field :next_in, :pointer
+ # s.field :avail_in, :uint
+ # s.field :total_in, :ulong
+ # end
+ # @@@
+ # end
+ # end
+ #
+ # Translate the file:
+ # require "ffi/tools/generator"
+ # FFI::Generator.new "zlib.rb.ffi", "zlib.rb"
+ #
+ # Generates the file +zlib.rb+ with constant values and offsets:
+ # module Zlib
+ # ZLIB_VERNUM = 4784
+ #
+ # class ZStream < FFI::Struct
+ # layout :next_in, :pointer, 0,
+ # :avail_in, :uint, 8,
+ # :total_in, :ulong, 16
+ # end
+ #
+ # @see FFI::Generator::Task for easy integration in a Rakefile
+ class Generator
+
+ def initialize(ffi_name, rb_name, options = {})
+ @ffi_name = ffi_name
+ @rb_name = rb_name
+ @options = options
+ @name = File.basename rb_name, '.rb'
+
+ file = File.read @ffi_name
+
+ new_file = file.gsub(/^( *)@@@(.*?)@@@/m) do
+ @constants = []
+ @structs = []
+
+ indent = $1
+ original_lines = $2.count "\n"
+
+ instance_eval $2, @ffi_name, $`.count("\n")
+
+ new_lines = []
+ @constants.each { |c| new_lines << c.to_ruby }
+ @structs.each { |s| new_lines << s.generate_layout }
+
+ new_lines = new_lines.join("\n").split "\n" # expand multiline blocks
+ new_lines = new_lines.map { |line| indent + line }
+
+ padding = original_lines - new_lines.length
+ new_lines += [nil] * padding if padding >= 0
+
+ new_lines.join "\n"
+ end
+
+ open @rb_name, 'w' do |f|
+ f.puts "# This file is generated from `#{@ffi_name}'. Do not edit."
+ f.puts
+ f.puts new_file
+ end
+ end
+
+ def constants(options = {}, &block)
+ @constants << FFI::ConstGenerator.new(@name, @options.merge(options), &block)
+ end
+
+ def struct(options = {}, &block)
+ @structs << FFI::StructGenerator.new(@name, @options.merge(options), &block)
+ end
+
+ ##
+ # Utility converter for constants
+
+ def to_s
+ proc { |obj| obj.to_s.inspect }
+ end
+
+ end
+end
+
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/tools/generator_task.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/tools/generator_task.rb
new file mode 100644
index 0000000..da72968
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/tools/generator_task.rb
@@ -0,0 +1,32 @@
+require 'ffi/tools/generator'
+require 'rake'
+require 'rake/tasklib'
+
+##
+# Add Rake tasks that generate files with C structs for FFI::Struct and C constants.
+#
+# @example a simple example for your Rakefile
+# require "ffi/tools/generator_task"
+# # Add a task to generate my_object.rb out of my_object.rb.ffi
+# FFI::Generator::Task.new ["my_object.rb"], cflags: "-I/usr/local/mylibrary"
+#
+# The generated files are also added to the 'clear' task.
+#
+# @see FFI::Generator for a description of the file content
+class FFI::Generator::Task < Rake::TaskLib
+
+ def initialize(rb_names, options={})
+ task :clean do rm_f rb_names end
+
+ rb_names.each do |rb_name|
+ ffi_name = "#{rb_name}.ffi"
+
+ file rb_name => ffi_name do |t|
+ puts "Generating #{rb_name}..." if Rake.application.options.trace
+
+ FFI::Generator.new ffi_name, rb_name, options
+ end
+ end
+ end
+
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/tools/struct_generator.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/tools/struct_generator.rb
new file mode 100644
index 0000000..3a951c3
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/tools/struct_generator.rb
@@ -0,0 +1,195 @@
+require 'tempfile'
+
+module FFI
+
+ ##
+ # Generates an FFI Struct layout.
+ #
+ # Given the @@@ portion in:
+ #
+ # class Zlib::ZStream < FFI::Struct
+ # @@@
+ # name "struct z_stream_s"
+ # include "zlib.h"
+ #
+ # field :next_in, :pointer
+ # field :avail_in, :uint
+ # field :total_in, :ulong
+ #
+ # # ...
+ # @@@
+ # end
+ #
+ # StructGenerator will create the layout:
+ #
+ # layout :next_in, :pointer, 0,
+ # :avail_in, :uint, 4,
+ # :total_in, :ulong, 8,
+ # # ...
+ #
+ # StructGenerator does its best to pad the layout it produces to preserve
+ # line numbers. Place the struct definition as close to the top of the file
+ # for best results.
+
+ class StructGenerator
+ @options = {}
+ attr_accessor :size
+ attr_reader :fields
+
+ def initialize(name, options = {})
+ @name = name
+ @struct_name = nil
+ @includes = []
+ @fields = []
+ @found = false
+ @size = nil
+
+ if block_given? then
+ yield self
+ calculate self.class.options.merge(options)
+ end
+ end
+ def self.options=(options)
+ @options = options
+ end
+ def self.options
+ @options
+ end
+ def calculate(options = {})
+ binary = File.join Dir.tmpdir, "rb_struct_gen_bin_#{Process.pid}"
+
+ raise "struct name not set" if @struct_name.nil?
+
+ Tempfile.open("#{@name}.struct_generator") do |f|
+ f.puts "#include <stdio.h>"
+
+ @includes.each do |inc|
+ f.puts "#include <#{inc}>"
+ end
+
+ f.puts "#include <stddef.h>\n\n"
+ f.puts "int main(int argc, char **argv)\n{"
+ f.puts " #{@struct_name} s;"
+ f.puts %[ printf("sizeof(#{@struct_name}) %u\\n", (unsigned int) sizeof(#{@struct_name}));]
+
+ @fields.each do |field|
+ f.puts <<-EOF
+ printf("#{field.name} %u %u\\n", (unsigned int) offsetof(#{@struct_name}, #{field.name}),
+ (unsigned int) sizeof(s.#{field.name}));
+ EOF
+ end
+
+ f.puts "\n return 0;\n}"
+ f.flush
+
+ cc = ENV['CC'] || 'gcc'
+ output = `#{cc} #{options[:cppflags]} #{options[:cflags]} -D_DARWIN_USE_64_BIT_INODE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -x c -Wall -Werror #{f.path} -o #{binary} 2>&1`
+
+ unless $?.success? then
+ @found = false
+ output = output.split("\n").map { |l| "\t#{l}" }.join "\n"
+ raise "Compilation error generating struct #{@name} (#{@struct_name}):\n#{output}"
+ end
+ end
+
+ output = `#{binary}`.split "\n"
+ File.unlink(binary + (FFI::Platform.windows? ? ".exe" : ""))
+ sizeof = output.shift
+ unless @size
+ m = /\s*sizeof\([^)]+\) (\d+)/.match sizeof
+ @size = m[1]
+ end
+
+ line_no = 0
+ output.each do |line|
+ md = line.match(/.+ (\d+) (\d+)/)
+ @fields[line_no].offset = md[1].to_i
+ @fields[line_no].size = md[2].to_i
+
+ line_no += 1
+ end
+
+ @found = true
+ end
+
+ def field(name, type=nil)
+ field = Field.new(name, type)
+ @fields << field
+ return field
+ end
+
+ def found?
+ @found
+ end
+
+ def dump_config(io)
+ io.puts "rbx.platform.#{@name}.sizeof = #{@size}"
+
+ @fields.each { |field| io.puts field.to_config(@name) }
+ end
+
+ def generate_layout
+ buf = ""
+
+ @fields.each_with_index do |field, i|
+ if buf.empty?
+ buf << "layout :#{field.name}, :#{field.type}, #{field.offset}"
+ else
+ buf << " :#{field.name}, :#{field.type}, #{field.offset}"
+ end
+
+ if i < @fields.length - 1
+ buf << ",\n"
+ end
+ end
+
+ buf
+ end
+
+ def get_field(name)
+ @fields.find { |f| name == f.name }
+ end
+
+ def include(i)
+ @includes << i
+ end
+
+ def name(n)
+ @struct_name = n
+ end
+
+ end
+
+ ##
+ # A field in a Struct.
+
+ class StructGenerator::Field
+
+ attr_reader :name
+ attr_reader :type
+ attr_reader :offset
+ attr_accessor :size
+
+ def initialize(name, type)
+ @name = name
+ @type = type
+ @offset = nil
+ @size = nil
+ end
+
+ def offset=(o)
+ @offset = o
+ end
+
+ def to_config(name)
+ buf = []
+ buf << "rbx.platform.#{name}.#{@name}.offset = #{@offset}"
+ buf << "rbx.platform.#{name}.#{@name}.size = #{@size}"
+ buf << "rbx.platform.#{name}.#{@name}.type = #{@type}" if @type
+ buf
+ end
+
+ end
+
+end
+
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/types.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/types.rb
new file mode 100644
index 0000000..6f3ee4b
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/types.rb
@@ -0,0 +1,222 @@
+#
+# Copyright (C) 2008-2010 Wayne Meissner
+# Copyright (c) 2007, 2008 Evan Phoenix
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+# see {file:README}
+module FFI
+
+ # Unless custom_typedefs already defined in the C-ext?
+ unless defined?(custom_typedefs)
+ # Truffleruby and JRuby don't support Ractor so far.
+ # So they don't need separation between builtin and custom types.
+ def self.custom_typedefs
+ TypeDefs
+ end
+ writable_typemap = true
+ end
+
+ class << self
+
+ private :custom_typedefs
+
+ # @param [Type, DataConverter, Symbol] old type definition used by {FFI.find_type}
+ # @param [Symbol] add new type definition's name to add
+ # @return [Type]
+ # Add a definition type to type definitions.
+ #
+ # The type definition is local per Ractor.
+ def typedef(old, add)
+ tm = custom_typedefs
+ tm[add] = find_type(old)
+ end
+
+ # (see FFI.typedef)
+ def add_typedef(old, add)
+ typedef old, add
+ end
+
+ private def __typedef(old, add)
+ TypeDefs[add] = find_type(old, TypeDefs)
+ end
+
+ # @param [Type, DataConverter, Symbol] name
+ # @param [Hash] type_map if nil, {FFI::TypeDefs} is used
+ # @return [Type]
+ # Find a type in +type_map+ ({FFI::TypeDefs}, by default) from
+ # a type objet, a type name (symbol). If +name+ is a {DataConverter},
+ # a new {Type::Mapped} is created.
+ def find_type(name, type_map = nil)
+ if name.is_a?(Type)
+ name
+
+ elsif type_map&.has_key?(name)
+ type_map[name]
+
+ elsif (tm=custom_typedefs).has_key?(name)
+ tm[name]
+
+ elsif TypeDefs.has_key?(name)
+ TypeDefs[name]
+
+ elsif name.is_a?(DataConverter)
+ # Add a typedef so next time the converter is used, it hits the cache
+ tm = (type_map || custom_typedefs)
+ tm[name] = Type::Mapped.new(name)
+ else
+ raise TypeError, "unable to resolve type '#{name}'"
+ end
+ end
+
+ # @param type +type+ is an instance of class accepted by {FFI.find_type}
+ # @return [Integer]
+ # Get +type+ size, in bytes.
+ def type_size(type)
+ find_type(type).size
+ end
+ end
+
+ # List of type definitions
+ TypeDefs.merge!({
+ # The C void type; only useful for function return types
+ :void => Type::VOID,
+
+ # C boolean type
+ :bool => Type::BOOL,
+
+ # C nul-terminated string
+ :string => Type::STRING,
+
+ # C signed char
+ :char => Type::CHAR,
+ # C unsigned char
+ :uchar => Type::UCHAR,
+
+ # C signed short
+ :short => Type::SHORT,
+ # C unsigned short
+ :ushort => Type::USHORT,
+
+ # C signed int
+ :int => Type::INT,
+ # C unsigned int
+ :uint => Type::UINT,
+
+ # C signed long
+ :long => Type::LONG,
+
+ # C unsigned long
+ :ulong => Type::ULONG,
+
+ # C signed long long integer
+ :long_long => Type::LONG_LONG,
+
+ # C unsigned long long integer
+ :ulong_long => Type::ULONG_LONG,
+
+ # C single precision float
+ :float => Type::FLOAT,
+
+ # C double precision float
+ :double => Type::DOUBLE,
+
+ # C long double
+ :long_double => Type::LONGDOUBLE,
+
+ # Native memory address
+ :pointer => Type::POINTER,
+
+ # 8 bit signed integer
+ :int8 => Type::INT8,
+ # 8 bit unsigned integer
+ :uint8 => Type::UINT8,
+
+ # 16 bit signed integer
+ :int16 => Type::INT16,
+ # 16 bit unsigned integer
+ :uint16 => Type::UINT16,
+
+ # 32 bit signed integer
+ :int32 => Type::INT32,
+ # 32 bit unsigned integer
+ :uint32 => Type::UINT32,
+
+ # 64 bit signed integer
+ :int64 => Type::INT64,
+ # 64 bit unsigned integer
+ :uint64 => Type::UINT64,
+
+ :buffer_in => Type::BUFFER_IN,
+ :buffer_out => Type::BUFFER_OUT,
+ :buffer_inout => Type::BUFFER_INOUT,
+
+ # Used in function prototypes to indicate the arguments are variadic
+ :varargs => Type::VARARGS,
+ })
+
+ # This will convert a pointer to a Ruby string (just like `:string`), but
+ # also allow to work with the pointer itself. This is useful when you want
+ # a Ruby string already containing a copy of the data, but also the pointer
+ # to the data for you to do something with it, like freeing it, in case the
+ # library handed the memory off to the caller (Ruby-FFI).
+ #
+ # It's {typedef}'d as +:strptr+.
+ class StrPtrConverter
+ extend DataConverter
+ native_type Type::POINTER
+
+ # @param [Pointer] val
+ # @param ctx not used
+ # @return [Array(String, Pointer)]
+ # Returns a [ String, Pointer ] tuple so the C memory for the string can be freed
+ def self.from_native(val, ctx)
+ [ val.null? ? nil : val.get_string(0), val ]
+ end
+ end
+
+ __typedef(StrPtrConverter, :strptr)
+
+ # Load all the platform dependent types
+ begin
+ File.open(File.join(Platform::CONF_DIR, 'types.conf'), "r") do |f|
+ prefix = "rbx.platform.typedef."
+ f.each_line { |line|
+ if line.index(prefix) == 0
+ new_type, orig_type = line.chomp.slice(prefix.length..-1).split(/\s*=\s*/)
+ __typedef(orig_type.to_sym, new_type.to_sym)
+ end
+ }
+ end
+ __typedef :pointer, :caddr_t
+ rescue Errno::ENOENT
+ end
+
+ FFI.make_shareable(TypeDefs) unless writable_typemap
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/union.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/union.rb
new file mode 100644
index 0000000..38414ab
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/union.rb
@@ -0,0 +1,43 @@
+#
+# Copyright (C) 2009 Andrea Fazzi <andrea.fazzi@alcacoop.it>
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+require 'ffi/struct'
+
+module FFI
+
+ class Union < FFI::Struct
+ def self.builder
+ b = StructLayoutBuilder.new
+ b.union = true
+ b
+ end
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/variadic.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/variadic.rb
new file mode 100644
index 0000000..ee33409
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/variadic.rb
@@ -0,0 +1,80 @@
+#
+# Copyright (C) 2008, 2009 Wayne Meissner
+# Copyright (C) 2009 Luc Heinrich
+#
+# This file is part of ruby-ffi.
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# * Redistributions of source code must retain the above copyright notice, this
+# list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright notice
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+# * Neither the name of the Ruby FFI project nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+module FFI
+ class VariadicInvoker
+ def call(*args, &block)
+ param_types = Array.new(@fixed)
+ param_values = Array.new
+ @fixed.each_with_index do |t, i|
+ param_values << args[i]
+ end
+ i = @fixed.length
+ while i < args.length
+ param_types << FFI.find_type(args[i], @type_map)
+ param_values << args[i + 1]
+ i += 2
+ end
+ invoke(param_types, param_values, &block)
+ end
+
+ #
+ # Attach the invoker to module +mod+ as +mname+
+ #
+ def attach(mod, mname)
+ invoker = self
+ params = "*args"
+ call = "call"
+ mname = mname.to_sym
+ mod.module_eval <<-code, __FILE__, __LINE__
+ @ffi_functions = {} unless defined?(@ffi_functions)
+ @ffi_functions[#{mname.inspect}] = invoker
+
+ def self.#{mname}(#{params})
+ @ffi_functions[#{mname.inspect}].#{call}(#{params})
+ end
+
+ define_method(#{mname.inspect}, &method(#{mname.inspect}))
+ code
+ invoker
+ end
+
+ # Retrieve Array of parameter types
+ #
+ # This method returns an Array of FFI types accepted as function parameters.
+ #
+ # @return [Array<FFI::Type>]
+ def param_types
+ [*@fixed, Type::Builtin::VARARGS]
+ end
+ end
+end
diff --git a/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/version.rb b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/version.rb
new file mode 100644
index 0000000..59c95df
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/ffi-1.17.4-arm64-darwin/lib/ffi/version.rb
@@ -0,0 +1,3 @@
+module FFI
+ VERSION = '1.17.4'
+end