diff --git a/src/mod/languages/mod_managed/freeswitch_wrap.cxx b/src/mod/languages/mod_managed/freeswitch_wrap.cxx
index a4d3a87787..07efc7d898 100644
--- a/src/mod/languages/mod_managed/freeswitch_wrap.cxx
+++ b/src/mod/languages/mod_managed/freeswitch_wrap.cxx
@@ -8545,6 +8545,68 @@ SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_SWITCH_CRYPTO_MKI_MAX_get___
 }
 
 
+SWIGEXPORT void SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_coredb_handle_in_memory_set___(void * jarg1, int jarg2) {
+  switch_coredb_handle *arg1 = (switch_coredb_handle *) 0 ;
+  switch_bool_t arg2 ;
+  
+  arg1 = (switch_coredb_handle *)jarg1; 
+  arg2 = (switch_bool_t)jarg2; 
+  if (arg1) (arg1)->in_memory = arg2;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_coredb_handle_in_memory_get___(void * jarg1) {
+  int jresult ;
+  switch_coredb_handle *arg1 = (switch_coredb_handle *) 0 ;
+  switch_bool_t result;
+  
+  arg1 = (switch_coredb_handle *)jarg1; 
+  result = (switch_bool_t) ((arg1)->in_memory);
+  jresult = (int)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_coredb_handle_handle_set___(void * jarg1, void * jarg2) {
+  switch_coredb_handle *arg1 = (switch_coredb_handle *) 0 ;
+  switch_core_db_t *arg2 = (switch_core_db_t *) 0 ;
+  
+  arg1 = (switch_coredb_handle *)jarg1; 
+  arg2 = (switch_core_db_t *)jarg2; 
+  if (arg1) (arg1)->handle = arg2;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_coredb_handle_handle_get___(void * jarg1) {
+  void * jresult ;
+  switch_coredb_handle *arg1 = (switch_coredb_handle *) 0 ;
+  switch_core_db_t *result = 0 ;
+  
+  arg1 = (switch_coredb_handle *)jarg1; 
+  result = (switch_core_db_t *) ((arg1)->handle);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_FreeSWITCHfNative_new_switch_coredb_handle___() {
+  void * jresult ;
+  switch_coredb_handle *result = 0 ;
+  
+  result = (switch_coredb_handle *)new switch_coredb_handle();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_FreeSWITCHfNative_delete_switch_coredb_handle___(void * jarg1) {
+  switch_coredb_handle *arg1 = (switch_coredb_handle *) 0 ;
+  
+  arg1 = (switch_coredb_handle *)jarg1; 
+  delete arg1;
+}
+
+
 SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_db_close___(void * jarg1) {
   int jresult ;
   switch_core_db_t *arg1 = (switch_core_db_t *) 0 ;
@@ -8571,6 +8633,20 @@ SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_db_open___(char
 }
 
 
+SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_db_open_v2___(char * jarg1, void * jarg2) {
+  int jresult ;
+  char *arg1 = (char *) 0 ;
+  switch_core_db_t **arg2 = (switch_core_db_t **) 0 ;
+  int result;
+  
+  arg1 = (char *)jarg1; 
+  arg2 = (switch_core_db_t **)jarg2; 
+  result = (int)switch_core_db_open_v2((char const *)arg1,arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
 SWIGEXPORT void * SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_db_column_text___(void * jarg1, int jarg2) {
   void * jresult ;
   switch_core_db_stmt_t *arg1 = (switch_core_db_stmt_t *) 0 ;
@@ -12827,6 +12903,14 @@ SWIGEXPORT void SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_memory_pool_tag
 }
 
 
+SWIGEXPORT void SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_pool_stats___(void * jarg1) {
+  switch_stream_handle_t *arg1 = (switch_stream_handle_t *) 0 ;
+  
+  arg1 = (switch_stream_handle_t *)jarg1; 
+  switch_core_pool_stats(arg1);
+}
+
+
 SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_perform_new_memory_pool___(void * jarg1, char * jarg2, char * jarg3, int jarg4) {
   int jresult ;
   switch_memory_pool_t **arg1 = (switch_memory_pool_t **) 0 ;
@@ -15442,6 +15526,18 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_db_open_file_
 }
 
 
+SWIGEXPORT void * SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_db_open_in_memory___(char * jarg1) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  switch_core_db_t *result = 0 ;
+  
+  arg1 = (char *)jarg1; 
+  result = (switch_core_db_t *)switch_core_db_open_in_memory((char const *)arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_core_db_persistant_execute___(void * jarg1, char * jarg2, unsigned long jarg3) {
   int jresult ;
   switch_core_db_t *arg1 = (switch_core_db_t *) 0 ;
@@ -16952,10 +17048,10 @@ SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_CACHE_DB_LEN_get___() {
 
 SWIGEXPORT void SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_cache_db_native_handle_t_core_db_dbh_set___(void * jarg1, void * jarg2) {
   switch_cache_db_native_handle_t *arg1 = (switch_cache_db_native_handle_t *) 0 ;
-  switch_core_db_t *arg2 = (switch_core_db_t *) 0 ;
+  switch_coredb_handle_t *arg2 = (switch_coredb_handle_t *) 0 ;
   
   arg1 = (switch_cache_db_native_handle_t *)jarg1; 
-  arg2 = (switch_core_db_t *)jarg2; 
+  arg2 = (switch_coredb_handle_t *)jarg2; 
   if (arg1) (arg1)->core_db_dbh = arg2;
 }
 
@@ -16963,10 +17059,10 @@ SWIGEXPORT void SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_cache_db_native_hand
 SWIGEXPORT void * SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_cache_db_native_handle_t_core_db_dbh_get___(void * jarg1) {
   void * jresult ;
   switch_cache_db_native_handle_t *arg1 = (switch_cache_db_native_handle_t *) 0 ;
-  switch_core_db_t *result = 0 ;
+  switch_coredb_handle_t *result = 0 ;
   
   arg1 = (switch_cache_db_native_handle_t *)jarg1; 
-  result = (switch_core_db_t *) ((arg1)->core_db_dbh);
+  result = (switch_coredb_handle_t *) ((arg1)->core_db_dbh);
   jresult = (void *)result; 
   return jresult;
 }
@@ -17064,6 +17160,28 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_cache_db_core_db_o
 }
 
 
+SWIGEXPORT void SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_cache_db_core_db_options_t_in_memory_set___(void * jarg1, int jarg2) {
+  switch_cache_db_core_db_options_t *arg1 = (switch_cache_db_core_db_options_t *) 0 ;
+  switch_bool_t arg2 ;
+  
+  arg1 = (switch_cache_db_core_db_options_t *)jarg1; 
+  arg2 = (switch_bool_t)jarg2; 
+  if (arg1) (arg1)->in_memory = arg2;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_cache_db_core_db_options_t_in_memory_get___(void * jarg1) {
+  int jresult ;
+  switch_cache_db_core_db_options_t *arg1 = (switch_cache_db_core_db_options_t *) 0 ;
+  switch_bool_t result;
+  
+  arg1 = (switch_cache_db_core_db_options_t *)jarg1; 
+  result = (switch_bool_t) ((arg1)->in_memory);
+  jresult = (int)result; 
+  return jresult;
+}
+
+
 SWIGEXPORT void * SWIGSTDCALL CSharp_FreeSWITCHfNative_new_switch_cache_db_core_db_options_t___() {
   void * jresult ;
   switch_cache_db_core_db_options_t *result = 0 ;
@@ -47042,55 +47160,62 @@ SWIGEXPORT void * SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_xml_get___(void *
 }
 
 
-SWIGEXPORT char * SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_xml_toxml___(void * jarg1, int jarg2) {
+SWIGEXPORT char * SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_xml_toxml_ex___(void * jarg1, int jarg2, int jarg3) {
   char * jresult ;
   switch_xml_t arg1 = (switch_xml_t) 0 ;
   switch_bool_t arg2 ;
+  switch_bool_t arg3 ;
   char *result = 0 ;
   
   arg1 = (switch_xml_t)jarg1; 
   arg2 = (switch_bool_t)jarg2; 
-  result = (char *)switch_xml_toxml(arg1,arg2);
+  arg3 = (switch_bool_t)jarg3; 
+  result = (char *)switch_xml_toxml_ex(arg1,arg2,arg3);
   jresult = SWIG_csharp_string_callback((const char *)result); 
   return jresult;
 }
 
 
-SWIGEXPORT char * SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_xml_toxml_nolock___(void * jarg1, int jarg2) {
+SWIGEXPORT char * SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_xml_toxml_nolock_ex___(void * jarg1, int jarg2, int jarg3) {
   char * jresult ;
   switch_xml_t arg1 = (switch_xml_t) 0 ;
   switch_bool_t arg2 ;
+  switch_bool_t arg3 ;
   char *result = 0 ;
   
   arg1 = (switch_xml_t)jarg1; 
   arg2 = (switch_bool_t)jarg2; 
-  result = (char *)switch_xml_toxml_nolock(arg1,arg2);
+  arg3 = (switch_bool_t)jarg3; 
+  result = (char *)switch_xml_toxml_nolock_ex(arg1,arg2,arg3);
   jresult = SWIG_csharp_string_callback((const char *)result); 
   return jresult;
 }
 
 
-SWIGEXPORT char * SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_xml_tohtml___(void * jarg1, int jarg2) {
+SWIGEXPORT char * SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_xml_tohtml_ex___(void * jarg1, int jarg2, int jarg3) {
   char * jresult ;
   switch_xml_t arg1 = (switch_xml_t) 0 ;
   switch_bool_t arg2 ;
+  switch_bool_t arg3 ;
   char *result = 0 ;
   
   arg1 = (switch_xml_t)jarg1; 
   arg2 = (switch_bool_t)jarg2; 
-  result = (char *)switch_xml_tohtml(arg1,arg2);
+  arg3 = (switch_bool_t)jarg3; 
+  result = (char *)switch_xml_tohtml_ex(arg1,arg2,arg3);
   jresult = SWIG_csharp_string_callback((const char *)result); 
   return jresult;
 }
 
 
-SWIGEXPORT char * SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_xml_toxml_buf___(void * jarg1, char * jarg2, void * jarg3, void * jarg4, int jarg5) {
+SWIGEXPORT char * SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_xml_toxml_buf_ex___(void * jarg1, char * jarg2, void * jarg3, void * jarg4, int jarg5, int jarg6) {
   char * jresult ;
   switch_xml_t arg1 = (switch_xml_t) 0 ;
   char *arg2 = (char *) 0 ;
   switch_size_t arg3 ;
   switch_size_t arg4 ;
   switch_bool_t arg5 ;
+  switch_bool_t arg6 ;
   switch_size_t *argp3 ;
   switch_size_t *argp4 ;
   char *result = 0 ;
@@ -47110,7 +47235,8 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_xml_toxml_buf___(v
   }
   arg4 = *argp4; 
   arg5 = (switch_bool_t)jarg5; 
-  result = (char *)switch_xml_toxml_buf(arg1,arg2,arg3,arg4,arg5);
+  arg6 = (switch_bool_t)jarg6; 
+  result = (char *)switch_xml_toxml_buf_ex(arg1,arg2,arg3,arg4,arg5,arg6);
   jresult = SWIG_csharp_string_callback((const char *)result); 
   return jresult;
 }
diff --git a/src/mod/languages/mod_managed/managed/swig.cs b/src/mod/languages/mod_managed/managed/swig.cs
index fcb1241d12..884806bcab 100644
--- a/src/mod/languages/mod_managed/managed/swig.cs
+++ b/src/mod/languages/mod_managed/managed/swig.cs
@@ -7573,7 +7573,8 @@ namespace FreeSWITCH.Native {
 
 public enum cache_db_flag_t {
   CDF_INUSE = (1 << 0),
-  CDF_PRUNE = (1 << 1)
+  CDF_PRUNE = (1 << 1),
+  CDF_NONEXPIRING = (1 << 2)
 }
 
 }
@@ -7789,6 +7790,11 @@ public class freeswitch {
     return ret;
   }
 
+  public static int switch_core_db_open_v2(string filename, SWIGTYPE_p_p_sqlite3 ppDb) {
+    int ret = freeswitchPINVOKE.switch_core_db_open_v2(filename, SWIGTYPE_p_p_sqlite3.getCPtr(ppDb));
+    return ret;
+  }
+
   public static SWIGTYPE_p_unsigned_char switch_core_db_column_text(SWIGTYPE_p_sqlite3_stmt stmt, int iCol) {
     global::System.IntPtr cPtr = freeswitchPINVOKE.switch_core_db_column_text(SWIGTYPE_p_sqlite3_stmt.getCPtr(stmt), iCol);
     SWIGTYPE_p_unsigned_char ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_unsigned_char(cPtr, false);
@@ -8303,6 +8309,10 @@ else
     freeswitchPINVOKE.switch_core_memory_pool_tag(SWIGTYPE_p_apr_pool_t.getCPtr(pool), tag);
   }
 
+  public static void switch_core_pool_stats(switch_stream_handle stream) {
+    freeswitchPINVOKE.switch_core_pool_stats(switch_stream_handle.getCPtr(stream));
+  }
+
   public static switch_status_t switch_core_perform_new_memory_pool(SWIGTYPE_p_p_apr_pool_t pool, string file, string func, int line) {
     switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_perform_new_memory_pool(SWIGTYPE_p_p_apr_pool_t.getCPtr(pool), file, func, line);
     return ret;
@@ -9245,6 +9255,12 @@ else
     return ret;
   }
 
+  public static SWIGTYPE_p_sqlite3 switch_core_db_open_in_memory(string uri) {
+    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_core_db_open_in_memory(uri);
+    SWIGTYPE_p_sqlite3 ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_sqlite3(cPtr, false);
+    return ret;
+  }
+
   public static switch_status_t switch_core_db_persistant_execute(SWIGTYPE_p_sqlite3 db, string sql, uint retries) {
     switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_db_persistant_execute(SWIGTYPE_p_sqlite3.getCPtr(db), sql, retries);
     return ret;
@@ -14174,23 +14190,23 @@ else
     return ret;
   }
 
-  public static string switch_xml_toxml(switch_xml xml, switch_bool_t prn_header) {
-    string ret = freeswitchPINVOKE.switch_xml_toxml(switch_xml.getCPtr(xml), (int)prn_header);
+  public static string switch_xml_toxml_ex(switch_xml xml, switch_bool_t prn_header, switch_bool_t use_utf8_encoding) {
+    string ret = freeswitchPINVOKE.switch_xml_toxml_ex(switch_xml.getCPtr(xml), (int)prn_header, (int)use_utf8_encoding);
     return ret;
   }
 
-  public static string switch_xml_toxml_nolock(switch_xml xml, switch_bool_t prn_header) {
-    string ret = freeswitchPINVOKE.switch_xml_toxml_nolock(switch_xml.getCPtr(xml), (int)prn_header);
+  public static string switch_xml_toxml_nolock_ex(switch_xml xml, switch_bool_t prn_header, switch_bool_t use_utf8_encoding) {
+    string ret = freeswitchPINVOKE.switch_xml_toxml_nolock_ex(switch_xml.getCPtr(xml), (int)prn_header, (int)use_utf8_encoding);
     return ret;
   }
 
-  public static string switch_xml_tohtml(switch_xml xml, switch_bool_t prn_header) {
-    string ret = freeswitchPINVOKE.switch_xml_tohtml(switch_xml.getCPtr(xml), (int)prn_header);
+  public static string switch_xml_tohtml_ex(switch_xml xml, switch_bool_t prn_header, switch_bool_t use_utf8_encoding) {
+    string ret = freeswitchPINVOKE.switch_xml_tohtml_ex(switch_xml.getCPtr(xml), (int)prn_header, (int)use_utf8_encoding);
     return ret;
   }
 
-  public static string switch_xml_toxml_buf(switch_xml xml, string buf, SWIGTYPE_p_switch_size_t buflen, SWIGTYPE_p_switch_size_t offset, switch_bool_t prn_header) {
-    string ret = freeswitchPINVOKE.switch_xml_toxml_buf(switch_xml.getCPtr(xml), buf, SWIGTYPE_p_switch_size_t.getCPtr(buflen), SWIGTYPE_p_switch_size_t.getCPtr(offset), (int)prn_header);
+  public static string switch_xml_toxml_buf_ex(switch_xml xml, string buf, SWIGTYPE_p_switch_size_t buflen, SWIGTYPE_p_switch_size_t offset, switch_bool_t prn_header, switch_bool_t use_utf8_encoding) {
+    string ret = freeswitchPINVOKE.switch_xml_toxml_buf_ex(switch_xml.getCPtr(xml), buf, SWIGTYPE_p_switch_size_t.getCPtr(buflen), SWIGTYPE_p_switch_size_t.getCPtr(offset), (int)prn_header, (int)use_utf8_encoding);
     if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve();
     return ret;
   }
@@ -17339,12 +17355,33 @@ class freeswitchPINVOKE {
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_SWITCH_CRYPTO_MKI_MAX_get___")]
   public static extern int SWITCH_CRYPTO_MKI_MAX_get();
 
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_coredb_handle_in_memory_set___")]
+  public static extern void switch_coredb_handle_in_memory_set(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
+
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_coredb_handle_in_memory_get___")]
+  public static extern int switch_coredb_handle_in_memory_get(global::System.Runtime.InteropServices.HandleRef jarg1);
+
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_coredb_handle_handle_set___")]
+  public static extern void switch_coredb_handle_handle_set(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
+
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_coredb_handle_handle_get___")]
+  public static extern global::System.IntPtr switch_coredb_handle_handle_get(global::System.Runtime.InteropServices.HandleRef jarg1);
+
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_new_switch_coredb_handle___")]
+  public static extern global::System.IntPtr new_switch_coredb_handle();
+
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_delete_switch_coredb_handle___")]
+  public static extern void delete_switch_coredb_handle(global::System.Runtime.InteropServices.HandleRef jarg1);
+
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_db_close___")]
   public static extern int switch_core_db_close(global::System.Runtime.InteropServices.HandleRef jarg1);
 
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_db_open___")]
   public static extern int switch_core_db_open(string jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
 
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_db_open_v2___")]
+  public static extern int switch_core_db_open_v2(string jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
+
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_db_column_text___")]
   public static extern global::System.IntPtr switch_core_db_column_text(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
 
@@ -18407,6 +18444,9 @@ class freeswitchPINVOKE {
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_memory_pool_tag___")]
   public static extern void switch_core_memory_pool_tag(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2);
 
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_pool_stats___")]
+  public static extern void switch_core_pool_stats(global::System.Runtime.InteropServices.HandleRef jarg1);
+
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_perform_new_memory_pool___")]
   public static extern int switch_core_perform_new_memory_pool(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2, string jarg3, int jarg4);
 
@@ -18968,6 +19008,9 @@ class freeswitchPINVOKE {
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_db_open_file___")]
   public static extern global::System.IntPtr switch_core_db_open_file(string jarg1);
 
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_db_open_in_memory___")]
+  public static extern global::System.IntPtr switch_core_db_open_in_memory(string jarg1);
+
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_core_db_persistant_execute___")]
   public static extern int switch_core_db_persistant_execute(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2, uint jarg3);
 
@@ -19349,6 +19392,12 @@ class freeswitchPINVOKE {
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_cache_db_core_db_options_t_db_path_get___")]
   public static extern string switch_cache_db_core_db_options_t_db_path_get(global::System.Runtime.InteropServices.HandleRef jarg1);
 
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_cache_db_core_db_options_t_in_memory_set___")]
+  public static extern void switch_cache_db_core_db_options_t_in_memory_set(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
+
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_cache_db_core_db_options_t_in_memory_get___")]
+  public static extern int switch_cache_db_core_db_options_t_in_memory_get(global::System.Runtime.InteropServices.HandleRef jarg1);
+
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_new_switch_cache_db_core_db_options_t___")]
   public static extern global::System.IntPtr new_switch_cache_db_core_db_options_t();
 
@@ -26450,17 +26499,17 @@ class freeswitchPINVOKE {
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_xml_get___")]
   public static extern global::System.IntPtr switch_xml_get(global::System.Runtime.InteropServices.HandleRef jarg1);
 
-  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_xml_toxml___")]
-  public static extern string switch_xml_toxml(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_xml_toxml_ex___")]
+  public static extern string switch_xml_toxml_ex(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2, int jarg3);
 
-  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_xml_toxml_nolock___")]
-  public static extern string switch_xml_toxml_nolock(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_xml_toxml_nolock_ex___")]
+  public static extern string switch_xml_toxml_nolock_ex(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2, int jarg3);
 
-  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_xml_tohtml___")]
-  public static extern string switch_xml_tohtml(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_xml_tohtml_ex___")]
+  public static extern string switch_xml_tohtml_ex(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2, int jarg3);
 
-  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_xml_toxml_buf___")]
-  public static extern string switch_xml_toxml_buf(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2, global::System.Runtime.InteropServices.HandleRef jarg3, global::System.Runtime.InteropServices.HandleRef jarg4, int jarg5);
+  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_xml_toxml_buf_ex___")]
+  public static extern string switch_xml_toxml_buf_ex(global::System.Runtime.InteropServices.HandleRef jarg1, string jarg2, global::System.Runtime.InteropServices.HandleRef jarg3, global::System.Runtime.InteropServices.HandleRef jarg4, int jarg5, int jarg6);
 
   [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_xml_free___")]
   public static extern void switch_xml_free(global::System.Runtime.InteropServices.HandleRef jarg1);
@@ -30177,6 +30226,16 @@ public class switch_cache_db_core_db_options_t : global::System.IDisposable {
     } 
   }
 
+  public switch_bool_t in_memory {
+    set {
+      freeswitchPINVOKE.switch_cache_db_core_db_options_t_in_memory_set(swigCPtr, (int)value);
+    } 
+    get {
+      switch_bool_t ret = (switch_bool_t)freeswitchPINVOKE.switch_cache_db_core_db_options_t_in_memory_get(swigCPtr);
+      return ret;
+    } 
+  }
+
   public switch_cache_db_core_db_options_t() : this(freeswitchPINVOKE.new_switch_cache_db_core_db_options_t(), true) {
   }
 
@@ -30343,13 +30402,13 @@ public class switch_cache_db_native_handle_t : global::System.IDisposable {
     }
   }
 
-  public SWIGTYPE_p_sqlite3 core_db_dbh {
+  public switch_coredb_handle core_db_dbh {
     set {
-      freeswitchPINVOKE.switch_cache_db_native_handle_t_core_db_dbh_set(swigCPtr, SWIGTYPE_p_sqlite3.getCPtr(value));
+      freeswitchPINVOKE.switch_cache_db_native_handle_t_core_db_dbh_set(swigCPtr, switch_coredb_handle.getCPtr(value));
     } 
     get {
       global::System.IntPtr cPtr = freeswitchPINVOKE.switch_cache_db_native_handle_t_core_db_dbh_get(swigCPtr);
-      SWIGTYPE_p_sqlite3 ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_sqlite3(cPtr, false);
+      switch_coredb_handle ret = (cPtr == global::System.IntPtr.Zero) ? null : new switch_coredb_handle(cPtr, false);
       return ret;
     } 
   }
@@ -33289,7 +33348,9 @@ namespace FreeSWITCH.Native {
   SCF_DIALPLAN_TIMESTAMPS = (1 << 24),
   SCF_CPF_SOFT_PREFIX = (1 << 25),
   SCF_CPF_SOFT_LOOKUP = (1 << 26),
-  SCF_EVENT_CHANNEL_ENABLE_HIERARCHY_DELIVERY = (1 << 27)
+  SCF_EVENT_CHANNEL_ENABLE_HIERARCHY_DELIVERY = (1 << 27),
+  SCF_EVENT_CHANNEL_HIERARCHY_DELIVERY_ONCE = (1 << 28),
+  SCF_EVENT_CHANNEL_LOG_UNDELIVERABLE_JSON = (1 << 29)
 }
 
 }
@@ -33881,6 +33942,75 @@ public class switch_core_time_duration : global::System.IDisposable {
 
 namespace FreeSWITCH.Native {
 
+public class switch_coredb_handle : global::System.IDisposable {
+  private global::System.Runtime.InteropServices.HandleRef swigCPtr;
+  protected bool swigCMemOwn;
+
+  internal switch_coredb_handle(global::System.IntPtr cPtr, bool cMemoryOwn) {
+    swigCMemOwn = cMemoryOwn;
+    swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
+  }
+
+  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(switch_coredb_handle obj) {
+    return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
+  }
+
+  ~switch_coredb_handle() {
+    Dispose();
+  }
+
+  public virtual void Dispose() {
+    lock(this) {
+      if (swigCPtr.Handle != global::System.IntPtr.Zero) {
+        if (swigCMemOwn) {
+          swigCMemOwn = false;
+          freeswitchPINVOKE.delete_switch_coredb_handle(swigCPtr);
+        }
+        swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
+      }
+      global::System.GC.SuppressFinalize(this);
+    }
+  }
+
+  public switch_bool_t in_memory {
+    set {
+      freeswitchPINVOKE.switch_coredb_handle_in_memory_set(swigCPtr, (int)value);
+    } 
+    get {
+      switch_bool_t ret = (switch_bool_t)freeswitchPINVOKE.switch_coredb_handle_in_memory_get(swigCPtr);
+      return ret;
+    } 
+  }
+
+  public SWIGTYPE_p_sqlite3 handle {
+    set {
+      freeswitchPINVOKE.switch_coredb_handle_handle_set(swigCPtr, SWIGTYPE_p_sqlite3.getCPtr(value));
+    } 
+    get {
+      global::System.IntPtr cPtr = freeswitchPINVOKE.switch_coredb_handle_handle_get(swigCPtr);
+      SWIGTYPE_p_sqlite3 ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_sqlite3(cPtr, false);
+      return ret;
+    } 
+  }
+
+  public switch_coredb_handle() : this(freeswitchPINVOKE.new_switch_coredb_handle(), true) {
+  }
+
+}
+
+}
+//------------------------------------------------------------------------------
+// <auto-generated />
+//
+// This file was automatically generated by SWIG (http://www.swig.org).
+// Version 3.0.12
+//
+// Do not make changes to this file unless you know what you are doing--modify
+// the SWIG interface file instead.
+//------------------------------------------------------------------------------
+
+namespace FreeSWITCH.Native {
+
 public class switch_cputime : global::System.IDisposable {
   private global::System.Runtime.InteropServices.HandleRef swigCPtr;
   protected bool swigCMemOwn;
@@ -36596,6 +36726,7 @@ public enum switch_event_types_t {
   SWITCH_EVENT_CALL_DETAIL,
   SWITCH_EVENT_DEVICE_STATE,
   SWITCH_EVENT_TEXT,
+  SWITCH_EVENT_SHUTDOWN_REQUESTED,
   SWITCH_EVENT_ALL
 }
 
@@ -36653,7 +36784,8 @@ namespace FreeSWITCH.Native {
   SWITCH_FILE_NOMUX = (1 << 17),
   SWITCH_FILE_BREAK_ON_CHANGE = (1 << 18),
   SWITCH_FILE_FLAG_VIDEO = (1 << 19),
-  SWITCH_FILE_FLAG_VIDEO_EOF = (1 << 20)
+  SWITCH_FILE_FLAG_VIDEO_EOF = (1 << 20),
+  SWITCH_FILE_PRE_CLOSED = (1 << 21)
 }
 
 }
@@ -41552,7 +41684,8 @@ namespace FreeSWITCH.Native {
   SMBF_SPY_VIDEO_STREAM = (1 << 22),
   SMBF_SPY_VIDEO_STREAM_BLEG = (1 << 23),
   SMBF_READ_VIDEO_PATCH = (1 << 24),
-  SMBF_READ_TEXT_STREAM = (1 << 25)
+  SMBF_READ_TEXT_STREAM = (1 << 25),
+  SMBF_FIRST = (1 << 26)
 }
 
 }
@@ -47411,7 +47544,8 @@ namespace FreeSWITCH.Native {
   SWITCH_XML_ROOT = (1 << 0),
   SWITCH_XML_NAMEM = (1 << 1),
   SWITCH_XML_TXTM = (1 << 2),
-  SWITCH_XML_DUP = (1 << 3)
+  SWITCH_XML_DUP = (1 << 3),
+  SWITCH_XML_CDATA = (1 << 4)
 }
 
 }