git » swiftpm » commit ae06c5b

Latest borogove changes

author Stephen Paul Weber
2025-07-08 20:43:36 UTC
committer Stephen Paul Weber
2025-07-08 20:43:36 UTC
parent f054841692ff691fc53609056ee182de6d78264c

Latest borogove changes

Sources/Snikket/Snikket.swift +67 -31
Sources/c_snikket/iinclude/HaxeCBridge.h +3 -1
Sources/c_snikket/iinclude/_HaxeCBridge/Internal.h +2 -2
Sources/c_snikket/iinclude/cpp/Int64Map.h +100 -0
Sources/c_snikket/iinclude/haxe/Exception.h +11 -0
Sources/c_snikket/iinclude/haxe/NativeStackTrace.h +4 -0
Sources/c_snikket/iinclude/haxe/_CallStack/CallStack_Impl_.h +67 -0
Sources/c_snikket/iinclude/haxe/exceptions/NotImplementedException.h +2 -21
Sources/c_snikket/iinclude/haxe/exceptions/PosException.h +2 -25
Sources/c_snikket/iinclude/hx/HxcppMain.h +16 -7
Sources/c_snikket/iinclude/hx/StdLibs.h +2 -1
Sources/c_snikket/iinclude/hx/TelemetryTracy.h +3 -3
Sources/c_snikket/iinclude/hx/Thread.h +21 -20
Sources/c_snikket/iinclude/snikket/Channel.h +2 -0
Sources/c_snikket/iinclude/snikket/Chat.h +2 -2
Sources/c_snikket/iinclude/snikket/Client.h +10 -0
Sources/c_snikket/iinclude/snikket/jingle/IncomingProposedSession.h +1 -1
Sources/c_snikket/iinclude/snikket/jingle/InitiatedSession.h +1 -1
Sources/c_snikket/iinclude/snikket/jingle/OutgoingProposedSession.h +1 -1
Sources/c_snikket/iinclude/snikket/jingle/Session.h +2 -2
Sources/c_snikket/iinclude/snikket/streams/XmppStropheStream.h +2 -2
Sources/c_snikket/iinclude/sys/thread/NoEventLoopException.h +2 -21
Sources/c_snikket/iinclude/sys/thread/ThreadPoolException.h +2 -19
Sources/c_snikket/iinclude/sys/thread/_FixedThreadPool/ShutdownException.h +2 -19
Sources/c_snikket/include/snikket.h +31 -4
Sources/c_snikket/src/HaxeCBridge.cpp +238 -186
Sources/c_snikket/src/_HaxeCBridge/Int64Map_Impl_.cpp +3 -3
Sources/c_snikket/src/_HaxeCBridge/Internal.cpp +15 -18
Sources/c_snikket/src/__HaxeCBridgeBindings__.cpp +86 -9
Sources/c_snikket/src/__boot__.cpp +8 -8
Sources/c_snikket/src/__files__.cpp +6 -4
Sources/c_snikket/src/cpp/Int64Map.cpp +197 -0
Sources/c_snikket/src/haxe/Exception.cpp +65 -0
Sources/c_snikket/src/haxe/NativeStackTrace.cpp +49 -0
Sources/c_snikket/src/haxe/ValueException.cpp +12 -7
Sources/c_snikket/src/haxe/_CallStack/CallStack_Impl_.cpp +371 -0
Sources/c_snikket/src/haxe/exceptions/NotImplementedException.cpp +19 -1
Sources/c_snikket/src/haxe/exceptions/PosException.cpp +23 -5
Sources/c_snikket/src/snikket/AvailableChat.cpp +12 -12
Sources/c_snikket/src/snikket/Channel.cpp +679 -648
Sources/c_snikket/src/snikket/Chat.cpp +101 -91
Sources/c_snikket/src/snikket/ChatAttachment.cpp +41 -37
Sources/c_snikket/src/snikket/ChatMessage.cpp +79 -71
Sources/c_snikket/src/snikket/ChatMessageBuilder.cpp +41 -37
Sources/c_snikket/src/snikket/Client.cpp +2328 -2155
Sources/c_snikket/src/snikket/SerializedChat.cpp +79 -79
Sources/c_snikket/src/snikket/jingle/IncomingProposedSession.cpp +108 -106
Sources/c_snikket/src/snikket/jingle/InitiatedSession.cpp +600 -569
Sources/c_snikket/src/snikket/jingle/MediaStream.cpp +45 -43
Sources/c_snikket/src/snikket/jingle/MediaStreamTrack.cpp +119 -115
Sources/c_snikket/src/snikket/jingle/OutgoingProposedSession.cpp +118 -116
Sources/c_snikket/src/snikket/jingle/OutgoingSession.cpp +17 -17
Sources/c_snikket/src/snikket/jingle/PeerConnection.cpp +270 -270
Sources/c_snikket/src/snikket/jingle/_Session/Session_Fields_.cpp +18 -18
Sources/c_snikket/src/snikket/persistence/MediaStoreFS.cpp +13 -12
Sources/c_snikket/src/snikket/persistence/Sqlite.cpp +1422 -1402
Sources/c_snikket/src/snikket/streams/XmppStropheStream.cpp +303 -283
Sources/c_snikket/src/sys/thread/NoEventLoopException.cpp +19 -1
Sources/c_snikket/src/sys/thread/ThreadPoolException.cpp +19 -1
Sources/c_snikket/src/sys/thread/_FixedThreadPool/ShutdownException.cpp +19 -1

diff --git a/Sources/Snikket/Snikket.swift b/Sources/Snikket/Snikket.swift
index c1b1996..e29e7de 100644
--- a/Sources/Snikket/Snikket.swift
+++ b/Sources/Snikket/Snikket.swift
@@ -108,7 +108,7 @@ public class MediaStoreFS: SDKObject, MediaStore, @unchecked Sendable {
 			uri,
 			{ (a0, ctx) in
 				let callback = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (String?)->Void
-				callback(useString(a0))
+				return callback(useString(a0))
 			},
 			__callback_ptr
 		)
@@ -576,7 +576,7 @@ public class Sqlite: SDKObject, KeyValueStore, Persistence, @unchecked Sendable
 			localId,
 			{ (a0, ctx) in
 				let callback = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (ChatMessage?)->Void
-				callback((a0).map({ ChatMessage($0) }))
+				return callback((a0).map({ ChatMessage($0) }))
 			},
 			__callback_ptr
 		)
@@ -596,7 +596,7 @@ public class Sqlite: SDKObject, KeyValueStore, Persistence, @unchecked Sendable
 			self.o,
 			{ (a0, a0_length, ctx) in
 				let callback = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (Array<String>)->Void
-				callback({let __r = UnsafeMutableBufferPointer<UnsafePointer<CChar>?>(start: a0, count: a0_length).map({useString($0)!});c_snikket.snikket_release(a0);return __r;}())
+				return callback({let __r = UnsafeMutableBufferPointer<UnsafePointer<CChar>?>(start: a0, count: a0_length).map({useString($0)!});c_snikket.snikket_release(a0);return __r;}())
 			},
 			__callback_ptr
 		)
@@ -1030,7 +1030,7 @@ public class MediaStreamTrack: SDKObject, @unchecked Sendable {
 			self.o,
 			{ (a0, a0_length, a1, a2, ctx) in
 				let callback = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (Array<Int16>, Int32, Int32)->Void
-				callback({let __r = UnsafeMutableBufferPointer<Int16>(start: a0, count: a0_length).map({$0});c_snikket.snikket_release(a0);return __r;}(), a1, a2)
+				return callback({let __r = UnsafeMutableBufferPointer<Int16>(start: a0, count: a0_length).map({$0});c_snikket.snikket_release(a0);return __r;}(), a1, a2)
 			},
 			__callback_ptr
 		)
@@ -1047,7 +1047,7 @@ public class MediaStreamTrack: SDKObject, @unchecked Sendable {
 			self.o,
 			{ (ctx) in
 				let callback = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! ()->Void
-				callback()
+				return callback()
 			},
 			__callback_ptr
 		)
@@ -1127,7 +1127,7 @@ public class Chat: SDKObject, @unchecked Sendable {
 			beforeTime,
 			{ (a0, a0_length, ctx) in
 				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (Array<ChatMessage>)->Void
-				handler({let __r = UnsafeMutableBufferPointer<UnsafeMutableRawPointer?>(start: a0, count: a0_length).map({ChatMessage($0!)});c_snikket.snikket_release(a0);return __r;}())
+				return handler({let __r = UnsafeMutableBufferPointer<UnsafeMutableRawPointer?>(start: a0, count: a0_length).map({ChatMessage($0!)});c_snikket.snikket_release(a0);return __r;}())
 			},
 			__handler_ptr
 		)
@@ -1149,7 +1149,7 @@ public class Chat: SDKObject, @unchecked Sendable {
 			afterTime,
 			{ (a0, a0_length, ctx) in
 				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (Array<ChatMessage>)->Void
-				handler({let __r = UnsafeMutableBufferPointer<UnsafeMutableRawPointer?>(start: a0, count: a0_length).map({ChatMessage($0!)});c_snikket.snikket_release(a0);return __r;}())
+				return handler({let __r = UnsafeMutableBufferPointer<UnsafeMutableRawPointer?>(start: a0, count: a0_length).map({ChatMessage($0!)});c_snikket.snikket_release(a0);return __r;}())
 			},
 			__handler_ptr
 		)
@@ -1171,7 +1171,7 @@ public class Chat: SDKObject, @unchecked Sendable {
 			aroundTime,
 			{ (a0, a0_length, ctx) in
 				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (Array<ChatMessage>)->Void
-				handler({let __r = UnsafeMutableBufferPointer<UnsafeMutableRawPointer?>(start: a0, count: a0_length).map({ChatMessage($0!)});c_snikket.snikket_release(a0);return __r;}())
+				return handler({let __r = UnsafeMutableBufferPointer<UnsafeMutableRawPointer?>(start: a0, count: a0_length).map({ChatMessage($0!)});c_snikket.snikket_release(a0);return __r;}())
 			},
 			__handler_ptr
 		)
@@ -1538,10 +1538,10 @@ public class Chat: SDKObject, @unchecked Sendable {
 	/**
 	 The current status of a call in this chat
 	 */
-	public func callStatus() -> String {
-		useString(c_snikket.snikket_chat_call_status(
+	public func callStatus() -> CallStatus {
+		c_snikket.snikket_chat_call_status(
 			self.o
-		))!
+		)
 	}
 
 	/**
@@ -1706,10 +1706,10 @@ public class InitiatedSession: SDKObject, Session, @unchecked Sendable {
 		)
 	}
 
-	public func callStatus() -> String {
-		useString(c_snikket.snikket_jingle_initiated_session_call_status(
+	public func callStatus() -> CallStatus {
+		c_snikket.snikket_jingle_initiated_session_call_status(
 			self.o
-		))!
+		)
 	}
 
 	public func videoTracks() -> Array<MediaStreamTrack> {
@@ -1771,7 +1771,7 @@ public class Client: SDKObject, @unchecked Sendable {
 			self.o,
 			{ (ctx) in
 				let ready = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! ()->Void
-				ready()
+				return ready()
 			},
 			__ready_ptr
 		)
@@ -1845,7 +1845,7 @@ public class Client: SDKObject, @unchecked Sendable {
 			source.o,
 			{ (a0, ctx) in
 				let callback = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (ChatAttachment?)->Void
-				callback((a0).map({ ChatAttachment($0) }))
+				return callback((a0).map({ ChatAttachment($0) }))
 			},
 			__callback_ptr
 		)
@@ -1873,7 +1873,7 @@ public class Client: SDKObject, @unchecked Sendable {
 			q,
 			{ (a0, a1, a1_length, ctx) in
 				let callback = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (String, Array<AvailableChat>)->Void
-				callback(useString(a0)!, {let __r = UnsafeMutableBufferPointer<UnsafeMutableRawPointer?>(start: a1, count: a1_length).map({AvailableChat($0!)});c_snikket.snikket_release(a1);return __r;}())
+				return callback(useString(a0)!, {let __r = UnsafeMutableBufferPointer<UnsafeMutableRawPointer?>(start: a1, count: a1_length).map({AvailableChat($0!)});c_snikket.snikket_release(a1);return __r;}())
 			},
 			__callback_ptr
 		)
@@ -1938,7 +1938,7 @@ public class Client: SDKObject, @unchecked Sendable {
 			self.o,
 			{ (a0, ctx) in
 				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (Client)->Void
-				handler(Client(a0!))
+				return handler(Client(a0!))
 			},
 			__handler_ptr
 		)
@@ -1955,7 +1955,7 @@ public class Client: SDKObject, @unchecked Sendable {
 			self.o,
 			{ (ctx) in
 				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! ()->Void
-				handler()
+				return handler()
 			},
 			__handler_ptr
 		)
@@ -1972,7 +1972,7 @@ public class Client: SDKObject, @unchecked Sendable {
 			self.o,
 			{ (ctx) in
 				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! ()->Void
-				handler()
+				return handler()
 			},
 			__handler_ptr
 		)
@@ -1989,7 +1989,24 @@ public class Client: SDKObject, @unchecked Sendable {
 			self.o,
 			{ (ctx) in
 				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! ()->Void
-				handler()
+				return handler()
+			},
+			__handler_ptr
+		)
+	}
+
+	/**
+	 Event fired when TLS checks fail, to give client the chance to override
+	 
+	 @param handler takes two arguments, the PEM of the cert and an array of DNS names, and must return true to accept or false to reject
+	 */
+	public func addTlsCheckListener(handler: @escaping (String, Array<String>)->Bool) -> Void {
+		let __handler_ptr = UnsafeMutableRawPointer(Unmanaged.passRetained(handler as AnyObject).toOpaque())
+		c_snikket.snikket_client_add_tls_check_listener(
+			self.o,
+			{ (a0, a1, a1_length, ctx) in
+				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (String, Array<String>)->Bool
+				return handler(useString(a0)!, {let __r = UnsafeMutableBufferPointer<UnsafePointer<CChar>?>(start: a1, count: a1_length).map({useString($0)!});c_snikket.snikket_release(a1);return __r;}())
 			},
 			__handler_ptr
 		)
@@ -2008,7 +2025,7 @@ public class Client: SDKObject, @unchecked Sendable {
 			self.o,
 			{ (a0, a1, ctx) in
 				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (ChatMessage, Int32)->Void
-				handler(ChatMessage(a0!), a1)
+				return handler(ChatMessage(a0!), a1)
 			},
 			__handler_ptr
 		)
@@ -2026,7 +2043,7 @@ public class Client: SDKObject, @unchecked Sendable {
 			self.o,
 			{ (a0, ctx) in
 				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (ChatMessage)->Void
-				handler(ChatMessage(a0!))
+				return handler(ChatMessage(a0!))
 			},
 			__handler_ptr
 		)
@@ -2043,7 +2060,7 @@ public class Client: SDKObject, @unchecked Sendable {
 			self.o,
 			{ (a0, a0_length, ctx) in
 				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (Array<Chat>)->Void
-				handler({let __r = UnsafeMutableBufferPointer<UnsafeMutableRawPointer?>(start: a0, count: a0_length).map({Chat($0!)});c_snikket.snikket_release(a0);return __r;}())
+				return handler({let __r = UnsafeMutableBufferPointer<UnsafeMutableRawPointer?>(start: a0, count: a0_length).map({Chat($0!)});c_snikket.snikket_release(a0);return __r;}())
 			},
 			__handler_ptr
 		)
@@ -2060,7 +2077,7 @@ public class Client: SDKObject, @unchecked Sendable {
 			self.o,
 			{ (a0, ctx) in
 				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (Session)->Void
-				handler(AnySession(a0!))
+				return handler(AnySession(a0!))
 			},
 			__handler_ptr
 		)
@@ -2069,7 +2086,7 @@ public class Client: SDKObject, @unchecked Sendable {
 	/**
 	 Event fired when a call is retracted or hung up
 	 
-	 @param handler takes one argument, the associated Chat ID
+	 @param handler takes two arguments, the associated Chat ID and Session ID
 	 */
 	public func addCallRetractListener(handler: @escaping (String, String)->Void) -> Void {
 		let __handler_ptr = UnsafeMutableRawPointer(Unmanaged.passRetained(handler as AnyObject).toOpaque())
@@ -2077,7 +2094,7 @@ public class Client: SDKObject, @unchecked Sendable {
 			self.o,
 			{ (a0, a1, ctx) in
 				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (String, String)->Void
-				handler(useString(a0)!, useString(a1)!)
+				return handler(useString(a0)!, useString(a1)!)
 			},
 			__handler_ptr
 		)
@@ -2086,7 +2103,7 @@ public class Client: SDKObject, @unchecked Sendable {
 	/**
 	 Event fired when an outgoing call starts ringing
 	 
-	 @param handler takes one argument, the associated Chat ID
+	 @param handler takes two arguments, the associated Chat ID and Session ID
 	 */
 	public func addCallRingingListener(handler: @escaping (String, String)->Void) -> Void {
 		let __handler_ptr = UnsafeMutableRawPointer(Unmanaged.passRetained(handler as AnyObject).toOpaque())
@@ -2094,7 +2111,24 @@ public class Client: SDKObject, @unchecked Sendable {
 			self.o,
 			{ (a0, a1, ctx) in
 				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (String, String)->Void
-				handler(useString(a0)!, useString(a1)!)
+				return handler(useString(a0)!, useString(a1)!)
+			},
+			__handler_ptr
+		)
+	}
+
+	/**
+	 Event fired when an existing call changes status (connecting, failed, etc)
+	 
+	 @param handler takes one argument, the associated Session
+	 */
+	public func addCallUpdateStatusListener(handler: @escaping (InitiatedSession)->Void) -> Void {
+		let __handler_ptr = UnsafeMutableRawPointer(Unmanaged.passRetained(handler as AnyObject).toOpaque())
+		c_snikket.snikket_client_add_call_update_status_listener(
+			self.o,
+			{ (a0, ctx) in
+				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (InitiatedSession)->Void
+				return handler(InitiatedSession(a0!))
 			},
 			__handler_ptr
 		)
@@ -2113,7 +2147,7 @@ public class Client: SDKObject, @unchecked Sendable {
 			self.o,
 			{ (a0, a1, a2, ctx) in
 				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (InitiatedSession, Bool, Bool)->Void
-				handler(InitiatedSession(a0!), a1, a2)
+				return handler(InitiatedSession(a0!), a1, a2)
 			},
 			__handler_ptr
 		)
@@ -2131,7 +2165,7 @@ public class Client: SDKObject, @unchecked Sendable {
 			self.o,
 			{ (a0, a1, a2, a2_length, ctx) in
 				let handler = Unmanaged<AnyObject>.fromOpaque(ctx!).takeUnretainedValue() as! (String, MediaStreamTrack, Array<MediaStream>)->Void
-				handler(useString(a0)!, MediaStreamTrack(a1!), {let __r = UnsafeMutableBufferPointer<UnsafeMutableRawPointer?>(start: a2, count: a2_length).map({MediaStream($0!)});c_snikket.snikket_release(a2);return __r;}())
+				return handler(useString(a0)!, MediaStreamTrack(a1!), {let __r = UnsafeMutableBufferPointer<UnsafeMutableRawPointer?>(start: a2, count: a2_length).map({MediaStream($0!)});c_snikket.snikket_release(a2);return __r;}())
 			},
 			__handler_ptr
 		)
@@ -2341,3 +2375,5 @@ public typealias MessageType = snikket_message_type
 public typealias MessageStatus = snikket_message_status
 
 public typealias MessageDirection = snikket_message_direction
+
+public typealias CallStatus = snikket_jingle_call_status
diff --git a/Sources/c_snikket/iinclude/HaxeCBridge.h b/Sources/c_snikket/iinclude/HaxeCBridge.h
index 6c32ea0..fdf699f 100644
--- a/Sources/c_snikket/iinclude/HaxeCBridge.h
+++ b/Sources/c_snikket/iinclude/HaxeCBridge.h
@@ -22,7 +22,7 @@ class HXCPP_CLASS_ATTRIBUTES HaxeCBridge
 	public:
 		static void mainThreadInit(::cpp::Function< bool  () > isMainThreadCb);
 
-		static void mainThreadRun(::cpp::Function< void  () > processNativeCalls,::cpp::Function< void  (const char*) > onUnhandledException);
+		static void mainThreadRun(::cpp::Function< void  () > processNativeCalls,::cpp::Function< bool  () > hasPendingNativeCalls,::cpp::Function< void  (const char*) > onUnhandledException);
 
 		static void** retainHaxeArray(::cpp::VirtualArray haxeArray);
 
@@ -30,6 +30,8 @@ class HXCPP_CLASS_ATTRIBUTES HaxeCBridge
 
 		static const char* retainHaxeString(::String haxeString);
 
+		static void retainPtr(::cpp::Int64 ptrInt64, ::Dynamic haxeObject);
+
 		static void releaseHaxePtr(void * haxePtr);
 
 		static bool isMainThread();
diff --git a/Sources/c_snikket/iinclude/_HaxeCBridge/Internal.h b/Sources/c_snikket/iinclude/_HaxeCBridge/Internal.h
index a2a1fae..66ccde1 100644
--- a/Sources/c_snikket/iinclude/_HaxeCBridge/Internal.h
+++ b/Sources/c_snikket/iinclude/_HaxeCBridge/Internal.h
@@ -7,8 +7,8 @@
 #endif
 
 HX_DECLARE_CLASS1(_HaxeCBridge,Internal)
+HX_DECLARE_CLASS1(cpp,Int64Map)
 HX_DECLARE_CLASS1(haxe,IMap)
-HX_DECLARE_CLASS2(haxe,ds,IntMap)
 HX_DECLARE_CLASS2(sys,thread,Lock)
 
 namespace _HaxeCBridge{
@@ -60,7 +60,7 @@ class HXCPP_CLASS_ATTRIBUTES Internal_obj : public ::hx::Object
 		static  ::sys::thread::Lock mainThreadWaitLock;
 		static bool mainThreadLoopActive;
 		static bool mainThreadEndIfNoPending;
-		static  ::haxe::ds::IntMap gcRetainMap;
+		static  ::cpp::Int64Map gcRetainMap;
 };
 
 } // end namespace _HaxeCBridge
diff --git a/Sources/c_snikket/iinclude/cpp/Int64Map.h b/Sources/c_snikket/iinclude/cpp/Int64Map.h
new file mode 100644
index 0000000..ba6eb76
--- /dev/null
+++ b/Sources/c_snikket/iinclude/cpp/Int64Map.h
@@ -0,0 +1,100 @@
+// Generated by Haxe 4.3.3
+#ifndef INCLUDED_cpp_Int64Map
+#define INCLUDED_cpp_Int64Map
+
+#ifndef HXCPP_H
+#include <hxcpp.h>
+#endif
+
+#ifndef INCLUDED_haxe_IMap
+#include <haxe/IMap.h>
+#endif
+HX_DECLARE_CLASS1(cpp,Int64Map)
+HX_DECLARE_CLASS1(haxe,IMap)
+
+namespace cpp{
+
+
+class HXCPP_CLASS_ATTRIBUTES Int64Map_obj : public ::hx::Object
+{
+	public:
+		typedef ::hx::Object super;
+		typedef Int64Map_obj OBJ_;
+		Int64Map_obj();
+
+	public:
+		enum { _hx_ClassId = 0x1f960db2 };
+
+		void __construct();
+		inline void *operator new(size_t inSize, bool inContainer=true,const char *inName="cpp.Int64Map")
+			{ return ::hx::Object::operator new(inSize,inContainer,inName); }
+		inline void *operator new(size_t inSize, int extra)
+			{ return ::hx::Object::operator new(inSize+extra,true,"cpp.Int64Map"); }
+		static ::hx::ObjectPtr< Int64Map_obj > __new();
+		static ::hx::ObjectPtr< Int64Map_obj > __alloc(::hx::Ctx *_hx_ctx);
+		static void * _hx_vtable;
+		static Dynamic __CreateEmpty();
+		static Dynamic __Create(::hx::DynamicArray inArgs);
+		//~Int64Map_obj();
+
+		HX_DO_RTTI_ALL;
+		::hx::Val __Field(const ::String &inString, ::hx::PropertyAccess inCallProp);
+		::hx::Val __SetField(const ::String &inString,const ::hx::Val &inValue, ::hx::PropertyAccess inCallProp);
+		void __GetFields(Array< ::String> &outFields);
+		static void __register();
+		void __Mark(HX_MARK_PARAMS);
+		void __Visit(HX_VISIT_PARAMS);
+		bool _hx_isInstanceOf(int inClassId);
+		void *_hx_getInterface(int inHash);
+		 ::Dynamic get_a7a2487a( ::Dynamic k);
+		::String __ToString() const { return HX_("Int64Map",cf,9a,3e,c9); }
+
+		 ::Dynamic h;
+		void set(::cpp::Int64 key, ::Dynamic value);
+		::Dynamic set_dyn();
+
+		 ::Dynamic get(::cpp::Int64 key);
+		::Dynamic get_dyn();
+
+		bool remove(::cpp::Int64 key);
+		::Dynamic remove_dyn();
+
+		 ::Dynamic keys();
+		::Dynamic keys_dyn();
+
+
+  inline void set(cpp::Int64 key, ::null value) { __int64_hash_set(HX_MAP_THIS,key,value); }
+  inline void set(cpp::Int64 key, bool value) { __int64_hash_set(HX_MAP_THIS,key,value); }
+  inline void set(cpp::Int64 key, char value) { __int64_hash_set_int(HX_MAP_THIS,key,value); }
+  inline void set(cpp::Int64 key, unsigned char value) { __int64_hash_set_int(HX_MAP_THIS,key,value); }
+  inline void set(cpp::Int64 key, signed char value) { __int64_hash_set_int(HX_MAP_THIS,key,value); }
+  inline void set(cpp::Int64 key, short value) { __int64_hash_set_int(HX_MAP_THIS,key,value); }
+  inline void set(cpp::Int64 key, unsigned short value) { __int64_hash_set_int(HX_MAP_THIS,key,value); }
+  inline void set(cpp::Int64 key, int value) { __int64_hash_set_int(HX_MAP_THIS,key,value); }
+  inline void set(cpp::Int64 key, unsigned int value) { __int64_hash_set_int(HX_MAP_THIS,key,value); }
+  inline void set(cpp::Int64 key, float value) { __int64_hash_set_float(HX_MAP_THIS,key,value); }
+  inline void set(cpp::Int64 key, double value) { __int64_hash_set_float(HX_MAP_THIS,key,value); }
+  inline void set(cpp::Int64 key, ::String value) { __int64_hash_set_string(HX_MAP_THIS,key,value); }
+  inline void set(cpp::Int64 key, cpp::Int64 value) { __int64_hash_set_int64(HX_MAP_THIS,key,value); }
+
+  template<typename V, typename H>
+  inline void set(cpp::Int64 key, const ::cpp::Struct<V,H> &value) {__int64_hash_set(HX_MAP_THIS,key,value); }
+  template<typename F>
+  inline void set(cpp::Int64 key, const ::cpp::Function<F> &value) {__int64_hash_set(HX_MAP_THIS,key,value); }
+  template<typename V>
+  inline void set(cpp::Int64 key, const ::cpp::Pointer<V> &value) {__int64_hash_set(HX_MAP_THIS,key,(Dynamic)value ); }
+
+  template<typename VALUE>
+  inline void set(Dynamic &key, const VALUE &value) { set( (cpp::Int64)key, value ); }
+
+  inline bool get_bool(cpp::Int64 key) { return __int64_hash_get_bool(h,key); }
+  inline int get_int(cpp::Int64 key) { return __int64_hash_get_int(h,key); }
+  inline Float get_float(cpp::Int64 key) { return __int64_hash_get_float(h,key); }
+  inline String get_string(cpp::Int64 key) { return __int64_hash_get_string(h,key); }
+  inline cpp::Int64 get_int64(cpp::Int64 key) { return __int64_hash_get_int64(h,key); }
+
+};
+
+} // end namespace cpp
+
+#endif /* INCLUDED_cpp_Int64Map */ 
diff --git a/Sources/c_snikket/iinclude/haxe/Exception.h b/Sources/c_snikket/iinclude/haxe/Exception.h
index 5e7cabd..d3748ed 100644
--- a/Sources/c_snikket/iinclude/haxe/Exception.h
+++ b/Sources/c_snikket/iinclude/haxe/Exception.h
@@ -7,6 +7,7 @@
 #endif
 
 HX_DECLARE_CLASS1(haxe,Exception)
+HX_DECLARE_CLASS1(haxe,StackItem)
 
 namespace haxe{
 
@@ -48,6 +49,7 @@ class HXCPP_CLASS_ATTRIBUTES Exception_obj : public ::hx::Object
 		static ::Dynamic caught_dyn();
 
 		::String _hx___exceptionMessage;
+		::Array< ::Dynamic> _hx___exceptionStack;
 		::Array< ::String > _hx___nativeStack;
 		int _hx___skipStack;
 		 ::Dynamic _hx___nativeException;
@@ -55,9 +57,18 @@ class HXCPP_CLASS_ATTRIBUTES Exception_obj : public ::hx::Object
 		virtual ::String toString();
 		::Dynamic toString_dyn();
 
+		void _hx___shiftStack();
+		::Dynamic _hx___shiftStack_dyn();
+
+		void _hx___unshiftStack();
+		::Dynamic _hx___unshiftStack_dyn();
+
 		::String get_message();
 		::Dynamic get_message_dyn();
 
+		::Array< ::Dynamic> get_stack();
+		::Dynamic get_stack_dyn();
+
 };
 
 } // end namespace haxe
diff --git a/Sources/c_snikket/iinclude/haxe/NativeStackTrace.h b/Sources/c_snikket/iinclude/haxe/NativeStackTrace.h
index dc1054c..86228bd 100644
--- a/Sources/c_snikket/iinclude/haxe/NativeStackTrace.h
+++ b/Sources/c_snikket/iinclude/haxe/NativeStackTrace.h
@@ -7,6 +7,7 @@
 #endif
 
 HX_DECLARE_CLASS1(haxe,NativeStackTrace)
+HX_DECLARE_CLASS1(haxe,StackItem)
 
 namespace haxe{
 
@@ -59,6 +60,9 @@ class HXCPP_CLASS_ATTRIBUTES NativeStackTrace_obj : public ::hx::Object
 		static ::Array< ::String > exceptionStack();
 		static ::Dynamic exceptionStack_dyn();
 
+		static ::Array< ::Dynamic> toHaxe(::Array< ::String > native,::hx::Null< int >  skip);
+		static ::Dynamic toHaxe_dyn();
+
 };
 
 } // end namespace haxe
diff --git a/Sources/c_snikket/iinclude/haxe/_CallStack/CallStack_Impl_.h b/Sources/c_snikket/iinclude/haxe/_CallStack/CallStack_Impl_.h
new file mode 100644
index 0000000..ad6b2df
--- /dev/null
+++ b/Sources/c_snikket/iinclude/haxe/_CallStack/CallStack_Impl_.h
@@ -0,0 +1,67 @@
+// Generated by Haxe 4.3.3
+#ifndef INCLUDED_haxe__CallStack_CallStack_Impl_
+#define INCLUDED_haxe__CallStack_CallStack_Impl_
+
+#ifndef HXCPP_H
+#include <hxcpp.h>
+#endif
+
+HX_DECLARE_CLASS0(StringBuf)
+HX_DECLARE_CLASS1(haxe,StackItem)
+HX_DECLARE_CLASS2(haxe,_CallStack,CallStack_Impl_)
+
+namespace haxe{
+namespace _CallStack{
+
+
+class HXCPP_CLASS_ATTRIBUTES CallStack_Impl__obj : public ::hx::Object
+{
+	public:
+		typedef ::hx::Object super;
+		typedef CallStack_Impl__obj OBJ_;
+		CallStack_Impl__obj();
+
+	public:
+		enum { _hx_ClassId = 0x29a173d9 };
+
+		void __construct();
+		inline void *operator new(size_t inSize, bool inContainer=false,const char *inName="haxe._CallStack.CallStack_Impl_")
+			{ return ::hx::Object::operator new(inSize,inContainer,inName); }
+		inline void *operator new(size_t inSize, int extra)
+			{ return ::hx::Object::operator new(inSize+extra,false,"haxe._CallStack.CallStack_Impl_"); }
+
+		inline static ::hx::ObjectPtr< CallStack_Impl__obj > __new() {
+			::hx::ObjectPtr< CallStack_Impl__obj > __this = new CallStack_Impl__obj();
+			__this->__construct();
+			return __this;
+		}
+
+		inline static ::hx::ObjectPtr< CallStack_Impl__obj > __alloc(::hx::Ctx *_hx_ctx) {
+			CallStack_Impl__obj *__this = (CallStack_Impl__obj*)(::hx::Ctx::alloc(_hx_ctx, sizeof(CallStack_Impl__obj), false, "haxe._CallStack.CallStack_Impl_"));
+			*(void **)__this = CallStack_Impl__obj::_hx_vtable;
+			return __this;
+		}
+
+		static void * _hx_vtable;
+		static Dynamic __CreateEmpty();
+		static Dynamic __Create(::hx::DynamicArray inArgs);
+		//~CallStack_Impl__obj();
+
+		HX_DO_RTTI_ALL;
+		static bool __GetStatic(const ::String &inString, Dynamic &outValue, ::hx::PropertyAccess inCallProp);
+		static void __register();
+		bool _hx_isInstanceOf(int inClassId);
+		::String __ToString() const { return HX_("CallStack_Impl_",ca,79,56,8f); }
+
+		static ::String toString(::Array< ::Dynamic> stack);
+		static ::Dynamic toString_dyn();
+
+		static void itemToString( ::StringBuf b, ::haxe::StackItem s);
+		static ::Dynamic itemToString_dyn();
+
+};
+
+} // end namespace haxe
+} // end namespace _CallStack
+
+#endif /* INCLUDED_haxe__CallStack_CallStack_Impl_ */ 
diff --git a/Sources/c_snikket/iinclude/haxe/exceptions/NotImplementedException.h b/Sources/c_snikket/iinclude/haxe/exceptions/NotImplementedException.h
index 8af474a..2944de6 100644
--- a/Sources/c_snikket/iinclude/haxe/exceptions/NotImplementedException.h
+++ b/Sources/c_snikket/iinclude/haxe/exceptions/NotImplementedException.h
@@ -9,7 +9,6 @@
 #ifndef INCLUDED_haxe_exceptions_PosException
 #include <haxe/exceptions/PosException.h>
 #endif
-HX_DECLARE_STACK_FRAME(_hx_pos_6becf3ac06fb2a12_8_new)
 HX_DECLARE_CLASS1(haxe,Exception)
 HX_DECLARE_CLASS2(haxe,exceptions,NotImplementedException)
 HX_DECLARE_CLASS2(haxe,exceptions,PosException)
@@ -33,26 +32,8 @@ class HXCPP_CLASS_ATTRIBUTES NotImplementedException_obj : public  ::haxe::excep
 			{ return ::hx::Object::operator new(inSize,inContainer,inName); }
 		inline void *operator new(size_t inSize, int extra)
 			{ return ::hx::Object::operator new(inSize+extra,true,"haxe.exceptions.NotImplementedException"); }
-
-		inline static ::hx::ObjectPtr< NotImplementedException_obj > __new(::String __o_message, ::haxe::Exception previous, ::Dynamic pos) {
-			::hx::ObjectPtr< NotImplementedException_obj > __this = new NotImplementedException_obj();
-			__this->__construct(__o_message,previous,pos);
-			return __this;
-		}
-
-		inline static ::hx::ObjectPtr< NotImplementedException_obj > __alloc(::hx::Ctx *_hx_ctx,::String __o_message, ::haxe::Exception previous, ::Dynamic pos) {
-			NotImplementedException_obj *__this = (NotImplementedException_obj*)(::hx::Ctx::alloc(_hx_ctx, sizeof(NotImplementedException_obj), true, "haxe.exceptions.NotImplementedException"));
-			*(void **)__this = NotImplementedException_obj::_hx_vtable;
-{
-            		::String message = __o_message;
-            		if (::hx::IsNull(__o_message)) message = HX_("Not implemented",15,1e,32,34);
-            	HX_STACKFRAME(&_hx_pos_6becf3ac06fb2a12_8_new)
-HXDLIN(   8)		__this->super::__construct(message,previous,pos);
-            	}
-		
-			return __this;
-		}
-
+		static ::hx::ObjectPtr< NotImplementedException_obj > __new(::String __o_message, ::haxe::Exception previous, ::Dynamic pos);
+		static ::hx::ObjectPtr< NotImplementedException_obj > __alloc(::hx::Ctx *_hx_ctx,::String __o_message, ::haxe::Exception previous, ::Dynamic pos);
 		static void * _hx_vtable;
 		static Dynamic __CreateEmpty();
 		static Dynamic __Create(::hx::DynamicArray inArgs);
diff --git a/Sources/c_snikket/iinclude/haxe/exceptions/PosException.h b/Sources/c_snikket/iinclude/haxe/exceptions/PosException.h
index df1f2b8..0496c18 100644
--- a/Sources/c_snikket/iinclude/haxe/exceptions/PosException.h
+++ b/Sources/c_snikket/iinclude/haxe/exceptions/PosException.h
@@ -9,7 +9,6 @@
 #ifndef INCLUDED_haxe_Exception
 #include <haxe/Exception.h>
 #endif
-HX_DECLARE_STACK_FRAME(_hx_pos_9487fa79a58895e3_12_new)
 HX_DECLARE_CLASS1(haxe,Exception)
 HX_DECLARE_CLASS2(haxe,exceptions,PosException)
 
@@ -32,30 +31,8 @@ class HXCPP_CLASS_ATTRIBUTES PosException_obj : public  ::haxe::Exception_obj
 			{ return ::hx::Object::operator new(inSize,inContainer,inName); }
 		inline void *operator new(size_t inSize, int extra)
 			{ return ::hx::Object::operator new(inSize+extra,true,"haxe.exceptions.PosException"); }
-
-		inline static ::hx::ObjectPtr< PosException_obj > __new(::String message, ::haxe::Exception previous, ::Dynamic pos) {
-			::hx::ObjectPtr< PosException_obj > __this = new PosException_obj();
-			__this->__construct(message,previous,pos);
-			return __this;
-		}
-
-		inline static ::hx::ObjectPtr< PosException_obj > __alloc(::hx::Ctx *_hx_ctx,::String message, ::haxe::Exception previous, ::Dynamic pos) {
-			PosException_obj *__this = (PosException_obj*)(::hx::Ctx::alloc(_hx_ctx, sizeof(PosException_obj), true, "haxe.exceptions.PosException"));
-			*(void **)__this = PosException_obj::_hx_vtable;
-{
-            	HX_STACKFRAME(&_hx_pos_9487fa79a58895e3_12_new)
-HXLINE(  13)		__this->super::__construct(message,previous,null());
-HXLINE(  14)		if (::hx::IsNull( pos )) {
-HXLINE(  15)			( ( ::haxe::exceptions::PosException)(__this) )->posInfos = ::hx::SourceInfo(HX_("(unknown)",87,5d,fc,5f),0,HX_("(unknown)",87,5d,fc,5f),HX_("(unknown)",87,5d,fc,5f));
-            		}
-            		else {
-HXLINE(  17)			( ( ::haxe::exceptions::PosException)(__this) )->posInfos = pos;
-            		}
-            	}
-		
-			return __this;
-		}
-
+		static ::hx::ObjectPtr< PosException_obj > __new(::String message, ::haxe::Exception previous, ::Dynamic pos);
+		static ::hx::ObjectPtr< PosException_obj > __alloc(::hx::Ctx *_hx_ctx,::String message, ::haxe::Exception previous, ::Dynamic pos);
 		static void * _hx_vtable;
 		static Dynamic __CreateEmpty();
 		static Dynamic __Create(::hx::DynamicArray inArgs);
diff --git a/Sources/c_snikket/iinclude/hx/HxcppMain.h b/Sources/c_snikket/iinclude/hx/HxcppMain.h
index ad09f30..309e9e9 100644
--- a/Sources/c_snikket/iinclude/hx/HxcppMain.h
+++ b/Sources/c_snikket/iinclude/hx/HxcppMain.h
@@ -94,13 +94,22 @@
       }
       catch (Dynamic e)
       {
-         __hx_dump_stack();
-         #ifdef HX_WIN_MAIN
-         MessageBoxA(0,  e==null() ? "null" : e->toString().__CStr(), "Error", 0);
-         #else
-         printf("Error : %s\n",e==null() ? "null" : e->toString().__CStr());
-         #endif
-         return -1;
+          auto customStack = e->__Field(HX_CSTRING("_hx_customStack"), HX_PROP_DYNAMIC).asString();
+          if (::hx::IsNotNull(customStack))
+          {
+              printf("%s\n", customStack.utf8_str());
+          }
+          else
+          {
+              __hx_dump_stack();
+          }
+
+#ifdef HX_WIN_MAIN
+          MessageBoxA(0, e == null() ? "null" : e->toString().__CStr(), "Error", 0);
+#else
+          printf("Error : %s\n", e == null() ? "null" : e->toString().__CStr());
+#endif
+          return -1;
       }
       return 0;
    }
diff --git a/Sources/c_snikket/iinclude/hx/StdLibs.h b/Sources/c_snikket/iinclude/hx/StdLibs.h
index 8bb7190..7918e51 100644
--- a/Sources/c_snikket/iinclude/hx/StdLibs.h
+++ b/Sources/c_snikket/iinclude/hx/StdLibs.h
@@ -43,6 +43,7 @@ Array<unsigned char> __hxcpp_resource_bytes(String inName);
 // System access
 Array<String>  __get_args();
 double         __time_stamp();
+::cpp::Int64   __time_stamp_ms();
 
 HXCPP_EXTERN_CLASS_ATTRIBUTES void __hxcpp_print_string(const String &inV);
 HXCPP_EXTERN_CLASS_ATTRIBUTES void __hxcpp_println_string(const String &inV);
@@ -161,7 +162,7 @@ HXCPP_EXTERN_CLASS_ATTRIBUTES String __hxcpp_utf8_string_to_char_bytes(String &i
 
 // --- HashRoot ---------------------------------------------------------------------
 
-HXCPP_EXTERN_CLASS_ATTRIBUTES int           __root_hash_size(Dynamic *rtHash);
+HXCPP_EXTERN_CLASS_ATTRIBUTES int           __root_hash_size(Dynamic &rtHash);
 
 // --- IntHash ----------------------------------------------------------------------
 
diff --git a/Sources/c_snikket/iinclude/hx/TelemetryTracy.h b/Sources/c_snikket/iinclude/hx/TelemetryTracy.h
index 178932a..d55bc9d 100644
--- a/Sources/c_snikket/iinclude/hx/TelemetryTracy.h
+++ b/Sources/c_snikket/iinclude/hx/TelemetryTracy.h
@@ -7,8 +7,8 @@
 
 #define TRACY_ENABLE
 #include <hxcpp.h>
-#include "../../project/thirdparty/tracy-0.11.1/tracy/TracyC.h"
-#include "../../project/thirdparty/tracy-0.11.1/tracy/Tracy.hpp"
+#include "../../project/thirdparty/tracy-0.12.0/tracy/TracyC.h"
+#include "../../project/thirdparty/tracy-0.12.0/tracy/Tracy.hpp"
 
 #ifdef HXCPP_TRACY_MEMORY
 	#ifdef HXCPP_GC_MOVING
@@ -30,7 +30,7 @@
 	::hx::strbuf TracyConcat(_hx_tracy_str_buffer, TracyLine); \
 	int TracyConcat(_hx_tracy_str_length, TracyLine); \
 	const char *TracyConcat(_hx_tracy_str_buffer_ptr, TracyLine) = name.utf8_str(&TracyConcat(_hx_tracy_str_buffer, TracyLine), false, &TracyConcat(_hx_tracy_str_length, TracyLine)); \
-	::tracy::ScopedZone TracyConcat(_hx_tracy_scoped_zone,TracyLine)(_hx_stackframe.lineNumber, _hx_stackframe.position->fileName, strlen(_hx_stackframe.position->fileName), _hx_stackframe.position->fullName, strlen(_hx_stackframe.position->fullName), TracyConcat(_hx_tracy_str_buffer_ptr, TracyLine), TracyConcat(_hx_tracy_str_length, TracyLine));
+	::tracy::ScopedZone TracyConcat(_hx_tracy_scoped_zone,TracyLine)(_hx_stackframe.lineNumber, _hx_stackframe.position->fileName, strlen(_hx_stackframe.position->fileName), _hx_stackframe.position->fullName, strlen(_hx_stackframe.position->fullName), TracyConcat(_hx_tracy_str_buffer_ptr, TracyLine), TracyConcat(_hx_tracy_str_length, TracyLine), -1);
 #endif
 
 void __hxcpp_tracy_framemark();
diff --git a/Sources/c_snikket/iinclude/hx/Thread.h b/Sources/c_snikket/iinclude/hx/Thread.h
index 069d51e..7f118b2 100644
--- a/Sources/c_snikket/iinclude/hx/Thread.h
+++ b/Sources/c_snikket/iinclude/hx/Thread.h
@@ -86,6 +86,9 @@ inline bool HxCreateDetachedThread(DWORD (WINAPI *func)(void *), void *param)
 
 struct HxMutex
 {
+   bool mValid;
+   pthread_mutex_t *mMutex;
+
    HxMutex()
    {
       pthread_mutexattr_t mta;
@@ -96,9 +99,7 @@ struct HxMutex
    }
    ~HxMutex()
    {
-      if (mValid)
-         pthread_mutex_destroy(mMutex);
-      delete mMutex;
+      Clean();
    }
    void Lock() { pthread_mutex_lock(mMutex); }
    void Unlock() { pthread_mutex_unlock(mMutex); }
@@ -107,12 +108,16 @@ struct HxMutex
    void Clean()
    {
       if (mValid)
+      {
          pthread_mutex_destroy(mMutex);
-      mValid = 0;
+         mValid = false;
+      }
+      if (mMutex)
+      {
+         delete mMutex;
+         mMutex = nullptr;
+      }
    }
-
-   bool mValid;
-   pthread_mutex_t *mMutex;
 };
 
 #define THREAD_FUNC_TYPE void *
@@ -198,19 +203,20 @@ struct HxSemaphore
 
 struct HxSemaphore
 {
+   HxMutex         mMutex;
+   pthread_cond_t  *mCondition;
+   bool            mSet;
+
+
    HxSemaphore()
    {
       mSet = false;
-      mValid = true;
       mCondition = new pthread_cond_t();
       pthread_cond_init(mCondition,0);
    }
    ~HxSemaphore()
    {
-      if (mValid)
-      {
-         pthread_cond_destroy(mCondition);
-      }
+      Clean();
    }
    // For autolock
    inline operator HxMutex &() { return mMutex; }
@@ -294,19 +300,14 @@ struct HxSemaphore
    void Clean()
    {
       mMutex.Clean();
-      if (mValid)
+      if (mCondition)
       {
-         mValid = false;
          pthread_cond_destroy(mCondition);
+         delete mCondition;
+         mCondition = nullptr;
       }
-      delete mCondition;
    }
 
-
-   HxMutex         mMutex;
-   pthread_cond_t  *mCondition;
-   bool            mSet;
-   bool            mValid;
 };
 
 
diff --git a/Sources/c_snikket/iinclude/snikket/Channel.h b/Sources/c_snikket/iinclude/snikket/Channel.h
index 74066bc..fe12a4d 100644
--- a/Sources/c_snikket/iinclude/snikket/Channel.h
+++ b/Sources/c_snikket/iinclude/snikket/Channel.h
@@ -77,6 +77,8 @@ class HXCPP_CLASS_ATTRIBUTES Channel_obj : public  ::snikket::Chat_obj
 		void selfPingSuccess();
 		::Dynamic selfPingSuccess_dyn();
 
+		 ::Dynamic getCaps();
+
 		void setPresence(::String resource, ::snikket::Presence presence);
 
 		void doSync(::String lastId);
diff --git a/Sources/c_snikket/iinclude/snikket/Chat.h b/Sources/c_snikket/iinclude/snikket/Chat.h
index 97bbad9..5f58f4c 100644
--- a/Sources/c_snikket/iinclude/snikket/Chat.h
+++ b/Sources/c_snikket/iinclude/snikket/Chat.h
@@ -232,7 +232,7 @@ class HXCPP_CLASS_ATTRIBUTES Chat_obj : public ::hx::Object
 		void removePresence(::String resource);
 		::Dynamic removePresence_dyn();
 
-		 ::Dynamic getCaps();
+		virtual  ::Dynamic getCaps();
 		::Dynamic getCaps_dyn();
 
 		 ::snikket::Caps getResourceCaps(::String resource);
@@ -271,7 +271,7 @@ class HXCPP_CLASS_ATTRIBUTES Chat_obj : public ::hx::Object
 		void hangup();
 		::Dynamic hangup_dyn();
 
-		::String callStatus();
+		int callStatus();
 		::Dynamic callStatus_dyn();
 
 		 ::snikket::jingle::DTMFSender dtmf();
diff --git a/Sources/c_snikket/iinclude/snikket/Client.h b/Sources/c_snikket/iinclude/snikket/Client.h
index 33fc1fb..06fff47 100644
--- a/Sources/c_snikket/iinclude/snikket/Client.h
+++ b/Sources/c_snikket/iinclude/snikket/Client.h
@@ -179,6 +179,11 @@ class HXCPP_CLASS_ATTRIBUTES Client_obj : public  ::snikket::EventEmitter_obj
 
 		void addConnectionFailedListener__fromC(::cpp::Function< void  (void*) > handler,void* handler__context);
 
+		void addTlsCheckListener( ::Dynamic handler);
+		::Dynamic addTlsCheckListener_dyn();
+
+		void addTlsCheckListener__fromC(::cpp::Function< bool  (const char*,const char**,size_t,void*) > handler,void* handler__context);
+
 		void addChatMessageListener( ::Dynamic handler);
 		::Dynamic addChatMessageListener_dyn();
 
@@ -209,6 +214,11 @@ class HXCPP_CLASS_ATTRIBUTES Client_obj : public  ::snikket::EventEmitter_obj
 
 		void addCallRingingListener__fromC(::cpp::Function< void  (const char*,const char*,void*) > handler,void* handler__context);
 
+		void addCallUpdateStatusListener( ::Dynamic handler);
+		::Dynamic addCallUpdateStatusListener_dyn();
+
+		void addCallUpdateStatusListener__fromC(::cpp::Function< void  (void*,void*) > handler,void* handler__context);
+
 		void addCallMediaListener( ::Dynamic handler);
 		::Dynamic addCallMediaListener_dyn();
 
diff --git a/Sources/c_snikket/iinclude/snikket/jingle/IncomingProposedSession.h b/Sources/c_snikket/iinclude/snikket/jingle/IncomingProposedSession.h
index cb8ed6f..b762e1c 100644
--- a/Sources/c_snikket/iinclude/snikket/jingle/IncomingProposedSession.h
+++ b/Sources/c_snikket/iinclude/snikket/jingle/IncomingProposedSession.h
@@ -95,7 +95,7 @@ class HXCPP_CLASS_ATTRIBUTES IncomingProposedSession_obj : public ::hx::Object
 		void addMedia(::Array< ::Dynamic> _);
 		::Dynamic addMedia_dyn();
 
-		::String callStatus();
+		int callStatus();
 		::Dynamic callStatus_dyn();
 
 		::Array< ::Dynamic> videoTracks();
diff --git a/Sources/c_snikket/iinclude/snikket/jingle/InitiatedSession.h b/Sources/c_snikket/iinclude/snikket/jingle/InitiatedSession.h
index c622d06..24ff6e9 100644
--- a/Sources/c_snikket/iinclude/snikket/jingle/InitiatedSession.h
+++ b/Sources/c_snikket/iinclude/snikket/jingle/InitiatedSession.h
@@ -130,7 +130,7 @@ class HXCPP_CLASS_ATTRIBUTES InitiatedSession_obj : public ::hx::Object
 		void addMedia__fromC(::cpp::Pointer< void* > streams,size_t streams__len);
 		::Dynamic addMedia__fromC_dyn();
 
-		::String callStatus();
+		int callStatus();
 		::Dynamic callStatus_dyn();
 
 		::Array< ::Dynamic> videoTracks();
diff --git a/Sources/c_snikket/iinclude/snikket/jingle/OutgoingProposedSession.h b/Sources/c_snikket/iinclude/snikket/jingle/OutgoingProposedSession.h
index 202c56d..c8190d8 100644
--- a/Sources/c_snikket/iinclude/snikket/jingle/OutgoingProposedSession.h
+++ b/Sources/c_snikket/iinclude/snikket/jingle/OutgoingProposedSession.h
@@ -98,7 +98,7 @@ class HXCPP_CLASS_ATTRIBUTES OutgoingProposedSession_obj : public ::hx::Object
 		void addMedia(::Array< ::Dynamic> _);
 		::Dynamic addMedia_dyn();
 
-		::String callStatus();
+		int callStatus();
 		::Dynamic callStatus_dyn();
 
 		::Array< ::Dynamic> videoTracks();
diff --git a/Sources/c_snikket/iinclude/snikket/jingle/Session.h b/Sources/c_snikket/iinclude/snikket/jingle/Session.h
index 41c01cf..020db7b 100644
--- a/Sources/c_snikket/iinclude/snikket/jingle/Session.h
+++ b/Sources/c_snikket/iinclude/snikket/jingle/Session.h
@@ -68,8 +68,8 @@ class HXCPP_CLASS_ATTRIBUTES Session_obj {
 		static inline void addMedia( ::Dynamic _hx_,::Array< ::Dynamic> streams) {
 			(_hx_.mPtr->*( ::hx::interface_cast< ::snikket::jingle::Session_obj *>(_hx_.mPtr->_hx_getInterface(0x79d60748)))->_hx_addMedia)(streams);
 		}
-		::String (::hx::Object :: *_hx_callStatus)(); 
-		static inline ::String callStatus( ::Dynamic _hx_) {
+		int (::hx::Object :: *_hx_callStatus)(); 
+		static inline int callStatus( ::Dynamic _hx_) {
 			return (_hx_.mPtr->*( ::hx::interface_cast< ::snikket::jingle::Session_obj *>(_hx_.mPtr->_hx_getInterface(0x79d60748)))->_hx_callStatus)();
 		}
 		::Array< ::Dynamic> (::hx::Object :: *_hx_videoTracks)(); 
diff --git a/Sources/c_snikket/iinclude/snikket/streams/XmppStropheStream.h b/Sources/c_snikket/iinclude/snikket/streams/XmppStropheStream.h
index dca39c0..badc28b 100644
--- a/Sources/c_snikket/iinclude/snikket/streams/XmppStropheStream.h
+++ b/Sources/c_snikket/iinclude/snikket/streams/XmppStropheStream.h
@@ -63,6 +63,8 @@ class HXCPP_CLASS_ATTRIBUTES XmppStropheStream_obj : public  ::snikket::GenericS
 		bool _hx_isInstanceOf(int inClassId);
 		::String __ToString() const { return HX_("XmppStropheStream",da,d9,8d,8c); }
 
+		static int strophe_certfail_handler( const xmpp_tlscert_t* cert,const char* err);
+
 		static void strophe_fast_token_handler( xmpp_conn_t* conn,const char* token,void* userdata);
 
 		static void strophe_sm_handler( xmpp_conn_t* conn,void* userdata,const unsigned char* sm_state,size_t sm_state_len);
@@ -71,8 +73,6 @@ class HXCPP_CLASS_ATTRIBUTES XmppStropheStream_obj : public  ::snikket::GenericS
 
 		static void strophe_sm_fail_handler( xmpp_conn_t* conn,void* userdata,const char* id);
 
-		static int strophe_certfail_handler( const xmpp_tlscert_t* cert,const char* err);
-
 		static int strophe_stanza( xmpp_conn_t* conn, xmpp_stanza_t* sstanza,void* userdata);
 
 		static void strophe_connect( xmpp_conn_t* conn, xmpp_conn_event_t event,int error, xmpp_stream_error_t* stream_error,int resumed,void* userdata);
diff --git a/Sources/c_snikket/iinclude/sys/thread/NoEventLoopException.h b/Sources/c_snikket/iinclude/sys/thread/NoEventLoopException.h
index 836f0ff..431725d 100644
--- a/Sources/c_snikket/iinclude/sys/thread/NoEventLoopException.h
+++ b/Sources/c_snikket/iinclude/sys/thread/NoEventLoopException.h
@@ -9,7 +9,6 @@
 #ifndef INCLUDED_haxe_Exception
 #include <haxe/Exception.h>
 #endif
-HX_DECLARE_STACK_FRAME(_hx_pos_c0f6a7d563b0a42e_7_new)
 HX_DECLARE_CLASS1(haxe,Exception)
 HX_DECLARE_CLASS2(sys,thread,NoEventLoopException)
 
@@ -32,26 +31,8 @@ class HXCPP_CLASS_ATTRIBUTES NoEventLoopException_obj : public  ::haxe::Exceptio
 			{ return ::hx::Object::operator new(inSize,inContainer,inName); }
 		inline void *operator new(size_t inSize, int extra)
 			{ return ::hx::Object::operator new(inSize+extra,true,"sys.thread.NoEventLoopException"); }
-
-		inline static ::hx::ObjectPtr< NoEventLoopException_obj > __new(::String __o_msg, ::haxe::Exception previous) {
-			::hx::ObjectPtr< NoEventLoopException_obj > __this = new NoEventLoopException_obj();
-			__this->__construct(__o_msg,previous);
-			return __this;
-		}
-
-		inline static ::hx::ObjectPtr< NoEventLoopException_obj > __alloc(::hx::Ctx *_hx_ctx,::String __o_msg, ::haxe::Exception previous) {
-			NoEventLoopException_obj *__this = (NoEventLoopException_obj*)(::hx::Ctx::alloc(_hx_ctx, sizeof(NoEventLoopException_obj), true, "sys.thread.NoEventLoopException"));
-			*(void **)__this = NoEventLoopException_obj::_hx_vtable;
-{
-            		::String msg = __o_msg;
-            		if (::hx::IsNull(__o_msg)) msg = HX_("Event loop is not available. Refer to sys.thread.Thread.runWithEventLoop.",89,e6,4c,1c);
-            	HX_STACKFRAME(&_hx_pos_c0f6a7d563b0a42e_7_new)
-HXDLIN(   7)		__this->super::__construct(msg,previous,null());
-            	}
-		
-			return __this;
-		}
-
+		static ::hx::ObjectPtr< NoEventLoopException_obj > __new(::String __o_msg, ::haxe::Exception previous);
+		static ::hx::ObjectPtr< NoEventLoopException_obj > __alloc(::hx::Ctx *_hx_ctx,::String __o_msg, ::haxe::Exception previous);
 		static void * _hx_vtable;
 		static Dynamic __CreateEmpty();
 		static Dynamic __Create(::hx::DynamicArray inArgs);
diff --git a/Sources/c_snikket/iinclude/sys/thread/ThreadPoolException.h b/Sources/c_snikket/iinclude/sys/thread/ThreadPoolException.h
index 770a5db..87687ac 100644
--- a/Sources/c_snikket/iinclude/sys/thread/ThreadPoolException.h
+++ b/Sources/c_snikket/iinclude/sys/thread/ThreadPoolException.h
@@ -9,7 +9,6 @@
 #ifndef INCLUDED_haxe_Exception
 #include <haxe/Exception.h>
 #endif
-HX_DECLARE_STACK_FRAME(_hx_pos_198c3f4b2c534790_5_new)
 HX_DECLARE_CLASS1(haxe,Exception)
 HX_DECLARE_CLASS2(sys,thread,ThreadPoolException)
 
@@ -32,24 +31,8 @@ class HXCPP_CLASS_ATTRIBUTES ThreadPoolException_obj : public  ::haxe::Exception
 			{ return ::hx::Object::operator new(inSize,inContainer,inName); }
 		inline void *operator new(size_t inSize, int extra)
 			{ return ::hx::Object::operator new(inSize+extra,true,"sys.thread.ThreadPoolException"); }
-
-		inline static ::hx::ObjectPtr< ThreadPoolException_obj > __new(::String message, ::haxe::Exception previous, ::Dynamic native) {
-			::hx::ObjectPtr< ThreadPoolException_obj > __this = new ThreadPoolException_obj();
-			__this->__construct(message,previous,native);
-			return __this;
-		}
-
-		inline static ::hx::ObjectPtr< ThreadPoolException_obj > __alloc(::hx::Ctx *_hx_ctx,::String message, ::haxe::Exception previous, ::Dynamic native) {
-			ThreadPoolException_obj *__this = (ThreadPoolException_obj*)(::hx::Ctx::alloc(_hx_ctx, sizeof(ThreadPoolException_obj), true, "sys.thread.ThreadPoolException"));
-			*(void **)__this = ThreadPoolException_obj::_hx_vtable;
-{
-            	HX_STACKFRAME(&_hx_pos_198c3f4b2c534790_5_new)
-HXDLIN(   5)		__this->super::__construct(message,previous,native);
-            	}
-		
-			return __this;
-		}
-
+		static ::hx::ObjectPtr< ThreadPoolException_obj > __new(::String message, ::haxe::Exception previous, ::Dynamic native);
+		static ::hx::ObjectPtr< ThreadPoolException_obj > __alloc(::hx::Ctx *_hx_ctx,::String message, ::haxe::Exception previous, ::Dynamic native);
 		static void * _hx_vtable;
 		static Dynamic __CreateEmpty();
 		static Dynamic __Create(::hx::DynamicArray inArgs);
diff --git a/Sources/c_snikket/iinclude/sys/thread/_FixedThreadPool/ShutdownException.h b/Sources/c_snikket/iinclude/sys/thread/_FixedThreadPool/ShutdownException.h
index 7453677..fdfbce9 100644
--- a/Sources/c_snikket/iinclude/sys/thread/_FixedThreadPool/ShutdownException.h
+++ b/Sources/c_snikket/iinclude/sys/thread/_FixedThreadPool/ShutdownException.h
@@ -9,7 +9,6 @@
 #ifndef INCLUDED_haxe_Exception
 #include <haxe/Exception.h>
 #endif
-HX_DECLARE_STACK_FRAME(_hx_pos_3d4aac51d93fb9ec_93_new)
 HX_DECLARE_CLASS1(haxe,Exception)
 HX_DECLARE_CLASS3(sys,thread,_FixedThreadPool,ShutdownException)
 
@@ -33,24 +32,8 @@ class HXCPP_CLASS_ATTRIBUTES ShutdownException_obj : public  ::haxe::Exception_o
 			{ return ::hx::Object::operator new(inSize,inContainer,inName); }
 		inline void *operator new(size_t inSize, int extra)
 			{ return ::hx::Object::operator new(inSize+extra,true,"sys.thread._FixedThreadPool.ShutdownException"); }
-
-		inline static ::hx::ObjectPtr< ShutdownException_obj > __new(::String message, ::haxe::Exception previous, ::Dynamic native) {
-			::hx::ObjectPtr< ShutdownException_obj > __this = new ShutdownException_obj();
-			__this->__construct(message,previous,native);
-			return __this;
-		}
-
-		inline static ::hx::ObjectPtr< ShutdownException_obj > __alloc(::hx::Ctx *_hx_ctx,::String message, ::haxe::Exception previous, ::Dynamic native) {
-			ShutdownException_obj *__this = (ShutdownException_obj*)(::hx::Ctx::alloc(_hx_ctx, sizeof(ShutdownException_obj), true, "sys.thread._FixedThreadPool.ShutdownException"));
-			*(void **)__this = ShutdownException_obj::_hx_vtable;
-{
-            	HX_STACKFRAME(&_hx_pos_3d4aac51d93fb9ec_93_new)
-HXDLIN(  93)		__this->super::__construct(message,previous,native);
-            	}
-		
-			return __this;
-		}
-
+		static ::hx::ObjectPtr< ShutdownException_obj > __new(::String message, ::haxe::Exception previous, ::Dynamic native);
+		static ::hx::ObjectPtr< ShutdownException_obj > __alloc(::hx::Ctx *_hx_ctx,::String message, ::haxe::Exception previous, ::Dynamic native);
 		static void * _hx_vtable;
 		static Dynamic __CreateEmpty();
 		static Dynamic __Create(::hx::DynamicArray inArgs);
diff --git a/Sources/c_snikket/include/snikket.h b/Sources/c_snikket/include/snikket.h
index 7a79ce5..437e79a 100644
--- a/Sources/c_snikket/include/snikket.h
+++ b/Sources/c_snikket/include/snikket.h
@@ -66,6 +66,19 @@ snikket_ui_state {
 	Closed = 2
 };
 
+enum
+#ifdef __clang__
+__attribute__((enum_extensibility(closed)))
+#endif
+snikket_jingle_call_status {
+	NoCall = 0,
+	Incoming = 1,
+	Outgoing = 2,
+	Connecting = 3,
+	Ongoing = 4,
+	Failed = 5
+};
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -613,6 +626,13 @@ API_PREFIX void snikket_client_add_status_offline_listener(void *client, void (*
  */
 API_PREFIX void snikket_client_add_connection_failed_listener(void *client, void (*handler) (void*), void *handler__context);
 
+/**
+ * Event fired when TLS checks fail, to give client the chance to override
+ * 
+ * @param handler takes two arguments, the PEM of the cert and an array of DNS names, and must return true to accept or false to reject
+ */
+API_PREFIX void snikket_client_add_tls_check_listener(void *client, bool (*handler) (const char*, const char**, size_t, void*), void *handler__context);
+
 /**
  * Event fired when a new ChatMessage comes in on any Chat
  * Also fires when status of a ChatMessage changes,
@@ -647,17 +667,24 @@ API_PREFIX void snikket_client_add_call_ring_listener(void *client, void (*handl
 /**
  * Event fired when a call is retracted or hung up
  * 
- * @param handler takes one argument, the associated Chat ID
+ * @param handler takes two arguments, the associated Chat ID and Session ID
  */
 API_PREFIX void snikket_client_add_call_retract_listener(void *client, void (*handler) (const char*, const char*, void*), void *handler__context);
 
 /**
  * Event fired when an outgoing call starts ringing
  * 
- * @param handler takes one argument, the associated Chat ID
+ * @param handler takes two arguments, the associated Chat ID and Session ID
  */
 API_PREFIX void snikket_client_add_call_ringing_listener(void *client, void (*handler) (const char*, const char*, void*), void *handler__context);
 
+/**
+ * Event fired when an existing call changes status (connecting, failed, etc)
+ * 
+ * @param handler takes one argument, the associated Session
+ */
+API_PREFIX void snikket_client_add_call_update_status_listener(void *client, void (*handler) (void*, void*), void *handler__context);
+
 /**
  * Event fired when a call is asking for media to send
  * 
@@ -925,7 +952,7 @@ API_PREFIX void snikket_chat_hangup(void *chat);
 /**
  * The current status of a call in this chat
  */
-API_PREFIX const char *snikket_chat_call_status(void *chat);
+API_PREFIX enum snikket_jingle_call_status snikket_chat_call_status(void *chat);
 
 /**
  * A DTMFSender for a call in this chat, or NULL
@@ -1006,7 +1033,7 @@ API_PREFIX void snikket_jingle_initiated_session_hangup(void *initiated_session)
 
 API_PREFIX void snikket_jingle_initiated_session_add_media(void *initiated_session, void *const *streams, size_t streams__len);
 
-API_PREFIX const char *snikket_jingle_initiated_session_call_status(void *initiated_session);
+API_PREFIX enum snikket_jingle_call_status snikket_jingle_initiated_session_call_status(void *initiated_session);
 
 API_PREFIX size_t snikket_jingle_initiated_session_video_tracks(void *initiated_session, void ***outPtr);
 
diff --git a/Sources/c_snikket/src/HaxeCBridge.cpp b/Sources/c_snikket/src/HaxeCBridge.cpp
index 635e4d6..3c20897 100644
--- a/Sources/c_snikket/src/HaxeCBridge.cpp
+++ b/Sources/c_snikket/src/HaxeCBridge.cpp
@@ -18,11 +18,26 @@
 #ifndef INCLUDED__HaxeCBridge_Internal
 #include <_HaxeCBridge/Internal.h>
 #endif
+#ifndef INCLUDED_cpp_Int64Map
+#include <cpp/Int64Map.h>
+#endif
+#ifndef INCLUDED_haxe_Exception
+#include <haxe/Exception.h>
+#endif
 #ifndef INCLUDED_haxe_IMap
 #include <haxe/IMap.h>
 #endif
-#ifndef INCLUDED_haxe_ds_IntMap
-#include <haxe/ds/IntMap.h>
+#ifndef INCLUDED_haxe_Log
+#include <haxe/Log.h>
+#endif
+#ifndef INCLUDED_haxe_MainLoop
+#include <haxe/MainLoop.h>
+#endif
+#ifndef INCLUDED_haxe_StackItem
+#include <haxe/StackItem.h>
+#endif
+#ifndef INCLUDED_haxe__CallStack_CallStack_Impl_
+#include <haxe/_CallStack/CallStack_Impl_.h>
 #endif
 #ifndef INCLUDED_sys_thread_EventLoop
 #include <sys/thread/EventLoop.h>
@@ -43,174 +58,201 @@
 #include <sys/thread/_Thread/Thread_Impl_.h>
 #endif
 
-HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_1955_mainThreadInit,"HaxeCBridge","mainThreadInit",0x6f09ae5b,"HaxeCBridge.mainThreadInit","HaxeCBridge.hx",1955,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_1970_mainThreadRun,"HaxeCBridge","mainThreadRun",0xa4afa660,"HaxeCBridge.mainThreadRun","HaxeCBridge.hx",1970,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_2049_retainHaxeArray,"HaxeCBridge","retainHaxeArray",0x7373bc46,"HaxeCBridge.retainHaxeArray","HaxeCBridge.hx",2049,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_2058_retainHaxeObject,"HaxeCBridge","retainHaxeObject",0xef200772,"HaxeCBridge.retainHaxeObject","HaxeCBridge.hx",2058,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_2068_retainHaxeString,"HaxeCBridge","retainHaxeString",0xeb10b184,"HaxeCBridge.retainHaxeString","HaxeCBridge.hx",2068,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_2075_releaseHaxePtr,"HaxeCBridge","releaseHaxePtr",0x5df2fc29,"HaxeCBridge.releaseHaxePtr","HaxeCBridge.hx",2075,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_2082_isMainThread,"HaxeCBridge","isMainThread",0x6f71c035,"HaxeCBridge.isMainThread","HaxeCBridge.hx",2082,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_2087_endMainThread,"HaxeCBridge","endMainThread",0x0d9deed6,"HaxeCBridge.endMainThread","HaxeCBridge.hx",2087,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_1975_mainThreadInit,"HaxeCBridge","mainThreadInit",0x6f09ae5b,"HaxeCBridge.mainThreadInit","HaxeCBridge.hx",1975,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_1990_mainThreadRun,"HaxeCBridge","mainThreadRun",0xa4afa660,"HaxeCBridge.mainThreadRun","HaxeCBridge.hx",1990,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_2080_retainHaxeArray,"HaxeCBridge","retainHaxeArray",0x7373bc46,"HaxeCBridge.retainHaxeArray","HaxeCBridge.hx",2080,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_2089_retainHaxeObject,"HaxeCBridge","retainHaxeObject",0xef200772,"HaxeCBridge.retainHaxeObject","HaxeCBridge.hx",2089,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_2099_retainHaxeString,"HaxeCBridge","retainHaxeString",0xeb10b184,"HaxeCBridge.retainHaxeString","HaxeCBridge.hx",2099,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_2106_retainPtr,"HaxeCBridge","retainPtr",0x2c61e661,"HaxeCBridge.retainPtr","HaxeCBridge.hx",2106,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_2119_releaseHaxePtr,"HaxeCBridge","releaseHaxePtr",0x5df2fc29,"HaxeCBridge.releaseHaxePtr","HaxeCBridge.hx",2119,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_2132_isMainThread,"HaxeCBridge","isMainThread",0x6f71c035,"HaxeCBridge.isMainThread","HaxeCBridge.hx",2132,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_74d844958d4dcf5a_2137_endMainThread,"HaxeCBridge","endMainThread",0x0d9deed6,"HaxeCBridge.endMainThread","HaxeCBridge.hx",2137,0xa18550d8)
 
 void HaxeCBridge::mainThreadInit(::cpp::Function< bool  () > isMainThreadCb){
-            	HX_STACKFRAME(&_hx_pos_74d844958d4dcf5a_1955_mainThreadInit)
-HXLINE(1961)		::_HaxeCBridge::Internal_obj::isMainThreadCb = isMainThreadCb;
-HXLINE(1962)		::_HaxeCBridge::Internal_obj::mainThreadWaitLock = ::sys::thread::_Thread::Thread_Impl__obj::get_events(::sys::thread::_Thread::HaxeThread_obj::current())->waitLock;
+            	HX_STACKFRAME(&_hx_pos_74d844958d4dcf5a_1975_mainThreadInit)
+HXLINE(1981)		::_HaxeCBridge::Internal_obj::isMainThreadCb = isMainThreadCb;
+HXLINE(1982)		::_HaxeCBridge::Internal_obj::mainThreadWaitLock = ::sys::thread::_Thread::Thread_Impl__obj::get_events(::sys::thread::_Thread::HaxeThread_obj::current())->waitLock;
             	}
 
 
-void HaxeCBridge::mainThreadRun(::cpp::Function< void  () > processNativeCalls,::cpp::Function< void  (const char*) > onUnhandledException){
-            	HX_STACKFRAME(&_hx_pos_74d844958d4dcf5a_1970_mainThreadRun)
-HXLINE(1971)		try {
+void HaxeCBridge::mainThreadRun(::cpp::Function< void  () > processNativeCalls,::cpp::Function< bool  () > hasPendingNativeCalls,::cpp::Function< void  (const char*) > onUnhandledException){
+            	HX_STACKFRAME(&_hx_pos_74d844958d4dcf5a_1990_mainThreadRun)
+HXLINE(1991)		try {
             			HX_STACK_CATCHABLE( ::Dynamic, 0);
             		} catch( ::Dynamic _hx_e) {
             			if (_hx_e.IsClass<  ::Dynamic >() ){
             				HX_STACK_BEGIN_CATCH
             				 ::Dynamic _g = _hx_e;
-HXLINE(1973)				{
-HXLINE(1973)					null();
+HXLINE(1993)				{
+HXLINE(1993)					null();
             				}
-HXDLIN(1973)				 ::Dynamic e = _g;
-HXLINE(1974)				{
-HXLINE(1974)					::String s;
-HXDLIN(1974)					if (::hx::IsNull( e )) {
-HXLINE(1974)						s = HX_("null",87,9e,0e,49);
+HXDLIN(1993)				 ::haxe::Exception e = ::haxe::Exception_obj::caught(_g);
+HXDLIN(1993)				{
+HXLINE(1994)					 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
+HXDLIN(1994)					::Array< ::Dynamic> tmp = e->get_stack();
+HXDLIN(1994)					::String _hx_tmp1;
+HXDLIN(1994)					if (::hx::IsNull( tmp )) {
+HXLINE(1994)						_hx_tmp1 = HX_("null",87,9e,0e,49);
             					}
             					else {
-HXLINE(1974)						s = ::Std_obj::string(e);
+HXLINE(1994)						_hx_tmp1 = ::haxe::_CallStack::CallStack_Impl__obj::toString(tmp);
             					}
-HXDLIN(1974)					onUnhandledException(s.utf8_str());
+HXDLIN(1994)					_hx_tmp(e, ::Dynamic(::hx::Anon_obj::Create(5)
+            						->setFixed(0,HX_("className",a3,92,3d,dc),HX_("HaxeCBridge",a6,7d,e3,bb))
+            						->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,_hx_tmp1))
+            						->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("mainThreadRun",28,d7,3c,8e))
+            						->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("HaxeCBridge.hx",d8,50,85,a1))
+            						->setFixed(4,HX_("lineNumber",dd,81,22,76),1994)));
+HXLINE(1995)					onUnhandledException(::Std_obj::string(e).utf8_str());
             				}
             			}
             			else {
             				HX_STACK_DO_THROW(_hx_e);
             			}
             		}
-HXLINE(1978)		 ::sys::thread::EventLoop eventLoop = ::sys::thread::_Thread::Thread_Impl__obj::get_events(::sys::thread::_Thread::HaxeThread_obj::current());
-HXLINE(1980)		::Array< ::Dynamic> events = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1981)		while(::_HaxeCBridge::Internal_obj::mainThreadLoopActive){
-HXLINE(1982)			try {
+HXLINE(2002)		 ::sys::thread::EventLoop eventLoop = ::sys::thread::_Thread::Thread_Impl__obj::get_events(::sys::thread::_Thread::HaxeThread_obj::current());
+HXLINE(2004)		::Array< ::Dynamic> recycleRegular = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(2005)		::Array< ::Dynamic> recycleOneTimers = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(2006)		while(::_HaxeCBridge::Internal_obj::mainThreadLoopActive){
+HXLINE(2007)			try {
             				HX_STACK_CATCHABLE( ::Dynamic, 0);
-HXLINE(1984)				processNativeCalls();
-HXLINE(1987)				Float now = ::Sys_obj::time();
-HXDLIN(1987)				::Array< ::Dynamic> eventsToRun = events;
-HXDLIN(1987)				int eventsToRunIdx = 0;
-HXDLIN(1987)				Float nextEventAt = ( (Float)(-1) );
-HXDLIN(1987)				eventLoop->mutex->acquire();
-HXDLIN(1987)				 ::sys::thread::_EventLoop::RegularEvent current = eventLoop->regularEvents;
-HXDLIN(1987)				while(::hx::IsNotNull( current )){
-HXLINE(1987)					if ((current->nextRunTime <= now)) {
-HXLINE(1987)						eventsToRunIdx = (eventsToRunIdx + 1);
-HXDLIN(1987)						eventsToRun[(eventsToRunIdx - 1)] = current->run;
-HXDLIN(1987)						 ::sys::thread::_EventLoop::RegularEvent current1 = current;
-HXDLIN(1987)						current1->nextRunTime = (current1->nextRunTime + current->interval);
-HXLINE(2200)						nextEventAt = ( (Float)(-2) );
+HXLINE(2009)				processNativeCalls();
+HXLINE(2012)				Float now = ::Sys_obj::time();
+HXDLIN(2012)				::Array< ::Dynamic> regularsToRun = recycleRegular;
+HXDLIN(2012)				int eventsToRunIdx = 0;
+HXDLIN(2012)				Float nextEventAt = ( (Float)(-1) );
+HXDLIN(2012)				eventLoop->mutex->acquire();
+HXDLIN(2012)				while(eventLoop->waitLock->wait(((Float)0.0))){
+            				}
+HXLINE(2012)				 ::sys::thread::_EventLoop::RegularEvent current = eventLoop->regularEvents;
+HXDLIN(2012)				while(::hx::IsNotNull( current )){
+HXLINE(2012)					if ((current->nextRunTime <= now)) {
+HXLINE(2012)						eventsToRunIdx = (eventsToRunIdx + 1);
+HXDLIN(2012)						regularsToRun[(eventsToRunIdx - 1)] = current;
+HXDLIN(2012)						 ::sys::thread::_EventLoop::RegularEvent current1 = current;
+HXDLIN(2012)						current1->nextRunTime = (current1->nextRunTime + current->interval);
+HXLINE( 220)						nextEventAt = ( (Float)(-2) );
             					}
             					else {
-HXLINE(1987)						bool _hx_tmp;
-HXDLIN(1987)						if ((nextEventAt != -1)) {
-HXLINE(1987)							_hx_tmp = (current->nextRunTime < nextEventAt);
+HXLINE(2012)						bool _hx_tmp2;
+HXDLIN(2012)						if ((nextEventAt != -1)) {
+HXLINE(2012)							_hx_tmp2 = (current->nextRunTime < nextEventAt);
             						}
             						else {
-HXLINE(1987)							_hx_tmp = true;
+HXLINE(2012)							_hx_tmp2 = true;
             						}
-HXDLIN(1987)						if (_hx_tmp) {
-HXLINE(2202)							nextEventAt = current->nextRunTime;
+HXDLIN(2012)						if (_hx_tmp2) {
+HXLINE( 222)							nextEventAt = current->nextRunTime;
             						}
             					}
-HXLINE(2204)					current = current->next;
+HXLINE( 224)					current = current->next;
             				}
-HXLINE(1987)				eventLoop->mutex->release();
-HXDLIN(1987)				int _g1 = 0;
-HXDLIN(1987)				int _g2 = eventsToRunIdx;
-HXDLIN(1987)				while((_g1 < _g2)){
-HXLINE(1987)					_g1 = (_g1 + 1);
-HXDLIN(1987)					int i = (_g1 - 1);
-HXDLIN(1987)					eventsToRun->__get(i)();
-HXDLIN(1987)					eventsToRun[i] = null();
+HXLINE(2012)				eventLoop->mutex->release();
+HXDLIN(2012)				int _g1 = 0;
+HXDLIN(2012)				int _g2 = eventsToRunIdx;
+HXDLIN(2012)				while((_g1 < _g2)){
+HXLINE(2012)					_g1 = (_g1 + 1);
+HXDLIN(2012)					int i = (_g1 - 1);
+HXDLIN(2012)					if (!(regularsToRun->__get(i).StaticCast<  ::sys::thread::_EventLoop::RegularEvent >()->cancelled)) {
+HXLINE(2012)						regularsToRun->__get(i).StaticCast<  ::sys::thread::_EventLoop::RegularEvent >()->run();
+            					}
+HXDLIN(2012)					regularsToRun[i] = null();
             				}
-HXLINE(2213)				eventsToRunIdx = 0;
-HXLINE(1987)				eventLoop->mutex->acquire();
-HXDLIN(1987)				int _g_current = 0;
-HXDLIN(1987)				::Array< ::Dynamic> _g_array = eventLoop->oneTimeEvents;
-HXDLIN(1987)				while((_g_current < _g_array->length)){
-HXLINE(1987)					 ::Dynamic _g_value = _g_array->__get(_g_current);
-HXDLIN(1987)					_g_current = (_g_current + 1);
-HXDLIN(1987)					int _g_key = (_g_current - 1);
-HXDLIN(1987)					int i1 = _g_key;
-HXDLIN(1987)					 ::Dynamic event = _g_value;
-HXDLIN(1987)					if (::hx::IsNull( event )) {
-HXLINE(1987)						goto _hx_goto_4;
+HXLINE( 234)				eventsToRunIdx = 0;
+HXLINE(2012)				::Array< ::Dynamic> oneTimersToRun = recycleOneTimers;
+HXDLIN(2012)				eventLoop->mutex->acquire();
+HXDLIN(2012)				int _g_current = 0;
+HXDLIN(2012)				::Array< ::Dynamic> _g_array = eventLoop->oneTimeEvents;
+HXDLIN(2012)				while((_g_current < _g_array->length)){
+HXLINE(2012)					 ::Dynamic _g_value = _g_array->__get(_g_current);
+HXDLIN(2012)					_g_current = (_g_current + 1);
+HXDLIN(2012)					int _g_key = (_g_current - 1);
+HXDLIN(2012)					int i1 = _g_key;
+HXDLIN(2012)					 ::Dynamic event = _g_value;
+HXDLIN(2012)					if (::hx::IsNull( event )) {
+HXLINE(2012)						goto _hx_goto_5;
             					}
             					else {
-HXLINE(1987)						eventsToRunIdx = (eventsToRunIdx + 1);
-HXDLIN(1987)						eventsToRun[(eventsToRunIdx - 1)] = event;
-HXDLIN(1987)						eventLoop->oneTimeEvents[i1] = null();
+HXLINE(2012)						eventsToRunIdx = (eventsToRunIdx + 1);
+HXDLIN(2012)						oneTimersToRun[(eventsToRunIdx - 1)] = event;
+HXDLIN(2012)						eventLoop->oneTimeEvents[i1] = null();
             					}
             				}
-            				_hx_goto_4:;
-HXDLIN(1987)				eventLoop->oneTimeEventsIdx = 0;
-HXDLIN(1987)				bool hasPromisedEvents = (eventLoop->promisedEventsCount > 0);
-HXDLIN(1987)				eventLoop->mutex->release();
-HXDLIN(1987)				int _g3 = 0;
-HXDLIN(1987)				int _g4 = eventsToRunIdx;
-HXDLIN(1987)				while((_g3 < _g4)){
-HXLINE(1987)					_g3 = (_g3 + 1);
-HXDLIN(1987)					int i2 = (_g3 - 1);
-HXDLIN(1987)					eventsToRun->__get(i2)();
-HXDLIN(1987)					eventsToRun[i2] = null();
+            				_hx_goto_5:;
+HXDLIN(2012)				eventLoop->oneTimeEventsIdx = 0;
+HXDLIN(2012)				bool hasPromisedEvents = (eventLoop->promisedEventsCount > 0);
+HXDLIN(2012)				eventLoop->mutex->release();
+HXDLIN(2012)				int _g3 = 0;
+HXDLIN(2012)				int _g4 = eventsToRunIdx;
+HXDLIN(2012)				while((_g3 < _g4)){
+HXLINE(2012)					_g3 = (_g3 + 1);
+HXDLIN(2012)					int i2 = (_g3 - 1);
+HXDLIN(2012)					oneTimersToRun->__get(i2)();
+HXDLIN(2012)					oneTimersToRun[i2] = null();
             				}
-HXDLIN(1987)				if ((eventsToRunIdx > 0)) {
-HXLINE(2238)					nextEventAt = ( (Float)(-2) );
+HXDLIN(2012)				if (eventLoop->isMainThread) {
+HXLINE(2012)					Float next = ::haxe::MainLoop_obj::tick();
+HXDLIN(2012)					if (::haxe::MainLoop_obj::hasEvents()) {
+HXLINE(2012)						eventsToRunIdx = (eventsToRunIdx + 1);
+HXDLIN(2012)						if ((nextEventAt > next)) {
+HXLINE( 264)							nextEventAt = next;
+            						}
+            					}
+            				}
+HXLINE(2012)				if ((eventsToRunIdx > 0)) {
+HXLINE( 270)					nextEventAt = ( (Float)(-2) );
             				}
-HXLINE(1987)				Float eventTickInfo_nextEventAt = nextEventAt;
-HXDLIN(1987)				bool eventTickInfo_anyTime = hasPromisedEvents;
-HXLINE(1988)				{
-HXLINE(1988)					Float _g5 = eventTickInfo_nextEventAt;
-HXDLIN(1988)					Float _hx_switch_0 = _g5;
+HXLINE(2012)				Float eventTickInfo_nextEventAt = nextEventAt;
+HXDLIN(2012)				bool eventTickInfo_anyTime = hasPromisedEvents;
+HXLINE(2013)				if (hasPendingNativeCalls()) {
+HXLINE(2014)					continue;
+            				}
+HXLINE(2016)				{
+HXLINE(2016)					Float _g5 = eventTickInfo_nextEventAt;
+HXDLIN(2016)					Float _hx_switch_0 = _g5;
             					if (  (_hx_switch_0==( (Float)(-2) )) ){
-HXLINE(1989)						goto _hx_goto_6;
+HXLINE(2017)						goto _hx_goto_7;
             					}
             					if (  (_hx_switch_0==( (Float)(-1) )) ){
-HXLINE(1991)						bool _hx_tmp1;
-HXDLIN(1991)						if (::_HaxeCBridge::Internal_obj::mainThreadEndIfNoPending) {
-HXLINE(1991)							_hx_tmp1 = !(eventTickInfo_anyTime);
+HXLINE(2019)						bool _hx_tmp3;
+HXDLIN(2019)						if (::_HaxeCBridge::Internal_obj::mainThreadEndIfNoPending) {
+HXLINE(2019)							_hx_tmp3 = !(eventTickInfo_anyTime);
             						}
             						else {
-HXLINE(1991)							_hx_tmp1 = false;
+HXLINE(2019)							_hx_tmp3 = false;
             						}
-HXDLIN(1991)						if (_hx_tmp1) {
-HXLINE(1993)							goto _hx_goto_1;
+HXDLIN(2019)						if (_hx_tmp3) {
+HXLINE(2021)							goto _hx_goto_1;
             						}
-HXLINE(1995)						::_HaxeCBridge::Internal_obj::mainThreadWaitLock->wait(null());
-HXLINE(1990)						goto _hx_goto_6;
+HXLINE(2023)						::_HaxeCBridge::Internal_obj::mainThreadWaitLock->wait(null());
+HXLINE(2018)						goto _hx_goto_7;
             					}
             					/* default */{
-HXLINE(1996)						Float time = _g5;
-HXDLIN(1996)						{
-HXLINE(1997)							Float timeout = (time - ::Sys_obj::time());
-HXLINE(1998)							::_HaxeCBridge::Internal_obj::mainThreadWaitLock->wait(::Math_obj::max(( (Float)(0) ),timeout));
+HXLINE(2024)						Float time = _g5;
+HXDLIN(2024)						{
+HXLINE(2025)							Float timeout = (time - ::Sys_obj::time());
+HXLINE(2026)							::_HaxeCBridge::Internal_obj::mainThreadWaitLock->wait(::Math_obj::max(( (Float)(0) ),timeout));
             						}
             					}
-            					_hx_goto_6:;
+            					_hx_goto_7:;
             				}
             			} catch( ::Dynamic _hx_e) {
             				if (_hx_e.IsClass<  ::Dynamic >() ){
             					HX_STACK_BEGIN_CATCH
             					 ::Dynamic _g6 = _hx_e;
-HXLINE(2000)					{
-HXLINE(2000)						null();
+HXLINE(2028)					{
+HXLINE(2028)						null();
             					}
-HXDLIN(2000)					 ::Dynamic e1 = _g6;
-HXLINE(2001)					{
-HXLINE(2001)						::String s1;
-HXDLIN(2001)						if (::hx::IsNull( e1 )) {
-HXLINE(2001)							s1 = HX_("null",87,9e,0e,49);
+HXDLIN(2028)					 ::Dynamic e1 = _g6;
+HXLINE(2029)					{
+HXLINE(2029)						::String s;
+HXDLIN(2029)						if (::hx::IsNull( e1 )) {
+HXLINE(2029)							s = HX_("null",87,9e,0e,49);
             						}
             						else {
-HXLINE(2001)							s1 = ::Std_obj::string(e1);
+HXLINE(2029)							s = ::Std_obj::string(e1);
             						}
-HXDLIN(2001)						onUnhandledException(s1.utf8_str());
+HXDLIN(2029)						onUnhandledException(s.utf8_str());
             					}
             				}
             				else {
@@ -219,113 +261,123 @@ HXDLIN(2001)						onUnhandledException(s1.utf8_str());
             			}
             		}
             		_hx_goto_1:;
-HXLINE(2006)		__hxcpp_collect(true);
+HXLINE(2034)		__hxcpp_collect(true);
             	}
 
 
 void** HaxeCBridge::retainHaxeArray(::cpp::VirtualArray haxeArray){
-            	HX_GC_STACKFRAME(&_hx_pos_74d844958d4dcf5a_2049_retainHaxeArray)
-HXLINE(2052)		void** ptr = (void**)haxeArray->getBase();
-HXLINE(2053)		::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
-HXLINE(2054)		{
-HXLINE(2054)			 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN(2054)			int low = ptrInt64 & 0xffffffff;
-HXDLIN(2054)			int high = ptrInt64 >> 32;
-HXDLIN(2054)			 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN(2054)			if (::hx::IsNull( highMap )) {
-HXLINE(2054)				highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN(2054)				this1->set(low,highMap);
+            	HX_STACKFRAME(&_hx_pos_74d844958d4dcf5a_2080_retainHaxeArray)
+HXLINE(2083)		void** ptr = (void**)haxeArray->getBase();
+HXLINE(2084)		::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
+HXLINE(2085)		{
+HXLINE(2085)			 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN(2085)			if (::hx::IsNull( store )) {
+HXLINE(2085)				store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            					->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            					->setFixed(1,HX_("value",71,7f,b8,31),haxeArray));
+HXDLIN(2085)				::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            			}
+            			else {
+HXLINE(2085)				::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             			}
-HXDLIN(2054)			highMap->set(high,haxeArray);
             		}
-HXLINE(2055)		return ptr;
+HXLINE(2086)		return ptr;
             	}
 
 
 void* HaxeCBridge::retainHaxeObject( ::Dynamic haxeObject){
-            	HX_GC_STACKFRAME(&_hx_pos_74d844958d4dcf5a_2058_retainHaxeObject)
-HXLINE(2060)		void* ptr = haxeObject.mPtr;
-HXLINE(2063)		::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
-HXLINE(2064)		{
-HXLINE(2064)			 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN(2064)			int low = ptrInt64 & 0xffffffff;
-HXDLIN(2064)			int high = ptrInt64 >> 32;
-HXDLIN(2064)			 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN(2064)			if (::hx::IsNull( highMap )) {
-HXLINE(2064)				highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN(2064)				this1->set(low,highMap);
+            	HX_STACKFRAME(&_hx_pos_74d844958d4dcf5a_2089_retainHaxeObject)
+HXLINE(2091)		void* ptr = haxeObject.mPtr;
+HXLINE(2094)		::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
+HXLINE(2095)		{
+HXLINE(2095)			 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN(2095)			if (::hx::IsNull( store )) {
+HXLINE(2095)				store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            					->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            					->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN(2095)				::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            			}
+            			else {
+HXLINE(2095)				::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             			}
-HXDLIN(2064)			highMap->set(high,haxeObject);
             		}
-HXLINE(2065)		return ptr;
+HXLINE(2096)		return ptr;
             	}
 
 
 const char* HaxeCBridge::retainHaxeString(::String haxeString){
-            	HX_GC_STACKFRAME(&_hx_pos_74d844958d4dcf5a_2068_retainHaxeString)
-HXLINE(2069)		const char* cStrPtr = haxeString.utf8_str();
-HXLINE(2070)		::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(cStrPtr);
-HXLINE(2071)		{
-HXLINE(2071)			 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN(2071)			int low = ptrInt64 & 0xffffffff;
-HXDLIN(2071)			int high = ptrInt64 >> 32;
-HXDLIN(2071)			 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN(2071)			if (::hx::IsNull( highMap )) {
-HXLINE(2071)				highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN(2071)				this1->set(low,highMap);
+            	HX_STACKFRAME(&_hx_pos_74d844958d4dcf5a_2099_retainHaxeString)
+HXLINE(2100)		const char* cStrPtr = haxeString.utf8_str();
+HXLINE(2101)		::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(cStrPtr);
+HXLINE(2102)		{
+HXLINE(2102)			 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN(2102)			if (::hx::IsNull( store )) {
+HXLINE(2102)				store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            					->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            					->setFixed(1,HX_("value",71,7f,b8,31),haxeString));
+HXDLIN(2102)				::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
             			}
-HXDLIN(2071)			highMap->set(high,haxeString);
+            			else {
+HXLINE(2102)				::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
+            			}
+            		}
+HXLINE(2103)		return cStrPtr;
+            	}
+
+
+void HaxeCBridge::retainPtr(::cpp::Int64 ptrInt64, ::Dynamic haxeObject){
+            	HX_STACKFRAME(&_hx_pos_74d844958d4dcf5a_2106_retainPtr)
+HXLINE(2108)		 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXLINE(2109)		if (::hx::IsNull( store )) {
+HXLINE(2111)			store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            				->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            				->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXLINE(2112)			::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            		}
+            		else {
+HXLINE(2115)			::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             		}
-HXLINE(2072)		return cStrPtr;
             	}
 
 
 void HaxeCBridge::releaseHaxePtr(void * haxePtr){
-            	HX_STACKFRAME(&_hx_pos_74d844958d4dcf5a_2075_releaseHaxePtr)
-HXLINE(2076)		::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(haxePtr);
-HXLINE(2077)		{
-HXLINE(2077)			 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN(2077)			int low = ptrInt64 & 0xffffffff;
-HXDLIN(2077)			int high = ptrInt64 >> 32;
-HXDLIN(2077)			 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN(2077)			if (::hx::IsNotNull( highMap )) {
-HXLINE(2077)				bool removed = highMap->remove(high);
-HXDLIN(2077)				bool isHighMapEmpty = true;
-HXDLIN(2077)				{
-HXLINE(2077)					 ::Dynamic k = highMap->keys();
-HXDLIN(2077)					while(( (bool)(k->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE(2077)						int k1 = ( (int)(k->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
-HXDLIN(2077)						isHighMapEmpty = false;
-HXDLIN(2077)						goto _hx_goto_11;
-            					}
-            					_hx_goto_11:;
-            				}
-HXDLIN(2077)				if (isHighMapEmpty) {
-HXLINE(2077)					this1->remove(low);
-            				}
+            	HX_STACKFRAME(&_hx_pos_74d844958d4dcf5a_2119_releaseHaxePtr)
+HXLINE(2120)		::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(haxePtr);
+HXLINE(2121)		 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXLINE(2122)		bool _hx_tmp;
+HXDLIN(2122)		if (::hx::IsNotNull( store )) {
+HXLINE(2122)			_hx_tmp = ::hx::IsGreater( store->__Field(HX_("refCount",7c,2e,66,86),::hx::paccDynamic),0 );
+            		}
+            		else {
+HXLINE(2122)			_hx_tmp = false;
+            		}
+HXDLIN(2122)		if (_hx_tmp) {
+HXLINE(2123)			::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))--;
+HXLINE(2124)			if (::hx::IsLessEq( store->__Field(HX_("refCount",7c,2e,66,86),::hx::paccDynamic),0 )) {
+HXLINE(2125)				::_HaxeCBridge::Internal_obj::gcRetainMap->remove(ptrInt64);
             			}
             		}
             	}
 
 
 bool HaxeCBridge::isMainThread(){
-            	HX_STACKFRAME(&_hx_pos_74d844958d4dcf5a_2082_isMainThread)
-HXDLIN(2082)		return ::_HaxeCBridge::Internal_obj::isMainThreadCb();
+            	HX_STACKFRAME(&_hx_pos_74d844958d4dcf5a_2132_isMainThread)
+HXDLIN(2132)		return ::_HaxeCBridge::Internal_obj::isMainThreadCb();
             	}
 
 
 void HaxeCBridge::endMainThread(bool waitOnScheduledEvents){
-            	HX_STACKFRAME(&_hx_pos_74d844958d4dcf5a_2087_endMainThread)
-HXLINE(2088)		::_HaxeCBridge::Internal_obj::mainThreadEndIfNoPending = true;
-HXLINE(2089)		bool _hx_tmp;
-HXDLIN(2089)		if (::_HaxeCBridge::Internal_obj::mainThreadLoopActive) {
-HXLINE(2089)			_hx_tmp = waitOnScheduledEvents;
+            	HX_STACKFRAME(&_hx_pos_74d844958d4dcf5a_2137_endMainThread)
+HXLINE(2138)		::_HaxeCBridge::Internal_obj::mainThreadEndIfNoPending = true;
+HXLINE(2139)		bool _hx_tmp;
+HXDLIN(2139)		if (::_HaxeCBridge::Internal_obj::mainThreadLoopActive) {
+HXLINE(2139)			_hx_tmp = waitOnScheduledEvents;
             		}
             		else {
-HXLINE(2089)			_hx_tmp = false;
+HXLINE(2139)			_hx_tmp = false;
             		}
-HXDLIN(2089)		::_HaxeCBridge::Internal_obj::mainThreadLoopActive = _hx_tmp;
-HXLINE(2090)		 ::__hxcpp_lock_release(::_HaxeCBridge::Internal_obj::mainThreadWaitLock->l);
+HXDLIN(2139)		::_HaxeCBridge::Internal_obj::mainThreadLoopActive = _hx_tmp;
+HXLINE(2140)		 ::__hxcpp_lock_release(::_HaxeCBridge::Internal_obj::mainThreadWaitLock->l);
             	}
 
 
diff --git a/Sources/c_snikket/src/_HaxeCBridge/Int64Map_Impl_.cpp b/Sources/c_snikket/src/_HaxeCBridge/Int64Map_Impl_.cpp
index 84068a0..22a3e75 100644
--- a/Sources/c_snikket/src/_HaxeCBridge/Int64Map_Impl_.cpp
+++ b/Sources/c_snikket/src/_HaxeCBridge/Int64Map_Impl_.cpp
@@ -11,7 +11,7 @@
 #include <haxe/ds/IntMap.h>
 #endif
 
-HX_LOCAL_STACK_FRAME(_hx_pos_d939fa764c7c1922_2120__new,"_HaxeCBridge.Int64Map_Impl_","_new",0x93ec2b39,"_HaxeCBridge.Int64Map_Impl_._new","HaxeCBridge.hx",2120,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_d939fa764c7c1922_2147__new,"_HaxeCBridge.Int64Map_Impl_","_new",0x93ec2b39,"_HaxeCBridge.Int64Map_Impl_._new","HaxeCBridge.hx",2147,0xa18550d8)
 namespace _HaxeCBridge{
 
 void Int64Map_Impl__obj::__construct() { }
@@ -32,8 +32,8 @@ bool Int64Map_Impl__obj::_hx_isInstanceOf(int inClassId) {
 }
 
  ::haxe::ds::IntMap Int64Map_Impl__obj::_new(){
-            	HX_GC_STACKFRAME(&_hx_pos_d939fa764c7c1922_2120__new)
-HXDLIN(2120)		return  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
+            	HX_GC_STACKFRAME(&_hx_pos_d939fa764c7c1922_2147__new)
+HXDLIN(2147)		return  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
             	}
 
 
diff --git a/Sources/c_snikket/src/_HaxeCBridge/Internal.cpp b/Sources/c_snikket/src/_HaxeCBridge/Internal.cpp
index c9d064f..c64703b 100644
--- a/Sources/c_snikket/src/_HaxeCBridge/Internal.cpp
+++ b/Sources/c_snikket/src/_HaxeCBridge/Internal.cpp
@@ -1,25 +1,22 @@
 // Generated by Haxe 4.3.3
 #include <hxcpp.h>
 
-#ifndef INCLUDED__HaxeCBridge_Int64Map_Impl_
-#include <_HaxeCBridge/Int64Map_Impl_.h>
-#endif
 #ifndef INCLUDED__HaxeCBridge_Internal
 #include <_HaxeCBridge/Internal.h>
 #endif
+#ifndef INCLUDED_cpp_Int64Map
+#include <cpp/Int64Map.h>
+#endif
 #ifndef INCLUDED_haxe_IMap
 #include <haxe/IMap.h>
 #endif
-#ifndef INCLUDED_haxe_ds_IntMap
-#include <haxe/ds/IntMap.h>
-#endif
 #ifndef INCLUDED_sys_thread_Lock
 #include <sys/thread/Lock.h>
 #endif
 
-HX_LOCAL_STACK_FRAME(_hx_pos_afd834d22acce778_2108_boot,"_HaxeCBridge.Internal","boot",0xcd005bdc,"_HaxeCBridge.Internal.boot","HaxeCBridge.hx",2108,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_afd834d22acce778_2109_boot,"_HaxeCBridge.Internal","boot",0xcd005bdc,"_HaxeCBridge.Internal.boot","HaxeCBridge.hx",2109,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_afd834d22acce778_2110_boot,"_HaxeCBridge.Internal","boot",0xcd005bdc,"_HaxeCBridge.Internal.boot","HaxeCBridge.hx",2110,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_afd834d22acce778_2158_boot,"_HaxeCBridge.Internal","boot",0xcd005bdc,"_HaxeCBridge.Internal.boot","HaxeCBridge.hx",2158,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_afd834d22acce778_2159_boot,"_HaxeCBridge.Internal","boot",0xcd005bdc,"_HaxeCBridge.Internal.boot","HaxeCBridge.hx",2159,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_afd834d22acce778_2160_boot,"_HaxeCBridge.Internal","boot",0xcd005bdc,"_HaxeCBridge.Internal.boot","HaxeCBridge.hx",2160,0xa18550d8)
 namespace _HaxeCBridge{
 
 void Internal_obj::__construct() { }
@@ -47,7 +44,7 @@ bool Internal_obj::mainThreadLoopActive;
 
 bool Internal_obj::mainThreadEndIfNoPending;
 
- ::haxe::ds::IntMap Internal_obj::gcRetainMap;
+ ::cpp::Int64Map Internal_obj::gcRetainMap;
 
 
 Internal_obj::Internal_obj()
@@ -79,7 +76,7 @@ bool Internal_obj::__SetStatic(const ::String &inName,Dynamic &ioValue,::hx::Pro
 {
 	switch(inName.length) {
 	case 11:
-		if (HX_FIELD_EQ(inName,"gcRetainMap") ) { gcRetainMap=ioValue.Cast<  ::haxe::ds::IntMap >(); return true; }
+		if (HX_FIELD_EQ(inName,"gcRetainMap") ) { gcRetainMap=ioValue.Cast<  ::cpp::Int64Map >(); return true; }
 		break;
 	case 14:
 		if (HX_FIELD_EQ(inName,"isMainThreadCb") ) { isMainThreadCb=ioValue.Cast< ::cpp::Function< bool  () > >(); return true; }
@@ -103,7 +100,7 @@ static ::hx::StaticInfo Internal_obj_sStaticStorageInfo[] = {
 	{::hx::fsObject /*  ::sys::thread::Lock */ ,(void *) &Internal_obj::mainThreadWaitLock,HX_("mainThreadWaitLock",03,70,b0,ec)},
 	{::hx::fsBool,(void *) &Internal_obj::mainThreadLoopActive,HX_("mainThreadLoopActive",0d,b5,07,81)},
 	{::hx::fsBool,(void *) &Internal_obj::mainThreadEndIfNoPending,HX_("mainThreadEndIfNoPending",a1,49,76,fa)},
-	{::hx::fsObject /*  ::haxe::ds::IntMap */ ,(void *) &Internal_obj::gcRetainMap,HX_("gcRetainMap",1b,1e,df,b6)},
+	{::hx::fsObject /*  ::cpp::Int64Map */ ,(void *) &Internal_obj::gcRetainMap,HX_("gcRetainMap",1b,1e,df,b6)},
 	{ ::hx::fsUnknown, 0, null()}
 };
 #endif
@@ -168,16 +165,16 @@ void Internal_obj::__register()
 void Internal_obj::__boot()
 {
 {
-            	HX_STACKFRAME(&_hx_pos_afd834d22acce778_2108_boot)
-HXDLIN(2108)		mainThreadLoopActive = true;
+            	HX_STACKFRAME(&_hx_pos_afd834d22acce778_2158_boot)
+HXDLIN(2158)		mainThreadLoopActive = true;
             	}
 {
-            	HX_STACKFRAME(&_hx_pos_afd834d22acce778_2109_boot)
-HXDLIN(2109)		mainThreadEndIfNoPending = false;
+            	HX_STACKFRAME(&_hx_pos_afd834d22acce778_2159_boot)
+HXDLIN(2159)		mainThreadEndIfNoPending = false;
             	}
 {
-            	HX_STACKFRAME(&_hx_pos_afd834d22acce778_2110_boot)
-HXDLIN(2110)		gcRetainMap = ::_HaxeCBridge::Int64Map_Impl__obj::_new();
+            	HX_GC_STACKFRAME(&_hx_pos_afd834d22acce778_2160_boot)
+HXDLIN(2160)		gcRetainMap =  ::cpp::Int64Map_obj::__alloc( HX_CTX );
             	}
 }
 
diff --git a/Sources/c_snikket/src/__HaxeCBridgeBindings__.cpp b/Sources/c_snikket/src/__HaxeCBridgeBindings__.cpp
index f9ea9c0..b6ed7d6 100644
--- a/Sources/c_snikket/src/__HaxeCBridgeBindings__.cpp
+++ b/Sources/c_snikket/src/__HaxeCBridgeBindings__.cpp
@@ -120,6 +120,11 @@ namespace HaxeCBridgeInternal {
 			pair.first(pair.second);
 		}
 	}
+
+	bool hasPendingNativeCalls() {
+		AutoLock lock(queueMutex);
+		return !queue.empty();
+	}
 				
 	#if defined(HX_WINDOWS)
 	bool isHaxeMainThread() {
@@ -147,6 +152,10 @@ THREAD_FUNC_TYPE haxeMainThreadFunc(void *data) {
 
 	bool firstRun = !HaxeCBridgeInternal::staticsInitialized;
 
+	#if defined(HX_MACOS) || defined(IPHONE) || defined(APPLETV)
+	pthread_setname_np("Borogove Main");
+	#endif
+
 	// See hx::Init in StdLibs.cpp for reference
 	if (!HaxeCBridgeInternal::staticsInitialized) try {
 		::hx::Boot();
@@ -162,7 +171,7 @@ THREAD_FUNC_TYPE haxeMainThreadFunc(void *data) {
 		// keeps alive until manual stop is called
 		HaxeCBridge::mainThreadInit(HaxeCBridgeInternal::isHaxeMainThread);
 		HaxeCBridgeInternal::threadInitSemaphore.Set();
-		HaxeCBridge::mainThreadRun(HaxeCBridgeInternal::processNativeCalls, haxeExceptionCallback);
+		HaxeCBridge::mainThreadRun(HaxeCBridgeInternal::processNativeCalls, HaxeCBridgeInternal::hasPendingNativeCalls, haxeExceptionCallback);
 	} else {
 		// failed to initialize statics; unlock init semaphore so _initializeHaxeThread can continue and report the exception 
 		HaxeCBridgeInternal::threadInitSemaphore.Set();
@@ -4421,6 +4430,40 @@ void snikket_client_add_connection_failed_listener(void *a0, void (*a1) (void*),
 	data.lock.Wait();
 }
 
+HAXE_C_BRIDGE_LINKAGE
+void snikket_client_add_tls_check_listener(void *a0, bool (*a1) (const char*, const char**, size_t, void*), void *a2) {
+	if (HaxeCBridgeInternal::isHaxeMainThread()) {
+		return (snikket::Client((hx::Object *)a0, true))->addTlsCheckListener__fromC(cpp::Function<bool(const char*, const char**, size_t, void*)>(a1), a2);
+	}
+	struct Data {
+		struct {void * a0; bool (* a1) (const char*, const char**, size_t, void*); void* a2;} args;
+		HxSemaphore lock;
+	};
+	struct Callback {
+		static void run(void* p) {
+			// executed within the haxe main thread
+			Data* data = (Data*) p;
+			try {
+				(snikket::Client((hx::Object *)data->args.a0, true))->addTlsCheckListener__fromC(cpp::Function<bool(const char*, const char**, size_t, void*)>(data->args.a1), data->args.a2);
+				data->lock.Set();
+			} catch(Dynamic runtimeException) {
+				data->lock.Set();
+				throw runtimeException;
+			}
+		}
+	};
+
+	#ifdef HXCPP_DEBUG
+	assert(HaxeCBridgeInternal::threadRunning && "haxe thread not running, use snikket_initializeHaxeThread() to activate the haxe thread");
+	#endif
+
+	Data data = { {a0, a1, a2} };
+
+	// queue a callback to execute addTlsCheckListener__fromC() on the main thread and wait until execution completes
+	HaxeCBridgeInternal::runInMainThread(Callback::run, &data);
+	data.lock.Wait();
+}
+
 HAXE_C_BRIDGE_LINKAGE
 void snikket_client_add_chat_message_listener(void *a0, void (*a1) (void*, int, void*), void *a2) {
 	if (HaxeCBridgeInternal::isHaxeMainThread()) {
@@ -4625,6 +4668,40 @@ void snikket_client_add_call_ringing_listener(void *a0, void (*a1) (const char*,
 	data.lock.Wait();
 }
 
+HAXE_C_BRIDGE_LINKAGE
+void snikket_client_add_call_update_status_listener(void *a0, void (*a1) (void*, void*), void *a2) {
+	if (HaxeCBridgeInternal::isHaxeMainThread()) {
+		return (snikket::Client((hx::Object *)a0, true))->addCallUpdateStatusListener__fromC(cpp::Function<void(void*, void*)>(a1), a2);
+	}
+	struct Data {
+		struct {void * a0; void (* a1) (void*, void*); void* a2;} args;
+		HxSemaphore lock;
+	};
+	struct Callback {
+		static void run(void* p) {
+			// executed within the haxe main thread
+			Data* data = (Data*) p;
+			try {
+				(snikket::Client((hx::Object *)data->args.a0, true))->addCallUpdateStatusListener__fromC(cpp::Function<void(void*, void*)>(data->args.a1), data->args.a2);
+				data->lock.Set();
+			} catch(Dynamic runtimeException) {
+				data->lock.Set();
+				throw runtimeException;
+			}
+		}
+	};
+
+	#ifdef HXCPP_DEBUG
+	assert(HaxeCBridgeInternal::threadRunning && "haxe thread not running, use snikket_initializeHaxeThread() to activate the haxe thread");
+	#endif
+
+	Data data = { {a0, a1, a2} };
+
+	// queue a callback to execute addCallUpdateStatusListener__fromC() on the main thread and wait until execution completes
+	HaxeCBridgeInternal::runInMainThread(Callback::run, &data);
+	data.lock.Wait();
+}
+
 HAXE_C_BRIDGE_LINKAGE
 void snikket_client_add_call_media_listener(void *a0, void (*a1) (void*, bool, bool, void*), void *a2) {
 	if (HaxeCBridgeInternal::isHaxeMainThread()) {
@@ -6196,21 +6273,21 @@ void snikket_chat_hangup(void *a0) {
 }
 
 HAXE_C_BRIDGE_LINKAGE
-const char *snikket_chat_call_status(void *a0) {
+enum snikket_jingle_call_status snikket_chat_call_status(void *a0) {
 	if (HaxeCBridgeInternal::isHaxeMainThread()) {
-		return HaxeCBridge::retainHaxeString((snikket::Chat((hx::Object *)a0, true))->callStatus());
+		return static_cast<enum snikket_jingle_call_status>((snikket::Chat((hx::Object *)a0, true))->callStatus());
 	}
 	struct Data {
 		struct {void * a0;} args;
 		HxSemaphore lock;
-		const char * ret;
+		enum snikket_jingle_call_status ret;
 	};
 	struct Callback {
 		static void run(void* p) {
 			// executed within the haxe main thread
 			Data* data = (Data*) p;
 			try {
-				data->ret = HaxeCBridge::retainHaxeString((snikket::Chat((hx::Object *)data->args.a0, true))->callStatus());
+				data->ret = static_cast<enum snikket_jingle_call_status>((snikket::Chat((hx::Object *)data->args.a0, true))->callStatus());
 				data->lock.Set();
 			} catch(Dynamic runtimeException) {
 				data->lock.Set();
@@ -7010,21 +7087,21 @@ void snikket_jingle_initiated_session_add_media(void *a0, void *const *a1, size_
 }
 
 HAXE_C_BRIDGE_LINKAGE
-const char *snikket_jingle_initiated_session_call_status(void *a0) {
+enum snikket_jingle_call_status snikket_jingle_initiated_session_call_status(void *a0) {
 	if (HaxeCBridgeInternal::isHaxeMainThread()) {
-		return HaxeCBridge::retainHaxeString((snikket::jingle::InitiatedSession((hx::Object *)a0, true))->callStatus());
+		return static_cast<enum snikket_jingle_call_status>((snikket::jingle::InitiatedSession((hx::Object *)a0, true))->callStatus());
 	}
 	struct Data {
 		struct {void * a0;} args;
 		HxSemaphore lock;
-		const char * ret;
+		enum snikket_jingle_call_status ret;
 	};
 	struct Callback {
 		static void run(void* p) {
 			// executed within the haxe main thread
 			Data* data = (Data*) p;
 			try {
-				data->ret = HaxeCBridge::retainHaxeString((snikket::jingle::InitiatedSession((hx::Object *)data->args.a0, true))->callStatus());
+				data->ret = static_cast<enum snikket_jingle_call_status>((snikket::jingle::InitiatedSession((hx::Object *)data->args.a0, true))->callStatus());
 				data->lock.Set();
 			} catch(Dynamic runtimeException) {
 				data->lock.Set();
diff --git a/Sources/c_snikket/src/__boot__.cpp b/Sources/c_snikket/src/__boot__.cpp
index 1d38ec6..477bcd3 100644
--- a/Sources/c_snikket/src/__boot__.cpp
+++ b/Sources/c_snikket/src/__boot__.cpp
@@ -859,9 +859,6 @@
 #ifndef INCLUDED_haxe_ds_List
 #include <haxe/ds/List.h>
 #endif
-#ifndef INCLUDED_haxe_ds_IntMap
-#include <haxe/ds/IntMap.h>
-#endif
 #ifndef INCLUDED_haxe_ds_EnumValueMap
 #include <haxe/ds/EnumValueMap.h>
 #endif
@@ -910,6 +907,9 @@
 #ifndef INCLUDED_sys_thread_Mutex
 #include <sys/thread/Mutex.h>
 #endif
+#ifndef INCLUDED_haxe__CallStack_CallStack_Impl_
+#include <haxe/_CallStack/CallStack_Impl_.h>
+#endif
 #ifndef INCLUDED_datetime_utils_DateTimeUtils
 #include <datetime/utils/DateTimeUtils.h>
 #endif
@@ -934,6 +934,9 @@
 #ifndef INCLUDED_cpp_Lib
 #include <cpp/Lib.h>
 #endif
+#ifndef INCLUDED_cpp_Int64Map
+#include <cpp/Int64Map.h>
+#endif
 #ifndef INCLUDED_haxe_IMap
 #include <haxe/IMap.h>
 #endif
@@ -964,9 +967,6 @@
 #ifndef INCLUDED_Lambda
 #include <Lambda.h>
 #endif
-#ifndef INCLUDED__HaxeCBridge_Int64Map_Impl_
-#include <_HaxeCBridge/Int64Map_Impl_.h>
-#endif
 #ifndef INCLUDED_EReg
 #include <EReg.h>
 #endif
@@ -1266,7 +1266,6 @@ __files__boot();
 ::haxe::ds::ObjectMap_obj::__register();
 ::haxe::ds::_List::ListNode_obj::__register();
 ::haxe::ds::List_obj::__register();
-::haxe::ds::IntMap_obj::__register();
 ::haxe::ds::EnumValueMap_obj::__register();
 ::haxe::ds::TreeNode_obj::__register();
 ::haxe::ds::BalancedTree_obj::__register();
@@ -1283,6 +1282,7 @@ __files__boot();
 ::haxe::EntryPoint_obj::__register();
 ::sys::thread::EventLoop_obj::__register();
 ::sys::thread::Mutex_obj::__register();
+::haxe::_CallStack::CallStack_Impl__obj::__register();
 ::datetime::utils::DateTimeUtils_obj::__register();
 ::datetime::utils::DateTimeMonthUtils_obj::__register();
 ::datetime::utils::DateTimeIntervalUtils_obj::__register();
@@ -1291,6 +1291,7 @@ __files__boot();
 ::datetime::_DateTime::DateTime_Impl__obj::__register();
 ::cpp::_NativeString::NativeString_Impl__obj::__register();
 ::cpp::Lib_obj::__register();
+::cpp::Int64Map_obj::__register();
 ::haxe::IMap_obj::__register();
 ::_Xml::XmlType_Impl__obj::__register();
 ::_UnicodeString::UnicodeString_Impl__obj::__register();
@@ -1301,7 +1302,6 @@ __files__boot();
 ::Std_obj::__register();
 ::Reflect_obj::__register();
 ::Lambda_obj::__register();
-::_HaxeCBridge::Int64Map_Impl__obj::__register();
 ::EReg_obj::__register();
 ::Date_obj::__register();
 ::tink::streams::Step_obj::__boot();
diff --git a/Sources/c_snikket/src/__files__.cpp b/Sources/c_snikket/src/__files__.cpp
index ae3b24f..f76bf4c 100644
--- a/Sources/c_snikket/src/__files__.cpp
+++ b/Sources/c_snikket/src/__files__.cpp
@@ -8,6 +8,7 @@ const char *__hxcpp_all_files[] = {
 "/usr/local/lib/haxe/std/StringTools.hx",
 "/usr/local/lib/haxe/std/UnicodeString.hx",
 "/usr/local/lib/haxe/std/Xml.hx",
+"/usr/local/lib/haxe/std/cpp/Int64Map.hx",
 "/usr/local/lib/haxe/std/cpp/NativeString.hx",
 "/usr/local/lib/haxe/std/cpp/_std/Date.hx",
 "/usr/local/lib/haxe/std/cpp/_std/EReg.hx",
@@ -19,7 +20,6 @@ const char *__hxcpp_all_files[] = {
 "/usr/local/lib/haxe/std/cpp/_std/haxe/Exception.hx",
 "/usr/local/lib/haxe/std/cpp/_std/haxe/Log.hx",
 "/usr/local/lib/haxe/std/cpp/_std/haxe/NativeStackTrace.hx",
-"/usr/local/lib/haxe/std/cpp/_std/haxe/ds/IntMap.hx",
 "/usr/local/lib/haxe/std/cpp/_std/haxe/ds/ObjectMap.hx",
 "/usr/local/lib/haxe/std/cpp/_std/haxe/ds/StringMap.hx",
 "/usr/local/lib/haxe/std/cpp/_std/sys/FileSystem.hx",
@@ -37,6 +37,7 @@ const char *__hxcpp_all_files[] = {
 "/usr/local/lib/haxe/std/cpp/_std/sys/thread/Lock.hx",
 "/usr/local/lib/haxe/std/cpp/_std/sys/thread/Mutex.hx",
 "/usr/local/lib/haxe/std/cpp/_std/sys/thread/Thread.hx",
+"/usr/local/lib/haxe/std/haxe/CallStack.hx",
 "/usr/local/lib/haxe/std/haxe/EntryPoint.hx",
 "/usr/local/lib/haxe/std/haxe/MainLoop.hx",
 "/usr/local/lib/haxe/std/haxe/Timer.hx",
@@ -199,6 +200,7 @@ const char *__hxcpp_all_files_fullpath[] = {
 "/usr/local/lib/haxe/std/StringTools.hx",
 "/usr/local/lib/haxe/std/UnicodeString.hx",
 "/usr/local/lib/haxe/std/Xml.hx",
+"/usr/local/lib/haxe/std/cpp/Int64Map.hx",
 "/usr/local/lib/haxe/std/cpp/NativeString.hx",
 "/usr/local/lib/haxe/std/cpp/_std/Date.hx",
 "/usr/local/lib/haxe/std/cpp/_std/EReg.hx",
@@ -210,7 +212,6 @@ const char *__hxcpp_all_files_fullpath[] = {
 "/usr/local/lib/haxe/std/cpp/_std/haxe/Exception.hx",
 "/usr/local/lib/haxe/std/cpp/_std/haxe/Log.hx",
 "/usr/local/lib/haxe/std/cpp/_std/haxe/NativeStackTrace.hx",
-"/usr/local/lib/haxe/std/cpp/_std/haxe/ds/IntMap.hx",
 "/usr/local/lib/haxe/std/cpp/_std/haxe/ds/ObjectMap.hx",
 "/usr/local/lib/haxe/std/cpp/_std/haxe/ds/StringMap.hx",
 "/usr/local/lib/haxe/std/cpp/_std/sys/FileSystem.hx",
@@ -228,6 +229,7 @@ const char *__hxcpp_all_files_fullpath[] = {
 "/usr/local/lib/haxe/std/cpp/_std/sys/thread/Lock.hx",
 "/usr/local/lib/haxe/std/cpp/_std/sys/thread/Mutex.hx",
 "/usr/local/lib/haxe/std/cpp/_std/sys/thread/Thread.hx",
+"/usr/local/lib/haxe/std/haxe/CallStack.hx",
 "/usr/local/lib/haxe/std/haxe/EntryPoint.hx",
 "/usr/local/lib/haxe/std/haxe/MainLoop.hx",
 "/usr/local/lib/haxe/std/haxe/Timer.hx",
@@ -389,7 +391,6 @@ const char *__hxcpp_all_classes[] = {
 "Date",
 "EReg",
 "HaxeCBridge",
-"_HaxeCBridge.Int64Map_Impl_",
 "_HaxeCBridge.Internal",
 "Lambda",
 "Reflect",
@@ -401,6 +402,7 @@ const char *__hxcpp_all_classes[] = {
 "_UnicodeString.UnicodeString_Impl_",
 "_Xml.XmlType_Impl_",
 "Xml",
+"cpp.Int64Map",
 "cpp.Lib",
 "cpp._NativeString.NativeString_Impl_",
 "datetime._DateTime.DateTime_Impl_",
@@ -409,6 +411,7 @@ const char *__hxcpp_all_classes[] = {
 "datetime.utils.DateTimeIntervalUtils",
 "datetime.utils.DateTimeMonthUtils",
 "datetime.utils.DateTimeUtils",
+"haxe._CallStack.CallStack_Impl_",
 "sys.thread.Mutex",
 "sys.thread.EventLoop",
 "sys.thread._Thread.HaxeThread",
@@ -428,7 +431,6 @@ const char *__hxcpp_all_classes[] = {
 "haxe.ds.BalancedTree",
 "haxe.ds.TreeNode",
 "haxe.ds.EnumValueMap",
-"haxe.ds.IntMap",
 "haxe.ds.List",
 "haxe.ds._List.ListNode",
 "haxe.ds.ObjectMap",
diff --git a/Sources/c_snikket/src/cpp/Int64Map.cpp b/Sources/c_snikket/src/cpp/Int64Map.cpp
new file mode 100644
index 0000000..4250c91
--- /dev/null
+++ b/Sources/c_snikket/src/cpp/Int64Map.cpp
@@ -0,0 +1,197 @@
+// Generated by Haxe 4.3.3
+#include <hxcpp.h>
+
+#ifndef INCLUDED_cpp_Int64Map
+#include <cpp/Int64Map.h>
+#endif
+#ifndef INCLUDED_haxe_IMap
+#include <haxe/IMap.h>
+#endif
+#ifndef INCLUDED_haxe_iterators_ArrayIterator
+#include <haxe/iterators/ArrayIterator.h>
+#endif
+
+HX_DEFINE_STACK_FRAME(_hx_pos_4451ff945381db9c_62_new,"cpp.Int64Map","new",0x2e62216c,"cpp.Int64Map.new","/usr/local/lib/haxe/std/cpp/Int64Map.hx",62,0x4cc7aa06)
+HX_LOCAL_STACK_FRAME(_hx_pos_4451ff945381db9c_65_set,"cpp.Int64Map","set",0x2e65ecae,"cpp.Int64Map.set","/usr/local/lib/haxe/std/cpp/Int64Map.hx",65,0x4cc7aa06)
+HX_LOCAL_STACK_FRAME(_hx_pos_4451ff945381db9c_69_get,"cpp.Int64Map","get",0x2e5cd1a2,"cpp.Int64Map.get","/usr/local/lib/haxe/std/cpp/Int64Map.hx",69,0x4cc7aa06)
+HX_LOCAL_STACK_FRAME(_hx_pos_4451ff945381db9c_77_remove,"cpp.Int64Map","remove",0x25717ab8,"cpp.Int64Map.remove","/usr/local/lib/haxe/std/cpp/Int64Map.hx",77,0x4cc7aa06)
+HX_LOCAL_STACK_FRAME(_hx_pos_4451ff945381db9c_80_keys,"cpp.Int64Map","keys",0x657f7b68,"cpp.Int64Map.keys","/usr/local/lib/haxe/std/cpp/Int64Map.hx",80,0x4cc7aa06)
+namespace cpp{
+
+void Int64Map_obj::__construct(){
+            	HX_STACKFRAME(&_hx_pos_4451ff945381db9c_62_new)
+            	}
+
+Dynamic Int64Map_obj::__CreateEmpty() { return new Int64Map_obj; }
+
+void *Int64Map_obj::_hx_vtable = 0;
+
+Dynamic Int64Map_obj::__Create(::hx::DynamicArray inArgs)
+{
+	::hx::ObjectPtr< Int64Map_obj > _hx_result = new Int64Map_obj();
+	_hx_result->__construct();
+	return _hx_result;
+}
+
+bool Int64Map_obj::_hx_isInstanceOf(int inClassId) {
+	return inClassId==(int)0x00000001 || inClassId==(int)0x1f960db2;
+}
+
+static ::haxe::IMap_obj _hx_cpp_Int64Map__hx_haxe_IMap= {
+	(  ::Dynamic (::hx::Object::*)( ::Dynamic))&::cpp::Int64Map_obj::get_a7a2487a,
+	(  ::Dynamic (::hx::Object::*)())&::cpp::Int64Map_obj::keys,
+};
+
+ ::Dynamic Int64Map_obj::get_a7a2487a( ::Dynamic k) {
+			return get(k);
+}
+void *Int64Map_obj::_hx_getInterface(int inHash) {
+	switch(inHash) {
+		case (int)0x09c2bd39: return &_hx_cpp_Int64Map__hx_haxe_IMap;
+	}
+	#ifdef HXCPP_SCRIPTABLE
+	return super::_hx_getInterface(inHash);
+	#else
+	return 0;
+	#endif
+}
+
+void Int64Map_obj::set(::cpp::Int64 key, ::Dynamic value){
+            	HX_STACKFRAME(&_hx_pos_4451ff945381db9c_65_set)
+HXDLIN(  65)		 ::__int64_hash_set(HX_MAP_THIS,key,value);
+            	}
+
+
+HX_DEFINE_DYNAMIC_FUNC2(Int64Map_obj,set,(void))
+
+ ::Dynamic Int64Map_obj::get(::cpp::Int64 key){
+            	HX_STACKFRAME(&_hx_pos_4451ff945381db9c_69_get)
+HXDLIN(  69)		return  ::__int64_hash_get(this->h,key);
+            	}
+
+
+HX_DEFINE_DYNAMIC_FUNC1(Int64Map_obj,get,return )
+
+bool Int64Map_obj::remove(::cpp::Int64 key){
+            	HX_STACKFRAME(&_hx_pos_4451ff945381db9c_77_remove)
+HXDLIN(  77)		return  ::__int64_hash_remove(this->h,key);
+            	}
+
+
+HX_DEFINE_DYNAMIC_FUNC1(Int64Map_obj,remove,return )
+
+ ::Dynamic Int64Map_obj::keys(){
+            	HX_GC_STACKFRAME(&_hx_pos_4451ff945381db9c_80_keys)
+HXLINE(  81)		::Array< ::cpp::Int64 > a =  ::__int64_hash_keys(this->h);
+HXLINE(  82)		return  ::haxe::iterators::ArrayIterator_obj::__alloc( HX_CTX ,a);
+            	}
+
+
+HX_DEFINE_DYNAMIC_FUNC0(Int64Map_obj,keys,return )
+
+
+::hx::ObjectPtr< Int64Map_obj > Int64Map_obj::__new() {
+	::hx::ObjectPtr< Int64Map_obj > __this = new Int64Map_obj();
+	__this->__construct();
+	return __this;
+}
+
+::hx::ObjectPtr< Int64Map_obj > Int64Map_obj::__alloc(::hx::Ctx *_hx_ctx) {
+	Int64Map_obj *__this = (Int64Map_obj*)(::hx::Ctx::alloc(_hx_ctx, sizeof(Int64Map_obj), true, "cpp.Int64Map"));
+	*(void **)__this = Int64Map_obj::_hx_vtable;
+	__this->__construct();
+	return __this;
+}
+
+Int64Map_obj::Int64Map_obj()
+{
+}
+
+void Int64Map_obj::__Mark(HX_MARK_PARAMS)
+{
+	HX_MARK_BEGIN_CLASS(Int64Map);
+	HX_MARK_MEMBER_NAME(h,"h");
+	HX_MARK_END_CLASS();
+}
+
+void Int64Map_obj::__Visit(HX_VISIT_PARAMS)
+{
+	HX_VISIT_MEMBER_NAME(h,"h");
+}
+
+::hx::Val Int64Map_obj::__Field(const ::String &inName,::hx::PropertyAccess inCallProp)
+{
+	switch(inName.length) {
+	case 1:
+		if (HX_FIELD_EQ(inName,"h") ) { return ::hx::Val( h ); }
+		break;
+	case 3:
+		if (HX_FIELD_EQ(inName,"set") ) { return ::hx::Val( set_dyn() ); }
+		if (HX_FIELD_EQ(inName,"get") ) { return ::hx::Val( get_dyn() ); }
+		break;
+	case 4:
+		if (HX_FIELD_EQ(inName,"keys") ) { return ::hx::Val( keys_dyn() ); }
+		break;
+	case 6:
+		if (HX_FIELD_EQ(inName,"remove") ) { return ::hx::Val( remove_dyn() ); }
+	}
+	return super::__Field(inName,inCallProp);
+}
+
+::hx::Val Int64Map_obj::__SetField(const ::String &inName,const ::hx::Val &inValue,::hx::PropertyAccess inCallProp)
+{
+	switch(inName.length) {
+	case 1:
+		if (HX_FIELD_EQ(inName,"h") ) { h=inValue.Cast<  ::Dynamic >(); return inValue; }
+	}
+	return super::__SetField(inName,inValue,inCallProp);
+}
+
+void Int64Map_obj::__GetFields(Array< ::String> &outFields)
+{
+	outFields->push(HX_("h",68,00,00,00));
+	super::__GetFields(outFields);
+};
+
+#ifdef HXCPP_SCRIPTABLE
+static ::hx::StorageInfo Int64Map_obj_sMemberStorageInfo[] = {
+	{::hx::fsObject /*  ::Dynamic */ ,(int)offsetof(Int64Map_obj,h),HX_("h",68,00,00,00)},
+	{ ::hx::fsUnknown, 0, null()}
+};
+static ::hx::StaticInfo *Int64Map_obj_sStaticStorageInfo = 0;
+#endif
+
+static ::String Int64Map_obj_sMemberFields[] = {
+	HX_("h",68,00,00,00),
+	HX_("set",a2,9b,57,00),
+	HX_("get",96,80,4e,00),
+	HX_("remove",44,9c,88,04),
+	HX_("keys",f4,e1,06,47),
+	::String(null()) };
+
+::hx::Class Int64Map_obj::__mClass;
+
+void Int64Map_obj::__register()
+{
+	Int64Map_obj _hx_dummy;
+	Int64Map_obj::_hx_vtable = *(void **)&_hx_dummy;
+	::hx::Static(__mClass) = new ::hx::Class_obj();
+	__mClass->mName = HX_("cpp.Int64Map",7a,3b,8a,9f);
+	__mClass->mSuper = &super::__SGetClass();
+	__mClass->mConstructEmpty = &__CreateEmpty;
+	__mClass->mConstructArgs = &__Create;
+	__mClass->mGetStaticField = &::hx::Class_obj::GetNoStaticField;
+	__mClass->mSetStaticField = &::hx::Class_obj::SetNoStaticField;
+	__mClass->mStatics = ::hx::Class_obj::dupFunctions(0 /* sStaticFields */);
+	__mClass->mMembers = ::hx::Class_obj::dupFunctions(Int64Map_obj_sMemberFields);
+	__mClass->mCanCast = ::hx::TCanCast< Int64Map_obj >;
+#ifdef HXCPP_SCRIPTABLE
+	__mClass->mMemberStorageInfo = Int64Map_obj_sMemberStorageInfo;
+#endif
+#ifdef HXCPP_SCRIPTABLE
+	__mClass->mStaticStorageInfo = Int64Map_obj_sStaticStorageInfo;
+#endif
+	::hx::_hx_RegisterClass(__mClass->mName, __mClass);
+}
+
+} // end namespace cpp
diff --git a/Sources/c_snikket/src/haxe/Exception.cpp b/Sources/c_snikket/src/haxe/Exception.cpp
index 6925fe8..c7351e0 100644
--- a/Sources/c_snikket/src/haxe/Exception.cpp
+++ b/Sources/c_snikket/src/haxe/Exception.cpp
@@ -10,13 +10,19 @@
 #ifndef INCLUDED_haxe_NativeStackTrace
 #include <haxe/NativeStackTrace.h>
 #endif
+#ifndef INCLUDED_haxe_StackItem
+#include <haxe/StackItem.h>
+#endif
 #ifndef INCLUDED_haxe_ValueException
 #include <haxe/ValueException.h>
 #endif
 
 HX_DEFINE_STACK_FRAME(_hx_pos_7c0836163b1ec49e_5_new,"haxe.Exception","new",0xa32fba59,"haxe.Exception.new","/usr/local/lib/haxe/std/cpp/_std/haxe/Exception.hx",5,0x2b1198f6)
 HX_LOCAL_STACK_FRAME(_hx_pos_7c0836163b1ec49e_56_toString,"haxe.Exception","toString",0x11a32013,"haxe.Exception.toString","/usr/local/lib/haxe/std/cpp/_std/haxe/Exception.hx",56,0x2b1198f6)
+HX_LOCAL_STACK_FRAME(_hx_pos_7c0836163b1ec49e_66___shiftStack,"haxe.Exception","__shiftStack",0x45445d6d,"haxe.Exception.__shiftStack","/usr/local/lib/haxe/std/cpp/_std/haxe/Exception.hx",66,0x2b1198f6)
+HX_LOCAL_STACK_FRAME(_hx_pos_7c0836163b1ec49e_72___unshiftStack,"haxe.Exception","__unshiftStack",0xb32f5cc6,"haxe.Exception.__unshiftStack","/usr/local/lib/haxe/std/cpp/_std/haxe/Exception.hx",72,0x2b1198f6)
 HX_LOCAL_STACK_FRAME(_hx_pos_7c0836163b1ec49e_76_get_message,"haxe.Exception","get_message",0x7b47a0d7,"haxe.Exception.get_message","/usr/local/lib/haxe/std/cpp/_std/haxe/Exception.hx",76,0x2b1198f6)
+HX_LOCAL_STACK_FRAME(_hx_pos_7c0836163b1ec49e_88_get_stack,"haxe.Exception","get_stack",0xfc45ee58,"haxe.Exception.get_stack","/usr/local/lib/haxe/std/cpp/_std/haxe/Exception.hx",88,0x2b1198f6)
 HX_LOCAL_STACK_FRAME(_hx_pos_7c0836163b1ec49e_19_caught,"haxe.Exception","caught",0xbc294f23,"haxe.Exception.caught","/usr/local/lib/haxe/std/cpp/_std/haxe/Exception.hx",19,0x2b1198f6)
 namespace haxe{
 
@@ -58,6 +64,22 @@ HXDLIN(  56)		return this->get_message();
 
 HX_DEFINE_DYNAMIC_FUNC0(Exception_obj,toString,return )
 
+void Exception_obj::_hx___shiftStack(){
+            	HX_STACKFRAME(&_hx_pos_7c0836163b1ec49e_66___shiftStack)
+HXDLIN(  66)		this->_hx___skipStack++;
+            	}
+
+
+HX_DEFINE_DYNAMIC_FUNC0(Exception_obj,_hx___shiftStack,(void))
+
+void Exception_obj::_hx___unshiftStack(){
+            	HX_STACKFRAME(&_hx_pos_7c0836163b1ec49e_72___unshiftStack)
+HXDLIN(  72)		this->_hx___skipStack--;
+            	}
+
+
+HX_DEFINE_DYNAMIC_FUNC0(Exception_obj,_hx___unshiftStack,(void))
+
 ::String Exception_obj::get_message(){
             	HX_STACKFRAME(&_hx_pos_7c0836163b1ec49e_76_get_message)
 HXDLIN(  76)		return this->_hx___exceptionMessage;
@@ -66,6 +88,22 @@ HXDLIN(  76)		return this->_hx___exceptionMessage;
 
 HX_DEFINE_DYNAMIC_FUNC0(Exception_obj,get_message,return )
 
+::Array< ::Dynamic> Exception_obj::get_stack(){
+            	HX_STACKFRAME(&_hx_pos_7c0836163b1ec49e_88_get_stack)
+HXDLIN(  88)		::Array< ::Dynamic> _g = this->_hx___exceptionStack;
+HXLINE(  89)		if (::hx::IsNull( _g )) {
+HXLINE(  89)			return (this->_hx___exceptionStack = ::haxe::NativeStackTrace_obj::toHaxe(this->_hx___nativeStack,this->_hx___skipStack));
+            		}
+            		else {
+HXLINE(  90)			::Array< ::Dynamic> s = _g;
+HXDLIN(  90)			return s;
+            		}
+HXLINE(  89)		return null();
+            	}
+
+
+HX_DEFINE_DYNAMIC_FUNC0(Exception_obj,get_stack,return )
+
  ::haxe::Exception Exception_obj::caught( ::Dynamic value){
             	HX_GC_STACKFRAME(&_hx_pos_7c0836163b1ec49e_19_caught)
 HXDLIN(  19)		if (::Std_obj::isOfType(value,::hx::ClassOf< ::haxe::Exception >())) {
@@ -104,6 +142,7 @@ void Exception_obj::__Mark(HX_MARK_PARAMS)
 {
 	HX_MARK_BEGIN_CLASS(Exception);
 	HX_MARK_MEMBER_NAME(_hx___exceptionMessage,"__exceptionMessage");
+	HX_MARK_MEMBER_NAME(_hx___exceptionStack,"__exceptionStack");
 	HX_MARK_MEMBER_NAME(_hx___nativeStack,"__nativeStack");
 	HX_MARK_MEMBER_NAME(_hx___skipStack,"__skipStack");
 	HX_MARK_MEMBER_NAME(_hx___nativeException,"__nativeException");
@@ -114,6 +153,7 @@ void Exception_obj::__Mark(HX_MARK_PARAMS)
 void Exception_obj::__Visit(HX_VISIT_PARAMS)
 {
 	HX_VISIT_MEMBER_NAME(_hx___exceptionMessage,"__exceptionMessage");
+	HX_VISIT_MEMBER_NAME(_hx___exceptionStack,"__exceptionStack");
 	HX_VISIT_MEMBER_NAME(_hx___nativeStack,"__nativeStack");
 	HX_VISIT_MEMBER_NAME(_hx___skipStack,"__skipStack");
 	HX_VISIT_MEMBER_NAME(_hx___nativeException,"__nativeException");
@@ -123,19 +163,34 @@ void Exception_obj::__Visit(HX_VISIT_PARAMS)
 ::hx::Val Exception_obj::__Field(const ::String &inName,::hx::PropertyAccess inCallProp)
 {
 	switch(inName.length) {
+	case 5:
+		if (HX_FIELD_EQ(inName,"stack") ) { if (inCallProp == ::hx::paccAlways) return ::hx::Val( get_stack() ); }
+		break;
 	case 7:
 		if (HX_FIELD_EQ(inName,"message") ) { if (inCallProp == ::hx::paccAlways) return ::hx::Val( get_message() ); }
 		break;
 	case 8:
 		if (HX_FIELD_EQ(inName,"toString") ) { return ::hx::Val( toString_dyn() ); }
 		break;
+	case 9:
+		if (HX_FIELD_EQ(inName,"get_stack") ) { return ::hx::Val( get_stack_dyn() ); }
+		break;
 	case 11:
 		if (HX_FIELD_EQ(inName,"__skipStack") ) { return ::hx::Val( _hx___skipStack ); }
 		if (HX_FIELD_EQ(inName,"get_message") ) { return ::hx::Val( get_message_dyn() ); }
 		break;
+	case 12:
+		if (HX_FIELD_EQ(inName,"__shiftStack") ) { return ::hx::Val( _hx___shiftStack_dyn() ); }
+		break;
 	case 13:
 		if (HX_FIELD_EQ(inName,"__nativeStack") ) { return ::hx::Val( _hx___nativeStack ); }
 		break;
+	case 14:
+		if (HX_FIELD_EQ(inName,"__unshiftStack") ) { return ::hx::Val( _hx___unshiftStack_dyn() ); }
+		break;
+	case 16:
+		if (HX_FIELD_EQ(inName,"__exceptionStack") ) { return ::hx::Val( _hx___exceptionStack ); }
+		break;
 	case 17:
 		if (HX_FIELD_EQ(inName,"__nativeException") ) { return ::hx::Val( _hx___nativeException ); }
 		break;
@@ -166,6 +221,9 @@ bool Exception_obj::__GetStatic(const ::String &inName, Dynamic &outValue, ::hx:
 	case 13:
 		if (HX_FIELD_EQ(inName,"__nativeStack") ) { _hx___nativeStack=inValue.Cast< ::Array< ::String > >(); return inValue; }
 		break;
+	case 16:
+		if (HX_FIELD_EQ(inName,"__exceptionStack") ) { _hx___exceptionStack=inValue.Cast< ::Array< ::Dynamic> >(); return inValue; }
+		break;
 	case 17:
 		if (HX_FIELD_EQ(inName,"__nativeException") ) { _hx___nativeException=inValue.Cast<  ::Dynamic >(); return inValue; }
 		break;
@@ -181,7 +239,9 @@ bool Exception_obj::__GetStatic(const ::String &inName, Dynamic &outValue, ::hx:
 void Exception_obj::__GetFields(Array< ::String> &outFields)
 {
 	outFields->push(HX_("message",c7,35,11,9a));
+	outFields->push(HX_("stack",48,67,0b,84));
 	outFields->push(HX_("__exceptionMessage",58,18,4c,1e));
+	outFields->push(HX_("__exceptionStack",99,d3,95,3f));
 	outFields->push(HX_("__nativeStack",11,2b,7f,33));
 	outFields->push(HX_("__skipStack",29,1d,33,c6));
 	outFields->push(HX_("__nativeException",98,ec,35,0d));
@@ -192,6 +252,7 @@ void Exception_obj::__GetFields(Array< ::String> &outFields)
 #ifdef HXCPP_SCRIPTABLE
 static ::hx::StorageInfo Exception_obj_sMemberStorageInfo[] = {
 	{::hx::fsString,(int)offsetof(Exception_obj,_hx___exceptionMessage),HX_("__exceptionMessage",58,18,4c,1e)},
+	{::hx::fsObject /* ::Array< ::Dynamic> */ ,(int)offsetof(Exception_obj,_hx___exceptionStack),HX_("__exceptionStack",99,d3,95,3f)},
 	{::hx::fsObject /* ::Array< ::String > */ ,(int)offsetof(Exception_obj,_hx___nativeStack),HX_("__nativeStack",11,2b,7f,33)},
 	{::hx::fsInt,(int)offsetof(Exception_obj,_hx___skipStack),HX_("__skipStack",29,1d,33,c6)},
 	{::hx::fsObject /*  ::Dynamic */ ,(int)offsetof(Exception_obj,_hx___nativeException),HX_("__nativeException",98,ec,35,0d)},
@@ -203,12 +264,16 @@ static ::hx::StaticInfo *Exception_obj_sStaticStorageInfo = 0;
 
 static ::String Exception_obj_sMemberFields[] = {
 	HX_("__exceptionMessage",58,18,4c,1e),
+	HX_("__exceptionStack",99,d3,95,3f),
 	HX_("__nativeStack",11,2b,7f,33),
 	HX_("__skipStack",29,1d,33,c6),
 	HX_("__nativeException",98,ec,35,0d),
 	HX_("__previousException",f8,9d,b4,84),
 	HX_("toString",ac,d0,6e,38),
+	HX_("__shiftStack",86,ce,f6,cb),
+	HX_("__unshiftStack",1f,06,33,20),
 	HX_("get_message",de,95,0b,20),
+	HX_("get_stack",9f,c3,b4,c7),
 	::String(null()) };
 
 ::hx::Class Exception_obj::__mClass;
diff --git a/Sources/c_snikket/src/haxe/NativeStackTrace.cpp b/Sources/c_snikket/src/haxe/NativeStackTrace.cpp
index 654bc33..0fc8acf 100644
--- a/Sources/c_snikket/src/haxe/NativeStackTrace.cpp
+++ b/Sources/c_snikket/src/haxe/NativeStackTrace.cpp
@@ -1,11 +1,18 @@
 // Generated by Haxe 4.3.3
 #include <hxcpp.h>
 
+#ifndef INCLUDED_Std
+#include <Std.h>
+#endif
 #ifndef INCLUDED_haxe_NativeStackTrace
 #include <haxe/NativeStackTrace.h>
 #endif
+#ifndef INCLUDED_haxe_StackItem
+#include <haxe/StackItem.h>
+#endif
 
 HX_LOCAL_STACK_FRAME(_hx_pos_0eaca57ef1f373a1_12_saveStack,"haxe.NativeStackTrace","saveStack",0x471b27d9,"haxe.NativeStackTrace.saveStack","/usr/local/lib/haxe/std/cpp/_std/haxe/NativeStackTrace.hx",12,0xab41cc63)
+HX_LOCAL_STACK_FRAME(_hx_pos_0eaca57ef1f373a1_25_toHaxe,"haxe.NativeStackTrace","toHaxe",0x6b36d173,"haxe.NativeStackTrace.toHaxe","/usr/local/lib/haxe/std/cpp/_std/haxe/NativeStackTrace.hx",25,0xab41cc63)
 namespace haxe{
 
 void NativeStackTrace_obj::__construct() { }
@@ -46,6 +53,44 @@ STATIC_HX_DEFINE_DYNAMIC_FUNC0(NativeStackTrace_obj,callStack,return )
 
 STATIC_HX_DEFINE_DYNAMIC_FUNC0(NativeStackTrace_obj,exceptionStack,return )
 
+::Array< ::Dynamic> NativeStackTrace_obj::toHaxe(::Array< ::String > native,::hx::Null< int >  __o_skip){
+            		int skip = __o_skip.Default(0);
+            	HX_STACKFRAME(&_hx_pos_0eaca57ef1f373a1_25_toHaxe)
+HXLINE(  26)		::Array< ::String > stack = native;
+HXLINE(  27)		::Array< ::Dynamic> m = ::Array_obj< ::Dynamic>::__new();
+HXLINE(  28)		{
+HXLINE(  28)			int _g = 0;
+HXDLIN(  28)			int _g1 = stack->length;
+HXDLIN(  28)			while((_g < _g1)){
+HXLINE(  28)				_g = (_g + 1);
+HXDLIN(  28)				int i = (_g - 1);
+HXLINE(  29)				if ((skip > i)) {
+HXLINE(  30)					continue;
+            				}
+HXLINE(  32)				::Array< ::String > words = stack->__get(i).split(HX_("::",c0,32,00,00));
+HXLINE(  33)				if ((words->length == 0)) {
+HXLINE(  34)					m->push(::haxe::StackItem_obj::CFunction_dyn());
+            				}
+            				else {
+HXLINE(  35)					if ((words->length == 2)) {
+HXLINE(  36)						m->push(::haxe::StackItem_obj::Method(words->__get(0),words->__get(1)));
+            					}
+            					else {
+HXLINE(  37)						if ((words->length == 4)) {
+HXLINE(  38)							 ::haxe::StackItem _hx_tmp = ::haxe::StackItem_obj::Method(words->__get(0),words->__get(1));
+HXDLIN(  38)							::String words1 = words->__get(2);
+HXDLIN(  38)							m->push(::haxe::StackItem_obj::FilePos(_hx_tmp,words1,::Std_obj::parseInt(words->__get(3)),null()));
+            						}
+            					}
+            				}
+            			}
+            		}
+HXLINE(  40)		return m;
+            	}
+
+
+STATIC_HX_DEFINE_DYNAMIC_FUNC2(NativeStackTrace_obj,toHaxe,return )
+
 
 NativeStackTrace_obj::NativeStackTrace_obj()
 {
@@ -54,6 +99,9 @@ NativeStackTrace_obj::NativeStackTrace_obj()
 bool NativeStackTrace_obj::__GetStatic(const ::String &inName, Dynamic &outValue, ::hx::PropertyAccess inCallProp)
 {
 	switch(inName.length) {
+	case 6:
+		if (HX_FIELD_EQ(inName,"toHaxe") ) { outValue = toHaxe_dyn(); return true; }
+		break;
 	case 9:
 		if (HX_FIELD_EQ(inName,"saveStack") ) { outValue = saveStack_dyn(); return true; }
 		if (HX_FIELD_EQ(inName,"callStack") ) { outValue = callStack_dyn(); return true; }
@@ -75,6 +123,7 @@ static ::String NativeStackTrace_obj_sStaticFields[] = {
 	HX_("saveStack",cb,6e,b8,12),
 	HX_("callStack",ca,c1,4a,10),
 	HX_("exceptionStack",79,48,56,0b),
+	HX_("toHaxe",41,9f,c1,7a),
 	::String(null())
 };
 
diff --git a/Sources/c_snikket/src/haxe/ValueException.cpp b/Sources/c_snikket/src/haxe/ValueException.cpp
index 94292f4..c1b82f7 100644
--- a/Sources/c_snikket/src/haxe/ValueException.cpp
+++ b/Sources/c_snikket/src/haxe/ValueException.cpp
@@ -16,15 +16,20 @@ namespace haxe{
 
 void ValueException_obj::__construct( ::Dynamic value, ::haxe::Exception previous, ::Dynamic native){
             	HX_STACKFRAME(&_hx_pos_aef49c9161dcd373_23_new)
-HXLINE(  24)		::String _hx_tmp;
-HXDLIN(  24)		if (::hx::IsNull( value )) {
-HXLINE(  24)			_hx_tmp = HX_("null",87,9e,0e,49);
+HXDLIN(  23)		{
+HXLINE(  24)			::String _hx_tmp;
+HXDLIN(  24)			if (::hx::IsNull( value )) {
+HXLINE(  24)				_hx_tmp = HX_("null",87,9e,0e,49);
+            			}
+            			else {
+HXLINE(  24)				_hx_tmp = ::Std_obj::string(value);
+            			}
+HXDLIN(  24)			super::__construct(_hx_tmp,previous,native);
+HXLINE(  25)			this->value = value;
             		}
-            		else {
-HXLINE(  24)			_hx_tmp = ::Std_obj::string(value);
+HXLINE(  23)		{
+HXDLIN(  23)			this->_hx___skipStack++;
             		}
-HXDLIN(  24)		super::__construct(_hx_tmp,previous,native);
-HXLINE(  25)		this->value = value;
             	}
 
 Dynamic ValueException_obj::__CreateEmpty() { return new ValueException_obj; }
diff --git a/Sources/c_snikket/src/haxe/_CallStack/CallStack_Impl_.cpp b/Sources/c_snikket/src/haxe/_CallStack/CallStack_Impl_.cpp
new file mode 100644
index 0000000..e6b4f93
--- /dev/null
+++ b/Sources/c_snikket/src/haxe/_CallStack/CallStack_Impl_.cpp
@@ -0,0 +1,371 @@
+// Generated by Haxe 4.3.3
+#include <hxcpp.h>
+
+#ifndef INCLUDED_Std
+#include <Std.h>
+#endif
+#ifndef INCLUDED_StringBuf
+#include <StringBuf.h>
+#endif
+#ifndef INCLUDED_haxe_StackItem
+#include <haxe/StackItem.h>
+#endif
+#ifndef INCLUDED_haxe__CallStack_CallStack_Impl_
+#include <haxe/_CallStack/CallStack_Impl_.h>
+#endif
+
+HX_LOCAL_STACK_FRAME(_hx_pos_422e130a97e2d2f5_71_toString,"haxe._CallStack.CallStack_Impl_","toString",0xaff80ceb,"haxe._CallStack.CallStack_Impl_.toString","/usr/local/lib/haxe/std/haxe/CallStack.hx",71,0x6022c9c0)
+static const ::String _hx_array_data_baffa80f_2[] = {
+	HX_("\nCalled from ",bd,26,6b,81),
+};
+HX_LOCAL_STACK_FRAME(_hx_pos_422e130a97e2d2f5_156_itemToString,"haxe._CallStack.CallStack_Impl_","itemToString",0xddade49e,"haxe._CallStack.CallStack_Impl_.itemToString","/usr/local/lib/haxe/std/haxe/CallStack.hx",156,0x6022c9c0)
+static const ::String _hx_array_data_baffa80f_4[] = {
+	HX_("a C function",f4,1b,53,cb),
+};
+static const ::String _hx_array_data_baffa80f_5[] = {
+	HX_("module ",f4,e1,fa,f7),
+};
+static const ::String _hx_array_data_baffa80f_6[] = {
+	HX_(" (",08,1c,00,00),
+};
+static const ::String _hx_array_data_baffa80f_7[] = {
+	HX_(" line ",8c,69,6d,40),
+};
+static const ::String _hx_array_data_baffa80f_8[] = {
+	HX_(" column ",6a,f0,a7,19),
+};
+static const ::String _hx_array_data_baffa80f_9[] = {
+	HX_(")",29,00,00,00),
+};
+static const ::String _hx_array_data_baffa80f_10[] = {
+	HX_(".",2e,00,00,00),
+};
+static const ::String _hx_array_data_baffa80f_11[] = {
+	HX_("local function #",b0,cd,97,ff),
+};
+namespace haxe{
+namespace _CallStack{
+
+void CallStack_Impl__obj::__construct() { }
+
+Dynamic CallStack_Impl__obj::__CreateEmpty() { return new CallStack_Impl__obj; }
+
+void *CallStack_Impl__obj::_hx_vtable = 0;
+
+Dynamic CallStack_Impl__obj::__Create(::hx::DynamicArray inArgs)
+{
+	::hx::ObjectPtr< CallStack_Impl__obj > _hx_result = new CallStack_Impl__obj();
+	_hx_result->__construct();
+	return _hx_result;
+}
+
+bool CallStack_Impl__obj::_hx_isInstanceOf(int inClassId) {
+	return inClassId==(int)0x00000001 || inClassId==(int)0x29a173d9;
+}
+
+::String CallStack_Impl__obj::toString(::Array< ::Dynamic> stack){
+            	HX_GC_STACKFRAME(&_hx_pos_422e130a97e2d2f5_71_toString)
+HXLINE(  72)		 ::StringBuf b =  ::StringBuf_obj::__alloc( HX_CTX );
+HXLINE(  73)		{
+HXLINE(  73)			int _g = 0;
+HXDLIN(  73)			::Array< ::Dynamic> _g1 = stack;
+HXDLIN(  73)			while((_g < _g1->length)){
+HXLINE(  73)				 ::haxe::StackItem s = _g1->__get(_g).StaticCast<  ::haxe::StackItem >();
+HXDLIN(  73)				_g = (_g + 1);
+HXLINE(  74)				{
+HXLINE(  74)					if (::hx::IsNotNull( b->charBuf )) {
+HXLINE(  74)						b->flush();
+            					}
+HXDLIN(  74)					if (::hx::IsNull( b->b )) {
+HXLINE(  74)						b->b = ::Array_obj< ::String >::fromData( _hx_array_data_baffa80f_2,1);
+            					}
+            					else {
+HXLINE(  74)						b->b->push(HX_("\nCalled from ",bd,26,6b,81));
+            					}
+            				}
+HXLINE(  75)				::haxe::_CallStack::CallStack_Impl__obj::itemToString(b,s);
+            			}
+            		}
+HXLINE(  77)		return b->toString();
+            	}
+
+
+STATIC_HX_DEFINE_DYNAMIC_FUNC1(CallStack_Impl__obj,toString,return )
+
+void CallStack_Impl__obj::itemToString( ::StringBuf b, ::haxe::StackItem s){
+            	HX_STACKFRAME(&_hx_pos_422e130a97e2d2f5_156_itemToString)
+HXDLIN( 156)		switch((int)(s->_hx_getIndex())){
+            			case (int)0: {
+HXLINE( 158)				if (::hx::IsNotNull( b->charBuf )) {
+HXLINE( 158)					b->flush();
+            				}
+HXDLIN( 158)				if (::hx::IsNull( b->b )) {
+HXLINE( 158)					b->b = ::Array_obj< ::String >::fromData( _hx_array_data_baffa80f_4,1);
+            				}
+            				else {
+HXLINE( 158)					b->b->push(HX_("a C function",f4,1b,53,cb));
+            				}
+            			}
+            			break;
+            			case (int)1: {
+HXLINE( 159)				::String m = s->_hx_getString(0);
+HXDLIN( 159)				{
+HXLINE( 160)					{
+HXLINE( 160)						if (::hx::IsNotNull( b->charBuf )) {
+HXLINE( 160)							b->flush();
+            						}
+HXDLIN( 160)						if (::hx::IsNull( b->b )) {
+HXLINE( 160)							b->b = ::Array_obj< ::String >::fromData( _hx_array_data_baffa80f_5,1);
+            						}
+            						else {
+HXLINE( 160)							b->b->push(HX_("module ",f4,e1,fa,f7));
+            						}
+            					}
+HXLINE( 161)					{
+HXLINE( 161)						if (::hx::IsNotNull( b->charBuf )) {
+HXLINE( 161)							b->flush();
+            						}
+HXDLIN( 161)						if (::hx::IsNull( b->b )) {
+HXLINE( 161)							b->b = ::Array_obj< ::String >::__new(1)->init(0,::Std_obj::string(m));
+            						}
+            						else {
+HXLINE( 161)							::Array< ::String > b1 = b->b;
+HXDLIN( 161)							b1->push(::Std_obj::string(m));
+            						}
+            					}
+            				}
+            			}
+            			break;
+            			case (int)2: {
+HXLINE( 162)				 ::haxe::StackItem s1 = s->_hx_getObject(0).StaticCast<  ::haxe::StackItem >();
+HXDLIN( 162)				::String file = s->_hx_getString(1);
+HXDLIN( 162)				int line = s->_hx_getInt(2);
+HXDLIN( 162)				 ::Dynamic col = s->_hx_getObject(3);
+HXDLIN( 162)				{
+HXLINE( 163)					if (::hx::IsNotNull( s1 )) {
+HXLINE( 164)						::haxe::_CallStack::CallStack_Impl__obj::itemToString(b,s1);
+HXLINE( 165)						{
+HXLINE( 165)							if (::hx::IsNotNull( b->charBuf )) {
+HXLINE( 165)								b->flush();
+            							}
+HXDLIN( 165)							if (::hx::IsNull( b->b )) {
+HXLINE( 165)								b->b = ::Array_obj< ::String >::fromData( _hx_array_data_baffa80f_6,1);
+            							}
+            							else {
+HXLINE( 165)								b->b->push(HX_(" (",08,1c,00,00));
+            							}
+            						}
+            					}
+HXLINE( 167)					{
+HXLINE( 167)						if (::hx::IsNotNull( b->charBuf )) {
+HXLINE( 167)							b->flush();
+            						}
+HXDLIN( 167)						if (::hx::IsNull( b->b )) {
+HXLINE( 167)							b->b = ::Array_obj< ::String >::__new(1)->init(0,::Std_obj::string(file));
+            						}
+            						else {
+HXLINE( 167)							::Array< ::String > b2 = b->b;
+HXDLIN( 167)							b2->push(::Std_obj::string(file));
+            						}
+            					}
+HXLINE( 168)					{
+HXLINE( 168)						if (::hx::IsNotNull( b->charBuf )) {
+HXLINE( 168)							b->flush();
+            						}
+HXDLIN( 168)						if (::hx::IsNull( b->b )) {
+HXLINE( 168)							b->b = ::Array_obj< ::String >::fromData( _hx_array_data_baffa80f_7,1);
+            						}
+            						else {
+HXLINE( 168)							b->b->push(HX_(" line ",8c,69,6d,40));
+            						}
+            					}
+HXLINE( 169)					{
+HXLINE( 169)						if (::hx::IsNotNull( b->charBuf )) {
+HXLINE( 169)							b->flush();
+            						}
+HXDLIN( 169)						if (::hx::IsNull( b->b )) {
+HXLINE( 169)							b->b = ::Array_obj< ::String >::__new(1)->init(0,::Std_obj::string(line));
+            						}
+            						else {
+HXLINE( 169)							::Array< ::String > b3 = b->b;
+HXDLIN( 169)							b3->push(::Std_obj::string(line));
+            						}
+            					}
+HXLINE( 170)					if (::hx::IsNotNull( col )) {
+HXLINE( 171)						{
+HXLINE( 171)							if (::hx::IsNotNull( b->charBuf )) {
+HXLINE( 171)								b->flush();
+            							}
+HXDLIN( 171)							if (::hx::IsNull( b->b )) {
+HXLINE( 171)								b->b = ::Array_obj< ::String >::fromData( _hx_array_data_baffa80f_8,1);
+            							}
+            							else {
+HXLINE( 171)								b->b->push(HX_(" column ",6a,f0,a7,19));
+            							}
+            						}
+HXLINE( 172)						{
+HXLINE( 172)							if (::hx::IsNotNull( b->charBuf )) {
+HXLINE( 172)								b->flush();
+            							}
+HXDLIN( 172)							if (::hx::IsNull( b->b )) {
+HXLINE( 172)								b->b = ::Array_obj< ::String >::__new(1)->init(0,::Std_obj::string(col));
+            							}
+            							else {
+HXLINE( 172)								::Array< ::String > b4 = b->b;
+HXDLIN( 172)								b4->push(::Std_obj::string(col));
+            							}
+            						}
+            					}
+HXLINE( 174)					if (::hx::IsNotNull( s1 )) {
+HXLINE( 175)						if (::hx::IsNotNull( b->charBuf )) {
+HXLINE( 175)							b->flush();
+            						}
+HXDLIN( 175)						if (::hx::IsNull( b->b )) {
+HXLINE( 175)							b->b = ::Array_obj< ::String >::fromData( _hx_array_data_baffa80f_9,1);
+            						}
+            						else {
+HXLINE( 175)							b->b->push(HX_(")",29,00,00,00));
+            						}
+            					}
+            				}
+            			}
+            			break;
+            			case (int)3: {
+HXLINE( 176)				::String cname = s->_hx_getString(0);
+HXDLIN( 176)				::String meth = s->_hx_getString(1);
+HXDLIN( 176)				{
+HXLINE( 177)					{
+HXLINE( 177)						::String x;
+HXDLIN( 177)						if (::hx::IsNull( cname )) {
+HXLINE( 177)							x = HX_("<unknown>",b0,91,d8,da);
+            						}
+            						else {
+HXLINE( 177)							x = cname;
+            						}
+HXDLIN( 177)						if (::hx::IsNotNull( b->charBuf )) {
+HXLINE( 177)							b->flush();
+            						}
+HXDLIN( 177)						if (::hx::IsNull( b->b )) {
+HXLINE( 177)							b->b = ::Array_obj< ::String >::__new(1)->init(0,::Std_obj::string(x));
+            						}
+            						else {
+HXLINE( 177)							::Array< ::String > b5 = b->b;
+HXDLIN( 177)							b5->push(::Std_obj::string(x));
+            						}
+            					}
+HXLINE( 178)					{
+HXLINE( 178)						if (::hx::IsNotNull( b->charBuf )) {
+HXLINE( 178)							b->flush();
+            						}
+HXDLIN( 178)						if (::hx::IsNull( b->b )) {
+HXLINE( 178)							b->b = ::Array_obj< ::String >::fromData( _hx_array_data_baffa80f_10,1);
+            						}
+            						else {
+HXLINE( 178)							b->b->push(HX_(".",2e,00,00,00));
+            						}
+            					}
+HXLINE( 179)					{
+HXLINE( 179)						if (::hx::IsNotNull( b->charBuf )) {
+HXLINE( 179)							b->flush();
+            						}
+HXDLIN( 179)						if (::hx::IsNull( b->b )) {
+HXLINE( 179)							b->b = ::Array_obj< ::String >::__new(1)->init(0,::Std_obj::string(meth));
+            						}
+            						else {
+HXLINE( 179)							::Array< ::String > b6 = b->b;
+HXDLIN( 179)							b6->push(::Std_obj::string(meth));
+            						}
+            					}
+            				}
+            			}
+            			break;
+            			case (int)4: {
+HXLINE( 180)				 ::Dynamic n = s->_hx_getObject(0);
+HXDLIN( 180)				{
+HXLINE( 181)					{
+HXLINE( 181)						if (::hx::IsNotNull( b->charBuf )) {
+HXLINE( 181)							b->flush();
+            						}
+HXDLIN( 181)						if (::hx::IsNull( b->b )) {
+HXLINE( 181)							b->b = ::Array_obj< ::String >::fromData( _hx_array_data_baffa80f_11,1);
+            						}
+            						else {
+HXLINE( 181)							b->b->push(HX_("local function #",b0,cd,97,ff));
+            						}
+            					}
+HXLINE( 182)					{
+HXLINE( 182)						if (::hx::IsNotNull( b->charBuf )) {
+HXLINE( 182)							b->flush();
+            						}
+HXDLIN( 182)						if (::hx::IsNull( b->b )) {
+HXLINE( 182)							b->b = ::Array_obj< ::String >::__new(1)->init(0,::Std_obj::string(n));
+            						}
+            						else {
+HXLINE( 182)							::Array< ::String > b7 = b->b;
+HXDLIN( 182)							b7->push(::Std_obj::string(n));
+            						}
+            					}
+            				}
+            			}
+            			break;
+            		}
+            	}
+
+
+STATIC_HX_DEFINE_DYNAMIC_FUNC2(CallStack_Impl__obj,itemToString,(void))
+
+
+CallStack_Impl__obj::CallStack_Impl__obj()
+{
+}
+
+bool CallStack_Impl__obj::__GetStatic(const ::String &inName, Dynamic &outValue, ::hx::PropertyAccess inCallProp)
+{
+	switch(inName.length) {
+	case 8:
+		if (HX_FIELD_EQ(inName,"toString") ) { outValue = toString_dyn(); return true; }
+		break;
+	case 12:
+		if (HX_FIELD_EQ(inName,"itemToString") ) { outValue = itemToString_dyn(); return true; }
+	}
+	return false;
+}
+
+#ifdef HXCPP_SCRIPTABLE
+static ::hx::StorageInfo *CallStack_Impl__obj_sMemberStorageInfo = 0;
+static ::hx::StaticInfo *CallStack_Impl__obj_sStaticStorageInfo = 0;
+#endif
+
+::hx::Class CallStack_Impl__obj::__mClass;
+
+static ::String CallStack_Impl__obj_sStaticFields[] = {
+	HX_("toString",ac,d0,6e,38),
+	HX_("itemToString",df,1c,98,1c),
+	::String(null())
+};
+
+void CallStack_Impl__obj::__register()
+{
+	CallStack_Impl__obj _hx_dummy;
+	CallStack_Impl__obj::_hx_vtable = *(void **)&_hx_dummy;
+	::hx::Static(__mClass) = new ::hx::Class_obj();
+	__mClass->mName = HX_("haxe._CallStack.CallStack_Impl_",0f,a8,ff,ba);
+	__mClass->mSuper = &super::__SGetClass();
+	__mClass->mConstructEmpty = &__CreateEmpty;
+	__mClass->mConstructArgs = &__Create;
+	__mClass->mGetStaticField = &CallStack_Impl__obj::__GetStatic;
+	__mClass->mSetStaticField = &::hx::Class_obj::SetNoStaticField;
+	__mClass->mStatics = ::hx::Class_obj::dupFunctions(CallStack_Impl__obj_sStaticFields);
+	__mClass->mMembers = ::hx::Class_obj::dupFunctions(0 /* sMemberFields */);
+	__mClass->mCanCast = ::hx::TCanCast< CallStack_Impl__obj >;
+#ifdef HXCPP_SCRIPTABLE
+	__mClass->mMemberStorageInfo = CallStack_Impl__obj_sMemberStorageInfo;
+#endif
+#ifdef HXCPP_SCRIPTABLE
+	__mClass->mStaticStorageInfo = CallStack_Impl__obj_sStaticStorageInfo;
+#endif
+	::hx::_hx_RegisterClass(__mClass->mName, __mClass);
+}
+
+} // end namespace haxe
+} // end namespace _CallStack
diff --git a/Sources/c_snikket/src/haxe/exceptions/NotImplementedException.cpp b/Sources/c_snikket/src/haxe/exceptions/NotImplementedException.cpp
index f11b7b2..4c2aa07 100644
--- a/Sources/c_snikket/src/haxe/exceptions/NotImplementedException.cpp
+++ b/Sources/c_snikket/src/haxe/exceptions/NotImplementedException.cpp
@@ -19,7 +19,12 @@ void NotImplementedException_obj::__construct(::String __o_message, ::haxe::Exce
             		::String message = __o_message;
             		if (::hx::IsNull(__o_message)) message = HX_("Not implemented",15,1e,32,34);
             	HX_STACKFRAME(&_hx_pos_6becf3ac06fb2a12_8_new)
-HXDLIN(   8)		super::__construct(message,previous,pos);
+HXDLIN(   8)		{
+HXDLIN(   8)			super::__construct(message,previous,pos);
+            		}
+HXDLIN(   8)		{
+HXDLIN(   8)			this->_hx___skipStack++;
+            		}
             	}
 
 Dynamic NotImplementedException_obj::__CreateEmpty() { return new NotImplementedException_obj; }
@@ -46,6 +51,19 @@ bool NotImplementedException_obj::_hx_isInstanceOf(int inClassId) {
 }
 
 
+::hx::ObjectPtr< NotImplementedException_obj > NotImplementedException_obj::__new(::String __o_message, ::haxe::Exception previous, ::Dynamic pos) {
+	::hx::ObjectPtr< NotImplementedException_obj > __this = new NotImplementedException_obj();
+	__this->__construct(__o_message,previous,pos);
+	return __this;
+}
+
+::hx::ObjectPtr< NotImplementedException_obj > NotImplementedException_obj::__alloc(::hx::Ctx *_hx_ctx,::String __o_message, ::haxe::Exception previous, ::Dynamic pos) {
+	NotImplementedException_obj *__this = (NotImplementedException_obj*)(::hx::Ctx::alloc(_hx_ctx, sizeof(NotImplementedException_obj), true, "haxe.exceptions.NotImplementedException"));
+	*(void **)__this = NotImplementedException_obj::_hx_vtable;
+	__this->__construct(__o_message,previous,pos);
+	return __this;
+}
+
 NotImplementedException_obj::NotImplementedException_obj()
 {
 }
diff --git a/Sources/c_snikket/src/haxe/exceptions/PosException.cpp b/Sources/c_snikket/src/haxe/exceptions/PosException.cpp
index b71d149..c9da072 100644
--- a/Sources/c_snikket/src/haxe/exceptions/PosException.cpp
+++ b/Sources/c_snikket/src/haxe/exceptions/PosException.cpp
@@ -15,12 +15,17 @@ namespace exceptions{
 
 void PosException_obj::__construct(::String message, ::haxe::Exception previous, ::Dynamic pos){
             	HX_STACKFRAME(&_hx_pos_9487fa79a58895e3_12_new)
-HXLINE(  13)		super::__construct(message,previous,null());
-HXLINE(  14)		if (::hx::IsNull( pos )) {
-HXLINE(  15)			this->posInfos = ::hx::SourceInfo(HX_("(unknown)",87,5d,fc,5f),0,HX_("(unknown)",87,5d,fc,5f),HX_("(unknown)",87,5d,fc,5f));
+HXDLIN(  12)		{
+HXLINE(  13)			super::__construct(message,previous,null());
+HXLINE(  14)			if (::hx::IsNull( pos )) {
+HXLINE(  15)				this->posInfos = ::hx::SourceInfo(HX_("(unknown)",87,5d,fc,5f),0,HX_("(unknown)",87,5d,fc,5f),HX_("(unknown)",87,5d,fc,5f));
+            			}
+            			else {
+HXLINE(  17)				this->posInfos = pos;
+            			}
             		}
-            		else {
-HXLINE(  17)			this->posInfos = pos;
+HXLINE(  12)		{
+HXDLIN(  12)			this->_hx___skipStack++;
             		}
             	}
 
@@ -51,6 +56,19 @@ HXDLIN(  25)		return ( (::String)((((((((_hx_tmp + this->posInfos->__Field(HX_("
 
 
 
+::hx::ObjectPtr< PosException_obj > PosException_obj::__new(::String message, ::haxe::Exception previous, ::Dynamic pos) {
+	::hx::ObjectPtr< PosException_obj > __this = new PosException_obj();
+	__this->__construct(message,previous,pos);
+	return __this;
+}
+
+::hx::ObjectPtr< PosException_obj > PosException_obj::__alloc(::hx::Ctx *_hx_ctx,::String message, ::haxe::Exception previous, ::Dynamic pos) {
+	PosException_obj *__this = (PosException_obj*)(::hx::Ctx::alloc(_hx_ctx, sizeof(PosException_obj), true, "haxe.exceptions.PosException"));
+	*(void **)__this = PosException_obj::_hx_vtable;
+	__this->__construct(message,previous,pos);
+	return __this;
+}
+
 PosException_obj::PosException_obj()
 {
 }
diff --git a/Sources/c_snikket/src/snikket/AvailableChat.cpp b/Sources/c_snikket/src/snikket/AvailableChat.cpp
index 516eae9..cf4fdb4 100644
--- a/Sources/c_snikket/src/snikket/AvailableChat.cpp
+++ b/Sources/c_snikket/src/snikket/AvailableChat.cpp
@@ -8,20 +8,20 @@
 #include <snikket/Caps.h>
 #endif
 
-HX_DEFINE_STACK_FRAME(_hx_pos_eb4b7fa35bcf9ef4_1553_new,"snikket.AvailableChat","new",0xe206b262,"snikket.AvailableChat.new","snikket/Chat.hx",1553,0x18616bf4)
+HX_DEFINE_STACK_FRAME(_hx_pos_eb4b7fa35bcf9ef4_1563_new,"snikket.AvailableChat","new",0xe206b262,"snikket.AvailableChat.new","snikket/Chat.hx",1563,0x18616bf4)
 HX_LOCAL_STACK_FRAME(_hx_pos_84f492ff0c9cb600_355_chatId__fromC,"snikket.AvailableChat","chatId__fromC",0xa5503488,"snikket.AvailableChat.chatId__fromC","HaxeCBridge.hx",355,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_84f492ff0c9cb600_355_displayName__fromC,"snikket.AvailableChat","displayName__fromC",0x0c214eaa,"snikket.AvailableChat.displayName__fromC","HaxeCBridge.hx",355,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_84f492ff0c9cb600_355_note__fromC,"snikket.AvailableChat","note__fromC",0xff5acec9,"snikket.AvailableChat.note__fromC","HaxeCBridge.hx",355,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_eb4b7fa35bcf9ef4_1549_isChannel,"snikket.AvailableChat","isChannel",0x4a03cd7b,"snikket.AvailableChat.isChannel","snikket/Chat.hx",1549,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_eb4b7fa35bcf9ef4_1529_boot,"snikket.AvailableChat","boot",0xdbee63f0,"snikket.AvailableChat.boot","snikket/Chat.hx",1529,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_eb4b7fa35bcf9ef4_1559_isChannel,"snikket.AvailableChat","isChannel",0x4a03cd7b,"snikket.AvailableChat.isChannel","snikket/Chat.hx",1559,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_eb4b7fa35bcf9ef4_1539_boot,"snikket.AvailableChat","boot",0xdbee63f0,"snikket.AvailableChat.boot","snikket/Chat.hx",1539,0x18616bf4)
 namespace snikket{
 
 void AvailableChat_obj::__construct(::String chatId,::String displayName,::String note, ::snikket::Caps caps){
-            	HX_STACKFRAME(&_hx_pos_eb4b7fa35bcf9ef4_1553_new)
-HXLINE(1554)		this->chatId = chatId;
-HXLINE(1555)		this->displayName = displayName;
-HXLINE(1556)		this->note = note;
-HXLINE(1557)		this->caps = caps;
+            	HX_STACKFRAME(&_hx_pos_eb4b7fa35bcf9ef4_1563_new)
+HXLINE(1564)		this->chatId = chatId;
+HXLINE(1565)		this->displayName = displayName;
+HXLINE(1566)		this->note = note;
+HXLINE(1567)		this->caps = caps;
             	}
 
 Dynamic AvailableChat_obj::__CreateEmpty() { return new AvailableChat_obj; }
@@ -64,8 +64,8 @@ HXDLIN( 355)		return this->note;
 HX_DEFINE_DYNAMIC_FUNC0(AvailableChat_obj,note__fromC,return )
 
 bool AvailableChat_obj::isChannel(){
-            	HX_STACKFRAME(&_hx_pos_eb4b7fa35bcf9ef4_1549_isChannel)
-HXDLIN(1549)		return this->caps->isChannel(this->chatId);
+            	HX_STACKFRAME(&_hx_pos_eb4b7fa35bcf9ef4_1559_isChannel)
+HXDLIN(1559)		return this->caps->isChannel(this->chatId);
             	}
 
 
@@ -208,8 +208,8 @@ void AvailableChat_obj::__register()
 void AvailableChat_obj::__boot()
 {
 {
-            	HX_STACKFRAME(&_hx_pos_eb4b7fa35bcf9ef4_1529_boot)
-HXDLIN(1529)		__mClass->__meta__ =  ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_STACKFRAME(&_hx_pos_eb4b7fa35bcf9ef4_1539_boot)
+HXDLIN(1539)		__mClass->__meta__ =  ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("fields",79,8e,8e,80), ::Dynamic(::hx::Anon_obj::Create(3)
             				->setFixed(0,HX_("chatId__fromC",06,fc,b1,94), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
diff --git a/Sources/c_snikket/src/snikket/Channel.cpp b/Sources/c_snikket/src/snikket/Channel.cpp
index d45e7d2..c1311c1 100644
--- a/Sources/c_snikket/src/snikket/Channel.cpp
+++ b/Sources/c_snikket/src/snikket/Channel.cpp
@@ -136,59 +136,62 @@ HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1007_selfPing,"snikket.Channel","s
 HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1049_join,"snikket.Channel","join",0x35ad7e26,"snikket.Channel.join","snikket/Chat.hx",1049,0x18616bf4)
 HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1041_join,"snikket.Channel","join",0x35ad7e26,"snikket.Channel.join","snikket/Chat.hx",1041,0x18616bf4)
 HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1060_selfPingSuccess,"snikket.Channel","selfPingSuccess",0xafddf489,"snikket.Channel.selfPingSuccess","snikket/Chat.hx",1060,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1071_setPresence,"snikket.Channel","setPresence",0x9dbfd141,"snikket.Channel.setPresence","snikket/Chat.hx",1071,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1072_setPresence,"snikket.Channel","setPresence",0x9dbfd141,"snikket.Channel.setPresence","snikket/Chat.hx",1072,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1080_setPresence,"snikket.Channel","setPresence",0x9dbfd141,"snikket.Channel.setPresence","snikket/Chat.hx",1080,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1087_setPresence,"snikket.Channel","setPresence",0x9dbfd141,"snikket.Channel.setPresence","snikket/Chat.hx",1087,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1110_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1110,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1139_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1139,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1141_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1141,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1170_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1170,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1116_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1116,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1132_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1132,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1128_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1128,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1074_getCaps,"snikket.Channel","getCaps",0xf3678f1b,"snikket.Channel.getCaps","snikket/Chat.hx",1074,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1076_getCaps,"snikket.Channel","getCaps",0xf3678f1b,"snikket.Channel.getCaps","snikket/Chat.hx",1076,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1073_getCaps,"snikket.Channel","getCaps",0xf3678f1b,"snikket.Channel.getCaps","snikket/Chat.hx",1073,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1081_setPresence,"snikket.Channel","setPresence",0x9dbfd141,"snikket.Channel.setPresence","snikket/Chat.hx",1081,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1082_setPresence,"snikket.Channel","setPresence",0x9dbfd141,"snikket.Channel.setPresence","snikket/Chat.hx",1082,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1090_setPresence,"snikket.Channel","setPresence",0x9dbfd141,"snikket.Channel.setPresence","snikket/Chat.hx",1090,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1097_setPresence,"snikket.Channel","setPresence",0x9dbfd141,"snikket.Channel.setPresence","snikket/Chat.hx",1097,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1120_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1120,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1149_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1149,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1151_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1151,0x18616bf4)
 HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1180_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1180,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1093_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1093,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1193_isTrusted,"snikket.Channel","isTrusted",0x2c7a5171,"snikket.Channel.isTrusted","snikket/Chat.hx",1193,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1197_isPrivate,"snikket.Channel","isPrivate",0x9f42c67d,"snikket.Channel.isPrivate","snikket/Chat.hx",1197,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1203_refreshDisco,"snikket.Channel","refreshDisco",0x9d89e5db,"snikket.Channel.refreshDisco","snikket/Chat.hx",1203,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1201_refreshDisco,"snikket.Channel","refreshDisco",0x9d89e5db,"snikket.Channel.refreshDisco","snikket/Chat.hx",1201,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1216_preview,"snikket.Channel","preview",0x1b05a34c,"snikket.Channel.preview","snikket/Chat.hx",1216,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1223_livePresence,"snikket.Channel","livePresence",0x644ddf83,"snikket.Channel.livePresence","snikket/Chat.hx",1223,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1230_syncing,"snikket.Channel","syncing",0x8651c0ab,"snikket.Channel.syncing","snikket/Chat.hx",1230,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1234_canAudioCall,"snikket.Channel","canAudioCall",0x94c730a0,"snikket.Channel.canAudioCall","snikket/Chat.hx",1234,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1238_canVideoCall,"snikket.Channel","canVideoCall",0x9aca02c5,"snikket.Channel.canVideoCall","snikket/Chat.hx",1238,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1242_nickInUse,"snikket.Channel","nickInUse",0x59744703,"snikket.Channel.nickInUse","snikket/Chat.hx",1242,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1246_getFullJid,"snikket.Channel","getFullJid",0xa835e1bc,"snikket.Channel.getFullJid","snikket/Chat.hx",1246,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1252_getParticipants,"snikket.Channel","getParticipants",0x390cb25a,"snikket.Channel.getParticipants","snikket/Chat.hx",1252,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1250_getParticipants,"snikket.Channel","getParticipants",0x390cb25a,"snikket.Channel.getParticipants","snikket/Chat.hx",1250,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1257_getParticipantDetails,"snikket.Channel","getParticipantDetails",0xdfad9dc9,"snikket.Channel.getParticipantDetails","snikket/Chat.hx",1257,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1270_getMessagesBefore,"snikket.Channel","getMessagesBefore",0xefb5f1e5,"snikket.Channel.getMessagesBefore","snikket/Chat.hx",1270,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1276_getMessagesBefore,"snikket.Channel","getMessagesBefore",0xefb5f1e5,"snikket.Channel.getMessagesBefore","snikket/Chat.hx",1276,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1268_getMessagesBefore,"snikket.Channel","getMessagesBefore",0xefb5f1e5,"snikket.Channel.getMessagesBefore","snikket/Chat.hx",1268,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1293_getMessagesAfter,"snikket.Channel","getMessagesAfter",0x103df776,"snikket.Channel.getMessagesAfter","snikket/Chat.hx",1293,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1299_getMessagesAfter,"snikket.Channel","getMessagesAfter",0x103df776,"snikket.Channel.getMessagesAfter","snikket/Chat.hx",1299,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1287_getMessagesAfter,"snikket.Channel","getMessagesAfter",0x103df776,"snikket.Channel.getMessagesAfter","snikket/Chat.hx",1287,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1312_getMessagesAround,"snikket.Channel","getMessagesAround",0x0b8795b3,"snikket.Channel.getMessagesAround","snikket/Chat.hx",1312,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1311_getMessagesAround,"snikket.Channel","getMessagesAround",0x0b8795b3,"snikket.Channel.getMessagesAround","snikket/Chat.hx",1311,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1322_prepareIncomingMessage,"snikket.Channel","prepareIncomingMessage",0x3bfa74f6,"snikket.Channel.prepareIncomingMessage","snikket/Chat.hx",1322,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1333_prepareOutgoingMessage,"snikket.Channel","prepareOutgoingMessage",0xa2273a30,"snikket.Channel.prepareOutgoingMessage","snikket/Chat.hx",1333,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1351_correctMessage,"snikket.Channel","correctMessage",0x4d2d23b9,"snikket.Channel.correctMessage","snikket/Chat.hx",1351,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1346_correctMessage,"snikket.Channel","correctMessage",0x4d2d23b9,"snikket.Channel.correctMessage","snikket/Chat.hx",1346,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1364_sendMessage,"snikket.Channel","sendMessage",0x2aa53ea3,"snikket.Channel.sendMessage","snikket/Chat.hx",1364,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1380_sendMessage,"snikket.Channel","sendMessage",0x2aa53ea3,"snikket.Channel.sendMessage","snikket/Chat.hx",1380,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1387_sendMessage,"snikket.Channel","sendMessage",0x2aa53ea3,"snikket.Channel.sendMessage","snikket/Chat.hx",1387,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1418_removeReaction,"snikket.Channel","removeReaction",0x19751149,"snikket.Channel.removeReaction","snikket/Chat.hx",1418,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1398_removeReaction,"snikket.Channel","removeReaction",0x19751149,"snikket.Channel.removeReaction","snikket/Chat.hx",1398,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1413_removeReaction,"snikket.Channel","removeReaction",0x19751149,"snikket.Channel.removeReaction","snikket/Chat.hx",1413,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1428_lastMessageId,"snikket.Channel","lastMessageId",0xa72b1e90,"snikket.Channel.lastMessageId","snikket/Chat.hx",1428,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1433_markReadUpTo,"snikket.Channel","markReadUpTo",0x9e644e95,"snikket.Channel.markReadUpTo","snikket/Chat.hx",1433,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1432_markReadUpTo,"snikket.Channel","markReadUpTo",0x9e644e95,"snikket.Channel.markReadUpTo","snikket/Chat.hx",1432,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1468_bookmark,"snikket.Channel","bookmark",0x9931a4f2,"snikket.Channel.bookmark","snikket/Chat.hx",1468,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1486_bookmark,"snikket.Channel","bookmark",0x9931a4f2,"snikket.Channel.bookmark","snikket/Chat.hx",1486,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1447_bookmark,"snikket.Channel","bookmark",0x9931a4f2,"snikket.Channel.bookmark","snikket/Chat.hx",1447,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1497_sendChatState,"snikket.Channel","sendChatState",0xee67aff5,"snikket.Channel.sendChatState","snikket/Chat.hx",1497,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1513_close,"snikket.Channel","close",0xb85bc1fc,"snikket.Channel.close","snikket/Chat.hx",1513,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1126_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1126,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1142_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1142,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1138_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1138,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1190_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1190,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1103_doSync,"snikket.Channel","doSync",0xa5ffb0c2,"snikket.Channel.doSync","snikket/Chat.hx",1103,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1203_isTrusted,"snikket.Channel","isTrusted",0x2c7a5171,"snikket.Channel.isTrusted","snikket/Chat.hx",1203,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1207_isPrivate,"snikket.Channel","isPrivate",0x9f42c67d,"snikket.Channel.isPrivate","snikket/Chat.hx",1207,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1213_refreshDisco,"snikket.Channel","refreshDisco",0x9d89e5db,"snikket.Channel.refreshDisco","snikket/Chat.hx",1213,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1211_refreshDisco,"snikket.Channel","refreshDisco",0x9d89e5db,"snikket.Channel.refreshDisco","snikket/Chat.hx",1211,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1226_preview,"snikket.Channel","preview",0x1b05a34c,"snikket.Channel.preview","snikket/Chat.hx",1226,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1233_livePresence,"snikket.Channel","livePresence",0x644ddf83,"snikket.Channel.livePresence","snikket/Chat.hx",1233,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1240_syncing,"snikket.Channel","syncing",0x8651c0ab,"snikket.Channel.syncing","snikket/Chat.hx",1240,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1244_canAudioCall,"snikket.Channel","canAudioCall",0x94c730a0,"snikket.Channel.canAudioCall","snikket/Chat.hx",1244,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1248_canVideoCall,"snikket.Channel","canVideoCall",0x9aca02c5,"snikket.Channel.canVideoCall","snikket/Chat.hx",1248,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1252_nickInUse,"snikket.Channel","nickInUse",0x59744703,"snikket.Channel.nickInUse","snikket/Chat.hx",1252,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1256_getFullJid,"snikket.Channel","getFullJid",0xa835e1bc,"snikket.Channel.getFullJid","snikket/Chat.hx",1256,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1262_getParticipants,"snikket.Channel","getParticipants",0x390cb25a,"snikket.Channel.getParticipants","snikket/Chat.hx",1262,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1260_getParticipants,"snikket.Channel","getParticipants",0x390cb25a,"snikket.Channel.getParticipants","snikket/Chat.hx",1260,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1267_getParticipantDetails,"snikket.Channel","getParticipantDetails",0xdfad9dc9,"snikket.Channel.getParticipantDetails","snikket/Chat.hx",1267,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1280_getMessagesBefore,"snikket.Channel","getMessagesBefore",0xefb5f1e5,"snikket.Channel.getMessagesBefore","snikket/Chat.hx",1280,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1286_getMessagesBefore,"snikket.Channel","getMessagesBefore",0xefb5f1e5,"snikket.Channel.getMessagesBefore","snikket/Chat.hx",1286,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1278_getMessagesBefore,"snikket.Channel","getMessagesBefore",0xefb5f1e5,"snikket.Channel.getMessagesBefore","snikket/Chat.hx",1278,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1303_getMessagesAfter,"snikket.Channel","getMessagesAfter",0x103df776,"snikket.Channel.getMessagesAfter","snikket/Chat.hx",1303,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1309_getMessagesAfter,"snikket.Channel","getMessagesAfter",0x103df776,"snikket.Channel.getMessagesAfter","snikket/Chat.hx",1309,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1297_getMessagesAfter,"snikket.Channel","getMessagesAfter",0x103df776,"snikket.Channel.getMessagesAfter","snikket/Chat.hx",1297,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1322_getMessagesAround,"snikket.Channel","getMessagesAround",0x0b8795b3,"snikket.Channel.getMessagesAround","snikket/Chat.hx",1322,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1321_getMessagesAround,"snikket.Channel","getMessagesAround",0x0b8795b3,"snikket.Channel.getMessagesAround","snikket/Chat.hx",1321,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1332_prepareIncomingMessage,"snikket.Channel","prepareIncomingMessage",0x3bfa74f6,"snikket.Channel.prepareIncomingMessage","snikket/Chat.hx",1332,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1343_prepareOutgoingMessage,"snikket.Channel","prepareOutgoingMessage",0xa2273a30,"snikket.Channel.prepareOutgoingMessage","snikket/Chat.hx",1343,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1361_correctMessage,"snikket.Channel","correctMessage",0x4d2d23b9,"snikket.Channel.correctMessage","snikket/Chat.hx",1361,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1356_correctMessage,"snikket.Channel","correctMessage",0x4d2d23b9,"snikket.Channel.correctMessage","snikket/Chat.hx",1356,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1374_sendMessage,"snikket.Channel","sendMessage",0x2aa53ea3,"snikket.Channel.sendMessage","snikket/Chat.hx",1374,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1390_sendMessage,"snikket.Channel","sendMessage",0x2aa53ea3,"snikket.Channel.sendMessage","snikket/Chat.hx",1390,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1397_sendMessage,"snikket.Channel","sendMessage",0x2aa53ea3,"snikket.Channel.sendMessage","snikket/Chat.hx",1397,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1428_removeReaction,"snikket.Channel","removeReaction",0x19751149,"snikket.Channel.removeReaction","snikket/Chat.hx",1428,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1408_removeReaction,"snikket.Channel","removeReaction",0x19751149,"snikket.Channel.removeReaction","snikket/Chat.hx",1408,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1423_removeReaction,"snikket.Channel","removeReaction",0x19751149,"snikket.Channel.removeReaction","snikket/Chat.hx",1423,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1438_lastMessageId,"snikket.Channel","lastMessageId",0xa72b1e90,"snikket.Channel.lastMessageId","snikket/Chat.hx",1438,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1443_markReadUpTo,"snikket.Channel","markReadUpTo",0x9e644e95,"snikket.Channel.markReadUpTo","snikket/Chat.hx",1443,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1442_markReadUpTo,"snikket.Channel","markReadUpTo",0x9e644e95,"snikket.Channel.markReadUpTo","snikket/Chat.hx",1442,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1478_bookmark,"snikket.Channel","bookmark",0x9931a4f2,"snikket.Channel.bookmark","snikket/Chat.hx",1478,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1496_bookmark,"snikket.Channel","bookmark",0x9931a4f2,"snikket.Channel.bookmark","snikket/Chat.hx",1496,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1457_bookmark,"snikket.Channel","bookmark",0x9931a4f2,"snikket.Channel.bookmark","snikket/Chat.hx",1457,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1507_sendChatState,"snikket.Channel","sendChatState",0xee67aff5,"snikket.Channel.sendChatState","snikket/Chat.hx",1507,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_1523_close,"snikket.Channel","close",0xb85bc1fc,"snikket.Channel.close","snikket/Chat.hx",1523,0x18616bf4)
 HX_LOCAL_STACK_FRAME(_hx_pos_5e4df8d46126c981_982_boot,"snikket.Channel","boot",0x3063ce6e,"snikket.Channel.boot","snikket/Chat.hx",982,0x18616bf4)
 namespace snikket{
 
@@ -384,119 +387,143 @@ HXDLIN(1068)		::snikket::Persistence_obj::lastId(_hx_tmp2,_hx_tmp3,this->chatId,
 
 HX_DEFINE_DYNAMIC_FUNC0(Channel_obj,selfPingSuccess,(void))
 
+ ::Dynamic Channel_obj::getCaps(){
+            		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(0)
+            		bool _hx_run(){
+            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1074_getCaps)
+HXLINE(1074)			return false;
+            		}
+            		HX_END_LOCAL_FUNC0(return)
+
+            		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_1) HXARGC(0)
+            		 ::Dynamic _hx_run(){
+            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1076_getCaps)
+HXLINE(1076)			return  ::Dynamic(::hx::Anon_obj::Create(2)
+            				->setFixed(0,HX_("key",9f,89,51,00),HX_("",00,00,00,00))
+            				->setFixed(1,HX_("value",71,7f,b8,31),null()));
+            		}
+            		HX_END_LOCAL_FUNC0(return)
+
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1073_getCaps)
+HXDLIN(1073)		return  ::Dynamic(::hx::Anon_obj::Create(2)
+            			->setFixed(0,HX_("hasNext",6d,a5,46,18), ::Dynamic(new _hx_Closure_0()))
+            			->setFixed(1,HX_("next",f3,84,02,49), ::Dynamic(new _hx_Closure_1())));
+            	}
+
+
 void Channel_obj::setPresence(::String resource, ::snikket::Presence presence){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1071_setPresence)
-HXLINE(1072)		 ::snikket::Stanza tmp;
-HXDLIN(1072)		if (::hx::IsNotNull( presence )) {
-HXLINE(1072)			tmp = presence->mucUser;
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1081_setPresence)
+HXLINE(1082)		 ::snikket::Stanza tmp;
+HXDLIN(1082)		if (::hx::IsNotNull( presence )) {
+HXLINE(1082)			tmp = presence->mucUser;
             		}
             		else {
-HXLINE(1072)			tmp = null();
+HXLINE(1082)			tmp = null();
             		}
-HXDLIN(1072)		 ::snikket::Stanza oneTen;
-HXDLIN(1072)		if (::hx::IsNotNull( tmp )) {
+HXDLIN(1082)		 ::snikket::Stanza oneTen;
+HXDLIN(1082)		if (::hx::IsNotNull( tmp )) {
             			HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             			bool _hx_run( ::snikket::Stanza status){
-            				HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1072_setPresence)
-HXLINE(1072)				return (( (::String)(::Reflect_obj::field(status->attr,HX_("code",2d,b1,c4,41))) ) == HX_("110",50,59,25,00));
+            				HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1082_setPresence)
+HXLINE(1082)				return (( (::String)(::Reflect_obj::field(status->attr,HX_("code",2d,b1,c4,41))) ) == HX_("110",50,59,25,00));
             			}
             			HX_END_LOCAL_FUNC1(return)
 
-HXLINE(1072)			oneTen = ( ( ::snikket::Stanza)(::Lambda_obj::find(tmp->allTags(HX_("status",32,e7,fb,05),null()), ::Dynamic(new _hx_Closure_0()))) );
+HXLINE(1082)			oneTen = ( ( ::snikket::Stanza)(::Lambda_obj::find(tmp->allTags(HX_("status",32,e7,fb,05),null()), ::Dynamic(new _hx_Closure_0()))) );
             		}
             		else {
-HXLINE(1072)			oneTen = null();
+HXLINE(1082)			oneTen = null();
             		}
-HXLINE(1073)		if (::hx::IsNotNull( oneTen )) {
-HXLINE(1074)			this->_nickInUse = resource;
+HXLINE(1083)		if (::hx::IsNotNull( oneTen )) {
+HXLINE(1084)			this->_nickInUse = resource;
             		}
             		else {
-HXLINE(1075)			if ((resource == this->_nickInUse)) {
-HXLINE(1076)				this->_nickInUse = null();
+HXLINE(1085)			if ((resource == this->_nickInUse)) {
+HXLINE(1086)				this->_nickInUse = null();
             			}
             		}
-HXLINE(1078)		bool _hx_tmp;
-HXDLIN(1078)		bool _hx_tmp1;
-HXDLIN(1078)		if (::hx::IsNotNull( presence )) {
-HXLINE(1078)			_hx_tmp1 = ::hx::IsNotNull( presence->mucUser );
+HXLINE(1088)		bool _hx_tmp;
+HXDLIN(1088)		bool _hx_tmp1;
+HXDLIN(1088)		if (::hx::IsNotNull( presence )) {
+HXLINE(1088)			_hx_tmp1 = ::hx::IsNotNull( presence->mucUser );
             		}
             		else {
-HXLINE(1078)			_hx_tmp1 = false;
+HXLINE(1088)			_hx_tmp1 = false;
             		}
-HXDLIN(1078)		if (_hx_tmp1) {
-HXLINE(1078)			_hx_tmp = ::hx::IsNull( oneTen );
+HXDLIN(1088)		if (_hx_tmp1) {
+HXLINE(1088)			_hx_tmp = ::hx::IsNull( oneTen );
             		}
             		else {
-HXLINE(1078)			_hx_tmp = false;
-            		}
-HXDLIN(1078)		if (_hx_tmp) {
-HXLINE(1079)			 ::snikket::Presence existing = ( ( ::snikket::Presence)(this->presence->get(resource)) );
-HXLINE(1080)			bool _hx_tmp2;
-HXDLIN(1080)			if (::hx::IsNotNull( existing )) {
-HXLINE(1080)				 ::snikket::Stanza tmp1;
-HXDLIN(1080)				if (::hx::IsNotNull( existing )) {
-HXLINE(1080)					tmp1 = existing->mucUser;
+HXLINE(1088)			_hx_tmp = false;
+            		}
+HXDLIN(1088)		if (_hx_tmp) {
+HXLINE(1089)			 ::snikket::Presence existing = ( ( ::snikket::Presence)(this->presence->get(resource)) );
+HXLINE(1090)			bool _hx_tmp2;
+HXDLIN(1090)			if (::hx::IsNotNull( existing )) {
+HXLINE(1090)				 ::snikket::Stanza tmp1;
+HXDLIN(1090)				if (::hx::IsNotNull( existing )) {
+HXLINE(1090)					tmp1 = existing->mucUser;
             				}
             				else {
-HXLINE(1080)					tmp1 = null();
+HXLINE(1090)					tmp1 = null();
             				}
-HXDLIN(1080)				 ::snikket::Stanza _hx_tmp3;
-HXDLIN(1080)				if (::hx::IsNotNull( tmp1 )) {
+HXDLIN(1090)				 ::snikket::Stanza _hx_tmp3;
+HXDLIN(1090)				if (::hx::IsNotNull( tmp1 )) {
             					HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_1) HXARGC(1)
             					bool _hx_run( ::snikket::Stanza status){
-            						HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1080_setPresence)
-HXLINE(1080)						return (( (::String)(::Reflect_obj::field(status->attr,HX_("code",2d,b1,c4,41))) ) == HX_("110",50,59,25,00));
+            						HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1090_setPresence)
+HXLINE(1090)						return (( (::String)(::Reflect_obj::field(status->attr,HX_("code",2d,b1,c4,41))) ) == HX_("110",50,59,25,00));
             					}
             					HX_END_LOCAL_FUNC1(return)
 
-HXLINE(1080)					_hx_tmp3 = ( ( ::snikket::Stanza)(::Lambda_obj::find(tmp1->allTags(HX_("status",32,e7,fb,05),null()), ::Dynamic(new _hx_Closure_1()))) );
+HXLINE(1090)					_hx_tmp3 = ( ( ::snikket::Stanza)(::Lambda_obj::find(tmp1->allTags(HX_("status",32,e7,fb,05),null()), ::Dynamic(new _hx_Closure_1()))) );
             				}
             				else {
-HXLINE(1080)					_hx_tmp3 = null();
+HXLINE(1090)					_hx_tmp3 = null();
             				}
-HXDLIN(1080)				_hx_tmp2 = ::hx::IsNotNull( _hx_tmp3 );
+HXDLIN(1090)				_hx_tmp2 = ::hx::IsNotNull( _hx_tmp3 );
             			}
             			else {
-HXLINE(1080)				_hx_tmp2 = false;
+HXLINE(1090)				_hx_tmp2 = false;
             			}
-HXDLIN(1080)			if (_hx_tmp2) {
-HXLINE(1081)				presence->mucUser->tag(HX_("status",32,e7,fb,05), ::Dynamic(::hx::Anon_obj::Create(1)
+HXDLIN(1090)			if (_hx_tmp2) {
+HXLINE(1091)				presence->mucUser->tag(HX_("status",32,e7,fb,05), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("code",2d,b1,c4,41),HX_("110",50,59,25,00))));
-HXLINE(1082)				this->setPresence(resource,presence);
-HXLINE(1083)				return;
+HXLINE(1092)				this->setPresence(resource,presence);
+HXLINE(1093)				return;
             			}
             		}
-HXLINE(1086)		this->super::setPresence(resource,presence);
-HXLINE(1087)		 ::snikket::Stanza tmp2;
-HXDLIN(1087)		if (::hx::IsNotNull( presence )) {
-HXLINE(1087)			tmp2 = presence->mucUser;
+HXLINE(1096)		this->super::setPresence(resource,presence);
+HXLINE(1097)		 ::snikket::Stanza tmp2;
+HXDLIN(1097)		if (::hx::IsNotNull( presence )) {
+HXLINE(1097)			tmp2 = presence->mucUser;
             		}
             		else {
-HXLINE(1087)			tmp2 = null();
+HXLINE(1097)			tmp2 = null();
             		}
-HXDLIN(1087)		 ::snikket::Stanza tripleThree;
-HXDLIN(1087)		if (::hx::IsNotNull( tmp2 )) {
+HXDLIN(1097)		 ::snikket::Stanza tripleThree;
+HXDLIN(1097)		if (::hx::IsNotNull( tmp2 )) {
             			HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_2) HXARGC(1)
             			bool _hx_run( ::snikket::Stanza status){
-            				HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1087_setPresence)
-HXLINE(1087)				return (( (::String)(::Reflect_obj::field(status->attr,HX_("code",2d,b1,c4,41))) ) == HX_("333",93,df,26,00));
+            				HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1097_setPresence)
+HXLINE(1097)				return (( (::String)(::Reflect_obj::field(status->attr,HX_("code",2d,b1,c4,41))) ) == HX_("333",93,df,26,00));
             			}
             			HX_END_LOCAL_FUNC1(return)
 
-HXLINE(1087)			tripleThree = ( ( ::snikket::Stanza)(::Lambda_obj::find(tmp2->allTags(HX_("status",32,e7,fb,05),null()), ::Dynamic(new _hx_Closure_2()))) );
+HXLINE(1097)			tripleThree = ( ( ::snikket::Stanza)(::Lambda_obj::find(tmp2->allTags(HX_("status",32,e7,fb,05),null()), ::Dynamic(new _hx_Closure_2()))) );
             		}
             		else {
-HXLINE(1087)			tripleThree = null();
+HXLINE(1097)			tripleThree = null();
             		}
-HXLINE(1088)		bool _hx_tmp4;
-HXDLIN(1088)		if (::hx::IsNotNull( oneTen )) {
-HXLINE(1088)			_hx_tmp4 = ::hx::IsNotNull( tripleThree );
+HXLINE(1098)		bool _hx_tmp4;
+HXDLIN(1098)		if (::hx::IsNotNull( oneTen )) {
+HXLINE(1098)			_hx_tmp4 = ::hx::IsNotNull( tripleThree );
             		}
             		else {
-HXLINE(1088)			_hx_tmp4 = false;
+HXLINE(1098)			_hx_tmp4 = false;
             		}
-HXDLIN(1088)		if (_hx_tmp4) {
-HXLINE(1089)			this->selfPing(true);
+HXDLIN(1098)		if (_hx_tmp4) {
+HXLINE(1099)			this->selfPing(true);
             		}
             	}
 
@@ -504,10 +531,10 @@ HXLINE(1089)			this->selfPing(true);
 void Channel_obj::doSync(::String lastId){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis) HXARGC(2)
             		 ::snikket::ChatMessageBuilder _hx_run( ::snikket::ChatMessageBuilder builder, ::snikket::Stanza stanza){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1110_doSync)
-HXLINE(1111)			builder = _gthis->prepareIncomingMessage(builder,stanza);
-HXLINE(1112)			builder->syncPoint = true;
-HXLINE(1113)			return builder;
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1120_doSync)
+HXLINE(1121)			builder = _gthis->prepareIncomingMessage(builder,stanza);
+HXLINE(1122)			builder->syncPoint = true;
+HXLINE(1123)			return builder;
             		}
             		HX_END_LOCAL_FUNC2(return)
 
@@ -515,140 +542,140 @@ HXLINE(1113)			return builder;
             		void _hx_run( ::Dynamic messageList){
             			HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_5, ::snikket::Channel,_gthis,::Array< ::Dynamic>,pageChatMessages) HXARGC(2)
             			void _hx_run( ::Dynamic resolve, ::Dynamic reject){
-            				HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1139_doSync)
-HXLINE(1139)				_gthis->client->storeMessages(pageChatMessages,resolve);
+            				HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1149_doSync)
+HXLINE(1149)				_gthis->client->storeMessages(pageChatMessages,resolve);
             			}
             			HX_END_LOCAL_FUNC2((void))
 
             			HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_7, ::snikket::Channel,_gthis,::Array< ::Dynamic>,chatMessages) HXARGC(1)
             			void _hx_run(::Array< ::Dynamic> stored){
-            				HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1141_doSync)
-HXLINE(1142)				{
-HXLINE(1142)					int _g = 0;
-HXDLIN(1142)					while((_g < stored->length)){
-HXLINE(1142)						::Array< ::Dynamic> messages = stored->__get(_g).StaticCast< ::Array< ::Dynamic> >();
-HXDLIN(1142)						_g = (_g + 1);
-HXLINE(1143)						if (::hx::IsNotNull( messages )) {
-HXLINE(1144)							int _g1 = 0;
-HXDLIN(1144)							while((_g1 < messages->length)){
-HXLINE(1144)								 ::snikket::ChatMessage message = messages->__get(_g1).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN(1144)								_g1 = (_g1 + 1);
-HXLINE(1145)								_gthis->client->notifySyncMessageHandlers(message);
-HXLINE(1146)								bool _hx_tmp;
-HXDLIN(1146)								if (::hx::IsNotNull( message )) {
-HXLINE(1146)									::String _hx_tmp1 = message->chatId();
-HXDLIN(1146)									_hx_tmp = (_hx_tmp1 == _gthis->chatId);
+            				HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1151_doSync)
+HXLINE(1152)				{
+HXLINE(1152)					int _g = 0;
+HXDLIN(1152)					while((_g < stored->length)){
+HXLINE(1152)						::Array< ::Dynamic> messages = stored->__get(_g).StaticCast< ::Array< ::Dynamic> >();
+HXDLIN(1152)						_g = (_g + 1);
+HXLINE(1153)						if (::hx::IsNotNull( messages )) {
+HXLINE(1154)							int _g1 = 0;
+HXDLIN(1154)							while((_g1 < messages->length)){
+HXLINE(1154)								 ::snikket::ChatMessage message = messages->__get(_g1).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN(1154)								_g1 = (_g1 + 1);
+HXLINE(1155)								_gthis->client->notifySyncMessageHandlers(message);
+HXLINE(1156)								bool _hx_tmp;
+HXDLIN(1156)								if (::hx::IsNotNull( message )) {
+HXLINE(1156)									::String _hx_tmp1 = message->chatId();
+HXDLIN(1156)									_hx_tmp = (_hx_tmp1 == _gthis->chatId);
             								}
             								else {
-HXLINE(1146)									_hx_tmp = false;
+HXLINE(1156)									_hx_tmp = false;
             								}
-HXDLIN(1146)								if (_hx_tmp) {
-HXLINE(1146)									chatMessages->push(message);
+HXDLIN(1156)								if (_hx_tmp) {
+HXLINE(1156)									chatMessages->push(message);
             								}
-HXLINE(1147)								if ((chatMessages->length > 1000)) {
-HXLINE(1147)									chatMessages->shift().StaticCast<  ::snikket::ChatMessage >();
+HXLINE(1157)								if ((chatMessages->length > 1000)) {
+HXLINE(1157)									chatMessages->shift().StaticCast<  ::snikket::ChatMessage >();
             								}
             							}
             						}
             					}
             				}
-HXLINE(1151)				if (_gthis->sync->hasMore()) {
-HXLINE(1152)					_gthis->sync->fetchNext();
+HXLINE(1161)				if (_gthis->sync->hasMore()) {
+HXLINE(1162)					_gthis->sync->fetchNext();
             				}
             				else {
             					HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_6, ::snikket::Channel,_gthis) HXARGC(1)
             					bool _hx_run( ::snikket::ChatMessage m){
-            						HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1170_doSync)
-HXLINE(1170)						::String m1 = m->serverId;
-HXDLIN(1170)						if ((m1 != _gthis->readUpTo())) {
-HXLINE(1170)							return !(m->isIncoming());
+            						HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1180_doSync)
+HXLINE(1180)						::String m1 = m->serverId;
+HXDLIN(1180)						if ((m1 != _gthis->readUpTo())) {
+HXLINE(1180)							return !(m->isIncoming());
             						}
             						else {
-HXLINE(1170)							return true;
+HXLINE(1180)							return true;
             						}
-HXDLIN(1170)						return false;
+HXDLIN(1180)						return false;
             					}
             					HX_END_LOCAL_FUNC1(return)
 
-HXLINE(1154)					_gthis->inSync = true;
-HXLINE(1155)					_gthis->sync = null();
-HXLINE(1156)					 ::snikket::ChatMessage lastFromSync = chatMessages->__get((chatMessages->length - 1)).StaticCast<  ::snikket::ChatMessage >();
-HXLINE(1157)					bool _hx_tmp2;
-HXDLIN(1157)					if (::hx::IsNotNull( lastFromSync )) {
-HXLINE(1157)						if (::hx::IsNotNull( _gthis->lastMessageTimestamp() )) {
-HXLINE(1157)							::String lastFromSync1 = lastFromSync->timestamp;
-HXDLIN(1157)							_hx_tmp2 = (::Reflect_obj::compare(lastFromSync1,_gthis->lastMessageTimestamp()) > 0);
+HXLINE(1164)					_gthis->inSync = true;
+HXLINE(1165)					_gthis->sync = null();
+HXLINE(1166)					 ::snikket::ChatMessage lastFromSync = chatMessages->__get((chatMessages->length - 1)).StaticCast<  ::snikket::ChatMessage >();
+HXLINE(1167)					bool _hx_tmp2;
+HXDLIN(1167)					if (::hx::IsNotNull( lastFromSync )) {
+HXLINE(1167)						if (::hx::IsNotNull( _gthis->lastMessageTimestamp() )) {
+HXLINE(1167)							::String lastFromSync1 = lastFromSync->timestamp;
+HXDLIN(1167)							_hx_tmp2 = (::Reflect_obj::compare(lastFromSync1,_gthis->lastMessageTimestamp()) > 0);
             						}
             						else {
-HXLINE(1157)							_hx_tmp2 = true;
+HXLINE(1167)							_hx_tmp2 = true;
             						}
             					}
             					else {
-HXLINE(1157)						_hx_tmp2 = false;
+HXLINE(1167)						_hx_tmp2 = false;
             					}
-HXDLIN(1157)					if (_hx_tmp2) {
-HXLINE(1158)						_gthis->setLastMessage(lastFromSync);
-HXLINE(1159)						_gthis->client->sortChats();
+HXDLIN(1167)					if (_hx_tmp2) {
+HXLINE(1168)						_gthis->setLastMessage(lastFromSync);
+HXLINE(1169)						_gthis->client->sortChats();
             					}
-HXLINE(1161)					 ::haxe::ds::StringMap serverIds =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
-HXLINE(1162)					::Array< ::Dynamic> dedupedMessages = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1163)					chatMessages->reverse();
-HXLINE(1164)					{
-HXLINE(1164)						int _g2 = 0;
-HXDLIN(1164)						while((_g2 < chatMessages->length)){
-HXLINE(1164)							 ::snikket::ChatMessage m = chatMessages->__get(_g2).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN(1164)							_g2 = (_g2 + 1);
-HXLINE(1165)							 ::Dynamic tmp = serverIds->get(m->serverId);
-HXDLIN(1165)							bool _hx_tmp3;
-HXDLIN(1165)							if (::hx::IsNotNull( tmp )) {
-HXLINE(1165)								_hx_tmp3 = ( (bool)(tmp) );
+HXLINE(1171)					 ::haxe::ds::StringMap serverIds =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
+HXLINE(1172)					::Array< ::Dynamic> dedupedMessages = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1173)					chatMessages->reverse();
+HXLINE(1174)					{
+HXLINE(1174)						int _g2 = 0;
+HXDLIN(1174)						while((_g2 < chatMessages->length)){
+HXLINE(1174)							 ::snikket::ChatMessage m = chatMessages->__get(_g2).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN(1174)							_g2 = (_g2 + 1);
+HXLINE(1175)							 ::Dynamic tmp = serverIds->get(m->serverId);
+HXDLIN(1175)							bool _hx_tmp3;
+HXDLIN(1175)							if (::hx::IsNotNull( tmp )) {
+HXLINE(1175)								_hx_tmp3 = ( (bool)(tmp) );
             							}
             							else {
-HXLINE(1165)								_hx_tmp3 = false;
+HXLINE(1175)								_hx_tmp3 = false;
             							}
-HXDLIN(1165)							if (!(_hx_tmp3)) {
-HXLINE(1166)								dedupedMessages->unshift(m);
-HXLINE(1167)								serverIds->set(m->serverId,true);
+HXDLIN(1175)							if (!(_hx_tmp3)) {
+HXLINE(1176)								dedupedMessages->unshift(m);
+HXLINE(1177)								serverIds->set(m->serverId,true);
             							}
             						}
             					}
-HXLINE(1170)					int readIndex = ::Lambda_obj::findIndex(dedupedMessages, ::Dynamic(new _hx_Closure_6(_gthis)));
-HXLINE(1171)					if ((readIndex < 0)) {
-HXLINE(1172)						 ::snikket::Channel _gthis1 = _gthis;
-HXDLIN(1172)						int _hx_tmp4 = _gthis->unreadCount();
-HXDLIN(1172)						_gthis1->setUnreadCount((_hx_tmp4 + dedupedMessages->length));
+HXLINE(1180)					int readIndex = ::Lambda_obj::findIndex(dedupedMessages, ::Dynamic(new _hx_Closure_6(_gthis)));
+HXLINE(1181)					if ((readIndex < 0)) {
+HXLINE(1182)						 ::snikket::Channel _gthis1 = _gthis;
+HXDLIN(1182)						int _hx_tmp4 = _gthis->unreadCount();
+HXDLIN(1182)						_gthis1->setUnreadCount((_hx_tmp4 + dedupedMessages->length));
             					}
             					else {
-HXLINE(1174)						_gthis->setUnreadCount(((dedupedMessages->length - readIndex) - 1));
+HXLINE(1184)						_gthis->setUnreadCount(((dedupedMessages->length - readIndex) - 1));
             					}
-HXLINE(1176)					_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
+HXLINE(1186)					_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
             				}
             			}
             			HX_END_LOCAL_FUNC1((void))
 
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1116_doSync)
-HXLINE(1117)			::Array< ::Dynamic> promises = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1118)			::Array< ::Dynamic> pageChatMessages = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1119)			{
-HXLINE(1119)				int _g = 0;
-HXDLIN(1119)				::Array< ::Dynamic> _g1 = ( (::Array< ::Dynamic>)(messageList->__Field(HX_("messages",cc,d8,fd,34),::hx::paccDynamic)) );
-HXDLIN(1119)				while((_g < _g1->length)){
-HXLINE(1119)					 ::snikket::MessageStanza m = _g1->__get(_g).StaticCast<  ::snikket::MessageStanza >();
-HXDLIN(1119)					_g = (_g + 1);
-HXLINE(1120)					switch((int)(m->_hx_getIndex())){
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1126_doSync)
+HXLINE(1127)			::Array< ::Dynamic> promises = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1128)			::Array< ::Dynamic> pageChatMessages = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1129)			{
+HXLINE(1129)				int _g = 0;
+HXDLIN(1129)				::Array< ::Dynamic> _g1 = ( (::Array< ::Dynamic>)(messageList->__Field(HX_("messages",cc,d8,fd,34),::hx::paccDynamic)) );
+HXDLIN(1129)				while((_g < _g1->length)){
+HXLINE(1129)					 ::snikket::MessageStanza m = _g1->__get(_g).StaticCast<  ::snikket::MessageStanza >();
+HXDLIN(1129)					_g = (_g + 1);
+HXLINE(1130)					switch((int)(m->_hx_getIndex())){
             						case (int)1: {
-HXLINE(1121)							 ::snikket::ChatMessage message = m->_hx_getObject(0).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN(1121)							{
-HXLINE(1122)								{
-HXLINE(1122)									int _g2 = 0;
-HXDLIN(1122)									::Array< ::Dynamic> _g3 = message->inlineHashReferences();
-HXDLIN(1122)									while((_g2 < _g3->length)){
-HXLINE(1122)										 ::snikket::Hash hash = _g3->__get(_g2).StaticCast<  ::snikket::Hash >();
-HXDLIN(1122)										_g2 = (_g2 + 1);
-HXLINE(1123)										_gthis->client->fetchMediaByHash(::Array_obj< ::Dynamic>::__new(1)->init(0,hash),::Array_obj< ::Dynamic>::__new(1)->init(0,message->from));
+HXLINE(1131)							 ::snikket::ChatMessage message = m->_hx_getObject(0).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN(1131)							{
+HXLINE(1132)								{
+HXLINE(1132)									int _g2 = 0;
+HXDLIN(1132)									::Array< ::Dynamic> _g3 = message->inlineHashReferences();
+HXDLIN(1132)									while((_g2 < _g3->length)){
+HXLINE(1132)										 ::snikket::Hash hash = _g3->__get(_g2).StaticCast<  ::snikket::Hash >();
+HXDLIN(1132)										_g2 = (_g2 + 1);
+HXLINE(1133)										_gthis->client->fetchMediaByHash(::Array_obj< ::Dynamic>::__new(1)->init(0,hash),::Array_obj< ::Dynamic>::__new(1)->init(0,message->from));
             									}
             								}
-HXLINE(1125)								pageChatMessages->push(message);
+HXLINE(1135)								pageChatMessages->push(message);
             							}
             						}
             						break;
@@ -657,18 +684,18 @@ HXLINE(1125)								pageChatMessages->push(message);
             							void _hx_run( ::Dynamic resolve, ::Dynamic reject){
             								HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_1, ::Dynamic,resolve) HXARGC(1)
             								void _hx_run( ::snikket::ChatMessage _){
-            									HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1132_doSync)
-HXLINE(1132)									resolve(null());
+            									HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1142_doSync)
+HXLINE(1142)									resolve(null());
             								}
             								HX_END_LOCAL_FUNC1((void))
 
-            								HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1132_doSync)
-HXLINE(1132)								::thenshim::_Promise::Promise_Impl__obj::then(_gthis->client->moderateMessage(action), ::Dynamic(new _hx_Closure_1(resolve)),null());
+            								HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1142_doSync)
+HXLINE(1142)								::thenshim::_Promise::Promise_Impl__obj::then(_gthis->client->moderateMessage(action), ::Dynamic(new _hx_Closure_1(resolve)),null());
             							}
             							HX_END_LOCAL_FUNC2((void))
 
-HXLINE(1130)							 ::snikket::ModerationAction action = m->_hx_getObject(0).StaticCast<  ::snikket::ModerationAction >();
-HXLINE(1131)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_2(_gthis,action))));
+HXLINE(1140)							 ::snikket::ModerationAction action = m->_hx_getObject(0).StaticCast<  ::snikket::ModerationAction >();
+HXLINE(1141)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_2(_gthis,action))));
             						}
             						break;
             						case (int)3: {
@@ -676,20 +703,20 @@ HXLINE(1131)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new(
             							void _hx_run( ::Dynamic resolve, ::Dynamic reject){
             								HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_3, ::Dynamic,resolve) HXARGC(1)
             								void _hx_run( ::snikket::ChatMessage _){
-            									HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1128_doSync)
-HXLINE(1128)									resolve(null());
+            									HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1138_doSync)
+HXLINE(1138)									resolve(null());
             								}
             								HX_END_LOCAL_FUNC1((void))
 
-            								HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1128_doSync)
-HXLINE(1128)								::Dynamic _gthis1 = _gthis->persistence;
-HXDLIN(1128)								::String _hx_tmp = _gthis->client->accountId();
-HXDLIN(1128)								::snikket::Persistence_obj::storeReaction(_gthis1,_hx_tmp,update, ::Dynamic(new _hx_Closure_3(resolve)));
+            								HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1138_doSync)
+HXLINE(1138)								::Dynamic _gthis1 = _gthis->persistence;
+HXDLIN(1138)								::String _hx_tmp = _gthis->client->accountId();
+HXDLIN(1138)								::snikket::Persistence_obj::storeReaction(_gthis1,_hx_tmp,update, ::Dynamic(new _hx_Closure_3(resolve)));
             							}
             							HX_END_LOCAL_FUNC2((void))
 
-HXLINE(1126)							 ::snikket::ReactionUpdate update = m->_hx_getObject(0).StaticCast<  ::snikket::ReactionUpdate >();
-HXLINE(1127)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_4(_gthis,update))));
+HXLINE(1136)							 ::snikket::ReactionUpdate update = m->_hx_getObject(0).StaticCast<  ::snikket::ReactionUpdate >();
+HXLINE(1137)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_4(_gthis,update))));
             						}
             						break;
             						default:{
@@ -697,70 +724,70 @@ HXLINE(1127)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new(
             					}
             				}
             			}
-HXLINE(1138)			promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_5(_gthis,pageChatMessages))));
-HXLINE(1141)			::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::PromiseTools_obj::all(promises), ::Dynamic(new _hx_Closure_7(_gthis,chatMessages)),null());
+HXLINE(1148)			promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_5(_gthis,pageChatMessages))));
+HXLINE(1151)			::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::PromiseTools_obj::all(promises), ::Dynamic(new _hx_Closure_7(_gthis,chatMessages)),null());
             		}
             		HX_END_LOCAL_FUNC1((void))
 
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_9, ::snikket::Channel,_gthis,::String,lastId) HXARGC(1)
             		void _hx_run( ::snikket::Stanza stanza){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1180_doSync)
-HXLINE(1181)			_gthis->sync = null();
-HXLINE(1182)			if (::hx::IsNotNull( lastId )) {
-HXLINE(1184)				_gthis->doSync(null());
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1190_doSync)
+HXLINE(1191)			_gthis->sync = null();
+HXLINE(1192)			if (::hx::IsNotNull( lastId )) {
+HXLINE(1194)				_gthis->doSync(null());
             			}
             			else {
-HXLINE(1186)				::haxe::Log_obj::trace(HX_("SYNC failed",e2,ec,6f,fa), ::Dynamic(::hx::Anon_obj::Create(5)
+HXLINE(1196)				::haxe::Log_obj::trace(HX_("SYNC failed",e2,ec,6f,fa), ::Dynamic(::hx::Anon_obj::Create(5)
             					->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.Channel",b2,3f,68,db))
             					->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(2)->init(0,_gthis->chatId)->init(1,stanza))
             					->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("doSync",86,5f,63,1c))
             					->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/Chat.hx",f4,6b,61,18))
-            					->setFixed(4,HX_("lineNumber",dd,81,22,76),1186)));
+            					->setFixed(4,HX_("lineNumber",dd,81,22,76),1196)));
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1093_doSync)
-HXDLIN(1093)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1094)		if (!(this->disco->features->contains(HX_("urn:xmpp:mam:2",f5,ef,8c,da)))) {
-HXLINE(1095)			this->inSync = true;
-HXLINE(1096)			return;
+            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1103_doSync)
+HXDLIN(1103)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1104)		if (!(this->disco->features->contains(HX_("urn:xmpp:mam:2",f5,ef,8c,da)))) {
+HXLINE(1105)			this->inSync = true;
+HXLINE(1106)			return;
             		}
-HXLINE(1098)		if (::hx::IsNotNull( this->sync )) {
-HXLINE(1098)			return;
+HXLINE(1108)		if (::hx::IsNotNull( this->sync )) {
+HXLINE(1108)			return;
             		}
-HXLINE(1100)		::String threeDaysAgo = ::snikket::Date_obj::format(::Date_obj::fromTime((::Date_obj::now()->getTime() + ((Float)-259200000.))));
-HXLINE(1106)		 ::Dynamic _hx_tmp;
-HXDLIN(1106)		if (::hx::IsNull( lastId )) {
-HXLINE(1106)			_hx_tmp =  ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1110)		::String threeDaysAgo = ::snikket::Date_obj::format(::Date_obj::fromTime((::Date_obj::now()->getTime() + ((Float)-259200000.))));
+HXLINE(1116)		 ::Dynamic _hx_tmp;
+HXDLIN(1116)		if (::hx::IsNull( lastId )) {
+HXLINE(1116)			_hx_tmp =  ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("startTime",8f,45,f0,05),threeDaysAgo));
             		}
             		else {
-HXLINE(1106)			_hx_tmp =  ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1116)			_hx_tmp =  ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("page",4f,da,51,4a), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("after",1c,66,a2,1d),lastId))));
             		}
-HXLINE(1103)		this->sync =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,this->client,this->stream,_hx_tmp,this->chatId);
-HXLINE(1109)		this->sync->setNewestPageFirst(false);
-HXLINE(1110)		this->sync->addContext( ::Dynamic(new _hx_Closure_0(_gthis)));
-HXLINE(1115)		::Array< ::Dynamic> chatMessages = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1116)		this->sync->onMessages( ::Dynamic(new _hx_Closure_8(_gthis,chatMessages)));
-HXLINE(1180)		this->sync->onError( ::Dynamic(new _hx_Closure_9(_gthis,lastId)));
-HXLINE(1189)		this->sync->fetchNext();
+HXLINE(1113)		this->sync =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,this->client,this->stream,_hx_tmp,this->chatId);
+HXLINE(1119)		this->sync->setNewestPageFirst(false);
+HXLINE(1120)		this->sync->addContext( ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE(1125)		::Array< ::Dynamic> chatMessages = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1126)		this->sync->onMessages( ::Dynamic(new _hx_Closure_8(_gthis,chatMessages)));
+HXLINE(1190)		this->sync->onError( ::Dynamic(new _hx_Closure_9(_gthis,lastId)));
+HXLINE(1199)		this->sync->fetchNext();
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(Channel_obj,doSync,(void))
 
 bool Channel_obj::isTrusted(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1193_isTrusted)
-HXDLIN(1193)		return (this->uiState != 2);
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1203_isTrusted)
+HXDLIN(1203)		return (this->uiState != 2);
             	}
 
 
 bool Channel_obj::isPrivate(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1197_isPrivate)
-HXDLIN(1197)		return this->disco->features->contains(HX_("muc_membersonly",41,e9,70,b7));
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1207_isPrivate)
+HXDLIN(1207)		return this->disco->features->contains(HX_("muc_membersonly",41,e9,70,b7));
             	}
 
 
@@ -769,154 +796,154 @@ HX_DEFINE_DYNAMIC_FUNC0(Channel_obj,isPrivate,return )
 void Channel_obj::refreshDisco( ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis, ::snikket::queries::DiscoInfoGet,discoGet, ::Dynamic,callback) HXARGC(0)
             		void _hx_run(){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1203_refreshDisco)
-HXLINE(1204)			if (::hx::IsNotNull( discoGet->getResult() )) {
-HXLINE(1205)				bool setupNotifications;
-HXDLIN(1205)				if (::hx::IsNull( _gthis->disco )) {
-HXLINE(1205)					setupNotifications = ::hx::IsNull( _gthis->notificationSettings );
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1213_refreshDisco)
+HXLINE(1214)			if (::hx::IsNotNull( discoGet->getResult() )) {
+HXLINE(1215)				bool setupNotifications;
+HXDLIN(1215)				if (::hx::IsNull( _gthis->disco )) {
+HXLINE(1215)					setupNotifications = ::hx::IsNull( _gthis->notificationSettings );
             				}
             				else {
-HXLINE(1205)					setupNotifications = false;
+HXLINE(1215)					setupNotifications = false;
             				}
-HXLINE(1206)				_gthis->disco = discoGet->getResult();
-HXLINE(1207)				bool _hx_tmp;
-HXDLIN(1207)				if (setupNotifications) {
-HXLINE(1207)					_hx_tmp = !(_gthis->isPrivate());
+HXLINE(1216)				_gthis->disco = discoGet->getResult();
+HXLINE(1217)				bool _hx_tmp;
+HXDLIN(1217)				if (setupNotifications) {
+HXLINE(1217)					_hx_tmp = !(_gthis->isPrivate());
             				}
             				else {
-HXLINE(1207)					_hx_tmp = false;
+HXLINE(1217)					_hx_tmp = false;
             				}
-HXDLIN(1207)				if (_hx_tmp) {
-HXLINE(1207)					_gthis->notificationSettings =  ::Dynamic(::hx::Anon_obj::Create(2)
+HXDLIN(1217)				if (_hx_tmp) {
+HXLINE(1217)					_gthis->notificationSettings =  ::Dynamic(::hx::Anon_obj::Create(2)
             						->setFixed(0,HX_("mention",ea,9e,bf,b9),true)
             						->setFixed(1,HX_("reply",2a,09,c6,e6),false));
             				}
-HXLINE(1208)				::Dynamic _gthis1 = _gthis->persistence;
-HXDLIN(1208)				::snikket::Persistence_obj::storeCaps(_gthis1,discoGet->getResult());
-HXLINE(1209)				::Dynamic _gthis2 = _gthis->persistence;
-HXDLIN(1209)				::String _hx_tmp1 = _gthis->client->accountId();
-HXDLIN(1209)				::snikket::Persistence_obj::storeChats(_gthis2,_hx_tmp1,::Array_obj< ::Dynamic>::__new(1)->init(0,_gthis));
+HXLINE(1218)				::Dynamic _gthis1 = _gthis->persistence;
+HXDLIN(1218)				::snikket::Persistence_obj::storeCaps(_gthis1,discoGet->getResult());
+HXLINE(1219)				::Dynamic _gthis2 = _gthis->persistence;
+HXDLIN(1219)				::String _hx_tmp1 = _gthis->client->accountId();
+HXDLIN(1219)				::snikket::Persistence_obj::storeChats(_gthis2,_hx_tmp1,::Array_obj< ::Dynamic>::__new(1)->init(0,_gthis));
             			}
-HXLINE(1211)			if (::hx::IsNotNull( callback )) {
-HXLINE(1211)				callback();
+HXLINE(1221)			if (::hx::IsNotNull( callback )) {
+HXLINE(1221)				callback();
             			}
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1201_refreshDisco)
-HXDLIN(1201)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1202)		 ::snikket::queries::DiscoInfoGet discoGet =  ::snikket::queries::DiscoInfoGet_obj::__alloc( HX_CTX ,this->chatId,null());
-HXLINE(1203)		discoGet->onFinished( ::Dynamic(new _hx_Closure_0(_gthis,discoGet,callback)));
-HXLINE(1213)		this->client->sendQuery(discoGet);
+            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1211_refreshDisco)
+HXDLIN(1211)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1212)		 ::snikket::queries::DiscoInfoGet discoGet =  ::snikket::queries::DiscoInfoGet_obj::__alloc( HX_CTX ,this->chatId,null());
+HXLINE(1213)		discoGet->onFinished( ::Dynamic(new _hx_Closure_0(_gthis,discoGet,callback)));
+HXLINE(1223)		this->client->sendQuery(discoGet);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(Channel_obj,refreshDisco,(void))
 
 ::String Channel_obj::preview(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1216_preview)
-HXLINE(1217)		if (::hx::IsNull( this->lastMessage )) {
-HXLINE(1217)			return this->super::preview();
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1226_preview)
+HXLINE(1227)		if (::hx::IsNull( this->lastMessage )) {
+HXLINE(1227)			return this->super::preview();
             		}
-HXLINE(1219)		::String _hx_tmp = (this->getParticipantDetails(this->lastMessage->senderId)->displayName + HX_(": ",a6,32,00,00));
-HXDLIN(1219)		return (_hx_tmp + this->super::preview());
+HXLINE(1229)		::String _hx_tmp = (this->getParticipantDetails(this->lastMessage->senderId)->displayName + HX_(": ",a6,32,00,00));
+HXDLIN(1229)		return (_hx_tmp + this->super::preview());
             	}
 
 
 bool Channel_obj::livePresence(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1223_livePresence)
-HXLINE(1224)		if (this->forceLive) {
-HXLINE(1224)			return true;
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1233_livePresence)
+HXLINE(1234)		if (this->forceLive) {
+HXLINE(1234)			return true;
             		}
-HXLINE(1226)		return ::hx::IsNotNull( this->_nickInUse );
+HXLINE(1236)		return ::hx::IsNotNull( this->_nickInUse );
             	}
 
 
 bool Channel_obj::syncing(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1230_syncing)
-HXDLIN(1230)		if (this->inSync) {
-HXDLIN(1230)			return !(this->livePresence());
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1240_syncing)
+HXDLIN(1240)		if (this->inSync) {
+HXDLIN(1240)			return !(this->livePresence());
             		}
             		else {
-HXDLIN(1230)			return true;
+HXDLIN(1240)			return true;
             		}
-HXDLIN(1230)		return false;
+HXDLIN(1240)		return false;
             	}
 
 
 bool Channel_obj::canAudioCall(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1234_canAudioCall)
-HXDLIN(1234)		 ::snikket::Caps tmp = this->disco;
-HXDLIN(1234)		::Array< ::String > tmp1;
-HXDLIN(1234)		if (::hx::IsNotNull( tmp )) {
-HXDLIN(1234)			tmp1 = tmp->features;
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1244_canAudioCall)
+HXDLIN(1244)		 ::snikket::Caps tmp = this->disco;
+HXDLIN(1244)		::Array< ::String > tmp1;
+HXDLIN(1244)		if (::hx::IsNotNull( tmp )) {
+HXDLIN(1244)			tmp1 = tmp->features;
             		}
             		else {
-HXDLIN(1234)			tmp1 = null();
+HXDLIN(1244)			tmp1 = null();
             		}
-HXDLIN(1234)		 ::Dynamic tmp2;
-HXDLIN(1234)		if (::hx::IsNotNull( tmp1 )) {
-HXDLIN(1234)			tmp2 = tmp1->contains(HX_("urn:xmpp:jingle:apps:rtp:audio",0f,8b,54,6c));
+HXDLIN(1244)		 ::Dynamic tmp2;
+HXDLIN(1244)		if (::hx::IsNotNull( tmp1 )) {
+HXDLIN(1244)			tmp2 = tmp1->contains(HX_("urn:xmpp:jingle:apps:rtp:audio",0f,8b,54,6c));
             		}
             		else {
-HXDLIN(1234)			tmp2 = null();
+HXDLIN(1244)			tmp2 = null();
             		}
-HXDLIN(1234)		if (::hx::IsNotNull( tmp2 )) {
-HXDLIN(1234)			return ( (bool)(tmp2) );
+HXDLIN(1244)		if (::hx::IsNotNull( tmp2 )) {
+HXDLIN(1244)			return ( (bool)(tmp2) );
             		}
             		else {
-HXDLIN(1234)			return false;
+HXDLIN(1244)			return false;
             		}
-HXDLIN(1234)		return false;
+HXDLIN(1244)		return false;
             	}
 
 
 bool Channel_obj::canVideoCall(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1238_canVideoCall)
-HXDLIN(1238)		 ::snikket::Caps tmp = this->disco;
-HXDLIN(1238)		::Array< ::String > tmp1;
-HXDLIN(1238)		if (::hx::IsNotNull( tmp )) {
-HXDLIN(1238)			tmp1 = tmp->features;
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1248_canVideoCall)
+HXDLIN(1248)		 ::snikket::Caps tmp = this->disco;
+HXDLIN(1248)		::Array< ::String > tmp1;
+HXDLIN(1248)		if (::hx::IsNotNull( tmp )) {
+HXDLIN(1248)			tmp1 = tmp->features;
             		}
             		else {
-HXDLIN(1238)			tmp1 = null();
+HXDLIN(1248)			tmp1 = null();
             		}
-HXDLIN(1238)		 ::Dynamic tmp2;
-HXDLIN(1238)		if (::hx::IsNotNull( tmp1 )) {
-HXDLIN(1238)			tmp2 = tmp1->contains(HX_("urn:xmpp:jingle:apps:rtp:video",b4,26,d0,7b));
+HXDLIN(1248)		 ::Dynamic tmp2;
+HXDLIN(1248)		if (::hx::IsNotNull( tmp1 )) {
+HXDLIN(1248)			tmp2 = tmp1->contains(HX_("urn:xmpp:jingle:apps:rtp:video",b4,26,d0,7b));
             		}
             		else {
-HXDLIN(1238)			tmp2 = null();
+HXDLIN(1248)			tmp2 = null();
             		}
-HXDLIN(1238)		if (::hx::IsNotNull( tmp2 )) {
-HXDLIN(1238)			return ( (bool)(tmp2) );
+HXDLIN(1248)		if (::hx::IsNotNull( tmp2 )) {
+HXDLIN(1248)			return ( (bool)(tmp2) );
             		}
             		else {
-HXDLIN(1238)			return false;
+HXDLIN(1248)			return false;
             		}
-HXDLIN(1238)		return false;
+HXDLIN(1248)		return false;
             	}
 
 
 ::String Channel_obj::nickInUse(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1242_nickInUse)
-HXDLIN(1242)		::String tmp = this->_nickInUse;
-HXDLIN(1242)		if (::hx::IsNotNull( tmp )) {
-HXDLIN(1242)			return tmp;
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1252_nickInUse)
+HXDLIN(1252)		::String tmp = this->_nickInUse;
+HXDLIN(1252)		if (::hx::IsNotNull( tmp )) {
+HXDLIN(1252)			return tmp;
             		}
             		else {
-HXDLIN(1242)			return this->client->displayName();
+HXDLIN(1252)			return this->client->displayName();
             		}
-HXDLIN(1242)		return null();
+HXDLIN(1252)		return null();
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(Channel_obj,nickInUse,return )
 
  ::snikket::JID Channel_obj::getFullJid(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1246_getFullJid)
-HXDLIN(1246)		 ::snikket::JID _hx_tmp = ::snikket::JID_obj::parse(this->chatId);
-HXDLIN(1246)		return _hx_tmp->withResource(this->nickInUse());
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1256_getFullJid)
+HXDLIN(1256)		 ::snikket::JID _hx_tmp = ::snikket::JID_obj::parse(this->chatId);
+HXDLIN(1256)		return _hx_tmp->withResource(this->nickInUse());
             	}
 
 
@@ -925,215 +952,215 @@ HX_DEFINE_DYNAMIC_FUNC0(Channel_obj,getFullJid,return )
 ::Array< ::String > Channel_obj::getParticipants(){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis) HXARGC(0)
             		 ::Dynamic _hx_run(){
-            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1252_getParticipants)
-HXLINE(1252)			return _gthis->presence->keys();
+            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1262_getParticipants)
+HXLINE(1262)			return _gthis->presence->keys();
             		}
             		HX_END_LOCAL_FUNC0(return)
 
             		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_1) HXARGC(1)
             		bool _hx_run(::String resource){
-            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1252_getParticipants)
-HXLINE(1252)			return ::hx::IsNotNull( resource );
+            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1262_getParticipants)
+HXLINE(1262)			return ::hx::IsNotNull( resource );
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1250_getParticipants)
-HXDLIN(1250)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1251)		 ::snikket::JID jid = ::snikket::JID_obj::parse(this->chatId);
-HXLINE(1252)		::Array< ::String > _this = ::Lambda_obj::filter( ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1260_getParticipants)
+HXDLIN(1260)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1261)		 ::snikket::JID jid = ::snikket::JID_obj::parse(this->chatId);
+HXLINE(1262)		::Array< ::String > _this = ::Lambda_obj::filter( ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("iterator",ee,49,9a,93), ::Dynamic(new _hx_Closure_0(_gthis)))), ::Dynamic(new _hx_Closure_1()));
-HXDLIN(1252)		::Array< ::String > result = ::Array_obj< ::String >::__new(_this->length);
-HXDLIN(1252)		{
-HXLINE(1252)			int _g = 0;
-HXDLIN(1252)			int _g1 = _this->length;
-HXDLIN(1252)			while((_g < _g1)){
-HXLINE(1252)				_g = (_g + 1);
-HXDLIN(1252)				int i = (_g - 1);
-HXDLIN(1252)				{
-HXLINE(1252)					::String resource = ( (::String)(_hx_array_unsafe_get(_this,i)) );
-HXDLIN(1252)					::String inValue =  ::snikket::JID_obj::__alloc( HX_CTX ,jid->node,jid->domain,resource,null())->asString();
-HXDLIN(1252)					result->__unsafe_set(i,inValue);
+HXDLIN(1262)		::Array< ::String > result = ::Array_obj< ::String >::__new(_this->length);
+HXDLIN(1262)		{
+HXLINE(1262)			int _g = 0;
+HXDLIN(1262)			int _g1 = _this->length;
+HXDLIN(1262)			while((_g < _g1)){
+HXLINE(1262)				_g = (_g + 1);
+HXDLIN(1262)				int i = (_g - 1);
+HXDLIN(1262)				{
+HXLINE(1262)					::String resource = ( (::String)(_hx_array_unsafe_get(_this,i)) );
+HXDLIN(1262)					::String inValue =  ::snikket::JID_obj::__alloc( HX_CTX ,jid->node,jid->domain,resource,null())->asString();
+HXDLIN(1262)					result->__unsafe_set(i,inValue);
             				}
             			}
             		}
-HXDLIN(1252)		return result;
+HXDLIN(1262)		return result;
             	}
 
 
  ::snikket::Participant Channel_obj::getParticipantDetails(::String participantId){
-            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1257_getParticipantDetails)
-HXDLIN(1257)		if ((participantId == this->getFullJid()->asString())) {
-HXLINE(1258)			 ::snikket::Client chat = this->client;
-HXDLIN(1258)			 ::snikket::DirectChat chat1 = chat->getDirectChat(this->client->accountId(),false);
-HXLINE(1259)			::String _hx_tmp = this->client->displayName();
-HXDLIN(1259)			::String _hx_tmp1 = chat1->getPhoto();
-HXDLIN(1259)			return  ::snikket::Participant_obj::__alloc( HX_CTX ,_hx_tmp,_hx_tmp1,chat1->getPlaceholder(),true);
+            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1267_getParticipantDetails)
+HXDLIN(1267)		if ((participantId == this->getFullJid()->asString())) {
+HXLINE(1268)			 ::snikket::Client chat = this->client;
+HXDLIN(1268)			 ::snikket::DirectChat chat1 = chat->getDirectChat(this->client->accountId(),false);
+HXLINE(1269)			::String _hx_tmp = this->client->displayName();
+HXDLIN(1269)			::String _hx_tmp1 = chat1->getPhoto();
+HXDLIN(1269)			return  ::snikket::Participant_obj::__alloc( HX_CTX ,_hx_tmp,_hx_tmp1,chat1->getPlaceholder(),true);
             		}
             		else {
-HXLINE(1261)			::String nick = ::snikket::JID_obj::parse(participantId)->resource;
-HXLINE(1262)			::String placeholderUri;
-HXDLIN(1262)			if (::hx::IsNull( nick )) {
-HXLINE(1262)				placeholderUri = HX_(" ",20,00,00,00);
+HXLINE(1271)			::String nick = ::snikket::JID_obj::parse(participantId)->resource;
+HXLINE(1272)			::String placeholderUri;
+HXDLIN(1272)			if (::hx::IsNull( nick )) {
+HXLINE(1272)				placeholderUri = HX_(" ",20,00,00,00);
             			}
             			else {
-HXLINE(1262)				placeholderUri = nick.charAt(0);
+HXLINE(1272)				placeholderUri = nick.charAt(0);
             			}
-HXDLIN(1262)			::String placeholderUri1 = ::snikket::Color_obj::defaultPhoto(participantId,placeholderUri);
-HXLINE(1263)			::String tmp = nick;
-HXDLIN(1263)			::String _hx_tmp2;
-HXDLIN(1263)			if (::hx::IsNotNull( tmp )) {
-HXLINE(1263)				_hx_tmp2 = tmp;
+HXDLIN(1272)			::String placeholderUri1 = ::snikket::Color_obj::defaultPhoto(participantId,placeholderUri);
+HXLINE(1273)			::String tmp = nick;
+HXDLIN(1273)			::String _hx_tmp2;
+HXDLIN(1273)			if (::hx::IsNotNull( tmp )) {
+HXLINE(1273)				_hx_tmp2 = tmp;
             			}
             			else {
-HXLINE(1263)				_hx_tmp2 = HX_("",00,00,00,00);
+HXLINE(1273)				_hx_tmp2 = HX_("",00,00,00,00);
             			}
-HXDLIN(1263)			return  ::snikket::Participant_obj::__alloc( HX_CTX ,_hx_tmp2,null(),placeholderUri1,false);
+HXDLIN(1273)			return  ::snikket::Participant_obj::__alloc( HX_CTX ,_hx_tmp2,null(),placeholderUri1,false);
             		}
-HXLINE(1257)		return null();
+HXLINE(1267)		return null();
             	}
 
 
 void Channel_obj::getMessagesBefore(::String beforeId,::String beforeTime, ::Dynamic handler){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_1, ::snikket::Channel,_gthis,::String,beforeId, ::Dynamic,handler) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> messages){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1270_getMessagesBefore)
-HXLINE(1270)			if ((messages->length > 0)) {
-HXLINE(1271)				handler(messages);
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1280_getMessagesBefore)
+HXLINE(1280)			if ((messages->length > 0)) {
+HXLINE(1281)				handler(messages);
             			}
             			else {
             				HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis) HXARGC(2)
             				 ::snikket::ChatMessageBuilder _hx_run( ::snikket::ChatMessageBuilder builder, ::snikket::Stanza stanza){
-            					HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1276_getMessagesBefore)
-HXLINE(1277)					builder = _gthis->prepareIncomingMessage(builder,stanza);
-HXLINE(1278)					builder->syncPoint = false;
-HXLINE(1279)					return builder;
+            					HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1286_getMessagesBefore)
+HXLINE(1287)					builder = _gthis->prepareIncomingMessage(builder,stanza);
+HXLINE(1288)					builder->syncPoint = false;
+HXLINE(1289)					return builder;
             				}
             				HX_END_LOCAL_FUNC2(return)
 
-HXLINE(1273)				 ::Dynamic filter =  ::Dynamic(::hx::Anon_obj::Create(0));
-HXLINE(1274)				if (::hx::IsNotNull( beforeId )) {
-HXLINE(1274)					filter->__SetField(HX_("page",4f,da,51,4a), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1283)				 ::Dynamic filter =  ::Dynamic(::hx::Anon_obj::Create(0));
+HXLINE(1284)				if (::hx::IsNotNull( beforeId )) {
+HXLINE(1284)					filter->__SetField(HX_("page",4f,da,51,4a), ::Dynamic(::hx::Anon_obj::Create(1)
             						->setFixed(0,HX_("before",7f,54,32,9a),beforeId)),::hx::paccDynamic);
             				}
-HXLINE(1275)				 ::snikket::MessageSync sync =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,_gthis->client,_gthis->stream,filter,_gthis->chatId);
-HXLINE(1276)				sync->addContext( ::Dynamic(new _hx_Closure_0(_gthis)));
-HXLINE(1281)				_gthis->fetchFromSync(sync,handler);
+HXLINE(1285)				 ::snikket::MessageSync sync =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,_gthis->client,_gthis->stream,filter,_gthis->chatId);
+HXLINE(1286)				sync->addContext( ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE(1291)				_gthis->fetchFromSync(sync,handler);
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1268_getMessagesBefore)
-HXDLIN(1268)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1269)		::Dynamic _hx_tmp = this->persistence;
-HXDLIN(1269)		::String _hx_tmp1 = this->client->accountId();
-HXDLIN(1269)		::snikket::Persistence_obj::getMessagesBefore(_hx_tmp,_hx_tmp1,this->chatId,beforeId,beforeTime, ::Dynamic(new _hx_Closure_1(_gthis,beforeId,handler)));
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1278_getMessagesBefore)
+HXDLIN(1278)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1279)		::Dynamic _hx_tmp = this->persistence;
+HXDLIN(1279)		::String _hx_tmp1 = this->client->accountId();
+HXDLIN(1279)		::snikket::Persistence_obj::getMessagesBefore(_hx_tmp,_hx_tmp1,this->chatId,beforeId,beforeTime, ::Dynamic(new _hx_Closure_1(_gthis,beforeId,handler)));
             	}
 
 
 void Channel_obj::getMessagesAfter(::String afterId,::String afterTime, ::Dynamic handler){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_1, ::snikket::Channel,_gthis,::String,afterId, ::Dynamic,handler) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> messages){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1293_getMessagesAfter)
-HXLINE(1293)			if ((messages->length > 0)) {
-HXLINE(1294)				handler(messages);
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1303_getMessagesAfter)
+HXLINE(1303)			if ((messages->length > 0)) {
+HXLINE(1304)				handler(messages);
             			}
             			else {
             				HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis) HXARGC(2)
             				 ::snikket::ChatMessageBuilder _hx_run( ::snikket::ChatMessageBuilder builder, ::snikket::Stanza stanza){
-            					HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1299_getMessagesAfter)
-HXLINE(1300)					builder = _gthis->prepareIncomingMessage(builder,stanza);
-HXLINE(1301)					builder->syncPoint = false;
-HXLINE(1302)					return builder;
+            					HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1309_getMessagesAfter)
+HXLINE(1310)					builder = _gthis->prepareIncomingMessage(builder,stanza);
+HXLINE(1311)					builder->syncPoint = false;
+HXLINE(1312)					return builder;
             				}
             				HX_END_LOCAL_FUNC2(return)
 
-HXLINE(1296)				 ::Dynamic filter =  ::Dynamic(::hx::Anon_obj::Create(0));
-HXLINE(1297)				if (::hx::IsNotNull( afterId )) {
-HXLINE(1297)					filter->__SetField(HX_("page",4f,da,51,4a), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1306)				 ::Dynamic filter =  ::Dynamic(::hx::Anon_obj::Create(0));
+HXLINE(1307)				if (::hx::IsNotNull( afterId )) {
+HXLINE(1307)					filter->__SetField(HX_("page",4f,da,51,4a), ::Dynamic(::hx::Anon_obj::Create(1)
             						->setFixed(0,HX_("after",1c,66,a2,1d),afterId)),::hx::paccDynamic);
             				}
-HXLINE(1298)				 ::snikket::MessageSync sync =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,_gthis->client,_gthis->stream,filter,_gthis->chatId);
-HXLINE(1299)				sync->addContext( ::Dynamic(new _hx_Closure_0(_gthis)));
-HXLINE(1304)				_gthis->fetchFromSync(sync,handler);
+HXLINE(1308)				 ::snikket::MessageSync sync =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,_gthis->client,_gthis->stream,filter,_gthis->chatId);
+HXLINE(1309)				sync->addContext( ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE(1314)				_gthis->fetchFromSync(sync,handler);
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1287_getMessagesAfter)
-HXDLIN(1287)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1288)		bool _hx_tmp;
-HXDLIN(1288)		::String afterId1 = afterId;
-HXDLIN(1288)		if ((afterId1 == this->lastMessageId())) {
-HXLINE(1288)			_hx_tmp = !(this->syncing());
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1297_getMessagesAfter)
+HXDLIN(1297)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1298)		bool _hx_tmp;
+HXDLIN(1298)		::String afterId1 = afterId;
+HXDLIN(1298)		if ((afterId1 == this->lastMessageId())) {
+HXLINE(1298)			_hx_tmp = !(this->syncing());
             		}
             		else {
-HXLINE(1288)			_hx_tmp = false;
+HXLINE(1298)			_hx_tmp = false;
             		}
-HXDLIN(1288)		if (_hx_tmp) {
-HXLINE(1289)			handler(::Array_obj< ::Dynamic>::__new(0));
-HXLINE(1290)			return;
+HXDLIN(1298)		if (_hx_tmp) {
+HXLINE(1299)			handler(::Array_obj< ::Dynamic>::__new(0));
+HXLINE(1300)			return;
             		}
-HXLINE(1292)		::Dynamic _hx_tmp1 = this->persistence;
-HXDLIN(1292)		::String _hx_tmp2 = this->client->accountId();
-HXDLIN(1292)		::snikket::Persistence_obj::getMessagesAfter(_hx_tmp1,_hx_tmp2,this->chatId,afterId,afterTime, ::Dynamic(new _hx_Closure_1(_gthis,afterId,handler)));
+HXLINE(1302)		::Dynamic _hx_tmp1 = this->persistence;
+HXDLIN(1302)		::String _hx_tmp2 = this->client->accountId();
+HXDLIN(1302)		::snikket::Persistence_obj::getMessagesAfter(_hx_tmp1,_hx_tmp2,this->chatId,afterId,afterTime, ::Dynamic(new _hx_Closure_1(_gthis,afterId,handler)));
             	}
 
 
 void Channel_obj::getMessagesAround(::String aroundId,::String aroundTime, ::Dynamic handler){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::Dynamic,handler) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> messages){
-            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1312_getMessagesAround)
-HXLINE(1312)			if ((messages->length > 0)) {
-HXLINE(1313)				handler(messages);
+            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1322_getMessagesAround)
+HXLINE(1322)			if ((messages->length > 0)) {
+HXLINE(1323)				handler(messages);
             			}
             			else {
-HXLINE(1316)				handler(::Array_obj< ::Dynamic>::__new(0));
+HXLINE(1326)				handler(::Array_obj< ::Dynamic>::__new(0));
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1311_getMessagesAround)
-HXDLIN(1311)		::Dynamic _hx_tmp = this->persistence;
-HXDLIN(1311)		::String _hx_tmp1 = this->client->accountId();
-HXDLIN(1311)		::snikket::Persistence_obj::getMessagesAround(_hx_tmp,_hx_tmp1,this->chatId,aroundId,aroundTime, ::Dynamic(new _hx_Closure_0(handler)));
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1321_getMessagesAround)
+HXDLIN(1321)		::Dynamic _hx_tmp = this->persistence;
+HXDLIN(1321)		::String _hx_tmp1 = this->client->accountId();
+HXDLIN(1321)		::snikket::Persistence_obj::getMessagesAround(_hx_tmp,_hx_tmp1,this->chatId,aroundId,aroundTime, ::Dynamic(new _hx_Closure_0(handler)));
             	}
 
 
  ::snikket::ChatMessageBuilder Channel_obj::prepareIncomingMessage( ::snikket::ChatMessageBuilder message, ::snikket::Stanza stanza){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1322_prepareIncomingMessage)
-HXLINE(1323)		message->syncPoint = !(this->syncing());
-HXLINE(1324)		if ((message->type == 0)) {
-HXLINE(1324)			message->type = 3;
-            		}
-HXLINE(1325)		message->senderId = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) );
-HXLINE(1326)		::String _hx_tmp = message->get_senderId();
-HXDLIN(1326)		if ((_hx_tmp == this->getFullJid()->asString())) {
-HXLINE(1327)			message->recipients = message->replyTo;
-HXLINE(1328)			message->direction = 1;
-            		}
-HXLINE(1330)		return message;
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1332_prepareIncomingMessage)
+HXLINE(1333)		message->syncPoint = !(this->syncing());
+HXLINE(1334)		if ((message->type == 0)) {
+HXLINE(1334)			message->type = 3;
+            		}
+HXLINE(1335)		message->senderId = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) );
+HXLINE(1336)		::String _hx_tmp = message->get_senderId();
+HXDLIN(1336)		if ((_hx_tmp == this->getFullJid()->asString())) {
+HXLINE(1337)			message->recipients = message->replyTo;
+HXLINE(1338)			message->direction = 1;
+            		}
+HXLINE(1340)		return message;
             	}
 
 
  ::snikket::ChatMessageBuilder Channel_obj::prepareOutgoingMessage( ::snikket::ChatMessageBuilder message){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1333_prepareOutgoingMessage)
-HXLINE(1334)		message->type = 2;
-HXLINE(1335)		::String tmp = message->timestamp;
-HXDLIN(1335)		::String _hx_tmp;
-HXDLIN(1335)		if (::hx::IsNotNull( tmp )) {
-HXLINE(1335)			_hx_tmp = tmp;
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1343_prepareOutgoingMessage)
+HXLINE(1344)		message->type = 2;
+HXLINE(1345)		::String tmp = message->timestamp;
+HXDLIN(1345)		::String _hx_tmp;
+HXDLIN(1345)		if (::hx::IsNotNull( tmp )) {
+HXLINE(1345)			_hx_tmp = tmp;
             		}
             		else {
-HXLINE(1335)			_hx_tmp = ::snikket::Date_obj::format(::Date_obj::now());
-            		}
-HXDLIN(1335)		message->timestamp = _hx_tmp;
-HXLINE(1336)		message->direction = 1;
-HXLINE(1337)		message->from = this->client->jid;
-HXLINE(1338)		message->sender = this->getFullJid();
-HXLINE(1339)		message->replyTo = ::Array_obj< ::Dynamic>::__new(1)->init(0,message->sender);
-HXLINE(1340)		message->to = ::snikket::JID_obj::parse(this->chatId);
-HXLINE(1341)		message->recipients = ::Array_obj< ::Dynamic>::__new(1)->init(0,message->to);
-HXLINE(1342)		return message;
+HXLINE(1345)			_hx_tmp = ::snikket::Date_obj::format(::Date_obj::now());
+            		}
+HXDLIN(1345)		message->timestamp = _hx_tmp;
+HXLINE(1346)		message->direction = 1;
+HXLINE(1347)		message->from = this->client->jid;
+HXLINE(1348)		message->sender = this->getFullJid();
+HXLINE(1349)		message->replyTo = ::Array_obj< ::Dynamic>::__new(1)->init(0,message->sender);
+HXLINE(1350)		message->to = ::snikket::JID_obj::parse(this->chatId);
+HXLINE(1351)		message->recipients = ::Array_obj< ::Dynamic>::__new(1)->init(0,message->to);
+HXLINE(1352)		return message;
             	}
 
 
@@ -1142,131 +1169,131 @@ HX_DEFINE_DYNAMIC_FUNC1(Channel_obj,prepareOutgoingMessage,return )
 void Channel_obj::correctMessage(::String localId, ::snikket::ChatMessageBuilder message){
             		HX_BEGIN_LOCAL_FUNC_S4(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis,::Array< ::Dynamic>,message1,::String,localId,::String,toSendId) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> corrected){
-            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1351_correctMessage)
-HXLINE(1352)			::Array< ::Dynamic> _hx_tmp;
-HXDLIN(1352)			 ::snikket::ChatMessage tmp = corrected->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions->__get(0).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN(1352)			::String _hx_tmp1;
-HXDLIN(1352)			if (::hx::IsNotNull( tmp )) {
-HXLINE(1352)				_hx_tmp1 = tmp->localId;
+            			HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1361_correctMessage)
+HXLINE(1362)			::Array< ::Dynamic> _hx_tmp;
+HXDLIN(1362)			 ::snikket::ChatMessage tmp = corrected->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions->__get(0).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN(1362)			::String _hx_tmp1;
+HXDLIN(1362)			if (::hx::IsNotNull( tmp )) {
+HXLINE(1362)				_hx_tmp1 = tmp->localId;
             			}
             			else {
-HXLINE(1352)				_hx_tmp1 = null();
+HXLINE(1362)				_hx_tmp1 = null();
             			}
-HXDLIN(1352)			if ((_hx_tmp1 == localId)) {
-HXLINE(1352)				_hx_tmp = corrected->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions;
+HXDLIN(1362)			if ((_hx_tmp1 == localId)) {
+HXLINE(1362)				_hx_tmp = corrected->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions;
             			}
             			else {
-HXLINE(1352)				_hx_tmp = ::Array_obj< ::Dynamic>::__new(1)->init(0,message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build());
+HXLINE(1362)				_hx_tmp = ::Array_obj< ::Dynamic>::__new(1)->init(0,message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build());
             			}
-HXDLIN(1352)			message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->versions = _hx_tmp;
-HXLINE(1353)			message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId = toSendId;
-HXLINE(1354)			 ::snikket::Client _gthis1 = _gthis->client;
-HXDLIN(1354)			_gthis1->sendStanza(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()->asStanza());
-HXLINE(1355)			_gthis->client->notifyMessageHandlers(corrected->__get(0).StaticCast<  ::snikket::ChatMessage >(),1);
-HXLINE(1356)			 ::snikket::ChatMessage tmp1 = _gthis->lastMessage;
-HXDLIN(1356)			::String _hx_tmp2;
-HXDLIN(1356)			if (::hx::IsNotNull( tmp1 )) {
-HXLINE(1356)				_hx_tmp2 = tmp1->localId;
+HXDLIN(1362)			message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->versions = _hx_tmp;
+HXLINE(1363)			message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId = toSendId;
+HXLINE(1364)			 ::snikket::Client _gthis1 = _gthis->client;
+HXDLIN(1364)			_gthis1->sendStanza(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()->asStanza());
+HXLINE(1365)			_gthis->client->notifyMessageHandlers(corrected->__get(0).StaticCast<  ::snikket::ChatMessage >(),1);
+HXLINE(1366)			 ::snikket::ChatMessage tmp1 = _gthis->lastMessage;
+HXDLIN(1366)			::String _hx_tmp2;
+HXDLIN(1366)			if (::hx::IsNotNull( tmp1 )) {
+HXLINE(1366)				_hx_tmp2 = tmp1->localId;
             			}
             			else {
-HXLINE(1356)				_hx_tmp2 = null();
+HXLINE(1366)				_hx_tmp2 = null();
             			}
-HXDLIN(1356)			if ((localId == _hx_tmp2)) {
-HXLINE(1357)				_gthis->setLastMessage(corrected->__get(0).StaticCast<  ::snikket::ChatMessage >());
-HXLINE(1358)				_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
+HXDLIN(1366)			if ((localId == _hx_tmp2)) {
+HXLINE(1367)				_gthis->setLastMessage(corrected->__get(0).StaticCast<  ::snikket::ChatMessage >());
+HXLINE(1368)				_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1346_correctMessage)
-HXDLIN(1346)		::Array< ::Dynamic> message1 = ::Array_obj< ::Dynamic>::__new(1)->init(0,message);
-HXDLIN(1346)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1347)		::String toSendId = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId;
-HXLINE(1348)		message1[0] = this->prepareOutgoingMessage(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >());
-HXLINE(1349)		 ::snikket::ChatMessage _hx_tmp = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build();
-HXDLIN(1349)		message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->versions = ::Array_obj< ::Dynamic>::__new(1)->init(0,_hx_tmp);
-HXLINE(1350)		message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId = localId;
-HXLINE(1351)		 ::snikket::Client _hx_tmp1 = this->client;
-HXDLIN(1351)		_hx_tmp1->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()), ::Dynamic(new _hx_Closure_0(_gthis,message1,localId,toSendId)));
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1356_correctMessage)
+HXDLIN(1356)		::Array< ::Dynamic> message1 = ::Array_obj< ::Dynamic>::__new(1)->init(0,message);
+HXDLIN(1356)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1357)		::String toSendId = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId;
+HXLINE(1358)		message1[0] = this->prepareOutgoingMessage(message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >());
+HXLINE(1359)		 ::snikket::ChatMessage _hx_tmp = message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build();
+HXDLIN(1359)		message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->versions = ::Array_obj< ::Dynamic>::__new(1)->init(0,_hx_tmp);
+HXLINE(1360)		message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->localId = localId;
+HXLINE(1361)		 ::snikket::Client _hx_tmp1 = this->client;
+HXDLIN(1361)		_hx_tmp1->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,message1->__get(0).StaticCast<  ::snikket::ChatMessageBuilder >()->build()), ::Dynamic(new _hx_Closure_0(_gthis,message1,localId,toSendId)));
             	}
 
 
 void Channel_obj::sendMessage( ::snikket::ChatMessageBuilder message){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1364_sendMessage)
-HXDLIN(1364)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1365)		if (::hx::IsNotNull( this->typingTimer )) {
-HXLINE(1365)			this->typingTimer->stop();
-            		}
-HXLINE(1366)		this->client->chatActivity(::hx::ObjectPtr<OBJ_>(this),null());
-HXLINE(1367)		message = this->prepareOutgoingMessage(message);
-HXLINE(1368)		 ::snikket::Stanza stanza = message->build()->asStanza();
-HXLINE(1370)		{
-HXLINE(1370)			 ::Dynamic this1 = stanza->attr;
-HXDLIN(1370)			::String value = this->getFullJid()->asString();
-HXDLIN(1370)			::Reflect_obj::setField(this1,HX_("from",6a,a5,c2,43),value);
-            		}
-HXLINE(1371)		 ::snikket::MessageStanza fromStanza = ::snikket::Message_obj::fromStanza(stanza,this->client->jid,null())->parsed;
-HXLINE(1372)		{
-HXLINE(1372)			 ::Dynamic this2 = stanza->attr;
-HXDLIN(1372)			::String value1 = this->client->jid->asString();
-HXDLIN(1372)			::Reflect_obj::setField(this2,HX_("from",6a,a5,c2,43),value1);
-            		}
-HXLINE(1373)		switch((int)(fromStanza->_hx_getIndex())){
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1374_sendMessage)
+HXDLIN(1374)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1375)		if (::hx::IsNotNull( this->typingTimer )) {
+HXLINE(1375)			this->typingTimer->stop();
+            		}
+HXLINE(1376)		this->client->chatActivity(::hx::ObjectPtr<OBJ_>(this),null());
+HXLINE(1377)		message = this->prepareOutgoingMessage(message);
+HXLINE(1378)		 ::snikket::Stanza stanza = message->build()->asStanza();
+HXLINE(1380)		{
+HXLINE(1380)			 ::Dynamic this1 = stanza->attr;
+HXDLIN(1380)			::String value = this->getFullJid()->asString();
+HXDLIN(1380)			::Reflect_obj::setField(this1,HX_("from",6a,a5,c2,43),value);
+            		}
+HXLINE(1381)		 ::snikket::MessageStanza fromStanza = ::snikket::Message_obj::fromStanza(stanza,this->client->jid,null())->parsed;
+HXLINE(1382)		{
+HXLINE(1382)			 ::Dynamic this2 = stanza->attr;
+HXDLIN(1382)			::String value1 = this->client->jid->asString();
+HXDLIN(1382)			::Reflect_obj::setField(this2,HX_("from",6a,a5,c2,43),value1);
+            		}
+HXLINE(1383)		switch((int)(fromStanza->_hx_getIndex())){
             			case (int)1: {
-HXLINE(1374)				 ::snikket::ChatMessage _g = fromStanza->_hx_getObject(0).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN(1374)				{
+HXLINE(1384)				 ::snikket::ChatMessage _g = fromStanza->_hx_getObject(0).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN(1384)				{
             					HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis, ::snikket::Stanza,stanza) HXARGC(1)
             					void _hx_run(::Array< ::Dynamic> stored){
-            						HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1380_sendMessage)
-HXLINE(1381)						_gthis->client->sendStanza(stanza);
-HXLINE(1382)						_gthis->setLastMessage(stored->__get(0).StaticCast<  ::snikket::ChatMessage >());
-HXLINE(1383)						int _hx_tmp;
-HXDLIN(1383)						if ((stored->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions->length > 1)) {
-HXLINE(1383)							_hx_tmp = 1;
+            						HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1390_sendMessage)
+HXLINE(1391)						_gthis->client->sendStanza(stanza);
+HXLINE(1392)						_gthis->setLastMessage(stored->__get(0).StaticCast<  ::snikket::ChatMessage >());
+HXLINE(1393)						int _hx_tmp;
+HXDLIN(1393)						if ((stored->__get(0).StaticCast<  ::snikket::ChatMessage >()->versions->length > 1)) {
+HXLINE(1393)							_hx_tmp = 1;
             						}
             						else {
-HXLINE(1383)							_hx_tmp = 0;
+HXLINE(1393)							_hx_tmp = 0;
             						}
-HXDLIN(1383)						_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),_hx_tmp);
-HXLINE(1384)						_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
+HXDLIN(1393)						_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),_hx_tmp);
+HXLINE(1394)						_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
             					}
             					HX_END_LOCAL_FUNC1((void))
 
-HXLINE(1375)					if (::hx::IsNotNull( this->isActive )) {
-HXLINE(1376)						this->isActive = true;
-HXLINE(1377)						this->activeThread = message->threadId;
-HXLINE(1378)						stanza->tag(HX_("active",c6,41,46,16), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1385)					if (::hx::IsNotNull( this->isActive )) {
+HXLINE(1386)						this->isActive = true;
+HXLINE(1387)						this->activeThread = message->threadId;
+HXLINE(1388)						stanza->tag(HX_("active",c6,41,46,16), ::Dynamic(::hx::Anon_obj::Create(1)
             							->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("http://jabber.org/protocol/chatstates",8e,6d,41,6d))))->up();
             					}
-HXLINE(1380)					 ::snikket::Client _hx_tmp = this->client;
-HXDLIN(1380)					_hx_tmp->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,message->build()), ::Dynamic(new _hx_Closure_0(_gthis,stanza)));
+HXLINE(1390)					 ::snikket::Client _hx_tmp = this->client;
+HXDLIN(1390)					_hx_tmp->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,message->build()), ::Dynamic(new _hx_Closure_0(_gthis,stanza)));
             				}
             			}
             			break;
             			case (int)3: {
             				HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_1, ::snikket::Channel,_gthis, ::snikket::Stanza,stanza) HXARGC(1)
             				void _hx_run( ::snikket::ChatMessage stored){
-            					HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1387_sendMessage)
-HXLINE(1388)					_gthis->client->sendStanza(stanza);
-HXLINE(1389)					if (::hx::IsNotNull( stored )) {
-HXLINE(1389)						_gthis->client->notifyMessageHandlers(stored,2);
+            					HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1397_sendMessage)
+HXLINE(1398)					_gthis->client->sendStanza(stanza);
+HXLINE(1399)					if (::hx::IsNotNull( stored )) {
+HXLINE(1399)						_gthis->client->notifyMessageHandlers(stored,2);
             					}
             				}
             				HX_END_LOCAL_FUNC1((void))
 
-HXLINE(1386)				 ::snikket::ReactionUpdate update = fromStanza->_hx_getObject(0).StaticCast<  ::snikket::ReactionUpdate >();
-HXLINE(1387)				::Dynamic _hx_tmp1 = this->persistence;
-HXDLIN(1387)				::snikket::Persistence_obj::storeReaction(_hx_tmp1,this->client->accountId(),update, ::Dynamic(new _hx_Closure_1(_gthis,stanza)));
+HXLINE(1396)				 ::snikket::ReactionUpdate update = fromStanza->_hx_getObject(0).StaticCast<  ::snikket::ReactionUpdate >();
+HXLINE(1397)				::Dynamic _hx_tmp1 = this->persistence;
+HXDLIN(1397)				::snikket::Persistence_obj::storeReaction(_hx_tmp1,this->client->accountId(),update, ::Dynamic(new _hx_Closure_1(_gthis,stanza)));
             			}
             			break;
             			default:{
-HXLINE(1392)				::haxe::Log_obj::trace(HX_("Invalid message",7e,ab,89,95), ::Dynamic(::hx::Anon_obj::Create(5)
+HXLINE(1402)				::haxe::Log_obj::trace(HX_("Invalid message",7e,ab,89,95), ::Dynamic(::hx::Anon_obj::Create(5)
             					->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.Channel",b2,3f,68,db))
             					->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,fromStanza))
             					->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("sendMessage",5f,89,1d,24))
             					->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/Chat.hx",f4,6b,61,18))
-            					->setFixed(4,HX_("lineNumber",dd,81,22,76),1392)));
-HXLINE(1393)				HX_STACK_DO_THROW(HX_("Trying to send invalid message.",dc,74,a0,91));
+            					->setFixed(4,HX_("lineNumber",dd,81,22,76),1402)));
+HXLINE(1403)				HX_STACK_DO_THROW(HX_("Trying to send invalid message.",dc,74,a0,91));
             			}
             		}
             	}
@@ -1275,143 +1302,143 @@ HXLINE(1393)				HX_STACK_DO_THROW(HX_("Trying to send invalid message.",dc,74,a0
 void Channel_obj::removeReaction( ::snikket::ChatMessage m, ::snikket::Reaction reaction){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_1, ::snikket::Channel,_gthis, ::snikket::ReactionUpdate,update4) HXARGC(1)
             		void _hx_run( ::snikket::ChatMessage stored){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1418_removeReaction)
-HXLINE(1419)			 ::snikket::Stanza stanza = update4->asStanza();
-HXLINE(1420)			{
-HXLINE(1420)				::String value = _gthis->chatId;
-HXDLIN(1420)				::Reflect_obj::setField(stanza->attr,HX_("to",7b,65,00,00),value);
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1428_removeReaction)
+HXLINE(1429)			 ::snikket::Stanza stanza = update4->asStanza();
+HXLINE(1430)			{
+HXLINE(1430)				::String value = _gthis->chatId;
+HXDLIN(1430)				::Reflect_obj::setField(stanza->attr,HX_("to",7b,65,00,00),value);
             			}
-HXLINE(1421)			_gthis->client->sendStanza(stanza);
-HXLINE(1422)			if (::hx::IsNotNull( stored )) {
-HXLINE(1422)				_gthis->client->notifyMessageHandlers(stored,2);
+HXLINE(1431)			_gthis->client->sendStanza(stanza);
+HXLINE(1432)			if (::hx::IsNotNull( stored )) {
+HXLINE(1432)				_gthis->client->notifyMessageHandlers(stored,2);
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1398_removeReaction)
-HXDLIN(1398)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1399)		if (::Std_obj::isOfType(reaction,::hx::ClassOf< ::snikket::CustomEmojiReaction >())) {
-HXLINE(1400)			if (::hx::IsNull( reaction->envelopeId )) {
-HXLINE(1400)				HX_STACK_DO_THROW(HX_("Cannot remove custom emoji reaction without envelopeId",90,e6,80,fb));
+            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1408_removeReaction)
+HXDLIN(1408)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1409)		if (::Std_obj::isOfType(reaction,::hx::ClassOf< ::snikket::CustomEmojiReaction >())) {
+HXLINE(1410)			if (::hx::IsNull( reaction->envelopeId )) {
+HXLINE(1410)				HX_STACK_DO_THROW(HX_("Cannot remove custom emoji reaction without envelopeId",90,e6,80,fb));
             			}
-HXLINE(1401)			 ::snikket::ChatMessageBuilder correct = m->reply();
-HXLINE(1402)			correct->localId = ::snikket::ID_obj::_hx_long();
-HXLINE(1403)			correct->setHtml(HX_("",00,00,00,00));
-HXLINE(1404)			correct->text = null();
-HXLINE(1405)			this->correctMessage(reaction->envelopeId,correct);
-HXLINE(1406)			return;
-            		}
-HXLINE(1410)		::Array< ::Dynamic> reactions = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1411)		{
-HXLINE(1411)			::Dynamic map = m->reactions;
-HXDLIN(1411)			::Dynamic _g_map = map;
-HXDLIN(1411)			 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
-HXDLIN(1411)			while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE(1411)				::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
-HXDLIN(1411)				::Array< ::Dynamic> _g_value = ( (::Array< ::Dynamic>)(::haxe::IMap_obj::get(_g_map,key)) );
-HXDLIN(1411)				::String _g_key = key;
-HXDLIN(1411)				::String areaction = _g_key;
-HXDLIN(1411)				::Array< ::Dynamic> reacts = _g_value;
-HXLINE(1412)				if ((areaction != reaction->key)) {
+HXLINE(1411)			 ::snikket::ChatMessageBuilder correct = m->reply();
+HXLINE(1412)			correct->localId = ::snikket::ID_obj::_hx_long();
+HXLINE(1413)			correct->setHtml(HX_("",00,00,00,00));
+HXLINE(1414)			correct->text = null();
+HXLINE(1415)			this->correctMessage(reaction->envelopeId,correct);
+HXLINE(1416)			return;
+            		}
+HXLINE(1420)		::Array< ::Dynamic> reactions = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1421)		{
+HXLINE(1421)			::Dynamic map = m->reactions;
+HXDLIN(1421)			::Dynamic _g_map = map;
+HXDLIN(1421)			 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
+HXDLIN(1421)			while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE(1421)				::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
+HXDLIN(1421)				::Array< ::Dynamic> _g_value = ( (::Array< ::Dynamic>)(::haxe::IMap_obj::get(_g_map,key)) );
+HXDLIN(1421)				::String _g_key = key;
+HXDLIN(1421)				::String areaction = _g_key;
+HXDLIN(1421)				::Array< ::Dynamic> reacts = _g_value;
+HXLINE(1422)				if ((areaction != reaction->key)) {
             					HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis) HXARGC(1)
             					bool _hx_run( ::snikket::Reaction r){
-            						HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1413_removeReaction)
-HXLINE(1413)						::String r1 = r->senderId;
-HXDLIN(1413)						return (r1 == _gthis->getFullJid()->asString());
+            						HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1423_removeReaction)
+HXLINE(1423)						::String r1 = r->senderId;
+HXDLIN(1423)						return (r1 == _gthis->getFullJid()->asString());
             					}
             					HX_END_LOCAL_FUNC1(return)
 
-HXLINE(1413)					 ::snikket::Reaction react = ( ( ::snikket::Reaction)(::Lambda_obj::find(reacts, ::Dynamic(new _hx_Closure_0(_gthis)))) );
-HXLINE(1414)					bool _hx_tmp;
-HXDLIN(1414)					if (::hx::IsNotNull( react )) {
-HXLINE(1414)						_hx_tmp = !(::Std_obj::isOfType(react,::hx::ClassOf< ::snikket::CustomEmojiReaction >()));
+HXLINE(1423)					 ::snikket::Reaction react = ( ( ::snikket::Reaction)(::Lambda_obj::find(reacts, ::Dynamic(new _hx_Closure_0(_gthis)))) );
+HXLINE(1424)					bool _hx_tmp;
+HXDLIN(1424)					if (::hx::IsNotNull( react )) {
+HXLINE(1424)						_hx_tmp = !(::Std_obj::isOfType(react,::hx::ClassOf< ::snikket::CustomEmojiReaction >()));
             					}
             					else {
-HXLINE(1414)						_hx_tmp = false;
+HXLINE(1424)						_hx_tmp = false;
             					}
-HXDLIN(1414)					if (_hx_tmp) {
-HXLINE(1414)						reactions->push(react);
+HXDLIN(1424)					if (_hx_tmp) {
+HXLINE(1424)						reactions->push(react);
             					}
             				}
             			}
             		}
-HXLINE(1417)		::String update = ::snikket::ID_obj::_hx_long();
-HXDLIN(1417)		::String m1 = m->serverId;
-HXDLIN(1417)		::String update1 = m->chatId();
-HXDLIN(1417)		::String update2 = m->chatId();
-HXDLIN(1417)		::String update3 = this->getFullJid()->asString();
-HXDLIN(1417)		 ::snikket::ReactionUpdate update4 =  ::snikket::ReactionUpdate_obj::__alloc( HX_CTX ,update,m1,update1,null(),update2,update3,::snikket::Date_obj::format(::Date_obj::now()),reactions,0);
-HXLINE(1418)		::Dynamic _hx_tmp1 = this->persistence;
-HXDLIN(1418)		::String _hx_tmp2 = this->client->accountId();
-HXDLIN(1418)		::snikket::Persistence_obj::storeReaction(_hx_tmp1,_hx_tmp2,update4, ::Dynamic(new _hx_Closure_1(_gthis,update4)));
+HXLINE(1427)		::String update = ::snikket::ID_obj::_hx_long();
+HXDLIN(1427)		::String m1 = m->serverId;
+HXDLIN(1427)		::String update1 = m->chatId();
+HXDLIN(1427)		::String update2 = m->chatId();
+HXDLIN(1427)		::String update3 = this->getFullJid()->asString();
+HXDLIN(1427)		 ::snikket::ReactionUpdate update4 =  ::snikket::ReactionUpdate_obj::__alloc( HX_CTX ,update,m1,update1,null(),update2,update3,::snikket::Date_obj::format(::Date_obj::now()),reactions,0);
+HXLINE(1428)		::Dynamic _hx_tmp1 = this->persistence;
+HXDLIN(1428)		::String _hx_tmp2 = this->client->accountId();
+HXDLIN(1428)		::snikket::Persistence_obj::storeReaction(_hx_tmp1,_hx_tmp2,update4, ::Dynamic(new _hx_Closure_1(_gthis,update4)));
             	}
 
 
 ::String Channel_obj::lastMessageId(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1428_lastMessageId)
-HXDLIN(1428)		 ::snikket::ChatMessage tmp = this->lastMessage;
-HXDLIN(1428)		if (::hx::IsNotNull( tmp )) {
-HXDLIN(1428)			return tmp->serverId;
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1438_lastMessageId)
+HXDLIN(1438)		 ::snikket::ChatMessage tmp = this->lastMessage;
+HXDLIN(1438)		if (::hx::IsNotNull( tmp )) {
+HXDLIN(1438)			return tmp->serverId;
             		}
             		else {
-HXDLIN(1428)			return null();
+HXDLIN(1438)			return null();
             		}
-HXDLIN(1428)		return null();
+HXDLIN(1438)		return null();
             	}
 
 
 void Channel_obj::markReadUpTo( ::snikket::ChatMessage message){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::ChatMessage,message, ::snikket::Channel,_gthis) HXARGC(0)
             		void _hx_run(){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1433_markReadUpTo)
-HXLINE(1434)			::String _gthis1 = _gthis->chatId;
-HXDLIN(1434)			::String stanza = ::snikket::ID_obj::_hx_long();
-HXDLIN(1434)			 ::snikket::Stanza stanza1 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(3)
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1443_markReadUpTo)
+HXLINE(1444)			::String _gthis1 = _gthis->chatId;
+HXDLIN(1444)			::String stanza = ::snikket::ID_obj::_hx_long();
+HXDLIN(1444)			 ::snikket::Stanza stanza1 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(3)
             				->setFixed(0,HX_("id",db,5b,00,00),stanza)
             				->setFixed(1,HX_("to",7b,65,00,00),_gthis1)
             				->setFixed(2,HX_("type",ba,f2,08,4d),HX_("groupchat",97,1d,c8,e5))))->tag(HX_("displayed",21,17,db,c1), ::Dynamic(::hx::Anon_obj::Create(2)
             				->setFixed(0,HX_("id",db,5b,00,00),message->serverId)
             				->setFixed(1,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:chat-markers:0",96,b8,66,e7))))->up();
-HXLINE(1436)			if (::hx::IsNotNull( message->threadId )) {
-HXLINE(1437)				stanza1->textTag(HX_("thread",ca,7a,b9,8e),message->threadId,null());
+HXLINE(1446)			if (::hx::IsNotNull( message->threadId )) {
+HXLINE(1447)				stanza1->textTag(HX_("thread",ca,7a,b9,8e),message->threadId,null());
             			}
-HXLINE(1439)			_gthis->client->sendStanza(stanza1);
-HXLINE(1441)			_gthis->publishMds();
-HXLINE(1442)			_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
+HXLINE(1449)			_gthis->client->sendStanza(stanza1);
+HXLINE(1451)			_gthis->publishMds();
+HXLINE(1452)			_gthis->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,_gthis));
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1432_markReadUpTo)
-HXDLIN(1432)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1433)		this->markReadUpToMessage(message, ::Dynamic(new _hx_Closure_0(message,_gthis)));
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1442_markReadUpTo)
+HXDLIN(1442)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1443)		this->markReadUpToMessage(message, ::Dynamic(new _hx_Closure_0(message,_gthis)));
             	}
 
 
 void Channel_obj::bookmark(){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_1, ::snikket::Channel,_gthis) HXARGC(1)
             		void _hx_run( ::snikket::Stanza response){
-            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1468_bookmark)
-HXLINE(1468)			if ((( (::String)(::Reflect_obj::field(response->attr,HX_("type",ba,f2,08,4d))) ) == HX_("error",c8,cb,29,73))) {
-HXLINE(1469)				 ::snikket::Stanza tmp = response->getChild(HX_("error",c8,cb,29,73),null());
-HXDLIN(1469)				 ::snikket::Stanza preconditionError;
-HXDLIN(1469)				if (::hx::IsNotNull( tmp )) {
-HXLINE(1469)					preconditionError = tmp->getChild(HX_("precondition-not-met",2d,db,78,db),HX_("http://jabber.org/protocol/pubsub#errors",97,74,3a,a8));
+            			HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1478_bookmark)
+HXLINE(1478)			if ((( (::String)(::Reflect_obj::field(response->attr,HX_("type",ba,f2,08,4d))) ) == HX_("error",c8,cb,29,73))) {
+HXLINE(1479)				 ::snikket::Stanza tmp = response->getChild(HX_("error",c8,cb,29,73),null());
+HXDLIN(1479)				 ::snikket::Stanza preconditionError;
+HXDLIN(1479)				if (::hx::IsNotNull( tmp )) {
+HXLINE(1479)					preconditionError = tmp->getChild(HX_("precondition-not-met",2d,db,78,db),HX_("http://jabber.org/protocol/pubsub#errors",97,74,3a,a8));
             				}
             				else {
-HXLINE(1469)					preconditionError = null();
+HXLINE(1479)					preconditionError = null();
             				}
-HXLINE(1470)				if (::hx::IsNotNull( preconditionError )) {
+HXLINE(1480)				if (::hx::IsNotNull( preconditionError )) {
             					HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,_gthis) HXARGC(1)
             					void _hx_run( ::snikket::Stanza response){
-            						HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1486_bookmark)
-HXLINE(1486)						if ((( (::String)(::Reflect_obj::field(response->attr,HX_("type",ba,f2,08,4d))) ) == HX_("result",dd,68,84,08))) {
-HXLINE(1487)							_gthis->bookmark();
+            						HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1496_bookmark)
+HXLINE(1496)						if ((( (::String)(::Reflect_obj::field(response->attr,HX_("type",ba,f2,08,4d))) ) == HX_("result",dd,68,84,08))) {
+HXLINE(1497)							_gthis->bookmark();
             						}
             					}
             					HX_END_LOCAL_FUNC1((void))
 
-HXLINE(1472)					 ::snikket::GenericStream _gthis1 = _gthis->stream;
-HXDLIN(1472)					_gthis1->sendIq( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1482)					 ::snikket::GenericStream _gthis1 = _gthis->stream;
+HXDLIN(1482)					_gthis1->sendIq( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(1)
             						->setFixed(0,HX_("type",ba,f2,08,4d),HX_("set",a2,9b,57,00))))->tag(HX_("pubsub",e3,da,f8,66), ::Dynamic(::hx::Anon_obj::Create(1)
             						->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("http://jabber.org/protocol/pubsub#owner",c7,28,a3,08))))->tag(HX_("configure",e6,f9,5b,c0), ::Dynamic(::hx::Anon_obj::Create(1)
             						->setFixed(0,HX_("node",02,0a,0a,49),HX_("urn:xmpp:bookmarks:1",58,3c,53,7d))))->tag(HX_("x",78,00,00,00), ::Dynamic(::hx::Anon_obj::Create(2)
@@ -1430,28 +1457,28 @@ HXDLIN(1472)					_gthis1->sendIq( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("i
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1447_bookmark)
-HXDLIN(1447)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1448)		 ::snikket::GenericStream _hx_tmp = this->stream;
-HXLINE(1449)		 ::snikket::Stanza _hx_tmp1 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1457_bookmark)
+HXDLIN(1457)		 ::snikket::Channel _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1458)		 ::snikket::GenericStream _hx_tmp = this->stream;
+HXLINE(1459)		 ::snikket::Stanza _hx_tmp1 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("type",ba,f2,08,4d),HX_("set",a2,9b,57,00))))->tag(HX_("pubsub",e3,da,f8,66), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("http://jabber.org/protocol/pubsub",57,94,3c,f2))))->tag(HX_("publish",8f,21,1d,ae), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("node",02,0a,0a,49),HX_("urn:xmpp:bookmarks:1",58,3c,53,7d))))->tag(HX_("item",13,c5,bf,45), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("id",db,5b,00,00),this->chatId)));
-HXLINE(1453)		::String _hx_tmp2 = this->getDisplayName();
-HXDLIN(1453)		::String _hx_tmp3;
-HXDLIN(1453)		if ((this->uiState == 2)) {
-HXLINE(1453)			_hx_tmp3 = HX_("false",a3,35,4f,fb);
+HXLINE(1463)		::String _hx_tmp2 = this->getDisplayName();
+HXDLIN(1463)		::String _hx_tmp3;
+HXDLIN(1463)		if ((this->uiState == 2)) {
+HXLINE(1463)			_hx_tmp3 = HX_("false",a3,35,4f,fb);
             		}
             		else {
-HXLINE(1453)			_hx_tmp3 = HX_("true",4e,a7,03,4d);
+HXLINE(1463)			_hx_tmp3 = HX_("true",4e,a7,03,4d);
             		}
-HXLINE(1449)		 ::snikket::Stanza _hx_tmp4 = _hx_tmp1->tag(HX_("conference",1c,2b,83,41), ::Dynamic(::hx::Anon_obj::Create(3)
+HXLINE(1459)		 ::snikket::Stanza _hx_tmp4 = _hx_tmp1->tag(HX_("conference",1c,2b,83,41), ::Dynamic(::hx::Anon_obj::Create(3)
             			->setFixed(0,HX_("autojoin",d9,f6,b1,3e),_hx_tmp3)
             			->setFixed(1,HX_("name",4b,72,ff,48),_hx_tmp2)
             			->setFixed(2,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:bookmarks:1",58,3c,53,7d))));
-HXLINE(1454)		::String _hx_tmp5 = this->client->displayName();
-HXLINE(1448)		_hx_tmp->sendIq(_hx_tmp4->textTag(HX_("nick",a3,7b,05,49),_hx_tmp5,null())->addChild(this->extensions)->up()->up()->tag(HX_("publish-options",60,0b,5c,74),null())->tag(HX_("x",78,00,00,00), ::Dynamic(::hx::Anon_obj::Create(2)
+HXLINE(1464)		::String _hx_tmp5 = this->client->displayName();
+HXLINE(1458)		_hx_tmp->sendIq(_hx_tmp4->textTag(HX_("nick",a3,7b,05,49),_hx_tmp5,null())->addChild(this->extensions)->up()->up()->tag(HX_("publish-options",60,0b,5c,74),null())->tag(HX_("x",78,00,00,00), ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("type",ba,f2,08,4d),HX_("submit",18,58,06,9a))
             			->setFixed(1,HX_("xmlns",dc,31,74,60),HX_("jabber:x:data",c2,e1,e9,7c))))->tag(HX_("field",ba,94,93,00), ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("var",e7,de,59,00),HX_("FORM_TYPE",d5,96,c9,5a))
@@ -1466,34 +1493,34 @@ HXLINE(1448)		_hx_tmp->sendIq(_hx_tmp4->textTag(HX_("nick",a3,7b,05,49),_hx_tmp5
 
 
 void Channel_obj::sendChatState(::String state,::String threadId){
-            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1497_sendChatState)
-HXLINE(1499)		::String stanza = ::snikket::ID_obj::_hx_long();
-HXLINE(1501)		::String stanza1 = this->client->jid->asString();
-HXLINE(1498)		 ::snikket::Stanza stanza2 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(4)
+            	HX_GC_STACKFRAME(&_hx_pos_5e4df8d46126c981_1507_sendChatState)
+HXLINE(1509)		::String stanza = ::snikket::ID_obj::_hx_long();
+HXLINE(1511)		::String stanza1 = this->client->jid->asString();
+HXLINE(1508)		 ::snikket::Stanza stanza2 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(4)
             			->setFixed(0,HX_("id",db,5b,00,00),stanza)
             			->setFixed(1,HX_("to",7b,65,00,00),this->chatId)
             			->setFixed(2,HX_("from",6a,a5,c2,43),stanza1)
             			->setFixed(3,HX_("type",ba,f2,08,4d),HX_("groupchat",97,1d,c8,e5))))->tag(state, ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("http://jabber.org/protocol/chatstates",8e,6d,41,6d))))->up();
-HXLINE(1506)		if (::hx::IsNotNull( threadId )) {
-HXLINE(1507)			stanza2->textTag(HX_("thread",ca,7a,b9,8e),threadId,null());
+HXLINE(1516)		if (::hx::IsNotNull( threadId )) {
+HXLINE(1517)			stanza2->textTag(HX_("thread",ca,7a,b9,8e),threadId,null());
             		}
-HXLINE(1509)		this->stream->sendStanza(stanza2);
+HXLINE(1519)		this->stream->sendStanza(stanza2);
             	}
 
 
 void Channel_obj::close(){
-            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1513_close)
-HXLINE(1514)		if (::hx::IsNotNull( this->typingTimer )) {
-HXLINE(1514)			this->typingTimer->stop();
-            		}
-HXLINE(1515)		this->uiState = 2;
-HXLINE(1516)		::Dynamic _hx_tmp = this->persistence;
-HXDLIN(1516)		::snikket::Persistence_obj::storeChats(_hx_tmp,this->client->accountId(),::Array_obj< ::Dynamic>::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)));
-HXLINE(1517)		this->selfPing(false);
-HXLINE(1518)		this->bookmark();
-HXLINE(1519)		this->sendChatState(HX_("gone",5f,94,69,44),null());
-HXLINE(1520)		this->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)));
+            	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_1523_close)
+HXLINE(1524)		if (::hx::IsNotNull( this->typingTimer )) {
+HXLINE(1524)			this->typingTimer->stop();
+            		}
+HXLINE(1525)		this->uiState = 2;
+HXLINE(1526)		::Dynamic _hx_tmp = this->persistence;
+HXDLIN(1526)		::snikket::Persistence_obj::storeChats(_hx_tmp,this->client->accountId(),::Array_obj< ::Dynamic>::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)));
+HXLINE(1527)		this->selfPing(false);
+HXLINE(1528)		this->bookmark();
+HXLINE(1529)		this->sendChatState(HX_("gone",5f,94,69,44),null());
+HXLINE(1530)		this->client->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)));
             	}
 
 
@@ -1553,6 +1580,7 @@ void Channel_obj::__Visit(HX_VISIT_PARAMS)
 		if (HX_FIELD_EQ(inName,"doSync") ) { return ::hx::Val( doSync_dyn() ); }
 		break;
 	case 7:
+		if (HX_FIELD_EQ(inName,"getCaps") ) { return ::hx::Val( getCaps_dyn() ); }
 		if (HX_FIELD_EQ(inName,"preview") ) { return ::hx::Val( preview_dyn() ); }
 		if (HX_FIELD_EQ(inName,"syncing") ) { return ::hx::Val( syncing_dyn() ); }
 		break;
@@ -1662,6 +1690,7 @@ static ::String Channel_obj_sMemberFields[] = {
 	HX_("selfPing",1e,60,3c,38),
 	HX_("join",ea,33,65,46),
 	HX_("selfPingSuccess",45,4d,98,ab),
+	HX_("getCaps",d7,cb,3c,14),
 	HX_("setPresence",fd,1b,38,97),
 	HX_("doSync",86,5f,63,1c),
 	HX_("isTrusted",2d,35,a5,1a),
@@ -1721,7 +1750,7 @@ void Channel_obj::__boot()
 {
             	HX_STACKFRAME(&_hx_pos_5e4df8d46126c981_982_boot)
 HXDLIN( 982)		__mClass->__meta__ =  ::Dynamic(::hx::Anon_obj::Create(1)
-            			->setFixed(0,HX_("fields",79,8e,8e,80), ::Dynamic(::hx::Anon_obj::Create(19)
+            			->setFixed(0,HX_("fields",79,8e,8e,80), ::Dynamic(::hx::Anon_obj::Create(20)
             				->setFixed(0,HX_("setPresence",fd,1b,38,97), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),null())))
             				->setFixed(1,HX_("syncing",67,fd,26,a7), ::Dynamic(::hx::Anon_obj::Create(1)
@@ -1740,25 +1769,27 @@ HXDLIN( 982)		__mClass->__meta__ =  ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),null())))
             				->setFixed(8,HX_("getMessagesBefore",a1,f1,44,11), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),null())))
-            				->setFixed(9,HX_("isTrusted",2d,35,a5,1a), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(9,HX_("getCaps",d7,cb,3c,14), ::Dynamic(::hx::Anon_obj::Create(1)
+            					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),null())))
+            				->setFixed(10,HX_("isTrusted",2d,35,a5,1a), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),null())))
-            				->setFixed(10,HX_("sendMessage",5f,89,1d,24), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(11,HX_("sendMessage",5f,89,1d,24), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),null())))
-            				->setFixed(11,HX_("lastMessageId",4c,90,58,27), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(12,HX_("lastMessageId",4c,90,58,27), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),null())))
-            				->setFixed(12,HX_("getMessagesAround",6f,95,16,2d), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(13,HX_("getMessagesAround",6f,95,16,2d), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),null())))
-            				->setFixed(13,HX_("bookmark",b6,8c,f1,32), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(14,HX_("bookmark",b6,8c,f1,32), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),null())))
-            				->setFixed(14,HX_("getParticipants",16,0b,c7,34), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(15,HX_("getParticipants",16,0b,c7,34), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),null())))
-            				->setFixed(15,HX_("preview",08,e0,da,3b), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(16,HX_("preview",08,e0,da,3b), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),null())))
-            				->setFixed(16,HX_("close",b8,17,63,48), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(17,HX_("close",b8,17,63,48), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),null())))
-            				->setFixed(17,HX_("getParticipantDetails",85,2b,7d,4d), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(18,HX_("getParticipantDetails",85,2b,7d,4d), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),null())))
-            				->setFixed(18,HX_("getMessagesAfter",3a,43,91,57), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(19,HX_("getMessagesAfter",3a,43,91,57), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),null()))))));
             	}
 }
diff --git a/Sources/c_snikket/src/snikket/Chat.cpp b/Sources/c_snikket/src/snikket/Chat.cpp
index 94ddb88..74b7c9c 100644
--- a/Sources/c_snikket/src/snikket/Chat.cpp
+++ b/Sources/c_snikket/src/snikket/Chat.cpp
@@ -10,15 +10,15 @@
 #ifndef INCLUDED__HaxeCBridge_Internal
 #include <_HaxeCBridge/Internal.h>
 #endif
+#ifndef INCLUDED_cpp_Int64Map
+#include <cpp/Int64Map.h>
+#endif
 #ifndef INCLUDED_haxe_IMap
 #include <haxe/IMap.h>
 #endif
 #ifndef INCLUDED_haxe_Timer
 #include <haxe/Timer.h>
 #endif
-#ifndef INCLUDED_haxe_ds_IntMap
-#include <haxe/ds/IntMap.h>
-#endif
 #ifndef INCLUDED_haxe_ds_StringMap
 #include <haxe/ds/StringMap.h>
 #endif
@@ -275,7 +275,7 @@ HX_DEFINE_DYNAMIC_FUNC3(Chat_obj,getMessagesBefore,(void))
 void Chat_obj::getMessagesBefore__fromC(::String beforeId,::String beforeTime,::cpp::Function< void  (void**,size_t,void*) > handler,void* handler__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,::cpp::Function< void  (void** HX_COMMA size_t HX_COMMA void*) >,handler,void*,handler__context) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> a0){
-            			HX_GC_STACKFRAME(&_hx_pos_12e7dd114cfbd541_221_getMessagesBefore__fromC)
+            			HX_STACKFRAME(&_hx_pos_12e7dd114cfbd541_221_getMessagesBefore__fromC)
 HXLINE( 221)			::cpp::Function< void  (void**,size_t,void*) > handler1 = handler;
 HXLINE( 211)			{
 HXLINE( 211)				int _g = 0;
@@ -287,15 +287,16 @@ HXLINE( 211)						 ::Dynamic haxeObject = el;
 HXDLIN( 211)						void* ptr = haxeObject.mPtr;
 HXDLIN( 211)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 211)						{
-HXLINE( 211)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 211)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 211)							int high = ptrInt64 >> 32;
-HXDLIN( 211)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 211)							if (::hx::IsNull( highMap )) {
-HXLINE( 211)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 211)								this1->set(low,highMap);
+HXLINE( 211)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 211)							if (::hx::IsNull( store )) {
+HXLINE( 211)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 211)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXLINE( 211)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 211)							highMap->set(high,haxeObject);
             						}
             					}
             				}
@@ -303,15 +304,16 @@ HXDLIN( 211)							highMap->set(high,haxeObject);
 HXDLIN( 211)			void** ptr1 = (void**)a0->getBase();
 HXDLIN( 211)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 211)			{
-HXLINE( 211)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 211)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 211)				int high1 = ptrInt641 >> 32;
-HXDLIN( 211)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 211)				if (::hx::IsNull( highMap1 )) {
-HXLINE( 211)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 211)					this2->set(low1,highMap1);
+HXLINE( 211)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 211)				if (::hx::IsNull( store1 )) {
+HXLINE( 211)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),a0));
+HXDLIN( 211)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXLINE( 211)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 211)				highMap1->set(high1,a0);
             			}
 HXLINE( 221)			handler1(ptr1,( (size_t)(a0->length) ),handler__context);
             		}
@@ -327,7 +329,7 @@ HX_DEFINE_DYNAMIC_FUNC3(Chat_obj,getMessagesAfter,(void))
 void Chat_obj::getMessagesAfter__fromC(::String afterId,::String afterTime,::cpp::Function< void  (void**,size_t,void*) > handler,void* handler__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,::cpp::Function< void  (void** HX_COMMA size_t HX_COMMA void*) >,handler,void*,handler__context) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> a0){
-            			HX_GC_STACKFRAME(&_hx_pos_12e7dd114cfbd541_221_getMessagesAfter__fromC)
+            			HX_STACKFRAME(&_hx_pos_12e7dd114cfbd541_221_getMessagesAfter__fromC)
 HXLINE( 221)			::cpp::Function< void  (void**,size_t,void*) > handler1 = handler;
 HXLINE( 211)			{
 HXLINE( 211)				int _g = 0;
@@ -339,15 +341,16 @@ HXLINE( 211)						 ::Dynamic haxeObject = el;
 HXDLIN( 211)						void* ptr = haxeObject.mPtr;
 HXDLIN( 211)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 211)						{
-HXLINE( 211)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 211)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 211)							int high = ptrInt64 >> 32;
-HXDLIN( 211)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 211)							if (::hx::IsNull( highMap )) {
-HXLINE( 211)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 211)								this1->set(low,highMap);
+HXLINE( 211)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 211)							if (::hx::IsNull( store )) {
+HXLINE( 211)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 211)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXLINE( 211)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 211)							highMap->set(high,haxeObject);
             						}
             					}
             				}
@@ -355,15 +358,16 @@ HXDLIN( 211)							highMap->set(high,haxeObject);
 HXDLIN( 211)			void** ptr1 = (void**)a0->getBase();
 HXDLIN( 211)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 211)			{
-HXLINE( 211)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 211)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 211)				int high1 = ptrInt641 >> 32;
-HXDLIN( 211)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 211)				if (::hx::IsNull( highMap1 )) {
-HXLINE( 211)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 211)					this2->set(low1,highMap1);
+HXLINE( 211)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 211)				if (::hx::IsNull( store1 )) {
+HXLINE( 211)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),a0));
+HXDLIN( 211)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXLINE( 211)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 211)				highMap1->set(high1,a0);
             			}
 HXLINE( 221)			handler1(ptr1,( (size_t)(a0->length) ),handler__context);
             		}
@@ -379,7 +383,7 @@ HX_DEFINE_DYNAMIC_FUNC3(Chat_obj,getMessagesAround,(void))
 void Chat_obj::getMessagesAround__fromC(::String aroundId,::String aroundTime,::cpp::Function< void  (void**,size_t,void*) > handler,void* handler__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,::cpp::Function< void  (void** HX_COMMA size_t HX_COMMA void*) >,handler,void*,handler__context) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> a0){
-            			HX_GC_STACKFRAME(&_hx_pos_12e7dd114cfbd541_221_getMessagesAround__fromC)
+            			HX_STACKFRAME(&_hx_pos_12e7dd114cfbd541_221_getMessagesAround__fromC)
 HXLINE( 221)			::cpp::Function< void  (void**,size_t,void*) > handler1 = handler;
 HXLINE( 211)			{
 HXLINE( 211)				int _g = 0;
@@ -391,15 +395,16 @@ HXLINE( 211)						 ::Dynamic haxeObject = el;
 HXDLIN( 211)						void* ptr = haxeObject.mPtr;
 HXDLIN( 211)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 211)						{
-HXLINE( 211)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 211)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 211)							int high = ptrInt64 >> 32;
-HXDLIN( 211)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 211)							if (::hx::IsNull( highMap )) {
-HXLINE( 211)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 211)								this1->set(low,highMap);
+HXLINE( 211)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 211)							if (::hx::IsNull( store )) {
+HXLINE( 211)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 211)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXLINE( 211)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 211)							highMap->set(high,haxeObject);
             						}
             					}
             				}
@@ -407,15 +412,16 @@ HXDLIN( 211)							highMap->set(high,haxeObject);
 HXDLIN( 211)			void** ptr1 = (void**)a0->getBase();
 HXDLIN( 211)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 211)			{
-HXLINE( 211)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 211)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 211)				int high1 = ptrInt641 >> 32;
-HXDLIN( 211)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 211)				if (::hx::IsNull( highMap1 )) {
-HXLINE( 211)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 211)					this2->set(low1,highMap1);
+HXLINE( 211)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 211)				if (::hx::IsNull( store1 )) {
+HXLINE( 211)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),a0));
+HXDLIN( 211)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXLINE( 211)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 211)				highMap1->set(high1,a0);
             			}
 HXLINE( 221)			handler1(ptr1,( (size_t)(a0->length) ),handler__context);
             		}
@@ -539,7 +545,7 @@ HX_DEFINE_DYNAMIC_FUNC0(Chat_obj,bookmark__fromC,(void))
 HX_DEFINE_DYNAMIC_FUNC0(Chat_obj,getParticipants,return )
 
 size_t Chat_obj::getParticipants__fromC(const char*** outPtr){
-            	HX_GC_STACKFRAME(&_hx_pos_12e7dd114cfbd541_250_getParticipants__fromC)
+            	HX_STACKFRAME(&_hx_pos_12e7dd114cfbd541_250_getParticipants__fromC)
 HXDLIN( 250)		::Array< ::String > out = this->getParticipants();
 HXDLIN( 250)		if (::hx::IsNotNull( outPtr )) {
 HXDLIN( 250)			::cpp::Pointer< const char** > _hx_tmp = ::cpp::Pointer_obj::fromRaw(outPtr);
@@ -557,15 +563,16 @@ HXDLIN( 250)					{
 HXDLIN( 250)						const char* cStrPtr = el.utf8_str();
 HXDLIN( 250)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(cStrPtr);
 HXDLIN( 250)						{
-HXDLIN( 250)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 250)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 250)							int high = ptrInt64 >> 32;
-HXDLIN( 250)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 250)							if (::hx::IsNull( highMap )) {
-HXLINE(2131)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXLINE( 250)								this1->set(low,highMap);
+HXDLIN( 250)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 250)							if (::hx::IsNull( store )) {
+HXLINE(2111)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),el));
+HXLINE( 250)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXDLIN( 250)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 250)							highMap->set(high,el);
             						}
 HXDLIN( 250)						const char* ptr = cStrPtr;
 HXDLIN( 250)						arr[i] = reinterpret_cast<size_t>(ptr);
@@ -575,15 +582,16 @@ HXDLIN( 250)						arr[i] = reinterpret_cast<size_t>(ptr);
 HXDLIN( 250)			void** ptr1 = (void**)arr->getBase();
 HXDLIN( 250)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 250)			{
-HXDLIN( 250)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 250)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 250)				int high1 = ptrInt641 >> 32;
-HXDLIN( 250)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 250)				if (::hx::IsNull( highMap1 )) {
-HXLINE(2131)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXLINE( 250)					this2->set(low1,highMap1);
+HXDLIN( 250)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 250)				if (::hx::IsNull( store1 )) {
+HXLINE(2111)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),arr));
+HXLINE( 250)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXDLIN( 250)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 250)				highMap1->set(high1,arr);
             			}
 HXDLIN( 250)			_hx_tmp->set_ref(( (const char**)(ptr1) ));
             		}
@@ -1399,7 +1407,7 @@ HX_DEFINE_DYNAMIC_FUNC2(Chat_obj,startCall,(void))
 
 void Chat_obj::addMedia(::Array< ::Dynamic> streams){
             	HX_STACKFRAME(&_hx_pos_3993c1e3d3f53fe2_585_addMedia)
-HXLINE( 586)		if ((this->callStatus() != HX_("ongoing",3b,aa,04,9b))) {
+HXLINE( 586)		if ((this->callStatus() != 4)) {
 HXLINE( 586)			HX_STACK_DO_THROW(HX_("cannot add media when no call ongoing",6a,0b,2b,6e));
             		}
 HXLINE( 587)		::snikket::jingle::Session_obj::addMedia(this->jingleSessions->iterator()->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)(),streams);
@@ -1436,7 +1444,7 @@ HXDLIN( 605)				( ( ::haxe::ds::StringMap)(this1) )->remove(::snikket::jingle::S
 
 HX_DEFINE_DYNAMIC_FUNC0(Chat_obj,hangup,(void))
 
-::String Chat_obj::callStatus(){
+int Chat_obj::callStatus(){
             	HX_STACKFRAME(&_hx_pos_3993c1e3d3f53fe2_612_callStatus)
 HXLINE( 613)		{
 HXLINE( 613)			 ::Dynamic session = this->jingleSessions->iterator();
@@ -1445,7 +1453,7 @@ HXLINE( 613)				::Dynamic session1 = session->__Field(HX_("next",f3,84,02,49),::
 HXLINE( 614)				return ::snikket::jingle::Session_obj::callStatus(session1);
             			}
             		}
-HXLINE( 617)		return HX_("none",b8,12,0a,49);
+HXLINE( 617)		return 0;
             	}
 
 
@@ -1500,7 +1508,7 @@ HXDLIN( 636)		return _g1;
 HX_DEFINE_DYNAMIC_FUNC0(Chat_obj,videoTracks,return )
 
 size_t Chat_obj::videoTracks__fromC(void*** outPtr){
-            	HX_GC_STACKFRAME(&_hx_pos_12e7dd114cfbd541_250_videoTracks__fromC)
+            	HX_STACKFRAME(&_hx_pos_12e7dd114cfbd541_250_videoTracks__fromC)
 HXDLIN( 250)		::Array< ::Dynamic> out = this->videoTracks();
 HXDLIN( 250)		if (::hx::IsNotNull( outPtr )) {
 HXDLIN( 250)			::cpp::Pointer< void** > _hx_tmp = ::cpp::Pointer_obj::fromRaw(outPtr);
@@ -1514,15 +1522,16 @@ HXDLIN( 250)						 ::Dynamic haxeObject = el;
 HXDLIN( 250)						void* ptr = haxeObject.mPtr;
 HXDLIN( 250)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 250)						{
-HXDLIN( 250)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 250)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 250)							int high = ptrInt64 >> 32;
-HXDLIN( 250)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 250)							if (::hx::IsNull( highMap )) {
-HXDLIN( 250)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 250)								this1->set(low,highMap);
+HXDLIN( 250)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 250)							if (::hx::IsNull( store )) {
+HXDLIN( 250)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 250)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXDLIN( 250)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 250)							highMap->set(high,haxeObject);
             						}
             					}
             				}
@@ -1530,15 +1539,16 @@ HXDLIN( 250)							highMap->set(high,haxeObject);
 HXDLIN( 250)			void** ptr1 = (void**)out->getBase();
 HXDLIN( 250)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 250)			{
-HXDLIN( 250)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 250)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 250)				int high1 = ptrInt641 >> 32;
-HXDLIN( 250)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 250)				if (::hx::IsNull( highMap1 )) {
-HXDLIN( 250)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 250)					this2->set(low1,highMap1);
+HXDLIN( 250)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 250)				if (::hx::IsNull( store1 )) {
+HXDLIN( 250)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),out));
+HXDLIN( 250)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXDLIN( 250)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 250)				highMap1->set(high1,out);
             			}
 HXDLIN( 250)			_hx_tmp->set_ref(ptr1);
             		}
diff --git a/Sources/c_snikket/src/snikket/ChatAttachment.cpp b/Sources/c_snikket/src/snikket/ChatAttachment.cpp
index 1d1defb..f90f1b6 100644
--- a/Sources/c_snikket/src/snikket/ChatAttachment.cpp
+++ b/Sources/c_snikket/src/snikket/ChatAttachment.cpp
@@ -4,12 +4,12 @@
 #ifndef INCLUDED__HaxeCBridge_Internal
 #include <_HaxeCBridge/Internal.h>
 #endif
+#ifndef INCLUDED_cpp_Int64Map
+#include <cpp/Int64Map.h>
+#endif
 #ifndef INCLUDED_haxe_IMap
 #include <haxe/IMap.h>
 #endif
-#ifndef INCLUDED_haxe_ds_IntMap
-#include <haxe/ds/IntMap.h>
-#endif
 #ifndef INCLUDED_snikket_ChatAttachment
 #include <snikket/ChatAttachment.h>
 #endif
@@ -76,7 +76,7 @@ HXDLIN( 355)		return this->size;
 HX_DEFINE_DYNAMIC_FUNC0(ChatAttachment_obj,size__fromC,return )
 
 size_t ChatAttachment_obj::uris__fromC(const char*** outPtr){
-            	HX_GC_STACKFRAME(&_hx_pos_78db3de7bf8d6ae8_334_uris__fromC)
+            	HX_STACKFRAME(&_hx_pos_78db3de7bf8d6ae8_334_uris__fromC)
 HXDLIN( 334)		::Array< ::String > x = this->uris;
 HXDLIN( 334)		if (::hx::IsNotNull( outPtr )) {
 HXDLIN( 334)			::cpp::Pointer< const char** > _hx_tmp = ::cpp::Pointer_obj::fromRaw(outPtr);
@@ -95,15 +95,16 @@ HXDLIN( 334)					{
 HXDLIN( 334)						const char* cStrPtr = el.utf8_str();
 HXDLIN( 334)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(cStrPtr);
 HXDLIN( 334)						{
-HXDLIN( 334)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 334)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 334)							int high = ptrInt64 >> 32;
-HXDLIN( 334)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 334)							if (::hx::IsNull( highMap )) {
-HXLINE(2131)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXLINE( 334)								this1->set(low,highMap);
+HXDLIN( 334)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 334)							if (::hx::IsNull( store )) {
+HXLINE(2111)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),el));
+HXLINE( 334)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXDLIN( 334)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 334)							highMap->set(high,el);
             						}
 HXDLIN( 334)						const char* ptr = cStrPtr;
 HXDLIN( 334)						arr[i] = reinterpret_cast<size_t>(ptr);
@@ -113,15 +114,16 @@ HXDLIN( 334)						arr[i] = reinterpret_cast<size_t>(ptr);
 HXDLIN( 334)			void** ptr1 = (void**)arr->getBase();
 HXDLIN( 334)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 334)			{
-HXDLIN( 334)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 334)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 334)				int high1 = ptrInt641 >> 32;
-HXDLIN( 334)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 334)				if (::hx::IsNull( highMap1 )) {
-HXLINE(2131)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXLINE( 334)					this2->set(low1,highMap1);
+HXDLIN( 334)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 334)				if (::hx::IsNull( store1 )) {
+HXLINE(2111)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),arr));
+HXLINE( 334)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXDLIN( 334)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 334)				highMap1->set(high1,arr);
             			}
 HXDLIN( 334)			_hx_tmp->set_ref(( (const char**)(ptr1) ));
             		}
@@ -130,7 +132,7 @@ HXDLIN( 334)		return ( (size_t)(x->length) );
 
 
 size_t ChatAttachment_obj::hashes__fromC(void*** outPtr){
-            	HX_GC_STACKFRAME(&_hx_pos_78db3de7bf8d6ae8_334_hashes__fromC)
+            	HX_STACKFRAME(&_hx_pos_78db3de7bf8d6ae8_334_hashes__fromC)
 HXDLIN( 334)		::Array< ::Dynamic> x = this->hashes;
 HXDLIN( 334)		if (::hx::IsNotNull( outPtr )) {
 HXDLIN( 334)			::cpp::Pointer< void** > _hx_tmp = ::cpp::Pointer_obj::fromRaw(outPtr);
@@ -145,15 +147,16 @@ HXDLIN( 334)						 ::Dynamic haxeObject = el;
 HXDLIN( 334)						void* ptr = haxeObject.mPtr;
 HXDLIN( 334)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 334)						{
-HXDLIN( 334)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 334)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 334)							int high = ptrInt64 >> 32;
-HXDLIN( 334)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 334)							if (::hx::IsNull( highMap )) {
-HXDLIN( 334)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 334)								this1->set(low,highMap);
+HXDLIN( 334)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 334)							if (::hx::IsNull( store )) {
+HXDLIN( 334)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 334)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXDLIN( 334)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 334)							highMap->set(high,haxeObject);
             						}
             					}
             				}
@@ -161,15 +164,16 @@ HXDLIN( 334)							highMap->set(high,haxeObject);
 HXDLIN( 334)			void** ptr1 = (void**)x1->getBase();
 HXDLIN( 334)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 334)			{
-HXDLIN( 334)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 334)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 334)				int high1 = ptrInt641 >> 32;
-HXDLIN( 334)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 334)				if (::hx::IsNull( highMap1 )) {
-HXDLIN( 334)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 334)					this2->set(low1,highMap1);
+HXDLIN( 334)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 334)				if (::hx::IsNull( store1 )) {
+HXDLIN( 334)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),x1));
+HXDLIN( 334)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXDLIN( 334)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 334)				highMap1->set(high1,x1);
             			}
 HXDLIN( 334)			_hx_tmp->set_ref(ptr1);
             		}
diff --git a/Sources/c_snikket/src/snikket/ChatMessage.cpp b/Sources/c_snikket/src/snikket/ChatMessage.cpp
index c8949fe..da51e11 100644
--- a/Sources/c_snikket/src/snikket/ChatMessage.cpp
+++ b/Sources/c_snikket/src/snikket/ChatMessage.cpp
@@ -19,6 +19,9 @@
 #ifndef INCLUDED__HaxeCBridge_Internal
 #include <_HaxeCBridge/Internal.h>
 #endif
+#ifndef INCLUDED_cpp_Int64Map
+#include <cpp/Int64Map.h>
+#endif
 #ifndef INCLUDED_datetime__DateTimeInterval_DateTimeInterval_Impl_
 #include <datetime/_DateTimeInterval/DateTimeInterval_Impl_.h>
 #endif
@@ -37,9 +40,6 @@
 #ifndef INCLUDED_haxe_crypto_Base64
 #include <haxe/crypto/Base64.h>
 #endif
-#ifndef INCLUDED_haxe_ds_IntMap
-#include <haxe/ds/IntMap.h>
-#endif
 #ifndef INCLUDED_haxe_ds_StringMap
 #include <haxe/ds/StringMap.h>
 #endif
@@ -328,7 +328,7 @@ HXDLIN( 355)		return this->threadId;
 HX_DEFINE_DYNAMIC_FUNC0(ChatMessage_obj,threadId__fromC,return )
 
 size_t ChatMessage_obj::attachments__fromC(void*** outPtr){
-            	HX_GC_STACKFRAME(&_hx_pos_672f2a9d33b9a067_334_attachments__fromC)
+            	HX_STACKFRAME(&_hx_pos_672f2a9d33b9a067_334_attachments__fromC)
 HXDLIN( 334)		::Array< ::Dynamic> x = this->attachments;
 HXDLIN( 334)		if (::hx::IsNotNull( outPtr )) {
 HXDLIN( 334)			::cpp::Pointer< void** > _hx_tmp = ::cpp::Pointer_obj::fromRaw(outPtr);
@@ -343,15 +343,16 @@ HXDLIN( 334)						 ::Dynamic haxeObject = el;
 HXDLIN( 334)						void* ptr = haxeObject.mPtr;
 HXDLIN( 334)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 334)						{
-HXDLIN( 334)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 334)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 334)							int high = ptrInt64 >> 32;
-HXDLIN( 334)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 334)							if (::hx::IsNull( highMap )) {
-HXDLIN( 334)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 334)								this1->set(low,highMap);
+HXDLIN( 334)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 334)							if (::hx::IsNull( store )) {
+HXDLIN( 334)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 334)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXDLIN( 334)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 334)							highMap->set(high,haxeObject);
             						}
             					}
             				}
@@ -359,15 +360,16 @@ HXDLIN( 334)							highMap->set(high,haxeObject);
 HXDLIN( 334)			void** ptr1 = (void**)x1->getBase();
 HXDLIN( 334)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 334)			{
-HXDLIN( 334)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 334)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 334)				int high1 = ptrInt641 >> 32;
-HXDLIN( 334)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 334)				if (::hx::IsNull( highMap1 )) {
-HXDLIN( 334)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 334)					this2->set(low1,highMap1);
+HXDLIN( 334)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 334)				if (::hx::IsNull( store1 )) {
+HXDLIN( 334)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),x1));
+HXDLIN( 334)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXDLIN( 334)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 334)				highMap1->set(high1,x1);
             			}
 HXDLIN( 334)			_hx_tmp->set_ref(ptr1);
             		}
@@ -376,7 +378,7 @@ HXDLIN( 334)		return ( (size_t)(x->length) );
 
 
 size_t ChatMessage_obj::reactionKeys__fromC(const char*** outPtr){
-            	HX_GC_STACKFRAME(&_hx_pos_672f2a9d33b9a067_297_reactionKeys__fromC)
+            	HX_STACKFRAME(&_hx_pos_672f2a9d33b9a067_297_reactionKeys__fromC)
 HXDLIN( 297)		::Array< ::String > x = this->get_reactionKeys();
 HXDLIN( 297)		if (::hx::IsNotNull( outPtr )) {
 HXDLIN( 297)			::cpp::Pointer< const char** > _hx_tmp = ::cpp::Pointer_obj::fromRaw(outPtr);
@@ -394,15 +396,16 @@ HXDLIN( 297)					{
 HXDLIN( 297)						const char* cStrPtr = el.utf8_str();
 HXDLIN( 297)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(cStrPtr);
 HXDLIN( 297)						{
-HXDLIN( 297)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 297)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 297)							int high = ptrInt64 >> 32;
-HXDLIN( 297)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 297)							if (::hx::IsNull( highMap )) {
-HXLINE(2131)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXLINE( 297)								this1->set(low,highMap);
+HXDLIN( 297)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 297)							if (::hx::IsNull( store )) {
+HXLINE(2111)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),el));
+HXLINE( 297)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXDLIN( 297)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 297)							highMap->set(high,el);
             						}
 HXDLIN( 297)						const char* ptr = cStrPtr;
 HXDLIN( 297)						arr[i] = reinterpret_cast<size_t>(ptr);
@@ -412,15 +415,16 @@ HXDLIN( 297)						arr[i] = reinterpret_cast<size_t>(ptr);
 HXDLIN( 297)			void** ptr1 = (void**)arr->getBase();
 HXDLIN( 297)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 297)			{
-HXDLIN( 297)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 297)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 297)				int high1 = ptrInt641 >> 32;
-HXDLIN( 297)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 297)				if (::hx::IsNull( highMap1 )) {
-HXLINE(2131)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXLINE( 297)					this2->set(low1,highMap1);
+HXDLIN( 297)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 297)				if (::hx::IsNull( store1 )) {
+HXLINE(2111)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),arr));
+HXLINE( 297)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXDLIN( 297)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 297)				highMap1->set(high1,arr);
             			}
 HXDLIN( 297)			_hx_tmp->set_ref(( (const char**)(ptr1) ));
             		}
@@ -461,7 +465,7 @@ HXDLIN( 148)		return null();
 HX_DEFINE_DYNAMIC_FUNC1(ChatMessage_obj,reactionDetails,return )
 
 size_t ChatMessage_obj::reactionDetails__fromC(::String reactionKey,void*** outPtr){
-            	HX_GC_STACKFRAME(&_hx_pos_672f2a9d33b9a067_250_reactionDetails__fromC)
+            	HX_STACKFRAME(&_hx_pos_672f2a9d33b9a067_250_reactionDetails__fromC)
 HXDLIN( 250)		::Array< ::Dynamic> out = this->reactionDetails(reactionKey);
 HXDLIN( 250)		if (::hx::IsNotNull( outPtr )) {
 HXDLIN( 250)			::cpp::Pointer< void** > _hx_tmp = ::cpp::Pointer_obj::fromRaw(outPtr);
@@ -475,15 +479,16 @@ HXDLIN( 250)						 ::Dynamic haxeObject = el;
 HXDLIN( 250)						void* ptr = haxeObject.mPtr;
 HXDLIN( 250)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 250)						{
-HXDLIN( 250)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 250)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 250)							int high = ptrInt64 >> 32;
-HXDLIN( 250)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 250)							if (::hx::IsNull( highMap )) {
-HXDLIN( 250)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 250)								this1->set(low,highMap);
+HXDLIN( 250)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 250)							if (::hx::IsNull( store )) {
+HXDLIN( 250)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 250)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXDLIN( 250)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 250)							highMap->set(high,haxeObject);
             						}
             					}
             				}
@@ -491,15 +496,16 @@ HXDLIN( 250)							highMap->set(high,haxeObject);
 HXDLIN( 250)			void** ptr1 = (void**)out->getBase();
 HXDLIN( 250)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 250)			{
-HXDLIN( 250)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 250)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 250)				int high1 = ptrInt641 >> 32;
-HXDLIN( 250)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 250)				if (::hx::IsNull( highMap1 )) {
-HXDLIN( 250)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 250)					this2->set(low1,highMap1);
+HXDLIN( 250)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 250)				if (::hx::IsNull( store1 )) {
+HXDLIN( 250)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),out));
+HXDLIN( 250)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXDLIN( 250)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 250)				highMap1->set(high1,out);
             			}
 HXDLIN( 250)			_hx_tmp->set_ref(ptr1);
             		}
@@ -548,7 +554,7 @@ HXDLIN( 366)		this->status = value;
 HX_DEFINE_DYNAMIC_FUNC1(ChatMessage_obj,set_status__fromC,(void))
 
 size_t ChatMessage_obj::versions__fromC(void*** outPtr){
-            	HX_GC_STACKFRAME(&_hx_pos_672f2a9d33b9a067_334_versions__fromC)
+            	HX_STACKFRAME(&_hx_pos_672f2a9d33b9a067_334_versions__fromC)
 HXDLIN( 334)		::Array< ::Dynamic> x = this->versions;
 HXDLIN( 334)		if (::hx::IsNotNull( outPtr )) {
 HXDLIN( 334)			::cpp::Pointer< void** > _hx_tmp = ::cpp::Pointer_obj::fromRaw(outPtr);
@@ -563,15 +569,16 @@ HXDLIN( 334)						 ::Dynamic haxeObject = el;
 HXDLIN( 334)						void* ptr = haxeObject.mPtr;
 HXDLIN( 334)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 334)						{
-HXDLIN( 334)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 334)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 334)							int high = ptrInt64 >> 32;
-HXDLIN( 334)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 334)							if (::hx::IsNull( highMap )) {
-HXDLIN( 334)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 334)								this1->set(low,highMap);
+HXDLIN( 334)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 334)							if (::hx::IsNull( store )) {
+HXDLIN( 334)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 334)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXDLIN( 334)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 334)							highMap->set(high,haxeObject);
             						}
             					}
             				}
@@ -579,15 +586,16 @@ HXDLIN( 334)							highMap->set(high,haxeObject);
 HXDLIN( 334)			void** ptr1 = (void**)x1->getBase();
 HXDLIN( 334)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 334)			{
-HXDLIN( 334)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 334)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 334)				int high1 = ptrInt641 >> 32;
-HXDLIN( 334)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 334)				if (::hx::IsNull( highMap1 )) {
-HXDLIN( 334)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 334)					this2->set(low1,highMap1);
+HXDLIN( 334)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 334)				if (::hx::IsNull( store1 )) {
+HXDLIN( 334)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),x1));
+HXDLIN( 334)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXDLIN( 334)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 334)				highMap1->set(high1,x1);
             			}
 HXDLIN( 334)			_hx_tmp->set_ref(ptr1);
             		}
diff --git a/Sources/c_snikket/src/snikket/ChatMessageBuilder.cpp b/Sources/c_snikket/src/snikket/ChatMessageBuilder.cpp
index 0d0072f..9247cba 100644
--- a/Sources/c_snikket/src/snikket/ChatMessageBuilder.cpp
+++ b/Sources/c_snikket/src/snikket/ChatMessageBuilder.cpp
@@ -16,15 +16,15 @@
 #ifndef INCLUDED__HaxeCBridge_Internal
 #include <_HaxeCBridge/Internal.h>
 #endif
+#ifndef INCLUDED_cpp_Int64Map
+#include <cpp/Int64Map.h>
+#endif
 #ifndef INCLUDED_haxe_IMap
 #include <haxe/IMap.h>
 #endif
 #ifndef INCLUDED_haxe_crypto_Base64
 #include <haxe/crypto/Base64.h>
 #endif
-#ifndef INCLUDED_haxe_ds_IntMap
-#include <haxe/ds/IntMap.h>
-#endif
 #ifndef INCLUDED_haxe_ds_StringMap
 #include <haxe/ds/StringMap.h>
 #endif
@@ -293,7 +293,7 @@ HXDLIN( 366)		this->threadId = value;
 HX_DEFINE_DYNAMIC_FUNC1(ChatMessageBuilder_obj,set_threadId__fromC,(void))
 
 size_t ChatMessageBuilder_obj::attachments__fromC(void*** outPtr){
-            	HX_GC_STACKFRAME(&_hx_pos_1cce69560351f400_297_attachments__fromC)
+            	HX_STACKFRAME(&_hx_pos_1cce69560351f400_297_attachments__fromC)
 HXDLIN( 297)		::Array< ::Dynamic> x = this->attachments;
 HXDLIN( 297)		if (::hx::IsNotNull( outPtr )) {
 HXDLIN( 297)			::cpp::Pointer< void** > _hx_tmp = ::cpp::Pointer_obj::fromRaw(outPtr);
@@ -307,15 +307,16 @@ HXDLIN( 297)						 ::Dynamic haxeObject = el;
 HXDLIN( 297)						void* ptr = haxeObject.mPtr;
 HXDLIN( 297)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 297)						{
-HXDLIN( 297)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 297)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 297)							int high = ptrInt64 >> 32;
-HXDLIN( 297)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 297)							if (::hx::IsNull( highMap )) {
-HXDLIN( 297)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 297)								this1->set(low,highMap);
+HXDLIN( 297)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 297)							if (::hx::IsNull( store )) {
+HXDLIN( 297)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 297)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXDLIN( 297)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 297)							highMap->set(high,haxeObject);
             						}
             					}
             				}
@@ -323,15 +324,16 @@ HXDLIN( 297)							highMap->set(high,haxeObject);
 HXDLIN( 297)			void** ptr1 = (void**)x->getBase();
 HXDLIN( 297)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 297)			{
-HXDLIN( 297)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 297)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 297)				int high1 = ptrInt641 >> 32;
-HXDLIN( 297)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 297)				if (::hx::IsNull( highMap1 )) {
-HXDLIN( 297)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 297)					this2->set(low1,highMap1);
+HXDLIN( 297)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 297)				if (::hx::IsNull( store1 )) {
+HXDLIN( 297)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),x));
+HXDLIN( 297)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXDLIN( 297)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 297)				highMap1->set(high1,x);
             			}
 HXDLIN( 297)			_hx_tmp->set_ref(ptr1);
             		}
@@ -416,7 +418,7 @@ HXDLIN( 344)		this->versions = result->copy();
 HX_DEFINE_DYNAMIC_FUNC2(ChatMessageBuilder_obj,set_versions__fromC,(void))
 
 size_t ChatMessageBuilder_obj::versions__fromC(void*** outPtr){
-            	HX_GC_STACKFRAME(&_hx_pos_1cce69560351f400_334_versions__fromC)
+            	HX_STACKFRAME(&_hx_pos_1cce69560351f400_334_versions__fromC)
 HXDLIN( 334)		::Array< ::Dynamic> x = this->versions;
 HXDLIN( 334)		if (::hx::IsNotNull( outPtr )) {
 HXDLIN( 334)			::cpp::Pointer< void** > _hx_tmp = ::cpp::Pointer_obj::fromRaw(outPtr);
@@ -430,15 +432,16 @@ HXDLIN( 334)						 ::Dynamic haxeObject = el;
 HXDLIN( 334)						void* ptr = haxeObject.mPtr;
 HXDLIN( 334)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 334)						{
-HXDLIN( 334)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 334)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 334)							int high = ptrInt64 >> 32;
-HXDLIN( 334)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 334)							if (::hx::IsNull( highMap )) {
-HXDLIN( 334)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 334)								this1->set(low,highMap);
+HXDLIN( 334)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 334)							if (::hx::IsNull( store )) {
+HXDLIN( 334)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 334)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXDLIN( 334)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 334)							highMap->set(high,haxeObject);
             						}
             					}
             				}
@@ -446,15 +449,16 @@ HXDLIN( 334)							highMap->set(high,haxeObject);
 HXDLIN( 334)			void** ptr1 = (void**)x->getBase();
 HXDLIN( 334)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 334)			{
-HXDLIN( 334)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 334)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 334)				int high1 = ptrInt641 >> 32;
-HXDLIN( 334)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 334)				if (::hx::IsNull( highMap1 )) {
-HXDLIN( 334)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 334)					this2->set(low1,highMap1);
+HXDLIN( 334)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 334)				if (::hx::IsNull( store1 )) {
+HXDLIN( 334)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),x));
+HXDLIN( 334)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXDLIN( 334)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 334)				highMap1->set(high1,x);
             			}
 HXDLIN( 334)			_hx_tmp->set_ref(ptr1);
             		}
diff --git a/Sources/c_snikket/src/snikket/Client.cpp b/Sources/c_snikket/src/snikket/Client.cpp
index 5b48be7..e21e20d 100644
--- a/Sources/c_snikket/src/snikket/Client.cpp
+++ b/Sources/c_snikket/src/snikket/Client.cpp
@@ -19,6 +19,9 @@
 #ifndef INCLUDED__HaxeCBridge_Internal
 #include <_HaxeCBridge/Internal.h>
 #endif
+#ifndef INCLUDED_cpp_Int64Map
+#include <cpp/Int64Map.h>
+#endif
 #ifndef INCLUDED_cpp__NativeString_NativeString_Impl_
 #include <cpp/_NativeString/NativeString_Impl_.h>
 #endif
@@ -40,9 +43,6 @@
 #ifndef INCLUDED_haxe_ds_Either
 #include <haxe/ds/Either.h>
 #endif
-#ifndef INCLUDED_haxe_ds_IntMap
-#include <haxe/ds/IntMap.h>
-#endif
 #ifndef INCLUDED_haxe_ds_StringMap
 #include <haxe/ds/StringMap.h>
 #endif
@@ -226,12 +226,6 @@
 #ifndef INCLUDED_sys_io_FileInput
 #include <sys/io/FileInput.h>
 #endif
-#ifndef INCLUDED_sys_net_Socket
-#include <sys/net/Socket.h>
-#endif
-#ifndef INCLUDED_sys_ssl_Socket
-#include <sys/ssl/Socket.h>
-#endif
 #ifndef INCLUDED_thenshim_PromiseTools
 #include <thenshim/PromiseTools.h>
 #endif
@@ -317,85 +311,85 @@
 #include <tink/streams/_Stream/Handler_Impl_.h>
 #endif
 
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_106_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",106,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_110_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",110,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_116_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",116,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_127_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",127,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_122_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",122,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_137_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",137,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_132_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",132,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_167_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",167,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_142_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",142,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_180_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",180,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_191_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",191,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_200_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",200,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_198_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",198,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_105_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",105,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_109_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",109,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_115_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",115,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_126_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",126,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_121_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",121,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_136_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",136,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_131_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",131,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_166_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",166,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_141_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",141,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_179_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",179,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_190_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",190,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_199_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",199,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_197_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",197,0x180249e1)
 static const ::String _hx_array_data_7c06fe3c_24[] = {
 	HX_("image/png",b5,cc,c1,16),
 };
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_298_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",298,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_308_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",308,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_302_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",302,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_327_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",327,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_329_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",329,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_341_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",341,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_393_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",393,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_396_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",396,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_423_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",423,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_438_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",438,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_461_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",461,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_477_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",477,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_484_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",484,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_498_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",498,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_489_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",489,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_516_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",516,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_524_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",524,0x180249e1)
-HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_520_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",520,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_297_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",297,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_307_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",307,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_301_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",301,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_326_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",326,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_328_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",328,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_340_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",340,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_392_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",392,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_395_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",395,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_422_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",422,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_437_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",437,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_460_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",460,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_476_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",476,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_483_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",483,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_497_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",497,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_488_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",488,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_515_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",515,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_523_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",523,0x180249e1)
+HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_519_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",519,0x180249e1)
 HX_DEFINE_STACK_FRAME(_hx_pos_ead56881d4bbcaca_51_new,"snikket.Client","new",0x69246d2e,"snikket.Client.new","snikket/Client.hx",51,0x180249e1)
 static const ::String _hx_array_data_7c06fe3c_45[] = {
 	HX_("http://jabber.org/protocol/disco#info",cb,2b,7f,0b),HX_("http://jabber.org/protocol/caps",95,d0,90,e2),HX_("urn:xmpp:avatar:metadata+notify",e0,89,c6,db),HX_("http://jabber.org/protocol/nick+notify",fd,dd,65,10),HX_("urn:xmpp:bookmarks:1+notify",dc,4b,f7,cc),HX_("urn:xmpp:mds:displayed:0+notify",17,ae,91,a8),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07),HX_("urn:xmpp:jingle:1",44,c4,fe,f7),HX_("urn:xmpp:jingle:apps:dtls:0",a8,cb,02,66),HX_("urn:xmpp:jingle:apps:rtp:1",ea,41,fe,5c),HX_("urn:xmpp:jingle:apps:rtp:audio",0f,8b,54,6c),HX_("urn:xmpp:jingle:apps:rtp:video",b4,26,d0,7b),HX_("urn:xmpp:jingle:transports:ice-udp:1",f3,67,4f,53),
 };
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_319_set_sendAvailable__fromC,"snikket.Client","set_sendAvailable__fromC",0xde92a6a7,"snikket.Client.set_sendAvailable__fromC","HaxeCBridge.hx",319,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_557_start,"snikket.Client","start",0x37d760b0,"snikket.Client.start","snikket/Client.hx",557,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_558_start,"snikket.Client","start",0x37d760b0,"snikket.Client.start","snikket/Client.hx",558,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_565_start,"snikket.Client","start",0x37d760b0,"snikket.Client.start","snikket/Client.hx",565,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_556_start,"snikket.Client","start",0x37d760b0,"snikket.Client.start","snikket/Client.hx",556,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_554_start,"snikket.Client","start",0x37d760b0,"snikket.Client.start","snikket/Client.hx",554,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_601_startOffline,"snikket.Client","startOffline",0x5e9bcc13,"snikket.Client.startOffline","snikket/Client.hx",601,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_596_startOffline,"snikket.Client","startOffline",0x5e9bcc13,"snikket.Client.startOffline","snikket/Client.hx",596,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_587_startOffline,"snikket.Client","startOffline",0x5e9bcc13,"snikket.Client.startOffline","snikket/Client.hx",587,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_582_startOffline,"snikket.Client","startOffline",0x5e9bcc13,"snikket.Client.startOffline","snikket/Client.hx",582,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_557_start,"snikket.Client","start",0x37d760b0,"snikket.Client.start","snikket/Client.hx",557,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_564_start,"snikket.Client","start",0x37d760b0,"snikket.Client.start","snikket/Client.hx",564,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_555_start,"snikket.Client","start",0x37d760b0,"snikket.Client.start","snikket/Client.hx",555,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_553_start,"snikket.Client","start",0x37d760b0,"snikket.Client.start","snikket/Client.hx",553,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_600_startOffline,"snikket.Client","startOffline",0x5e9bcc13,"snikket.Client.startOffline","snikket/Client.hx",600,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_595_startOffline,"snikket.Client","startOffline",0x5e9bcc13,"snikket.Client.startOffline","snikket/Client.hx",595,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_586_startOffline,"snikket.Client","startOffline",0x5e9bcc13,"snikket.Client.startOffline","snikket/Client.hx",586,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_581_startOffline,"snikket.Client","startOffline",0x5e9bcc13,"snikket.Client.startOffline","snikket/Client.hx",581,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_221_startOffline__fromC,"snikket.Client","startOffline__fromC",0x5d609cc6,"snikket.Client.startOffline__fromC","HaxeCBridge.hx",221,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_252_startOffline__fromC,"snikket.Client","startOffline__fromC",0x5d609cc6,"snikket.Client.startOffline__fromC","HaxeCBridge.hx",252,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_626_logout,"snikket.Client","logout",0xfb11ce7c,"snikket.Client.logout","snikket/Client.hx",626,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_622_logout,"snikket.Client","logout",0xfb11ce7c,"snikket.Client.logout","snikket/Client.hx",622,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_638_usePassword,"snikket.Client","usePassword",0x35ea4550,"snikket.Client.usePassword","snikket/Client.hx",638,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_647_accountId,"snikket.Client","accountId",0x98c7ad36,"snikket.Client.accountId","snikket/Client.hx",647,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_656_displayName,"snikket.Client","displayName",0xc4012c7b,"snikket.Client.displayName","snikket/Client.hx",656,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_674_setDisplayName,"snikket.Client","setDisplayName",0x10b7671d,"snikket.Client.setDisplayName","snikket/Client.hx",674,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_664_setDisplayName,"snikket.Client","setDisplayName",0x10b7671d,"snikket.Client.setDisplayName","snikket/Client.hx",664,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_678_updateDisplayName,"snikket.Client","updateDisplayName",0x01ffe772,"snikket.Client.updateDisplayName","snikket/Client.hx",678,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_700_onConnected,"snikket.Client","onConnected",0x5848e078,"snikket.Client.onConnected","snikket/Client.hx",700,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_717_onConnected,"snikket.Client","onConnected",0x5848e078,"snikket.Client.onConnected","snikket/Client.hx",717,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_706_onConnected,"snikket.Client","onConnected",0x5848e078,"snikket.Client.onConnected","snikket/Client.hx",706,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_704_onConnected,"snikket.Client","onConnected",0x5848e078,"snikket.Client.onConnected","snikket/Client.hx",704,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_686_onConnected,"snikket.Client","onConnected",0x5848e078,"snikket.Client.onConnected","snikket/Client.hx",686,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_755_prepareAttachment,"snikket.Client","prepareAttachment",0xbeef9598,"snikket.Client.prepareAttachment","snikket/Client.hx",755,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_757_prepareAttachment,"snikket.Client","prepareAttachment",0xbeef9598,"snikket.Client.prepareAttachment","snikket/Client.hx",757,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_760_prepareAttachment,"snikket.Client","prepareAttachment",0xbeef9598,"snikket.Client.prepareAttachment","snikket/Client.hx",760,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_625_logout,"snikket.Client","logout",0xfb11ce7c,"snikket.Client.logout","snikket/Client.hx",625,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_621_logout,"snikket.Client","logout",0xfb11ce7c,"snikket.Client.logout","snikket/Client.hx",621,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_637_usePassword,"snikket.Client","usePassword",0x35ea4550,"snikket.Client.usePassword","snikket/Client.hx",637,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_646_accountId,"snikket.Client","accountId",0x98c7ad36,"snikket.Client.accountId","snikket/Client.hx",646,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_655_displayName,"snikket.Client","displayName",0xc4012c7b,"snikket.Client.displayName","snikket/Client.hx",655,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_673_setDisplayName,"snikket.Client","setDisplayName",0x10b7671d,"snikket.Client.setDisplayName","snikket/Client.hx",673,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_663_setDisplayName,"snikket.Client","setDisplayName",0x10b7671d,"snikket.Client.setDisplayName","snikket/Client.hx",663,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_677_updateDisplayName,"snikket.Client","updateDisplayName",0x01ffe772,"snikket.Client.updateDisplayName","snikket/Client.hx",677,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_699_onConnected,"snikket.Client","onConnected",0x5848e078,"snikket.Client.onConnected","snikket/Client.hx",699,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_716_onConnected,"snikket.Client","onConnected",0x5848e078,"snikket.Client.onConnected","snikket/Client.hx",716,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_705_onConnected,"snikket.Client","onConnected",0x5848e078,"snikket.Client.onConnected","snikket/Client.hx",705,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_703_onConnected,"snikket.Client","onConnected",0x5848e078,"snikket.Client.onConnected","snikket/Client.hx",703,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_685_onConnected,"snikket.Client","onConnected",0x5848e078,"snikket.Client.onConnected","snikket/Client.hx",685,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_754_prepareAttachment,"snikket.Client","prepareAttachment",0xbeef9598,"snikket.Client.prepareAttachment","snikket/Client.hx",754,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_756_prepareAttachment,"snikket.Client","prepareAttachment",0xbeef9598,"snikket.Client.prepareAttachment","snikket/Client.hx",756,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_759_prepareAttachment,"snikket.Client","prepareAttachment",0xbeef9598,"snikket.Client.prepareAttachment","snikket/Client.hx",759,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_753_prepareAttachment,"snikket.Client","prepareAttachment",0xbeef9598,"snikket.Client.prepareAttachment","snikket/Client.hx",753,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_221_prepareAttachment__fromC,"snikket.Client","prepareAttachment__fromC",0x503d3de1,"snikket.Client.prepareAttachment__fromC","HaxeCBridge.hx",221,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_252_prepareAttachment__fromC,"snikket.Client","prepareAttachment__fromC",0x503d3de1,"snikket.Client.prepareAttachment__fromC","HaxeCBridge.hx",252,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_777_prepareAttachmentFor,"snikket.Client","prepareAttachmentFor",0xe1e97851,"snikket.Client.prepareAttachmentFor","snikket/Client.hx",777,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_776_prepareAttachmentFor,"snikket.Client","prepareAttachmentFor",0xe1e97851,"snikket.Client.prepareAttachmentFor","snikket/Client.hx",776,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_781_prepareAttachmentFor,"snikket.Client","prepareAttachmentFor",0xe1e97851,"snikket.Client.prepareAttachmentFor","snikket/Client.hx",781,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_782_prepareAttachmentFor,"snikket.Client","prepareAttachmentFor",0xe1e97851,"snikket.Client.prepareAttachmentFor","snikket/Client.hx",782,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_783_prepareAttachmentFor,"snikket.Client","prepareAttachmentFor",0xe1e97851,"snikket.Client.prepareAttachmentFor","snikket/Client.hx",783,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_770_prepareAttachmentFor,"snikket.Client","prepareAttachmentFor",0xe1e97851,"snikket.Client.prepareAttachmentFor","snikket/Client.hx",770,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_798_getChats,"snikket.Client","getChats",0x5488e697,"snikket.Client.getChats","snikket/Client.hx",798,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_769_prepareAttachmentFor,"snikket.Client","prepareAttachmentFor",0xe1e97851,"snikket.Client.prepareAttachmentFor","snikket/Client.hx",769,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_797_getChats,"snikket.Client","getChats",0x5488e697,"snikket.Client.getChats","snikket/Client.hx",797,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_250_getChats__fromC,"snikket.Client","getChats__fromC",0x4cad9ac2,"snikket.Client.getChats__fromC","HaxeCBridge.hx",250,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_811_findAvailableChats,"snikket.Client","findAvailableChats",0x877a8d1d,"snikket.Client.findAvailableChats","snikket/Client.hx",811,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_813_findAvailableChats,"snikket.Client","findAvailableChats",0x877a8d1d,"snikket.Client.findAvailableChats","snikket/Client.hx",813,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_810_findAvailableChats,"snikket.Client","findAvailableChats",0x877a8d1d,"snikket.Client.findAvailableChats","snikket/Client.hx",810,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_807_findAvailableChats,"snikket.Client","findAvailableChats",0x877a8d1d,"snikket.Client.findAvailableChats","snikket/Client.hx",807,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_812_findAvailableChats,"snikket.Client","findAvailableChats",0x877a8d1d,"snikket.Client.findAvailableChats","snikket/Client.hx",812,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_809_findAvailableChats,"snikket.Client","findAvailableChats",0x877a8d1d,"snikket.Client.findAvailableChats","snikket/Client.hx",809,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_806_findAvailableChats,"snikket.Client","findAvailableChats",0x877a8d1d,"snikket.Client.findAvailableChats","snikket/Client.hx",806,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_862_findAvailableChats,"snikket.Client","findAvailableChats",0x877a8d1d,"snikket.Client.findAvailableChats","snikket/Client.hx",862,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_221_findAvailableChats__fromC,"snikket.Client","findAvailableChats__fromC",0x704470fc,"snikket.Client.findAvailableChats__fromC","HaxeCBridge.hx",221,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_252_findAvailableChats__fromC,"snikket.Client","findAvailableChats__fromC",0x704470fc,"snikket.Client.findAvailableChats__fromC","HaxeCBridge.hx",252,0xa18550d8)
@@ -420,157 +414,164 @@ HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_252_addStatusOfflineListener__from
 HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1078_addConnectionFailedListener,"snikket.Client","addConnectionFailedListener",0x4e1f941e,"snikket.Client.addConnectionFailedListener","snikket/Client.hx",1078,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_221_addConnectionFailedListener__fromC,"snikket.Client","addConnectionFailedListener__fromC",0x9290bc1b,"snikket.Client.addConnectionFailedListener__fromC","HaxeCBridge.hx",221,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_252_addConnectionFailedListener__fromC,"snikket.Client","addConnectionFailedListener__fromC",0x9290bc1b,"snikket.Client.addConnectionFailedListener__fromC","HaxeCBridge.hx",252,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1103_addChatMessageListener,"snikket.Client","addChatMessageListener",0xff8d07b4,"snikket.Client.addChatMessageListener","snikket/Client.hx",1103,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1091_addTlsCheckListener,"snikket.Client","addTlsCheckListener",0x4f85a170,"snikket.Client.addTlsCheckListener","snikket/Client.hx",1091,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1090_addTlsCheckListener,"snikket.Client","addTlsCheckListener",0x4f85a170,"snikket.Client.addTlsCheckListener","snikket/Client.hx",1090,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_221_addTlsCheckListener__fromC,"snikket.Client","addTlsCheckListener__fromC",0x0bdedd09,"snikket.Client.addTlsCheckListener__fromC","HaxeCBridge.hx",221,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_252_addTlsCheckListener__fromC,"snikket.Client","addTlsCheckListener__fromC",0x0bdedd09,"snikket.Client.addTlsCheckListener__fromC","HaxeCBridge.hx",252,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1114_addChatMessageListener,"snikket.Client","addChatMessageListener",0xff8d07b4,"snikket.Client.addChatMessageListener","snikket/Client.hx",1114,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_221_addChatMessageListener__fromC,"snikket.Client","addChatMessageListener__fromC",0xc5968745,"snikket.Client.addChatMessageListener__fromC","HaxeCBridge.hx",221,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_252_addChatMessageListener__fromC,"snikket.Client","addChatMessageListener__fromC",0xc5968745,"snikket.Client.addChatMessageListener__fromC","HaxeCBridge.hx",252,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1117_addSyncMessageListener,"snikket.Client","addSyncMessageListener",0xf5301791,"snikket.Client.addSyncMessageListener","snikket/Client.hx",1117,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1128_addSyncMessageListener,"snikket.Client","addSyncMessageListener",0xf5301791,"snikket.Client.addSyncMessageListener","snikket/Client.hx",1128,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_221_addSyncMessageListener__fromC,"snikket.Client","addSyncMessageListener__fromC",0x6f8fdd08,"snikket.Client.addSyncMessageListener__fromC","HaxeCBridge.hx",221,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_252_addSyncMessageListener__fromC,"snikket.Client","addSyncMessageListener__fromC",0x6f8fdd08,"snikket.Client.addSyncMessageListener__fromC","HaxeCBridge.hx",252,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1126_addChatsUpdatedListener,"snikket.Client","addChatsUpdatedListener",0xed116e03,"snikket.Client.addChatsUpdatedListener","snikket/Client.hx",1126,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1137_addChatsUpdatedListener,"snikket.Client","addChatsUpdatedListener",0xed116e03,"snikket.Client.addChatsUpdatedListener","snikket/Client.hx",1137,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_221_addChatsUpdatedListener__fromC,"snikket.Client","addChatsUpdatedListener__fromC",0x109c18d6,"snikket.Client.addChatsUpdatedListener__fromC","HaxeCBridge.hx",221,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_252_addChatsUpdatedListener__fromC,"snikket.Client","addChatsUpdatedListener__fromC",0x109c18d6,"snikket.Client.addChatsUpdatedListener__fromC","HaxeCBridge.hx",252,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1138_addCallRingListener,"snikket.Client","addCallRingListener",0xdc0d9f11,"snikket.Client.addCallRingListener","snikket/Client.hx",1138,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1149_addCallRingListener,"snikket.Client","addCallRingListener",0xdc0d9f11,"snikket.Client.addCallRingListener","snikket/Client.hx",1149,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_221_addCallRingListener__fromC,"snikket.Client","addCallRingListener__fromC",0x01ba4588,"snikket.Client.addCallRingListener__fromC","HaxeCBridge.hx",221,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_252_addCallRingListener__fromC,"snikket.Client","addCallRingListener__fromC",0x01ba4588,"snikket.Client.addCallRingListener__fromC","HaxeCBridge.hx",252,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1150_addCallRetractListener,"snikket.Client","addCallRetractListener",0x2db0b2e8,"snikket.Client.addCallRetractListener","snikket/Client.hx",1150,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1161_addCallRetractListener,"snikket.Client","addCallRetractListener",0x2db0b2e8,"snikket.Client.addCallRetractListener","snikket/Client.hx",1161,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_221_addCallRetractListener__fromC,"snikket.Client","addCallRetractListener__fromC",0x424d6a91,"snikket.Client.addCallRetractListener__fromC","HaxeCBridge.hx",221,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_252_addCallRetractListener__fromC,"snikket.Client","addCallRetractListener__fromC",0x424d6a91,"snikket.Client.addCallRetractListener__fromC","HaxeCBridge.hx",252,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1162_addCallRingingListener,"snikket.Client","addCallRingingListener",0x568d8519,"snikket.Client.addCallRingingListener","snikket/Client.hx",1162,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1173_addCallRingingListener,"snikket.Client","addCallRingingListener",0x568d8519,"snikket.Client.addCallRingingListener","snikket/Client.hx",1173,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_221_addCallRingingListener__fromC,"snikket.Client","addCallRingingListener__fromC",0x8136b080,"snikket.Client.addCallRingingListener__fromC","HaxeCBridge.hx",221,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_252_addCallRingingListener__fromC,"snikket.Client","addCallRingingListener__fromC",0x8136b080,"snikket.Client.addCallRingingListener__fromC","HaxeCBridge.hx",252,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1176_addCallMediaListener,"snikket.Client","addCallMediaListener",0x2dfd660b,"snikket.Client.addCallMediaListener","snikket/Client.hx",1176,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1185_addCallUpdateStatusListener,"snikket.Client","addCallUpdateStatusListener",0x0ddac57c,"snikket.Client.addCallUpdateStatusListener","snikket/Client.hx",1185,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_221_addCallUpdateStatusListener__fromC,"snikket.Client","addCallUpdateStatusListener__fromC",0xb893927d,"snikket.Client.addCallUpdateStatusListener__fromC","HaxeCBridge.hx",221,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_252_addCallUpdateStatusListener__fromC,"snikket.Client","addCallUpdateStatusListener__fromC",0xb893927d,"snikket.Client.addCallUpdateStatusListener__fromC","HaxeCBridge.hx",252,0xa18550d8)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1199_addCallMediaListener,"snikket.Client","addCallMediaListener",0x2dfd660b,"snikket.Client.addCallMediaListener","snikket/Client.hx",1199,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_221_addCallMediaListener__fromC,"snikket.Client","addCallMediaListener__fromC",0x3b32b1ce,"snikket.Client.addCallMediaListener__fromC","HaxeCBridge.hx",221,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_252_addCallMediaListener__fromC,"snikket.Client","addCallMediaListener__fromC",0x3b32b1ce,"snikket.Client.addCallMediaListener__fromC","HaxeCBridge.hx",252,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1189_addCallTrackListener,"snikket.Client","addCallTrackListener",0xa60d6eb2,"snikket.Client.addCallTrackListener","snikket/Client.hx",1189,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1212_addCallTrackListener,"snikket.Client","addCallTrackListener",0xa60d6eb2,"snikket.Client.addCallTrackListener","snikket/Client.hx",1212,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_221_addCallTrackListener__fromC,"snikket.Client","addCallTrackListener__fromC",0xc89c1c07,"snikket.Client.addCallTrackListener__fromC","HaxeCBridge.hx",221,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_e44af0c967c6b6e2_252_addCallTrackListener__fromC,"snikket.Client","addCallTrackListener__fromC",0xc89c1c07,"snikket.Client.addCallTrackListener__fromC","HaxeCBridge.hx",252,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1198_setInForeground,"snikket.Client","setInForeground",0x4b9b9598,"snikket.Client.setInForeground","snikket/Client.hx",1198,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1206_setNotInForeground,"snikket.Client","setNotInForeground",0x61bbec2b,"snikket.Client.setNotInForeground","snikket/Client.hx",1206,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1216_fetchMediaByHash,"snikket.Client","fetchMediaByHash",0x227ef9a1,"snikket.Client.fetchMediaByHash","snikket/Client.hx",1216,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1212_fetchMediaByHash,"snikket.Client","fetchMediaByHash",0x227ef9a1,"snikket.Client.fetchMediaByHash","snikket/Client.hx",1212,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1223_fetchMediaByHashOneCounterpart,"snikket.Client","fetchMediaByHashOneCounterpart",0xeea071aa,"snikket.Client.fetchMediaByHashOneCounterpart","snikket/Client.hx",1223,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1229_fetchMediaByHashOneCounterpart,"snikket.Client","fetchMediaByHashOneCounterpart",0xeea071aa,"snikket.Client.fetchMediaByHashOneCounterpart","snikket/Client.hx",1229,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1234_fetchMediaByHashOneCounterpart,"snikket.Client","fetchMediaByHashOneCounterpart",0xeea071aa,"snikket.Client.fetchMediaByHashOneCounterpart","snikket/Client.hx",1234,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1227_fetchMediaByHashOneCounterpart,"snikket.Client","fetchMediaByHashOneCounterpart",0xeea071aa,"snikket.Client.fetchMediaByHashOneCounterpart","snikket/Client.hx",1227,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1238_fetchMediaByHashOneCounterpart,"snikket.Client","fetchMediaByHashOneCounterpart",0xeea071aa,"snikket.Client.fetchMediaByHashOneCounterpart","snikket/Client.hx",1238,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1224_fetchMediaByHashOneCounterpart,"snikket.Client","fetchMediaByHashOneCounterpart",0xeea071aa,"snikket.Client.fetchMediaByHashOneCounterpart","snikket/Client.hx",1224,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1219_fetchMediaByHashOneCounterpart,"snikket.Client","fetchMediaByHashOneCounterpart",0xeea071aa,"snikket.Client.fetchMediaByHashOneCounterpart","snikket/Client.hx",1219,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1243_chatActivity,"snikket.Client","chatActivity",0x128a3a39,"snikket.Client.chatActivity","snikket/Client.hx",1243,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1249_chatActivity,"snikket.Client","chatActivity",0x128a3a39,"snikket.Client.chatActivity","snikket/Client.hx",1249,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1260_sortChats,"snikket.Client","sortChats",0xbd9a9dab,"snikket.Client.sortChats","snikket/Client.hx",1260,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1269_storeMessages,"snikket.Client","storeMessages",0xb2e3dc1b,"snikket.Client.storeMessages","snikket/Client.hx",1269,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1274_sendQuery,"snikket.Client","sendQuery",0x8dcd73ee,"snikket.Client.sendQuery","snikket/Client.hx",1274,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1278_sendStanza,"snikket.Client","sendStanza",0xbca03e4f,"snikket.Client.sendStanza","snikket/Client.hx",1278,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1285_sendPresence,"snikket.Client","sendPresence",0xc1bc7d15,"snikket.Client.sendPresence","snikket/Client.hx",1285,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1286_sendPresence,"snikket.Client","sendPresence",0xc1bc7d15,"snikket.Client.sendPresence","snikket/Client.hx",1286,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1296_getIceServers,"snikket.Client","getIceServers",0xf7e15ac9,"snikket.Client.getIceServers","snikket/Client.hx",1296,0x180249e1)
-static const ::String _hx_array_data_7c06fe3c_192[] = {
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1221_setInForeground,"snikket.Client","setInForeground",0x4b9b9598,"snikket.Client.setInForeground","snikket/Client.hx",1221,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1229_setNotInForeground,"snikket.Client","setNotInForeground",0x61bbec2b,"snikket.Client.setNotInForeground","snikket/Client.hx",1229,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1239_fetchMediaByHash,"snikket.Client","fetchMediaByHash",0x227ef9a1,"snikket.Client.fetchMediaByHash","snikket/Client.hx",1239,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1235_fetchMediaByHash,"snikket.Client","fetchMediaByHash",0x227ef9a1,"snikket.Client.fetchMediaByHash","snikket/Client.hx",1235,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1246_fetchMediaByHashOneCounterpart,"snikket.Client","fetchMediaByHashOneCounterpart",0xeea071aa,"snikket.Client.fetchMediaByHashOneCounterpart","snikket/Client.hx",1246,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1252_fetchMediaByHashOneCounterpart,"snikket.Client","fetchMediaByHashOneCounterpart",0xeea071aa,"snikket.Client.fetchMediaByHashOneCounterpart","snikket/Client.hx",1252,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1257_fetchMediaByHashOneCounterpart,"snikket.Client","fetchMediaByHashOneCounterpart",0xeea071aa,"snikket.Client.fetchMediaByHashOneCounterpart","snikket/Client.hx",1257,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1250_fetchMediaByHashOneCounterpart,"snikket.Client","fetchMediaByHashOneCounterpart",0xeea071aa,"snikket.Client.fetchMediaByHashOneCounterpart","snikket/Client.hx",1250,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1261_fetchMediaByHashOneCounterpart,"snikket.Client","fetchMediaByHashOneCounterpart",0xeea071aa,"snikket.Client.fetchMediaByHashOneCounterpart","snikket/Client.hx",1261,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1247_fetchMediaByHashOneCounterpart,"snikket.Client","fetchMediaByHashOneCounterpart",0xeea071aa,"snikket.Client.fetchMediaByHashOneCounterpart","snikket/Client.hx",1247,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1242_fetchMediaByHashOneCounterpart,"snikket.Client","fetchMediaByHashOneCounterpart",0xeea071aa,"snikket.Client.fetchMediaByHashOneCounterpart","snikket/Client.hx",1242,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1266_chatActivity,"snikket.Client","chatActivity",0x128a3a39,"snikket.Client.chatActivity","snikket/Client.hx",1266,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1272_chatActivity,"snikket.Client","chatActivity",0x128a3a39,"snikket.Client.chatActivity","snikket/Client.hx",1272,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1283_sortChats,"snikket.Client","sortChats",0xbd9a9dab,"snikket.Client.sortChats","snikket/Client.hx",1283,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1292_storeMessages,"snikket.Client","storeMessages",0xb2e3dc1b,"snikket.Client.storeMessages","snikket/Client.hx",1292,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1297_sendQuery,"snikket.Client","sendQuery",0x8dcd73ee,"snikket.Client.sendQuery","snikket/Client.hx",1297,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1301_sendStanza,"snikket.Client","sendStanza",0xbca03e4f,"snikket.Client.sendStanza","snikket/Client.hx",1301,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1308_sendPresence,"snikket.Client","sendPresence",0xc1bc7d15,"snikket.Client.sendPresence","snikket/Client.hx",1308,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1309_sendPresence,"snikket.Client","sendPresence",0xc1bc7d15,"snikket.Client.sendPresence","snikket/Client.hx",1309,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1319_getIceServers,"snikket.Client","getIceServers",0xf7e15ac9,"snikket.Client.getIceServers","snikket/Client.hx",1319,0x180249e1)
+static const ::String _hx_array_data_7c06fe3c_200[] = {
 	HX_("stun",3a,f5,5b,4c),HX_("stuns",f9,9d,1a,84),HX_("turn",7d,eb,05,4d),HX_("turns",56,22,28,18),
 };
-static const ::String _hx_array_data_7c06fe3c_193[] = {
+static const ::String _hx_array_data_7c06fe3c_201[] = {
 	HX_("turn",7d,eb,05,4d),HX_("turns",56,22,28,18),
 };
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1294_getIceServers,"snikket.Client","getIceServers",0xf7e15ac9,"snikket.Client.getIceServers","snikket/Client.hx",1294,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1325_discoverServices,"snikket.Client","discoverServices",0x672de159,"snikket.Client.discoverServices","snikket/Client.hx",1325,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1328_discoverServices,"snikket.Client","discoverServices",0x672de159,"snikket.Client.discoverServices","snikket/Client.hx",1328,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1322_discoverServices,"snikket.Client","discoverServices",0x672de159,"snikket.Client.discoverServices","snikket/Client.hx",1322,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1337_notifyMessageHandlers,"snikket.Client","notifyMessageHandlers",0x61a351d5,"snikket.Client.notifyMessageHandlers","snikket/Client.hx",1337,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1346_notifySyncMessageHandlers,"snikket.Client","notifySyncMessageHandlers",0xb236243a,"snikket.Client.notifySyncMessageHandlers","snikket/Client.hx",1346,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1357_rosterGet,"snikket.Client","rosterGet",0xae66bf19,"snikket.Client.rosterGet","snikket/Client.hx",1357,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1355_rosterGet,"snikket.Client","rosterGet",0xae66bf19,"snikket.Client.rosterGet","snikket/Client.hx",1355,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1372_startChatWith,"snikket.Client","startChatWith",0x9e0699ce,"snikket.Client.startChatWith","snikket/Client.hx",1372,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1370_startChatWith,"snikket.Client","startChatWith",0x9e0699ce,"snikket.Client.startChatWith","snikket/Client.hx",1370,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1399_serverBlocked,"snikket.Client","serverBlocked",0xd88870b7,"snikket.Client.serverBlocked","snikket/Client.hx",1399,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1408_bookmarksGet,"snikket.Client","bookmarksGet",0x49f73b0b,"snikket.Client.bookmarksGet","snikket/Client.hx",1408,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1415_bookmarksGet,"snikket.Client","bookmarksGet",0x49f73b0b,"snikket.Client.bookmarksGet","snikket/Client.hx",1415,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1422_bookmarksGet,"snikket.Client","bookmarksGet",0x49f73b0b,"snikket.Client.bookmarksGet","snikket/Client.hx",1422,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1434_bookmarksGet,"snikket.Client","bookmarksGet",0x49f73b0b,"snikket.Client.bookmarksGet","snikket/Client.hx",1434,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1442_bookmarksGet,"snikket.Client","bookmarksGet",0x49f73b0b,"snikket.Client.bookmarksGet","snikket/Client.hx",1442,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1451_bookmarksGet,"snikket.Client","bookmarksGet",0x49f73b0b,"snikket.Client.bookmarksGet","snikket/Client.hx",1451,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1405_bookmarksGet,"snikket.Client","bookmarksGet",0x49f73b0b,"snikket.Client.bookmarksGet","snikket/Client.hx",1405,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1466_sync,"snikket.Client","sync",0x9a1851cd,"snikket.Client.sync","snikket/Client.hx",1466,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1470_sync,"snikket.Client","sync",0x9a1851cd,"snikket.Client.sync","snikket/Client.hx",1470,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1474_onMAMJMI,"snikket.Client","onMAMJMI",0xc3bb101e,"snikket.Client.onMAMJMI","snikket/Client.hx",1474,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1497_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1497,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1523_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1523,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1526_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1526,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1551_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1551,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1502_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1502,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1516_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1516,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1512_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1512,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1557_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1557,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1487_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1487,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1569_pingAllChannels,"snikket.Client","pingAllChannels",0x5c74390d,"snikket.Client.pingAllChannels","snikket/Client.hx",1569,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1576_joinAllChannels,"snikket.Client","joinAllChannels",0xde17fa95,"snikket.Client.joinAllChannels","snikket/Client.hx",1576,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1581_joinAllChannels,"snikket.Client","joinAllChannels",0xde17fa95,"snikket.Client.joinAllChannels","snikket/Client.hx",1581,0x180249e1)
-HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1585_joinAllChannels,"snikket.Client","joinAllChannels",0xde17fa95,"snikket.Client.joinAllChannels","snikket/Client.hx",1585,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1317_getIceServers,"snikket.Client","getIceServers",0xf7e15ac9,"snikket.Client.getIceServers","snikket/Client.hx",1317,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1348_discoverServices,"snikket.Client","discoverServices",0x672de159,"snikket.Client.discoverServices","snikket/Client.hx",1348,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1351_discoverServices,"snikket.Client","discoverServices",0x672de159,"snikket.Client.discoverServices","snikket/Client.hx",1351,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1345_discoverServices,"snikket.Client","discoverServices",0x672de159,"snikket.Client.discoverServices","snikket/Client.hx",1345,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1360_notifyMessageHandlers,"snikket.Client","notifyMessageHandlers",0x61a351d5,"snikket.Client.notifyMessageHandlers","snikket/Client.hx",1360,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1369_notifySyncMessageHandlers,"snikket.Client","notifySyncMessageHandlers",0xb236243a,"snikket.Client.notifySyncMessageHandlers","snikket/Client.hx",1369,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1380_rosterGet,"snikket.Client","rosterGet",0xae66bf19,"snikket.Client.rosterGet","snikket/Client.hx",1380,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1378_rosterGet,"snikket.Client","rosterGet",0xae66bf19,"snikket.Client.rosterGet","snikket/Client.hx",1378,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1395_startChatWith,"snikket.Client","startChatWith",0x9e0699ce,"snikket.Client.startChatWith","snikket/Client.hx",1395,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1393_startChatWith,"snikket.Client","startChatWith",0x9e0699ce,"snikket.Client.startChatWith","snikket/Client.hx",1393,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1422_serverBlocked,"snikket.Client","serverBlocked",0xd88870b7,"snikket.Client.serverBlocked","snikket/Client.hx",1422,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1431_bookmarksGet,"snikket.Client","bookmarksGet",0x49f73b0b,"snikket.Client.bookmarksGet","snikket/Client.hx",1431,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1438_bookmarksGet,"snikket.Client","bookmarksGet",0x49f73b0b,"snikket.Client.bookmarksGet","snikket/Client.hx",1438,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1445_bookmarksGet,"snikket.Client","bookmarksGet",0x49f73b0b,"snikket.Client.bookmarksGet","snikket/Client.hx",1445,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1457_bookmarksGet,"snikket.Client","bookmarksGet",0x49f73b0b,"snikket.Client.bookmarksGet","snikket/Client.hx",1457,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1465_bookmarksGet,"snikket.Client","bookmarksGet",0x49f73b0b,"snikket.Client.bookmarksGet","snikket/Client.hx",1465,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1474_bookmarksGet,"snikket.Client","bookmarksGet",0x49f73b0b,"snikket.Client.bookmarksGet","snikket/Client.hx",1474,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1428_bookmarksGet,"snikket.Client","bookmarksGet",0x49f73b0b,"snikket.Client.bookmarksGet","snikket/Client.hx",1428,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1489_sync,"snikket.Client","sync",0x9a1851cd,"snikket.Client.sync","snikket/Client.hx",1489,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1493_sync,"snikket.Client","sync",0x9a1851cd,"snikket.Client.sync","snikket/Client.hx",1493,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1497_onMAMJMI,"snikket.Client","onMAMJMI",0xc3bb101e,"snikket.Client.onMAMJMI","snikket/Client.hx",1497,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1520_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1520,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1546_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1546,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1549_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1549,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1574_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1574,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1525_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1525,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1539_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1539,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1535_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1535,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1580_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1580,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1510_doSync,"snikket.Client","doSync",0xbb063778,"snikket.Client.doSync","snikket/Client.hx",1510,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1592_pingAllChannels,"snikket.Client","pingAllChannels",0x5c74390d,"snikket.Client.pingAllChannels","snikket/Client.hx",1592,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1599_joinAllChannels,"snikket.Client","joinAllChannels",0xde17fa95,"snikket.Client.joinAllChannels","snikket/Client.hx",1599,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1604_joinAllChannels,"snikket.Client","joinAllChannels",0xde17fa95,"snikket.Client.joinAllChannels","snikket/Client.hx",1604,0x180249e1)
+HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_1608_joinAllChannels,"snikket.Client","joinAllChannels",0xde17fa95,"snikket.Client.joinAllChannels","snikket/Client.hx",1608,0x180249e1)
 HX_LOCAL_STACK_FRAME(_hx_pos_ead56881d4bbcaca_51_boot,"snikket.Client","boot",0x8ed41ba4,"snikket.Client.boot","snikket/Client.hx",51,0x180249e1)
 namespace snikket{
 
 void Client_obj::__construct(::String address,::Dynamic persistence){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Client,_gthis) HXARGC(1)
             		 ::snikket::EventResult _hx_run( ::Dynamic data){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_106_new)
-HXLINE( 106)			return _gthis->trigger(HX_("status/offline",c6,eb,eb,54), ::Dynamic(::hx::Anon_obj::Create(0)));
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_105_new)
+HXLINE( 105)			return _gthis->trigger(HX_("status/offline",c6,eb,eb,54), ::Dynamic(::hx::Anon_obj::Create(0)));
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_1, ::snikket::Client,_gthis,::Dynamic,persistence) HXARGC(1)
             		 ::snikket::EventResult _hx_run( ::Dynamic data){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_110_new)
-HXLINE( 111)			_gthis->token = ( (::String)(data->__Field(HX_("token",f9,82,2b,14),::hx::paccDynamic)) );
-HXLINE( 112)			::Dynamic persistence1 = persistence;
-HXDLIN( 112)			::String _hx_tmp = _gthis->jid->asBare()->asString();
-HXDLIN( 112)			::String _hx_tmp1;
-HXDLIN( 112)			::String tmp = _gthis->stream->clientId;
-HXDLIN( 112)			if (::hx::IsNotNull( tmp )) {
-HXLINE( 112)				_hx_tmp1 = tmp;
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_109_new)
+HXLINE( 110)			_gthis->token = ( (::String)(data->__Field(HX_("token",f9,82,2b,14),::hx::paccDynamic)) );
+HXLINE( 111)			::Dynamic persistence1 = persistence;
+HXDLIN( 111)			::String _hx_tmp = _gthis->jid->asBare()->asString();
+HXDLIN( 111)			::String _hx_tmp1;
+HXDLIN( 111)			::String tmp = _gthis->stream->clientId;
+HXDLIN( 111)			if (::hx::IsNotNull( tmp )) {
+HXLINE( 111)				_hx_tmp1 = tmp;
             			}
             			else {
-HXLINE( 112)				_hx_tmp1 = _gthis->jid->resource;
+HXLINE( 111)				_hx_tmp1 = _gthis->jid->resource;
             			}
-HXDLIN( 112)			::String _hx_tmp2 = _gthis->displayName();
-HXDLIN( 112)			::snikket::Persistence_obj::storeLogin(persistence1,_hx_tmp,_hx_tmp1,_hx_tmp2,_gthis->token);
-HXLINE( 113)			return ::snikket::EventResult_obj::EventHandled_dyn();
+HXDLIN( 111)			::String _hx_tmp2 = _gthis->displayName();
+HXDLIN( 111)			::snikket::Persistence_obj::storeLogin(persistence1,_hx_tmp,_hx_tmp1,_hx_tmp2,_gthis->token);
+HXLINE( 112)			return ::snikket::EventResult_obj::EventHandled_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_2, ::snikket::Client,_gthis,::Dynamic,persistence) HXARGC(1)
             		 ::snikket::EventResult _hx_run( ::Dynamic data){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_116_new)
-HXLINE( 117)			::Array< ::Dynamic> it = _gthis->chats;
-HXDLIN( 117)			bool result = false;
-HXDLIN( 117)			{
-HXLINE( 117)				int _g = 0;
-HXDLIN( 117)				while((_g < it->length)){
-HXLINE( 117)					 ::snikket::Chat x = it->__get(_g).StaticCast<  ::snikket::Chat >();
-HXDLIN( 117)					_g = (_g + 1);
-HXDLIN( 117)					bool _hx_tmp;
-HXDLIN( 117)					if ((x->uiState != 2)) {
-HXLINE( 117)						_hx_tmp = x->syncing();
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_115_new)
+HXLINE( 116)			::Array< ::Dynamic> it = _gthis->chats;
+HXDLIN( 116)			bool result = false;
+HXDLIN( 116)			{
+HXLINE( 116)				int _g = 0;
+HXDLIN( 116)				while((_g < it->length)){
+HXLINE( 116)					 ::snikket::Chat x = it->__get(_g).StaticCast<  ::snikket::Chat >();
+HXDLIN( 116)					_g = (_g + 1);
+HXDLIN( 116)					bool _hx_tmp;
+HXDLIN( 116)					if ((x->uiState != 2)) {
+HXLINE( 116)						_hx_tmp = x->syncing();
             					}
             					else {
-HXLINE( 117)						_hx_tmp = false;
+HXLINE( 116)						_hx_tmp = false;
             					}
-HXDLIN( 117)					if (_hx_tmp) {
-HXLINE( 117)						result = true;
-HXDLIN( 117)						goto _hx_goto_0;
+HXDLIN( 116)					if (_hx_tmp) {
+HXLINE( 116)						result = true;
+HXDLIN( 116)						goto _hx_goto_0;
             					}
             				}
             				_hx_goto_0:;
             			}
-HXDLIN( 117)			bool anySyncHappening = result;
-HXLINE( 118)			::Dynamic persistence1 = persistence;
-HXDLIN( 118)			::String _hx_tmp1 = _gthis->accountId();
-HXDLIN( 118)			::Array< unsigned char > _hx_tmp2;
-HXDLIN( 118)			if (anySyncHappening) {
-HXLINE( 118)				_hx_tmp2 = null();
+HXDLIN( 116)			bool anySyncHappening = result;
+HXLINE( 117)			::Dynamic persistence1 = persistence;
+HXDLIN( 117)			::String _hx_tmp1 = _gthis->accountId();
+HXDLIN( 117)			::Array< unsigned char > _hx_tmp2;
+HXDLIN( 117)			if (anySyncHappening) {
+HXLINE( 117)				_hx_tmp2 = null();
             			}
             			else {
-HXLINE( 118)				_hx_tmp2 = ( (::Array< unsigned char >)(data->__Field(HX_("sm",9a,64,00,00),::hx::paccDynamic)) );
+HXLINE( 117)				_hx_tmp2 = ( (::Array< unsigned char >)(data->__Field(HX_("sm",9a,64,00,00),::hx::paccDynamic)) );
             			}
-HXDLIN( 118)			::snikket::Persistence_obj::storeStreamManagement(persistence1,_hx_tmp1,_hx_tmp2);
-HXLINE( 119)			return ::snikket::EventResult_obj::EventHandled_dyn();
+HXDLIN( 117)			::snikket::Persistence_obj::storeStreamManagement(persistence1,_hx_tmp1,_hx_tmp2);
+HXLINE( 118)			return ::snikket::EventResult_obj::EventHandled_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
@@ -578,16 +579,16 @@ HXLINE( 119)			return ::snikket::EventResult_obj::EventHandled_dyn();
             		 ::snikket::EventResult _hx_run( ::Dynamic data){
             			HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_3, ::snikket::Client,_gthis) HXARGC(1)
             			void _hx_run( ::snikket::ChatMessage m){
-            				HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_127_new)
-HXLINE( 127)				_gthis->notifyMessageHandlers(m,3);
+            				HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_126_new)
+HXLINE( 126)				_gthis->notifyMessageHandlers(m,3);
             			}
             			HX_END_LOCAL_FUNC1((void))
 
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_122_new)
-HXLINE( 123)			::Dynamic persistence1 = persistence;
-HXLINE( 124)			::String _hx_tmp = _gthis->accountId();
-HXLINE( 123)			::snikket::Persistence_obj::updateMessageStatus(persistence1,_hx_tmp, ::Dynamic(data->__Field(HX_("id",db,5b,00,00),::hx::paccDynamic)),1, ::Dynamic(new _hx_Closure_3(_gthis)));
-HXLINE( 129)			return ::snikket::EventResult_obj::EventHandled_dyn();
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_121_new)
+HXLINE( 122)			::Dynamic persistence1 = persistence;
+HXLINE( 123)			::String _hx_tmp = _gthis->accountId();
+HXLINE( 122)			::snikket::Persistence_obj::updateMessageStatus(persistence1,_hx_tmp, ::Dynamic(data->__Field(HX_("id",db,5b,00,00),::hx::paccDynamic)),1, ::Dynamic(new _hx_Closure_3(_gthis)));
+HXLINE( 128)			return ::snikket::EventResult_obj::EventHandled_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
@@ -595,16 +596,16 @@ HXLINE( 129)			return ::snikket::EventResult_obj::EventHandled_dyn();
             		 ::snikket::EventResult _hx_run( ::Dynamic data){
             			HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_5, ::snikket::Client,_gthis) HXARGC(1)
             			void _hx_run( ::snikket::ChatMessage m){
-            				HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_137_new)
-HXLINE( 137)				_gthis->notifyMessageHandlers(m,3);
+            				HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_136_new)
+HXLINE( 136)				_gthis->notifyMessageHandlers(m,3);
             			}
             			HX_END_LOCAL_FUNC1((void))
 
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_132_new)
-HXLINE( 133)			::Dynamic persistence1 = persistence;
-HXLINE( 134)			::String _hx_tmp = _gthis->accountId();
-HXLINE( 133)			::snikket::Persistence_obj::updateMessageStatus(persistence1,_hx_tmp, ::Dynamic(data->__Field(HX_("id",db,5b,00,00),::hx::paccDynamic)),3, ::Dynamic(new _hx_Closure_5(_gthis)));
-HXLINE( 139)			return ::snikket::EventResult_obj::EventHandled_dyn();
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_131_new)
+HXLINE( 132)			::Dynamic persistence1 = persistence;
+HXLINE( 133)			::String _hx_tmp = _gthis->accountId();
+HXLINE( 132)			::snikket::Persistence_obj::updateMessageStatus(persistence1,_hx_tmp, ::Dynamic(data->__Field(HX_("id",db,5b,00,00),::hx::paccDynamic)),3, ::Dynamic(new _hx_Closure_5(_gthis)));
+HXLINE( 138)			return ::snikket::EventResult_obj::EventHandled_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
@@ -612,155 +613,155 @@ HXLINE( 139)			return ::snikket::EventResult_obj::EventHandled_dyn();
             		 ::snikket::EventResult _hx_run( ::Dynamic event){
             			HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_7, ::snikket::Client,_gthis) HXARGC(2)
             			 ::snikket::ChatMessageBuilder _hx_run( ::snikket::ChatMessageBuilder builder, ::snikket::Stanza stanza){
-            				HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_167_new)
-HXLINE( 168)				 ::snikket::Client _gthis1 = _gthis;
-HXDLIN( 168)				 ::snikket::Chat chat = _gthis1->getChat(builder->chatId());
-HXLINE( 169)				bool message;
-HXDLIN( 169)				if (::hx::IsNull( chat )) {
-HXLINE( 169)					message = (( (::String)(::Reflect_obj::field(stanza->attr,HX_("type",ba,f2,08,4d))) ) != HX_("groupchat",97,1d,c8,e5));
+            				HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_166_new)
+HXLINE( 167)				 ::snikket::Client _gthis1 = _gthis;
+HXDLIN( 167)				 ::snikket::Chat chat = _gthis1->getChat(builder->chatId());
+HXLINE( 168)				bool message;
+HXDLIN( 168)				if (::hx::IsNull( chat )) {
+HXLINE( 168)					message = (( (::String)(::Reflect_obj::field(stanza->attr,HX_("type",ba,f2,08,4d))) ) != HX_("groupchat",97,1d,c8,e5));
             				}
             				else {
-HXLINE( 169)					message = false;
+HXLINE( 168)					message = false;
             				}
-HXDLIN( 169)				if (message) {
-HXLINE( 169)					 ::snikket::Client _gthis2 = _gthis;
-HXDLIN( 169)					chat = _gthis2->getDirectChat(builder->chatId(),null());
+HXDLIN( 168)				if (message) {
+HXLINE( 168)					 ::snikket::Client _gthis2 = _gthis;
+HXDLIN( 168)					chat = _gthis2->getDirectChat(builder->chatId(),null());
             				}
-HXLINE( 170)				if (::hx::IsNull( chat )) {
-HXLINE( 170)					return builder;
+HXLINE( 169)				if (::hx::IsNull( chat )) {
+HXLINE( 169)					return builder;
             				}
-HXLINE( 171)				return chat->prepareIncomingMessage(builder,stanza);
+HXLINE( 170)				return chat->prepareIncomingMessage(builder,stanza);
             			}
             			HX_END_LOCAL_FUNC2(return)
 
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_142_new)
-HXLINE( 143)			 ::snikket::Stanza stanza = ( ( ::snikket::Stanza)(event->__Field(HX_("stanza",f5,5d,f7,05),::hx::paccDynamic)) );
-HXLINE( 145)			if (::hx::IsNotNull( stanza->getChild(HX_("result",dd,68,84,08),HX_("urn:xmpp:mam:2",f5,ef,8c,da)) )) {
-HXLINE( 147)				return ::snikket::EventResult_obj::EventUnhandled_dyn();
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_141_new)
+HXLINE( 142)			 ::snikket::Stanza stanza = ( ( ::snikket::Stanza)(event->__Field(HX_("stanza",f5,5d,f7,05),::hx::paccDynamic)) );
+HXLINE( 144)			if (::hx::IsNotNull( stanza->getChild(HX_("result",dd,68,84,08),HX_("urn:xmpp:mam:2",f5,ef,8c,da)) )) {
+HXLINE( 146)				return ::snikket::EventResult_obj::EventUnhandled_dyn();
             			}
-HXLINE( 150)			 ::snikket::JID from;
-HXDLIN( 150)			if (::hx::IsNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ) )) {
-HXLINE( 150)				from = null();
+HXLINE( 149)			 ::snikket::JID from;
+HXDLIN( 149)			if (::hx::IsNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ) )) {
+HXLINE( 149)				from = null();
             			}
             			else {
-HXLINE( 150)				from = ::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ));
+HXLINE( 149)				from = ::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ));
             			}
-HXLINE( 152)			bool _hx_tmp;
-HXDLIN( 152)			if ((( (::String)(::Reflect_obj::field(stanza->attr,HX_("type",ba,f2,08,4d))) ) == HX_("error",c8,cb,29,73))) {
-HXLINE( 152)				_hx_tmp = ::hx::IsNotNull( from );
+HXLINE( 151)			bool _hx_tmp;
+HXDLIN( 151)			if ((( (::String)(::Reflect_obj::field(stanza->attr,HX_("type",ba,f2,08,4d))) ) == HX_("error",c8,cb,29,73))) {
+HXLINE( 151)				_hx_tmp = ::hx::IsNotNull( from );
             			}
             			else {
-HXLINE( 152)				_hx_tmp = false;
+HXLINE( 151)				_hx_tmp = false;
             			}
-HXDLIN( 152)			if (_hx_tmp) {
-HXLINE( 153)				 ::snikket::Client _gthis1 = _gthis;
-HXDLIN( 153)				 ::snikket::Chat chat = _gthis1->getChat(from->asBare()->asString());
-HXLINE( 154)				 ::snikket::Channel channel = ( ( ::snikket::Channel)(::Std_obj::downcast(chat,::hx::ClassOf< ::snikket::Channel >())) );
-HXLINE( 155)				if (::hx::IsNotNull( channel )) {
-HXLINE( 155)					channel->selfPing(true);
+HXDLIN( 151)			if (_hx_tmp) {
+HXLINE( 152)				 ::snikket::Client _gthis1 = _gthis;
+HXDLIN( 152)				 ::snikket::Chat chat = _gthis1->getChat(from->asBare()->asString());
+HXLINE( 153)				 ::snikket::Channel channel = ( ( ::snikket::Channel)(::Std_obj::downcast(chat,::hx::ClassOf< ::snikket::Channel >())) );
+HXLINE( 154)				if (::hx::IsNotNull( channel )) {
+HXLINE( 154)					channel->selfPing(true);
             				}
             			}
-HXLINE( 158)			 ::snikket::Stanza fwd = null();
-HXLINE( 159)			bool _hx_tmp1;
-HXDLIN( 159)			if (::hx::IsNotNull( from )) {
-HXLINE( 159)				::String _hx_tmp2 = from->asBare()->asString();
-HXDLIN( 159)				_hx_tmp1 = (_hx_tmp2 == _gthis->accountId());
+HXLINE( 157)			 ::snikket::Stanza fwd = null();
+HXLINE( 158)			bool _hx_tmp1;
+HXDLIN( 158)			if (::hx::IsNotNull( from )) {
+HXLINE( 158)				::String _hx_tmp2 = from->asBare()->asString();
+HXDLIN( 158)				_hx_tmp1 = (_hx_tmp2 == _gthis->accountId());
             			}
             			else {
-HXLINE( 159)				_hx_tmp1 = false;
+HXLINE( 158)				_hx_tmp1 = false;
             			}
-HXDLIN( 159)			if (_hx_tmp1) {
-HXLINE( 160)				 ::snikket::Stanza carbon = stanza->getChild(HX_("received",21,45,fd,e2),HX_("urn:xmpp:carbons:2",02,86,9e,df));
-HXLINE( 161)				if (::hx::IsNull( carbon )) {
-HXLINE( 161)					carbon = stanza->getChild(HX_("sent",58,8d,50,4c),HX_("urn:xmpp:carbons:2",02,86,9e,df));
+HXDLIN( 158)			if (_hx_tmp1) {
+HXLINE( 159)				 ::snikket::Stanza carbon = stanza->getChild(HX_("received",21,45,fd,e2),HX_("urn:xmpp:carbons:2",02,86,9e,df));
+HXLINE( 160)				if (::hx::IsNull( carbon )) {
+HXLINE( 160)					carbon = stanza->getChild(HX_("sent",58,8d,50,4c),HX_("urn:xmpp:carbons:2",02,86,9e,df));
             				}
-HXLINE( 162)				if (::hx::IsNotNull( carbon )) {
-HXLINE( 163)					 ::snikket::Stanza tmp = carbon->getChild(HX_("forwarded",64,f5,9a,17),HX_("urn:xmpp:forward:0",1f,ec,b0,d1));
-HXDLIN( 163)					if (::hx::IsNotNull( tmp )) {
-HXLINE( 163)						fwd = tmp->getFirstChild();
+HXLINE( 161)				if (::hx::IsNotNull( carbon )) {
+HXLINE( 162)					 ::snikket::Stanza tmp = carbon->getChild(HX_("forwarded",64,f5,9a,17),HX_("urn:xmpp:forward:0",1f,ec,b0,d1));
+HXDLIN( 162)					if (::hx::IsNotNull( tmp )) {
+HXLINE( 162)						fwd = tmp->getFirstChild();
             					}
             					else {
-HXLINE( 163)						fwd = null();
+HXLINE( 162)						fwd = null();
             					}
             				}
             			}
-HXLINE( 167)			 ::snikket::Message message = ::snikket::Message_obj::fromStanza(stanza,_gthis->jid, ::Dynamic(new _hx_Closure_7(_gthis)));
-HXLINE( 173)			{
-HXLINE( 173)				 ::snikket::MessageStanza _g = message->parsed;
-HXDLIN( 173)				switch((int)(_g->_hx_getIndex())){
+HXLINE( 166)			 ::snikket::Message message = ::snikket::Message_obj::fromStanza(stanza,_gthis->jid, ::Dynamic(new _hx_Closure_7(_gthis)));
+HXLINE( 172)			{
+HXLINE( 172)				 ::snikket::MessageStanza _g = message->parsed;
+HXDLIN( 172)				switch((int)(_g->_hx_getIndex())){
             					case (int)1: {
-HXLINE( 174)						 ::snikket::ChatMessage chatMessage = _g->_hx_getObject(0).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN( 174)						{
-HXLINE( 175)							{
-HXLINE( 175)								int _g1 = 0;
-HXDLIN( 175)								::Array< ::Dynamic> _g2 = chatMessage->inlineHashReferences();
-HXDLIN( 175)								while((_g1 < _g2->length)){
-HXLINE( 175)									 ::snikket::Hash hash = _g2->__get(_g1).StaticCast<  ::snikket::Hash >();
-HXDLIN( 175)									_g1 = (_g1 + 1);
-HXLINE( 176)									_gthis->fetchMediaByHash(::Array_obj< ::Dynamic>::__new(1)->init(0,hash),::Array_obj< ::Dynamic>::__new(1)->init(0,chatMessage->from));
+HXLINE( 173)						 ::snikket::ChatMessage chatMessage = _g->_hx_getObject(0).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN( 173)						{
+HXLINE( 174)							{
+HXLINE( 174)								int _g1 = 0;
+HXDLIN( 174)								::Array< ::Dynamic> _g2 = chatMessage->inlineHashReferences();
+HXDLIN( 174)								while((_g1 < _g2->length)){
+HXLINE( 174)									 ::snikket::Hash hash = _g2->__get(_g1).StaticCast<  ::snikket::Hash >();
+HXDLIN( 174)									_g1 = (_g1 + 1);
+HXLINE( 175)									_gthis->fetchMediaByHash(::Array_obj< ::Dynamic>::__new(1)->init(0,hash),::Array_obj< ::Dynamic>::__new(1)->init(0,chatMessage->from));
             								}
             							}
-HXLINE( 178)							 ::snikket::Client _gthis2 = _gthis;
-HXDLIN( 178)							 ::snikket::Chat chat1 = _gthis2->getChat(chatMessage->chatId());
-HXLINE( 179)							if (::hx::IsNotNull( chat1 )) {
+HXLINE( 177)							 ::snikket::Client _gthis2 = _gthis;
+HXDLIN( 177)							 ::snikket::Chat chat1 = _gthis2->getChat(chatMessage->chatId());
+HXLINE( 178)							if (::hx::IsNotNull( chat1 )) {
             								HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_8, ::snikket::Client,_gthis, ::snikket::Chat,chat1) HXARGC(1)
             								void _hx_run( ::snikket::ChatMessage chatMessage){
-            									HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_180_new)
-HXLINE( 181)									int updateChat;
-HXDLIN( 181)									if ((chatMessage->versions->length > 1)) {
-HXLINE( 181)										updateChat = 1;
+            									HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_179_new)
+HXLINE( 180)									int updateChat;
+HXDLIN( 180)									if ((chatMessage->versions->length > 1)) {
+HXLINE( 180)										updateChat = 1;
             									}
             									else {
-HXLINE( 181)										updateChat = 0;
+HXLINE( 180)										updateChat = 0;
             									}
-HXDLIN( 181)									_gthis->notifyMessageHandlers(chatMessage,updateChat);
-HXLINE( 182)									bool updateChat1;
-HXDLIN( 182)									bool updateChat2;
-HXDLIN( 182)									if ((chatMessage->versions->length >= 1)) {
-HXLINE( 182)										::String updateChat3 = chat1->lastMessageId();
-HXDLIN( 182)										updateChat2 = (updateChat3 == chatMessage->serverId);
+HXDLIN( 180)									_gthis->notifyMessageHandlers(chatMessage,updateChat);
+HXLINE( 181)									bool updateChat1;
+HXDLIN( 181)									bool updateChat2;
+HXDLIN( 181)									if ((chatMessage->versions->length >= 1)) {
+HXLINE( 181)										::String updateChat3 = chat1->lastMessageId();
+HXDLIN( 181)										updateChat2 = (updateChat3 == chatMessage->serverId);
             									}
             									else {
-HXLINE( 182)										updateChat2 = true;
+HXLINE( 181)										updateChat2 = true;
             									}
-HXDLIN( 182)									if (!(updateChat2)) {
-HXLINE( 182)										::String updateChat4 = chat1->lastMessageId();
-HXDLIN( 182)										updateChat1 = (updateChat4 == chatMessage->localId);
+HXDLIN( 181)									if (!(updateChat2)) {
+HXLINE( 181)										::String updateChat4 = chat1->lastMessageId();
+HXDLIN( 181)										updateChat1 = (updateChat4 == chatMessage->localId);
             									}
             									else {
-HXLINE( 182)										updateChat1 = true;
+HXLINE( 181)										updateChat1 = true;
             									}
-HXDLIN( 182)									if (updateChat1) {
-HXLINE( 183)										chat1->setLastMessage(chatMessage);
-HXLINE( 184)										if ((chatMessage->versions->length < 1)) {
-HXLINE( 184)											 ::snikket::Chat chat = chat1;
-HXDLIN( 184)											int updateChat5;
-HXDLIN( 184)											if (chatMessage->isIncoming()) {
-HXLINE( 184)												updateChat5 = (chat1->unreadCount() + 1);
+HXDLIN( 181)									if (updateChat1) {
+HXLINE( 182)										chat1->setLastMessage(chatMessage);
+HXLINE( 183)										if ((chatMessage->versions->length < 1)) {
+HXLINE( 183)											 ::snikket::Chat chat = chat1;
+HXDLIN( 183)											int updateChat5;
+HXDLIN( 183)											if (chatMessage->isIncoming()) {
+HXLINE( 183)												updateChat5 = (chat1->unreadCount() + 1);
             											}
             											else {
-HXLINE( 184)												updateChat5 = 0;
+HXLINE( 183)												updateChat5 = 0;
             											}
-HXDLIN( 184)											chat->setUnreadCount(updateChat5);
+HXDLIN( 183)											chat->setUnreadCount(updateChat5);
             										}
-HXLINE( 185)										_gthis->chatActivity(chat1,null());
+HXLINE( 184)										_gthis->chatActivity(chat1,null());
             									}
             								}
             								HX_END_LOCAL_FUNC1((void))
 
-HXLINE( 180)								 ::Dynamic updateChat =  ::Dynamic(new _hx_Closure_8(_gthis,chat1));
-HXLINE( 188)								if (::hx::IsNull( chatMessage->serverId )) {
-HXLINE( 189)									updateChat(chatMessage);
+HXLINE( 179)								 ::Dynamic updateChat =  ::Dynamic(new _hx_Closure_8(_gthis,chat1));
+HXLINE( 187)								if (::hx::IsNull( chatMessage->serverId )) {
+HXLINE( 188)									updateChat(chatMessage);
             								}
             								else {
             									HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_9, ::Dynamic,updateChat) HXARGC(1)
             									void _hx_run(::Array< ::Dynamic> stored){
-            										HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_191_new)
-HXLINE( 191)										updateChat(stored->__get(0).StaticCast<  ::snikket::ChatMessage >());
+            										HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_190_new)
+HXLINE( 190)										updateChat(stored->__get(0).StaticCast<  ::snikket::ChatMessage >());
             									}
             									HX_END_LOCAL_FUNC1((void))
 
-HXLINE( 191)									_gthis->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,chatMessage), ::Dynamic(new _hx_Closure_9(updateChat)));
+HXLINE( 190)									_gthis->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,chatMessage), ::Dynamic(new _hx_Closure_9(updateChat)));
             								}
             							}
             						}
@@ -769,40 +770,40 @@ HXLINE( 191)									_gthis->storeMessages(::Array_obj< ::Dynamic>::__new(1)->in
             					case (int)2: {
             						HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_10, ::snikket::Client,_gthis) HXARGC(1)
             						void _hx_run( ::snikket::ChatMessage stored){
-            							HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_200_new)
-HXLINE( 200)							if (::hx::IsNotNull( stored )) {
-HXLINE( 200)								_gthis->notifyMessageHandlers(stored,1);
+            							HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_199_new)
+HXLINE( 199)							if (::hx::IsNotNull( stored )) {
+HXLINE( 199)								_gthis->notifyMessageHandlers(stored,1);
             							}
             						}
             						HX_END_LOCAL_FUNC1((void))
 
-HXLINE( 199)						 ::snikket::ModerationAction action = _g->_hx_getObject(0).StaticCast<  ::snikket::ModerationAction >();
-HXLINE( 200)						::thenshim::_Promise::Promise_Impl__obj::then(_gthis->moderateMessage(action), ::Dynamic(new _hx_Closure_10(_gthis)),null());
+HXLINE( 198)						 ::snikket::ModerationAction action = _g->_hx_getObject(0).StaticCast<  ::snikket::ModerationAction >();
+HXLINE( 199)						::thenshim::_Promise::Promise_Impl__obj::then(_gthis->moderateMessage(action), ::Dynamic(new _hx_Closure_10(_gthis)),null());
             					}
             					break;
             					case (int)3: {
-HXLINE( 194)						 ::snikket::ReactionUpdate update = _g->_hx_getObject(0).StaticCast<  ::snikket::ReactionUpdate >();
-HXDLIN( 194)						{
+HXLINE( 193)						 ::snikket::ReactionUpdate update = _g->_hx_getObject(0).StaticCast<  ::snikket::ReactionUpdate >();
+HXDLIN( 193)						{
             							HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_11, ::snikket::Client,_gthis) HXARGC(1)
             							void _hx_run( ::snikket::ChatMessage stored){
-            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_198_new)
-HXLINE( 198)								if (::hx::IsNotNull( stored )) {
-HXLINE( 198)									_gthis->notifyMessageHandlers(stored,2);
+            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_197_new)
+HXLINE( 197)								if (::hx::IsNotNull( stored )) {
+HXLINE( 197)									_gthis->notifyMessageHandlers(stored,2);
             								}
             							}
             							HX_END_LOCAL_FUNC1((void))
 
-HXLINE( 195)							{
-HXLINE( 195)								int _g3 = 0;
-HXDLIN( 195)								::Array< ::Dynamic> _g4 = update->inlineHashReferences();
-HXDLIN( 195)								while((_g3 < _g4->length)){
-HXLINE( 195)									 ::snikket::Hash hash1 = _g4->__get(_g3).StaticCast<  ::snikket::Hash >();
-HXDLIN( 195)									_g3 = (_g3 + 1);
-HXLINE( 196)									_gthis->fetchMediaByHash(::Array_obj< ::Dynamic>::__new(1)->init(0,hash1),::Array_obj< ::Dynamic>::__new(1)->init(0,from));
+HXLINE( 194)							{
+HXLINE( 194)								int _g3 = 0;
+HXDLIN( 194)								::Array< ::Dynamic> _g4 = update->inlineHashReferences();
+HXDLIN( 194)								while((_g3 < _g4->length)){
+HXLINE( 194)									 ::snikket::Hash hash1 = _g4->__get(_g3).StaticCast<  ::snikket::Hash >();
+HXDLIN( 194)									_g3 = (_g3 + 1);
+HXLINE( 195)									_gthis->fetchMediaByHash(::Array_obj< ::Dynamic>::__new(1)->init(0,hash1),::Array_obj< ::Dynamic>::__new(1)->init(0,from));
             								}
             							}
-HXLINE( 198)							::Dynamic persistence1 = persistence;
-HXDLIN( 198)							::snikket::Persistence_obj::storeReaction(persistence1,_gthis->accountId(),update, ::Dynamic(new _hx_Closure_11(_gthis)));
+HXLINE( 197)							::Dynamic persistence1 = persistence;
+HXDLIN( 197)							::snikket::Persistence_obj::storeReaction(persistence1,_gthis->accountId(),update, ::Dynamic(new _hx_Closure_11(_gthis)));
             						}
             					}
             					break;
@@ -810,107 +811,107 @@ HXDLIN( 198)							::snikket::Persistence_obj::storeReaction(persistence1,_gthis
             					}
             				}
             			}
-HXLINE( 205)			 ::snikket::Stanza jmiP = stanza->getChild(HX_("propose",fe,fe,e9,f9),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07));
-HXLINE( 206)			bool _hx_tmp3;
-HXDLIN( 206)			if (::hx::IsNotNull( jmiP )) {
-HXLINE( 206)				_hx_tmp3 = ::hx::IsNotNull( ( (::String)(::Reflect_obj::field(jmiP->attr,HX_("id",db,5b,00,00))) ) );
+HXLINE( 204)			 ::snikket::Stanza jmiP = stanza->getChild(HX_("propose",fe,fe,e9,f9),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07));
+HXLINE( 205)			bool _hx_tmp3;
+HXDLIN( 205)			if (::hx::IsNotNull( jmiP )) {
+HXLINE( 205)				_hx_tmp3 = ::hx::IsNotNull( ( (::String)(::Reflect_obj::field(jmiP->attr,HX_("id",db,5b,00,00))) ) );
             			}
             			else {
-HXLINE( 206)				_hx_tmp3 = false;
-            			}
-HXDLIN( 206)			if (_hx_tmp3) {
-HXLINE( 207)				 ::snikket::Client _gthis3 = _gthis;
-HXDLIN( 207)				 ::snikket::jingle::IncomingProposedSession session =  ::snikket::jingle::IncomingProposedSession_obj::__alloc( HX_CTX ,_gthis3,from,( (::String)(::Reflect_obj::field(jmiP->attr,HX_("id",db,5b,00,00))) ));
-HXLINE( 208)				 ::snikket::Client _gthis4 = _gthis;
-HXDLIN( 208)				 ::snikket::DirectChat chat2 = _gthis4->getDirectChat(from->asBare()->asString(),null());
-HXLINE( 209)				::Dynamic this1 = chat2->jingleSessions;
-HXDLIN( 209)				if (!(( ( ::haxe::ds::StringMap)(this1) )->exists(session->get_sid()))) {
-HXLINE( 210)					{
-HXLINE( 210)						::Dynamic this2 = chat2->jingleSessions;
-HXDLIN( 210)						( ( ::haxe::ds::StringMap)(this2) )->set(session->get_sid(),session);
+HXLINE( 205)				_hx_tmp3 = false;
+            			}
+HXDLIN( 205)			if (_hx_tmp3) {
+HXLINE( 206)				 ::snikket::Client _gthis3 = _gthis;
+HXDLIN( 206)				 ::snikket::jingle::IncomingProposedSession session =  ::snikket::jingle::IncomingProposedSession_obj::__alloc( HX_CTX ,_gthis3,from,( (::String)(::Reflect_obj::field(jmiP->attr,HX_("id",db,5b,00,00))) ));
+HXLINE( 207)				 ::snikket::Client _gthis4 = _gthis;
+HXDLIN( 207)				 ::snikket::DirectChat chat2 = _gthis4->getDirectChat(from->asBare()->asString(),null());
+HXLINE( 208)				::Dynamic this1 = chat2->jingleSessions;
+HXDLIN( 208)				if (!(( ( ::haxe::ds::StringMap)(this1) )->exists(session->get_sid()))) {
+HXLINE( 209)					{
+HXLINE( 209)						::Dynamic this2 = chat2->jingleSessions;
+HXDLIN( 209)						( ( ::haxe::ds::StringMap)(this2) )->set(session->get_sid(),session);
             					}
-HXLINE( 211)					_gthis->chatActivity(chat2,null());
-HXLINE( 212)					session->ring();
+HXLINE( 210)					_gthis->chatActivity(chat2,null());
+HXLINE( 211)					session->ring();
             				}
             			}
-HXLINE( 216)			 ::snikket::Stanza jmiR = stanza->getChild(HX_("retract",01,e2,b9,fc),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07));
-HXLINE( 217)			bool _hx_tmp4;
-HXDLIN( 217)			if (::hx::IsNotNull( jmiR )) {
-HXLINE( 217)				_hx_tmp4 = ::hx::IsNotNull( ( (::String)(::Reflect_obj::field(jmiR->attr,HX_("id",db,5b,00,00))) ) );
+HXLINE( 215)			 ::snikket::Stanza jmiR = stanza->getChild(HX_("retract",01,e2,b9,fc),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07));
+HXLINE( 216)			bool _hx_tmp4;
+HXDLIN( 216)			if (::hx::IsNotNull( jmiR )) {
+HXLINE( 216)				_hx_tmp4 = ::hx::IsNotNull( ( (::String)(::Reflect_obj::field(jmiR->attr,HX_("id",db,5b,00,00))) ) );
             			}
             			else {
-HXLINE( 217)				_hx_tmp4 = false;
-            			}
-HXDLIN( 217)			if (_hx_tmp4) {
-HXLINE( 218)				 ::snikket::Client _gthis5 = _gthis;
-HXDLIN( 218)				 ::snikket::DirectChat chat3 = _gthis5->getDirectChat(from->asBare()->asString(),null());
-HXLINE( 219)				::Dynamic this3 = chat3->jingleSessions;
-HXDLIN( 219)				::Dynamic session1 = ( ( ::haxe::ds::StringMap)(this3) )->get(( (::String)(::Reflect_obj::field(jmiR->attr,HX_("id",db,5b,00,00))) ));
-HXLINE( 220)				if (::hx::IsNotNull( session1 )) {
-HXLINE( 221)					::snikket::jingle::Session_obj::retract(session1);
-HXLINE( 222)					{
-HXLINE( 222)						::Dynamic this4 = chat3->jingleSessions;
-HXDLIN( 222)						( ( ::haxe::ds::StringMap)(this4) )->remove(::snikket::jingle::Session_obj::get_sid(session1));
+HXLINE( 216)				_hx_tmp4 = false;
+            			}
+HXDLIN( 216)			if (_hx_tmp4) {
+HXLINE( 217)				 ::snikket::Client _gthis5 = _gthis;
+HXDLIN( 217)				 ::snikket::DirectChat chat3 = _gthis5->getDirectChat(from->asBare()->asString(),null());
+HXLINE( 218)				::Dynamic this3 = chat3->jingleSessions;
+HXDLIN( 218)				::Dynamic session1 = ( ( ::haxe::ds::StringMap)(this3) )->get(( (::String)(::Reflect_obj::field(jmiR->attr,HX_("id",db,5b,00,00))) ));
+HXLINE( 219)				if (::hx::IsNotNull( session1 )) {
+HXLINE( 220)					::snikket::jingle::Session_obj::retract(session1);
+HXLINE( 221)					{
+HXLINE( 221)						::Dynamic this4 = chat3->jingleSessions;
+HXDLIN( 221)						( ( ::haxe::ds::StringMap)(this4) )->remove(::snikket::jingle::Session_obj::get_sid(session1));
             					}
             				}
             			}
-HXLINE( 227)			 ::snikket::Stanza jmiProFwd;
-HXDLIN( 227)			if (::hx::IsNotNull( fwd )) {
-HXLINE( 227)				jmiProFwd = fwd->getChild(HX_("proceed",2e,96,4a,f1),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07));
+HXLINE( 226)			 ::snikket::Stanza jmiProFwd;
+HXDLIN( 226)			if (::hx::IsNotNull( fwd )) {
+HXLINE( 226)				jmiProFwd = fwd->getChild(HX_("proceed",2e,96,4a,f1),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07));
             			}
             			else {
-HXLINE( 227)				jmiProFwd = null();
+HXLINE( 226)				jmiProFwd = null();
             			}
-HXLINE( 228)			bool _hx_tmp5;
-HXDLIN( 228)			if (::hx::IsNotNull( jmiProFwd )) {
-HXLINE( 228)				_hx_tmp5 = ::hx::IsNotNull( ( (::String)(::Reflect_obj::field(jmiProFwd->attr,HX_("id",db,5b,00,00))) ) );
+HXLINE( 227)			bool _hx_tmp5;
+HXDLIN( 227)			if (::hx::IsNotNull( jmiProFwd )) {
+HXLINE( 227)				_hx_tmp5 = ::hx::IsNotNull( ( (::String)(::Reflect_obj::field(jmiProFwd->attr,HX_("id",db,5b,00,00))) ) );
             			}
             			else {
-HXLINE( 228)				_hx_tmp5 = false;
-            			}
-HXDLIN( 228)			if (_hx_tmp5) {
-HXLINE( 229)				 ::snikket::Client _gthis6 = _gthis;
-HXDLIN( 229)				 ::snikket::DirectChat chat4 = _gthis6->getDirectChat(::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(fwd->attr,HX_("to",7b,65,00,00))) ))->asBare()->asString(),null());
-HXLINE( 230)				::Dynamic this5 = chat4->jingleSessions;
-HXDLIN( 230)				::Dynamic session2 = ( ( ::haxe::ds::StringMap)(this5) )->get(( (::String)(::Reflect_obj::field(jmiProFwd->attr,HX_("id",db,5b,00,00))) ));
-HXLINE( 231)				if (::hx::IsNotNull( session2 )) {
-HXLINE( 232)					::snikket::jingle::Session_obj::retract(session2);
-HXLINE( 233)					{
-HXLINE( 233)						::Dynamic this6 = chat4->jingleSessions;
-HXDLIN( 233)						( ( ::haxe::ds::StringMap)(this6) )->remove(::snikket::jingle::Session_obj::get_sid(session2));
+HXLINE( 227)				_hx_tmp5 = false;
+            			}
+HXDLIN( 227)			if (_hx_tmp5) {
+HXLINE( 228)				 ::snikket::Client _gthis6 = _gthis;
+HXDLIN( 228)				 ::snikket::DirectChat chat4 = _gthis6->getDirectChat(::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(fwd->attr,HX_("to",7b,65,00,00))) ))->asBare()->asString(),null());
+HXLINE( 229)				::Dynamic this5 = chat4->jingleSessions;
+HXDLIN( 229)				::Dynamic session2 = ( ( ::haxe::ds::StringMap)(this5) )->get(( (::String)(::Reflect_obj::field(jmiProFwd->attr,HX_("id",db,5b,00,00))) ));
+HXLINE( 230)				if (::hx::IsNotNull( session2 )) {
+HXLINE( 231)					::snikket::jingle::Session_obj::retract(session2);
+HXLINE( 232)					{
+HXLINE( 232)						::Dynamic this6 = chat4->jingleSessions;
+HXDLIN( 232)						( ( ::haxe::ds::StringMap)(this6) )->remove(::snikket::jingle::Session_obj::get_sid(session2));
             					}
             				}
             			}
-HXLINE( 237)			 ::snikket::Stanza jmiPro = stanza->getChild(HX_("proceed",2e,96,4a,f1),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07));
-HXLINE( 238)			bool _hx_tmp6;
-HXDLIN( 238)			if (::hx::IsNotNull( jmiPro )) {
-HXLINE( 238)				_hx_tmp6 = ::hx::IsNotNull( ( (::String)(::Reflect_obj::field(jmiPro->attr,HX_("id",db,5b,00,00))) ) );
+HXLINE( 236)			 ::snikket::Stanza jmiPro = stanza->getChild(HX_("proceed",2e,96,4a,f1),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07));
+HXLINE( 237)			bool _hx_tmp6;
+HXDLIN( 237)			if (::hx::IsNotNull( jmiPro )) {
+HXLINE( 237)				_hx_tmp6 = ::hx::IsNotNull( ( (::String)(::Reflect_obj::field(jmiPro->attr,HX_("id",db,5b,00,00))) ) );
             			}
             			else {
-HXLINE( 238)				_hx_tmp6 = false;
-            			}
-HXDLIN( 238)			if (_hx_tmp6) {
-HXLINE( 239)				 ::snikket::Client _gthis7 = _gthis;
-HXDLIN( 239)				 ::snikket::DirectChat chat5 = _gthis7->getDirectChat(from->asBare()->asString(),null());
-HXLINE( 240)				::Dynamic this7 = chat5->jingleSessions;
-HXDLIN( 240)				::Dynamic session3 = ( ( ::haxe::ds::StringMap)(this7) )->get(( (::String)(::Reflect_obj::field(jmiPro->attr,HX_("id",db,5b,00,00))) ));
-HXLINE( 241)				if (::hx::IsNotNull( session3 )) {
-HXLINE( 242)					try {
+HXLINE( 237)				_hx_tmp6 = false;
+            			}
+HXDLIN( 237)			if (_hx_tmp6) {
+HXLINE( 238)				 ::snikket::Client _gthis7 = _gthis;
+HXDLIN( 238)				 ::snikket::DirectChat chat5 = _gthis7->getDirectChat(from->asBare()->asString(),null());
+HXLINE( 239)				::Dynamic this7 = chat5->jingleSessions;
+HXDLIN( 239)				::Dynamic session3 = ( ( ::haxe::ds::StringMap)(this7) )->get(( (::String)(::Reflect_obj::field(jmiPro->attr,HX_("id",db,5b,00,00))) ));
+HXLINE( 240)				if (::hx::IsNotNull( session3 )) {
+HXLINE( 241)					try {
             						HX_STACK_CATCHABLE( ::Dynamic, 0);
-HXLINE( 243)						::Dynamic this8 = chat5->jingleSessions;
-HXDLIN( 243)						::String key = ::snikket::jingle::Session_obj::get_sid(session3);
-HXDLIN( 243)						( ( ::haxe::ds::StringMap)(this8) )->set(key,::snikket::jingle::Session_obj::initiate(session3,stanza));
+HXLINE( 242)						::Dynamic this8 = chat5->jingleSessions;
+HXDLIN( 242)						::String key = ::snikket::jingle::Session_obj::get_sid(session3);
+HXDLIN( 242)						( ( ::haxe::ds::StringMap)(this8) )->set(key,::snikket::jingle::Session_obj::initiate(session3,stanza));
             					} catch( ::Dynamic _hx_e) {
             						if (_hx_e.IsClass<  ::Dynamic >() ){
             							HX_STACK_BEGIN_CATCH
             							 ::Dynamic _g5 = _hx_e;
-HXLINE( 244)							 ::haxe::Exception e = ::haxe::Exception_obj::caught(_g5);
-HXLINE( 245)							::haxe::Log_obj::trace(HX_("JMI proceed failed",29,32,fb,3c), ::Dynamic(::hx::Anon_obj::Create(5)
+HXLINE( 243)							 ::haxe::Exception e = ::haxe::Exception_obj::caught(_g5);
+HXLINE( 244)							::haxe::Log_obj::trace(HX_("JMI proceed failed",29,32,fb,3c), ::Dynamic(::hx::Anon_obj::Create(5)
             								->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.Client",3c,fe,06,7c))
             								->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,e))
             								->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("new",60,d0,53,00))
             								->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/Client.hx",e1,49,02,18))
-            								->setFixed(4,HX_("lineNumber",dd,81,22,76),245)));
+            								->setFixed(4,HX_("lineNumber",dd,81,22,76),244)));
             						}
             						else {
             							HX_STACK_DO_THROW(_hx_e);
@@ -918,342 +919,342 @@ HXLINE( 245)							::haxe::Log_obj::trace(HX_("JMI proceed failed",29,32,fb,3c),
             					}
             				}
             			}
-HXLINE( 250)			 ::snikket::Stanza jmiRej = stanza->getChild(HX_("reject",5f,51,85,02),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07));
-HXLINE( 251)			bool _hx_tmp7;
-HXDLIN( 251)			if (::hx::IsNotNull( jmiRej )) {
-HXLINE( 251)				_hx_tmp7 = ::hx::IsNotNull( ( (::String)(::Reflect_obj::field(jmiRej->attr,HX_("id",db,5b,00,00))) ) );
+HXLINE( 249)			 ::snikket::Stanza jmiRej = stanza->getChild(HX_("reject",5f,51,85,02),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07));
+HXLINE( 250)			bool _hx_tmp7;
+HXDLIN( 250)			if (::hx::IsNotNull( jmiRej )) {
+HXLINE( 250)				_hx_tmp7 = ::hx::IsNotNull( ( (::String)(::Reflect_obj::field(jmiRej->attr,HX_("id",db,5b,00,00))) ) );
             			}
             			else {
-HXLINE( 251)				_hx_tmp7 = false;
-            			}
-HXDLIN( 251)			if (_hx_tmp7) {
-HXLINE( 252)				 ::snikket::Client _gthis8 = _gthis;
-HXDLIN( 252)				 ::snikket::DirectChat chat6 = _gthis8->getDirectChat(from->asBare()->asString(),null());
-HXLINE( 253)				::Dynamic this9 = chat6->jingleSessions;
-HXDLIN( 253)				::Dynamic session4 = ( ( ::haxe::ds::StringMap)(this9) )->get(( (::String)(::Reflect_obj::field(jmiRej->attr,HX_("id",db,5b,00,00))) ));
-HXLINE( 254)				if (::hx::IsNotNull( session4 )) {
-HXLINE( 255)					::snikket::jingle::Session_obj::retract(session4);
-HXLINE( 256)					{
-HXLINE( 256)						::Dynamic this10 = chat6->jingleSessions;
-HXDLIN( 256)						( ( ::haxe::ds::StringMap)(this10) )->remove(::snikket::jingle::Session_obj::get_sid(session4));
+HXLINE( 250)				_hx_tmp7 = false;
+            			}
+HXDLIN( 250)			if (_hx_tmp7) {
+HXLINE( 251)				 ::snikket::Client _gthis8 = _gthis;
+HXDLIN( 251)				 ::snikket::DirectChat chat6 = _gthis8->getDirectChat(from->asBare()->asString(),null());
+HXLINE( 252)				::Dynamic this9 = chat6->jingleSessions;
+HXDLIN( 252)				::Dynamic session4 = ( ( ::haxe::ds::StringMap)(this9) )->get(( (::String)(::Reflect_obj::field(jmiRej->attr,HX_("id",db,5b,00,00))) ));
+HXLINE( 253)				if (::hx::IsNotNull( session4 )) {
+HXLINE( 254)					::snikket::jingle::Session_obj::retract(session4);
+HXLINE( 255)					{
+HXLINE( 255)						::Dynamic this10 = chat6->jingleSessions;
+HXDLIN( 255)						( ( ::haxe::ds::StringMap)(this10) )->remove(::snikket::jingle::Session_obj::get_sid(session4));
             					}
             				}
             			}
-HXLINE( 260)			if ((( (::String)(::Reflect_obj::field(stanza->attr,HX_("type",ba,f2,08,4d))) ) != HX_("error",c8,cb,29,73))) {
-HXLINE( 261)				 ::snikket::Stanza chatState = stanza->getChild(null(),HX_("http://jabber.org/protocol/chatstates",8e,6d,41,6d));
-HXLINE( 262)				 ::Dynamic userState;
-HXDLIN( 262)				::String _g6;
-HXDLIN( 262)				if (::hx::IsNotNull( chatState )) {
-HXLINE( 262)					_g6 = chatState->name;
+HXLINE( 259)			if ((( (::String)(::Reflect_obj::field(stanza->attr,HX_("type",ba,f2,08,4d))) ) != HX_("error",c8,cb,29,73))) {
+HXLINE( 260)				 ::snikket::Stanza chatState = stanza->getChild(null(),HX_("http://jabber.org/protocol/chatstates",8e,6d,41,6d));
+HXLINE( 261)				 ::Dynamic userState;
+HXDLIN( 261)				::String _g6;
+HXDLIN( 261)				if (::hx::IsNotNull( chatState )) {
+HXLINE( 261)					_g6 = chatState->name;
             				}
             				else {
-HXLINE( 262)					_g6 = null();
+HXLINE( 261)					_g6 = null();
             				}
-HXDLIN( 262)				if (::hx::IsNull( _g6 )) {
-HXLINE( 262)					userState = null();
+HXDLIN( 261)				if (::hx::IsNull( _g6 )) {
+HXLINE( 261)					userState = null();
             				}
             				else {
-HXLINE( 262)					::String _hx_switch_0 = _g6;
+HXLINE( 261)					::String _hx_switch_0 = _g6;
             					if (  (_hx_switch_0==HX_("active",c6,41,46,16)) ){
-HXLINE( 262)						userState = 2;
-HXDLIN( 262)						goto _hx_goto_3;
+HXLINE( 261)						userState = 2;
+HXDLIN( 261)						goto _hx_goto_3;
             					}
             					if (  (_hx_switch_0==HX_("composing",cf,0a,a5,12)) ){
-HXLINE( 262)						userState = 3;
-HXDLIN( 262)						goto _hx_goto_3;
+HXLINE( 261)						userState = 3;
+HXDLIN( 261)						goto _hx_goto_3;
             					}
             					if (  (_hx_switch_0==HX_("gone",5f,94,69,44)) ){
-HXLINE( 262)						userState = 0;
-HXDLIN( 262)						goto _hx_goto_3;
+HXLINE( 261)						userState = 0;
+HXDLIN( 261)						goto _hx_goto_3;
             					}
             					if (  (_hx_switch_0==HX_("inactive",6b,17,30,6a)) ){
-HXLINE( 262)						userState = 1;
-HXDLIN( 262)						goto _hx_goto_3;
+HXLINE( 261)						userState = 1;
+HXDLIN( 261)						goto _hx_goto_3;
             					}
             					if (  (_hx_switch_0==HX_("paused",ae,40,84,ef)) ){
-HXLINE( 262)						userState = 4;
-HXDLIN( 262)						goto _hx_goto_3;
+HXLINE( 261)						userState = 4;
+HXDLIN( 261)						goto _hx_goto_3;
             					}
             					/* default */{
-HXLINE( 262)						userState = null();
+HXLINE( 261)						userState = null();
             					}
             					_hx_goto_3:;
             				}
-HXLINE( 270)				if (::hx::IsNotNull( userState )) {
-HXLINE( 271)					 ::snikket::Client _gthis9 = _gthis;
-HXDLIN( 271)					 ::snikket::Chat chat7 = _gthis9->getChat(from->asBare()->asString());
-HXLINE( 272)					bool _hx_tmp8;
-HXDLIN( 272)					if (::hx::IsNotNull( chat7 )) {
-HXLINE( 272)						_hx_tmp8 = !(chat7->getParticipantDetails(message->senderId)->isSelf);
+HXLINE( 269)				if (::hx::IsNotNull( userState )) {
+HXLINE( 270)					 ::snikket::Client _gthis9 = _gthis;
+HXDLIN( 270)					 ::snikket::Chat chat7 = _gthis9->getChat(from->asBare()->asString());
+HXLINE( 271)					bool _hx_tmp8;
+HXDLIN( 271)					if (::hx::IsNotNull( chat7 )) {
+HXLINE( 271)						_hx_tmp8 = !(chat7->getParticipantDetails(message->senderId)->isSelf);
             					}
             					else {
-HXLINE( 272)						_hx_tmp8 = true;
+HXLINE( 271)						_hx_tmp8 = true;
             					}
-HXDLIN( 272)					if (_hx_tmp8) {
-HXLINE( 273)						int _g7 = 0;
-HXDLIN( 273)						::Array< ::Dynamic> _g8 = _gthis->chatStateHandlers;
-HXDLIN( 273)						while((_g7 < _g8->length)){
-HXLINE( 273)							 ::Dynamic handler = _g8->__get(_g7);
-HXDLIN( 273)							_g7 = (_g7 + 1);
-HXLINE( 274)							handler(message->senderId,message->chatId,message->threadId,userState);
+HXDLIN( 271)					if (_hx_tmp8) {
+HXLINE( 272)						int _g7 = 0;
+HXDLIN( 272)						::Array< ::Dynamic> _g8 = _gthis->chatStateHandlers;
+HXDLIN( 272)						while((_g7 < _g8->length)){
+HXLINE( 272)							 ::Dynamic handler = _g8->__get(_g7);
+HXDLIN( 272)							_g7 = (_g7 + 1);
+HXLINE( 273)							handler(message->senderId,message->chatId,message->threadId,userState);
             						}
             					}
             				}
             			}
-HXLINE( 280)			 ::snikket::PubsubEvent pubsubEvent = ::snikket::PubsubEvent_obj::fromStanza(stanza);
-HXLINE( 281)			bool _hx_tmp9;
-HXDLIN( 281)			bool _hx_tmp10;
-HXDLIN( 281)			bool _hx_tmp11;
-HXDLIN( 281)			if (::hx::IsNotNull( pubsubEvent )) {
-HXLINE( 281)				_hx_tmp11 = ::hx::IsNotNull( pubsubEvent->getFrom() );
+HXLINE( 279)			 ::snikket::PubsubEvent pubsubEvent = ::snikket::PubsubEvent_obj::fromStanza(stanza);
+HXLINE( 280)			bool _hx_tmp9;
+HXDLIN( 280)			bool _hx_tmp10;
+HXDLIN( 280)			bool _hx_tmp11;
+HXDLIN( 280)			if (::hx::IsNotNull( pubsubEvent )) {
+HXLINE( 280)				_hx_tmp11 = ::hx::IsNotNull( pubsubEvent->getFrom() );
             			}
             			else {
-HXLINE( 281)				_hx_tmp11 = false;
+HXLINE( 280)				_hx_tmp11 = false;
             			}
-HXDLIN( 281)			if (_hx_tmp11) {
-HXLINE( 281)				_hx_tmp10 = (pubsubEvent->getNode() == HX_("urn:xmpp:avatar:metadata",d4,65,1a,ee));
+HXDLIN( 280)			if (_hx_tmp11) {
+HXLINE( 280)				_hx_tmp10 = (pubsubEvent->getNode() == HX_("urn:xmpp:avatar:metadata",d4,65,1a,ee));
             			}
             			else {
-HXLINE( 281)				_hx_tmp10 = false;
+HXLINE( 280)				_hx_tmp10 = false;
             			}
-HXDLIN( 281)			if (_hx_tmp10) {
-HXLINE( 281)				_hx_tmp9 = (pubsubEvent->getItems()->length > 0);
+HXDLIN( 280)			if (_hx_tmp10) {
+HXLINE( 280)				_hx_tmp9 = (pubsubEvent->getItems()->length > 0);
             			}
             			else {
-HXLINE( 281)				_hx_tmp9 = false;
+HXLINE( 280)				_hx_tmp9 = false;
             			}
-HXDLIN( 281)			if (_hx_tmp9) {
-HXLINE( 282)				 ::snikket::Stanza item = pubsubEvent->getItems()->__get(0).StaticCast<  ::snikket::Stanza >();
-HXLINE( 283)				::String avatarSha1Hex = ( (::String)(::Reflect_obj::field(pubsubEvent->getItems()->__get(0).StaticCast<  ::snikket::Stanza >()->attr,HX_("id",db,5b,00,00))) );
-HXLINE( 284)				 ::snikket::Hash tmp1 = ::snikket::Hash_obj::fromHex(HX_("sha-1",90,a8,1c,7c),avatarSha1Hex);
-HXDLIN( 284)				::Array< unsigned char > avatarSha1;
-HXDLIN( 284)				if (::hx::IsNotNull( tmp1 )) {
-HXLINE( 284)					avatarSha1 = tmp1->hash;
+HXDLIN( 280)			if (_hx_tmp9) {
+HXLINE( 281)				 ::snikket::Stanza item = pubsubEvent->getItems()->__get(0).StaticCast<  ::snikket::Stanza >();
+HXLINE( 282)				::String avatarSha1Hex = ( (::String)(::Reflect_obj::field(pubsubEvent->getItems()->__get(0).StaticCast<  ::snikket::Stanza >()->attr,HX_("id",db,5b,00,00))) );
+HXLINE( 283)				 ::snikket::Hash tmp1 = ::snikket::Hash_obj::fromHex(HX_("sha-1",90,a8,1c,7c),avatarSha1Hex);
+HXDLIN( 283)				::Array< unsigned char > avatarSha1;
+HXDLIN( 283)				if (::hx::IsNotNull( tmp1 )) {
+HXLINE( 283)					avatarSha1 = tmp1->hash;
             				}
             				else {
-HXLINE( 284)					avatarSha1 = null();
-            				}
-HXLINE( 285)				 ::snikket::Stanza metadata = item->getChild(HX_("metadata",6f,e7,19,40),HX_("urn:xmpp:avatar:metadata",d4,65,1a,ee));
-HXLINE( 286)				::Array< ::String > mime = ::Array_obj< ::String >::fromData( _hx_array_data_7c06fe3c_24,1);
-HXLINE( 287)				if (::hx::IsNotNull( metadata )) {
-HXLINE( 288)					 ::snikket::Stanza info = metadata->getChild(HX_("info",6e,38,bb,45),null());
-HXLINE( 289)					bool _hx_tmp12;
-HXDLIN( 289)					if (::hx::IsNotNull( info )) {
-HXLINE( 289)						_hx_tmp12 = ::hx::IsNotNull( ( (::String)(::Reflect_obj::field(info->attr,HX_("type",ba,f2,08,4d))) ) );
+HXLINE( 283)					avatarSha1 = null();
+            				}
+HXLINE( 284)				 ::snikket::Stanza metadata = item->getChild(HX_("metadata",6f,e7,19,40),HX_("urn:xmpp:avatar:metadata",d4,65,1a,ee));
+HXLINE( 285)				::Array< ::String > mime = ::Array_obj< ::String >::fromData( _hx_array_data_7c06fe3c_24,1);
+HXLINE( 286)				if (::hx::IsNotNull( metadata )) {
+HXLINE( 287)					 ::snikket::Stanza info = metadata->getChild(HX_("info",6e,38,bb,45),null());
+HXLINE( 288)					bool _hx_tmp12;
+HXDLIN( 288)					if (::hx::IsNotNull( info )) {
+HXLINE( 288)						_hx_tmp12 = ::hx::IsNotNull( ( (::String)(::Reflect_obj::field(info->attr,HX_("type",ba,f2,08,4d))) ) );
             					}
             					else {
-HXLINE( 289)						_hx_tmp12 = false;
+HXLINE( 288)						_hx_tmp12 = false;
             					}
-HXDLIN( 289)					if (_hx_tmp12) {
-HXLINE( 290)						mime[0] = ( (::String)(::Reflect_obj::field(info->attr,HX_("type",ba,f2,08,4d))) );
+HXDLIN( 288)					if (_hx_tmp12) {
+HXLINE( 289)						mime[0] = ( (::String)(::Reflect_obj::field(info->attr,HX_("type",ba,f2,08,4d))) );
             					}
             				}
-HXLINE( 293)				if (::hx::IsNotNull( avatarSha1 )) {
+HXLINE( 292)				if (::hx::IsNotNull( avatarSha1 )) {
             					HX_BEGIN_LOCAL_FUNC_S6(::hx::LocalFunc,_hx_Closure_14, ::snikket::DirectChat,chat8, ::snikket::Client,_gthis,::Array< ::String >,mime,::String,avatarSha1Hex, ::snikket::PubsubEvent,pubsubEvent,::Dynamic,persistence) HXARGC(1)
             					void _hx_run(bool has){
-            						HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_298_new)
-HXLINE( 298)						if (has) {
-HXLINE( 299)							_gthis->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,chat8));
+            						HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_297_new)
+HXLINE( 297)						if (has) {
+HXLINE( 298)							_gthis->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,chat8));
             						}
             						else {
             							HX_BEGIN_LOCAL_FUNC_S5(::hx::LocalFunc,_hx_Closure_13, ::snikket::Client,_gthis, ::snikket::DirectChat,chat8,::Array< ::String >,mime,::Dynamic,persistence, ::snikket::queries::PubsubGet,pubsubGet1) HXARGC(0)
             							void _hx_run(){
             								HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_12, ::snikket::DirectChat,chat8, ::snikket::Client,_gthis) HXARGC(0)
             								void _hx_run(){
-            									HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_308_new)
-HXLINE( 308)									_gthis->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,chat8));
+            									HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_307_new)
+HXLINE( 307)									_gthis->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,chat8));
             								}
             								HX_END_LOCAL_FUNC0((void))
 
-            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_302_new)
-HXLINE( 303)								 ::snikket::Stanza item = pubsubGet1->getResult()->__get(0).StaticCast<  ::snikket::Stanza >();
-HXLINE( 304)								if (::hx::IsNull( item )) {
-HXLINE( 304)									return;
+            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_301_new)
+HXLINE( 302)								 ::snikket::Stanza item = pubsubGet1->getResult()->__get(0).StaticCast<  ::snikket::Stanza >();
+HXLINE( 303)								if (::hx::IsNull( item )) {
+HXLINE( 303)									return;
             								}
-HXLINE( 305)								 ::snikket::Stanza dataNode = item->getChild(HX_("data",2a,56,63,42),HX_("urn:xmpp:avatar:data",0f,7e,01,4e));
-HXLINE( 306)								if (::hx::IsNull( dataNode )) {
-HXLINE( 306)									return;
+HXLINE( 304)								 ::snikket::Stanza dataNode = item->getChild(HX_("data",2a,56,63,42),HX_("urn:xmpp:avatar:data",0f,7e,01,4e));
+HXLINE( 305)								if (::hx::IsNull( dataNode )) {
+HXLINE( 305)									return;
             								}
-HXLINE( 307)								::Dynamic persistence1 = persistence;
-HXDLIN( 307)								::String mime1 = mime->__get(0);
-HXDLIN( 307)								::snikket::Persistence_obj::storeMedia(persistence1,mime1,::haxe::crypto::Base64_obj::decode(::StringTools_obj::replace(dataNode->getText(),HX_("\n",0a,00,00,00),HX_("",00,00,00,00)),null())->b, ::Dynamic(new _hx_Closure_12(chat8,_gthis)));
+HXLINE( 306)								::Dynamic persistence1 = persistence;
+HXDLIN( 306)								::String mime1 = mime->__get(0);
+HXDLIN( 306)								::snikket::Persistence_obj::storeMedia(persistence1,mime1,::haxe::crypto::Base64_obj::decode(::StringTools_obj::replace(dataNode->getText(),HX_("\n",0a,00,00,00),HX_("",00,00,00,00)),null())->b, ::Dynamic(new _hx_Closure_12(chat8,_gthis)));
             							}
             							HX_END_LOCAL_FUNC0((void))
 
-HXLINE( 301)							::String pubsubGet = pubsubEvent->getFrom();
-HXDLIN( 301)							 ::snikket::queries::PubsubGet pubsubGet1 =  ::snikket::queries::PubsubGet_obj::__alloc( HX_CTX ,pubsubGet,HX_("urn:xmpp:avatar:data",0f,7e,01,4e),avatarSha1Hex);
-HXLINE( 302)							pubsubGet1->onFinished( ::Dynamic(new _hx_Closure_13(_gthis,chat8,mime,persistence,pubsubGet1)));
-HXLINE( 311)							_gthis->sendQuery(pubsubGet1);
+HXLINE( 300)							::String pubsubGet = pubsubEvent->getFrom();
+HXDLIN( 300)							 ::snikket::queries::PubsubGet pubsubGet1 =  ::snikket::queries::PubsubGet_obj::__alloc( HX_CTX ,pubsubGet,HX_("urn:xmpp:avatar:data",0f,7e,01,4e),avatarSha1Hex);
+HXLINE( 301)							pubsubGet1->onFinished( ::Dynamic(new _hx_Closure_13(_gthis,chat8,mime,persistence,pubsubGet1)));
+HXLINE( 310)							_gthis->sendQuery(pubsubGet1);
             						}
             					}
             					HX_END_LOCAL_FUNC1((void))
 
-HXLINE( 294)					 ::snikket::Client _gthis10 = _gthis;
-HXDLIN( 294)					 ::snikket::DirectChat chat8 = _gthis10->getDirectChat(::snikket::JID_obj::parse(pubsubEvent->getFrom())->asBare()->asString(),false);
-HXLINE( 295)					chat8->setAvatarSha1(avatarSha1);
-HXLINE( 296)					::Dynamic persistence2 = persistence;
-HXDLIN( 296)					::String _hx_tmp13 = _gthis->accountId();
-HXDLIN( 296)					::snikket::Persistence_obj::storeChats(persistence2,_hx_tmp13,::Array_obj< ::Dynamic>::__new(1)->init(0,chat8));
-HXLINE( 297)					::snikket::Persistence_obj::hasMedia(persistence,HX_("sha-1",90,a8,1c,7c),avatarSha1, ::Dynamic(new _hx_Closure_14(chat8,_gthis,mime,avatarSha1Hex,pubsubEvent,persistence)));
+HXLINE( 293)					 ::snikket::Client _gthis10 = _gthis;
+HXDLIN( 293)					 ::snikket::DirectChat chat8 = _gthis10->getDirectChat(::snikket::JID_obj::parse(pubsubEvent->getFrom())->asBare()->asString(),false);
+HXLINE( 294)					chat8->setAvatarSha1(avatarSha1);
+HXLINE( 295)					::Dynamic persistence2 = persistence;
+HXDLIN( 295)					::String _hx_tmp13 = _gthis->accountId();
+HXDLIN( 295)					::snikket::Persistence_obj::storeChats(persistence2,_hx_tmp13,::Array_obj< ::Dynamic>::__new(1)->init(0,chat8));
+HXLINE( 296)					::snikket::Persistence_obj::hasMedia(persistence,HX_("sha-1",90,a8,1c,7c),avatarSha1, ::Dynamic(new _hx_Closure_14(chat8,_gthis,mime,avatarSha1Hex,pubsubEvent,persistence)));
             				}
             			}
-HXLINE( 317)			bool _hx_tmp14;
-HXDLIN( 317)			bool _hx_tmp15;
-HXDLIN( 317)			bool _hx_tmp16;
-HXDLIN( 317)			bool _hx_tmp17;
-HXDLIN( 317)			if (::hx::IsNotNull( pubsubEvent )) {
-HXLINE( 317)				_hx_tmp17 = ::hx::IsNotNull( pubsubEvent->getFrom() );
+HXLINE( 316)			bool _hx_tmp14;
+HXDLIN( 316)			bool _hx_tmp15;
+HXDLIN( 316)			bool _hx_tmp16;
+HXDLIN( 316)			bool _hx_tmp17;
+HXDLIN( 316)			if (::hx::IsNotNull( pubsubEvent )) {
+HXLINE( 316)				_hx_tmp17 = ::hx::IsNotNull( pubsubEvent->getFrom() );
             			}
             			else {
-HXLINE( 317)				_hx_tmp17 = false;
+HXLINE( 316)				_hx_tmp17 = false;
             			}
-HXDLIN( 317)			if (_hx_tmp17) {
-HXLINE( 317)				::String _hx_tmp18 = ::snikket::JID_obj::parse(pubsubEvent->getFrom())->asBare()->asString();
-HXDLIN( 317)				_hx_tmp16 = (_hx_tmp18 == _gthis->accountId());
+HXDLIN( 316)			if (_hx_tmp17) {
+HXLINE( 316)				::String _hx_tmp18 = ::snikket::JID_obj::parse(pubsubEvent->getFrom())->asBare()->asString();
+HXDLIN( 316)				_hx_tmp16 = (_hx_tmp18 == _gthis->accountId());
             			}
             			else {
-HXLINE( 317)				_hx_tmp16 = false;
+HXLINE( 316)				_hx_tmp16 = false;
             			}
-HXDLIN( 317)			if (_hx_tmp16) {
-HXLINE( 317)				_hx_tmp15 = (pubsubEvent->getNode() == HX_("http://jabber.org/protocol/nick",17,30,dc,e9));
+HXDLIN( 316)			if (_hx_tmp16) {
+HXLINE( 316)				_hx_tmp15 = (pubsubEvent->getNode() == HX_("http://jabber.org/protocol/nick",17,30,dc,e9));
             			}
             			else {
-HXLINE( 317)				_hx_tmp15 = false;
+HXLINE( 316)				_hx_tmp15 = false;
             			}
-HXDLIN( 317)			if (_hx_tmp15) {
-HXLINE( 317)				_hx_tmp14 = (pubsubEvent->getItems()->length > 0);
+HXDLIN( 316)			if (_hx_tmp15) {
+HXLINE( 316)				_hx_tmp14 = (pubsubEvent->getItems()->length > 0);
             			}
             			else {
-HXLINE( 317)				_hx_tmp14 = false;
+HXLINE( 316)				_hx_tmp14 = false;
             			}
-HXDLIN( 317)			if (_hx_tmp14) {
-HXLINE( 318)				 ::snikket::Client _gthis11 = _gthis;
-HXDLIN( 318)				_gthis11->updateDisplayName(pubsubEvent->getItems()->__get(0).StaticCast<  ::snikket::Stanza >()->getChildText(HX_("nick",a3,7b,05,49),HX_("http://jabber.org/protocol/nick",17,30,dc,e9)));
+HXDLIN( 316)			if (_hx_tmp14) {
+HXLINE( 317)				 ::snikket::Client _gthis11 = _gthis;
+HXDLIN( 317)				_gthis11->updateDisplayName(pubsubEvent->getItems()->__get(0).StaticCast<  ::snikket::Stanza >()->getChildText(HX_("nick",a3,7b,05,49),HX_("http://jabber.org/protocol/nick",17,30,dc,e9)));
             			}
-HXLINE( 321)			bool _hx_tmp19;
-HXDLIN( 321)			bool _hx_tmp20;
-HXDLIN( 321)			bool _hx_tmp21;
-HXDLIN( 321)			bool _hx_tmp22;
-HXDLIN( 321)			if (::hx::IsNotNull( pubsubEvent )) {
-HXLINE( 321)				_hx_tmp22 = ::hx::IsNotNull( pubsubEvent->getFrom() );
+HXLINE( 320)			bool _hx_tmp19;
+HXDLIN( 320)			bool _hx_tmp20;
+HXDLIN( 320)			bool _hx_tmp21;
+HXDLIN( 320)			bool _hx_tmp22;
+HXDLIN( 320)			if (::hx::IsNotNull( pubsubEvent )) {
+HXLINE( 320)				_hx_tmp22 = ::hx::IsNotNull( pubsubEvent->getFrom() );
             			}
             			else {
-HXLINE( 321)				_hx_tmp22 = false;
+HXLINE( 320)				_hx_tmp22 = false;
             			}
-HXDLIN( 321)			if (_hx_tmp22) {
-HXLINE( 321)				::String _hx_tmp23 = ::snikket::JID_obj::parse(pubsubEvent->getFrom())->asBare()->asString();
-HXDLIN( 321)				_hx_tmp21 = (_hx_tmp23 == _gthis->accountId());
+HXDLIN( 320)			if (_hx_tmp22) {
+HXLINE( 320)				::String _hx_tmp23 = ::snikket::JID_obj::parse(pubsubEvent->getFrom())->asBare()->asString();
+HXDLIN( 320)				_hx_tmp21 = (_hx_tmp23 == _gthis->accountId());
             			}
             			else {
-HXLINE( 321)				_hx_tmp21 = false;
+HXLINE( 320)				_hx_tmp21 = false;
             			}
-HXDLIN( 321)			if (_hx_tmp21) {
-HXLINE( 321)				_hx_tmp20 = (pubsubEvent->getNode() == HX_("urn:xmpp:mds:displayed:0",bd,60,cc,fb));
+HXDLIN( 320)			if (_hx_tmp21) {
+HXLINE( 320)				_hx_tmp20 = (pubsubEvent->getNode() == HX_("urn:xmpp:mds:displayed:0",bd,60,cc,fb));
             			}
             			else {
-HXLINE( 321)				_hx_tmp20 = false;
+HXLINE( 320)				_hx_tmp20 = false;
             			}
-HXDLIN( 321)			if (_hx_tmp20) {
-HXLINE( 321)				_hx_tmp19 = (pubsubEvent->getItems()->length > 0);
+HXDLIN( 320)			if (_hx_tmp20) {
+HXLINE( 320)				_hx_tmp19 = (pubsubEvent->getItems()->length > 0);
             			}
             			else {
-HXLINE( 321)				_hx_tmp19 = false;
-            			}
-HXDLIN( 321)			if (_hx_tmp19) {
-HXLINE( 322)				int _g9 = 0;
-HXDLIN( 322)				::Array< ::Dynamic> _g10 = pubsubEvent->getItems();
-HXDLIN( 322)				while((_g9 < _g10->length)){
-HXLINE( 322)					 ::snikket::Stanza item1 = _g10->__get(_g9).StaticCast<  ::snikket::Stanza >();
-HXDLIN( 322)					_g9 = (_g9 + 1);
-HXLINE( 323)					if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(item1->attr,HX_("id",db,5b,00,00))) ) )) {
-HXLINE( 324)						 ::snikket::Stanza tmp2 = item1->getChild(HX_("displayed",21,17,db,c1),HX_("urn:xmpp:mds:displayed:0",bd,60,cc,fb));
-HXDLIN( 324)						 ::snikket::Stanza upTo;
-HXDLIN( 324)						if (::hx::IsNotNull( tmp2 )) {
-HXLINE( 324)							upTo = tmp2->getChild(HX_("stanza-id",73,8a,54,e9),HX_("urn:xmpp:sid:0",a8,4b,37,54));
+HXLINE( 320)				_hx_tmp19 = false;
+            			}
+HXDLIN( 320)			if (_hx_tmp19) {
+HXLINE( 321)				int _g9 = 0;
+HXDLIN( 321)				::Array< ::Dynamic> _g10 = pubsubEvent->getItems();
+HXDLIN( 321)				while((_g9 < _g10->length)){
+HXLINE( 321)					 ::snikket::Stanza item1 = _g10->__get(_g9).StaticCast<  ::snikket::Stanza >();
+HXDLIN( 321)					_g9 = (_g9 + 1);
+HXLINE( 322)					if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(item1->attr,HX_("id",db,5b,00,00))) ) )) {
+HXLINE( 323)						 ::snikket::Stanza tmp2 = item1->getChild(HX_("displayed",21,17,db,c1),HX_("urn:xmpp:mds:displayed:0",bd,60,cc,fb));
+HXDLIN( 323)						 ::snikket::Stanza upTo;
+HXDLIN( 323)						if (::hx::IsNotNull( tmp2 )) {
+HXLINE( 323)							upTo = tmp2->getChild(HX_("stanza-id",73,8a,54,e9),HX_("urn:xmpp:sid:0",a8,4b,37,54));
             						}
             						else {
-HXLINE( 324)							upTo = null();
+HXLINE( 323)							upTo = null();
             						}
-HXLINE( 325)						 ::snikket::Client _gthis12 = _gthis;
-HXDLIN( 325)						 ::snikket::Chat chat9 = _gthis12->getChat(( (::String)(::Reflect_obj::field(item1->attr,HX_("id",db,5b,00,00))) ));
-HXLINE( 326)						if (::hx::IsNull( chat9 )) {
+HXLINE( 324)						 ::snikket::Client _gthis12 = _gthis;
+HXDLIN( 324)						 ::snikket::Chat chat9 = _gthis12->getChat(( (::String)(::Reflect_obj::field(item1->attr,HX_("id",db,5b,00,00))) ));
+HXLINE( 325)						if (::hx::IsNull( chat9 )) {
             							HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_15) HXARGC(1)
             							int _hx_run( ::snikket::Caps caps){
-            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_327_new)
-HXLINE( 327)								return 2;
+            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_326_new)
+HXLINE( 326)								return 2;
             							}
             							HX_END_LOCAL_FUNC1(return)
 
             							HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_16, ::snikket::Stanza,upTo) HXARGC(1)
             							void _hx_run( ::snikket::Chat chat){
-            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_327_new)
-HXLINE( 327)								::String _hx_tmp = ( (::String)(::Reflect_obj::field(upTo->attr,HX_("id",db,5b,00,00))) );
-HXDLIN( 327)								chat->markReadUpToId(_hx_tmp,( (::String)(::Reflect_obj::field(upTo->attr,HX_("by",d7,55,00,00))) ),null());
+            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_326_new)
+HXLINE( 326)								::String _hx_tmp = ( (::String)(::Reflect_obj::field(upTo->attr,HX_("id",db,5b,00,00))) );
+HXDLIN( 326)								chat->markReadUpToId(_hx_tmp,( (::String)(::Reflect_obj::field(upTo->attr,HX_("by",d7,55,00,00))) ),null());
             							}
             							HX_END_LOCAL_FUNC1((void))
 
-HXLINE( 327)							 ::snikket::Client _gthis13 = _gthis;
-HXDLIN( 327)							_gthis13->startChatWith(( (::String)(::Reflect_obj::field(item1->attr,HX_("id",db,5b,00,00))) ), ::Dynamic(new _hx_Closure_15()), ::Dynamic(new _hx_Closure_16(upTo)));
+HXLINE( 326)							 ::snikket::Client _gthis13 = _gthis;
+HXDLIN( 326)							_gthis13->startChatWith(( (::String)(::Reflect_obj::field(item1->attr,HX_("id",db,5b,00,00))) ), ::Dynamic(new _hx_Closure_15()), ::Dynamic(new _hx_Closure_16(upTo)));
             						}
             						else {
             							HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_17, ::snikket::Client,_gthis,::Dynamic,persistence, ::snikket::Chat,chat9) HXARGC(0)
             							void _hx_run(){
-            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_329_new)
-HXLINE( 330)								::Dynamic persistence1 = persistence;
-HXDLIN( 330)								::String _hx_tmp = _gthis->accountId();
-HXDLIN( 330)								::snikket::Persistence_obj::storeChats(persistence1,_hx_tmp,::Array_obj< ::Dynamic>::__new(1)->init(0,chat9));
-HXLINE( 331)								_gthis->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,chat9));
+            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_328_new)
+HXLINE( 329)								::Dynamic persistence1 = persistence;
+HXDLIN( 329)								::String _hx_tmp = _gthis->accountId();
+HXDLIN( 329)								::snikket::Persistence_obj::storeChats(persistence1,_hx_tmp,::Array_obj< ::Dynamic>::__new(1)->init(0,chat9));
+HXLINE( 330)								_gthis->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,chat9));
             							}
             							HX_END_LOCAL_FUNC0((void))
 
-HXLINE( 329)							 ::snikket::Chat chat10 = chat9;
-HXDLIN( 329)							::String _hx_tmp24 = ( (::String)(::Reflect_obj::field(upTo->attr,HX_("id",db,5b,00,00))) );
-HXDLIN( 329)							chat10->markReadUpToId(_hx_tmp24,( (::String)(::Reflect_obj::field(upTo->attr,HX_("by",d7,55,00,00))) ), ::Dynamic(new _hx_Closure_17(_gthis,persistence,chat9)));
+HXLINE( 328)							 ::snikket::Chat chat10 = chat9;
+HXDLIN( 328)							::String _hx_tmp24 = ( (::String)(::Reflect_obj::field(upTo->attr,HX_("id",db,5b,00,00))) );
+HXDLIN( 328)							chat10->markReadUpToId(_hx_tmp24,( (::String)(::Reflect_obj::field(upTo->attr,HX_("by",d7,55,00,00))) ), ::Dynamic(new _hx_Closure_17(_gthis,persistence,chat9)));
             						}
             					}
             				}
             			}
-HXLINE( 338)			return ::snikket::EventResult_obj::EventUnhandled_dyn();
+HXLINE( 337)			return ::snikket::EventResult_obj::EventUnhandled_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_19, ::snikket::Client,_gthis) HXARGC(1)
             		 ::snikket::IqResult _hx_run( ::snikket::Stanza stanza){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_341_new)
-HXLINE( 342)			 ::snikket::JID from;
-HXDLIN( 342)			if (::hx::IsNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ) )) {
-HXLINE( 342)				from = null();
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_340_new)
+HXLINE( 341)			 ::snikket::JID from;
+HXDLIN( 341)			if (::hx::IsNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ) )) {
+HXLINE( 341)				from = null();
             			}
             			else {
-HXLINE( 342)				from = ::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ));
-            			}
-HXLINE( 343)			 ::snikket::Stanza jingle = stanza->getChild(HX_("jingle",31,27,eb,1f),HX_("urn:xmpp:jingle:1",44,c4,fe,f7));
-HXLINE( 344)			 ::snikket::Client _gthis1 = _gthis;
-HXDLIN( 344)			 ::snikket::DirectChat chat = _gthis1->getDirectChat(from->asBare()->asString(),null());
-HXLINE( 345)			::Dynamic this1 = chat->jingleSessions;
-HXDLIN( 345)			::Dynamic session = ( ( ::haxe::ds::StringMap)(this1) )->get(( (::String)(::Reflect_obj::field(jingle->attr,HX_("sid",0e,9f,57,00))) ));
-HXLINE( 347)			if ((( (::String)(::Reflect_obj::field(jingle->attr,HX_("action",b6,3b,46,16))) ) == HX_("session-initiate",70,2d,30,f7))) {
-HXLINE( 348)				if (::hx::IsNotNull( session )) {
-HXLINE( 349)					try {
+HXLINE( 341)				from = ::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ));
+            			}
+HXLINE( 342)			 ::snikket::Stanza jingle = stanza->getChild(HX_("jingle",31,27,eb,1f),HX_("urn:xmpp:jingle:1",44,c4,fe,f7));
+HXLINE( 343)			 ::snikket::Client _gthis1 = _gthis;
+HXDLIN( 343)			 ::snikket::DirectChat chat = _gthis1->getDirectChat(from->asBare()->asString(),null());
+HXLINE( 344)			::Dynamic this1 = chat->jingleSessions;
+HXDLIN( 344)			::Dynamic session = ( ( ::haxe::ds::StringMap)(this1) )->get(( (::String)(::Reflect_obj::field(jingle->attr,HX_("sid",0e,9f,57,00))) ));
+HXLINE( 346)			if ((( (::String)(::Reflect_obj::field(jingle->attr,HX_("action",b6,3b,46,16))) ) == HX_("session-initiate",70,2d,30,f7))) {
+HXLINE( 347)				if (::hx::IsNotNull( session )) {
+HXLINE( 348)					try {
             						HX_STACK_CATCHABLE( ::Dynamic, 0);
-HXLINE( 350)						::Dynamic this2 = chat->jingleSessions;
-HXDLIN( 350)						::String key = ::snikket::jingle::Session_obj::get_sid(session);
-HXDLIN( 350)						( ( ::haxe::ds::StringMap)(this2) )->set(key,::snikket::jingle::Session_obj::initiate(session,stanza));
+HXLINE( 349)						::Dynamic this2 = chat->jingleSessions;
+HXDLIN( 349)						::String key = ::snikket::jingle::Session_obj::get_sid(session);
+HXDLIN( 349)						( ( ::haxe::ds::StringMap)(this2) )->set(key,::snikket::jingle::Session_obj::initiate(session,stanza));
             					} catch( ::Dynamic _hx_e) {
             						if (_hx_e.IsClass<  ::Dynamic >() ){
             							HX_STACK_BEGIN_CATCH
             							 ::Dynamic _g = _hx_e;
-HXLINE( 351)							 ::haxe::Exception e = ::haxe::Exception_obj::caught(_g);
-HXDLIN( 351)							{
-HXLINE( 352)								::haxe::Log_obj::trace(HX_("Bad session-inititate",c5,d7,64,3f), ::Dynamic(::hx::Anon_obj::Create(5)
+HXLINE( 350)							 ::haxe::Exception e = ::haxe::Exception_obj::caught(_g);
+HXDLIN( 350)							{
+HXLINE( 351)								::haxe::Log_obj::trace(HX_("Bad session-inititate",c5,d7,64,3f), ::Dynamic(::hx::Anon_obj::Create(5)
             									->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.Client",3c,fe,06,7c))
             									->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,e))
             									->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("new",60,d0,53,00))
             									->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/Client.hx",e1,49,02,18))
-            									->setFixed(4,HX_("lineNumber",dd,81,22,76),352)));
-HXLINE( 353)								{
-HXLINE( 353)									::Dynamic this3 = chat->jingleSessions;
-HXDLIN( 353)									( ( ::haxe::ds::StringMap)(this3) )->remove(::snikket::jingle::Session_obj::get_sid(session));
+            									->setFixed(4,HX_("lineNumber",dd,81,22,76),351)));
+HXLINE( 352)								{
+HXLINE( 352)									::Dynamic this3 = chat->jingleSessions;
+HXDLIN( 352)									( ( ::haxe::ds::StringMap)(this3) )->remove(::snikket::jingle::Session_obj::get_sid(session));
             								}
             							}
             						}
@@ -1263,378 +1264,378 @@ HXDLIN( 353)									( ( ::haxe::ds::StringMap)(this3) )->remove(::snikket::jing
             					}
             				}
             				else {
-HXLINE( 356)					 ::snikket::jingle::InitiatedSession newSession = ::snikket::jingle::InitiatedSession_obj::fromSessionInitiate(_gthis,stanza);
-HXLINE( 357)					{
-HXLINE( 357)						::Dynamic this4 = chat->jingleSessions;
-HXDLIN( 357)						( ( ::haxe::ds::StringMap)(this4) )->set(newSession->get_sid(),newSession);
+HXLINE( 355)					 ::snikket::jingle::InitiatedSession newSession = ::snikket::jingle::InitiatedSession_obj::fromSessionInitiate(_gthis,stanza);
+HXLINE( 356)					{
+HXLINE( 356)						::Dynamic this4 = chat->jingleSessions;
+HXDLIN( 356)						( ( ::haxe::ds::StringMap)(this4) )->set(newSession->get_sid(),newSession);
             					}
-HXLINE( 358)					_gthis->chatActivity(chat,null());
-HXLINE( 359)					newSession->ring();
+HXLINE( 357)					_gthis->chatActivity(chat,null());
+HXLINE( 358)					newSession->ring();
             				}
             			}
-HXLINE( 363)			bool _hx_tmp;
-HXDLIN( 363)			if (::hx::IsNotNull( session )) {
-HXLINE( 363)				_hx_tmp = (( (::String)(::Reflect_obj::field(jingle->attr,HX_("action",b6,3b,46,16))) ) == HX_("session-accept",5f,92,e7,a8));
+HXLINE( 362)			bool _hx_tmp;
+HXDLIN( 362)			if (::hx::IsNotNull( session )) {
+HXLINE( 362)				_hx_tmp = (( (::String)(::Reflect_obj::field(jingle->attr,HX_("action",b6,3b,46,16))) ) == HX_("session-accept",5f,92,e7,a8));
             			}
             			else {
-HXLINE( 363)				_hx_tmp = false;
+HXLINE( 362)				_hx_tmp = false;
             			}
-HXDLIN( 363)			if (_hx_tmp) {
-HXLINE( 364)				try {
+HXDLIN( 362)			if (_hx_tmp) {
+HXLINE( 363)				try {
             					HX_STACK_CATCHABLE( ::Dynamic, 0);
-HXLINE( 365)					::Dynamic this5 = chat->jingleSessions;
-HXDLIN( 365)					::String key1 = ::snikket::jingle::Session_obj::get_sid(session);
-HXDLIN( 365)					( ( ::haxe::ds::StringMap)(this5) )->set(key1,::snikket::jingle::Session_obj::initiate(session,stanza));
+HXLINE( 364)					::Dynamic this5 = chat->jingleSessions;
+HXDLIN( 364)					::String key1 = ::snikket::jingle::Session_obj::get_sid(session);
+HXDLIN( 364)					( ( ::haxe::ds::StringMap)(this5) )->set(key1,::snikket::jingle::Session_obj::initiate(session,stanza));
             				} catch( ::Dynamic _hx_e) {
             					if (_hx_e.IsClass<  ::Dynamic >() ){
             						HX_STACK_BEGIN_CATCH
             						 ::Dynamic _g1 = _hx_e;
-HXLINE( 366)						 ::haxe::Exception e1 = ::haxe::Exception_obj::caught(_g1);
-HXLINE( 367)						::haxe::Log_obj::trace(HX_("session-accept failed",5e,a5,74,6b), ::Dynamic(::hx::Anon_obj::Create(5)
+HXLINE( 365)						 ::haxe::Exception e1 = ::haxe::Exception_obj::caught(_g1);
+HXLINE( 366)						::haxe::Log_obj::trace(HX_("session-accept failed",5e,a5,74,6b), ::Dynamic(::hx::Anon_obj::Create(5)
             							->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.Client",3c,fe,06,7c))
             							->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,e1))
             							->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("new",60,d0,53,00))
             							->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/Client.hx",e1,49,02,18))
-            							->setFixed(4,HX_("lineNumber",dd,81,22,76),367)));
+            							->setFixed(4,HX_("lineNumber",dd,81,22,76),366)));
             					}
             					else {
             						HX_STACK_DO_THROW(_hx_e);
             					}
             				}
             			}
-HXLINE( 371)			bool _hx_tmp1;
-HXDLIN( 371)			if (::hx::IsNotNull( session )) {
-HXLINE( 371)				_hx_tmp1 = (( (::String)(::Reflect_obj::field(jingle->attr,HX_("action",b6,3b,46,16))) ) == HX_("session-terminate",6a,23,dc,12));
+HXLINE( 370)			bool _hx_tmp1;
+HXDLIN( 370)			if (::hx::IsNotNull( session )) {
+HXLINE( 370)				_hx_tmp1 = (( (::String)(::Reflect_obj::field(jingle->attr,HX_("action",b6,3b,46,16))) ) == HX_("session-terminate",6a,23,dc,12));
             			}
             			else {
-HXLINE( 371)				_hx_tmp1 = false;
+HXLINE( 370)				_hx_tmp1 = false;
             			}
-HXDLIN( 371)			if (_hx_tmp1) {
-HXLINE( 372)				::snikket::jingle::Session_obj::terminate(session);
-HXLINE( 373)				{
-HXLINE( 373)					::Dynamic this6 = chat->jingleSessions;
-HXDLIN( 373)					( ( ::haxe::ds::StringMap)(this6) )->remove(( (::String)(::Reflect_obj::field(jingle->attr,HX_("sid",0e,9f,57,00))) ));
+HXDLIN( 370)			if (_hx_tmp1) {
+HXLINE( 371)				::snikket::jingle::Session_obj::terminate(session);
+HXLINE( 372)				{
+HXLINE( 372)					::Dynamic this6 = chat->jingleSessions;
+HXDLIN( 372)					( ( ::haxe::ds::StringMap)(this6) )->remove(( (::String)(::Reflect_obj::field(jingle->attr,HX_("sid",0e,9f,57,00))) ));
             				}
             			}
-HXLINE( 376)			bool _hx_tmp2;
-HXDLIN( 376)			if (::hx::IsNotNull( session )) {
-HXLINE( 376)				_hx_tmp2 = (( (::String)(::Reflect_obj::field(jingle->attr,HX_("action",b6,3b,46,16))) ) == HX_("content-add",cd,a9,a1,10));
+HXLINE( 375)			bool _hx_tmp2;
+HXDLIN( 375)			if (::hx::IsNotNull( session )) {
+HXLINE( 375)				_hx_tmp2 = (( (::String)(::Reflect_obj::field(jingle->attr,HX_("action",b6,3b,46,16))) ) == HX_("content-add",cd,a9,a1,10));
             			}
             			else {
-HXLINE( 376)				_hx_tmp2 = false;
+HXLINE( 375)				_hx_tmp2 = false;
             			}
-HXDLIN( 376)			if (_hx_tmp2) {
-HXLINE( 377)				::snikket::jingle::Session_obj::contentAdd(session,stanza);
+HXDLIN( 375)			if (_hx_tmp2) {
+HXLINE( 376)				::snikket::jingle::Session_obj::contentAdd(session,stanza);
             			}
-HXLINE( 380)			bool _hx_tmp3;
-HXDLIN( 380)			if (::hx::IsNotNull( session )) {
-HXLINE( 380)				_hx_tmp3 = (( (::String)(::Reflect_obj::field(jingle->attr,HX_("action",b6,3b,46,16))) ) == HX_("content-accept",dc,ee,cb,f2));
+HXLINE( 379)			bool _hx_tmp3;
+HXDLIN( 379)			if (::hx::IsNotNull( session )) {
+HXLINE( 379)				_hx_tmp3 = (( (::String)(::Reflect_obj::field(jingle->attr,HX_("action",b6,3b,46,16))) ) == HX_("content-accept",dc,ee,cb,f2));
             			}
             			else {
-HXLINE( 380)				_hx_tmp3 = false;
+HXLINE( 379)				_hx_tmp3 = false;
             			}
-HXDLIN( 380)			if (_hx_tmp3) {
-HXLINE( 381)				::snikket::jingle::Session_obj::contentAccept(session,stanza);
+HXDLIN( 379)			if (_hx_tmp3) {
+HXLINE( 380)				::snikket::jingle::Session_obj::contentAccept(session,stanza);
             			}
-HXLINE( 384)			bool _hx_tmp4;
-HXDLIN( 384)			if (::hx::IsNotNull( session )) {
-HXLINE( 384)				_hx_tmp4 = (( (::String)(::Reflect_obj::field(jingle->attr,HX_("action",b6,3b,46,16))) ) == HX_("transport-info",d2,9e,05,1c));
+HXLINE( 383)			bool _hx_tmp4;
+HXDLIN( 383)			if (::hx::IsNotNull( session )) {
+HXLINE( 383)				_hx_tmp4 = (( (::String)(::Reflect_obj::field(jingle->attr,HX_("action",b6,3b,46,16))) ) == HX_("transport-info",d2,9e,05,1c));
             			}
             			else {
-HXLINE( 384)				_hx_tmp4 = false;
+HXLINE( 383)				_hx_tmp4 = false;
             			}
-HXDLIN( 384)			if (_hx_tmp4) {
-HXLINE( 385)				::snikket::jingle::Session_obj::transportInfo(session,stanza);
+HXDLIN( 383)			if (_hx_tmp4) {
+HXLINE( 384)				::snikket::jingle::Session_obj::transportInfo(session,stanza);
             			}
-HXLINE( 389)			return ::snikket::IqResult_obj::IqResult_dyn();
+HXLINE( 388)			return ::snikket::IqResult_obj::IqResult_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_20, ::snikket::Client,_gthis) HXARGC(1)
             		 ::snikket::IqResult _hx_run( ::snikket::Stanza stanza){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_393_new)
-HXLINE( 393)			return ::snikket::IqResult_obj::IqResultElement(_gthis->caps->discoReply());
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_392_new)
+HXLINE( 392)			return ::snikket::IqResult_obj::IqResultElement(_gthis->caps->discoReply());
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_21, ::snikket::Client,_gthis,::Dynamic,persistence) HXARGC(1)
             		 ::snikket::IqResult _hx_run( ::snikket::Stanza stanza){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_396_new)
-HXLINE( 398)			bool _hx_tmp;
-HXDLIN( 398)			if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ) )) {
-HXLINE( 399)				::String _hx_tmp1 = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) );
-HXLINE( 398)				_hx_tmp = (_hx_tmp1 != _gthis->jid->domain);
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_395_new)
+HXLINE( 397)			bool _hx_tmp;
+HXDLIN( 397)			if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ) )) {
+HXLINE( 398)				::String _hx_tmp1 = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) );
+HXLINE( 397)				_hx_tmp = (_hx_tmp1 != _gthis->jid->domain);
             			}
             			else {
-HXLINE( 398)				_hx_tmp = false;
-            			}
-HXLINE( 397)			if (_hx_tmp) {
-HXLINE( 401)				return ::snikket::IqResult_obj::IqNoResult_dyn();
-            			}
-HXLINE( 404)			 ::snikket::queries::RosterGet roster =  ::snikket::queries::RosterGet_obj::__alloc( HX_CTX ,null());
-HXLINE( 405)			roster->handleResponse(stanza);
-HXLINE( 406)			::Array< ::Dynamic> items = roster->getResult();
-HXLINE( 407)			if ((items->length == 0)) {
-HXLINE( 407)				return ::snikket::IqResult_obj::IqNoResult_dyn();
-            			}
-HXLINE( 409)			::Array< ::Dynamic> chatsToUpdate = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 410)			{
-HXLINE( 410)				int _g = 0;
-HXDLIN( 410)				while((_g < items->length)){
-HXLINE( 410)					 ::Dynamic item = items->__get(_g);
-HXDLIN( 410)					_g = (_g + 1);
-HXLINE( 411)					if (::hx::IsNotEq( item->__Field(HX_("subscription",1d,ff,00,36),::hx::paccDynamic),HX_("remove",44,9c,88,04) )) {
-HXLINE( 412)						 ::snikket::DirectChat chat = _gthis->getDirectChat(( (::String)(item->__Field(HX_("jid",c5,ca,50,00),::hx::paccDynamic)) ),false);
-HXLINE( 413)						chat->updateFromRoster(item);
-HXLINE( 414)						chatsToUpdate->push(chat);
+HXLINE( 397)				_hx_tmp = false;
+            			}
+HXLINE( 396)			if (_hx_tmp) {
+HXLINE( 400)				return ::snikket::IqResult_obj::IqNoResult_dyn();
+            			}
+HXLINE( 403)			 ::snikket::queries::RosterGet roster =  ::snikket::queries::RosterGet_obj::__alloc( HX_CTX ,null());
+HXLINE( 404)			roster->handleResponse(stanza);
+HXLINE( 405)			::Array< ::Dynamic> items = roster->getResult();
+HXLINE( 406)			if ((items->length == 0)) {
+HXLINE( 406)				return ::snikket::IqResult_obj::IqNoResult_dyn();
+            			}
+HXLINE( 408)			::Array< ::Dynamic> chatsToUpdate = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 409)			{
+HXLINE( 409)				int _g = 0;
+HXDLIN( 409)				while((_g < items->length)){
+HXLINE( 409)					 ::Dynamic item = items->__get(_g);
+HXDLIN( 409)					_g = (_g + 1);
+HXLINE( 410)					if (::hx::IsNotEq( item->__Field(HX_("subscription",1d,ff,00,36),::hx::paccDynamic),HX_("remove",44,9c,88,04) )) {
+HXLINE( 411)						 ::snikket::DirectChat chat = _gthis->getDirectChat(( (::String)(item->__Field(HX_("jid",c5,ca,50,00),::hx::paccDynamic)) ),false);
+HXLINE( 412)						chat->updateFromRoster(item);
+HXLINE( 413)						chatsToUpdate->push(chat);
             					}
             				}
             			}
-HXLINE( 417)			::Dynamic persistence1 = persistence;
-HXDLIN( 417)			::snikket::Persistence_obj::storeChats(persistence1,_gthis->accountId(),chatsToUpdate);
-HXLINE( 418)			_gthis->trigger(HX_("chats/update",3d,8e,1d,14),chatsToUpdate);
-HXLINE( 420)			return ::snikket::IqResult_obj::IqResult_dyn();
+HXLINE( 416)			::Dynamic persistence1 = persistence;
+HXDLIN( 416)			::snikket::Persistence_obj::storeChats(persistence1,_gthis->accountId(),chatsToUpdate);
+HXLINE( 417)			_gthis->trigger(HX_("chats/update",3d,8e,1d,14),chatsToUpdate);
+HXLINE( 419)			return ::snikket::IqResult_obj::IqResult_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_22, ::snikket::Client,_gthis) HXARGC(1)
             		 ::snikket::IqResult _hx_run( ::snikket::Stanza stanza){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_423_new)
-HXLINE( 425)			bool _hx_tmp;
-HXDLIN( 425)			if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ) )) {
-HXLINE( 426)				::String _hx_tmp1 = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) );
-HXLINE( 425)				_hx_tmp = (_hx_tmp1 != _gthis->jid->domain);
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_422_new)
+HXLINE( 424)			bool _hx_tmp;
+HXDLIN( 424)			if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ) )) {
+HXLINE( 425)				::String _hx_tmp1 = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) );
+HXLINE( 424)				_hx_tmp = (_hx_tmp1 != _gthis->jid->domain);
             			}
             			else {
-HXLINE( 425)				_hx_tmp = false;
+HXLINE( 424)				_hx_tmp = false;
             			}
-HXLINE( 424)			if (_hx_tmp) {
-HXLINE( 428)				return ::snikket::IqResult_obj::IqNoResult_dyn();
+HXLINE( 423)			if (_hx_tmp) {
+HXLINE( 427)				return ::snikket::IqResult_obj::IqNoResult_dyn();
             			}
-HXLINE( 431)			{
-HXLINE( 431)				int _g = 0;
-HXDLIN( 431)				::Array< ::Dynamic> _g1;
-HXDLIN( 431)				 ::snikket::Stanza tmp = stanza->getChild(HX_("block",4d,75,fc,b4),HX_("urn:xmpp:blocking",d1,a1,46,c3));
-HXDLIN( 431)				::Array< ::Dynamic> tmp1;
-HXDLIN( 431)				if (::hx::IsNotNull( tmp )) {
-HXLINE( 431)					tmp1 = tmp->allTags(HX_("item",13,c5,bf,45),null());
+HXLINE( 430)			{
+HXLINE( 430)				int _g = 0;
+HXDLIN( 430)				::Array< ::Dynamic> _g1;
+HXDLIN( 430)				 ::snikket::Stanza tmp = stanza->getChild(HX_("block",4d,75,fc,b4),HX_("urn:xmpp:blocking",d1,a1,46,c3));
+HXDLIN( 430)				::Array< ::Dynamic> tmp1;
+HXDLIN( 430)				if (::hx::IsNotNull( tmp )) {
+HXLINE( 430)					tmp1 = tmp->allTags(HX_("item",13,c5,bf,45),null());
             				}
             				else {
-HXLINE( 431)					tmp1 = null();
+HXLINE( 430)					tmp1 = null();
             				}
-HXDLIN( 431)				if (::hx::IsNotNull( tmp1 )) {
-HXLINE( 431)					_g1 = tmp1;
+HXDLIN( 430)				if (::hx::IsNotNull( tmp1 )) {
+HXLINE( 430)					_g1 = tmp1;
             				}
             				else {
-HXLINE( 431)					_g1 = ::Array_obj< ::Dynamic>::__new(0);
-            				}
-HXDLIN( 431)				while((_g < _g1->length)){
-HXLINE( 431)					 ::snikket::Stanza item = _g1->__get(_g).StaticCast<  ::snikket::Stanza >();
-HXDLIN( 431)					_g = (_g + 1);
-HXLINE( 432)					if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(item->attr,HX_("jid",c5,ca,50,00))) ) )) {
-HXLINE( 432)						 ::snikket::Client _gthis1 = _gthis;
-HXDLIN( 432)						_gthis1->serverBlocked(( (::String)(::Reflect_obj::field(item->attr,HX_("jid",c5,ca,50,00))) ));
+HXLINE( 430)					_g1 = ::Array_obj< ::Dynamic>::__new(0);
+            				}
+HXDLIN( 430)				while((_g < _g1->length)){
+HXLINE( 430)					 ::snikket::Stanza item = _g1->__get(_g).StaticCast<  ::snikket::Stanza >();
+HXDLIN( 430)					_g = (_g + 1);
+HXLINE( 431)					if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(item->attr,HX_("jid",c5,ca,50,00))) ) )) {
+HXLINE( 431)						 ::snikket::Client _gthis1 = _gthis;
+HXDLIN( 431)						_gthis1->serverBlocked(( (::String)(::Reflect_obj::field(item->attr,HX_("jid",c5,ca,50,00))) ));
             					}
             				}
             			}
-HXLINE( 435)			return ::snikket::IqResult_obj::IqResult_dyn();
+HXLINE( 434)			return ::snikket::IqResult_obj::IqResult_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_23, ::snikket::Client,_gthis) HXARGC(1)
             		 ::snikket::IqResult _hx_run( ::snikket::Stanza stanza){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_438_new)
-HXLINE( 440)			bool _hx_tmp;
-HXDLIN( 440)			if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ) )) {
-HXLINE( 441)				::String _hx_tmp1 = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) );
-HXLINE( 440)				_hx_tmp = (_hx_tmp1 != _gthis->jid->domain);
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_437_new)
+HXLINE( 439)			bool _hx_tmp;
+HXDLIN( 439)			if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ) )) {
+HXLINE( 440)				::String _hx_tmp1 = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) );
+HXLINE( 439)				_hx_tmp = (_hx_tmp1 != _gthis->jid->domain);
             			}
             			else {
-HXLINE( 440)				_hx_tmp = false;
+HXLINE( 439)				_hx_tmp = false;
             			}
-HXLINE( 439)			if (_hx_tmp) {
-HXLINE( 443)				return ::snikket::IqResult_obj::IqNoResult_dyn();
+HXLINE( 438)			if (_hx_tmp) {
+HXLINE( 442)				return ::snikket::IqResult_obj::IqNoResult_dyn();
             			}
-HXLINE( 446)			 ::snikket::Stanza tmp = stanza->getChild(HX_("unblock",54,6c,8d,b1),HX_("urn:xmpp:blocking",d1,a1,46,c3));
-HXDLIN( 446)			::Array< ::Dynamic> unblocks;
-HXDLIN( 446)			if (::hx::IsNotNull( tmp )) {
-HXLINE( 446)				unblocks = tmp->allTags(HX_("item",13,c5,bf,45),null());
+HXLINE( 445)			 ::snikket::Stanza tmp = stanza->getChild(HX_("unblock",54,6c,8d,b1),HX_("urn:xmpp:blocking",d1,a1,46,c3));
+HXDLIN( 445)			::Array< ::Dynamic> unblocks;
+HXDLIN( 445)			if (::hx::IsNotNull( tmp )) {
+HXLINE( 445)				unblocks = tmp->allTags(HX_("item",13,c5,bf,45),null());
             			}
             			else {
-HXLINE( 446)				unblocks = null();
-            			}
-HXLINE( 447)			if (::hx::IsNull( unblocks )) {
-HXLINE( 449)				int _g = 0;
-HXDLIN( 449)				::Array< ::Dynamic> _g1 = _gthis->chats;
-HXDLIN( 449)				while((_g < _g1->length)){
-HXLINE( 449)					 ::snikket::Chat chat = _g1->__get(_g).StaticCast<  ::snikket::Chat >();
-HXDLIN( 449)					_g = (_g + 1);
-HXLINE( 450)					if (chat->isBlocked) {
-HXLINE( 450)						chat->unblock(false);
+HXLINE( 445)				unblocks = null();
+            			}
+HXLINE( 446)			if (::hx::IsNull( unblocks )) {
+HXLINE( 448)				int _g = 0;
+HXDLIN( 448)				::Array< ::Dynamic> _g1 = _gthis->chats;
+HXDLIN( 448)				while((_g < _g1->length)){
+HXLINE( 448)					 ::snikket::Chat chat = _g1->__get(_g).StaticCast<  ::snikket::Chat >();
+HXDLIN( 448)					_g = (_g + 1);
+HXLINE( 449)					if (chat->isBlocked) {
+HXLINE( 449)						chat->unblock(false);
             					}
             				}
             			}
             			else {
-HXLINE( 453)				int _g2 = 0;
-HXDLIN( 453)				while((_g2 < unblocks->length)){
-HXLINE( 453)					 ::snikket::Stanza item = unblocks->__get(_g2).StaticCast<  ::snikket::Stanza >();
-HXDLIN( 453)					_g2 = (_g2 + 1);
-HXLINE( 454)					if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(item->attr,HX_("jid",c5,ca,50,00))) ) )) {
-HXLINE( 454)						 ::snikket::Client _gthis1 = _gthis;
-HXDLIN( 454)						 ::snikket::Chat tmp1 = _gthis1->getChat(( (::String)(::Reflect_obj::field(item->attr,HX_("jid",c5,ca,50,00))) ));
-HXDLIN( 454)						if (::hx::IsNotNull( tmp1 )) {
-HXLINE( 454)							tmp1->unblock(false);
+HXLINE( 452)				int _g2 = 0;
+HXDLIN( 452)				while((_g2 < unblocks->length)){
+HXLINE( 452)					 ::snikket::Stanza item = unblocks->__get(_g2).StaticCast<  ::snikket::Stanza >();
+HXDLIN( 452)					_g2 = (_g2 + 1);
+HXLINE( 453)					if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(item->attr,HX_("jid",c5,ca,50,00))) ) )) {
+HXLINE( 453)						 ::snikket::Client _gthis1 = _gthis;
+HXDLIN( 453)						 ::snikket::Chat tmp1 = _gthis1->getChat(( (::String)(::Reflect_obj::field(item->attr,HX_("jid",c5,ca,50,00))) ));
+HXDLIN( 453)						if (::hx::IsNotNull( tmp1 )) {
+HXLINE( 453)							tmp1->unblock(false);
             						}
             					}
             				}
             			}
-HXLINE( 458)			return ::snikket::IqResult_obj::IqResult_dyn();
+HXLINE( 457)			return ::snikket::IqResult_obj::IqResult_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_31, ::snikket::Client,_gthis,::Dynamic,persistence) HXARGC(1)
             		 ::snikket::EventResult _hx_run( ::Dynamic event){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_461_new)
-HXLINE( 462)			 ::snikket::Stanza stanza = ( ( ::snikket::Stanza)(event->__Field(HX_("stanza",f5,5d,f7,05),::hx::paccDynamic)) );
-HXLINE( 463)			 ::snikket::Stanza c = stanza->getChild(HX_("c",63,00,00,00),HX_("http://jabber.org/protocol/caps",95,d0,90,e2));
-HXLINE( 464)			 ::snikket::Stanza mucUser = stanza->getChild(HX_("x",78,00,00,00),HX_("http://jabber.org/protocol/muc#user",87,74,8e,14));
-HXLINE( 465)			bool _hx_tmp;
-HXDLIN( 465)			if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ) )) {
-HXLINE( 465)				_hx_tmp = ::hx::IsNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("type",ba,f2,08,4d))) ) );
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_460_new)
+HXLINE( 461)			 ::snikket::Stanza stanza = ( ( ::snikket::Stanza)(event->__Field(HX_("stanza",f5,5d,f7,05),::hx::paccDynamic)) );
+HXLINE( 462)			 ::snikket::Stanza c = stanza->getChild(HX_("c",63,00,00,00),HX_("http://jabber.org/protocol/caps",95,d0,90,e2));
+HXLINE( 463)			 ::snikket::Stanza mucUser = stanza->getChild(HX_("x",78,00,00,00),HX_("http://jabber.org/protocol/muc#user",87,74,8e,14));
+HXLINE( 464)			bool _hx_tmp;
+HXDLIN( 464)			if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ) )) {
+HXLINE( 464)				_hx_tmp = ::hx::IsNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("type",ba,f2,08,4d))) ) );
             			}
             			else {
-HXLINE( 465)				_hx_tmp = false;
-            			}
-HXDLIN( 465)			if (_hx_tmp) {
-HXLINE( 466)				 ::snikket::JID from = ::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ));
-HXLINE( 467)				 ::snikket::Client _gthis1 = _gthis;
-HXDLIN( 467)				 ::snikket::Chat chat = _gthis1->getChat(from->asBare()->asString());
-HXLINE( 468)				if (::hx::IsNull( chat )) {
-HXLINE( 469)					 ::Dynamic _hx_tmp1 = ::haxe::Log_obj::trace;
-HXDLIN( 469)					::String _hx_tmp2 = (HX_("Presence for unknown JID: ",19,ed,d7,3f) + ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ));
-HXDLIN( 469)					_hx_tmp1(_hx_tmp2,::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),469,HX_("snikket.Client",3c,fe,06,7c),HX_("new",60,d0,53,00)));
-HXLINE( 470)					return ::snikket::EventResult_obj::EventUnhandled_dyn();
-            				}
-HXLINE( 472)				if (::hx::IsNull( c )) {
-HXLINE( 473)					 ::snikket::Chat chat1 = chat;
-HXDLIN( 473)					::String _hx_tmp3 = ::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ))->resource;
-HXDLIN( 473)					chat1->setPresence(_hx_tmp3, ::snikket::Presence_obj::__alloc( HX_CTX ,null(),mucUser));
-HXLINE( 474)					::Dynamic persistence1 = persistence;
-HXDLIN( 474)					::String _hx_tmp4 = _gthis->accountId();
-HXDLIN( 474)					::snikket::Persistence_obj::storeChats(persistence1,_hx_tmp4,::Array_obj< ::Dynamic>::__new(1)->init(0,chat));
-HXLINE( 475)					if (chat->livePresence()) {
-HXLINE( 475)						_gthis->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,chat));
+HXLINE( 464)				_hx_tmp = false;
+            			}
+HXDLIN( 464)			if (_hx_tmp) {
+HXLINE( 465)				 ::snikket::JID from = ::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ));
+HXLINE( 466)				 ::snikket::Client _gthis1 = _gthis;
+HXDLIN( 466)				 ::snikket::Chat chat = _gthis1->getChat(from->asBare()->asString());
+HXLINE( 467)				if (::hx::IsNull( chat )) {
+HXLINE( 468)					 ::Dynamic _hx_tmp1 = ::haxe::Log_obj::trace;
+HXDLIN( 468)					::String _hx_tmp2 = (HX_("Presence for unknown JID: ",19,ed,d7,3f) + ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ));
+HXDLIN( 468)					_hx_tmp1(_hx_tmp2,::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),468,HX_("snikket.Client",3c,fe,06,7c),HX_("new",60,d0,53,00)));
+HXLINE( 469)					return ::snikket::EventResult_obj::EventUnhandled_dyn();
+            				}
+HXLINE( 471)				if (::hx::IsNull( c )) {
+HXLINE( 472)					 ::snikket::Chat chat1 = chat;
+HXDLIN( 472)					::String _hx_tmp3 = ::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ))->resource;
+HXDLIN( 472)					chat1->setPresence(_hx_tmp3, ::snikket::Presence_obj::__alloc( HX_CTX ,null(),mucUser));
+HXLINE( 473)					::Dynamic persistence1 = persistence;
+HXDLIN( 473)					::String _hx_tmp4 = _gthis->accountId();
+HXDLIN( 473)					::snikket::Persistence_obj::storeChats(persistence1,_hx_tmp4,::Array_obj< ::Dynamic>::__new(1)->init(0,chat));
+HXLINE( 474)					if (chat->livePresence()) {
+HXLINE( 474)						_gthis->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,chat));
             					}
             				}
             				else {
             					HX_BEGIN_LOCAL_FUNC_S5(::hx::LocalFunc,_hx_Closure_24, ::snikket::Client,_gthis, ::snikket::Stanza,mucUser,::Dynamic,persistence, ::snikket::Chat,chat, ::snikket::Stanza,stanza) HXARGC(1)
             					 ::snikket::Chat _hx_run( ::snikket::Caps caps){
-            						HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_477_new)
-HXLINE( 478)						 ::snikket::Chat chat1 = chat;
-HXDLIN( 478)						::String handleCaps = ::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ))->resource;
-HXDLIN( 478)						chat1->setPresence(handleCaps, ::snikket::Presence_obj::__alloc( HX_CTX ,caps,mucUser));
-HXLINE( 479)						bool handleCaps1;
-HXDLIN( 479)						if (::hx::IsNotNull( mucUser )) {
-HXLINE( 479)							handleCaps1 = chat->livePresence();
+            						HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_476_new)
+HXLINE( 477)						 ::snikket::Chat chat1 = chat;
+HXDLIN( 477)						::String handleCaps = ::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ))->resource;
+HXDLIN( 477)						chat1->setPresence(handleCaps, ::snikket::Presence_obj::__alloc( HX_CTX ,caps,mucUser));
+HXLINE( 478)						bool handleCaps1;
+HXDLIN( 478)						if (::hx::IsNotNull( mucUser )) {
+HXLINE( 478)							handleCaps1 = chat->livePresence();
             						}
             						else {
-HXLINE( 479)							handleCaps1 = true;
+HXLINE( 478)							handleCaps1 = true;
             						}
-HXDLIN( 479)						if (handleCaps1) {
-HXLINE( 479)							::Dynamic persistence1 = persistence;
-HXDLIN( 479)							::String handleCaps2 = _gthis->accountId();
-HXDLIN( 479)							::snikket::Persistence_obj::storeChats(persistence1,handleCaps2,::Array_obj< ::Dynamic>::__new(1)->init(0,chat));
+HXDLIN( 478)						if (handleCaps1) {
+HXLINE( 478)							::Dynamic persistence1 = persistence;
+HXDLIN( 478)							::String handleCaps2 = _gthis->accountId();
+HXDLIN( 478)							::snikket::Persistence_obj::storeChats(persistence1,handleCaps2,::Array_obj< ::Dynamic>::__new(1)->init(0,chat));
             						}
-HXLINE( 480)						return chat;
+HXLINE( 479)						return chat;
             					}
             					HX_END_LOCAL_FUNC1(return)
 
             					HX_BEGIN_LOCAL_FUNC_S5(::hx::LocalFunc,_hx_Closure_27, ::snikket::Client,_gthis,::Dynamic,persistence, ::Dynamic,handleCaps, ::snikket::Stanza,stanza, ::snikket::Stanza,c) HXARGC(1)
             					void _hx_run( ::snikket::Caps caps){
-            						HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_484_new)
-HXLINE( 484)						if (::hx::IsNull( caps )) {
-HXLINE( 485)							::Dynamic this1 = _gthis->pendingCaps;
-HXDLIN( 485)							::Array< ::Dynamic> pending = ( (::Array< ::Dynamic>)(( ( ::haxe::ds::StringMap)(this1) )->get(( (::String)(::Reflect_obj::field(c->attr,HX_("ver",63,e2,59,00))) ))) );
-HXLINE( 486)							if (::hx::IsNull( pending )) {
+            						HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_483_new)
+HXLINE( 483)						if (::hx::IsNull( caps )) {
+HXLINE( 484)							::Dynamic this1 = _gthis->pendingCaps;
+HXDLIN( 484)							::Array< ::Dynamic> pending = ( (::Array< ::Dynamic>)(( ( ::haxe::ds::StringMap)(this1) )->get(( (::String)(::Reflect_obj::field(c->attr,HX_("ver",63,e2,59,00))) ))) );
+HXLINE( 485)							if (::hx::IsNull( pending )) {
             								HX_BEGIN_LOCAL_FUNC_S4(::hx::LocalFunc,_hx_Closure_26, ::snikket::Client,_gthis,::Dynamic,persistence, ::snikket::queries::DiscoInfoGet,discoGet2, ::snikket::Stanza,c) HXARGC(0)
             								void _hx_run(){
             									HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_25, ::haxe::ds::StringMap,chatsToUpdate) HXARGC(0)
             									 ::Dynamic _hx_run(){
-            										HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_498_new)
-HXLINE( 498)										return chatsToUpdate->iterator();
+            										HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_497_new)
+HXLINE( 497)										return chatsToUpdate->iterator();
             									}
             									HX_END_LOCAL_FUNC0(return)
 
-            									HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_489_new)
-HXLINE( 490)									 ::haxe::ds::StringMap chatsToUpdate =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
-HXLINE( 491)									::Array< ::Dynamic> handlers;
-HXDLIN( 491)									::Dynamic this1 = _gthis->pendingCaps;
-HXDLIN( 491)									::Array< ::Dynamic> tmp = ( (::Array< ::Dynamic>)(( ( ::haxe::ds::StringMap)(this1) )->get(( (::String)(::Reflect_obj::field(c->attr,HX_("ver",63,e2,59,00))) ))) );
-HXDLIN( 491)									if (::hx::IsNotNull( tmp )) {
-HXLINE( 491)										handlers = tmp;
+            									HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_488_new)
+HXLINE( 489)									 ::haxe::ds::StringMap chatsToUpdate =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
+HXLINE( 490)									::Array< ::Dynamic> handlers;
+HXDLIN( 490)									::Dynamic this1 = _gthis->pendingCaps;
+HXDLIN( 490)									::Array< ::Dynamic> tmp = ( (::Array< ::Dynamic>)(( ( ::haxe::ds::StringMap)(this1) )->get(( (::String)(::Reflect_obj::field(c->attr,HX_("ver",63,e2,59,00))) ))) );
+HXDLIN( 490)									if (::hx::IsNotNull( tmp )) {
+HXLINE( 490)										handlers = tmp;
             									}
             									else {
-HXLINE( 491)										handlers = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 490)										handlers = ::Array_obj< ::Dynamic>::__new(0);
             									}
-HXLINE( 492)									{
-HXLINE( 492)										::Dynamic this2 = _gthis->pendingCaps;
-HXDLIN( 492)										( ( ::haxe::ds::StringMap)(this2) )->remove(( (::String)(::Reflect_obj::field(c->attr,HX_("ver",63,e2,59,00))) ));
+HXLINE( 491)									{
+HXLINE( 491)										::Dynamic this2 = _gthis->pendingCaps;
+HXDLIN( 491)										( ( ::haxe::ds::StringMap)(this2) )->remove(( (::String)(::Reflect_obj::field(c->attr,HX_("ver",63,e2,59,00))) ));
             									}
-HXLINE( 493)									if (::hx::IsNotNull( discoGet2->getResult() )) {
-HXLINE( 493)										::Dynamic persistence1 = persistence;
-HXDLIN( 493)										::snikket::Persistence_obj::storeCaps(persistence1,discoGet2->getResult());
+HXLINE( 492)									if (::hx::IsNotNull( discoGet2->getResult() )) {
+HXLINE( 492)										::Dynamic persistence1 = persistence;
+HXDLIN( 492)										::snikket::Persistence_obj::storeCaps(persistence1,discoGet2->getResult());
             									}
-HXLINE( 494)									{
-HXLINE( 494)										int _g = 0;
-HXDLIN( 494)										while((_g < handlers->length)){
-HXLINE( 494)											 ::Dynamic handler = handlers->__get(_g);
-HXDLIN( 494)											_g = (_g + 1);
-HXLINE( 495)											 ::snikket::Chat c1 = ( ( ::snikket::Chat)(handler(discoGet2->getResult())) );
-HXLINE( 496)											if (c1->livePresence()) {
-HXLINE( 496)												chatsToUpdate->set(c1->chatId,c1);
+HXLINE( 493)									{
+HXLINE( 493)										int _g = 0;
+HXDLIN( 493)										while((_g < handlers->length)){
+HXLINE( 493)											 ::Dynamic handler = handlers->__get(_g);
+HXDLIN( 493)											_g = (_g + 1);
+HXLINE( 494)											 ::snikket::Chat c1 = ( ( ::snikket::Chat)(handler(discoGet2->getResult())) );
+HXLINE( 495)											if (c1->livePresence()) {
+HXLINE( 495)												chatsToUpdate->set(c1->chatId,c1);
             											}
             										}
             									}
-HXLINE( 498)									 ::snikket::Client _gthis1 = _gthis;
-HXDLIN( 498)									_gthis1->trigger(HX_("chats/update",3d,8e,1d,14),::Lambda_obj::array( ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE( 497)									 ::snikket::Client _gthis1 = _gthis;
+HXDLIN( 497)									_gthis1->trigger(HX_("chats/update",3d,8e,1d,14),::Lambda_obj::array( ::Dynamic(::hx::Anon_obj::Create(1)
             										->setFixed(0,HX_("iterator",ee,49,9a,93), ::Dynamic(new _hx_Closure_25(chatsToUpdate))))));
             								}
             								HX_END_LOCAL_FUNC0((void))
 
-HXLINE( 487)								{
-HXLINE( 487)									::Dynamic this2 = _gthis->pendingCaps;
-HXDLIN( 487)									::String key = ( (::String)(::Reflect_obj::field(c->attr,HX_("ver",63,e2,59,00))) );
-HXDLIN( 487)									( ( ::haxe::ds::StringMap)(this2) )->set(key,::Array_obj< ::Dynamic>::__new(1)->init(0,handleCaps));
+HXLINE( 486)								{
+HXLINE( 486)									::Dynamic this2 = _gthis->pendingCaps;
+HXDLIN( 486)									::String key = ( (::String)(::Reflect_obj::field(c->attr,HX_("ver",63,e2,59,00))) );
+HXDLIN( 486)									( ( ::haxe::ds::StringMap)(this2) )->set(key,::Array_obj< ::Dynamic>::__new(1)->init(0,handleCaps));
             								}
-HXLINE( 488)								::String discoGet = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) );
-HXDLIN( 488)								::String discoGet1 = (( (::String)(::Reflect_obj::field(c->attr,HX_("node",02,0a,0a,49))) ) + HX_("#",23,00,00,00));
-HXDLIN( 488)								 ::snikket::queries::DiscoInfoGet discoGet2 =  ::snikket::queries::DiscoInfoGet_obj::__alloc( HX_CTX ,discoGet,(discoGet1 + ( (::String)(::Reflect_obj::field(c->attr,HX_("ver",63,e2,59,00))) )));
-HXLINE( 489)								discoGet2->onFinished( ::Dynamic(new _hx_Closure_26(_gthis,persistence,discoGet2,c)));
-HXLINE( 500)								_gthis->sendQuery(discoGet2);
+HXLINE( 487)								::String discoGet = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) );
+HXDLIN( 487)								::String discoGet1 = (( (::String)(::Reflect_obj::field(c->attr,HX_("node",02,0a,0a,49))) ) + HX_("#",23,00,00,00));
+HXDLIN( 487)								 ::snikket::queries::DiscoInfoGet discoGet2 =  ::snikket::queries::DiscoInfoGet_obj::__alloc( HX_CTX ,discoGet,(discoGet1 + ( (::String)(::Reflect_obj::field(c->attr,HX_("ver",63,e2,59,00))) )));
+HXLINE( 488)								discoGet2->onFinished( ::Dynamic(new _hx_Closure_26(_gthis,persistence,discoGet2,c)));
+HXLINE( 499)								_gthis->sendQuery(discoGet2);
             							}
             							else {
-HXLINE( 502)								pending->push(handleCaps);
+HXLINE( 501)								pending->push(handleCaps);
             							}
             						}
             						else {
-HXLINE( 505)							handleCaps(caps);
+HXLINE( 504)							handleCaps(caps);
             						}
             					}
             					HX_END_LOCAL_FUNC1((void))
 
-HXLINE( 477)					 ::Dynamic handleCaps =  ::Dynamic(new _hx_Closure_24(_gthis,mucUser,persistence,chat,stanza));
-HXLINE( 483)					::Dynamic persistence2 = persistence;
-HXDLIN( 483)					::snikket::Persistence_obj::getCaps(persistence2,( (::String)(::Reflect_obj::field(c->attr,HX_("ver",63,e2,59,00))) ), ::Dynamic(new _hx_Closure_27(_gthis,persistence,handleCaps,stanza,c)));
+HXLINE( 476)					 ::Dynamic handleCaps =  ::Dynamic(new _hx_Closure_24(_gthis,mucUser,persistence,chat,stanza));
+HXLINE( 482)					::Dynamic persistence2 = persistence;
+HXDLIN( 482)					::snikket::Persistence_obj::getCaps(persistence2,( (::String)(::Reflect_obj::field(c->attr,HX_("ver",63,e2,59,00))) ), ::Dynamic(new _hx_Closure_27(_gthis,persistence,handleCaps,stanza,c)));
             				}
-HXLINE( 509)				if (from->isBare()) {
-HXLINE( 510)					::String avatarSha1Hex = stanza->findText(HX_("{vcard-temp:x:update}x/photo#",f6,a1,33,28));
-HXLINE( 511)					if (::hx::IsNotNull( avatarSha1Hex )) {
+HXLINE( 508)				if (from->isBare()) {
+HXLINE( 509)					::String avatarSha1Hex = stanza->findText(HX_("{vcard-temp:x:update}x/photo#",f6,a1,33,28));
+HXLINE( 510)					if (::hx::IsNotNull( avatarSha1Hex )) {
             						HX_BEGIN_LOCAL_FUNC_S4(::hx::LocalFunc,_hx_Closure_30, ::snikket::Client,_gthis, ::snikket::JID,from,::Dynamic,persistence, ::snikket::Chat,chat) HXARGC(1)
             						void _hx_run(bool has){
-            							HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_516_new)
-HXLINE( 516)							if (has) {
-HXLINE( 517)								if (chat->livePresence()) {
-HXLINE( 517)									_gthis->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,chat));
+            							HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_515_new)
+HXLINE( 515)							if (has) {
+HXLINE( 516)								if (chat->livePresence()) {
+HXLINE( 516)									_gthis->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,chat));
             								}
             							}
             							else {
@@ -1642,66 +1643,66 @@ HXLINE( 517)									_gthis->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::Virt
             								void _hx_run(){
             									HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_28, ::snikket::Client,_gthis, ::snikket::Chat,chat) HXARGC(0)
             									void _hx_run(){
-            										HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_524_new)
-HXLINE( 524)										_gthis->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,chat));
+            										HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_523_new)
+HXLINE( 523)										_gthis->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,chat));
             									}
             									HX_END_LOCAL_FUNC0((void))
 
-            									HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_520_new)
-HXLINE( 521)									 ::Dynamic vcard = vcardGet->getResult();
-HXLINE( 522)									if (::hx::IsNull( vcard->__Field(HX_("photo",b2,c8,f3,c1),::hx::paccDynamic) )) {
-HXLINE( 522)										return;
+            									HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_519_new)
+HXLINE( 520)									 ::Dynamic vcard = vcardGet->getResult();
+HXLINE( 521)									if (::hx::IsNull( vcard->__Field(HX_("photo",b2,c8,f3,c1),::hx::paccDynamic) )) {
+HXLINE( 521)										return;
             									}
-HXLINE( 523)									::snikket::Persistence_obj::storeMedia(persistence, ::Dynamic( ::Dynamic(vcard->__Field(HX_("photo",b2,c8,f3,c1),::hx::paccDynamic))->__Field(HX_("mime",b4,4d,5c,48),::hx::paccDynamic)),( ( ::haxe::io::Bytes)( ::Dynamic(vcard->__Field(HX_("photo",b2,c8,f3,c1),::hx::paccDynamic))->__Field(HX_("data",2a,56,63,42),::hx::paccDynamic)) )->b, ::Dynamic(new _hx_Closure_28(_gthis,chat)));
+HXLINE( 522)									::snikket::Persistence_obj::storeMedia(persistence, ::Dynamic( ::Dynamic(vcard->__Field(HX_("photo",b2,c8,f3,c1),::hx::paccDynamic))->__Field(HX_("mime",b4,4d,5c,48),::hx::paccDynamic)),( ( ::haxe::io::Bytes)( ::Dynamic(vcard->__Field(HX_("photo",b2,c8,f3,c1),::hx::paccDynamic))->__Field(HX_("data",2a,56,63,42),::hx::paccDynamic)) )->b, ::Dynamic(new _hx_Closure_28(_gthis,chat)));
             								}
             								HX_END_LOCAL_FUNC0((void))
 
-HXLINE( 519)								 ::snikket::queries::VcardTempGet vcardGet =  ::snikket::queries::VcardTempGet_obj::__alloc( HX_CTX ,from);
-HXLINE( 520)								vcardGet->onFinished( ::Dynamic(new _hx_Closure_29(_gthis,vcardGet,persistence,chat)));
-HXLINE( 527)								_gthis->sendQuery(vcardGet);
+HXLINE( 518)								 ::snikket::queries::VcardTempGet vcardGet =  ::snikket::queries::VcardTempGet_obj::__alloc( HX_CTX ,from);
+HXLINE( 519)								vcardGet->onFinished( ::Dynamic(new _hx_Closure_29(_gthis,vcardGet,persistence,chat)));
+HXLINE( 526)								_gthis->sendQuery(vcardGet);
             							}
             						}
             						HX_END_LOCAL_FUNC1((void))
 
-HXLINE( 512)						 ::snikket::Hash tmp = ::snikket::Hash_obj::fromHex(HX_("sha-1",90,a8,1c,7c),avatarSha1Hex);
-HXDLIN( 512)						::Array< unsigned char > avatarSha1;
-HXDLIN( 512)						if (::hx::IsNotNull( tmp )) {
-HXLINE( 512)							avatarSha1 = tmp->hash;
+HXLINE( 511)						 ::snikket::Hash tmp = ::snikket::Hash_obj::fromHex(HX_("sha-1",90,a8,1c,7c),avatarSha1Hex);
+HXDLIN( 511)						::Array< unsigned char > avatarSha1;
+HXDLIN( 511)						if (::hx::IsNotNull( tmp )) {
+HXLINE( 511)							avatarSha1 = tmp->hash;
             						}
             						else {
-HXLINE( 512)							avatarSha1 = null();
+HXLINE( 511)							avatarSha1 = null();
             						}
-HXLINE( 513)						chat->setAvatarSha1(avatarSha1);
-HXLINE( 514)						::Dynamic persistence3 = persistence;
-HXDLIN( 514)						::String _hx_tmp5 = _gthis->accountId();
-HXDLIN( 514)						::snikket::Persistence_obj::storeChats(persistence3,_hx_tmp5,::Array_obj< ::Dynamic>::__new(1)->init(0,chat));
-HXLINE( 515)						::snikket::Persistence_obj::hasMedia(persistence,HX_("sha-1",90,a8,1c,7c),avatarSha1, ::Dynamic(new _hx_Closure_30(_gthis,from,persistence,chat)));
+HXLINE( 512)						chat->setAvatarSha1(avatarSha1);
+HXLINE( 513)						::Dynamic persistence3 = persistence;
+HXDLIN( 513)						::String _hx_tmp5 = _gthis->accountId();
+HXDLIN( 513)						::snikket::Persistence_obj::storeChats(persistence3,_hx_tmp5,::Array_obj< ::Dynamic>::__new(1)->init(0,chat));
+HXLINE( 514)						::snikket::Persistence_obj::hasMedia(persistence,HX_("sha-1",90,a8,1c,7c),avatarSha1, ::Dynamic(new _hx_Closure_30(_gthis,from,persistence,chat)));
             					}
             				}
-HXLINE( 532)				return ::snikket::EventResult_obj::EventHandled_dyn();
+HXLINE( 531)				return ::snikket::EventResult_obj::EventHandled_dyn();
             			}
-HXLINE( 535)			bool _hx_tmp6;
-HXDLIN( 535)			if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ) )) {
-HXLINE( 535)				_hx_tmp6 = (( (::String)(::Reflect_obj::field(stanza->attr,HX_("type",ba,f2,08,4d))) ) == HX_("unavailable",50,e0,29,fd));
+HXLINE( 534)			bool _hx_tmp6;
+HXDLIN( 534)			if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ) )) {
+HXLINE( 534)				_hx_tmp6 = (( (::String)(::Reflect_obj::field(stanza->attr,HX_("type",ba,f2,08,4d))) ) == HX_("unavailable",50,e0,29,fd));
             			}
             			else {
-HXLINE( 535)				_hx_tmp6 = false;
+HXLINE( 534)				_hx_tmp6 = false;
             			}
-HXDLIN( 535)			if (_hx_tmp6) {
-HXLINE( 536)				 ::snikket::Client _gthis2 = _gthis;
-HXDLIN( 536)				 ::snikket::Chat chat2 = _gthis2->getChat(::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ))->asBare()->asString());
-HXLINE( 537)				if (::hx::IsNull( chat2 )) {
-HXLINE( 538)					 ::Dynamic _hx_tmp7 = ::haxe::Log_obj::trace;
-HXDLIN( 538)					::String _hx_tmp8 = (HX_("Presence for unknown JID: ",19,ed,d7,3f) + ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ));
-HXDLIN( 538)					_hx_tmp7(_hx_tmp8,::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),538,HX_("snikket.Client",3c,fe,06,7c),HX_("new",60,d0,53,00)));
-HXLINE( 539)					return ::snikket::EventResult_obj::EventUnhandled_dyn();
+HXDLIN( 534)			if (_hx_tmp6) {
+HXLINE( 535)				 ::snikket::Client _gthis2 = _gthis;
+HXDLIN( 535)				 ::snikket::Chat chat2 = _gthis2->getChat(::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ))->asBare()->asString());
+HXLINE( 536)				if (::hx::IsNull( chat2 )) {
+HXLINE( 537)					 ::Dynamic _hx_tmp7 = ::haxe::Log_obj::trace;
+HXDLIN( 537)					::String _hx_tmp8 = (HX_("Presence for unknown JID: ",19,ed,d7,3f) + ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ));
+HXDLIN( 537)					_hx_tmp7(_hx_tmp8,::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),537,HX_("snikket.Client",3c,fe,06,7c),HX_("new",60,d0,53,00)));
+HXLINE( 538)					return ::snikket::EventResult_obj::EventUnhandled_dyn();
             				}
-HXLINE( 542)				chat2->removePresence(::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ))->resource);
-HXLINE( 543)				::Dynamic persistence4 = persistence;
-HXDLIN( 543)				::snikket::Persistence_obj::storeChats(persistence4,_gthis->accountId(),::Array_obj< ::Dynamic>::__new(1)->init(0,chat2));
-HXLINE( 544)				_gthis->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,chat2));
+HXLINE( 541)				chat2->removePresence(::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ))->resource);
+HXLINE( 542)				::Dynamic persistence4 = persistence;
+HXDLIN( 542)				::snikket::Persistence_obj::storeChats(persistence4,_gthis->accountId(),::Array_obj< ::Dynamic>::__new(1)->init(0,chat2));
+HXLINE( 543)				_gthis->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,chat2));
             			}
-HXLINE( 547)			return ::snikket::EventResult_obj::EventUnhandled_dyn();
+HXLINE( 546)			return ::snikket::EventResult_obj::EventUnhandled_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
@@ -1719,26 +1720,25 @@ HXLINE(  58)		this->syncMessageHandlers = ::Array_obj< ::Dynamic>::__new(0);
 HXLINE(  57)		this->chatMessageHandlers = ::Array_obj< ::Dynamic>::__new(0);
 HXLINE(  55)		this->sendAvailable = true;
 HXLINE(  97)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(  98)		::sys::ssl::Socket_obj::DEFAULT_VERIFY_CERT = false;
-HXLINE(  99)		::snikket::_Util::Util_Fields__obj::setupTrace();
-HXLINE( 100)		super::__construct();
-HXLINE( 101)		this->jid = ::snikket::JID_obj::parse(address);
-HXLINE( 102)		this->_displayName = this->jid->node;
-HXLINE( 103)		this->persistence = persistence;
-HXLINE( 104)		this->stream =  ::snikket::streams::XmppStropheStream_obj::__alloc( HX_CTX );
-HXLINE( 105)		this->stream->on(HX_("status/online",10,05,0e,d2),this->onConnected_dyn());
-HXLINE( 106)		this->stream->on(HX_("status/offline",c6,eb,eb,54), ::Dynamic(new _hx_Closure_0(_gthis)));
-HXLINE( 110)		this->stream->on(HX_("fast-token",48,5f,c2,26), ::Dynamic(new _hx_Closure_1(_gthis,persistence)));
-HXLINE( 116)		this->stream->on(HX_("sm/update",1e,16,63,46), ::Dynamic(new _hx_Closure_2(_gthis,persistence)));
-HXLINE( 122)		this->stream->on(HX_("sm/ack",14,b2,12,dd), ::Dynamic(new _hx_Closure_4(_gthis,persistence)));
-HXLINE( 132)		this->stream->on(HX_("sm/fail",b3,aa,95,96), ::Dynamic(new _hx_Closure_6(_gthis,persistence)));
-HXLINE( 142)		this->stream->on(HX_("message",c7,35,11,9a), ::Dynamic(new _hx_Closure_18(_gthis,persistence)));
-HXLINE( 341)		this->stream->onIq(::snikket::IqRequestType_obj::Set_dyn(),HX_("jingle",31,27,eb,1f),HX_("urn:xmpp:jingle:1",44,c4,fe,f7), ::Dynamic(new _hx_Closure_19(_gthis)));
-HXLINE( 392)		this->stream->onIq(::snikket::IqRequestType_obj::Get_dyn(),HX_("query",08,8b,ea,5d),HX_("http://jabber.org/protocol/disco#info",cb,2b,7f,0b), ::Dynamic(new _hx_Closure_20(_gthis)));
-HXLINE( 396)		this->stream->onIq(::snikket::IqRequestType_obj::Set_dyn(),HX_("query",08,8b,ea,5d),HX_("jabber:iq:roster",47,76,6e,06), ::Dynamic(new _hx_Closure_21(_gthis,persistence)));
-HXLINE( 423)		this->stream->onIq(::snikket::IqRequestType_obj::Set_dyn(),HX_("block",4d,75,fc,b4),HX_("urn:xmpp:blocking",d1,a1,46,c3), ::Dynamic(new _hx_Closure_22(_gthis)));
-HXLINE( 438)		this->stream->onIq(::snikket::IqRequestType_obj::Set_dyn(),HX_("unblock",54,6c,8d,b1),HX_("urn:xmpp:blocking",d1,a1,46,c3), ::Dynamic(new _hx_Closure_23(_gthis)));
-HXLINE( 461)		this->stream->on(HX_("presence",3b,52,d7,66), ::Dynamic(new _hx_Closure_31(_gthis,persistence)));
+HXLINE(  98)		::snikket::_Util::Util_Fields__obj::setupTrace();
+HXLINE(  99)		super::__construct();
+HXLINE( 100)		this->jid = ::snikket::JID_obj::parse(address);
+HXLINE( 101)		this->_displayName = this->jid->node;
+HXLINE( 102)		this->persistence = persistence;
+HXLINE( 103)		this->stream =  ::snikket::streams::XmppStropheStream_obj::__alloc( HX_CTX );
+HXLINE( 104)		this->stream->on(HX_("status/online",10,05,0e,d2),this->onConnected_dyn());
+HXLINE( 105)		this->stream->on(HX_("status/offline",c6,eb,eb,54), ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE( 109)		this->stream->on(HX_("fast-token",48,5f,c2,26), ::Dynamic(new _hx_Closure_1(_gthis,persistence)));
+HXLINE( 115)		this->stream->on(HX_("sm/update",1e,16,63,46), ::Dynamic(new _hx_Closure_2(_gthis,persistence)));
+HXLINE( 121)		this->stream->on(HX_("sm/ack",14,b2,12,dd), ::Dynamic(new _hx_Closure_4(_gthis,persistence)));
+HXLINE( 131)		this->stream->on(HX_("sm/fail",b3,aa,95,96), ::Dynamic(new _hx_Closure_6(_gthis,persistence)));
+HXLINE( 141)		this->stream->on(HX_("message",c7,35,11,9a), ::Dynamic(new _hx_Closure_18(_gthis,persistence)));
+HXLINE( 340)		this->stream->onIq(::snikket::IqRequestType_obj::Set_dyn(),HX_("jingle",31,27,eb,1f),HX_("urn:xmpp:jingle:1",44,c4,fe,f7), ::Dynamic(new _hx_Closure_19(_gthis)));
+HXLINE( 391)		this->stream->onIq(::snikket::IqRequestType_obj::Get_dyn(),HX_("query",08,8b,ea,5d),HX_("http://jabber.org/protocol/disco#info",cb,2b,7f,0b), ::Dynamic(new _hx_Closure_20(_gthis)));
+HXLINE( 395)		this->stream->onIq(::snikket::IqRequestType_obj::Set_dyn(),HX_("query",08,8b,ea,5d),HX_("jabber:iq:roster",47,76,6e,06), ::Dynamic(new _hx_Closure_21(_gthis,persistence)));
+HXLINE( 422)		this->stream->onIq(::snikket::IqRequestType_obj::Set_dyn(),HX_("block",4d,75,fc,b4),HX_("urn:xmpp:blocking",d1,a1,46,c3), ::Dynamic(new _hx_Closure_22(_gthis)));
+HXLINE( 437)		this->stream->onIq(::snikket::IqRequestType_obj::Set_dyn(),HX_("unblock",54,6c,8d,b1),HX_("urn:xmpp:blocking",d1,a1,46,c3), ::Dynamic(new _hx_Closure_23(_gthis)));
+HXLINE( 460)		this->stream->on(HX_("presence",3b,52,d7,66), ::Dynamic(new _hx_Closure_31(_gthis,persistence)));
             	}
 
 Dynamic Client_obj::__CreateEmpty() { return new Client_obj; }
@@ -1775,93 +1775,93 @@ void Client_obj::start(){
             			void _hx_run(::Array< unsigned char > sm){
             				HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_1, ::snikket::Client,_gthis) HXARGC(1)
             				 ::snikket::EventResult _hx_run( ::Dynamic data){
-            					HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_557_start)
-HXLINE( 558)					 ::Dynamic tmp = data->__Field(HX_("mechanisms",fa,b0,9e,80),::hx::paccDynamic);
-HXDLIN( 558)					 ::Dynamic tmp1;
-HXDLIN( 558)					if (::hx::IsNotNull( tmp )) {
+            					HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_556_start)
+HXLINE( 557)					 ::Dynamic tmp = data->__Field(HX_("mechanisms",fa,b0,9e,80),::hx::paccDynamic);
+HXDLIN( 557)					 ::Dynamic tmp1;
+HXDLIN( 557)					if (::hx::IsNotNull( tmp )) {
             						HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             						 ::Dynamic _hx_run( ::Dynamic mech){
-            							HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_558_start)
-HXLINE( 558)							return  ::Dynamic(mech->__Field(HX_("canFast",cc,aa,0d,62),::hx::paccDynamic));
+            							HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_557_start)
+HXLINE( 557)							return  ::Dynamic(mech->__Field(HX_("canFast",cc,aa,0d,62),::hx::paccDynamic));
             						}
             						HX_END_LOCAL_FUNC1(return)
 
-HXLINE( 558)						tmp1 = tmp->__Field(HX_("find",39,d0,bb,43),::hx::paccDynamic)( ::Dynamic(new _hx_Closure_0()));
+HXLINE( 557)						tmp1 = tmp->__Field(HX_("find",39,d0,bb,43),::hx::paccDynamic)( ::Dynamic(new _hx_Closure_0()));
             					}
             					else {
-HXLINE( 558)						tmp1 = null();
+HXLINE( 557)						tmp1 = null();
             					}
-HXDLIN( 558)					::String _hx_tmp;
-HXDLIN( 558)					if (::hx::IsNotNull( tmp1 )) {
-HXLINE( 558)						_hx_tmp = ( (::String)(tmp1->__Field(HX_("name",4b,72,ff,48),::hx::paccDynamic)) );
+HXDLIN( 557)					::String _hx_tmp;
+HXDLIN( 557)					if (::hx::IsNotNull( tmp1 )) {
+HXLINE( 557)						_hx_tmp = ( (::String)(tmp1->__Field(HX_("name",4b,72,ff,48),::hx::paccDynamic)) );
             					}
             					else {
-HXLINE( 558)						_hx_tmp = null();
+HXLINE( 557)						_hx_tmp = null();
             					}
-HXDLIN( 558)					_gthis->fastMechanism = _hx_tmp;
-HXLINE( 559)					bool _hx_tmp1;
-HXDLIN( 559)					if (::hx::IsNotNull( _gthis->token )) {
-HXLINE( 559)						if (::hx::IsNull( _gthis->fastMechanism )) {
-HXLINE( 559)							_hx_tmp1 = ::hx::IsNotNull( data->__Field(HX_("mechanimsms",cb,6a,49,06),::hx::paccDynamic) );
+HXDLIN( 557)					_gthis->fastMechanism = _hx_tmp;
+HXLINE( 558)					bool _hx_tmp1;
+HXDLIN( 558)					if (::hx::IsNotNull( _gthis->token )) {
+HXLINE( 558)						if (::hx::IsNull( _gthis->fastMechanism )) {
+HXLINE( 558)							_hx_tmp1 = ::hx::IsNotNull( data->__Field(HX_("mechanimsms",cb,6a,49,06),::hx::paccDynamic) );
             						}
             						else {
-HXLINE( 559)							_hx_tmp1 = false;
+HXLINE( 558)							_hx_tmp1 = false;
             						}
             					}
             					else {
-HXLINE( 559)						_hx_tmp1 = true;
+HXLINE( 558)						_hx_tmp1 = true;
             					}
-HXDLIN( 559)					if (_hx_tmp1) {
-HXLINE( 560)						 ::snikket::Client _gthis1 = _gthis;
-HXDLIN( 560)						return _gthis1->trigger(HX_("auth/password-needed",80,f0,74,49), ::Dynamic(::hx::Anon_obj::Create(1)
+HXDLIN( 558)					if (_hx_tmp1) {
+HXLINE( 559)						 ::snikket::Client _gthis1 = _gthis;
+HXDLIN( 559)						return _gthis1->trigger(HX_("auth/password-needed",80,f0,74,49), ::Dynamic(::hx::Anon_obj::Create(1)
             							->setFixed(0,HX_("accountId",e8,81,54,29),_gthis->accountId())));
             					}
             					else {
-HXLINE( 562)						return _gthis->stream->trigger(HX_("auth/password",e2,5d,98,00), ::Dynamic(::hx::Anon_obj::Create(3)
+HXLINE( 561)						return _gthis->stream->trigger(HX_("auth/password",e2,5d,98,00), ::Dynamic(::hx::Anon_obj::Create(3)
             							->setFixed(0,HX_("fastCount",93,fc,67,a5),_gthis->fastCount)
             							->setFixed(1,HX_("mechanism",59,fd,7e,2e),_gthis->fastMechanism)
             							->setFixed(2,HX_("password",1b,23,d0,48),_gthis->token)));
             					}
-HXLINE( 559)					return null();
+HXLINE( 558)					return null();
             				}
             				HX_END_LOCAL_FUNC1(return)
 
             				HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_2, ::snikket::Client,_gthis,::Array< unsigned char >,sm) HXARGC(1)
             				 ::snikket::EventResult _hx_run( ::Dynamic data){
-            					HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_565_start)
-HXLINE( 566)					if (::hx::IsNotNull( _gthis->token )) {
-HXLINE( 567)						_gthis->token = null();
-HXLINE( 568)						 ::snikket::GenericStream _gthis1 = _gthis->stream;
-HXDLIN( 568)						::String _hx_tmp = _gthis->jid->asString();
-HXDLIN( 568)						_gthis1->connect(_hx_tmp,sm);
+            					HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_564_start)
+HXLINE( 565)					if (::hx::IsNotNull( _gthis->token )) {
+HXLINE( 566)						_gthis->token = null();
+HXLINE( 567)						 ::snikket::GenericStream _gthis1 = _gthis->stream;
+HXDLIN( 567)						::String _hx_tmp = _gthis->jid->asString();
+HXDLIN( 567)						_gthis1->connect(_hx_tmp,sm);
             					}
             					else {
-HXLINE( 570)						 ::snikket::GenericStream _gthis2 = _gthis->stream;
-HXDLIN( 570)						::String _hx_tmp1 = _gthis->jid->asString();
-HXDLIN( 570)						_gthis2->connect(_hx_tmp1,sm);
+HXLINE( 569)						 ::snikket::GenericStream _gthis2 = _gthis->stream;
+HXDLIN( 569)						::String _hx_tmp1 = _gthis->jid->asString();
+HXDLIN( 569)						_gthis2->connect(_hx_tmp1,sm);
             					}
-HXLINE( 572)					return ::snikket::EventResult_obj::EventHandled_dyn();
+HXLINE( 571)					return ::snikket::EventResult_obj::EventHandled_dyn();
             				}
             				HX_END_LOCAL_FUNC1(return)
 
-            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_556_start)
-HXLINE( 557)				_gthis->stream->on(HX_("auth/password-needed",80,f0,74,49), ::Dynamic(new _hx_Closure_1(_gthis)));
-HXLINE( 565)				_gthis->stream->on(HX_("auth/fail",25,45,e9,d1), ::Dynamic(new _hx_Closure_2(_gthis,sm)));
-HXLINE( 574)				 ::snikket::GenericStream _gthis1 = _gthis->stream;
-HXDLIN( 574)				::String _hx_tmp = _gthis->jid->asString();
-HXDLIN( 574)				_gthis1->connect(_hx_tmp,sm);
+            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_555_start)
+HXLINE( 556)				_gthis->stream->on(HX_("auth/password-needed",80,f0,74,49), ::Dynamic(new _hx_Closure_1(_gthis)));
+HXLINE( 564)				_gthis->stream->on(HX_("auth/fail",25,45,e9,d1), ::Dynamic(new _hx_Closure_2(_gthis,sm)));
+HXLINE( 573)				 ::snikket::GenericStream _gthis1 = _gthis->stream;
+HXDLIN( 573)				::String _hx_tmp = _gthis->jid->asString();
+HXDLIN( 573)				_gthis1->connect(_hx_tmp,sm);
             			}
             			HX_END_LOCAL_FUNC1((void))
 
-            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_556_start)
-HXLINE( 556)			::Dynamic _gthis1 = _gthis->persistence;
-HXDLIN( 556)			::snikket::Persistence_obj::getStreamManagement(_gthis1,_gthis->accountId(), ::Dynamic(new _hx_Closure_3(_gthis)));
+            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_555_start)
+HXLINE( 555)			::Dynamic _gthis1 = _gthis->persistence;
+HXDLIN( 555)			::snikket::Persistence_obj::getStreamManagement(_gthis1,_gthis->accountId(), ::Dynamic(new _hx_Closure_3(_gthis)));
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_554_start)
-HXDLIN( 554)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 555)		this->startOffline( ::Dynamic(new _hx_Closure_4(_gthis)));
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_553_start)
+HXDLIN( 553)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 554)		this->startOffline( ::Dynamic(new _hx_Closure_4(_gthis)));
             	}
 
 
@@ -1874,78 +1874,78 @@ void Client_obj::startOffline( ::Dynamic ready){
             			void _hx_run(::Array< ::Dynamic> protoChats){
             				HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::Client,_gthis, ::Dynamic,ready) HXARGC(1)
             				void _hx_run(::Array< ::Dynamic> details){
-            					HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_601_startOffline)
-HXLINE( 602)					{
-HXLINE( 602)						int _g = 0;
-HXDLIN( 602)						while((_g < details->length)){
-HXLINE( 602)							 ::Dynamic detail = details->__get(_g);
-HXDLIN( 602)							_g = (_g + 1);
-HXLINE( 603)							 ::snikket::Chat chat = _gthis->getChat(( (::String)(detail->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)) ));
-HXLINE( 604)							if (::hx::IsNotNull( chat )) {
-HXLINE( 605)								chat->setLastMessage(( ( ::snikket::ChatMessage)(detail->__Field(HX_("message",c7,35,11,9a),::hx::paccDynamic)) ));
-HXLINE( 606)								chat->setUnreadCount(( (int)(detail->__Field(HX_("unreadCount",20,18,f1,a0),::hx::paccDynamic)) ));
+            					HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_600_startOffline)
+HXLINE( 601)					{
+HXLINE( 601)						int _g = 0;
+HXDLIN( 601)						while((_g < details->length)){
+HXLINE( 601)							 ::Dynamic detail = details->__get(_g);
+HXDLIN( 601)							_g = (_g + 1);
+HXLINE( 602)							 ::snikket::Chat chat = _gthis->getChat(( (::String)(detail->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)) ));
+HXLINE( 603)							if (::hx::IsNotNull( chat )) {
+HXLINE( 604)								chat->setLastMessage(( ( ::snikket::ChatMessage)(detail->__Field(HX_("message",c7,35,11,9a),::hx::paccDynamic)) ));
+HXLINE( 605)								chat->setUnreadCount(( (int)(detail->__Field(HX_("unreadCount",20,18,f1,a0),::hx::paccDynamic)) ));
             							}
             						}
             					}
-HXLINE( 609)					_gthis->sortChats();
-HXLINE( 610)					_gthis->trigger(HX_("chats/update",3d,8e,1d,14),_gthis->chats);
-HXLINE( 611)					ready();
+HXLINE( 608)					_gthis->sortChats();
+HXLINE( 609)					_gthis->trigger(HX_("chats/update",3d,8e,1d,14),_gthis->chats);
+HXLINE( 610)					ready();
             				}
             				HX_END_LOCAL_FUNC1((void))
 
-            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_596_startOffline)
-HXLINE( 597)				 ::snikket::SerializedChat oneProtoChat = null();
-HXLINE( 598)				while(true){
-HXLINE( 598)					oneProtoChat = protoChats->pop().StaticCast<  ::snikket::SerializedChat >();
-HXDLIN( 598)					if (!(::hx::IsNotNull( oneProtoChat ))) {
-HXLINE( 598)						goto _hx_goto_53;
+            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_595_startOffline)
+HXLINE( 596)				 ::snikket::SerializedChat oneProtoChat = null();
+HXLINE( 597)				while(true){
+HXLINE( 597)					oneProtoChat = protoChats->pop().StaticCast<  ::snikket::SerializedChat >();
+HXDLIN( 597)					if (!(::hx::IsNotNull( oneProtoChat ))) {
+HXLINE( 597)						goto _hx_goto_53;
             					}
-HXLINE( 599)					::Array< ::Dynamic> _gthis1 = _gthis->chats;
-HXDLIN( 599)					_gthis1->push(oneProtoChat->toChat(_gthis,_gthis->stream,_gthis->persistence));
+HXLINE( 598)					::Array< ::Dynamic> _gthis1 = _gthis->chats;
+HXDLIN( 598)					_gthis1->push(oneProtoChat->toChat(_gthis,_gthis->stream,_gthis->persistence));
             				}
             				_hx_goto_53:;
-HXLINE( 601)				::Dynamic _gthis2 = _gthis->persistence;
-HXDLIN( 601)				::String _hx_tmp = _gthis->accountId();
-HXDLIN( 601)				::snikket::Persistence_obj::getChatsUnreadDetails(_gthis2,_hx_tmp,_gthis->chats, ::Dynamic(new _hx_Closure_0(_gthis,ready)));
+HXLINE( 600)				::Dynamic _gthis2 = _gthis->persistence;
+HXDLIN( 600)				::String _hx_tmp = _gthis->accountId();
+HXDLIN( 600)				::snikket::Persistence_obj::getChatsUnreadDetails(_gthis2,_hx_tmp,_gthis->chats, ::Dynamic(new _hx_Closure_0(_gthis,ready)));
             			}
             			HX_END_LOCAL_FUNC1((void))
 
-            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_587_startOffline)
-HXLINE( 588)			_gthis->token = loadedToken;
-HXLINE( 589)			_gthis->fastCount = loadedFastCount;
-HXLINE( 590)			::String tmp = clientId;
-HXDLIN( 590)			::String _hx_tmp;
-HXDLIN( 590)			if (::hx::IsNotNull( tmp )) {
-HXLINE( 590)				_hx_tmp = tmp;
+            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_586_startOffline)
+HXLINE( 587)			_gthis->token = loadedToken;
+HXLINE( 588)			_gthis->fastCount = loadedFastCount;
+HXLINE( 589)			::String tmp = clientId;
+HXDLIN( 589)			::String _hx_tmp;
+HXDLIN( 589)			if (::hx::IsNotNull( tmp )) {
+HXLINE( 589)				_hx_tmp = tmp;
             			}
             			else {
-HXLINE( 590)				_hx_tmp = ::snikket::ID_obj::_hx_long();
+HXLINE( 589)				_hx_tmp = ::snikket::ID_obj::_hx_long();
             			}
-HXDLIN( 590)			_gthis->stream->clientId = _hx_tmp;
-HXLINE( 591)			_gthis->jid = _gthis->jid->withResource(_gthis->stream->clientId);
-HXLINE( 592)			bool _hx_tmp1;
-HXDLIN( 592)			if (!(_gthis->updateDisplayName(displayName))) {
-HXLINE( 592)				_hx_tmp1 = ::hx::IsNull( clientId );
+HXDLIN( 589)			_gthis->stream->clientId = _hx_tmp;
+HXLINE( 590)			_gthis->jid = _gthis->jid->withResource(_gthis->stream->clientId);
+HXLINE( 591)			bool _hx_tmp1;
+HXDLIN( 591)			if (!(_gthis->updateDisplayName(displayName))) {
+HXLINE( 591)				_hx_tmp1 = ::hx::IsNull( clientId );
             			}
             			else {
-HXLINE( 592)				_hx_tmp1 = false;
+HXLINE( 591)				_hx_tmp1 = false;
             			}
-HXDLIN( 592)			if (_hx_tmp1) {
-HXLINE( 593)				::Dynamic _gthis1 = _gthis->persistence;
-HXDLIN( 593)				::String _hx_tmp2 = _gthis->jid->asBare()->asString();
-HXDLIN( 593)				::String _gthis2 = _gthis->stream->clientId;
-HXDLIN( 593)				::snikket::Persistence_obj::storeLogin(_gthis1,_hx_tmp2,_gthis2,_gthis->displayName(),null());
+HXDLIN( 591)			if (_hx_tmp1) {
+HXLINE( 592)				::Dynamic _gthis1 = _gthis->persistence;
+HXDLIN( 592)				::String _hx_tmp2 = _gthis->jid->asBare()->asString();
+HXDLIN( 592)				::String _gthis2 = _gthis->stream->clientId;
+HXDLIN( 592)				::snikket::Persistence_obj::storeLogin(_gthis1,_hx_tmp2,_gthis2,_gthis->displayName(),null());
             			}
-HXLINE( 596)			::Dynamic _gthis3 = _gthis->persistence;
-HXDLIN( 596)			::snikket::Persistence_obj::getChats(_gthis3,_gthis->accountId(), ::Dynamic(new _hx_Closure_1(_gthis,ready)));
+HXLINE( 595)			::Dynamic _gthis3 = _gthis->persistence;
+HXDLIN( 595)			::snikket::Persistence_obj::getChats(_gthis3,_gthis->accountId(), ::Dynamic(new _hx_Closure_1(_gthis,ready)));
             		}
             		HX_END_LOCAL_FUNC4((void))
 
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_582_startOffline)
-HXDLIN( 582)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 585)		__hxcpp_collect(true);
-HXLINE( 587)		::Dynamic _hx_tmp = this->persistence;
-HXDLIN( 587)		::snikket::Persistence_obj::getLogin(_hx_tmp,this->accountId(), ::Dynamic(new _hx_Closure_2(_gthis,ready)));
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_581_startOffline)
+HXDLIN( 581)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 584)		__hxcpp_collect(true);
+HXLINE( 586)		::Dynamic _hx_tmp = this->persistence;
+HXDLIN( 586)		::snikket::Persistence_obj::getLogin(_hx_tmp,this->accountId(), ::Dynamic(new _hx_Closure_2(_gthis,ready)));
             	}
 
 
@@ -1967,26 +1967,26 @@ HXDLIN( 252)		this->startOffline( ::Dynamic(new _hx_Closure_0(ready,ready__conte
 void Client_obj::logout(bool completely){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Client,_gthis) HXARGC(0)
             		void _hx_run(){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_626_logout)
-HXLINE( 626)			_gthis->stream->disconnect();
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_625_logout)
+HXLINE( 625)			_gthis->stream->disconnect();
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_622_logout)
-HXDLIN( 622)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 623)		::Dynamic _hx_tmp = this->persistence;
-HXDLIN( 623)		::snikket::Persistence_obj::removeAccount(_hx_tmp,this->accountId(),completely);
-HXLINE( 624)		 ::snikket::queries::Push2Disable disable =  ::snikket::queries::Push2Disable_obj::__alloc( HX_CTX ,this->jid->asBare()->asString());
-HXLINE( 625)		disable->onFinished( ::Dynamic(new _hx_Closure_0(_gthis)));
-HXLINE( 628)		this->sendQuery(disable);
+            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_621_logout)
+HXDLIN( 621)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 622)		::Dynamic _hx_tmp = this->persistence;
+HXDLIN( 622)		::snikket::Persistence_obj::removeAccount(_hx_tmp,this->accountId(),completely);
+HXLINE( 623)		 ::snikket::queries::Push2Disable disable =  ::snikket::queries::Push2Disable_obj::__alloc( HX_CTX ,this->jid->asBare()->asString());
+HXLINE( 624)		disable->onFinished( ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE( 627)		this->sendQuery(disable);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(Client_obj,logout,(void))
 
 void Client_obj::usePassword(::String password){
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_638_usePassword)
-HXDLIN( 638)		this->stream->trigger(HX_("auth/password",e2,5d,98,00), ::Dynamic(::hx::Anon_obj::Create(2)
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_637_usePassword)
+HXDLIN( 637)		this->stream->trigger(HX_("auth/password",e2,5d,98,00), ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("requestToken",2a,35,fd,af),this->fastMechanism)
             			->setFixed(1,HX_("password",1b,23,d0,48),password)));
             	}
@@ -1995,16 +1995,16 @@ HXDLIN( 638)		this->stream->trigger(HX_("auth/password",e2,5d,98,00), ::Dynamic(
 HX_DEFINE_DYNAMIC_FUNC1(Client_obj,usePassword,(void))
 
 ::String Client_obj::accountId(){
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_647_accountId)
-HXDLIN( 647)		return this->jid->asBare()->asString();
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_646_accountId)
+HXDLIN( 646)		return this->jid->asBare()->asString();
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(Client_obj,accountId,return )
 
 ::String Client_obj::displayName(){
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_656_displayName)
-HXDLIN( 656)		return this->_displayName;
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_655_displayName)
+HXDLIN( 655)		return this->_displayName;
             	}
 
 
@@ -2013,30 +2013,30 @@ HX_DEFINE_DYNAMIC_FUNC0(Client_obj,displayName,return )
 void Client_obj::setDisplayName(::String displayName){
             		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             		void _hx_run( ::snikket::Stanza response){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_674_setDisplayName)
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_673_setDisplayName)
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_664_setDisplayName)
-HXLINE( 665)		bool _hx_tmp;
-HXDLIN( 665)		bool _hx_tmp1;
-HXDLIN( 665)		if (::hx::IsNotNull( displayName )) {
-HXLINE( 665)			_hx_tmp1 = (displayName == HX_("",00,00,00,00));
+            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_663_setDisplayName)
+HXLINE( 664)		bool _hx_tmp;
+HXDLIN( 664)		bool _hx_tmp1;
+HXDLIN( 664)		if (::hx::IsNotNull( displayName )) {
+HXLINE( 664)			_hx_tmp1 = (displayName == HX_("",00,00,00,00));
             		}
             		else {
-HXLINE( 665)			_hx_tmp1 = true;
+HXLINE( 664)			_hx_tmp1 = true;
             		}
-HXDLIN( 665)		if (!(_hx_tmp1)) {
-HXLINE( 665)			_hx_tmp = (displayName == this->displayName());
+HXDLIN( 664)		if (!(_hx_tmp1)) {
+HXLINE( 664)			_hx_tmp = (displayName == this->displayName());
             		}
             		else {
-HXLINE( 665)			_hx_tmp = true;
+HXLINE( 664)			_hx_tmp = true;
             		}
-HXDLIN( 665)		if (_hx_tmp) {
-HXLINE( 665)			return;
+HXDLIN( 664)		if (_hx_tmp) {
+HXLINE( 664)			return;
             		}
-HXLINE( 667)		 ::snikket::GenericStream _hx_tmp2 = this->stream;
-HXDLIN( 667)		_hx_tmp2->sendIq( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE( 666)		 ::snikket::GenericStream _hx_tmp2 = this->stream;
+HXDLIN( 666)		_hx_tmp2->sendIq( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("type",ba,f2,08,4d),HX_("set",a2,9b,57,00))))->tag(HX_("pubsub",e3,da,f8,66), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("http://jabber.org/protocol/pubsub",57,94,3c,f2))))->tag(HX_("publish",8f,21,1d,ae), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("node",02,0a,0a,49),HX_("http://jabber.org/protocol/nick",17,30,dc,e9))))->tag(HX_("item",13,c5,bf,45),null())->textTag(HX_("nick",a3,7b,05,49),displayName, ::Dynamic(::hx::Anon_obj::Create(1)
@@ -2047,38 +2047,38 @@ HXDLIN( 667)		_hx_tmp2->sendIq( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq"
 HX_DEFINE_DYNAMIC_FUNC1(Client_obj,setDisplayName,(void))
 
 bool Client_obj::updateDisplayName(::String fn){
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_678_updateDisplayName)
-HXLINE( 679)		bool _hx_tmp;
-HXDLIN( 679)		bool _hx_tmp1;
-HXDLIN( 679)		if (::hx::IsNotNull( fn )) {
-HXLINE( 679)			_hx_tmp1 = (fn == HX_("",00,00,00,00));
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_677_updateDisplayName)
+HXLINE( 678)		bool _hx_tmp;
+HXDLIN( 678)		bool _hx_tmp1;
+HXDLIN( 678)		if (::hx::IsNotNull( fn )) {
+HXLINE( 678)			_hx_tmp1 = (fn == HX_("",00,00,00,00));
             		}
             		else {
-HXLINE( 679)			_hx_tmp1 = true;
+HXLINE( 678)			_hx_tmp1 = true;
             		}
-HXDLIN( 679)		if (!(_hx_tmp1)) {
-HXLINE( 679)			_hx_tmp = (fn == this->displayName());
+HXDLIN( 678)		if (!(_hx_tmp1)) {
+HXLINE( 678)			_hx_tmp = (fn == this->displayName());
             		}
             		else {
-HXLINE( 679)			_hx_tmp = true;
+HXLINE( 678)			_hx_tmp = true;
             		}
-HXDLIN( 679)		if (_hx_tmp) {
-HXLINE( 679)			return false;
+HXDLIN( 678)		if (_hx_tmp) {
+HXLINE( 678)			return false;
             		}
-HXLINE( 680)		this->_displayName = fn;
-HXLINE( 681)		::Dynamic _hx_tmp2 = this->persistence;
-HXDLIN( 681)		::String _hx_tmp3 = this->jid->asBare()->asString();
-HXDLIN( 681)		::String tmp = this->stream->clientId;
-HXDLIN( 681)		::String _hx_tmp4;
-HXDLIN( 681)		if (::hx::IsNotNull( tmp )) {
-HXLINE( 681)			_hx_tmp4 = tmp;
+HXLINE( 679)		this->_displayName = fn;
+HXLINE( 680)		::Dynamic _hx_tmp2 = this->persistence;
+HXDLIN( 680)		::String _hx_tmp3 = this->jid->asBare()->asString();
+HXDLIN( 680)		::String tmp = this->stream->clientId;
+HXDLIN( 680)		::String _hx_tmp4;
+HXDLIN( 680)		if (::hx::IsNotNull( tmp )) {
+HXLINE( 680)			_hx_tmp4 = tmp;
             		}
             		else {
-HXLINE( 681)			_hx_tmp4 = this->jid->resource;
+HXLINE( 680)			_hx_tmp4 = this->jid->resource;
             		}
-HXDLIN( 681)		::snikket::Persistence_obj::storeLogin(_hx_tmp2,_hx_tmp3,_hx_tmp4,fn,null());
-HXLINE( 682)		this->pingAllChannels(false);
-HXLINE( 683)		return true;
+HXDLIN( 680)		::snikket::Persistence_obj::storeLogin(_hx_tmp2,_hx_tmp3,_hx_tmp4,fn,null());
+HXLINE( 681)		this->pingAllChannels(false);
+HXLINE( 682)		return true;
             	}
 
 
@@ -2087,11 +2087,11 @@ HX_DEFINE_DYNAMIC_FUNC1(Client_obj,updateDisplayName,return )
  ::snikket::EventResult Client_obj::onConnected( ::Dynamic data){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Client,_gthis) HXARGC(2)
             		void _hx_run( ::Dynamic service, ::snikket::Caps caps){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_700_onConnected)
-HXLINE( 700)			::Dynamic _gthis1 = _gthis->persistence;
-HXDLIN( 700)			::String _hx_tmp = _gthis->accountId();
-HXDLIN( 700)			::String _hx_tmp1 = ( ( ::snikket::JID)(service->__Field(HX_("jid",c5,ca,50,00),::hx::paccDynamic)) )->asString();
-HXDLIN( 700)			::snikket::Persistence_obj::storeService(_gthis1,_hx_tmp,_hx_tmp1, ::Dynamic(service->__Field(HX_("name",4b,72,ff,48),::hx::paccDynamic)), ::Dynamic(service->__Field(HX_("node",02,0a,0a,49),::hx::paccDynamic)),caps);
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_699_onConnected)
+HXLINE( 699)			::Dynamic _gthis1 = _gthis->persistence;
+HXDLIN( 699)			::String _hx_tmp = _gthis->accountId();
+HXDLIN( 699)			::String _hx_tmp1 = ( ( ::snikket::JID)(service->__Field(HX_("jid",c5,ca,50,00),::hx::paccDynamic)) )->asString();
+HXDLIN( 699)			::snikket::Persistence_obj::storeService(_gthis1,_hx_tmp,_hx_tmp1, ::Dynamic(service->__Field(HX_("name",4b,72,ff,48),::hx::paccDynamic)), ::Dynamic(service->__Field(HX_("node",02,0a,0a,49),::hx::paccDynamic)),caps);
             		}
             		HX_END_LOCAL_FUNC2((void))
 
@@ -2101,109 +2101,109 @@ HXDLIN( 700)			::snikket::Persistence_obj::storeService(_gthis1,_hx_tmp,_hx_tmp1
             			void _hx_run(bool syncFinished){
             				HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_1, ::snikket::Client,_gthis) HXARGC(1)
             				void _hx_run(::Array< ::Dynamic> details){
-            					HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_717_onConnected)
-HXLINE( 718)					{
-HXLINE( 718)						int _g = 0;
-HXDLIN( 718)						while((_g < details->length)){
-HXLINE( 718)							 ::Dynamic detail = details->__get(_g);
-HXDLIN( 718)							_g = (_g + 1);
-HXLINE( 719)							 ::snikket::Chat chat;
-HXDLIN( 719)							 ::snikket::Chat tmp = _gthis->getChat(( (::String)(detail->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)) ));
-HXDLIN( 719)							if (::hx::IsNotNull( tmp )) {
-HXLINE( 719)								chat = tmp;
+            					HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_716_onConnected)
+HXLINE( 717)					{
+HXLINE( 717)						int _g = 0;
+HXDLIN( 717)						while((_g < details->length)){
+HXLINE( 717)							 ::Dynamic detail = details->__get(_g);
+HXDLIN( 717)							_g = (_g + 1);
+HXLINE( 718)							 ::snikket::Chat chat;
+HXDLIN( 718)							 ::snikket::Chat tmp = _gthis->getChat(( (::String)(detail->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)) ));
+HXDLIN( 718)							if (::hx::IsNotNull( tmp )) {
+HXLINE( 718)								chat = tmp;
             							}
             							else {
-HXLINE( 719)								chat = _gthis->getDirectChat(( (::String)(detail->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)) ),false);
+HXLINE( 718)								chat = _gthis->getDirectChat(( (::String)(detail->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)) ),false);
             							}
-HXLINE( 720)							::String initialLastId = chat->lastMessageId();
-HXLINE( 721)							chat->setLastMessage(( ( ::snikket::ChatMessage)(detail->__Field(HX_("message",c7,35,11,9a),::hx::paccDynamic)) ));
-HXLINE( 722)							chat->setUnreadCount(( (int)(detail->__Field(HX_("unreadCount",20,18,f1,a0),::hx::paccDynamic)) ));
-HXLINE( 723)							bool _hx_tmp;
-HXDLIN( 723)							if (::hx::IsGreater( detail->__Field(HX_("unreadCount",20,18,f1,a0),::hx::paccDynamic),0 )) {
-HXLINE( 723)								_hx_tmp = (initialLastId != chat->lastMessageId());
+HXLINE( 719)							::String initialLastId = chat->lastMessageId();
+HXLINE( 720)							chat->setLastMessage(( ( ::snikket::ChatMessage)(detail->__Field(HX_("message",c7,35,11,9a),::hx::paccDynamic)) ));
+HXLINE( 721)							chat->setUnreadCount(( (int)(detail->__Field(HX_("unreadCount",20,18,f1,a0),::hx::paccDynamic)) ));
+HXLINE( 722)							bool _hx_tmp;
+HXDLIN( 722)							if (::hx::IsGreater( detail->__Field(HX_("unreadCount",20,18,f1,a0),::hx::paccDynamic),0 )) {
+HXLINE( 722)								_hx_tmp = (initialLastId != chat->lastMessageId());
             							}
             							else {
-HXLINE( 723)								_hx_tmp = false;
+HXLINE( 722)								_hx_tmp = false;
             							}
-HXDLIN( 723)							if (_hx_tmp) {
-HXLINE( 724)								_gthis->chatActivity(chat,false);
+HXDLIN( 722)							if (_hx_tmp) {
+HXLINE( 723)								_gthis->chatActivity(chat,false);
             							}
             						}
             					}
-HXLINE( 727)					_gthis->sortChats();
-HXLINE( 728)					_gthis->trigger(HX_("chats/update",3d,8e,1d,14),_gthis->chats);
-HXLINE( 730)					if (_gthis->sendAvailable) {
-HXLINE( 732)						 ::snikket::Client _gthis1 = _gthis;
-HXLINE( 733)						::String _hx_tmp1 = ::snikket::ID_obj::_hx_short();
-HXLINE( 732)						_gthis1->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(2)
+HXLINE( 726)					_gthis->sortChats();
+HXLINE( 727)					_gthis->trigger(HX_("chats/update",3d,8e,1d,14),_gthis->chats);
+HXLINE( 729)					if (_gthis->sendAvailable) {
+HXLINE( 731)						 ::snikket::Client _gthis1 = _gthis;
+HXLINE( 732)						::String _hx_tmp1 = ::snikket::ID_obj::_hx_short();
+HXLINE( 731)						_gthis1->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(2)
             							->setFixed(0,HX_("id",db,5b,00,00),_hx_tmp1)
             							->setFixed(1,HX_("type",ba,f2,08,4d),HX_("set",a2,9b,57,00))))->tag(HX_("enable",83,ae,87,f8), ::Dynamic(::hx::Anon_obj::Create(1)
             							->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:carbons:2",02,86,9e,df))))->up());
-HXLINE( 737)						_gthis->sendPresence(null(),null());
-HXLINE( 738)						_gthis->joinAllChannels();
+HXLINE( 736)						_gthis->sendPresence(null(),null());
+HXLINE( 737)						_gthis->joinAllChannels();
             					}
-HXLINE( 740)					_gthis->trigger(HX_("status/online",10,05,0e,d2), ::Dynamic(::hx::Anon_obj::Create(0)));
-HXLINE( 741)					::haxe::Log_obj::trace(HX_("SYNC: done",c3,a6,82,dd),::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),741,HX_("snikket.Client",3c,fe,06,7c),HX_("onConnected",aa,c5,39,c5)));
+HXLINE( 739)					_gthis->trigger(HX_("status/online",10,05,0e,d2), ::Dynamic(::hx::Anon_obj::Create(0)));
+HXLINE( 740)					::haxe::Log_obj::trace(HX_("SYNC: done",c3,a6,82,dd),::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),740,HX_("snikket.Client",3c,fe,06,7c),HX_("onConnected",aa,c5,39,c5)));
             				}
             				HX_END_LOCAL_FUNC1((void))
 
-            				HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_706_onConnected)
-HXLINE( 707)				if (!(syncFinished)) {
-HXLINE( 708)					::haxe::Log_obj::trace(HX_("SYNC: failed",3e,4e,5e,fa),::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),708,HX_("snikket.Client",3c,fe,06,7c),HX_("onConnected",aa,c5,39,c5)));
-HXLINE( 709)					_gthis->inSync = false;
-HXLINE( 710)					_gthis->stream->disconnect();
-HXLINE( 712)					return;
+            				HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_705_onConnected)
+HXLINE( 706)				if (!(syncFinished)) {
+HXLINE( 707)					::haxe::Log_obj::trace(HX_("SYNC: failed",3e,4e,5e,fa),::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),707,HX_("snikket.Client",3c,fe,06,7c),HX_("onConnected",aa,c5,39,c5)));
+HXLINE( 708)					_gthis->inSync = false;
+HXLINE( 709)					_gthis->stream->disconnect();
+HXLINE( 711)					return;
             				}
-HXLINE( 715)				::haxe::Log_obj::trace(HX_("SYNC: details",21,c5,8e,ac),::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),715,HX_("snikket.Client",3c,fe,06,7c),HX_("onConnected",aa,c5,39,c5)));
-HXLINE( 716)				_gthis->inSync = true;
-HXLINE( 717)				::Dynamic _gthis1 = _gthis->persistence;
-HXDLIN( 717)				::String _hx_tmp = _gthis->accountId();
-HXDLIN( 717)				::snikket::Persistence_obj::getChatsUnreadDetails(_gthis1,_hx_tmp,_gthis->chats, ::Dynamic(new _hx_Closure_1(_gthis)));
+HXLINE( 714)				::haxe::Log_obj::trace(HX_("SYNC: details",21,c5,8e,ac),::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),714,HX_("snikket.Client",3c,fe,06,7c),HX_("onConnected",aa,c5,39,c5)));
+HXLINE( 715)				_gthis->inSync = true;
+HXLINE( 716)				::Dynamic _gthis1 = _gthis->persistence;
+HXDLIN( 716)				::String _hx_tmp = _gthis->accountId();
+HXDLIN( 716)				::snikket::Persistence_obj::getChatsUnreadDetails(_gthis1,_hx_tmp,_gthis->chats, ::Dynamic(new _hx_Closure_1(_gthis)));
             			}
             			HX_END_LOCAL_FUNC1((void))
 
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_704_onConnected)
-HXLINE( 705)			::haxe::Log_obj::trace(HX_("SYNC: MAM",58,33,e1,36),::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),705,HX_("snikket.Client",3c,fe,06,7c),HX_("onConnected",aa,c5,39,c5)));
-HXLINE( 706)			_gthis->sync( ::Dynamic(new _hx_Closure_2(_gthis)));
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_703_onConnected)
+HXLINE( 704)			::haxe::Log_obj::trace(HX_("SYNC: MAM",58,33,e1,36),::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),704,HX_("snikket.Client",3c,fe,06,7c),HX_("onConnected",aa,c5,39,c5)));
+HXLINE( 705)			_gthis->sync( ::Dynamic(new _hx_Closure_2(_gthis)));
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_686_onConnected)
-HXDLIN( 686)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 687)		bool _hx_tmp;
-HXDLIN( 687)		if (::hx::IsNotNull( data )) {
-HXLINE( 687)			_hx_tmp = ::hx::IsNotNull( data->__Field(HX_("jid",c5,ca,50,00),::hx::paccDynamic) );
+            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_685_onConnected)
+HXDLIN( 685)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 686)		bool _hx_tmp;
+HXDLIN( 686)		if (::hx::IsNotNull( data )) {
+HXLINE( 686)			_hx_tmp = ::hx::IsNotNull( data->__Field(HX_("jid",c5,ca,50,00),::hx::paccDynamic) );
             		}
             		else {
-HXLINE( 687)			_hx_tmp = false;
+HXLINE( 686)			_hx_tmp = false;
             		}
-HXDLIN( 687)		if (_hx_tmp) {
-HXLINE( 688)			this->jid = ::snikket::JID_obj::parse(( (::String)(data->__Field(HX_("jid",c5,ca,50,00),::hx::paccDynamic)) ));
-HXLINE( 689)			bool _hx_tmp1;
-HXDLIN( 689)			if (::hx::IsNull( this->stream->clientId )) {
-HXLINE( 689)				_hx_tmp1 = !(this->jid->isBare());
+HXDLIN( 686)		if (_hx_tmp) {
+HXLINE( 687)			this->jid = ::snikket::JID_obj::parse(( (::String)(data->__Field(HX_("jid",c5,ca,50,00),::hx::paccDynamic)) ));
+HXLINE( 688)			bool _hx_tmp1;
+HXDLIN( 688)			if (::hx::IsNull( this->stream->clientId )) {
+HXLINE( 688)				_hx_tmp1 = !(this->jid->isBare());
             			}
             			else {
-HXLINE( 689)				_hx_tmp1 = false;
-            			}
-HXDLIN( 689)			if (_hx_tmp1) {
-HXLINE( 689)				::Dynamic _hx_tmp2 = this->persistence;
-HXDLIN( 689)				::String _hx_tmp3 = this->jid->asBare()->asString();
-HXDLIN( 689)				::String _hx_tmp4 = this->jid->resource;
-HXDLIN( 689)				::snikket::Persistence_obj::storeLogin(_hx_tmp2,_hx_tmp3,_hx_tmp4,this->displayName(),null());
-            			}
-            		}
-HXLINE( 692)		if (( (bool)(data->__Field(HX_("resumed",17,0e,58,6b),::hx::paccDynamic)) )) {
-HXLINE( 693)			this->inSync = true;
-HXLINE( 694)			this->trigger(HX_("status/online",10,05,0e,d2), ::Dynamic(::hx::Anon_obj::Create(0)));
-HXLINE( 695)			return ::snikket::EventResult_obj::EventHandled_dyn();
-            		}
-HXLINE( 699)		this->discoverServices( ::snikket::JID_obj::__alloc( HX_CTX ,null(),this->jid->domain,null(),null()),null(), ::Dynamic(new _hx_Closure_0(_gthis)));
-HXLINE( 702)		this->rosterGet();
-HXLINE( 703)		::haxe::Log_obj::trace(HX_("SYNC: bookmarks",1c,91,b3,0d),::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),703,HX_("snikket.Client",3c,fe,06,7c),HX_("onConnected",aa,c5,39,c5)));
-HXLINE( 704)		this->bookmarksGet( ::Dynamic(new _hx_Closure_3(_gthis)));
-HXLINE( 746)		this->trigger(HX_("session-started",0a,96,19,bc), ::Dynamic(::hx::Anon_obj::Create(0)));
-HXLINE( 748)		return ::snikket::EventResult_obj::EventHandled_dyn();
+HXLINE( 688)				_hx_tmp1 = false;
+            			}
+HXDLIN( 688)			if (_hx_tmp1) {
+HXLINE( 688)				::Dynamic _hx_tmp2 = this->persistence;
+HXDLIN( 688)				::String _hx_tmp3 = this->jid->asBare()->asString();
+HXDLIN( 688)				::String _hx_tmp4 = this->jid->resource;
+HXDLIN( 688)				::snikket::Persistence_obj::storeLogin(_hx_tmp2,_hx_tmp3,_hx_tmp4,this->displayName(),null());
+            			}
+            		}
+HXLINE( 691)		if (( (bool)(data->__Field(HX_("resumed",17,0e,58,6b),::hx::paccDynamic)) )) {
+HXLINE( 692)			this->inSync = true;
+HXLINE( 693)			this->trigger(HX_("status/online",10,05,0e,d2), ::Dynamic(::hx::Anon_obj::Create(0)));
+HXLINE( 694)			return ::snikket::EventResult_obj::EventHandled_dyn();
+            		}
+HXLINE( 698)		this->discoverServices( ::snikket::JID_obj::__alloc( HX_CTX ,null(),this->jid->domain,null(),null()),null(), ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE( 701)		this->rosterGet();
+HXLINE( 702)		::haxe::Log_obj::trace(HX_("SYNC: bookmarks",1c,91,b3,0d),::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),702,HX_("snikket.Client",3c,fe,06,7c),HX_("onConnected",aa,c5,39,c5)));
+HXLINE( 703)		this->bookmarksGet( ::Dynamic(new _hx_Closure_3(_gthis)));
+HXLINE( 745)		this->trigger(HX_("session-started",0a,96,19,bc), ::Dynamic(::hx::Anon_obj::Create(0)));
+HXLINE( 747)		return ::snikket::EventResult_obj::EventHandled_dyn();
             	}
 
 
@@ -2212,66 +2212,66 @@ HX_DEFINE_DYNAMIC_FUNC1(Client_obj,onConnected,return )
 void Client_obj::prepareAttachment( ::snikket::AttachmentSource source, ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_2, ::snikket::Client,_gthis, ::snikket::AttachmentSource,source, ::Dynamic,callback) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> services){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_755_prepareAttachment)
-HXLINE( 756)			 ::sha::SHA256 sha256 =  ::sha::SHA256_obj::__alloc( HX_CTX );
-HXLINE( 757)			{
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_754_prepareAttachment)
+HXLINE( 755)			 ::sha::SHA256 sha256 =  ::sha::SHA256_obj::__alloc( HX_CTX );
+HXLINE( 756)			{
             				HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::sha::SHA256,sha256) HXARGC(1)
             				 ::tink::streams::Handled _hx_run(::Dynamic chunk){
-            					HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_757_prepareAttachment)
-HXLINE( 758)					 ::sha::SHA256 sha2561 = sha256;
-HXDLIN( 758)					sha2561->update(::tink::chunk::ChunkObject_obj::toBytes(chunk));
-HXLINE( 759)					return ::tink::streams::Handled_obj::Resume_dyn();
+            					HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_756_prepareAttachment)
+HXLINE( 757)					 ::sha::SHA256 sha2561 = sha256;
+HXDLIN( 757)					sha2561->update(::tink::chunk::ChunkObject_obj::toBytes(chunk));
+HXLINE( 758)					return ::tink::streams::Handled_obj::Resume_dyn();
             				}
             				HX_END_LOCAL_FUNC1(return)
 
             				HX_BEGIN_LOCAL_FUNC_S5(::hx::LocalFunc,_hx_Closure_1, ::snikket::AttachmentSource,source, ::snikket::Client,_gthis,::Array< ::Dynamic>,services, ::sha::SHA256,sha256, ::Dynamic,callback) HXARGC(1)
             				void _hx_run( ::tink::streams::Conclusion o){
-            					HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_760_prepareAttachment)
-HXLINE( 760)					if ((o->_hx_getIndex() == 3)) {
-HXLINE( 762)						 ::snikket::Client _gthis1 = _gthis;
-HXDLIN( 762)						 ::snikket::AttachmentSource source1 = source;
-HXDLIN( 762)						::Array< ::Dynamic> services1 = services;
-HXDLIN( 762)						::Array< unsigned char > _hx_tmp = sha256->digest()->b;
-HXDLIN( 762)						_gthis1->prepareAttachmentFor(source1,services1,::Array_obj< ::Dynamic>::__new(1)->init(0, ::snikket::Hash_obj::__alloc( HX_CTX ,HX_("sha-256",32,dd,04,3b),_hx_tmp)),callback);
+            					HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_759_prepareAttachment)
+HXLINE( 759)					if ((o->_hx_getIndex() == 3)) {
+HXLINE( 761)						 ::snikket::Client _gthis1 = _gthis;
+HXDLIN( 761)						 ::snikket::AttachmentSource source1 = source;
+HXDLIN( 761)						::Array< ::Dynamic> services1 = services;
+HXDLIN( 761)						::Array< unsigned char > _hx_tmp = sha256->digest()->b;
+HXDLIN( 761)						_gthis1->prepareAttachmentFor(source1,services1,::Array_obj< ::Dynamic>::__new(1)->init(0, ::snikket::Hash_obj::__alloc( HX_CTX ,HX_("sha-256",32,dd,04,3b),_hx_tmp)),callback);
             					}
             					else {
-HXLINE( 764)						::haxe::Log_obj::trace(HX_("Error computing attachment hash",07,33,1d,57), ::Dynamic(::hx::Anon_obj::Create(5)
+HXLINE( 763)						::haxe::Log_obj::trace(HX_("Error computing attachment hash",07,33,1d,57), ::Dynamic(::hx::Anon_obj::Create(5)
             							->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.Client",3c,fe,06,7c))
             							->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,o))
             							->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("prepareAttachment",4a,6c,4b,52))
             							->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/Client.hx",e1,49,02,18))
-            							->setFixed(4,HX_("lineNumber",dd,81,22,76),764)));
-HXLINE( 765)						callback(null());
+            							->setFixed(4,HX_("lineNumber",dd,81,22,76),763)));
+HXLINE( 764)						callback(null());
             					}
             				}
             				HX_END_LOCAL_FUNC1((void))
 
-HXLINE( 757)				::String name = source->name;
-HXDLIN( 757)				 ::haxe::io::Input input = ::sys::io::File_obj::read(source->path,null());
-HXDLIN( 757)				 ::Dynamic options = null();
-HXDLIN( 757)				if (::hx::IsNull( options )) {
-HXLINE( 757)					options =  ::Dynamic(::hx::Anon_obj::Create(0));
+HXLINE( 756)				::String name = source->name;
+HXDLIN( 756)				 ::haxe::io::Input input = ::sys::io::File_obj::read(source->path,null());
+HXDLIN( 756)				 ::Dynamic options = null();
+HXDLIN( 756)				if (::hx::IsNull( options )) {
+HXLINE( 756)					options =  ::Dynamic(::hx::Anon_obj::Create(0));
             				}
-HXDLIN( 757)				::Dynamic this1 = ::tink::io::_Worker::Worker_Impl__obj::ensure( ::Dynamic(options->__Field(HX_("worker",7e,30,9e,c9),::hx::paccDynamic)));
-HXDLIN( 757)				 ::Dynamic _g = options->__Field(HX_("chunkSize",ce,cd,77,9f),::hx::paccDynamic);
-HXDLIN( 757)				int this2;
-HXDLIN( 757)				if (::hx::IsNull( _g )) {
-HXLINE( 757)					this2 = 65536;
+HXDLIN( 756)				::Dynamic this1 = ::tink::io::_Worker::Worker_Impl__obj::ensure( ::Dynamic(options->__Field(HX_("worker",7e,30,9e,c9),::hx::paccDynamic)));
+HXDLIN( 756)				 ::Dynamic _g = options->__Field(HX_("chunkSize",ce,cd,77,9f),::hx::paccDynamic);
+HXDLIN( 756)				int this2;
+HXDLIN( 756)				if (::hx::IsNull( _g )) {
+HXLINE( 756)					this2 = 65536;
             				}
             				else {
-HXLINE( 757)					 ::Dynamic v = _g;
-HXDLIN( 757)					this2 = ( (int)(v) );
+HXLINE( 756)					 ::Dynamic v = _g;
+HXDLIN( 756)					this2 = ( (int)(v) );
             				}
-HXDLIN( 757)				::Dynamic this3 = ::tink::io::_Source::Source_Impl__obj::chunked( ::tink::io::std::InputSource_obj::__alloc( HX_CTX ,name,input,this1,::haxe::io::Bytes_obj::alloc(this2),0));
-HXDLIN( 757)				::tink::streams::StreamObject_obj::forEach(this3,::tink::streams::_Stream::Handler_Impl__obj::ofSafeSync( ::Dynamic(new _hx_Closure_0(sha256))))->handle( ::Dynamic(new _hx_Closure_1(source,_gthis,services,sha256,callback)));
+HXDLIN( 756)				::Dynamic this3 = ::tink::io::_Source::Source_Impl__obj::chunked( ::tink::io::std::InputSource_obj::__alloc( HX_CTX ,name,input,this1,::haxe::io::Bytes_obj::alloc(this2),0));
+HXDLIN( 756)				::tink::streams::StreamObject_obj::forEach(this3,::tink::streams::_Stream::Handler_Impl__obj::ofSafeSync( ::Dynamic(new _hx_Closure_0(sha256))))->handle( ::Dynamic(new _hx_Closure_1(source,_gthis,services,sha256,callback)));
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_754_prepareAttachment)
-HXDLIN( 754)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 755)		::Dynamic _hx_tmp = this->persistence;
-HXDLIN( 755)		::snikket::Persistence_obj::findServicesWithFeature(_hx_tmp,this->accountId(),HX_("urn:xmpp:http:upload:0",0d,db,46,68), ::Dynamic(new _hx_Closure_2(_gthis,source,callback)));
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_753_prepareAttachment)
+HXDLIN( 753)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 754)		::Dynamic _hx_tmp = this->persistence;
+HXDLIN( 754)		::snikket::Persistence_obj::findServicesWithFeature(_hx_tmp,this->accountId(),HX_("urn:xmpp:http:upload:0",0d,db,46,68), ::Dynamic(new _hx_Closure_2(_gthis,source,callback)));
             	}
 
 
@@ -2280,21 +2280,22 @@ HX_DEFINE_DYNAMIC_FUNC2(Client_obj,prepareAttachment,(void))
 void Client_obj::prepareAttachment__fromC( ::snikket::AttachmentSource source,::cpp::Function< void  (void*,void*) > callback,void* callback__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,void*,callback__context,::cpp::Function< void  (void* HX_COMMA void*) >,callback) HXARGC(1)
             		void _hx_run( ::snikket::ChatAttachment a0){
-            			HX_GC_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_prepareAttachment__fromC)
+            			HX_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_prepareAttachment__fromC)
 HXLINE( 221)			::cpp::Function< void  (void*,void*) > callback1 = callback;
 HXLINE( 215)			 ::Dynamic haxeObject = a0;
 HXDLIN( 215)			void* ptr = haxeObject.mPtr;
 HXDLIN( 215)			::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 215)			{
-HXLINE( 215)				 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 215)				int low = ptrInt64 & 0xffffffff;
-HXDLIN( 215)				int high = ptrInt64 >> 32;
-HXDLIN( 215)				 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 215)				if (::hx::IsNull( highMap )) {
-HXLINE( 215)					highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 215)					this1->set(low,highMap);
+HXLINE( 215)				 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 215)				if (::hx::IsNull( store )) {
+HXLINE( 215)					store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 215)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            				}
+            				else {
+HXLINE( 215)					::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 215)				highMap->set(high,haxeObject);
             			}
 HXLINE( 221)			callback1(ptr,callback__context);
             		}
@@ -2308,75 +2309,75 @@ HXDLIN( 252)		this->prepareAttachment(source, ::Dynamic(new _hx_Closure_0(callba
 void Client_obj::prepareAttachmentFor( ::snikket::AttachmentSource source,::Array< ::Dynamic> services,::Array< ::Dynamic> hashes, ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S6(::hx::LocalFunc,_hx_Closure_2, ::snikket::AttachmentSource,source, ::snikket::Client,_gthis,::Array< ::Dynamic>,hashes,::Array< ::Dynamic>,services, ::snikket::queries::HttpUploadSlot,httpUploadSlot, ::Dynamic,callback) HXARGC(0)
             		void _hx_run(){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_777_prepareAttachmentFor)
-HXLINE( 778)			 ::Dynamic slot = httpUploadSlot->getResult();
-HXLINE( 779)			if (::hx::IsNull( slot )) {
-HXLINE( 780)				 ::snikket::Client _gthis1 = _gthis;
-HXDLIN( 780)				 ::snikket::AttachmentSource source1 = source;
-HXDLIN( 780)				::Array< ::Dynamic> _hx_tmp = services->slice(1,null());
-HXDLIN( 780)				_gthis1->prepareAttachmentFor(source1,_hx_tmp,hashes,callback);
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_776_prepareAttachmentFor)
+HXLINE( 777)			 ::Dynamic slot = httpUploadSlot->getResult();
+HXLINE( 778)			if (::hx::IsNull( slot )) {
+HXLINE( 779)				 ::snikket::Client _gthis1 = _gthis;
+HXDLIN( 779)				 ::snikket::AttachmentSource source1 = source;
+HXDLIN( 779)				::Array< ::Dynamic> _hx_tmp = services->slice(1,null());
+HXDLIN( 779)				_gthis1->prepareAttachmentFor(source1,_hx_tmp,hashes,callback);
             			}
             			else {
             				HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             				::Dynamic _hx_run( ::tink::core::TypedError e){
-            					HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_782_prepareAttachmentFor)
-HXLINE( 782)					::haxe::Log_obj::trace(HX_("WUT",76,4e,42,00), ::Dynamic(::hx::Anon_obj::Create(5)
+            					HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_781_prepareAttachmentFor)
+HXLINE( 781)					::haxe::Log_obj::trace(HX_("WUT",76,4e,42,00), ::Dynamic(::hx::Anon_obj::Create(5)
             						->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.Client",3c,fe,06,7c))
             						->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,e))
             						->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("prepareAttachmentFor",df,5c,bf,82))
             						->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/Client.hx",e1,49,02,18))
-            						->setFixed(4,HX_("lineNumber",dd,81,22,76),782)));
-HXDLIN( 782)					HX_STACK_DO_THROW(e);
-HXDLIN( 782)					return null();
+            						->setFixed(4,HX_("lineNumber",dd,81,22,76),781)));
+HXDLIN( 781)					HX_STACK_DO_THROW(e);
+HXDLIN( 781)					return null();
             				}
             				HX_END_LOCAL_FUNC1(return)
 
             				HX_BEGIN_LOCAL_FUNC_S6(::hx::LocalFunc,_hx_Closure_1, ::snikket::Client,_gthis, ::Dynamic,slot, ::snikket::AttachmentSource,source,::Array< ::Dynamic>,hashes,::Array< ::Dynamic>,services, ::Dynamic,callback) HXARGC(1)
             				void _hx_run( ::tink::core::Outcome o){
-            					HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_783_prepareAttachmentFor)
-HXLINE( 783)					if ((o->_hx_getIndex() == 0)) {
-HXLINE( 784)						 ::tink::http::Message res = ( ( ::tink::http::Message)(o->_hx_getObject(0)) );
-HXDLIN( 784)						if ((( ( ::tink::http::ResponseHeaderBase)(res->header) )->statusCode == 201)) {
-HXLINE( 785)							 ::Dynamic callback1 = callback;
-HXDLIN( 785)							callback1( ::snikket::ChatAttachment_obj::__alloc( HX_CTX ,source->name,source->type,source->size,::Array_obj< ::String >::__new(1)->init(0, ::Dynamic(slot->__Field(HX_("get",96,80,4e,00),::hx::paccDynamic))),hashes));
+            					HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_782_prepareAttachmentFor)
+HXLINE( 782)					if ((o->_hx_getIndex() == 0)) {
+HXLINE( 783)						 ::tink::http::Message res = ( ( ::tink::http::Message)(o->_hx_getObject(0)) );
+HXDLIN( 783)						if ((( ( ::tink::http::ResponseHeaderBase)(res->header) )->statusCode == 201)) {
+HXLINE( 784)							 ::Dynamic callback1 = callback;
+HXDLIN( 784)							callback1( ::snikket::ChatAttachment_obj::__alloc( HX_CTX ,source->name,source->type,source->size,::Array_obj< ::String >::__new(1)->init(0, ::Dynamic(slot->__Field(HX_("get",96,80,4e,00),::hx::paccDynamic))),hashes));
             						}
             						else {
-HXLINE( 787)							 ::snikket::Client _gthis1 = _gthis;
-HXDLIN( 787)							 ::snikket::AttachmentSource source1 = source;
-HXDLIN( 787)							::Array< ::Dynamic> _hx_tmp = services->slice(1,null());
-HXDLIN( 787)							_gthis1->prepareAttachmentFor(source1,_hx_tmp,hashes,callback);
+HXLINE( 786)							 ::snikket::Client _gthis1 = _gthis;
+HXDLIN( 786)							 ::snikket::AttachmentSource source1 = source;
+HXDLIN( 786)							::Array< ::Dynamic> _hx_tmp = services->slice(1,null());
+HXDLIN( 786)							_gthis1->prepareAttachmentFor(source1,_hx_tmp,hashes,callback);
             						}
             					}
             					else {
-HXLINE( 787)						 ::snikket::Client _gthis2 = _gthis;
-HXDLIN( 787)						 ::snikket::AttachmentSource source2 = source;
-HXDLIN( 787)						::Array< ::Dynamic> _hx_tmp1 = services->slice(1,null());
-HXDLIN( 787)						_gthis2->prepareAttachmentFor(source2,_hx_tmp1,hashes,callback);
+HXLINE( 786)						 ::snikket::Client _gthis2 = _gthis;
+HXDLIN( 786)						 ::snikket::AttachmentSource source2 = source;
+HXDLIN( 786)						::Array< ::Dynamic> _hx_tmp1 = services->slice(1,null());
+HXDLIN( 786)						_gthis2->prepareAttachmentFor(source2,_hx_tmp1,hashes,callback);
             					}
             				}
             				HX_END_LOCAL_FUNC1((void))
 
-HXLINE( 782)				 ::Dynamic url = ::tink::_Url::Url_Impl__obj::fromString(( (::String)(slot->__Field(HX_("put",cf,62,55,00),::hx::paccDynamic)) ));
-HXDLIN( 782)				::Array< ::Dynamic> slot1 = ( (::Array< ::Dynamic>)(slot->__Field(HX_("putHeaders",37,9f,1e,a4),::hx::paccDynamic)) );
-HXDLIN( 782)				::String this1 = HX_("Content-Length",fa,f8,b6,65).toLowerCase();
-HXDLIN( 782)				::Array< ::Dynamic> options = slot1->concat(::Array_obj< ::Dynamic>::__new(1)->init(0, ::tink::http::HeaderField_obj::__alloc( HX_CTX ,this1,::tink::http::_Header::HeaderValue_Impl__obj::ofInt(source->size))));
-HXDLIN( 782)				::String name = source->name;
-HXDLIN( 782)				 ::haxe::io::Input input = ::sys::io::File_obj::read(source->path,null());
-HXDLIN( 782)				 ::Dynamic options1 = null();
-HXDLIN( 782)				if (::hx::IsNull( options1 )) {
-HXLINE( 782)					options1 =  ::Dynamic(::hx::Anon_obj::Create(0));
-            				}
-HXDLIN( 782)				::Dynamic options2 = ::tink::io::_Worker::Worker_Impl__obj::ensure( ::Dynamic(options1->__Field(HX_("worker",7e,30,9e,c9),::hx::paccDynamic)));
-HXDLIN( 782)				 ::Dynamic _g = options1->__Field(HX_("chunkSize",ce,cd,77,9f),::hx::paccDynamic);
-HXDLIN( 782)				int options3;
-HXDLIN( 782)				if (::hx::IsNull( _g )) {
-HXLINE( 782)					options3 = 65536;
+HXLINE( 781)				 ::Dynamic url = ::tink::_Url::Url_Impl__obj::fromString(( (::String)(slot->__Field(HX_("put",cf,62,55,00),::hx::paccDynamic)) ));
+HXDLIN( 781)				::Array< ::Dynamic> slot1 = ( (::Array< ::Dynamic>)(slot->__Field(HX_("putHeaders",37,9f,1e,a4),::hx::paccDynamic)) );
+HXDLIN( 781)				::String this1 = HX_("Content-Length",fa,f8,b6,65).toLowerCase();
+HXDLIN( 781)				::Array< ::Dynamic> options = slot1->concat(::Array_obj< ::Dynamic>::__new(1)->init(0, ::tink::http::HeaderField_obj::__alloc( HX_CTX ,this1,::tink::http::_Header::HeaderValue_Impl__obj::ofInt(source->size))));
+HXDLIN( 781)				::String name = source->name;
+HXDLIN( 781)				 ::haxe::io::Input input = ::sys::io::File_obj::read(source->path,null());
+HXDLIN( 781)				 ::Dynamic options1 = null();
+HXDLIN( 781)				if (::hx::IsNull( options1 )) {
+HXLINE( 781)					options1 =  ::Dynamic(::hx::Anon_obj::Create(0));
+            				}
+HXDLIN( 781)				::Dynamic options2 = ::tink::io::_Worker::Worker_Impl__obj::ensure( ::Dynamic(options1->__Field(HX_("worker",7e,30,9e,c9),::hx::paccDynamic)));
+HXDLIN( 781)				 ::Dynamic _g = options1->__Field(HX_("chunkSize",ce,cd,77,9f),::hx::paccDynamic);
+HXDLIN( 781)				int options3;
+HXDLIN( 781)				if (::hx::IsNull( _g )) {
+HXLINE( 781)					options3 = 65536;
             				}
             				else {
-HXLINE( 782)					 ::Dynamic v = _g;
-HXDLIN( 782)					options3 = ( (int)(v) );
+HXLINE( 781)					 ::Dynamic v = _g;
+HXDLIN( 781)					options3 = ( (int)(v) );
             				}
-HXDLIN( 782)				::tink::http::_Fetch::FetchResponse_Impl__obj::all(::tink::http::Fetch_obj::fetch(url, ::Dynamic(::hx::Anon_obj::Create(3)
+HXDLIN( 781)				::tink::http::_Fetch::FetchResponse_Impl__obj::all(::tink::http::Fetch_obj::fetch(url, ::Dynamic(::hx::Anon_obj::Create(3)
             					->setFixed(0,HX_("method",e1,f6,5a,09),HX_("PUT",af,fe,3c,00))
             					->setFixed(1,HX_("body",a2,7a,1b,41),::tink::io::RealSourceTools_obj::idealize( ::tink::io::std::InputSource_obj::__alloc( HX_CTX ,name,input,options2,::haxe::io::Bytes_obj::alloc(options3),0), ::Dynamic(new _hx_Closure_0())))
             					->setFixed(2,HX_("headers",46,52,08,63),options))))->handle( ::Dynamic(new _hx_Closure_1(_gthis,slot,source,hashes,services,callback)));
@@ -2384,43 +2385,43 @@ HXDLIN( 782)				::tink::http::_Fetch::FetchResponse_Impl__obj::all(::tink::http:
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_770_prepareAttachmentFor)
-HXDLIN( 770)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 771)		if ((services->length < 1)) {
-HXLINE( 772)			::haxe::Log_obj::trace(HX_("No HTTP upload service found",d1,5a,61,46),::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),772,HX_("snikket.Client",3c,fe,06,7c),HX_("prepareAttachmentFor",df,5c,bf,82)));
-HXLINE( 773)			callback(null());
-HXLINE( 774)			return;
+            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_769_prepareAttachmentFor)
+HXDLIN( 769)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 770)		if ((services->length < 1)) {
+HXLINE( 771)			::haxe::Log_obj::trace(HX_("No HTTP upload service found",d1,5a,61,46),::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),771,HX_("snikket.Client",3c,fe,06,7c),HX_("prepareAttachmentFor",df,5c,bf,82)));
+HXLINE( 772)			callback(null());
+HXLINE( 773)			return;
             		}
-HXLINE( 776)		 ::snikket::queries::HttpUploadSlot httpUploadSlot =  ::snikket::queries::HttpUploadSlot_obj::__alloc( HX_CTX ,( (::String)(services->__get(0)->__Field(HX_("serviceId",70,93,d4,bc),::hx::paccDynamic)) ),source->name,source->size,source->type,hashes);
-HXLINE( 777)		httpUploadSlot->onFinished( ::Dynamic(new _hx_Closure_2(source,_gthis,hashes,services,httpUploadSlot,callback)));
-HXLINE( 791)		this->sendQuery(httpUploadSlot);
+HXLINE( 775)		 ::snikket::queries::HttpUploadSlot httpUploadSlot =  ::snikket::queries::HttpUploadSlot_obj::__alloc( HX_CTX ,( (::String)(services->__get(0)->__Field(HX_("serviceId",70,93,d4,bc),::hx::paccDynamic)) ),source->name,source->size,source->type,hashes);
+HXLINE( 776)		httpUploadSlot->onFinished( ::Dynamic(new _hx_Closure_2(source,_gthis,hashes,services,httpUploadSlot,callback)));
+HXLINE( 790)		this->sendQuery(httpUploadSlot);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC4(Client_obj,prepareAttachmentFor,(void))
 
 ::Array< ::Dynamic> Client_obj::getChats(){
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_798_getChats)
-HXDLIN( 798)		::Array< ::Dynamic> _g = ::Array_obj< ::Dynamic>::__new(0);
-HXDLIN( 798)		{
-HXDLIN( 798)			int _g1 = 0;
-HXDLIN( 798)			::Array< ::Dynamic> _g2 = this->chats;
-HXDLIN( 798)			while((_g1 < _g2->length)){
-HXDLIN( 798)				 ::snikket::Chat v = _g2->__get(_g1).StaticCast<  ::snikket::Chat >();
-HXDLIN( 798)				_g1 = (_g1 + 1);
-HXDLIN( 798)				if ((v->uiState != 2)) {
-HXDLIN( 798)					_g->push(v);
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_797_getChats)
+HXDLIN( 797)		::Array< ::Dynamic> _g = ::Array_obj< ::Dynamic>::__new(0);
+HXDLIN( 797)		{
+HXDLIN( 797)			int _g1 = 0;
+HXDLIN( 797)			::Array< ::Dynamic> _g2 = this->chats;
+HXDLIN( 797)			while((_g1 < _g2->length)){
+HXDLIN( 797)				 ::snikket::Chat v = _g2->__get(_g1).StaticCast<  ::snikket::Chat >();
+HXDLIN( 797)				_g1 = (_g1 + 1);
+HXDLIN( 797)				if ((v->uiState != 2)) {
+HXDLIN( 797)					_g->push(v);
             				}
             			}
             		}
-HXDLIN( 798)		return _g;
+HXDLIN( 797)		return _g;
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(Client_obj,getChats,return )
 
 size_t Client_obj::getChats__fromC(void*** outPtr){
-            	HX_GC_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_250_getChats__fromC)
+            	HX_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_250_getChats__fromC)
 HXDLIN( 250)		::Array< ::Dynamic> out = this->getChats();
 HXDLIN( 250)		if (::hx::IsNotNull( outPtr )) {
 HXDLIN( 250)			::cpp::Pointer< void** > _hx_tmp = ::cpp::Pointer_obj::fromRaw(outPtr);
@@ -2434,15 +2435,16 @@ HXDLIN( 250)						 ::Dynamic haxeObject = el;
 HXDLIN( 250)						void* ptr = haxeObject.mPtr;
 HXDLIN( 250)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 250)						{
-HXDLIN( 250)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 250)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 250)							int high = ptrInt64 >> 32;
-HXDLIN( 250)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 250)							if (::hx::IsNull( highMap )) {
-HXDLIN( 250)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 250)								this1->set(low,highMap);
+HXDLIN( 250)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 250)							if (::hx::IsNull( store )) {
+HXDLIN( 250)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 250)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXDLIN( 250)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 250)							highMap->set(high,haxeObject);
             						}
             					}
             				}
@@ -2450,15 +2452,16 @@ HXDLIN( 250)							highMap->set(high,haxeObject);
 HXDLIN( 250)			void** ptr1 = (void**)out->getBase();
 HXDLIN( 250)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 250)			{
-HXDLIN( 250)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 250)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 250)				int high1 = ptrInt641 >> 32;
-HXDLIN( 250)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 250)				if (::hx::IsNull( highMap1 )) {
-HXDLIN( 250)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 250)					this2->set(low1,highMap1);
+HXDLIN( 250)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 250)				if (::hx::IsNull( store1 )) {
+HXDLIN( 250)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),out));
+HXDLIN( 250)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXDLIN( 250)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 250)				highMap1->set(high1,out);
             			}
 HXDLIN( 250)			_hx_tmp->set_ref(ptr1);
             		}
@@ -2471,187 +2474,178 @@ void Client_obj::findAvailableChats(::String q, ::Dynamic callback){
             		void _hx_run( ::Dynamic jid, ::Dynamic __o_prepend){
             			HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,::Array< ::Dynamic>,results,bool,prepend) HXARGC(1)
             			void _hx_run( ::snikket::AvailableChat item){
-            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_811_findAvailableChats)
-HXLINE( 811)				if (prepend) {
-HXLINE( 811)					results->unshift(item);
+            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_810_findAvailableChats)
+HXLINE( 810)				if (prepend) {
+HXLINE( 810)					results->unshift(item);
             				}
             				else {
-HXLINE( 811)					results->push(item);
+HXLINE( 810)					results->push(item);
             				}
             			}
             			HX_END_LOCAL_FUNC1((void))
 
             			HX_BEGIN_LOCAL_FUNC_S8(::hx::LocalFunc,_hx_Closure_1,::String,q, ::snikket::Client,_gthis,::Array< ::Dynamic>,results, ::Dynamic,add,::String,query, ::snikket::queries::DiscoInfoGet,discoGet, ::Dynamic,callback, ::Dynamic,jid) HXARGC(0)
             			void _hx_run(){
-            				HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_813_findAvailableChats)
-HXLINE( 814)				 ::snikket::Caps resultCaps = discoGet->getResult();
-HXLINE( 815)				if (::hx::IsNull( resultCaps )) {
-HXLINE( 816)					 ::snikket::Stanza tmp = discoGet->responseStanza;
-HXDLIN( 816)					 ::snikket::Stanza tmp1;
-HXDLIN( 816)					if (::hx::IsNotNull( tmp )) {
-HXLINE( 816)						tmp1 = tmp->getChild(HX_("error",c8,cb,29,73),null());
+            				HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_812_findAvailableChats)
+HXLINE( 813)				 ::snikket::Caps resultCaps = discoGet->getResult();
+HXLINE( 814)				if (::hx::IsNull( resultCaps )) {
+HXLINE( 815)					 ::snikket::Stanza tmp = discoGet->responseStanza;
+HXDLIN( 815)					 ::snikket::Stanza tmp1;
+HXDLIN( 815)					if (::hx::IsNotNull( tmp )) {
+HXLINE( 815)						tmp1 = tmp->getChild(HX_("error",c8,cb,29,73),null());
             					}
             					else {
-HXLINE( 816)						tmp1 = null();
+HXLINE( 815)						tmp1 = null();
             					}
-HXDLIN( 816)					 ::snikket::Stanza err;
-HXDLIN( 816)					if (::hx::IsNotNull( tmp1 )) {
-HXLINE( 816)						err = tmp1->getChild(null(),HX_("urn:ietf:params:xml:ns:xmpp-stanzas",27,f2,3d,30));
+HXDLIN( 815)					 ::snikket::Stanza err;
+HXDLIN( 815)					if (::hx::IsNotNull( tmp1 )) {
+HXLINE( 815)						err = tmp1->getChild(null(),HX_("urn:ietf:params:xml:ns:xmpp-stanzas",27,f2,3d,30));
             					}
             					else {
-HXLINE( 816)						err = null();
+HXLINE( 815)						err = null();
             					}
-HXLINE( 817)					bool checkAndAdd;
-HXDLIN( 817)					bool checkAndAdd1;
-HXDLIN( 817)					if (::hx::IsNotNull( err )) {
-HXLINE( 817)						::String checkAndAdd2;
-HXDLIN( 817)						if (::hx::IsNotNull( err )) {
-HXLINE( 817)							checkAndAdd2 = err->name;
+HXLINE( 816)					bool checkAndAdd;
+HXDLIN( 816)					bool checkAndAdd1;
+HXDLIN( 816)					if (::hx::IsNotNull( err )) {
+HXLINE( 816)						::String checkAndAdd2;
+HXDLIN( 816)						if (::hx::IsNotNull( err )) {
+HXLINE( 816)							checkAndAdd2 = err->name;
             						}
             						else {
-HXLINE( 817)							checkAndAdd2 = null();
+HXLINE( 816)							checkAndAdd2 = null();
             						}
-HXDLIN( 817)						checkAndAdd1 = (checkAndAdd2 == HX_("service-unavailable",f8,3c,11,1c));
+HXDLIN( 816)						checkAndAdd1 = (checkAndAdd2 == HX_("service-unavailable",f8,3c,11,1c));
             					}
             					else {
-HXLINE( 817)						checkAndAdd1 = true;
+HXLINE( 816)						checkAndAdd1 = true;
             					}
-HXDLIN( 817)					if (!(checkAndAdd1)) {
-HXLINE( 817)						::String checkAndAdd3;
-HXDLIN( 817)						if (::hx::IsNotNull( err )) {
-HXLINE( 817)							checkAndAdd3 = err->name;
+HXDLIN( 816)					if (!(checkAndAdd1)) {
+HXLINE( 816)						::String checkAndAdd3;
+HXDLIN( 816)						if (::hx::IsNotNull( err )) {
+HXLINE( 816)							checkAndAdd3 = err->name;
             						}
             						else {
-HXLINE( 817)							checkAndAdd3 = null();
+HXLINE( 816)							checkAndAdd3 = null();
             						}
-HXDLIN( 817)						checkAndAdd = (checkAndAdd3 == HX_("feature-not-implemented",71,20,2e,96));
+HXDLIN( 816)						checkAndAdd = (checkAndAdd3 == HX_("feature-not-implemented",71,20,2e,96));
             					}
             					else {
-HXLINE( 817)						checkAndAdd = true;
+HXLINE( 816)						checkAndAdd = true;
             					}
-HXDLIN( 817)					if (checkAndAdd) {
-HXLINE( 818)						 ::Dynamic add1 = add;
-HXDLIN( 818)						::String checkAndAdd4 = ( (::String)(jid->__Field(HX_("asString",63,33,06,a0),::hx::paccDynamic)()) );
-HXDLIN( 818)						::String query1 = query;
-HXDLIN( 818)						::String checkAndAdd5 = ( (::String)(jid->__Field(HX_("asString",63,33,06,a0),::hx::paccDynamic)()) );
-HXDLIN( 818)						add1( ::snikket::AvailableChat_obj::__alloc( HX_CTX ,checkAndAdd4,query1,checkAndAdd5, ::snikket::Caps_obj::__alloc( HX_CTX ,HX_("",00,00,00,00),::Array_obj< ::Dynamic>::__new(0),::Array_obj< ::String >::__new(0),null())));
+HXDLIN( 816)					if (checkAndAdd) {
+HXLINE( 817)						 ::Dynamic add1 = add;
+HXDLIN( 817)						::String checkAndAdd4 = ( (::String)(jid->__Field(HX_("asString",63,33,06,a0),::hx::paccDynamic)()) );
+HXDLIN( 817)						::String query1 = query;
+HXDLIN( 817)						::String checkAndAdd5 = ( (::String)(jid->__Field(HX_("asString",63,33,06,a0),::hx::paccDynamic)()) );
+HXDLIN( 817)						add1( ::snikket::AvailableChat_obj::__alloc( HX_CTX ,checkAndAdd4,query1,checkAndAdd5, ::snikket::Caps_obj::__alloc( HX_CTX ,HX_("",00,00,00,00),::Array_obj< ::Dynamic>::__new(0),::Array_obj< ::String >::__new(0),null())));
             					}
             				}
             				else {
-HXLINE( 821)					::snikket::Persistence_obj::storeCaps(_gthis->persistence,resultCaps);
-HXLINE( 822)					 ::snikket::Identity identity = resultCaps->identities->__get(0).StaticCast<  ::snikket::Identity >();
-HXLINE( 823)					::String displayName;
-HXDLIN( 823)					::String tmp2;
-HXDLIN( 823)					if (::hx::IsNotNull( identity )) {
-HXLINE( 823)						tmp2 = identity->name;
+HXLINE( 820)					::snikket::Persistence_obj::storeCaps(_gthis->persistence,resultCaps);
+HXLINE( 821)					 ::snikket::Identity identity = resultCaps->identities->__get(0).StaticCast<  ::snikket::Identity >();
+HXLINE( 822)					::String displayName;
+HXDLIN( 822)					::String tmp2;
+HXDLIN( 822)					if (::hx::IsNotNull( identity )) {
+HXLINE( 822)						tmp2 = identity->name;
             					}
             					else {
-HXLINE( 823)						tmp2 = null();
+HXLINE( 822)						tmp2 = null();
             					}
-HXDLIN( 823)					if (::hx::IsNotNull( tmp2 )) {
-HXLINE( 823)						displayName = tmp2;
+HXDLIN( 822)					if (::hx::IsNotNull( tmp2 )) {
+HXLINE( 822)						displayName = tmp2;
             					}
             					else {
-HXLINE( 823)						displayName = query;
+HXLINE( 822)						displayName = query;
             					}
-HXLINE( 824)					::String note = ( (::String)(jid->__Field(HX_("asString",63,33,06,a0),::hx::paccDynamic)()) );
-HXDLIN( 824)					::String note1;
-HXDLIN( 824)					if (::hx::IsNull( identity )) {
-HXLINE( 824)						note1 = HX_("",00,00,00,00);
+HXLINE( 823)					::String note = ( (::String)(jid->__Field(HX_("asString",63,33,06,a0),::hx::paccDynamic)()) );
+HXDLIN( 823)					::String note1;
+HXDLIN( 823)					if (::hx::IsNull( identity )) {
+HXLINE( 823)						note1 = HX_("",00,00,00,00);
             					}
             					else {
-HXLINE( 824)						note1 = ((HX_(" (",08,1c,00,00) + identity->type) + HX_(")",29,00,00,00));
+HXLINE( 823)						note1 = ((HX_(" (",08,1c,00,00) + identity->type) + HX_(")",29,00,00,00));
             					}
-HXDLIN( 824)					::String note2 = (note + note1);
-HXLINE( 825)					 ::Dynamic add2 = add;
-HXDLIN( 825)					add2( ::snikket::AvailableChat_obj::__alloc( HX_CTX ,( (::String)(jid->__Field(HX_("asString",63,33,06,a0),::hx::paccDynamic)()) ),displayName,note2,resultCaps));
+HXDLIN( 823)					::String note2 = (note + note1);
+HXLINE( 824)					 ::Dynamic add2 = add;
+HXDLIN( 824)					add2( ::snikket::AvailableChat_obj::__alloc( HX_CTX ,( (::String)(jid->__Field(HX_("asString",63,33,06,a0),::hx::paccDynamic)()) ),displayName,note2,resultCaps));
             				}
-HXLINE( 827)				callback(q,results);
+HXLINE( 826)				callback(q,results);
             			}
             			HX_END_LOCAL_FUNC0((void))
 
             		bool prepend = __o_prepend.Default(false);
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_810_findAvailableChats)
-HXLINE( 811)			 ::Dynamic add =  ::Dynamic(new _hx_Closure_0(results,prepend));
-HXLINE( 812)			 ::snikket::queries::DiscoInfoGet discoGet =  ::snikket::queries::DiscoInfoGet_obj::__alloc( HX_CTX ,( (::String)(jid->__Field(HX_("asString",63,33,06,a0),::hx::paccDynamic)()) ),null());
-HXLINE( 813)			discoGet->onFinished( ::Dynamic(new _hx_Closure_1(q,_gthis,results,add,query,discoGet,callback,jid)));
-HXLINE( 829)			_gthis->sendQuery(discoGet);
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_809_findAvailableChats)
+HXLINE( 810)			 ::Dynamic add =  ::Dynamic(new _hx_Closure_0(results,prepend));
+HXLINE( 811)			 ::snikket::queries::DiscoInfoGet discoGet =  ::snikket::queries::DiscoInfoGet_obj::__alloc( HX_CTX ,( (::String)(jid->__Field(HX_("asString",63,33,06,a0),::hx::paccDynamic)()) ),null());
+HXLINE( 812)			discoGet->onFinished( ::Dynamic(new _hx_Closure_1(q,_gthis,results,add,query,discoGet,callback,jid)));
+HXLINE( 828)			_gthis->sendQuery(discoGet);
             		}
             		HX_END_LOCAL_FUNC2((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_807_findAvailableChats)
-HXDLIN( 807)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 808)		::Array< ::Dynamic> results = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 809)		::String query = ::StringTools_obj::trim(q);
-HXLINE( 810)		 ::Dynamic checkAndAdd =  ::Dynamic(new _hx_Closure_2(_gthis,q,results,query,callback));
-HXLINE( 831)		 ::snikket::JID jid;
-HXDLIN( 831)		if (::StringTools_obj::startsWith(query,HX_("xmpp:",65,3c,77,60))) {
-HXLINE( 831)			jid = ::snikket::JID_obj::parse(query.substr(5,null()));
+            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_806_findAvailableChats)
+HXDLIN( 806)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 807)		::Array< ::Dynamic> results = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 808)		::String query = ::StringTools_obj::trim(q);
+HXLINE( 809)		 ::Dynamic checkAndAdd =  ::Dynamic(new _hx_Closure_2(_gthis,q,results,query,callback));
+HXLINE( 830)		 ::snikket::JID jid;
+HXDLIN( 830)		if (::StringTools_obj::startsWith(query,HX_("xmpp:",65,3c,77,60))) {
+HXLINE( 830)			jid = ::snikket::JID_obj::parse(query.substr(5,null()));
             		}
             		else {
-HXLINE( 831)			jid = ::snikket::JID_obj::parse(query);
-            		}
-HXLINE( 836)		if (jid->isValid()) {
-HXLINE( 837)			checkAndAdd(jid,true);
-            		}
-HXLINE( 839)		{
-HXLINE( 839)			int _g = 0;
-HXDLIN( 839)			::Array< ::Dynamic> _g1 = this->chats;
-HXDLIN( 839)			while((_g < _g1->length)){
-HXLINE( 839)				 ::snikket::Chat chat = _g1->__get(_g).StaticCast<  ::snikket::Chat >();
-HXDLIN( 839)				_g = (_g + 1);
-HXLINE( 840)				::String chat1 = chat->chatId;
-HXDLIN( 840)				if ((chat1 != jid->asBare()->asString())) {
-HXLINE( 841)					bool _hx_tmp;
-HXDLIN( 841)					::String s = chat->chatId;
-HXDLIN( 841)					if ((s.indexOf(query.toLowerCase(),null()) == -1)) {
-HXLINE( 841)						::String s1 = chat->getDisplayName().toLowerCase();
-HXDLIN( 841)						_hx_tmp = (s1.indexOf(query.toLowerCase(),null()) != -1);
+HXLINE( 830)			jid = ::snikket::JID_obj::parse(query);
+            		}
+HXLINE( 835)		if (jid->isValid()) {
+HXLINE( 836)			checkAndAdd(jid,true);
+            		}
+HXLINE( 838)		{
+HXLINE( 838)			int _g = 0;
+HXDLIN( 838)			::Array< ::Dynamic> _g1 = this->chats;
+HXDLIN( 838)			while((_g < _g1->length)){
+HXLINE( 838)				 ::snikket::Chat chat = _g1->__get(_g).StaticCast<  ::snikket::Chat >();
+HXDLIN( 838)				_g = (_g + 1);
+HXLINE( 839)				::String chat1 = chat->chatId;
+HXDLIN( 839)				if ((chat1 != jid->asBare()->asString())) {
+HXLINE( 840)					bool _hx_tmp;
+HXDLIN( 840)					::String s = chat->chatId;
+HXDLIN( 840)					if ((s.indexOf(query.toLowerCase(),null()) == -1)) {
+HXLINE( 840)						::String s1 = chat->getDisplayName().toLowerCase();
+HXDLIN( 840)						_hx_tmp = (s1.indexOf(query.toLowerCase(),null()) != -1);
             					}
             					else {
-HXLINE( 841)						_hx_tmp = true;
+HXLINE( 840)						_hx_tmp = true;
             					}
-HXDLIN( 841)					if (_hx_tmp) {
-HXLINE( 842)						 ::snikket::Channel channel = ( ( ::snikket::Channel)(::snikket::_Util::Util_Fields__obj::downcast(chat,::hx::ClassOf< ::snikket::Channel >())) );
-HXLINE( 843)						::Array< ::Dynamic> results1 = results;
-HXDLIN( 843)						::String chat2 = chat->chatId;
-HXDLIN( 843)						::String _hx_tmp1 = chat->getDisplayName();
-HXDLIN( 843)						::String chat3 = chat->chatId;
-HXDLIN( 843)						 ::snikket::Caps _hx_tmp2;
-HXDLIN( 843)						bool _hx_tmp3;
-HXDLIN( 843)						if (::hx::IsNotNull( channel )) {
-HXLINE( 843)							_hx_tmp3 = ::hx::IsNull( channel->disco );
+HXDLIN( 840)					if (_hx_tmp) {
+HXLINE( 841)						 ::snikket::Channel channel = ( ( ::snikket::Channel)(::snikket::_Util::Util_Fields__obj::downcast(chat,::hx::ClassOf< ::snikket::Channel >())) );
+HXLINE( 842)						::Array< ::Dynamic> results1 = results;
+HXDLIN( 842)						::String chat2 = chat->chatId;
+HXDLIN( 842)						::String _hx_tmp1 = chat->getDisplayName();
+HXDLIN( 842)						::String chat3 = chat->chatId;
+HXDLIN( 842)						 ::snikket::Caps _hx_tmp2;
+HXDLIN( 842)						bool _hx_tmp3;
+HXDLIN( 842)						if (::hx::IsNotNull( channel )) {
+HXLINE( 842)							_hx_tmp3 = ::hx::IsNull( channel->disco );
             						}
             						else {
-HXLINE( 843)							_hx_tmp3 = true;
+HXLINE( 842)							_hx_tmp3 = true;
             						}
-HXDLIN( 843)						if (_hx_tmp3) {
-HXLINE( 843)							_hx_tmp2 =  ::snikket::Caps_obj::__alloc( HX_CTX ,HX_("",00,00,00,00),::Array_obj< ::Dynamic>::__new(0),::Array_obj< ::String >::__new(0),null());
+HXDLIN( 842)						if (_hx_tmp3) {
+HXLINE( 842)							_hx_tmp2 =  ::snikket::Caps_obj::__alloc( HX_CTX ,HX_("",00,00,00,00),::Array_obj< ::Dynamic>::__new(0),::Array_obj< ::String >::__new(0),null());
             						}
             						else {
-HXLINE( 843)							_hx_tmp2 = channel->disco;
+HXLINE( 842)							_hx_tmp2 = channel->disco;
             						}
-HXDLIN( 843)						results1->push( ::snikket::AvailableChat_obj::__alloc( HX_CTX ,chat2,_hx_tmp1,chat3,_hx_tmp2));
+HXDLIN( 842)						results1->push( ::snikket::AvailableChat_obj::__alloc( HX_CTX ,chat2,_hx_tmp1,chat3,_hx_tmp2));
             					}
             				}
-HXLINE( 846)				if (chat->isTrusted()) {
-HXLINE( 847)					 ::haxe::ds::StringMap resources =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
-HXLINE( 848)					{
-HXLINE( 848)						int _g2 = 0;
-HXDLIN( 848)						::Array< ::String > _g3 = ::snikket::Caps_obj::withIdentity(chat->getCaps(),HX_("gateway",04,40,59,91),null());
-HXDLIN( 848)						while((_g2 < _g3->length)){
-HXLINE( 848)							::String resource = _g3->__get(_g2);
-HXDLIN( 848)							_g2 = (_g2 + 1);
-HXLINE( 849)							resources->set(resource,true);
-            						}
-            					}
-HXLINE( 851)					{
-HXLINE( 851)						int _g4 = 0;
-HXDLIN( 851)						::Array< ::String > _g5 = ::snikket::Caps_obj::withFeature(chat->getCaps(),HX_("jabber:iq:gateway",c8,db,57,c1));
-HXDLIN( 851)						while((_g4 < _g5->length)){
-HXLINE( 851)							::String resource1 = _g5->__get(_g4);
-HXDLIN( 851)							_g4 = (_g4 + 1);
-HXLINE( 852)							resources->set(resource1,true);
+HXLINE( 845)				if (chat->isTrusted()) {
+HXLINE( 846)					 ::haxe::ds::StringMap resources =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
+HXLINE( 847)					{
+HXLINE( 847)						int _g2 = 0;
+HXDLIN( 847)						::Array< ::String > _g3 = ::snikket::Caps_obj::withIdentity(chat->getCaps(),HX_("gateway",04,40,59,91),null());
+HXDLIN( 847)						while((_g2 < _g3->length)){
+HXLINE( 847)							::String resource = _g3->__get(_g2);
+HXDLIN( 847)							_g2 = (_g2 + 1);
+HXLINE( 848)							resources->set(resource,true);
             						}
             					}
 HXLINE( 854)					bool _hx_tmp4;
@@ -2666,13 +2660,13 @@ HXLINE( 855)						::String k = null();
 HXDLIN( 855)						resources->set(k,true);
             					}
 HXLINE( 857)					{
-HXLINE( 857)						 ::Dynamic resource2 = resources->keys();
-HXDLIN( 857)						while(( (bool)(resource2->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-            							HX_BEGIN_LOCAL_FUNC_S6(::hx::LocalFunc,_hx_Closure_3, ::snikket::queries::JabberIqGatewayGet,jigGet1,::String,resource3,::String,query, ::snikket::JID,bareJid, ::snikket::Chat,chat, ::Dynamic,checkAndAdd) HXARGC(0)
+HXLINE( 857)						 ::Dynamic resource1 = resources->keys();
+HXDLIN( 857)						while(( (bool)(resource1->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+            							HX_BEGIN_LOCAL_FUNC_S6(::hx::LocalFunc,_hx_Closure_3, ::snikket::queries::JabberIqGatewayGet,jigGet1,::String,query, ::snikket::JID,bareJid, ::snikket::Chat,chat,::String,resource2, ::Dynamic,checkAndAdd) HXARGC(0)
             							void _hx_run(){
             								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_862_findAvailableChats)
 HXLINE( 862)								if (::hx::IsNull( jigGet1->getResult() )) {
-HXLINE( 863)									 ::snikket::Caps caps = chat->getResourceCaps(resource3);
+HXLINE( 863)									 ::snikket::Caps caps = chat->getResourceCaps(resource2);
 HXLINE( 864)									bool _hx_tmp;
 HXDLIN( 864)									if (bareJid->isDomain()) {
 HXLINE( 864)										_hx_tmp = caps->features->contains(HX_("jid\\20escaping",73,c5,d2,4a));
@@ -2711,12 +2705,28 @@ HXDLIN( 873)											checkAndAdd3(::snikket::JID_obj::parse(result),null());
             							}
             							HX_END_LOCAL_FUNC0((void))
 
-HXLINE( 857)							::String resource3 = ( (::String)(resource2->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
+HXLINE( 857)							::String resource2 = ( (::String)(resource1->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
 HXLINE( 858)							 ::snikket::JID bareJid = ::snikket::JID_obj::parse(chat->chatId);
-HXLINE( 859)							 ::snikket::JID fullJid =  ::snikket::JID_obj::__alloc( HX_CTX ,bareJid->node,bareJid->domain,resource3,null());
-HXLINE( 860)							::String jigGet = fullJid->asString();
+HXLINE( 859)							::String bareJid1 = bareJid->node;
+HXDLIN( 859)							::String bareJid2 = bareJid->domain;
+HXDLIN( 859)							::String fullJid;
+HXDLIN( 859)							bool fullJid1;
+HXDLIN( 859)							if (bareJid->isDomain()) {
+HXLINE( 859)								fullJid1 = (resource2 == HX_("",00,00,00,00));
+            							}
+            							else {
+HXLINE( 859)								fullJid1 = false;
+            							}
+HXDLIN( 859)							if (fullJid1) {
+HXLINE( 859)								fullJid = null();
+            							}
+            							else {
+HXLINE( 859)								fullJid = resource2;
+            							}
+HXDLIN( 859)							 ::snikket::JID fullJid2 =  ::snikket::JID_obj::__alloc( HX_CTX ,bareJid1,bareJid2,fullJid,null());
+HXLINE( 860)							::String jigGet = fullJid2->asString();
 HXDLIN( 860)							 ::snikket::queries::JabberIqGatewayGet jigGet1 =  ::snikket::queries::JabberIqGatewayGet_obj::__alloc( HX_CTX ,jigGet,query);
-HXLINE( 861)							jigGet1->onFinished( ::Dynamic(new _hx_Closure_3(jigGet1,resource3,query,bareJid,chat,checkAndAdd)));
+HXLINE( 861)							jigGet1->onFinished( ::Dynamic(new _hx_Closure_3(jigGet1,query,bareJid,chat,resource2,checkAndAdd)));
 HXLINE( 877)							this->sendQuery(jigGet1);
             						}
             					}
@@ -2741,20 +2751,21 @@ HX_DEFINE_DYNAMIC_FUNC2(Client_obj,findAvailableChats,(void))
 void Client_obj::findAvailableChats__fromC(::String q,::cpp::Function< void  (const char*,void**,size_t,void*) > callback,void* callback__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,void*,callback__context,::cpp::Function< void  (const char* HX_COMMA void** HX_COMMA size_t HX_COMMA void*) >,callback) HXARGC(2)
             		void _hx_run(::String a0,::Array< ::Dynamic> a1){
-            			HX_GC_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_findAvailableChats__fromC)
+            			HX_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_findAvailableChats__fromC)
 HXLINE( 221)			::cpp::Function< void  (const char*,void**,size_t,void*) > callback1 = callback;
 HXLINE( 213)			const char* cStrPtr = a0.utf8_str();
 HXDLIN( 213)			::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(cStrPtr);
 HXDLIN( 213)			{
-HXLINE( 213)				 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 213)				int low = ptrInt64 & 0xffffffff;
-HXDLIN( 213)				int high = ptrInt64 >> 32;
-HXDLIN( 213)				 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 213)				if (::hx::IsNull( highMap )) {
-HXLINE( 213)					highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 213)					this1->set(low,highMap);
+HXLINE( 213)				 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 213)				if (::hx::IsNull( store )) {
+HXLINE( 213)					store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),a0));
+HXDLIN( 213)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            				}
+            				else {
+HXLINE( 213)					::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 213)				highMap->set(high,a0);
             			}
 HXDLIN( 213)			const char* _hx_tmp = cStrPtr;
 HXLINE( 211)			{
@@ -2767,15 +2778,16 @@ HXLINE( 211)						 ::Dynamic haxeObject = el;
 HXDLIN( 211)						void* ptr = haxeObject.mPtr;
 HXDLIN( 211)						::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 211)						{
-HXLINE( 211)							 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 211)							int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 211)							int high1 = ptrInt641 >> 32;
-HXDLIN( 211)							 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 211)							if (::hx::IsNull( highMap1 )) {
-HXLINE( 211)								highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 211)								this2->set(low1,highMap1);
+HXLINE( 211)							 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 211)							if (::hx::IsNull( store1 )) {
+HXLINE( 211)								store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 211)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            							}
+            							else {
+HXLINE( 211)								::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 211)							highMap1->set(high1,haxeObject);
             						}
             					}
             				}
@@ -2783,15 +2795,16 @@ HXDLIN( 211)							highMap1->set(high1,haxeObject);
 HXDLIN( 211)			void** ptr1 = (void**)a1->getBase();
 HXDLIN( 211)			::cpp::Int64 ptrInt642 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 211)			{
-HXLINE( 211)				 ::haxe::ds::IntMap this3 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 211)				int low2 = ptrInt642 & 0xffffffff;
-HXDLIN( 211)				int high2 = ptrInt642 >> 32;
-HXDLIN( 211)				 ::haxe::ds::IntMap highMap2 = ( ( ::haxe::ds::IntMap)(this3->get(low2)) );
-HXDLIN( 211)				if (::hx::IsNull( highMap2 )) {
-HXLINE( 211)					highMap2 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 211)					this3->set(low2,highMap2);
+HXLINE( 211)				 ::Dynamic store2 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt642);
+HXDLIN( 211)				if (::hx::IsNull( store2 )) {
+HXLINE( 211)					store2 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),a1));
+HXDLIN( 211)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt642,store2);
+            				}
+            				else {
+HXLINE( 211)					::hx::FieldRef((store2).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 211)				highMap2->set(high2,a1);
             			}
 HXLINE( 221)			callback1(_hx_tmp,ptr1,( (size_t)(a1->length) ),callback__context);
             		}
@@ -2884,10 +2897,10 @@ HXDLIN( 925)				 ::snikket::Chat v = it->__get(_g).StaticCast<  ::snikket::Chat
 HXDLIN( 925)				_g = (_g + 1);
 HXDLIN( 925)				if ((v->chatId == chatId)) {
 HXDLIN( 925)					result = v;
-HXDLIN( 925)					goto _hx_goto_103;
+HXDLIN( 925)					goto _hx_goto_102;
             				}
             			}
-            			_hx_goto_103:;
+            			_hx_goto_102:;
             		}
 HXDLIN( 925)		return result;
             	}
@@ -3158,21 +3171,22 @@ HX_DEFINE_DYNAMIC_FUNC1(Client_obj,addPasswordNeededListener,(void))
 void Client_obj::addPasswordNeededListener__fromC(::cpp::Function< void  (void*,void*) > handler,void* handler__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,::cpp::Function< void  (void* HX_COMMA void*) >,handler,void*,handler__context) HXARGC(1)
             		void _hx_run( ::snikket::Client a0){
-            			HX_GC_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addPasswordNeededListener__fromC)
+            			HX_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addPasswordNeededListener__fromC)
 HXLINE( 221)			::cpp::Function< void  (void*,void*) > handler1 = handler;
 HXLINE( 215)			 ::Dynamic haxeObject = a0;
 HXDLIN( 215)			void* ptr = haxeObject.mPtr;
 HXDLIN( 215)			::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 215)			{
-HXLINE( 215)				 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 215)				int low = ptrInt64 & 0xffffffff;
-HXDLIN( 215)				int high = ptrInt64 >> 32;
-HXDLIN( 215)				 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 215)				if (::hx::IsNull( highMap )) {
-HXLINE( 215)					highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 215)					this1->set(low,highMap);
+HXLINE( 215)				 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 215)				if (::hx::IsNull( store )) {
+HXLINE( 215)					store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 215)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            				}
+            				else {
+HXLINE( 215)					::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 215)				highMap->set(high,haxeObject);
             			}
 HXLINE( 221)			handler1(ptr,handler__context);
             		}
@@ -3270,16 +3284,104 @@ HXDLIN( 252)		this->addConnectionFailedListener( ::Dynamic(new _hx_Closure_0(han
             	}
 
 
+void Client_obj::addTlsCheckListener( ::Dynamic handler){
+            		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::Dynamic,handler) HXARGC(1)
+            		 ::snikket::EventResult _hx_run( ::Dynamic data){
+            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1091_addTlsCheckListener)
+HXLINE(1091)			return ::snikket::EventResult_obj::EventValue(handler( ::Dynamic(data->__Field(HX_("pem",d8,54,55,00),::hx::paccDynamic)), ::Dynamic(data->__Field(HX_("dnsNames",5f,19,aa,5a),::hx::paccDynamic))));
+            		}
+            		HX_END_LOCAL_FUNC1(return)
+
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1090_addTlsCheckListener)
+HXDLIN(1090)		this->stream->on(HX_("tls/check",74,a0,4c,75), ::Dynamic(new _hx_Closure_0(handler)));
+            	}
+
+
+HX_DEFINE_DYNAMIC_FUNC1(Client_obj,addTlsCheckListener,(void))
+
+void Client_obj::addTlsCheckListener__fromC(::cpp::Function< bool  (const char*,const char**,size_t,void*) > handler,void* handler__context){
+            		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,::cpp::Function< bool  (const char* HX_COMMA const char** HX_COMMA size_t HX_COMMA void*) >,handler,void*,handler__context) HXARGC(2)
+            		bool _hx_run(::String a0,::Array< ::String > a1){
+            			HX_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addTlsCheckListener__fromC)
+HXLINE( 221)			::cpp::Function< bool  (const char*,const char**,size_t,void*) > handler1 = handler;
+HXLINE( 213)			const char* cStrPtr = a0.utf8_str();
+HXDLIN( 213)			::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(cStrPtr);
+HXDLIN( 213)			{
+HXLINE( 213)				 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 213)				if (::hx::IsNull( store )) {
+HXLINE(2111)					store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),a0));
+HXLINE( 213)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            				}
+            				else {
+HXLINE( 213)					::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
+            				}
+            			}
+HXDLIN( 213)			const char* _hx_tmp = cStrPtr;
+HXLINE( 211)			::Array< size_t > arr = ::Array_obj< size_t >::__new(a1->length);
+HXDLIN( 211)			{
+HXLINE( 211)				int _g_current = 0;
+HXDLIN( 211)				::Array< ::String > _g_array = a1;
+HXDLIN( 211)				while((_g_current < _g_array->length)){
+HXLINE( 211)					::String _g_value = _g_array->__get(_g_current);
+HXDLIN( 211)					_g_current = (_g_current + 1);
+HXDLIN( 211)					int _g_key = (_g_current - 1);
+HXDLIN( 211)					int i = _g_key;
+HXDLIN( 211)					::String el = _g_value;
+HXDLIN( 211)					{
+HXLINE( 211)						const char* cStrPtr1 = el.utf8_str();
+HXDLIN( 211)						::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(cStrPtr1);
+HXDLIN( 211)						{
+HXLINE( 211)							 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 211)							if (::hx::IsNull( store1 )) {
+HXLINE(2111)								store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),el));
+HXLINE( 211)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            							}
+            							else {
+HXLINE( 211)								::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
+            							}
+            						}
+HXDLIN( 211)						const char* ptr = cStrPtr1;
+HXDLIN( 211)						arr[i] = reinterpret_cast<size_t>(ptr);
+            					}
+            				}
+            			}
+HXDLIN( 211)			void** ptr1 = (void**)arr->getBase();
+HXDLIN( 211)			::cpp::Int64 ptrInt642 = reinterpret_cast<int64_t>(ptr1);
+HXDLIN( 211)			{
+HXLINE( 211)				 ::Dynamic store2 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt642);
+HXDLIN( 211)				if (::hx::IsNull( store2 )) {
+HXLINE(2111)					store2 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),arr));
+HXLINE( 211)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt642,store2);
+            				}
+            				else {
+HXLINE( 211)					::hx::FieldRef((store2).mPtr,HX_("refCount",7c,2e,66,86))++;
+            				}
+            			}
+HXLINE( 221)			return handler1(_hx_tmp,( (const char**)(ptr1) ),( (size_t)(a1->length) ),handler__context);
+            		}
+            		HX_END_LOCAL_FUNC2(return)
+
+            	HX_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_252_addTlsCheckListener__fromC)
+HXDLIN( 252)		this->addTlsCheckListener( ::Dynamic(new _hx_Closure_0(handler,handler__context)));
+            	}
+
+
 void Client_obj::addChatMessageListener( ::Dynamic handler){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::Dynamic,handler) HXARGC(2)
             		void _hx_run( ::snikket::ChatMessage m,int e){
-            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1103_addChatMessageListener)
-HXDLIN(1103)			handler(m,e);
+            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1114_addChatMessageListener)
+HXDLIN(1114)			handler(m,e);
             		}
             		HX_END_LOCAL_FUNC2((void))
 
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1103_addChatMessageListener)
-HXDLIN(1103)		this->chatMessageHandlers->push( ::Dynamic(new _hx_Closure_0(handler)));
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1114_addChatMessageListener)
+HXDLIN(1114)		this->chatMessageHandlers->push( ::Dynamic(new _hx_Closure_0(handler)));
             	}
 
 
@@ -3288,21 +3390,22 @@ HX_DEFINE_DYNAMIC_FUNC1(Client_obj,addChatMessageListener,(void))
 void Client_obj::addChatMessageListener__fromC(::cpp::Function< void  (void*,int,void*) > handler,void* handler__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,::cpp::Function< void  (void* HX_COMMA int HX_COMMA void*) >,handler,void*,handler__context) HXARGC(2)
             		void _hx_run( ::snikket::ChatMessage a0,int a1){
-            			HX_GC_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addChatMessageListener__fromC)
+            			HX_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addChatMessageListener__fromC)
 HXLINE( 221)			::cpp::Function< void  (void*,int,void*) > handler1 = handler;
 HXLINE( 215)			 ::Dynamic haxeObject = a0;
 HXDLIN( 215)			void* ptr = haxeObject.mPtr;
 HXDLIN( 215)			::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 215)			{
-HXLINE( 215)				 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 215)				int low = ptrInt64 & 0xffffffff;
-HXDLIN( 215)				int high = ptrInt64 >> 32;
-HXDLIN( 215)				 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 215)				if (::hx::IsNull( highMap )) {
-HXLINE( 215)					highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 215)					this1->set(low,highMap);
+HXLINE( 215)				 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 215)				if (::hx::IsNull( store )) {
+HXLINE( 215)					store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 215)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            				}
+            				else {
+HXLINE( 215)					::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 215)				highMap->set(high,haxeObject);
             			}
 HXLINE( 221)			handler1(ptr,a1,handler__context);
             		}
@@ -3314,8 +3417,8 @@ HXDLIN( 252)		this->addChatMessageListener( ::Dynamic(new _hx_Closure_0(handler,
 
 
 void Client_obj::addSyncMessageListener( ::Dynamic handler){
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1117_addSyncMessageListener)
-HXDLIN(1117)		this->syncMessageHandlers->push(handler);
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1128_addSyncMessageListener)
+HXDLIN(1128)		this->syncMessageHandlers->push(handler);
             	}
 
 
@@ -3324,21 +3427,22 @@ HX_DEFINE_DYNAMIC_FUNC1(Client_obj,addSyncMessageListener,(void))
 void Client_obj::addSyncMessageListener__fromC(::cpp::Function< void  (void*,void*) > handler,void* handler__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,::cpp::Function< void  (void* HX_COMMA void*) >,handler,void*,handler__context) HXARGC(1)
             		void _hx_run( ::snikket::ChatMessage a0){
-            			HX_GC_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addSyncMessageListener__fromC)
+            			HX_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addSyncMessageListener__fromC)
 HXLINE( 221)			::cpp::Function< void  (void*,void*) > handler1 = handler;
 HXLINE( 215)			 ::Dynamic haxeObject = a0;
 HXDLIN( 215)			void* ptr = haxeObject.mPtr;
 HXDLIN( 215)			::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 215)			{
-HXLINE( 215)				 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 215)				int low = ptrInt64 & 0xffffffff;
-HXDLIN( 215)				int high = ptrInt64 >> 32;
-HXDLIN( 215)				 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 215)				if (::hx::IsNull( highMap )) {
-HXLINE( 215)					highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 215)					this1->set(low,highMap);
+HXLINE( 215)				 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 215)				if (::hx::IsNull( store )) {
+HXLINE( 215)					store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 215)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            				}
+            				else {
+HXLINE( 215)					::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 215)				highMap->set(high,haxeObject);
             			}
 HXLINE( 221)			handler1(ptr,handler__context);
             		}
@@ -3352,14 +3456,14 @@ HXDLIN( 252)		this->addSyncMessageListener( ::Dynamic(new _hx_Closure_0(handler,
 void Client_obj::addChatsUpdatedListener( ::Dynamic handler){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::Dynamic,handler) HXARGC(1)
             		 ::snikket::EventResult _hx_run(::Array< ::Dynamic> data){
-            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1126_addChatsUpdatedListener)
-HXLINE(1127)			handler(data);
-HXLINE(1128)			return ::snikket::EventResult_obj::EventHandled_dyn();
+            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1137_addChatsUpdatedListener)
+HXLINE(1138)			handler(data);
+HXLINE(1139)			return ::snikket::EventResult_obj::EventHandled_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1126_addChatsUpdatedListener)
-HXDLIN(1126)		this->on(HX_("chats/update",3d,8e,1d,14), ::Dynamic(new _hx_Closure_0(handler)));
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1137_addChatsUpdatedListener)
+HXDLIN(1137)		this->on(HX_("chats/update",3d,8e,1d,14), ::Dynamic(new _hx_Closure_0(handler)));
             	}
 
 
@@ -3368,7 +3472,7 @@ HX_DEFINE_DYNAMIC_FUNC1(Client_obj,addChatsUpdatedListener,(void))
 void Client_obj::addChatsUpdatedListener__fromC(::cpp::Function< void  (void**,size_t,void*) > handler,void* handler__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,::cpp::Function< void  (void** HX_COMMA size_t HX_COMMA void*) >,handler,void*,handler__context) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> a0){
-            			HX_GC_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addChatsUpdatedListener__fromC)
+            			HX_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addChatsUpdatedListener__fromC)
 HXLINE( 221)			::cpp::Function< void  (void**,size_t,void*) > handler1 = handler;
 HXLINE( 211)			{
 HXLINE( 211)				int _g = 0;
@@ -3380,15 +3484,16 @@ HXLINE( 211)						 ::Dynamic haxeObject = el;
 HXDLIN( 211)						void* ptr = haxeObject.mPtr;
 HXDLIN( 211)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 211)						{
-HXLINE( 211)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 211)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 211)							int high = ptrInt64 >> 32;
-HXDLIN( 211)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 211)							if (::hx::IsNull( highMap )) {
-HXLINE( 211)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 211)								this1->set(low,highMap);
+HXLINE( 211)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 211)							if (::hx::IsNull( store )) {
+HXLINE( 211)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 211)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXLINE( 211)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 211)							highMap->set(high,haxeObject);
             						}
             					}
             				}
@@ -3396,15 +3501,16 @@ HXDLIN( 211)							highMap->set(high,haxeObject);
 HXDLIN( 211)			void** ptr1 = (void**)a0->getBase();
 HXDLIN( 211)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 211)			{
-HXLINE( 211)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 211)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 211)				int high1 = ptrInt641 >> 32;
-HXDLIN( 211)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 211)				if (::hx::IsNull( highMap1 )) {
-HXLINE( 211)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 211)					this2->set(low1,highMap1);
+HXLINE( 211)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 211)				if (::hx::IsNull( store1 )) {
+HXLINE( 211)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),a0));
+HXDLIN( 211)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXLINE( 211)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 211)				highMap1->set(high1,a0);
             			}
 HXLINE( 221)			handler1(ptr1,( (size_t)(a0->length) ),handler__context);
             		}
@@ -3418,14 +3524,14 @@ HXDLIN( 252)		this->addChatsUpdatedListener( ::Dynamic(new _hx_Closure_0(handler
 void Client_obj::addCallRingListener( ::Dynamic handler){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::Dynamic,handler) HXARGC(1)
             		 ::snikket::EventResult _hx_run( ::Dynamic data){
-            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1138_addCallRingListener)
-HXLINE(1139)			handler( ::Dynamic(data->__Field(HX_("session",56,17,98,93),::hx::paccDynamic)));
-HXLINE(1140)			return ::snikket::EventResult_obj::EventHandled_dyn();
+            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1149_addCallRingListener)
+HXLINE(1150)			handler( ::Dynamic(data->__Field(HX_("session",56,17,98,93),::hx::paccDynamic)));
+HXLINE(1151)			return ::snikket::EventResult_obj::EventHandled_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1138_addCallRingListener)
-HXDLIN(1138)		this->on(HX_("call/ring",01,8e,91,54), ::Dynamic(new _hx_Closure_0(handler)));
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1149_addCallRingListener)
+HXDLIN(1149)		this->on(HX_("call/ring",01,8e,91,54), ::Dynamic(new _hx_Closure_0(handler)));
             	}
 
 
@@ -3434,21 +3540,22 @@ HX_DEFINE_DYNAMIC_FUNC1(Client_obj,addCallRingListener,(void))
 void Client_obj::addCallRingListener__fromC(::cpp::Function< void  (void*,void*) > handler,void* handler__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,::cpp::Function< void  (void* HX_COMMA void*) >,handler,void*,handler__context) HXARGC(1)
             		void _hx_run(::Dynamic a0){
-            			HX_GC_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addCallRingListener__fromC)
+            			HX_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addCallRingListener__fromC)
 HXLINE( 221)			::cpp::Function< void  (void*,void*) > handler1 = handler;
 HXLINE( 215)			 ::Dynamic haxeObject = a0;
 HXDLIN( 215)			void* ptr = haxeObject.mPtr;
 HXDLIN( 215)			::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 215)			{
-HXLINE( 215)				 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 215)				int low = ptrInt64 & 0xffffffff;
-HXDLIN( 215)				int high = ptrInt64 >> 32;
-HXDLIN( 215)				 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 215)				if (::hx::IsNull( highMap )) {
-HXLINE( 215)					highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 215)					this1->set(low,highMap);
+HXLINE( 215)				 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 215)				if (::hx::IsNull( store )) {
+HXLINE( 215)					store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 215)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            				}
+            				else {
+HXLINE( 215)					::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 215)				highMap->set(high,haxeObject);
             			}
 HXLINE( 221)			handler1(ptr,handler__context);
             		}
@@ -3462,14 +3569,14 @@ HXDLIN( 252)		this->addCallRingListener( ::Dynamic(new _hx_Closure_0(handler,han
 void Client_obj::addCallRetractListener( ::Dynamic handler){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::Dynamic,handler) HXARGC(1)
             		 ::snikket::EventResult _hx_run( ::Dynamic data){
-            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1150_addCallRetractListener)
-HXLINE(1151)			handler( ::Dynamic(data->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)), ::Dynamic(data->__Field(HX_("sid",0e,9f,57,00),::hx::paccDynamic)));
-HXLINE(1152)			return ::snikket::EventResult_obj::EventHandled_dyn();
+            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1161_addCallRetractListener)
+HXLINE(1162)			handler( ::Dynamic(data->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)), ::Dynamic(data->__Field(HX_("sid",0e,9f,57,00),::hx::paccDynamic)));
+HXLINE(1163)			return ::snikket::EventResult_obj::EventHandled_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1150_addCallRetractListener)
-HXDLIN(1150)		this->on(HX_("call/retract",50,bc,8d,db), ::Dynamic(new _hx_Closure_0(handler)));
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1161_addCallRetractListener)
+HXDLIN(1161)		this->on(HX_("call/retract",50,bc,8d,db), ::Dynamic(new _hx_Closure_0(handler)));
             	}
 
 
@@ -3478,33 +3585,35 @@ HX_DEFINE_DYNAMIC_FUNC1(Client_obj,addCallRetractListener,(void))
 void Client_obj::addCallRetractListener__fromC(::cpp::Function< void  (const char*,const char*,void*) > handler,void* handler__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,::cpp::Function< void  (const char* HX_COMMA const char* HX_COMMA void*) >,handler,void*,handler__context) HXARGC(2)
             		void _hx_run(::String a0,::String a1){
-            			HX_GC_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addCallRetractListener__fromC)
+            			HX_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addCallRetractListener__fromC)
 HXLINE( 221)			::cpp::Function< void  (const char*,const char*,void*) > handler1 = handler;
 HXLINE( 213)			const char* cStrPtr = a0.utf8_str();
 HXDLIN( 213)			::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(cStrPtr);
 HXDLIN( 213)			{
-HXLINE( 213)				 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 213)				int low = ptrInt64 & 0xffffffff;
-HXDLIN( 213)				int high = ptrInt64 >> 32;
-HXDLIN( 213)				 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 213)				if (::hx::IsNull( highMap )) {
-HXLINE( 213)					highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 213)					this1->set(low,highMap);
+HXLINE( 213)				 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 213)				if (::hx::IsNull( store )) {
+HXLINE( 213)					store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),a0));
+HXDLIN( 213)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            				}
+            				else {
+HXLINE( 213)					::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 213)				highMap->set(high,a0);
             			}
 HXDLIN( 213)			const char* cStrPtr1 = a1.utf8_str();
 HXDLIN( 213)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(cStrPtr1);
 HXDLIN( 213)			{
-HXLINE( 213)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 213)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 213)				int high1 = ptrInt641 >> 32;
-HXDLIN( 213)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 213)				if (::hx::IsNull( highMap1 )) {
-HXLINE( 213)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 213)					this2->set(low1,highMap1);
+HXLINE( 213)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 213)				if (::hx::IsNull( store1 )) {
+HXLINE( 213)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),a1));
+HXDLIN( 213)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXLINE( 213)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 213)				highMap1->set(high1,a1);
             			}
 HXLINE( 221)			handler1(cStrPtr,cStrPtr1,handler__context);
             		}
@@ -3518,14 +3627,14 @@ HXDLIN( 252)		this->addCallRetractListener( ::Dynamic(new _hx_Closure_0(handler,
 void Client_obj::addCallRingingListener( ::Dynamic handler){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::Dynamic,handler) HXARGC(1)
             		 ::snikket::EventResult _hx_run( ::Dynamic data){
-            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1162_addCallRingingListener)
-HXLINE(1163)			handler( ::Dynamic(data->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)), ::Dynamic(data->__Field(HX_("sid",0e,9f,57,00),::hx::paccDynamic)));
-HXLINE(1164)			return ::snikket::EventResult_obj::EventHandled_dyn();
+            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1173_addCallRingingListener)
+HXLINE(1174)			handler( ::Dynamic(data->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)), ::Dynamic(data->__Field(HX_("sid",0e,9f,57,00),::hx::paccDynamic)));
+HXLINE(1175)			return ::snikket::EventResult_obj::EventHandled_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1162_addCallRingingListener)
-HXDLIN(1162)		this->on(HX_("call/ringing",81,75,54,f9), ::Dynamic(new _hx_Closure_0(handler)));
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1173_addCallRingingListener)
+HXDLIN(1173)		this->on(HX_("call/ringing",81,75,54,f9), ::Dynamic(new _hx_Closure_0(handler)));
             	}
 
 
@@ -3534,33 +3643,35 @@ HX_DEFINE_DYNAMIC_FUNC1(Client_obj,addCallRingingListener,(void))
 void Client_obj::addCallRingingListener__fromC(::cpp::Function< void  (const char*,const char*,void*) > handler,void* handler__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,::cpp::Function< void  (const char* HX_COMMA const char* HX_COMMA void*) >,handler,void*,handler__context) HXARGC(2)
             		void _hx_run(::String a0,::String a1){
-            			HX_GC_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addCallRingingListener__fromC)
+            			HX_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addCallRingingListener__fromC)
 HXLINE( 221)			::cpp::Function< void  (const char*,const char*,void*) > handler1 = handler;
 HXLINE( 213)			const char* cStrPtr = a0.utf8_str();
 HXDLIN( 213)			::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(cStrPtr);
 HXDLIN( 213)			{
-HXLINE( 213)				 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 213)				int low = ptrInt64 & 0xffffffff;
-HXDLIN( 213)				int high = ptrInt64 >> 32;
-HXDLIN( 213)				 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 213)				if (::hx::IsNull( highMap )) {
-HXLINE( 213)					highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 213)					this1->set(low,highMap);
+HXLINE( 213)				 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 213)				if (::hx::IsNull( store )) {
+HXLINE( 213)					store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),a0));
+HXDLIN( 213)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            				}
+            				else {
+HXLINE( 213)					::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 213)				highMap->set(high,a0);
             			}
 HXDLIN( 213)			const char* cStrPtr1 = a1.utf8_str();
 HXDLIN( 213)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(cStrPtr1);
 HXDLIN( 213)			{
-HXLINE( 213)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 213)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 213)				int high1 = ptrInt641 >> 32;
-HXDLIN( 213)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 213)				if (::hx::IsNull( highMap1 )) {
-HXLINE( 213)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 213)					this2->set(low1,highMap1);
+HXLINE( 213)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 213)				if (::hx::IsNull( store1 )) {
+HXLINE( 213)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),a1));
+HXDLIN( 213)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXLINE( 213)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 213)				highMap1->set(high1,a1);
             			}
 HXLINE( 221)			handler1(cStrPtr,cStrPtr1,handler__context);
             		}
@@ -3571,17 +3682,62 @@ HXDLIN( 252)		this->addCallRingingListener( ::Dynamic(new _hx_Closure_0(handler,
             	}
 
 
+void Client_obj::addCallUpdateStatusListener( ::Dynamic handler){
+            		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::Dynamic,handler) HXARGC(1)
+            		 ::snikket::EventResult _hx_run( ::Dynamic data){
+            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1185_addCallUpdateStatusListener)
+HXLINE(1186)			handler( ::Dynamic(data->__Field(HX_("session",56,17,98,93),::hx::paccDynamic)));
+HXLINE(1187)			return ::snikket::EventResult_obj::EventHandled_dyn();
+            		}
+            		HX_END_LOCAL_FUNC1(return)
+
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1185_addCallUpdateStatusListener)
+HXDLIN(1185)		this->on(HX_("call/updateStatus",6c,f5,e6,ec), ::Dynamic(new _hx_Closure_0(handler)));
+            	}
+
+
+HX_DEFINE_DYNAMIC_FUNC1(Client_obj,addCallUpdateStatusListener,(void))
+
+void Client_obj::addCallUpdateStatusListener__fromC(::cpp::Function< void  (void*,void*) > handler,void* handler__context){
+            		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,::cpp::Function< void  (void* HX_COMMA void*) >,handler,void*,handler__context) HXARGC(1)
+            		void _hx_run( ::snikket::jingle::InitiatedSession a0){
+            			HX_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addCallUpdateStatusListener__fromC)
+HXLINE( 221)			::cpp::Function< void  (void*,void*) > handler1 = handler;
+HXLINE( 215)			 ::Dynamic haxeObject = a0;
+HXDLIN( 215)			void* ptr = haxeObject.mPtr;
+HXDLIN( 215)			::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
+HXDLIN( 215)			{
+HXLINE( 215)				 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 215)				if (::hx::IsNull( store )) {
+HXLINE( 215)					store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 215)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            				}
+            				else {
+HXLINE( 215)					::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
+            				}
+            			}
+HXLINE( 221)			handler1(ptr,handler__context);
+            		}
+            		HX_END_LOCAL_FUNC1((void))
+
+            	HX_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_252_addCallUpdateStatusListener__fromC)
+HXDLIN( 252)		this->addCallUpdateStatusListener( ::Dynamic(new _hx_Closure_0(handler,handler__context)));
+            	}
+
+
 void Client_obj::addCallMediaListener( ::Dynamic handler){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::Dynamic,handler) HXARGC(1)
             		 ::snikket::EventResult _hx_run( ::Dynamic data){
-            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1176_addCallMediaListener)
-HXLINE(1177)			handler( ::Dynamic(data->__Field(HX_("session",56,17,98,93),::hx::paccDynamic)), ::Dynamic(data->__Field(HX_("audio",d6,78,80,27),::hx::paccDynamic)), ::Dynamic(data->__Field(HX_("video",7b,14,fc,36),::hx::paccDynamic)));
-HXLINE(1178)			return ::snikket::EventResult_obj::EventHandled_dyn();
+            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1199_addCallMediaListener)
+HXLINE(1200)			handler( ::Dynamic(data->__Field(HX_("session",56,17,98,93),::hx::paccDynamic)), ::Dynamic(data->__Field(HX_("audio",d6,78,80,27),::hx::paccDynamic)), ::Dynamic(data->__Field(HX_("video",7b,14,fc,36),::hx::paccDynamic)));
+HXLINE(1201)			return ::snikket::EventResult_obj::EventHandled_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1176_addCallMediaListener)
-HXDLIN(1176)		this->on(HX_("call/media",73,5d,1d,c7), ::Dynamic(new _hx_Closure_0(handler)));
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1199_addCallMediaListener)
+HXDLIN(1199)		this->on(HX_("call/media",73,5d,1d,c7), ::Dynamic(new _hx_Closure_0(handler)));
             	}
 
 
@@ -3590,21 +3746,22 @@ HX_DEFINE_DYNAMIC_FUNC1(Client_obj,addCallMediaListener,(void))
 void Client_obj::addCallMediaListener__fromC(::cpp::Function< void  (void*,bool,bool,void*) > handler,void* handler__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,::cpp::Function< void  (void* HX_COMMA bool HX_COMMA bool HX_COMMA void*) >,handler,void*,handler__context) HXARGC(3)
             		void _hx_run( ::snikket::jingle::InitiatedSession a0,bool a1,bool a2){
-            			HX_GC_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addCallMediaListener__fromC)
+            			HX_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addCallMediaListener__fromC)
 HXLINE( 221)			::cpp::Function< void  (void*,bool,bool,void*) > handler1 = handler;
 HXLINE( 215)			 ::Dynamic haxeObject = a0;
 HXDLIN( 215)			void* ptr = haxeObject.mPtr;
 HXDLIN( 215)			::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 215)			{
-HXLINE( 215)				 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 215)				int low = ptrInt64 & 0xffffffff;
-HXDLIN( 215)				int high = ptrInt64 >> 32;
-HXDLIN( 215)				 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 215)				if (::hx::IsNull( highMap )) {
-HXLINE( 215)					highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 215)					this1->set(low,highMap);
+HXLINE( 215)				 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 215)				if (::hx::IsNull( store )) {
+HXLINE( 215)					store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 215)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            				}
+            				else {
+HXLINE( 215)					::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 215)				highMap->set(high,haxeObject);
             			}
 HXLINE( 221)			handler1(ptr,a1,a2,handler__context);
             		}
@@ -3618,14 +3775,14 @@ HXDLIN( 252)		this->addCallMediaListener( ::Dynamic(new _hx_Closure_0(handler,ha
 void Client_obj::addCallTrackListener( ::Dynamic handler){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::Dynamic,handler) HXARGC(1)
             		 ::snikket::EventResult _hx_run( ::Dynamic data){
-            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1189_addCallTrackListener)
-HXLINE(1190)			handler( ::Dynamic(data->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)), ::Dynamic(data->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic)), ::Dynamic(data->__Field(HX_("streams",f3,db,44,f6),::hx::paccDynamic)));
-HXLINE(1191)			return ::snikket::EventResult_obj::EventHandled_dyn();
+            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1212_addCallTrackListener)
+HXLINE(1213)			handler( ::Dynamic(data->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)), ::Dynamic(data->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic)), ::Dynamic(data->__Field(HX_("streams",f3,db,44,f6),::hx::paccDynamic)));
+HXLINE(1214)			return ::snikket::EventResult_obj::EventHandled_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1189_addCallTrackListener)
-HXDLIN(1189)		this->on(HX_("call/track",1a,e7,80,d7), ::Dynamic(new _hx_Closure_0(handler)));
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1212_addCallTrackListener)
+HXDLIN(1212)		this->on(HX_("call/track",1a,e7,80,d7), ::Dynamic(new _hx_Closure_0(handler)));
             	}
 
 
@@ -3634,35 +3791,37 @@ HX_DEFINE_DYNAMIC_FUNC1(Client_obj,addCallTrackListener,(void))
 void Client_obj::addCallTrackListener__fromC(::cpp::Function< void  (const char*,void*,void**,size_t,void*) > handler,void* handler__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,::cpp::Function< void  (const char* HX_COMMA void* HX_COMMA void** HX_COMMA size_t HX_COMMA void*) >,handler,void*,handler__context) HXARGC(3)
             		void _hx_run(::String a0, ::snikket::jingle::MediaStreamTrack a1,::Array< ::Dynamic> a2){
-            			HX_GC_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addCallTrackListener__fromC)
+            			HX_STACKFRAME(&_hx_pos_e44af0c967c6b6e2_221_addCallTrackListener__fromC)
 HXLINE( 221)			::cpp::Function< void  (const char*,void*,void**,size_t,void*) > handler1 = handler;
 HXLINE( 213)			const char* cStrPtr = a0.utf8_str();
 HXDLIN( 213)			::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(cStrPtr);
 HXDLIN( 213)			{
-HXLINE( 213)				 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 213)				int low = ptrInt64 & 0xffffffff;
-HXDLIN( 213)				int high = ptrInt64 >> 32;
-HXDLIN( 213)				 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 213)				if (::hx::IsNull( highMap )) {
-HXLINE( 213)					highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 213)					this1->set(low,highMap);
+HXLINE( 213)				 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 213)				if (::hx::IsNull( store )) {
+HXLINE( 213)					store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),a0));
+HXDLIN( 213)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            				}
+            				else {
+HXLINE( 213)					::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 213)				highMap->set(high,a0);
             			}
 HXDLIN( 213)			const char* _hx_tmp = cStrPtr;
 HXLINE( 215)			 ::Dynamic haxeObject = a1;
 HXDLIN( 215)			void* ptr = haxeObject.mPtr;
 HXDLIN( 215)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 215)			{
-HXLINE( 215)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 215)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 215)				int high1 = ptrInt641 >> 32;
-HXDLIN( 215)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 215)				if (::hx::IsNull( highMap1 )) {
-HXLINE( 215)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 215)					this2->set(low1,highMap1);
+HXLINE( 215)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 215)				if (::hx::IsNull( store1 )) {
+HXLINE( 215)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 215)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXLINE( 215)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 215)				highMap1->set(high1,haxeObject);
             			}
 HXDLIN( 215)			void* _hx_tmp1 = ptr;
 HXLINE( 211)			{
@@ -3675,15 +3834,16 @@ HXLINE( 211)						 ::Dynamic haxeObject1 = el;
 HXDLIN( 211)						void* ptr1 = haxeObject1.mPtr;
 HXDLIN( 211)						::cpp::Int64 ptrInt642 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 211)						{
-HXLINE( 211)							 ::haxe::ds::IntMap this3 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 211)							int low2 = ptrInt642 & 0xffffffff;
-HXDLIN( 211)							int high2 = ptrInt642 >> 32;
-HXDLIN( 211)							 ::haxe::ds::IntMap highMap2 = ( ( ::haxe::ds::IntMap)(this3->get(low2)) );
-HXDLIN( 211)							if (::hx::IsNull( highMap2 )) {
-HXLINE( 211)								highMap2 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 211)								this3->set(low2,highMap2);
+HXLINE( 211)							 ::Dynamic store2 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt642);
+HXDLIN( 211)							if (::hx::IsNull( store2 )) {
+HXLINE( 211)								store2 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject1));
+HXDLIN( 211)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt642,store2);
+            							}
+            							else {
+HXLINE( 211)								::hx::FieldRef((store2).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 211)							highMap2->set(high2,haxeObject1);
             						}
             					}
             				}
@@ -3691,15 +3851,16 @@ HXDLIN( 211)							highMap2->set(high2,haxeObject1);
 HXDLIN( 211)			void** ptr2 = (void**)a2->getBase();
 HXDLIN( 211)			::cpp::Int64 ptrInt643 = reinterpret_cast<int64_t>(ptr2);
 HXDLIN( 211)			{
-HXLINE( 211)				 ::haxe::ds::IntMap this4 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 211)				int low3 = ptrInt643 & 0xffffffff;
-HXDLIN( 211)				int high3 = ptrInt643 >> 32;
-HXDLIN( 211)				 ::haxe::ds::IntMap highMap3 = ( ( ::haxe::ds::IntMap)(this4->get(low3)) );
-HXDLIN( 211)				if (::hx::IsNull( highMap3 )) {
-HXLINE( 211)					highMap3 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 211)					this4->set(low3,highMap3);
+HXLINE( 211)				 ::Dynamic store3 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt643);
+HXDLIN( 211)				if (::hx::IsNull( store3 )) {
+HXLINE( 211)					store3 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),a2));
+HXDLIN( 211)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt643,store3);
+            				}
+            				else {
+HXLINE( 211)					::hx::FieldRef((store3).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 211)				highMap3->set(high3,a2);
             			}
 HXLINE( 221)			handler1(_hx_tmp,_hx_tmp1,ptr2,( (size_t)(a2->length) ),handler__context);
             		}
@@ -3711,12 +3872,12 @@ HXDLIN( 252)		this->addCallTrackListener( ::Dynamic(new _hx_Closure_0(handler,ha
 
 
 void Client_obj::setInForeground(){
-            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1198_setInForeground)
-HXLINE(1199)		if (!(this->stream->csi)) {
-HXLINE(1199)			return;
+            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1221_setInForeground)
+HXLINE(1222)		if (!(this->stream->csi)) {
+HXLINE(1222)			return;
             		}
-HXLINE(1200)		 ::snikket::GenericStream _hx_tmp = this->stream;
-HXDLIN(1200)		_hx_tmp->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("active",c6,41,46,16), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1223)		 ::snikket::GenericStream _hx_tmp = this->stream;
+HXDLIN(1223)		_hx_tmp->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("active",c6,41,46,16), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:csi:0",13,f1,6d,24)))));
             	}
 
@@ -3724,12 +3885,12 @@ HXDLIN(1200)		_hx_tmp->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("
 HX_DEFINE_DYNAMIC_FUNC0(Client_obj,setInForeground,(void))
 
 void Client_obj::setNotInForeground(){
-            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1206_setNotInForeground)
-HXLINE(1207)		if (!(this->stream->csi)) {
-HXLINE(1207)			return;
+            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1229_setNotInForeground)
+HXLINE(1230)		if (!(this->stream->csi)) {
+HXLINE(1230)			return;
             		}
-HXLINE(1208)		 ::snikket::GenericStream _hx_tmp = this->stream;
-HXDLIN(1208)		_hx_tmp->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("inactive",6b,17,30,6a), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1231)		 ::snikket::GenericStream _hx_tmp = this->stream;
+HXDLIN(1231)		_hx_tmp->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("inactive",6b,17,30,6a), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:csi:0",13,f1,6d,24)))));
             	}
 
@@ -3739,33 +3900,33 @@ HX_DEFINE_DYNAMIC_FUNC0(Client_obj,setNotInForeground,(void))
 ::Dynamic Client_obj::fetchMediaByHash(::Array< ::Dynamic> hashes,::Array< ::Dynamic> counterparts){
             		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             		 ::Dynamic _hx_run( ::Dynamic x){
-            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1216_fetchMediaByHash)
-HXLINE(1216)			return x;
+            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1239_fetchMediaByHash)
+HXLINE(1239)			return x;
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_1, ::snikket::Client,_gthis,::Array< ::Dynamic>,hashes,::Array< ::Dynamic>,counterparts) HXARGC(1)
             		::Dynamic _hx_run( ::Dynamic _){
-            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1216_fetchMediaByHash)
-HXLINE(1216)			 ::snikket::Client _gthis1 = _gthis;
-HXDLIN(1216)			::Array< ::Dynamic> hashes1 = hashes;
-HXDLIN(1216)			return _gthis1->fetchMediaByHash(hashes1,counterparts->slice(1,null()));
+            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1239_fetchMediaByHash)
+HXLINE(1239)			 ::snikket::Client _gthis1 = _gthis;
+HXDLIN(1239)			::Array< ::Dynamic> hashes1 = hashes;
+HXDLIN(1239)			return _gthis1->fetchMediaByHash(hashes1,counterparts->slice(1,null()));
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1212_fetchMediaByHash)
-HXDLIN(1212)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1215)		bool _hx_tmp;
-HXDLIN(1215)		if ((hashes->length >= 1)) {
-HXLINE(1215)			_hx_tmp = (counterparts->length < 1);
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1235_fetchMediaByHash)
+HXDLIN(1235)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1238)		bool _hx_tmp;
+HXDLIN(1238)		if ((hashes->length >= 1)) {
+HXLINE(1238)			_hx_tmp = (counterparts->length < 1);
             		}
             		else {
-HXLINE(1215)			_hx_tmp = true;
+HXLINE(1238)			_hx_tmp = true;
             		}
-HXDLIN(1215)		if (_hx_tmp) {
-HXLINE(1215)			return ::thenshim::_Promise::Promise_Impl__obj::reject(HX_("no counterparts left",64,15,a4,38));
+HXDLIN(1238)		if (_hx_tmp) {
+HXLINE(1238)			return ::thenshim::_Promise::Promise_Impl__obj::reject(HX_("no counterparts left",64,15,a4,38));
             		}
-HXLINE(1216)		return ::thenshim::_Promise::Promise_Impl__obj::then(this->fetchMediaByHashOneCounterpart(hashes,counterparts->__get(0).StaticCast<  ::snikket::JID >()), ::Dynamic(new _hx_Closure_0()), ::Dynamic(new _hx_Closure_1(_gthis,hashes,counterparts)));
+HXLINE(1239)		return ::thenshim::_Promise::Promise_Impl__obj::then(this->fetchMediaByHashOneCounterpart(hashes,counterparts->__get(0).StaticCast<  ::snikket::JID >()), ::Dynamic(new _hx_Closure_0()), ::Dynamic(new _hx_Closure_1(_gthis,hashes,counterparts)));
             	}
 
 
@@ -3774,8 +3935,8 @@ HX_DEFINE_DYNAMIC_FUNC2(Client_obj,fetchMediaByHash,return )
 ::Dynamic Client_obj::fetchMediaByHashOneCounterpart(::Array< ::Dynamic> hashes, ::snikket::JID counterpart){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::Client,_gthis,::Array< ::Dynamic>,hashes) HXARGC(2)
             		void _hx_run( ::Dynamic resolve, ::Dynamic reject){
-            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1223_fetchMediaByHashOneCounterpart)
-HXLINE(1223)			::snikket::Persistence_obj::hasMedia(_gthis->persistence,hashes->__get(0).StaticCast<  ::snikket::Hash >()->algorithm,hashes->__get(0).StaticCast<  ::snikket::Hash >()->hash,resolve);
+            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1246_fetchMediaByHashOneCounterpart)
+HXLINE(1246)			::snikket::Persistence_obj::hasMedia(_gthis->persistence,hashes->__get(0).StaticCast<  ::snikket::Hash >()->algorithm,hashes->__get(0).StaticCast<  ::snikket::Hash >()->hash,resolve);
             		}
             		HX_END_LOCAL_FUNC2((void))
 
@@ -3785,62 +3946,62 @@ HXLINE(1223)			::snikket::Persistence_obj::hasMedia(_gthis->persistence,hashes->
             			void _hx_run( ::Dynamic resolve, ::Dynamic reject){
             				HX_BEGIN_LOCAL_FUNC_S4(::hx::LocalFunc,_hx_Closure_2, ::snikket::Client,_gthis, ::Dynamic,resolve, ::Dynamic,reject, ::snikket::queries::BoB,q1) HXARGC(0)
             				void _hx_run(){
-            					HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1229_fetchMediaByHashOneCounterpart)
-HXLINE(1230)					 ::Dynamic r = q1->getResult();
-HXLINE(1231)					if (::hx::IsNull( r )) {
-HXLINE(1232)						reject(HX_("bad or no result from BoB query",ad,e0,04,ee));
+            					HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1252_fetchMediaByHashOneCounterpart)
+HXLINE(1253)					 ::Dynamic r = q1->getResult();
+HXLINE(1254)					if (::hx::IsNull( r )) {
+HXLINE(1255)						reject(HX_("bad or no result from BoB query",ad,e0,04,ee));
             					}
             					else {
             						HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_1, ::Dynamic,resolve) HXARGC(0)
             						void _hx_run(){
-            							HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1234_fetchMediaByHashOneCounterpart)
-HXLINE(1234)							resolve(null());
+            							HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1257_fetchMediaByHashOneCounterpart)
+HXLINE(1257)							resolve(null());
             						}
             						HX_END_LOCAL_FUNC0((void))
 
-HXLINE(1234)						::snikket::Persistence_obj::storeMedia(_gthis->persistence, ::Dynamic(r->__Field(HX_("type",ba,f2,08,4d),::hx::paccDynamic)),( ( ::haxe::io::Bytes)(r->__Field(HX_("bytes",6b,08,98,bd),::hx::paccDynamic)) )->b, ::Dynamic(new _hx_Closure_1(resolve)));
+HXLINE(1257)						::snikket::Persistence_obj::storeMedia(_gthis->persistence, ::Dynamic(r->__Field(HX_("type",ba,f2,08,4d),::hx::paccDynamic)),( ( ::haxe::io::Bytes)(r->__Field(HX_("bytes",6b,08,98,bd),::hx::paccDynamic)) )->b, ::Dynamic(new _hx_Closure_1(resolve)));
             					}
             				}
             				HX_END_LOCAL_FUNC0((void))
 
-            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1227_fetchMediaByHashOneCounterpart)
-HXLINE(1228)				::String q = counterpart->asString();
-HXDLIN(1228)				 ::snikket::queries::BoB q1 = ::snikket::queries::BoB_obj::forHash(q,hashes->__get(0).StaticCast<  ::snikket::Hash >());
-HXLINE(1229)				q1->onFinished( ::Dynamic(new _hx_Closure_2(_gthis,resolve,reject,q1)));
-HXLINE(1237)				_gthis->sendQuery(q1);
+            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1250_fetchMediaByHashOneCounterpart)
+HXLINE(1251)				::String q = counterpart->asString();
+HXDLIN(1251)				 ::snikket::queries::BoB q1 = ::snikket::queries::BoB_obj::forHash(q,hashes->__get(0).StaticCast<  ::snikket::Hash >());
+HXLINE(1252)				q1->onFinished( ::Dynamic(new _hx_Closure_2(_gthis,resolve,reject,q1)));
+HXLINE(1260)				_gthis->sendQuery(q1);
             			}
             			HX_END_LOCAL_FUNC2((void))
 
             			HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_4) HXARGC(1)
             			 ::Dynamic _hx_run( ::Dynamic x){
-            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1238_fetchMediaByHashOneCounterpart)
-HXLINE(1238)				return x;
+            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1261_fetchMediaByHashOneCounterpart)
+HXLINE(1261)				return x;
             			}
             			HX_END_LOCAL_FUNC1(return)
 
             			HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_5, ::snikket::JID,counterpart, ::snikket::Client,_gthis,::Array< ::Dynamic>,hashes) HXARGC(1)
             			::Dynamic _hx_run( ::Dynamic _){
-            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1238_fetchMediaByHashOneCounterpart)
-HXLINE(1238)				 ::snikket::Client _gthis1 = _gthis;
-HXDLIN(1238)				::Array< ::Dynamic> _hx_tmp = hashes->slice(1,null());
-HXDLIN(1238)				return _gthis1->fetchMediaByHashOneCounterpart(_hx_tmp,counterpart);
+            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1261_fetchMediaByHashOneCounterpart)
+HXLINE(1261)				 ::snikket::Client _gthis1 = _gthis;
+HXDLIN(1261)				::Array< ::Dynamic> _hx_tmp = hashes->slice(1,null());
+HXDLIN(1261)				return _gthis1->fetchMediaByHashOneCounterpart(_hx_tmp,counterpart);
             			}
             			HX_END_LOCAL_FUNC1(return)
 
-            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1224_fetchMediaByHashOneCounterpart)
-HXLINE(1225)			if (has) {
-HXLINE(1225)				return ::thenshim::_Promise::Promise_Impl__obj::resolve(null());
+            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1247_fetchMediaByHashOneCounterpart)
+HXLINE(1248)			if (has) {
+HXLINE(1248)				return ::thenshim::_Promise::Promise_Impl__obj::resolve(null());
             			}
-HXLINE(1227)			return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_3(counterpart,_gthis,hashes))), ::Dynamic(new _hx_Closure_4()), ::Dynamic(new _hx_Closure_5(counterpart,_gthis,hashes)));
+HXLINE(1250)			return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_3(counterpart,_gthis,hashes))), ::Dynamic(new _hx_Closure_4()), ::Dynamic(new _hx_Closure_5(counterpart,_gthis,hashes)));
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1219_fetchMediaByHashOneCounterpart)
-HXDLIN(1219)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1220)		if ((hashes->length < 1)) {
-HXLINE(1220)			return ::thenshim::_Promise::Promise_Impl__obj::reject(HX_("no hashes left",8c,68,e6,69));
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1242_fetchMediaByHashOneCounterpart)
+HXDLIN(1242)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1243)		if ((hashes->length < 1)) {
+HXLINE(1243)			return ::thenshim::_Promise::Promise_Impl__obj::reject(HX_("no hashes left",8c,68,e6,69));
             		}
-HXLINE(1222)		return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_0(_gthis,hashes))), ::Dynamic(new _hx_Closure_6(counterpart,_gthis,hashes)),null());
+HXLINE(1245)		return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_0(_gthis,hashes))), ::Dynamic(new _hx_Closure_6(counterpart,_gthis,hashes)),null());
             	}
 
 
@@ -3848,43 +4009,43 @@ HX_DEFINE_DYNAMIC_FUNC2(Client_obj,fetchMediaByHashOneCounterpart,return )
 
 void Client_obj::chatActivity( ::snikket::Chat chat,::hx::Null< bool >  __o_trigger){
             		bool trigger = __o_trigger.Default(true);
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1243_chatActivity)
-HXLINE(1244)		if (chat->isBlocked) {
-HXLINE(1244)			return;
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1266_chatActivity)
+HXLINE(1267)		if (chat->isBlocked) {
+HXLINE(1267)			return;
             		}
-HXLINE(1245)		if ((chat->uiState == 2)) {
-HXLINE(1246)			chat->uiState = 1;
-HXLINE(1247)			::Dynamic _hx_tmp = this->persistence;
-HXDLIN(1247)			::snikket::Persistence_obj::storeChats(_hx_tmp,this->accountId(),::Array_obj< ::Dynamic>::__new(1)->init(0,chat));
+HXLINE(1268)		if ((chat->uiState == 2)) {
+HXLINE(1269)			chat->uiState = 1;
+HXLINE(1270)			::Dynamic _hx_tmp = this->persistence;
+HXDLIN(1270)			::snikket::Persistence_obj::storeChats(_hx_tmp,this->accountId(),::Array_obj< ::Dynamic>::__new(1)->init(0,chat));
             		}
-HXLINE(1249)		int pinnedCount;
-HXDLIN(1249)		if ((chat->uiState == 0)) {
-HXLINE(1249)			pinnedCount = 0;
+HXLINE(1272)		int pinnedCount;
+HXDLIN(1272)		if ((chat->uiState == 0)) {
+HXLINE(1272)			pinnedCount = 0;
             		}
             		else {
             			HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(2)
             			int _hx_run( ::snikket::Chat item,int result){
-            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1249_chatActivity)
-HXLINE(1249)				int pinnedCount;
-HXDLIN(1249)				if ((item->uiState == 0)) {
-HXLINE(1249)					pinnedCount = 1;
+            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1272_chatActivity)
+HXLINE(1272)				int pinnedCount;
+HXDLIN(1272)				if ((item->uiState == 0)) {
+HXLINE(1272)					pinnedCount = 1;
             				}
             				else {
-HXLINE(1249)					pinnedCount = 0;
+HXLINE(1272)					pinnedCount = 0;
             				}
-HXDLIN(1249)				return (result + pinnedCount);
+HXDLIN(1272)				return (result + pinnedCount);
             			}
             			HX_END_LOCAL_FUNC2(return)
 
-HXLINE(1249)			pinnedCount = ( (int)(::Lambda_obj::fold(this->chats, ::Dynamic(new _hx_Closure_0()),0)) );
+HXLINE(1272)			pinnedCount = ( (int)(::Lambda_obj::fold(this->chats, ::Dynamic(new _hx_Closure_0()),0)) );
             		}
-HXLINE(1250)		int idx = this->chats->indexOf(chat,null());
-HXLINE(1251)		if ((idx > pinnedCount)) {
-HXLINE(1252)			this->chats->removeRange(idx,1);
-HXLINE(1253)			this->chats->insert(pinnedCount,chat);
+HXLINE(1273)		int idx = this->chats->indexOf(chat,null());
+HXLINE(1274)		if ((idx > pinnedCount)) {
+HXLINE(1275)			this->chats->removeRange(idx,1);
+HXLINE(1276)			this->chats->insert(pinnedCount,chat);
             		}
-HXLINE(1255)		if (trigger) {
-HXLINE(1255)			this->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,chat));
+HXLINE(1278)		if (trigger) {
+HXLINE(1278)			this->trigger(HX_("chats/update",3d,8e,1d,14),::cpp::VirtualArray_obj::__new(1)->init(0,chat));
             		}
             	}
 
@@ -3894,129 +4055,129 @@ HX_DEFINE_DYNAMIC_FUNC2(Client_obj,chatActivity,(void))
 void Client_obj::sortChats(){
             		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(2)
             		int _hx_run( ::snikket::Chat a, ::snikket::Chat b){
-            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1260_sortChats)
-HXLINE(1261)			bool _hx_tmp;
-HXDLIN(1261)			if ((a->uiState == 0)) {
-HXLINE(1261)				_hx_tmp = (b->uiState != 0);
+            			HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1283_sortChats)
+HXLINE(1284)			bool _hx_tmp;
+HXDLIN(1284)			if ((a->uiState == 0)) {
+HXLINE(1284)				_hx_tmp = (b->uiState != 0);
             			}
             			else {
-HXLINE(1261)				_hx_tmp = false;
+HXLINE(1284)				_hx_tmp = false;
             			}
-HXDLIN(1261)			if (_hx_tmp) {
-HXLINE(1261)				return -1;
+HXDLIN(1284)			if (_hx_tmp) {
+HXLINE(1284)				return -1;
             			}
-HXLINE(1262)			bool _hx_tmp1;
-HXDLIN(1262)			if ((b->uiState == 0)) {
-HXLINE(1262)				_hx_tmp1 = (a->uiState != 0);
+HXLINE(1285)			bool _hx_tmp1;
+HXDLIN(1285)			if ((b->uiState == 0)) {
+HXLINE(1285)				_hx_tmp1 = (a->uiState != 0);
             			}
             			else {
-HXLINE(1262)				_hx_tmp1 = false;
+HXLINE(1285)				_hx_tmp1 = false;
             			}
-HXDLIN(1262)			if (_hx_tmp1) {
-HXLINE(1262)				return 1;
+HXDLIN(1285)			if (_hx_tmp1) {
+HXLINE(1285)				return 1;
             			}
-HXLINE(1263)			::String _hx_tmp2;
-HXDLIN(1263)			::String tmp = a->lastMessageTimestamp();
-HXDLIN(1263)			if (::hx::IsNotNull( tmp )) {
-HXLINE(1263)				_hx_tmp2 = tmp;
+HXLINE(1286)			::String _hx_tmp2;
+HXDLIN(1286)			::String tmp = a->lastMessageTimestamp();
+HXDLIN(1286)			if (::hx::IsNotNull( tmp )) {
+HXLINE(1286)				_hx_tmp2 = tmp;
             			}
             			else {
-HXLINE(1263)				_hx_tmp2 = HX_("0",30,00,00,00);
+HXLINE(1286)				_hx_tmp2 = HX_("0",30,00,00,00);
             			}
-HXDLIN(1263)			::String tmp1 = b->lastMessageTimestamp();
-HXDLIN(1263)			::String _hx_tmp3;
-HXDLIN(1263)			if (::hx::IsNotNull( tmp1 )) {
-HXLINE(1263)				_hx_tmp3 = tmp1;
+HXDLIN(1286)			::String tmp1 = b->lastMessageTimestamp();
+HXDLIN(1286)			::String _hx_tmp3;
+HXDLIN(1286)			if (::hx::IsNotNull( tmp1 )) {
+HXLINE(1286)				_hx_tmp3 = tmp1;
             			}
             			else {
-HXLINE(1263)				_hx_tmp3 = HX_("0",30,00,00,00);
+HXLINE(1286)				_hx_tmp3 = HX_("0",30,00,00,00);
             			}
-HXDLIN(1263)			return -(::Reflect_obj::compare(_hx_tmp2,_hx_tmp3));
+HXDLIN(1286)			return -(::Reflect_obj::compare(_hx_tmp2,_hx_tmp3));
             		}
             		HX_END_LOCAL_FUNC2(return)
 
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1260_sortChats)
-HXDLIN(1260)		this->chats->sort( ::Dynamic(new _hx_Closure_0()));
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1283_sortChats)
+HXDLIN(1283)		this->chats->sort( ::Dynamic(new _hx_Closure_0()));
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(Client_obj,sortChats,(void))
 
 void Client_obj::storeMessages(::Array< ::Dynamic> messages, ::Dynamic callback){
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1269_storeMessages)
-HXDLIN(1269)		::Dynamic _hx_tmp = this->persistence;
-HXDLIN(1269)		::String _hx_tmp1 = this->accountId();
-HXDLIN(1269)		 ::Dynamic tmp = callback;
-HXDLIN(1269)		 ::Dynamic _hx_tmp2;
-HXDLIN(1269)		if (::hx::IsNotNull( tmp )) {
-HXDLIN(1269)			_hx_tmp2 = tmp;
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1292_storeMessages)
+HXDLIN(1292)		::Dynamic _hx_tmp = this->persistence;
+HXDLIN(1292)		::String _hx_tmp1 = this->accountId();
+HXDLIN(1292)		 ::Dynamic tmp = callback;
+HXDLIN(1292)		 ::Dynamic _hx_tmp2;
+HXDLIN(1292)		if (::hx::IsNotNull( tmp )) {
+HXDLIN(1292)			_hx_tmp2 = tmp;
             		}
             		else {
             			HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             			void _hx_run(::Array< ::Dynamic> _){
-            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1269_storeMessages)
+            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1292_storeMessages)
             			}
             			HX_END_LOCAL_FUNC1((void))
 
-HXDLIN(1269)			_hx_tmp2 =  ::Dynamic(new _hx_Closure_0());
+HXDLIN(1292)			_hx_tmp2 =  ::Dynamic(new _hx_Closure_0());
             		}
-HXDLIN(1269)		::snikket::Persistence_obj::storeMessages(_hx_tmp,_hx_tmp1,messages,_hx_tmp2);
+HXDLIN(1292)		::snikket::Persistence_obj::storeMessages(_hx_tmp,_hx_tmp1,messages,_hx_tmp2);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC2(Client_obj,storeMessages,(void))
 
 void Client_obj::sendQuery( ::snikket::queries::GenericQuery query){
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1274_sendQuery)
-HXDLIN(1274)		 ::snikket::GenericStream _hx_tmp = this->stream;
-HXDLIN(1274)		_hx_tmp->sendIq(query->getQueryStanza(),query->handleResponse_dyn());
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1297_sendQuery)
+HXDLIN(1297)		 ::snikket::GenericStream _hx_tmp = this->stream;
+HXDLIN(1297)		_hx_tmp->sendIq(query->getQueryStanza(),query->handleResponse_dyn());
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(Client_obj,sendQuery,(void))
 
 void Client_obj::sendStanza( ::snikket::Stanza stanza){
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1278_sendStanza)
-HXLINE(1279)		if (::hx::IsNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("id",db,5b,00,00))) ) )) {
-HXLINE(1279)			 ::Dynamic this1 = stanza->attr;
-HXDLIN(1279)			::String value = ::snikket::ID_obj::_hx_long();
-HXDLIN(1279)			::Reflect_obj::setField(this1,HX_("id",db,5b,00,00),value);
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1301_sendStanza)
+HXLINE(1302)		if (::hx::IsNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("id",db,5b,00,00))) ) )) {
+HXLINE(1302)			 ::Dynamic this1 = stanza->attr;
+HXDLIN(1302)			::String value = ::snikket::ID_obj::_hx_long();
+HXDLIN(1302)			::Reflect_obj::setField(this1,HX_("id",db,5b,00,00),value);
             		}
-HXLINE(1280)		this->stream->sendStanza(stanza);
+HXLINE(1303)		this->stream->sendStanza(stanza);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(Client_obj,sendStanza,(void))
 
 void Client_obj::sendPresence(::String to, ::Dynamic augment){
-            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1285_sendPresence)
-HXLINE(1286)		 ::Dynamic tmp = augment;
-HXDLIN(1286)		 ::Dynamic _hx_tmp;
-HXDLIN(1286)		if (::hx::IsNotNull( tmp )) {
-HXLINE(1286)			_hx_tmp = tmp;
+            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1308_sendPresence)
+HXLINE(1309)		 ::Dynamic tmp = augment;
+HXDLIN(1309)		 ::Dynamic _hx_tmp;
+HXDLIN(1309)		if (::hx::IsNotNull( tmp )) {
+HXLINE(1309)			_hx_tmp = tmp;
             		}
             		else {
             			HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             			 ::snikket::Stanza _hx_run( ::snikket::Stanza s){
-            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1286_sendPresence)
-HXLINE(1286)				return s;
+            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1309_sendPresence)
+HXLINE(1309)				return s;
             			}
             			HX_END_LOCAL_FUNC1(return)
 
-HXLINE(1286)			_hx_tmp =  ::Dynamic(new _hx_Closure_0());
+HXLINE(1309)			_hx_tmp =  ::Dynamic(new _hx_Closure_0());
             		}
-HXLINE(1287)		 ::snikket::Caps _hx_tmp1 = this->caps;
-HXDLIN(1287)		 ::Dynamic _hx_tmp2;
-HXDLIN(1287)		if (::hx::IsNull( to )) {
-HXLINE(1287)			_hx_tmp2 =  ::Dynamic(::hx::Anon_obj::Create(0));
+HXLINE(1310)		 ::snikket::Caps _hx_tmp1 = this->caps;
+HXDLIN(1310)		 ::Dynamic _hx_tmp2;
+HXDLIN(1310)		if (::hx::IsNull( to )) {
+HXLINE(1310)			_hx_tmp2 =  ::Dynamic(::hx::Anon_obj::Create(0));
             		}
             		else {
-HXLINE(1287)			_hx_tmp2 =  ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1310)			_hx_tmp2 =  ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("to",7b,65,00,00),to));
             		}
-HXDLIN(1287)		 ::snikket::Stanza _hx_tmp3 = _hx_tmp1->addC( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("presence",3b,52,d7,66),_hx_tmp2));
-HXLINE(1288)		::String _hx_tmp4 = this->displayName();
-HXLINE(1285)		this->sendStanza(( ( ::snikket::Stanza)(_hx_tmp(_hx_tmp3->textTag(HX_("nick",a3,7b,05,49),_hx_tmp4, ::Dynamic(::hx::Anon_obj::Create(1)
+HXDLIN(1310)		 ::snikket::Stanza _hx_tmp3 = _hx_tmp1->addC( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("presence",3b,52,d7,66),_hx_tmp2));
+HXLINE(1311)		::String _hx_tmp4 = this->displayName();
+HXLINE(1308)		this->sendStanza(( ( ::snikket::Stanza)(_hx_tmp(_hx_tmp3->textTag(HX_("nick",a3,7b,05,49),_hx_tmp4, ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("http://jabber.org/protocol/nick",17,30,dc,e9)))))) ));
             	}
 
@@ -4026,89 +4187,89 @@ HX_DEFINE_DYNAMIC_FUNC2(Client_obj,sendPresence,(void))
 void Client_obj::getIceServers( ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::queries::ExtDiscoGet,extDiscoGet, ::Dynamic,callback) HXARGC(0)
             		void _hx_run(){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1296_getIceServers)
-HXLINE(1297)			 ::haxe::ds::StringMap didUrl =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
-HXLINE(1298)			::Array< ::Dynamic> servers = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1299)			{
-HXLINE(1299)				int _g = 0;
-HXDLIN(1299)				::Array< ::Dynamic> _g1;
-HXDLIN(1299)				::Array< ::Dynamic> tmp = extDiscoGet->getResult();
-HXDLIN(1299)				if (::hx::IsNotNull( tmp )) {
-HXLINE(1299)					_g1 = tmp;
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1319_getIceServers)
+HXLINE(1320)			 ::haxe::ds::StringMap didUrl =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
+HXLINE(1321)			::Array< ::Dynamic> servers = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1322)			{
+HXLINE(1322)				int _g = 0;
+HXDLIN(1322)				::Array< ::Dynamic> _g1;
+HXDLIN(1322)				::Array< ::Dynamic> tmp = extDiscoGet->getResult();
+HXDLIN(1322)				if (::hx::IsNotNull( tmp )) {
+HXLINE(1322)					_g1 = tmp;
             				}
             				else {
-HXLINE(1299)					_g1 = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1322)					_g1 = ::Array_obj< ::Dynamic>::__new(0);
             				}
-HXDLIN(1299)				while((_g < _g1->length)){
-HXLINE(1299)					 ::snikket::Stanza service = _g1->__get(_g).StaticCast<  ::snikket::Stanza >();
-HXDLIN(1299)					_g = (_g + 1);
-HXLINE(1300)					if (!(::Array_obj< ::String >::fromData( _hx_array_data_7c06fe3c_192,4)->contains(( (::String)(::Reflect_obj::field(service->attr,HX_("type",ba,f2,08,4d))) )))) {
-HXLINE(1300)						continue;
+HXDLIN(1322)				while((_g < _g1->length)){
+HXLINE(1322)					 ::snikket::Stanza service = _g1->__get(_g).StaticCast<  ::snikket::Stanza >();
+HXDLIN(1322)					_g = (_g + 1);
+HXLINE(1323)					if (!(::Array_obj< ::String >::fromData( _hx_array_data_7c06fe3c_200,4)->contains(( (::String)(::Reflect_obj::field(service->attr,HX_("type",ba,f2,08,4d))) )))) {
+HXLINE(1323)						continue;
             					}
-HXLINE(1301)					::String host = ( (::String)(::Reflect_obj::field(service->attr,HX_("host",68,cf,12,45))) );
-HXLINE(1302)					bool _hx_tmp;
-HXDLIN(1302)					if (::hx::IsNotNull( host )) {
-HXLINE(1302)						_hx_tmp = (host == HX_("",00,00,00,00));
+HXLINE(1324)					::String host = ( (::String)(::Reflect_obj::field(service->attr,HX_("host",68,cf,12,45))) );
+HXLINE(1325)					bool _hx_tmp;
+HXDLIN(1325)					if (::hx::IsNotNull( host )) {
+HXLINE(1325)						_hx_tmp = (host == HX_("",00,00,00,00));
             					}
             					else {
-HXLINE(1302)						_hx_tmp = true;
+HXLINE(1325)						_hx_tmp = true;
             					}
-HXDLIN(1302)					if (_hx_tmp) {
-HXLINE(1302)						continue;
+HXDLIN(1325)					if (_hx_tmp) {
+HXLINE(1325)						continue;
             					}
-HXLINE(1303)					 ::Dynamic port = ::Std_obj::parseInt(( (::String)(::Reflect_obj::field(service->attr,HX_("port",81,83,5c,4a))) ));
-HXLINE(1304)					bool _hx_tmp1;
-HXDLIN(1304)					bool _hx_tmp2;
-HXDLIN(1304)					if (::hx::IsNotNull( port )) {
-HXLINE(1304)						_hx_tmp2 = ::hx::IsLess( port,1 );
+HXLINE(1326)					 ::Dynamic port = ::Std_obj::parseInt(( (::String)(::Reflect_obj::field(service->attr,HX_("port",81,83,5c,4a))) ));
+HXLINE(1327)					bool _hx_tmp1;
+HXDLIN(1327)					bool _hx_tmp2;
+HXDLIN(1327)					if (::hx::IsNotNull( port )) {
+HXLINE(1327)						_hx_tmp2 = ::hx::IsLess( port,1 );
             					}
             					else {
-HXLINE(1304)						_hx_tmp2 = true;
+HXLINE(1327)						_hx_tmp2 = true;
             					}
-HXDLIN(1304)					if (!(_hx_tmp2)) {
-HXLINE(1304)						_hx_tmp1 = ::hx::IsGreater( port,65535 );
+HXDLIN(1327)					if (!(_hx_tmp2)) {
+HXLINE(1327)						_hx_tmp1 = ::hx::IsGreater( port,65535 );
             					}
             					else {
-HXLINE(1304)						_hx_tmp1 = true;
+HXLINE(1327)						_hx_tmp1 = true;
             					}
-HXDLIN(1304)					if (_hx_tmp1) {
-HXLINE(1304)						continue;
+HXDLIN(1327)					if (_hx_tmp1) {
+HXLINE(1327)						continue;
             					}
-HXLINE(1305)					bool isTurn = ::Array_obj< ::String >::fromData( _hx_array_data_7c06fe3c_193,2)->contains(( (::String)(::Reflect_obj::field(service->attr,HX_("type",ba,f2,08,4d))) ));
-HXLINE(1306)					::String url = (( (::String)(::Reflect_obj::field(service->attr,HX_("type",ba,f2,08,4d))) ) + HX_(":",3a,00,00,00));
-HXDLIN(1306)					::String url1;
-HXDLIN(1306)					if ((host.indexOf(HX_(":",3a,00,00,00),null()) >= 0)) {
-HXLINE(1306)						url1 = ((HX_("[",5b,00,00,00) + host) + HX_("]",5d,00,00,00));
+HXLINE(1328)					bool isTurn = ::Array_obj< ::String >::fromData( _hx_array_data_7c06fe3c_201,2)->contains(( (::String)(::Reflect_obj::field(service->attr,HX_("type",ba,f2,08,4d))) ));
+HXLINE(1329)					::String url = (( (::String)(::Reflect_obj::field(service->attr,HX_("type",ba,f2,08,4d))) ) + HX_(":",3a,00,00,00));
+HXDLIN(1329)					::String url1;
+HXDLIN(1329)					if ((host.indexOf(HX_(":",3a,00,00,00),null()) >= 0)) {
+HXLINE(1329)						url1 = ((HX_("[",5b,00,00,00) + host) + HX_("]",5d,00,00,00));
             					}
             					else {
-HXLINE(1306)						url1 = host;
+HXLINE(1329)						url1 = host;
             					}
-HXDLIN(1306)					::String url2;
-HXDLIN(1306)					if (isTurn) {
-HXLINE(1306)						url2 = (HX_("?transport=",73,c9,f2,13) + ( (::String)(::Reflect_obj::field(service->attr,HX_("transport",a9,4f,2f,4c))) ));
+HXDLIN(1329)					::String url2;
+HXDLIN(1329)					if (isTurn) {
+HXLINE(1329)						url2 = (HX_("?transport=",73,c9,f2,13) + ( (::String)(::Reflect_obj::field(service->attr,HX_("transport",a9,4f,2f,4c))) ));
             					}
             					else {
-HXLINE(1306)						url2 = HX_("",00,00,00,00);
+HXLINE(1329)						url2 = HX_("",00,00,00,00);
             					}
-HXDLIN(1306)					::String url3 = ((((url + url1) + HX_(":",3a,00,00,00)) + port) + url2);
-HXLINE(1307)					if (!(didUrl->exists(url3))) {
-HXLINE(1309)						::String _hx_tmp3 = ( (::String)(::Reflect_obj::field(service->attr,HX_("username",16,86,eb,20))) );
-HXLINE(1308)						servers->push( ::Dynamic(::hx::Anon_obj::Create(3)
+HXDLIN(1329)					::String url3 = ((((url + url1) + HX_(":",3a,00,00,00)) + port) + url2);
+HXLINE(1330)					if (!(didUrl->exists(url3))) {
+HXLINE(1332)						::String _hx_tmp3 = ( (::String)(::Reflect_obj::field(service->attr,HX_("username",16,86,eb,20))) );
+HXLINE(1331)						servers->push( ::Dynamic(::hx::Anon_obj::Create(3)
             							->setFixed(0,HX_("credential",d7,89,b2,20),( (::String)(::Reflect_obj::field(service->attr,HX_("password",1b,23,d0,48))) ))
             							->setFixed(1,HX_("username",16,86,eb,20),_hx_tmp3)
             							->setFixed(2,HX_("urls",24,d6,ac,4d),::Array_obj< ::String >::__new(1)->init(0,url3))));
-HXLINE(1313)						didUrl->set(url3,true);
+HXLINE(1336)						didUrl->set(url3,true);
             					}
             				}
             			}
-HXLINE(1316)			callback(servers);
+HXLINE(1339)			callback(servers);
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1294_getIceServers)
-HXLINE(1295)		 ::snikket::queries::ExtDiscoGet extDiscoGet =  ::snikket::queries::ExtDiscoGet_obj::__alloc( HX_CTX ,this->jid->domain);
-HXLINE(1296)		extDiscoGet->onFinished( ::Dynamic(new _hx_Closure_0(extDiscoGet,callback)));
-HXLINE(1318)		this->sendQuery(extDiscoGet);
+            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1317_getIceServers)
+HXLINE(1318)		 ::snikket::queries::ExtDiscoGet extDiscoGet =  ::snikket::queries::ExtDiscoGet_obj::__alloc( HX_CTX ,this->jid->domain);
+HXLINE(1319)		extDiscoGet->onFinished( ::Dynamic(new _hx_Closure_0(extDiscoGet,callback)));
+HXLINE(1341)		this->sendQuery(extDiscoGet);
             	}
 
 
@@ -4117,66 +4278,66 @@ HX_DEFINE_DYNAMIC_FUNC1(Client_obj,getIceServers,(void))
 void Client_obj::discoverServices( ::snikket::JID target,::String node, ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_1, ::snikket::Client,_gthis, ::Dynamic,callback, ::snikket::queries::DiscoItemsGet,itemsGet) HXARGC(0)
             		void _hx_run(){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1325_discoverServices)
-HXLINE(1325)			int _g = 0;
-HXDLIN(1325)			::Array< ::Dynamic> _g1;
-HXDLIN(1325)			::Array< ::Dynamic> tmp = itemsGet->getResult();
-HXDLIN(1325)			if (::hx::IsNotNull( tmp )) {
-HXLINE(1325)				_g1 = tmp;
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1348_discoverServices)
+HXLINE(1348)			int _g = 0;
+HXDLIN(1348)			::Array< ::Dynamic> _g1;
+HXDLIN(1348)			::Array< ::Dynamic> tmp = itemsGet->getResult();
+HXDLIN(1348)			if (::hx::IsNotNull( tmp )) {
+HXLINE(1348)				_g1 = tmp;
             			}
             			else {
-HXLINE(1325)				_g1 = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1348)				_g1 = ::Array_obj< ::Dynamic>::__new(0);
             			}
-HXDLIN(1325)			while((_g < _g1->length)){
+HXDLIN(1348)			while((_g < _g1->length)){
             				HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_0, ::snikket::queries::DiscoInfoGet,infoGet1, ::Dynamic,item, ::Dynamic,callback) HXARGC(0)
             				void _hx_run(){
-            					HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1328_discoverServices)
-HXLINE(1328)					 ::Dynamic callback1 = callback;
-HXDLIN(1328)					 ::Dynamic item1 = item;
-HXDLIN(1328)					callback1(item1,infoGet1->getResult());
+            					HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1351_discoverServices)
+HXLINE(1351)					 ::Dynamic callback1 = callback;
+HXDLIN(1351)					 ::Dynamic item1 = item;
+HXDLIN(1351)					callback1(item1,infoGet1->getResult());
             				}
             				HX_END_LOCAL_FUNC0((void))
 
-HXLINE(1325)				 ::Dynamic item = _g1->__get(_g);
-HXDLIN(1325)				_g = (_g + 1);
-HXLINE(1326)				::String infoGet = ( ( ::snikket::JID)(item->__Field(HX_("jid",c5,ca,50,00),::hx::paccDynamic)) )->asString();
-HXDLIN(1326)				 ::snikket::queries::DiscoInfoGet infoGet1 =  ::snikket::queries::DiscoInfoGet_obj::__alloc( HX_CTX ,infoGet,( (::String)(item->__Field(HX_("node",02,0a,0a,49),::hx::paccDynamic)) ));
-HXLINE(1327)				infoGet1->onFinished( ::Dynamic(new _hx_Closure_0(infoGet1,item,callback)));
-HXLINE(1330)				_gthis->sendQuery(infoGet1);
+HXLINE(1348)				 ::Dynamic item = _g1->__get(_g);
+HXDLIN(1348)				_g = (_g + 1);
+HXLINE(1349)				::String infoGet = ( ( ::snikket::JID)(item->__Field(HX_("jid",c5,ca,50,00),::hx::paccDynamic)) )->asString();
+HXDLIN(1349)				 ::snikket::queries::DiscoInfoGet infoGet1 =  ::snikket::queries::DiscoInfoGet_obj::__alloc( HX_CTX ,infoGet,( (::String)(item->__Field(HX_("node",02,0a,0a,49),::hx::paccDynamic)) ));
+HXLINE(1350)				infoGet1->onFinished( ::Dynamic(new _hx_Closure_0(infoGet1,item,callback)));
+HXLINE(1353)				_gthis->sendQuery(infoGet1);
             			}
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1322_discoverServices)
-HXDLIN(1322)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1323)		 ::snikket::queries::DiscoItemsGet itemsGet =  ::snikket::queries::DiscoItemsGet_obj::__alloc( HX_CTX ,target->asString(),node);
-HXLINE(1324)		itemsGet->onFinished( ::Dynamic(new _hx_Closure_1(_gthis,callback,itemsGet)));
-HXLINE(1333)		this->sendQuery(itemsGet);
+            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1345_discoverServices)
+HXDLIN(1345)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1346)		 ::snikket::queries::DiscoItemsGet itemsGet =  ::snikket::queries::DiscoItemsGet_obj::__alloc( HX_CTX ,target->asString(),node);
+HXLINE(1347)		itemsGet->onFinished( ::Dynamic(new _hx_Closure_1(_gthis,callback,itemsGet)));
+HXLINE(1356)		this->sendQuery(itemsGet);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC3(Client_obj,discoverServices,(void))
 
 void Client_obj::notifyMessageHandlers( ::snikket::ChatMessage message,int event){
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1337_notifyMessageHandlers)
-HXLINE(1338)		 ::snikket::Chat chat = this->getChat(message->chatId());
-HXLINE(1339)		bool _hx_tmp;
-HXDLIN(1339)		if (::hx::IsNotNull( chat )) {
-HXLINE(1339)			_hx_tmp = chat->isBlocked;
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1360_notifyMessageHandlers)
+HXLINE(1361)		 ::snikket::Chat chat = this->getChat(message->chatId());
+HXLINE(1362)		bool _hx_tmp;
+HXDLIN(1362)		if (::hx::IsNotNull( chat )) {
+HXLINE(1362)			_hx_tmp = chat->isBlocked;
             		}
             		else {
-HXLINE(1339)			_hx_tmp = false;
+HXLINE(1362)			_hx_tmp = false;
             		}
-HXDLIN(1339)		if (_hx_tmp) {
-HXLINE(1339)			return;
+HXDLIN(1362)		if (_hx_tmp) {
+HXLINE(1362)			return;
             		}
-HXLINE(1340)		{
-HXLINE(1340)			int _g = 0;
-HXDLIN(1340)			::Array< ::Dynamic> _g1 = this->chatMessageHandlers;
-HXDLIN(1340)			while((_g < _g1->length)){
-HXLINE(1340)				 ::Dynamic handler = _g1->__get(_g);
-HXDLIN(1340)				_g = (_g + 1);
-HXLINE(1341)				handler(message,event);
+HXLINE(1363)		{
+HXLINE(1363)			int _g = 0;
+HXDLIN(1363)			::Array< ::Dynamic> _g1 = this->chatMessageHandlers;
+HXDLIN(1363)			while((_g < _g1->length)){
+HXLINE(1363)				 ::Dynamic handler = _g1->__get(_g);
+HXDLIN(1363)				_g = (_g + 1);
+HXLINE(1364)				handler(message,event);
             			}
             		}
             	}
@@ -4185,35 +4346,35 @@ HXLINE(1341)				handler(message,event);
 HX_DEFINE_DYNAMIC_FUNC2(Client_obj,notifyMessageHandlers,(void))
 
 void Client_obj::notifySyncMessageHandlers( ::snikket::ChatMessage message){
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1346_notifySyncMessageHandlers)
-HXLINE(1347)		bool _hx_tmp;
-HXDLIN(1347)		if (::hx::IsNotNull( message )) {
-HXLINE(1347)			_hx_tmp = (message->versions->length > 1);
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1369_notifySyncMessageHandlers)
+HXLINE(1370)		bool _hx_tmp;
+HXDLIN(1370)		if (::hx::IsNotNull( message )) {
+HXLINE(1370)			_hx_tmp = (message->versions->length > 1);
             		}
             		else {
-HXLINE(1347)			_hx_tmp = true;
+HXLINE(1370)			_hx_tmp = true;
             		}
-HXDLIN(1347)		if (_hx_tmp) {
-HXLINE(1347)			return;
+HXDLIN(1370)		if (_hx_tmp) {
+HXLINE(1370)			return;
             		}
-HXLINE(1348)		 ::snikket::Chat chat = this->getChat(message->chatId());
-HXLINE(1349)		bool _hx_tmp1;
-HXDLIN(1349)		if (::hx::IsNotNull( chat )) {
-HXLINE(1349)			_hx_tmp1 = chat->isBlocked;
+HXLINE(1371)		 ::snikket::Chat chat = this->getChat(message->chatId());
+HXLINE(1372)		bool _hx_tmp1;
+HXDLIN(1372)		if (::hx::IsNotNull( chat )) {
+HXLINE(1372)			_hx_tmp1 = chat->isBlocked;
             		}
             		else {
-HXLINE(1349)			_hx_tmp1 = false;
+HXLINE(1372)			_hx_tmp1 = false;
             		}
-HXDLIN(1349)		if (_hx_tmp1) {
-HXLINE(1349)			return;
+HXDLIN(1372)		if (_hx_tmp1) {
+HXLINE(1372)			return;
             		}
-HXLINE(1350)		{
-HXLINE(1350)			int _g = 0;
-HXDLIN(1350)			::Array< ::Dynamic> _g1 = this->syncMessageHandlers;
-HXDLIN(1350)			while((_g < _g1->length)){
-HXLINE(1350)				 ::Dynamic handler = _g1->__get(_g);
-HXDLIN(1350)				_g = (_g + 1);
-HXLINE(1351)				handler(message);
+HXLINE(1373)		{
+HXLINE(1373)			int _g = 0;
+HXDLIN(1373)			::Array< ::Dynamic> _g1 = this->syncMessageHandlers;
+HXDLIN(1373)			while((_g < _g1->length)){
+HXLINE(1373)				 ::Dynamic handler = _g1->__get(_g);
+HXDLIN(1373)				_g = (_g + 1);
+HXLINE(1374)				handler(message);
             			}
             		}
             	}
@@ -4224,30 +4385,30 @@ HX_DEFINE_DYNAMIC_FUNC1(Client_obj,notifySyncMessageHandlers,(void))
 void Client_obj::rosterGet(){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::Client,_gthis, ::snikket::queries::RosterGet,rosterGet) HXARGC(0)
             		void _hx_run(){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1357_rosterGet)
-HXLINE(1358)			::Array< ::Dynamic> chatsToUpdate = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1359)			{
-HXLINE(1359)				int _g = 0;
-HXDLIN(1359)				::Array< ::Dynamic> _g1 = rosterGet->getResult();
-HXDLIN(1359)				while((_g < _g1->length)){
-HXLINE(1359)					 ::Dynamic item = _g1->__get(_g);
-HXDLIN(1359)					_g = (_g + 1);
-HXLINE(1360)					 ::snikket::DirectChat chat = _gthis->getDirectChat(( (::String)(item->__Field(HX_("jid",c5,ca,50,00),::hx::paccDynamic)) ),false);
-HXLINE(1361)					chat->updateFromRoster(item);
-HXLINE(1362)					chatsToUpdate->push(chat);
-            				}
-            			}
-HXLINE(1364)			::Dynamic _gthis1 = _gthis->persistence;
-HXDLIN(1364)			::snikket::Persistence_obj::storeChats(_gthis1,_gthis->accountId(),chatsToUpdate);
-HXLINE(1365)			_gthis->trigger(HX_("chats/update",3d,8e,1d,14),chatsToUpdate);
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1380_rosterGet)
+HXLINE(1381)			::Array< ::Dynamic> chatsToUpdate = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1382)			{
+HXLINE(1382)				int _g = 0;
+HXDLIN(1382)				::Array< ::Dynamic> _g1 = rosterGet->getResult();
+HXDLIN(1382)				while((_g < _g1->length)){
+HXLINE(1382)					 ::Dynamic item = _g1->__get(_g);
+HXDLIN(1382)					_g = (_g + 1);
+HXLINE(1383)					 ::snikket::DirectChat chat = _gthis->getDirectChat(( (::String)(item->__Field(HX_("jid",c5,ca,50,00),::hx::paccDynamic)) ),false);
+HXLINE(1384)					chat->updateFromRoster(item);
+HXLINE(1385)					chatsToUpdate->push(chat);
+            				}
+            			}
+HXLINE(1387)			::Dynamic _gthis1 = _gthis->persistence;
+HXDLIN(1387)			::snikket::Persistence_obj::storeChats(_gthis1,_gthis->accountId(),chatsToUpdate);
+HXLINE(1388)			_gthis->trigger(HX_("chats/update",3d,8e,1d,14),chatsToUpdate);
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1355_rosterGet)
-HXDLIN(1355)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1356)		 ::snikket::queries::RosterGet rosterGet =  ::snikket::queries::RosterGet_obj::__alloc( HX_CTX ,null());
-HXLINE(1357)		rosterGet->onFinished( ::Dynamic(new _hx_Closure_0(_gthis,rosterGet)));
-HXLINE(1367)		this->sendQuery(rosterGet);
+            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1378_rosterGet)
+HXDLIN(1378)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1379)		 ::snikket::queries::RosterGet rosterGet =  ::snikket::queries::RosterGet_obj::__alloc( HX_CTX ,null());
+HXLINE(1380)		rosterGet->onFinished( ::Dynamic(new _hx_Closure_0(_gthis,rosterGet)));
+HXLINE(1390)		this->sendQuery(rosterGet);
             	}
 
 
@@ -4256,100 +4417,100 @@ HX_DEFINE_DYNAMIC_FUNC0(Client_obj,rosterGet,(void))
 void Client_obj::startChatWith(::String jid, ::Dynamic handleCaps, ::Dynamic handleChat){
             		HX_BEGIN_LOCAL_FUNC_S5(::hx::LocalFunc,_hx_Closure_0, ::snikket::Client,_gthis, ::Dynamic,handleChat, ::Dynamic,handleCaps, ::snikket::queries::DiscoInfoGet,discoGet,::String,jid) HXARGC(0)
             		void _hx_run(){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1372_startChatWith)
-HXLINE(1373)			 ::snikket::Caps resultCaps = discoGet->getResult();
-HXLINE(1374)			if (::hx::IsNull( resultCaps )) {
-HXLINE(1375)				 ::snikket::Stanza tmp = discoGet->responseStanza;
-HXDLIN(1375)				 ::snikket::Stanza tmp1;
-HXDLIN(1375)				if (::hx::IsNotNull( tmp )) {
-HXLINE(1375)					tmp1 = tmp->getChild(HX_("error",c8,cb,29,73),null());
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1395_startChatWith)
+HXLINE(1396)			 ::snikket::Caps resultCaps = discoGet->getResult();
+HXLINE(1397)			if (::hx::IsNull( resultCaps )) {
+HXLINE(1398)				 ::snikket::Stanza tmp = discoGet->responseStanza;
+HXDLIN(1398)				 ::snikket::Stanza tmp1;
+HXDLIN(1398)				if (::hx::IsNotNull( tmp )) {
+HXLINE(1398)					tmp1 = tmp->getChild(HX_("error",c8,cb,29,73),null());
             				}
             				else {
-HXLINE(1375)					tmp1 = null();
+HXLINE(1398)					tmp1 = null();
             				}
-HXDLIN(1375)				 ::snikket::Stanza err;
-HXDLIN(1375)				if (::hx::IsNotNull( tmp1 )) {
-HXLINE(1375)					err = tmp1->getChild(null(),HX_("urn:ietf:params:xml:ns:xmpp-stanzas",27,f2,3d,30));
+HXDLIN(1398)				 ::snikket::Stanza err;
+HXDLIN(1398)				if (::hx::IsNotNull( tmp1 )) {
+HXLINE(1398)					err = tmp1->getChild(null(),HX_("urn:ietf:params:xml:ns:xmpp-stanzas",27,f2,3d,30));
             				}
             				else {
-HXLINE(1375)					err = null();
-            				}
-HXLINE(1376)				bool _hx_tmp;
-HXDLIN(1376)				bool _hx_tmp1;
-HXDLIN(1376)				if (::hx::IsNotNull( err )) {
-HXLINE(1376)					::String _hx_tmp2;
-HXDLIN(1376)					if (::hx::IsNotNull( err )) {
-HXLINE(1376)						_hx_tmp2 = err->name;
+HXLINE(1398)					err = null();
+            				}
+HXLINE(1399)				bool _hx_tmp;
+HXDLIN(1399)				bool _hx_tmp1;
+HXDLIN(1399)				if (::hx::IsNotNull( err )) {
+HXLINE(1399)					::String _hx_tmp2;
+HXDLIN(1399)					if (::hx::IsNotNull( err )) {
+HXLINE(1399)						_hx_tmp2 = err->name;
             					}
             					else {
-HXLINE(1376)						_hx_tmp2 = null();
+HXLINE(1399)						_hx_tmp2 = null();
             					}
-HXDLIN(1376)					_hx_tmp1 = (_hx_tmp2 == HX_("service-unavailable",f8,3c,11,1c));
+HXDLIN(1399)					_hx_tmp1 = (_hx_tmp2 == HX_("service-unavailable",f8,3c,11,1c));
             				}
             				else {
-HXLINE(1376)					_hx_tmp1 = true;
+HXLINE(1399)					_hx_tmp1 = true;
             				}
-HXDLIN(1376)				if (!(_hx_tmp1)) {
-HXLINE(1376)					::String _hx_tmp3;
-HXDLIN(1376)					if (::hx::IsNotNull( err )) {
-HXLINE(1376)						_hx_tmp3 = err->name;
+HXDLIN(1399)				if (!(_hx_tmp1)) {
+HXLINE(1399)					::String _hx_tmp3;
+HXDLIN(1399)					if (::hx::IsNotNull( err )) {
+HXLINE(1399)						_hx_tmp3 = err->name;
             					}
             					else {
-HXLINE(1376)						_hx_tmp3 = null();
+HXLINE(1399)						_hx_tmp3 = null();
             					}
-HXDLIN(1376)					_hx_tmp = (_hx_tmp3 == HX_("feature-not-implemented",71,20,2e,96));
+HXDLIN(1399)					_hx_tmp = (_hx_tmp3 == HX_("feature-not-implemented",71,20,2e,96));
             				}
             				else {
-HXLINE(1376)					_hx_tmp = true;
+HXLINE(1399)					_hx_tmp = true;
             				}
-HXDLIN(1376)				if (_hx_tmp) {
-HXLINE(1377)					 ::snikket::DirectChat chat = _gthis->getDirectChat(jid,false);
-HXLINE(1378)					handleChat(chat);
-HXLINE(1379)					::Dynamic _gthis1 = _gthis->persistence;
-HXDLIN(1379)					::snikket::Persistence_obj::storeChats(_gthis1,_gthis->accountId(),::Array_obj< ::Dynamic>::__new(1)->init(0,chat));
+HXDLIN(1399)				if (_hx_tmp) {
+HXLINE(1400)					 ::snikket::DirectChat chat = _gthis->getDirectChat(jid,false);
+HXLINE(1401)					handleChat(chat);
+HXLINE(1402)					::Dynamic _gthis1 = _gthis->persistence;
+HXDLIN(1402)					::snikket::Persistence_obj::storeChats(_gthis1,_gthis->accountId(),::Array_obj< ::Dynamic>::__new(1)->init(0,chat));
             				}
             			}
             			else {
-HXLINE(1382)				::snikket::Persistence_obj::storeCaps(_gthis->persistence,resultCaps);
-HXLINE(1383)				int uiState = ( (int)(handleCaps(resultCaps)) );
-HXLINE(1384)				if (resultCaps->isChannel(jid)) {
-HXLINE(1385)					 ::snikket::Channel chat1 =  ::snikket::Channel_obj::__alloc( HX_CTX ,_gthis,_gthis->stream,_gthis->persistence,jid,uiState,false,null(),null(),null(),resultCaps);
-HXLINE(1386)					handleChat(chat1);
-HXLINE(1387)					_gthis->chats->unshift(chat1);
-HXLINE(1388)					::Dynamic _gthis2 = _gthis->persistence;
-HXDLIN(1388)					::snikket::Persistence_obj::storeChats(_gthis2,_gthis->accountId(),::Array_obj< ::Dynamic>::__new(1)->init(0,chat1));
+HXLINE(1405)				::snikket::Persistence_obj::storeCaps(_gthis->persistence,resultCaps);
+HXLINE(1406)				int uiState = ( (int)(handleCaps(resultCaps)) );
+HXLINE(1407)				if (resultCaps->isChannel(jid)) {
+HXLINE(1408)					 ::snikket::Channel chat1 =  ::snikket::Channel_obj::__alloc( HX_CTX ,_gthis,_gthis->stream,_gthis->persistence,jid,uiState,false,null(),null(),null(),resultCaps);
+HXLINE(1409)					handleChat(chat1);
+HXLINE(1410)					_gthis->chats->unshift(chat1);
+HXLINE(1411)					::Dynamic _gthis2 = _gthis->persistence;
+HXDLIN(1411)					::snikket::Persistence_obj::storeChats(_gthis2,_gthis->accountId(),::Array_obj< ::Dynamic>::__new(1)->init(0,chat1));
             				}
             				else {
-HXLINE(1390)					 ::snikket::DirectChat chat2 = _gthis->getDirectChat(jid,false);
-HXLINE(1391)					handleChat(chat2);
-HXLINE(1392)					::Dynamic _gthis3 = _gthis->persistence;
-HXDLIN(1392)					::snikket::Persistence_obj::storeChats(_gthis3,_gthis->accountId(),::Array_obj< ::Dynamic>::__new(1)->init(0,chat2));
+HXLINE(1413)					 ::snikket::DirectChat chat2 = _gthis->getDirectChat(jid,false);
+HXLINE(1414)					handleChat(chat2);
+HXLINE(1415)					::Dynamic _gthis3 = _gthis->persistence;
+HXDLIN(1415)					::snikket::Persistence_obj::storeChats(_gthis3,_gthis->accountId(),::Array_obj< ::Dynamic>::__new(1)->init(0,chat2));
             				}
             			}
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1370_startChatWith)
-HXDLIN(1370)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1371)		 ::snikket::queries::DiscoInfoGet discoGet =  ::snikket::queries::DiscoInfoGet_obj::__alloc( HX_CTX ,jid,null());
-HXLINE(1372)		discoGet->onFinished( ::Dynamic(new _hx_Closure_0(_gthis,handleChat,handleCaps,discoGet,jid)));
-HXLINE(1396)		this->sendQuery(discoGet);
+            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1393_startChatWith)
+HXDLIN(1393)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1394)		 ::snikket::queries::DiscoInfoGet discoGet =  ::snikket::queries::DiscoInfoGet_obj::__alloc( HX_CTX ,jid,null());
+HXLINE(1395)		discoGet->onFinished( ::Dynamic(new _hx_Closure_0(_gthis,handleChat,handleCaps,discoGet,jid)));
+HXLINE(1419)		this->sendQuery(discoGet);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC3(Client_obj,startChatWith,(void))
 
 void Client_obj::serverBlocked(::String blocked){
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1399_serverBlocked)
-HXLINE(1400)		 ::snikket::Chat chat;
-HXDLIN(1400)		 ::snikket::Chat tmp = this->getChat(blocked);
-HXDLIN(1400)		if (::hx::IsNotNull( tmp )) {
-HXLINE(1400)			chat = tmp;
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1422_serverBlocked)
+HXLINE(1423)		 ::snikket::Chat chat;
+HXDLIN(1423)		 ::snikket::Chat tmp = this->getChat(blocked);
+HXDLIN(1423)		if (::hx::IsNotNull( tmp )) {
+HXLINE(1423)			chat = tmp;
             		}
             		else {
-HXLINE(1400)			chat = this->getDirectChat(blocked,false);
+HXLINE(1423)			chat = this->getDirectChat(blocked,false);
             		}
-HXLINE(1401)		chat->block(null(),false);
+HXLINE(1424)		chat->block(null(),false);
             	}
 
 
@@ -4358,178 +4519,178 @@ HX_DEFINE_DYNAMIC_FUNC1(Client_obj,serverBlocked,(void))
 void Client_obj::bookmarksGet( ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::Client,_gthis, ::snikket::queries::BlocklistGet,blockingGet) HXARGC(0)
             		void _hx_run(){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1408_bookmarksGet)
-HXLINE(1408)			int _g = 0;
-HXDLIN(1408)			::Array< ::String > _g1 = blockingGet->getResult();
-HXDLIN(1408)			while((_g < _g1->length)){
-HXLINE(1408)				::String blocked = _g1->__get(_g);
-HXDLIN(1408)				_g = (_g + 1);
-HXLINE(1409)				_gthis->serverBlocked(blocked);
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1431_bookmarksGet)
+HXLINE(1431)			int _g = 0;
+HXDLIN(1431)			::Array< ::String > _g1 = blockingGet->getResult();
+HXDLIN(1431)			while((_g < _g1->length)){
+HXLINE(1431)				::String blocked = _g1->__get(_g);
+HXDLIN(1431)				_g = (_g + 1);
+HXLINE(1432)				_gthis->serverBlocked(blocked);
             			}
             		}
             		HX_END_LOCAL_FUNC0((void))
 
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_3, ::snikket::Client,_gthis, ::snikket::queries::PubsubGet,mdsGet) HXARGC(0)
             		void _hx_run(){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1415_bookmarksGet)
-HXLINE(1416)			::Array< ::Dynamic> chatsToUpdate = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1417)			{
-HXLINE(1417)				int _g = 0;
-HXDLIN(1417)				::Array< ::Dynamic> _g1 = mdsGet->getResult();
-HXDLIN(1417)				while((_g < _g1->length)){
-HXLINE(1417)					 ::snikket::Stanza item = _g1->__get(_g).StaticCast<  ::snikket::Stanza >();
-HXDLIN(1417)					_g = (_g + 1);
-HXLINE(1418)					if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(item->attr,HX_("id",db,5b,00,00))) ) )) {
-HXLINE(1419)						 ::snikket::Stanza tmp = item->getChild(HX_("displayed",21,17,db,c1),HX_("urn:xmpp:mds:displayed:0",bd,60,cc,fb));
-HXDLIN(1419)						 ::snikket::Stanza upTo;
-HXDLIN(1419)						if (::hx::IsNotNull( tmp )) {
-HXLINE(1419)							upTo = tmp->getChild(HX_("stanza-id",73,8a,54,e9),HX_("urn:xmpp:sid:0",a8,4b,37,54));
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1438_bookmarksGet)
+HXLINE(1439)			::Array< ::Dynamic> chatsToUpdate = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1440)			{
+HXLINE(1440)				int _g = 0;
+HXDLIN(1440)				::Array< ::Dynamic> _g1 = mdsGet->getResult();
+HXDLIN(1440)				while((_g < _g1->length)){
+HXLINE(1440)					 ::snikket::Stanza item = _g1->__get(_g).StaticCast<  ::snikket::Stanza >();
+HXDLIN(1440)					_g = (_g + 1);
+HXLINE(1441)					if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(item->attr,HX_("id",db,5b,00,00))) ) )) {
+HXLINE(1442)						 ::snikket::Stanza tmp = item->getChild(HX_("displayed",21,17,db,c1),HX_("urn:xmpp:mds:displayed:0",bd,60,cc,fb));
+HXDLIN(1442)						 ::snikket::Stanza upTo;
+HXDLIN(1442)						if (::hx::IsNotNull( tmp )) {
+HXLINE(1442)							upTo = tmp->getChild(HX_("stanza-id",73,8a,54,e9),HX_("urn:xmpp:sid:0",a8,4b,37,54));
             						}
             						else {
-HXLINE(1419)							upTo = null();
+HXLINE(1442)							upTo = null();
             						}
-HXLINE(1420)						 ::snikket::Client _gthis1 = _gthis;
-HXDLIN(1420)						 ::snikket::Chat chat = _gthis1->getChat(( (::String)(::Reflect_obj::field(item->attr,HX_("id",db,5b,00,00))) ));
-HXLINE(1421)						if (::hx::IsNull( chat )) {
+HXLINE(1443)						 ::snikket::Client _gthis1 = _gthis;
+HXDLIN(1443)						 ::snikket::Chat chat = _gthis1->getChat(( (::String)(::Reflect_obj::field(item->attr,HX_("id",db,5b,00,00))) ));
+HXLINE(1444)						if (::hx::IsNull( chat )) {
             							HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_1) HXARGC(1)
             							int _hx_run( ::snikket::Caps caps){
-            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1422_bookmarksGet)
-HXLINE(1422)								return 2;
+            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1445_bookmarksGet)
+HXLINE(1445)								return 2;
             							}
             							HX_END_LOCAL_FUNC1(return)
 
             							HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_2, ::snikket::Stanza,upTo) HXARGC(1)
             							void _hx_run( ::snikket::Chat chat){
-            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1422_bookmarksGet)
-HXLINE(1422)								::String _hx_tmp = ( (::String)(::Reflect_obj::field(upTo->attr,HX_("id",db,5b,00,00))) );
-HXDLIN(1422)								chat->markReadUpToId(_hx_tmp,( (::String)(::Reflect_obj::field(upTo->attr,HX_("by",d7,55,00,00))) ),null());
+            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1445_bookmarksGet)
+HXLINE(1445)								::String _hx_tmp = ( (::String)(::Reflect_obj::field(upTo->attr,HX_("id",db,5b,00,00))) );
+HXDLIN(1445)								chat->markReadUpToId(_hx_tmp,( (::String)(::Reflect_obj::field(upTo->attr,HX_("by",d7,55,00,00))) ),null());
             							}
             							HX_END_LOCAL_FUNC1((void))
 
-HXLINE(1422)							 ::snikket::Client _gthis2 = _gthis;
-HXDLIN(1422)							_gthis2->startChatWith(( (::String)(::Reflect_obj::field(item->attr,HX_("id",db,5b,00,00))) ), ::Dynamic(new _hx_Closure_1()), ::Dynamic(new _hx_Closure_2(upTo)));
+HXLINE(1445)							 ::snikket::Client _gthis2 = _gthis;
+HXDLIN(1445)							_gthis2->startChatWith(( (::String)(::Reflect_obj::field(item->attr,HX_("id",db,5b,00,00))) ), ::Dynamic(new _hx_Closure_1()), ::Dynamic(new _hx_Closure_2(upTo)));
             						}
             						else {
-HXLINE(1424)							::String _hx_tmp = ( (::String)(::Reflect_obj::field(upTo->attr,HX_("id",db,5b,00,00))) );
-HXDLIN(1424)							chat->markReadUpToId(_hx_tmp,( (::String)(::Reflect_obj::field(upTo->attr,HX_("by",d7,55,00,00))) ),null());
-HXLINE(1425)							chatsToUpdate->push(chat);
+HXLINE(1447)							::String _hx_tmp = ( (::String)(::Reflect_obj::field(upTo->attr,HX_("id",db,5b,00,00))) );
+HXDLIN(1447)							chat->markReadUpToId(_hx_tmp,( (::String)(::Reflect_obj::field(upTo->attr,HX_("by",d7,55,00,00))) ),null());
+HXLINE(1448)							chatsToUpdate->push(chat);
             						}
             					}
             				}
             			}
-HXLINE(1429)			::Dynamic _gthis3 = _gthis->persistence;
-HXDLIN(1429)			::snikket::Persistence_obj::storeChats(_gthis3,_gthis->accountId(),chatsToUpdate);
+HXLINE(1452)			::Dynamic _gthis3 = _gthis->persistence;
+HXDLIN(1452)			::snikket::Persistence_obj::storeChats(_gthis3,_gthis->accountId(),chatsToUpdate);
             		}
             		HX_END_LOCAL_FUNC0((void))
 
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_6, ::snikket::Client,_gthis, ::snikket::queries::PubsubGet,pubsubGet, ::Dynamic,callback) HXARGC(0)
             		void _hx_run(){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1434_bookmarksGet)
-HXLINE(1435)			::Array< ::Dynamic> chatsToUpdate = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1436)			{
-HXLINE(1436)				int _g = 0;
-HXDLIN(1436)				::Array< ::Dynamic> _g1 = pubsubGet->getResult();
-HXDLIN(1436)				while((_g < _g1->length)){
-HXLINE(1436)					 ::snikket::Stanza item = _g1->__get(_g).StaticCast<  ::snikket::Stanza >();
-HXDLIN(1436)					_g = (_g + 1);
-HXLINE(1437)					if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(item->attr,HX_("id",db,5b,00,00))) ) )) {
-HXLINE(1438)						 ::snikket::Client _gthis1 = _gthis;
-HXDLIN(1438)						 ::snikket::Chat chat = _gthis1->getChat(( (::String)(::Reflect_obj::field(item->attr,HX_("id",db,5b,00,00))) ));
-HXLINE(1439)						if (::hx::IsNull( chat )) {
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1457_bookmarksGet)
+HXLINE(1458)			::Array< ::Dynamic> chatsToUpdate = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1459)			{
+HXLINE(1459)				int _g = 0;
+HXDLIN(1459)				::Array< ::Dynamic> _g1 = pubsubGet->getResult();
+HXDLIN(1459)				while((_g < _g1->length)){
+HXLINE(1459)					 ::snikket::Stanza item = _g1->__get(_g).StaticCast<  ::snikket::Stanza >();
+HXDLIN(1459)					_g = (_g + 1);
+HXLINE(1460)					if (::hx::IsNotNull( ( (::String)(::Reflect_obj::field(item->attr,HX_("id",db,5b,00,00))) ) )) {
+HXLINE(1461)						 ::snikket::Client _gthis1 = _gthis;
+HXDLIN(1461)						 ::snikket::Chat chat = _gthis1->getChat(( (::String)(::Reflect_obj::field(item->attr,HX_("id",db,5b,00,00))) ));
+HXLINE(1462)						if (::hx::IsNull( chat )) {
             							HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_4, ::snikket::Stanza,item) HXARGC(1)
             							int _hx_run( ::snikket::Caps caps){
-            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1442_bookmarksGet)
-HXLINE(1443)								 ::snikket::Identity identity = caps->identities->__get(0).StaticCast<  ::snikket::Identity >();
-HXLINE(1444)								 ::snikket::Stanza conf = item->getChild(HX_("conference",1c,2b,83,41),HX_("urn:xmpp:bookmarks:1",58,3c,53,7d));
-HXLINE(1445)								if (::hx::IsNull( ( (::String)(::Reflect_obj::field(conf->attr,HX_("name",4b,72,ff,48))) ) )) {
-HXLINE(1446)									::String value;
-HXDLIN(1446)									if (::hx::IsNotNull( identity )) {
-HXLINE(1446)										value = identity->name;
+            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1465_bookmarksGet)
+HXLINE(1466)								 ::snikket::Identity identity = caps->identities->__get(0).StaticCast<  ::snikket::Identity >();
+HXLINE(1467)								 ::snikket::Stanza conf = item->getChild(HX_("conference",1c,2b,83,41),HX_("urn:xmpp:bookmarks:1",58,3c,53,7d));
+HXLINE(1468)								if (::hx::IsNull( ( (::String)(::Reflect_obj::field(conf->attr,HX_("name",4b,72,ff,48))) ) )) {
+HXLINE(1469)									::String value;
+HXDLIN(1469)									if (::hx::IsNotNull( identity )) {
+HXLINE(1469)										value = identity->name;
             									}
             									else {
-HXLINE(1446)										value = null();
+HXLINE(1469)										value = null();
             									}
-HXDLIN(1446)									::Reflect_obj::setField(conf->attr,HX_("name",4b,72,ff,48),value);
+HXDLIN(1469)									::Reflect_obj::setField(conf->attr,HX_("name",4b,72,ff,48),value);
             								}
-HXLINE(1448)								bool _hx_tmp;
-HXDLIN(1448)								bool _hx_tmp1;
-HXDLIN(1448)								if ((( (::String)(::Reflect_obj::field(conf->attr,HX_("autojoin",d9,f6,b1,3e))) ) != HX_("1",31,00,00,00))) {
-HXLINE(1448)									_hx_tmp1 = (( (::String)(::Reflect_obj::field(conf->attr,HX_("autojoin",d9,f6,b1,3e))) ) == HX_("true",4e,a7,03,4d));
+HXLINE(1471)								bool _hx_tmp;
+HXDLIN(1471)								bool _hx_tmp1;
+HXDLIN(1471)								if ((( (::String)(::Reflect_obj::field(conf->attr,HX_("autojoin",d9,f6,b1,3e))) ) != HX_("1",31,00,00,00))) {
+HXLINE(1471)									_hx_tmp1 = (( (::String)(::Reflect_obj::field(conf->attr,HX_("autojoin",d9,f6,b1,3e))) ) == HX_("true",4e,a7,03,4d));
             								}
             								else {
-HXLINE(1448)									_hx_tmp1 = true;
+HXLINE(1471)									_hx_tmp1 = true;
             								}
-HXDLIN(1448)								if (!(_hx_tmp1)) {
-HXLINE(1448)									_hx_tmp = !(caps->isChannel(( (::String)(::Reflect_obj::field(item->attr,HX_("id",db,5b,00,00))) )));
+HXDLIN(1471)								if (!(_hx_tmp1)) {
+HXLINE(1471)									_hx_tmp = !(caps->isChannel(( (::String)(::Reflect_obj::field(item->attr,HX_("id",db,5b,00,00))) )));
             								}
             								else {
-HXLINE(1448)									_hx_tmp = true;
+HXLINE(1471)									_hx_tmp = true;
             								}
-HXDLIN(1448)								if (_hx_tmp) {
-HXLINE(1448)									return 1;
+HXDLIN(1471)								if (_hx_tmp) {
+HXLINE(1471)									return 1;
             								}
             								else {
-HXLINE(1448)									return 2;
+HXLINE(1471)									return 2;
             								}
-HXDLIN(1448)								return null();
+HXDLIN(1471)								return null();
             							}
             							HX_END_LOCAL_FUNC1(return)
 
             							HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_5, ::snikket::Stanza,item) HXARGC(1)
             							void _hx_run( ::snikket::Chat chat){
-            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1451_bookmarksGet)
-HXLINE(1451)								chat->updateFromBookmark(item);
+            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1474_bookmarksGet)
+HXLINE(1474)								chat->updateFromBookmark(item);
             							}
             							HX_END_LOCAL_FUNC1((void))
 
-HXLINE(1440)							 ::snikket::Client _gthis2 = _gthis;
-HXDLIN(1440)							_gthis2->startChatWith(( (::String)(::Reflect_obj::field(item->attr,HX_("id",db,5b,00,00))) ), ::Dynamic(new _hx_Closure_4(item)), ::Dynamic(new _hx_Closure_5(item)));
+HXLINE(1463)							 ::snikket::Client _gthis2 = _gthis;
+HXDLIN(1463)							_gthis2->startChatWith(( (::String)(::Reflect_obj::field(item->attr,HX_("id",db,5b,00,00))) ), ::Dynamic(new _hx_Closure_4(item)), ::Dynamic(new _hx_Closure_5(item)));
             						}
             						else {
-HXLINE(1455)							chat->updateFromBookmark(item);
-HXLINE(1456)							chatsToUpdate->push(chat);
+HXLINE(1478)							chat->updateFromBookmark(item);
+HXLINE(1479)							chatsToUpdate->push(chat);
             						}
             					}
             				}
             			}
-HXLINE(1460)			::Dynamic _gthis3 = _gthis->persistence;
-HXDLIN(1460)			::snikket::Persistence_obj::storeChats(_gthis3,_gthis->accountId(),chatsToUpdate);
-HXLINE(1461)			callback();
+HXLINE(1483)			::Dynamic _gthis3 = _gthis->persistence;
+HXDLIN(1483)			::snikket::Persistence_obj::storeChats(_gthis3,_gthis->accountId(),chatsToUpdate);
+HXLINE(1484)			callback();
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1405_bookmarksGet)
-HXDLIN(1405)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1406)		 ::snikket::queries::BlocklistGet blockingGet =  ::snikket::queries::BlocklistGet_obj::__alloc( HX_CTX );
-HXLINE(1407)		blockingGet->onFinished( ::Dynamic(new _hx_Closure_0(_gthis,blockingGet)));
-HXLINE(1412)		this->sendQuery(blockingGet);
-HXLINE(1414)		 ::snikket::queries::PubsubGet mdsGet =  ::snikket::queries::PubsubGet_obj::__alloc( HX_CTX ,null(),HX_("urn:xmpp:mds:displayed:0",bd,60,cc,fb),null());
-HXLINE(1415)		mdsGet->onFinished( ::Dynamic(new _hx_Closure_3(_gthis,mdsGet)));
-HXLINE(1431)		this->sendQuery(mdsGet);
-HXLINE(1433)		 ::snikket::queries::PubsubGet pubsubGet =  ::snikket::queries::PubsubGet_obj::__alloc( HX_CTX ,null(),HX_("urn:xmpp:bookmarks:1",58,3c,53,7d),null());
-HXLINE(1434)		pubsubGet->onFinished( ::Dynamic(new _hx_Closure_6(_gthis,pubsubGet,callback)));
-HXLINE(1463)		this->sendQuery(pubsubGet);
+            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1428_bookmarksGet)
+HXDLIN(1428)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1429)		 ::snikket::queries::BlocklistGet blockingGet =  ::snikket::queries::BlocklistGet_obj::__alloc( HX_CTX );
+HXLINE(1430)		blockingGet->onFinished( ::Dynamic(new _hx_Closure_0(_gthis,blockingGet)));
+HXLINE(1435)		this->sendQuery(blockingGet);
+HXLINE(1437)		 ::snikket::queries::PubsubGet mdsGet =  ::snikket::queries::PubsubGet_obj::__alloc( HX_CTX ,null(),HX_("urn:xmpp:mds:displayed:0",bd,60,cc,fb),null());
+HXLINE(1438)		mdsGet->onFinished( ::Dynamic(new _hx_Closure_3(_gthis,mdsGet)));
+HXLINE(1454)		this->sendQuery(mdsGet);
+HXLINE(1456)		 ::snikket::queries::PubsubGet pubsubGet =  ::snikket::queries::PubsubGet_obj::__alloc( HX_CTX ,null(),HX_("urn:xmpp:bookmarks:1",58,3c,53,7d),null());
+HXLINE(1457)		pubsubGet->onFinished( ::Dynamic(new _hx_Closure_6(_gthis,pubsubGet,callback)));
+HXLINE(1486)		this->sendQuery(pubsubGet);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(Client_obj,bookmarksGet,(void))
 
 void Client_obj::sync( ::Dynamic callback){
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1466_sync)
-HXDLIN(1466)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1467)		if (::Std_obj::isOfType(this->persistence,::hx::ClassOf< ::snikket::persistence::Dummy >())) {
-HXLINE(1468)			callback(true);
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1489_sync)
+HXDLIN(1489)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1490)		if (::Std_obj::isOfType(this->persistence,::hx::ClassOf< ::snikket::persistence::Dummy >())) {
+HXLINE(1491)			callback(true);
             		}
             		else {
             			HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::Client,_gthis, ::Dynamic,callback) HXARGC(1)
             			void _hx_run(::String lastId){
-            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1470_sync)
-HXLINE(1470)				_gthis->doSync(callback,lastId);
+            				HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1493_sync)
+HXLINE(1493)				_gthis->doSync(callback,lastId);
             			}
             			HX_END_LOCAL_FUNC1((void))
 
-HXLINE(1470)			::Dynamic _hx_tmp = this->persistence;
-HXDLIN(1470)			::snikket::Persistence_obj::lastId(_hx_tmp,this->accountId(),null(), ::Dynamic(new _hx_Closure_0(_gthis,callback)));
+HXLINE(1493)			::Dynamic _hx_tmp = this->persistence;
+HXDLIN(1493)			::snikket::Persistence_obj::lastId(_hx_tmp,this->accountId(),null(), ::Dynamic(new _hx_Closure_0(_gthis,callback)));
             		}
             	}
 
@@ -4537,26 +4698,26 @@ HXDLIN(1470)			::snikket::Persistence_obj::lastId(_hx_tmp,this->accountId(),null
 HX_DEFINE_DYNAMIC_FUNC1(Client_obj,sync,(void))
 
 void Client_obj::onMAMJMI(::String sid, ::snikket::Stanza stanza){
-            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1474_onMAMJMI)
-HXLINE(1475)		if (::hx::IsNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ) )) {
-HXLINE(1475)			return;
-            		}
-HXLINE(1476)		 ::snikket::JID from = ::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ));
-HXLINE(1477)		 ::snikket::DirectChat chat = this->getDirectChat(from->asBare()->asString(),null());
-HXLINE(1478)		if (chat->jingleSessions->exists(sid)) {
-HXLINE(1478)			return;
-            		}
-HXLINE(1479)		 ::snikket::Stanza jmiP = stanza->getChild(HX_("propose",fe,fe,e9,f9),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07));
-HXLINE(1480)		if (::hx::IsNull( jmiP )) {
-HXLINE(1480)			return;
-            		}
-HXLINE(1481)		 ::snikket::jingle::IncomingProposedSession session =  ::snikket::jingle::IncomingProposedSession_obj::__alloc( HX_CTX ,::hx::ObjectPtr<OBJ_>(this),from,sid);
-HXLINE(1482)		{
-HXLINE(1482)			::Dynamic this1 = chat->jingleSessions;
-HXDLIN(1482)			( ( ::haxe::ds::StringMap)(this1) )->set(session->get_sid(),session);
-            		}
-HXLINE(1483)		this->chatActivity(chat,null());
-HXLINE(1484)		session->ring();
+            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1497_onMAMJMI)
+HXLINE(1498)		if (::hx::IsNull( ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ) )) {
+HXLINE(1498)			return;
+            		}
+HXLINE(1499)		 ::snikket::JID from = ::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ));
+HXLINE(1500)		 ::snikket::DirectChat chat = this->getDirectChat(from->asBare()->asString(),null());
+HXLINE(1501)		if (chat->jingleSessions->exists(sid)) {
+HXLINE(1501)			return;
+            		}
+HXLINE(1502)		 ::snikket::Stanza jmiP = stanza->getChild(HX_("propose",fe,fe,e9,f9),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07));
+HXLINE(1503)		if (::hx::IsNull( jmiP )) {
+HXLINE(1503)			return;
+            		}
+HXLINE(1504)		 ::snikket::jingle::IncomingProposedSession session =  ::snikket::jingle::IncomingProposedSession_obj::__alloc( HX_CTX ,::hx::ObjectPtr<OBJ_>(this),from,sid);
+HXLINE(1505)		{
+HXLINE(1505)			::Dynamic this1 = chat->jingleSessions;
+HXDLIN(1505)			( ( ::haxe::ds::StringMap)(this1) )->set(session->get_sid(),session);
+            		}
+HXLINE(1506)		this->chatActivity(chat,null());
+HXLINE(1507)		session->ring();
             	}
 
 
@@ -4565,9 +4726,9 @@ HX_DEFINE_DYNAMIC_FUNC2(Client_obj,onMAMJMI,(void))
 void Client_obj::doSync( ::Dynamic callback,::String lastId){
             		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(2)
             		 ::snikket::ChatMessageBuilder _hx_run( ::snikket::ChatMessageBuilder builder, ::snikket::Stanza stanza){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1497_doSync)
-HXLINE(1498)			builder->syncPoint = true;
-HXLINE(1499)			return builder;
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1520_doSync)
+HXLINE(1521)			builder->syncPoint = true;
+HXLINE(1522)			return builder;
             		}
             		HX_END_LOCAL_FUNC2(return)
 
@@ -4575,68 +4736,68 @@ HXLINE(1499)			return builder;
             		void _hx_run( ::Dynamic messageList){
             			HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_5, ::snikket::Client,_gthis,::Array< ::Dynamic>,chatMessages) HXARGC(2)
             			void _hx_run( ::Dynamic resolve, ::Dynamic reject){
-            				HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1523_doSync)
-HXLINE(1523)				::Dynamic _gthis1 = _gthis->persistence;
-HXDLIN(1523)				::String _hx_tmp = _gthis->accountId();
-HXDLIN(1523)				::snikket::Persistence_obj::storeMessages(_gthis1,_hx_tmp,chatMessages,resolve);
+            				HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1546_doSync)
+HXLINE(1546)				::Dynamic _gthis1 = _gthis->persistence;
+HXDLIN(1546)				::String _hx_tmp = _gthis->accountId();
+HXDLIN(1546)				::snikket::Persistence_obj::storeMessages(_gthis1,_hx_tmp,chatMessages,resolve);
             			}
             			HX_END_LOCAL_FUNC2((void))
 
             			HX_BEGIN_LOCAL_FUNC_S4(::hx::LocalFunc,_hx_Closure_6, ::snikket::Client,_gthis, ::haxe::ds::StringMap,chatIds, ::snikket::MessageSync,sync1, ::Dynamic,callback) HXARGC(1)
             			void _hx_run(::Array< ::Dynamic> results){
-            				HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1526_doSync)
-HXLINE(1527)				if ((_gthis->syncMessageHandlers->length > 0)) {
-HXLINE(1528)					int _g = 0;
-HXDLIN(1528)					while((_g < results->length)){
-HXLINE(1528)						::Array< ::Dynamic> messages = results->__get(_g).StaticCast< ::Array< ::Dynamic> >();
-HXDLIN(1528)						_g = (_g + 1);
-HXLINE(1529)						if (::hx::IsNotNull( messages )) {
-HXLINE(1530)							int _g1 = 0;
-HXDLIN(1530)							while((_g1 < messages->length)){
-HXLINE(1530)								 ::snikket::ChatMessage message = messages->__get(_g1).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN(1530)								_g1 = (_g1 + 1);
-HXLINE(1531)								_gthis->notifySyncMessageHandlers(message);
+            				HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1549_doSync)
+HXLINE(1550)				if ((_gthis->syncMessageHandlers->length > 0)) {
+HXLINE(1551)					int _g = 0;
+HXDLIN(1551)					while((_g < results->length)){
+HXLINE(1551)						::Array< ::Dynamic> messages = results->__get(_g).StaticCast< ::Array< ::Dynamic> >();
+HXDLIN(1551)						_g = (_g + 1);
+HXLINE(1552)						if (::hx::IsNotNull( messages )) {
+HXLINE(1553)							int _g1 = 0;
+HXDLIN(1553)							while((_g1 < messages->length)){
+HXLINE(1553)								 ::snikket::ChatMessage message = messages->__get(_g1).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN(1553)								_g1 = (_g1 + 1);
+HXLINE(1554)								_gthis->notifySyncMessageHandlers(message);
             							}
             						}
             					}
             				}
-HXLINE(1537)				if (sync1->hasMore()) {
-HXLINE(1538)					sync1->fetchNext();
+HXLINE(1560)				if (sync1->hasMore()) {
+HXLINE(1561)					sync1->fetchNext();
             				}
             				else {
-HXLINE(1540)					{
-HXLINE(1540)						::Dynamic map = sync1->jmi;
-HXDLIN(1540)						::Dynamic _g_map = map;
-HXDLIN(1540)						 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
-HXDLIN(1540)						while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE(1540)							::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
-HXDLIN(1540)							 ::snikket::Stanza _g_value = ( ( ::snikket::Stanza)(::haxe::IMap_obj::get(_g_map,key)) );
-HXDLIN(1540)							::String _g_key = key;
-HXDLIN(1540)							::String sid = _g_key;
-HXDLIN(1540)							 ::snikket::Stanza stanza = _g_value;
-HXLINE(1541)							_gthis->onMAMJMI(sid,stanza);
+HXLINE(1563)					{
+HXLINE(1563)						::Dynamic map = sync1->jmi;
+HXDLIN(1563)						::Dynamic _g_map = map;
+HXDLIN(1563)						 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
+HXDLIN(1563)						while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE(1563)							::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
+HXDLIN(1563)							 ::snikket::Stanza _g_value = ( ( ::snikket::Stanza)(::haxe::IMap_obj::get(_g_map,key)) );
+HXDLIN(1563)							::String _g_key = key;
+HXDLIN(1563)							::String sid = _g_key;
+HXDLIN(1563)							 ::snikket::Stanza stanza = _g_value;
+HXLINE(1564)							_gthis->onMAMJMI(sid,stanza);
             						}
             					}
-HXLINE(1543)					{
-HXLINE(1543)						::Dynamic map1 = chatIds;
-HXDLIN(1543)						::Dynamic _g_map1 = map1;
-HXDLIN(1543)						 ::Dynamic _g_keys1 = ::haxe::IMap_obj::keys(map1);
-HXDLIN(1543)						while(( (bool)(_g_keys1->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE(1543)							::String key1 = ( (::String)(_g_keys1->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
-HXDLIN(1543)							bool _g_value1 = ( (bool)(::haxe::IMap_obj::get(_g_map1,key1)) );
-HXDLIN(1543)							::String _g_key1 = key1;
-HXDLIN(1543)							::String chatId = _g_key1;
-HXDLIN(1543)							bool _ = _g_value1;
-HXDLIN(1543)							{
-HXLINE(1545)								 ::snikket::Chat chat = _gthis->getChat(chatId);
-HXLINE(1546)								if (::hx::IsNull( chat )) {
-HXLINE(1546)									_gthis->getDirectChat(chatId,null());
+HXLINE(1566)					{
+HXLINE(1566)						::Dynamic map1 = chatIds;
+HXDLIN(1566)						::Dynamic _g_map1 = map1;
+HXDLIN(1566)						 ::Dynamic _g_keys1 = ::haxe::IMap_obj::keys(map1);
+HXDLIN(1566)						while(( (bool)(_g_keys1->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE(1566)							::String key1 = ( (::String)(_g_keys1->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
+HXDLIN(1566)							bool _g_value1 = ( (bool)(::haxe::IMap_obj::get(_g_map1,key1)) );
+HXDLIN(1566)							::String _g_key1 = key1;
+HXDLIN(1566)							::String chatId = _g_key1;
+HXDLIN(1566)							bool _ = _g_value1;
+HXDLIN(1566)							{
+HXLINE(1568)								 ::snikket::Chat chat = _gthis->getChat(chatId);
+HXLINE(1569)								if (::hx::IsNull( chat )) {
+HXLINE(1569)									_gthis->getDirectChat(chatId,null());
             								}
             							}
             						}
             					}
-HXLINE(1548)					if (::hx::IsNotNull( callback )) {
-HXLINE(1548)						callback(true);
+HXLINE(1571)					if (::hx::IsNotNull( callback )) {
+HXLINE(1571)						callback(true);
             					}
             				}
             			}
@@ -4644,42 +4805,42 @@ HXLINE(1548)						callback(true);
 
             			HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_7, ::Dynamic,callback) HXARGC(1)
             			void _hx_run( ::Dynamic e){
-            				HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1551_doSync)
-HXLINE(1552)				 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
-HXDLIN(1552)				::String _hx_tmp1;
-HXDLIN(1552)				if (::hx::IsNull( e )) {
-HXLINE(1552)					_hx_tmp1 = HX_("null",87,9e,0e,49);
+            				HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1574_doSync)
+HXLINE(1575)				 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
+HXDLIN(1575)				::String _hx_tmp1;
+HXDLIN(1575)				if (::hx::IsNull( e )) {
+HXLINE(1575)					_hx_tmp1 = HX_("null",87,9e,0e,49);
             				}
             				else {
-HXLINE(1552)					_hx_tmp1 = ::Std_obj::string(e);
+HXLINE(1575)					_hx_tmp1 = ::Std_obj::string(e);
             				}
-HXDLIN(1552)				_hx_tmp(HX_("SYNC: error",67,8e,34,8a), ::Dynamic(::hx::Anon_obj::Create(5)
+HXDLIN(1575)				_hx_tmp(HX_("SYNC: error",67,8e,34,8a), ::Dynamic(::hx::Anon_obj::Create(5)
             					->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.Client",3c,fe,06,7c))
             					->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,_hx_tmp1))
             					->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("doSync",86,5f,63,1c))
             					->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/Client.hx",e1,49,02,18))
-            					->setFixed(4,HX_("lineNumber",dd,81,22,76),1552)));
-HXLINE(1553)				callback(false);
+            					->setFixed(4,HX_("lineNumber",dd,81,22,76),1575)));
+HXLINE(1576)				callback(false);
             			}
             			HX_END_LOCAL_FUNC1((void))
 
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1502_doSync)
-HXLINE(1503)			::Array< ::Dynamic> promises = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1504)			::Array< ::Dynamic> chatMessages = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE(1505)			{
-HXLINE(1505)				int _g = 0;
-HXDLIN(1505)				::Array< ::Dynamic> _g1 = ( (::Array< ::Dynamic>)(messageList->__Field(HX_("messages",cc,d8,fd,34),::hx::paccDynamic)) );
-HXDLIN(1505)				while((_g < _g1->length)){
-HXLINE(1505)					 ::snikket::MessageStanza m = _g1->__get(_g).StaticCast<  ::snikket::MessageStanza >();
-HXDLIN(1505)					_g = (_g + 1);
-HXLINE(1506)					switch((int)(m->_hx_getIndex())){
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1525_doSync)
+HXLINE(1526)			::Array< ::Dynamic> promises = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1527)			::Array< ::Dynamic> chatMessages = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE(1528)			{
+HXLINE(1528)				int _g = 0;
+HXDLIN(1528)				::Array< ::Dynamic> _g1 = ( (::Array< ::Dynamic>)(messageList->__Field(HX_("messages",cc,d8,fd,34),::hx::paccDynamic)) );
+HXDLIN(1528)				while((_g < _g1->length)){
+HXLINE(1528)					 ::snikket::MessageStanza m = _g1->__get(_g).StaticCast<  ::snikket::MessageStanza >();
+HXDLIN(1528)					_g = (_g + 1);
+HXLINE(1529)					switch((int)(m->_hx_getIndex())){
             						case (int)1: {
-HXLINE(1507)							 ::snikket::ChatMessage message = m->_hx_getObject(0).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN(1507)							{
-HXLINE(1508)								chatMessages->push(message);
-HXLINE(1509)								if ((message->type == 0)) {
-HXLINE(1509)									::String k = message->chatId();
-HXDLIN(1509)									chatIds->set(k,true);
+HXLINE(1530)							 ::snikket::ChatMessage message = m->_hx_getObject(0).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN(1530)							{
+HXLINE(1531)								chatMessages->push(message);
+HXLINE(1532)								if ((message->type == 0)) {
+HXLINE(1532)									::String k = message->chatId();
+HXDLIN(1532)									chatIds->set(k,true);
             								}
             							}
             						}
@@ -4689,18 +4850,18 @@ HXDLIN(1509)									chatIds->set(k,true);
             							void _hx_run( ::Dynamic resolve, ::Dynamic reject){
             								HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_1, ::Dynamic,resolve) HXARGC(1)
             								void _hx_run( ::snikket::ChatMessage _){
-            									HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1516_doSync)
-HXLINE(1516)									resolve(null());
+            									HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1539_doSync)
+HXLINE(1539)									resolve(null());
             								}
             								HX_END_LOCAL_FUNC1((void))
 
-            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1516_doSync)
-HXLINE(1516)								::thenshim::_Promise::Promise_Impl__obj::then(_gthis->moderateMessage(action), ::Dynamic(new _hx_Closure_1(resolve)),null());
+            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1539_doSync)
+HXLINE(1539)								::thenshim::_Promise::Promise_Impl__obj::then(_gthis->moderateMessage(action), ::Dynamic(new _hx_Closure_1(resolve)),null());
             							}
             							HX_END_LOCAL_FUNC2((void))
 
-HXLINE(1514)							 ::snikket::ModerationAction action = m->_hx_getObject(0).StaticCast<  ::snikket::ModerationAction >();
-HXLINE(1515)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_2(_gthis,action))));
+HXLINE(1537)							 ::snikket::ModerationAction action = m->_hx_getObject(0).StaticCast<  ::snikket::ModerationAction >();
+HXLINE(1538)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_2(_gthis,action))));
             						}
             						break;
             						case (int)3: {
@@ -4708,20 +4869,20 @@ HXLINE(1515)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new(
             							void _hx_run( ::Dynamic resolve, ::Dynamic reject){
             								HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_3, ::Dynamic,resolve) HXARGC(1)
             								void _hx_run( ::snikket::ChatMessage _){
-            									HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1512_doSync)
-HXLINE(1512)									resolve(null());
+            									HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1535_doSync)
+HXLINE(1535)									resolve(null());
             								}
             								HX_END_LOCAL_FUNC1((void))
 
-            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1512_doSync)
-HXLINE(1512)								::Dynamic _gthis1 = _gthis->persistence;
-HXDLIN(1512)								::String _hx_tmp = _gthis->accountId();
-HXDLIN(1512)								::snikket::Persistence_obj::storeReaction(_gthis1,_hx_tmp,update, ::Dynamic(new _hx_Closure_3(resolve)));
+            								HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1535_doSync)
+HXLINE(1535)								::Dynamic _gthis1 = _gthis->persistence;
+HXDLIN(1535)								::String _hx_tmp = _gthis->accountId();
+HXDLIN(1535)								::snikket::Persistence_obj::storeReaction(_gthis1,_hx_tmp,update, ::Dynamic(new _hx_Closure_3(resolve)));
             							}
             							HX_END_LOCAL_FUNC2((void))
 
-HXLINE(1510)							 ::snikket::ReactionUpdate update = m->_hx_getObject(0).StaticCast<  ::snikket::ReactionUpdate >();
-HXLINE(1511)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_4(_gthis,update))));
+HXLINE(1533)							 ::snikket::ReactionUpdate update = m->_hx_getObject(0).StaticCast<  ::snikket::ReactionUpdate >();
+HXLINE(1534)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_4(_gthis,update))));
             						}
             						break;
             						default:{
@@ -4729,81 +4890,81 @@ HXLINE(1511)							promises->push(::thenshim::_Promise::Promise_Impl__obj::_new(
             					}
             				}
             			}
-HXLINE(1522)			promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_5(_gthis,chatMessages))));
-HXLINE(1525)			::haxe::Log_obj::trace(HX_("SYNC: MAM page wait for writes",ad,4c,95,21),::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),1525,HX_("snikket.Client",3c,fe,06,7c),HX_("doSync",86,5f,63,1c)));
-HXLINE(1526)			::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::PromiseTools_obj::all(promises), ::Dynamic(new _hx_Closure_6(_gthis,chatIds,sync1,callback)), ::Dynamic(new _hx_Closure_7(callback)));
+HXLINE(1545)			promises->push(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_5(_gthis,chatMessages))));
+HXLINE(1548)			::haxe::Log_obj::trace(HX_("SYNC: MAM page wait for writes",ad,4c,95,21),::hx::SourceInfo(HX_("snikket/Client.hx",e1,49,02,18),1548,HX_("snikket.Client",3c,fe,06,7c),HX_("doSync",86,5f,63,1c)));
+HXLINE(1549)			::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::PromiseTools_obj::all(promises), ::Dynamic(new _hx_Closure_6(_gthis,chatIds,sync1,callback)), ::Dynamic(new _hx_Closure_7(callback)));
             		}
             		HX_END_LOCAL_FUNC1((void))
 
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_9, ::snikket::Client,_gthis,::String,lastId, ::Dynamic,callback) HXARGC(1)
             		void _hx_run( ::snikket::Stanza stanza){
-            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1557_doSync)
-HXLINE(1557)			if (::hx::IsNotNull( lastId )) {
-HXLINE(1559)				_gthis->doSync(callback,null());
+            			HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1580_doSync)
+HXLINE(1580)			if (::hx::IsNotNull( lastId )) {
+HXLINE(1582)				_gthis->doSync(callback,null());
             			}
             			else {
-HXLINE(1561)				::haxe::Log_obj::trace(HX_("SYNC: error",67,8e,34,8a), ::Dynamic(::hx::Anon_obj::Create(5)
+HXLINE(1584)				::haxe::Log_obj::trace(HX_("SYNC: error",67,8e,34,8a), ::Dynamic(::hx::Anon_obj::Create(5)
             					->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.Client",3c,fe,06,7c))
             					->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,stanza))
             					->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("doSync",86,5f,63,1c))
             					->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/Client.hx",e1,49,02,18))
-            					->setFixed(4,HX_("lineNumber",dd,81,22,76),1561)));
-HXLINE(1562)				if (::hx::IsNotNull( callback )) {
-HXLINE(1562)					callback(false);
+            					->setFixed(4,HX_("lineNumber",dd,81,22,76),1584)));
+HXLINE(1585)				if (::hx::IsNotNull( callback )) {
+HXLINE(1585)					callback(false);
             				}
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1487_doSync)
-HXDLIN(1487)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(1488)		::String thirtyDaysAgo = ::snikket::Date_obj::format(::Date_obj::fromTime((::Date_obj::now()->getTime() + ((Float)-2592000000.))));
-HXLINE(1494)		 ::Dynamic sync;
-HXDLIN(1494)		if (::hx::IsNull( lastId )) {
-HXLINE(1494)			sync =  ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_GC_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1510_doSync)
+HXDLIN(1510)		 ::snikket::Client _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(1511)		::String thirtyDaysAgo = ::snikket::Date_obj::format(::Date_obj::fromTime((::Date_obj::now()->getTime() + ((Float)-2592000000.))));
+HXLINE(1517)		 ::Dynamic sync;
+HXDLIN(1517)		if (::hx::IsNull( lastId )) {
+HXLINE(1517)			sync =  ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("startTime",8f,45,f0,05),thirtyDaysAgo));
             		}
             		else {
-HXLINE(1494)			sync =  ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(1517)			sync =  ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("page",4f,da,51,4a), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("after",1c,66,a2,1d),lastId))));
             		}
-HXLINE(1491)		 ::snikket::MessageSync sync1 =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,::hx::ObjectPtr<OBJ_>(this),this->stream,sync,null());
-HXLINE(1496)		sync1->setNewestPageFirst(false);
-HXLINE(1497)		sync1->addContext( ::Dynamic(new _hx_Closure_0()));
-HXLINE(1501)		 ::haxe::ds::StringMap chatIds =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
-HXLINE(1502)		sync1->onMessages( ::Dynamic(new _hx_Closure_8(_gthis,chatIds,sync1,callback)));
-HXLINE(1556)		sync1->onError( ::Dynamic(new _hx_Closure_9(_gthis,lastId,callback)));
-HXLINE(1565)		sync1->fetchNext();
+HXLINE(1514)		 ::snikket::MessageSync sync1 =  ::snikket::MessageSync_obj::__alloc( HX_CTX ,::hx::ObjectPtr<OBJ_>(this),this->stream,sync,null());
+HXLINE(1519)		sync1->setNewestPageFirst(false);
+HXLINE(1520)		sync1->addContext( ::Dynamic(new _hx_Closure_0()));
+HXLINE(1524)		 ::haxe::ds::StringMap chatIds =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
+HXLINE(1525)		sync1->onMessages( ::Dynamic(new _hx_Closure_8(_gthis,chatIds,sync1,callback)));
+HXLINE(1579)		sync1->onError( ::Dynamic(new _hx_Closure_9(_gthis,lastId,callback)));
+HXLINE(1588)		sync1->fetchNext();
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC2(Client_obj,doSync,(void))
 
 void Client_obj::pingAllChannels(bool refresh){
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1569_pingAllChannels)
-HXDLIN(1569)		int _g = 0;
-HXDLIN(1569)		::Array< ::Dynamic> _g1 = this->getChats();
-HXDLIN(1569)		while((_g < _g1->length)){
-HXDLIN(1569)			 ::snikket::Chat chat = _g1->__get(_g).StaticCast<  ::snikket::Chat >();
-HXDLIN(1569)			_g = (_g + 1);
-HXLINE(1570)			 ::snikket::Channel channel = ( ( ::snikket::Channel)(::Std_obj::downcast(chat,::hx::ClassOf< ::snikket::Channel >())) );
-HXLINE(1571)			if (::hx::IsNotNull( channel )) {
-HXLINE(1571)				bool _hx_tmp;
-HXDLIN(1571)				if (!(refresh)) {
-HXLINE(1571)					 ::snikket::Caps _hx_tmp1;
-HXDLIN(1571)					if (::hx::IsNotNull( channel )) {
-HXLINE(1571)						_hx_tmp1 = channel->disco;
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1592_pingAllChannels)
+HXDLIN(1592)		int _g = 0;
+HXDLIN(1592)		::Array< ::Dynamic> _g1 = this->getChats();
+HXDLIN(1592)		while((_g < _g1->length)){
+HXDLIN(1592)			 ::snikket::Chat chat = _g1->__get(_g).StaticCast<  ::snikket::Chat >();
+HXDLIN(1592)			_g = (_g + 1);
+HXLINE(1593)			 ::snikket::Channel channel = ( ( ::snikket::Channel)(::Std_obj::downcast(chat,::hx::ClassOf< ::snikket::Channel >())) );
+HXLINE(1594)			if (::hx::IsNotNull( channel )) {
+HXLINE(1594)				bool _hx_tmp;
+HXDLIN(1594)				if (!(refresh)) {
+HXLINE(1594)					 ::snikket::Caps _hx_tmp1;
+HXDLIN(1594)					if (::hx::IsNotNull( channel )) {
+HXLINE(1594)						_hx_tmp1 = channel->disco;
             					}
             					else {
-HXLINE(1571)						_hx_tmp1 = null();
+HXLINE(1594)						_hx_tmp1 = null();
             					}
-HXDLIN(1571)					_hx_tmp = ::hx::IsNull( _hx_tmp1 );
+HXDLIN(1594)					_hx_tmp = ::hx::IsNull( _hx_tmp1 );
             				}
             				else {
-HXLINE(1571)					_hx_tmp = true;
+HXLINE(1594)					_hx_tmp = true;
             				}
-HXDLIN(1571)				channel->selfPing(_hx_tmp);
+HXDLIN(1594)				channel->selfPing(_hx_tmp);
             			}
             		}
             	}
@@ -4812,34 +4973,34 @@ HXDLIN(1571)				channel->selfPing(_hx_tmp);
 HX_DEFINE_DYNAMIC_FUNC1(Client_obj,pingAllChannels,(void))
 
 void Client_obj::joinAllChannels(){
-            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1576_joinAllChannels)
-HXDLIN(1576)		int _g = 0;
-HXDLIN(1576)		::Array< ::Dynamic> _g1 = this->getChats();
-HXDLIN(1576)		while((_g < _g1->length)){
-HXDLIN(1576)			 ::snikket::Chat chat = _g1->__get(_g).StaticCast<  ::snikket::Chat >();
-HXDLIN(1576)			_g = (_g + 1);
-HXLINE(1577)			 ::snikket::Channel channel = ( ( ::snikket::Channel)(::Std_obj::downcast(chat,::hx::ClassOf< ::snikket::Channel >())) );
-HXLINE(1578)			if (::hx::IsNotNull( channel )) {
-HXLINE(1579)				if ((channel->disco->identities->length < 1)) {
+            	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1599_joinAllChannels)
+HXDLIN(1599)		int _g = 0;
+HXDLIN(1599)		::Array< ::Dynamic> _g1 = this->getChats();
+HXDLIN(1599)		while((_g < _g1->length)){
+HXDLIN(1599)			 ::snikket::Chat chat = _g1->__get(_g).StaticCast<  ::snikket::Chat >();
+HXDLIN(1599)			_g = (_g + 1);
+HXLINE(1600)			 ::snikket::Channel channel = ( ( ::snikket::Channel)(::Std_obj::downcast(chat,::hx::ClassOf< ::snikket::Channel >())) );
+HXLINE(1601)			if (::hx::IsNotNull( channel )) {
+HXLINE(1602)				if ((channel->disco->identities->length < 1)) {
             					HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::Channel,channel) HXARGC(0)
             					void _hx_run(){
-            						HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1581_joinAllChannels)
-HXLINE(1581)						channel->join();
+            						HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1604_joinAllChannels)
+HXLINE(1604)						channel->join();
             					}
             					HX_END_LOCAL_FUNC0((void))
 
-HXLINE(1580)					channel->refreshDisco( ::Dynamic(new _hx_Closure_0(channel)));
+HXLINE(1603)					channel->refreshDisco( ::Dynamic(new _hx_Closure_0(channel)));
             				}
             				else {
             					HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_1, ::snikket::Channel,channel) HXARGC(0)
             					void _hx_run(){
-            						HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1585_joinAllChannels)
-HXLINE(1585)						channel->refreshDisco(null());
+            						HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_1608_joinAllChannels)
+HXLINE(1608)						channel->refreshDisco(null());
             					}
             					HX_END_LOCAL_FUNC0((void))
 
-HXLINE(1584)					channel->join();
-HXLINE(1585)					::haxe::Timer_obj::delay( ::Dynamic(new _hx_Closure_1(channel)),30000);
+HXLINE(1607)					channel->join();
+HXLINE(1608)					::haxe::Timer_obj::delay( ::Dynamic(new _hx_Closure_1(channel)),30000);
             				}
             			}
             		}
@@ -5001,6 +5162,7 @@ void Client_obj::__Visit(HX_VISIT_PARAMS)
 		if (HX_FIELD_EQ(inName,"chatMessageHandlers") ) { return ::hx::Val( chatMessageHandlers ); }
 		if (HX_FIELD_EQ(inName,"syncMessageHandlers") ) { return ::hx::Val( syncMessageHandlers ); }
 		if (HX_FIELD_EQ(inName,"updatePushIfEnabled") ) { return ::hx::Val( updatePushIfEnabled_dyn() ); }
+		if (HX_FIELD_EQ(inName,"addTlsCheckListener") ) { return ::hx::Val( addTlsCheckListener_dyn() ); }
 		if (HX_FIELD_EQ(inName,"addCallRingListener") ) { return ::hx::Val( addCallRingListener_dyn() ); }
 		break;
 	case 20:
@@ -5031,6 +5193,7 @@ void Client_obj::__Visit(HX_VISIT_PARAMS)
 		break;
 	case 27:
 		if (HX_FIELD_EQ(inName,"addConnectionFailedListener") ) { return ::hx::Val( addConnectionFailedListener_dyn() ); }
+		if (HX_FIELD_EQ(inName,"addCallUpdateStatusListener") ) { return ::hx::Val( addCallUpdateStatusListener_dyn() ); }
 		break;
 	case 30:
 		if (HX_FIELD_EQ(inName,"fetchMediaByHashOneCounterpart") ) { return ::hx::Val( fetchMediaByHashOneCounterpart_dyn() ); }
@@ -5168,12 +5331,14 @@ static ::String Client_obj_sMemberFields[] = {
 	HX_("addStatusOnlineListener",ba,7f,0a,f9),
 	HX_("addStatusOfflineListener",84,03,7d,f1),
 	HX_("addConnectionFailedListener",50,7d,89,49),
+	HX_("addTlsCheckListener",a2,08,8a,52),
 	HX_("addChatMessageListener",c2,ab,0f,ed),
 	HX_("addSyncMessageListener",9f,bb,b2,e2),
 	HX_("addChatsUpdatedListener",35,56,de,d1),
 	HX_("addCallRingListener",43,06,12,df),
 	HX_("addCallRetractListener",f6,56,33,1b),
 	HX_("addCallRingingListener",27,29,10,44),
+	HX_("addCallUpdateStatusListener",ae,ae,44,09),
 	HX_("addCallMediaListener",99,4a,d3,ce),
 	HX_("addCallTrackListener",40,53,e3,46),
 	HX_("setInForeground",ca,fb,6b,7d),
@@ -5231,7 +5396,7 @@ void Client_obj::__boot()
 {
             	HX_STACKFRAME(&_hx_pos_ead56881d4bbcaca_51_boot)
 HXDLIN(  51)		__mClass->__meta__ =  ::Dynamic(::hx::Anon_obj::Create(1)
-            			->setFixed(0,HX_("fields",79,8e,8e,80), ::Dynamic(::hx::Anon_obj::Create(35)
+            			->setFixed(0,HX_("fields",79,8e,8e,80), ::Dynamic(::hx::Anon_obj::Create(39)
             				->setFixed(0,HX_("addChatsUpdatedListener__fromC",e4,7a,96,80), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
             				->setFixed(1,HX_("addSyncMessageListener__fromC",ba,f6,2b,88), ::Dynamic(::hx::Anon_obj::Create(1)
@@ -5248,59 +5413,67 @@ HXDLIN(  51)		__mClass->__meta__ =  ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
             				->setFixed(7,HX_("getChats",25,ae,8a,a5), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
-            				->setFixed(8,HX_("addCallTrackListener__fromC",39,05,06,c4), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(8,HX_("addTlsCheckListener__fromC",17,a0,1f,a9), ::Dynamic(::hx::Anon_obj::Create(1)
+            					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
+            				->setFixed(9,HX_("addCallTrackListener__fromC",39,05,06,c4), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
-            				->setFixed(9,HX_("addCallMediaListener",99,4a,d3,ce), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(10,HX_("addCallMediaListener",99,4a,d3,ce), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
-            				->setFixed(10,HX_("findAvailableChats__fromC",ae,49,41,d0), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(11,HX_("findAvailableChats__fromC",ae,49,41,d0), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
-            				->setFixed(11,HX_("addChatsUpdatedListener",35,56,de,d1), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(12,HX_("addChatsUpdatedListener",35,56,de,d1), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
-            				->setFixed(12,HX_("addConnectionFailedListener__fromC",29,3d,00,dc), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(13,HX_("addConnectionFailedListener__fromC",29,3d,00,dc), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
-            				->setFixed(13,HX_("addChatMessageListener__fromC",f7,a0,32,de), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(14,HX_("addChatMessageListener__fromC",f7,a0,32,de), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
-            				->setFixed(14,HX_("addCallRingListener",43,06,12,df), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(15,HX_("addCallRingListener",43,06,12,df), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
-            				->setFixed(15,HX_("addPasswordNeededListener",45,5f,7e,e2), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(16,HX_("addPasswordNeededListener",45,5f,7e,e2), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
-            				->setFixed(16,HX_("addSyncMessageListener",9f,bb,b2,e2), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(17,HX_("addSyncMessageListener",9f,bb,b2,e2), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
-            				->setFixed(17,HX_("findAvailableChats",2b,92,7a,e4), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(18,HX_("findAvailableChats",2b,92,7a,e4), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
-            				->setFixed(18,HX_("addChatMessageListener",c2,ab,0f,ed), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(19,HX_("addChatMessageListener",c2,ab,0f,ed), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
-            				->setFixed(19,HX_("addStatusOfflineListener",84,03,7d,f1), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(20,HX_("addStatusOfflineListener",84,03,7d,f1), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
-            				->setFixed(20,HX_("addStatusOnlineListener",ba,7f,0a,f9), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(21,HX_("addStatusOnlineListener",ba,7f,0a,f9), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
-            				->setFixed(21,HX_("addCallRetractListener",f6,56,33,1b), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(22,HX_("addCallUpdateStatusListener__fromC",8b,13,03,02), ::Dynamic(::hx::Anon_obj::Create(1)
+            					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
+            				->setFixed(23,HX_("addCallUpdateStatusListener",ae,ae,44,09), ::Dynamic(::hx::Anon_obj::Create(1)
+            					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
+            				->setFixed(24,HX_("addCallRetractListener",f6,56,33,1b), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
-            				->setFixed(22,HX_("addPasswordNeededListener__fromC",d4,b3,20,1d), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(25,HX_("addPasswordNeededListener__fromC",d4,b3,20,1d), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
-            				->setFixed(23,HX_("set_sendAvailable__fromC",35,ea,10,2d), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(26,HX_("set_sendAvailable__fromC",35,ea,10,2d), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
-            				->setFixed(24,HX_("enablePush__fromC",1c,70,b7,2f), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(27,HX_("enablePush__fromC",1c,70,b7,2f), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
-            				->setFixed(25,HX_("addCallMediaListener__fromC",00,9b,9c,36), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(28,HX_("addCallMediaListener__fromC",00,9b,9c,36), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
-            				->setFixed(26,HX_("addCallRingingListener",27,29,10,44), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(29,HX_("addCallRingingListener",27,29,10,44), ::Dynamic(::hx::Anon_obj::Create(1)
+            					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
+            				->setFixed(30,HX_("startOffline",a1,72,73,44), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
-            				->setFixed(27,HX_("startOffline",a1,72,73,44), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(31,HX_("addCallTrackListener",40,53,e3,46), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
-            				->setFixed(28,HX_("addCallTrackListener",40,53,e3,46), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(32,HX_("addConnectionFailedListener",50,7d,89,49), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
-            				->setFixed(29,HX_("addConnectionFailedListener",50,7d,89,49), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(33,HX_("prepareAttachment",4a,6c,4b,52), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
-            				->setFixed(30,HX_("prepareAttachment",4a,6c,4b,52), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(34,HX_("addTlsCheckListener",a2,08,8a,52), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
-            				->setFixed(31,HX_("addCallRetractListener__fromC",43,84,e9,5a), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(35,HX_("addCallRetractListener__fromC",43,84,e9,5a), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
-            				->setFixed(32,HX_("startOffline__fromC",f8,03,65,60), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(36,HX_("startOffline__fromC",f8,03,65,60), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
-            				->setFixed(33,HX_("addStatusOfflineListener__fromC",75,a5,68,6e), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(37,HX_("addStatusOfflineListener__fromC",75,a5,68,6e), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
-            				->setFixed(34,HX_("getChats__fromC",f4,00,7e,7e), ::Dynamic(::hx::Anon_obj::Create(1)
+            				->setFixed(38,HX_("getChats__fromC",f4,00,7e,7e), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null()))))));
             	}
 }
diff --git a/Sources/c_snikket/src/snikket/SerializedChat.cpp b/Sources/c_snikket/src/snikket/SerializedChat.cpp
index d67760f..99367e9 100644
--- a/Sources/c_snikket/src/snikket/SerializedChat.cpp
+++ b/Sources/c_snikket/src/snikket/SerializedChat.cpp
@@ -47,54 +47,54 @@
 #include <snikket/_Stanza/NodeInterface.h>
 #endif
 
-HX_DEFINE_STACK_FRAME(_hx_pos_59459d97d9a61381_1579_new,"snikket.SerializedChat","new",0xcbfecbdf,"snikket.SerializedChat.new","snikket/Chat.hx",1579,0x18616bf4)
-HX_LOCAL_STACK_FRAME(_hx_pos_59459d97d9a61381_1597_toChat,"snikket.SerializedChat","toChat",0x0e8ec7d4,"snikket.SerializedChat.toChat","snikket/Chat.hx",1597,0x18616bf4)
+HX_DEFINE_STACK_FRAME(_hx_pos_59459d97d9a61381_1589_new,"snikket.SerializedChat","new",0xcbfecbdf,"snikket.SerializedChat.new","snikket/Chat.hx",1589,0x18616bf4)
+HX_LOCAL_STACK_FRAME(_hx_pos_59459d97d9a61381_1607_toChat,"snikket.SerializedChat","toChat",0x0e8ec7d4,"snikket.SerializedChat.toChat","snikket/Chat.hx",1607,0x18616bf4)
 static const ::String _hx_array_data_8cddf06d_3[] = {
 	HX_("http://jabber.org/protocol/muc",07,b2,7f,c6),
 };
 namespace snikket{
 
 void SerializedChat_obj::__construct(::String chatId,bool trusted,::Array< unsigned char > avatarSha1, ::haxe::ds::StringMap presence,::String displayName, ::Dynamic uiState, ::Dynamic isBlocked,::String extensions,::String readUpToId,::String readUpToBy, ::Dynamic notificationsFiltered,bool notifyMention,bool notifyReply, ::snikket::Caps disco,::String klass){
-            	HX_STACKFRAME(&_hx_pos_59459d97d9a61381_1579_new)
-HXLINE(1580)		this->chatId = chatId;
-HXLINE(1581)		this->trusted = trusted;
-HXLINE(1582)		this->avatarSha1 = avatarSha1;
-HXLINE(1583)		this->presence = presence;
-HXLINE(1584)		this->displayName = displayName;
-HXLINE(1585)		 ::Dynamic tmp = uiState;
-HXDLIN(1585)		int _hx_tmp;
-HXDLIN(1585)		if (::hx::IsNotNull( tmp )) {
-HXLINE(1585)			_hx_tmp = ( (int)(tmp) );
+            	HX_STACKFRAME(&_hx_pos_59459d97d9a61381_1589_new)
+HXLINE(1590)		this->chatId = chatId;
+HXLINE(1591)		this->trusted = trusted;
+HXLINE(1592)		this->avatarSha1 = avatarSha1;
+HXLINE(1593)		this->presence = presence;
+HXLINE(1594)		this->displayName = displayName;
+HXLINE(1595)		 ::Dynamic tmp = uiState;
+HXDLIN(1595)		int _hx_tmp;
+HXDLIN(1595)		if (::hx::IsNotNull( tmp )) {
+HXLINE(1595)			_hx_tmp = ( (int)(tmp) );
             		}
             		else {
-HXLINE(1585)			_hx_tmp = 1;
+HXLINE(1595)			_hx_tmp = 1;
             		}
-HXDLIN(1585)		this->uiState = _hx_tmp;
-HXLINE(1586)		 ::Dynamic tmp1 = isBlocked;
-HXDLIN(1586)		bool _hx_tmp1;
-HXDLIN(1586)		if (::hx::IsNotNull( tmp1 )) {
-HXLINE(1586)			_hx_tmp1 = ( (bool)(tmp1) );
+HXDLIN(1595)		this->uiState = _hx_tmp;
+HXLINE(1596)		 ::Dynamic tmp1 = isBlocked;
+HXDLIN(1596)		bool _hx_tmp1;
+HXDLIN(1596)		if (::hx::IsNotNull( tmp1 )) {
+HXLINE(1596)			_hx_tmp1 = ( (bool)(tmp1) );
             		}
             		else {
-HXLINE(1586)			_hx_tmp1 = false;
+HXLINE(1596)			_hx_tmp1 = false;
             		}
-HXDLIN(1586)		this->isBlocked = _hx_tmp1;
-HXLINE(1587)		::String tmp2 = extensions;
-HXDLIN(1587)		::String _hx_tmp2;
-HXDLIN(1587)		if (::hx::IsNotNull( tmp2 )) {
-HXLINE(1587)			_hx_tmp2 = tmp2;
+HXDLIN(1596)		this->isBlocked = _hx_tmp1;
+HXLINE(1597)		::String tmp2 = extensions;
+HXDLIN(1597)		::String _hx_tmp2;
+HXDLIN(1597)		if (::hx::IsNotNull( tmp2 )) {
+HXLINE(1597)			_hx_tmp2 = tmp2;
             		}
             		else {
-HXLINE(1587)			_hx_tmp2 = HX_("<extensions xmlns='urn:app:bookmarks:1' />",84,43,42,a9);
+HXLINE(1597)			_hx_tmp2 = HX_("<extensions xmlns='urn:app:bookmarks:1' />",84,43,42,a9);
             		}
-HXDLIN(1587)		this->extensions = _hx_tmp2;
-HXLINE(1588)		this->readUpToId = readUpToId;
-HXLINE(1589)		this->readUpToBy = readUpToBy;
-HXLINE(1590)		this->notificationsFiltered = notificationsFiltered;
-HXLINE(1591)		this->notifyMention = notifyMention;
-HXLINE(1592)		this->notifyReply = notifyReply;
-HXLINE(1593)		this->disco = disco;
-HXLINE(1594)		this->klass = klass;
+HXDLIN(1597)		this->extensions = _hx_tmp2;
+HXLINE(1598)		this->readUpToId = readUpToId;
+HXLINE(1599)		this->readUpToBy = readUpToBy;
+HXLINE(1600)		this->notificationsFiltered = notificationsFiltered;
+HXLINE(1601)		this->notifyMention = notifyMention;
+HXLINE(1602)		this->notifyReply = notifyReply;
+HXLINE(1603)		this->disco = disco;
+HXLINE(1604)		this->klass = klass;
             	}
 
 Dynamic SerializedChat_obj::__CreateEmpty() { return new SerializedChat_obj; }
@@ -113,72 +113,72 @@ bool SerializedChat_obj::_hx_isInstanceOf(int inClassId) {
 }
 
  ::snikket::Chat SerializedChat_obj::toChat( ::snikket::Client client, ::snikket::GenericStream stream,::Dynamic persistence){
-            	HX_GC_STACKFRAME(&_hx_pos_59459d97d9a61381_1597_toChat)
-HXLINE(1598)		 ::snikket::Stanza extensionsStanza = ::snikket::Stanza_obj::parse(this->extensions);
-HXLINE(1599)		bool filterN;
-HXDLIN(1599)		 ::Dynamic tmp = this->notificationsFiltered;
-HXDLIN(1599)		if (::hx::IsNotNull( tmp )) {
-HXLINE(1599)			filterN = ( (bool)(tmp) );
+            	HX_GC_STACKFRAME(&_hx_pos_59459d97d9a61381_1607_toChat)
+HXLINE(1608)		 ::snikket::Stanza extensionsStanza = ::snikket::Stanza_obj::parse(this->extensions);
+HXLINE(1609)		bool filterN;
+HXDLIN(1609)		 ::Dynamic tmp = this->notificationsFiltered;
+HXDLIN(1609)		if (::hx::IsNotNull( tmp )) {
+HXLINE(1609)			filterN = ( (bool)(tmp) );
             		}
             		else {
-HXLINE(1599)			filterN = false;
+HXLINE(1609)			filterN = false;
             		}
-HXLINE(1600)		bool mention = this->notifyMention;
-HXLINE(1602)		 ::snikket::Chat chat;
-HXDLIN(1602)		if ((this->klass == HX_("DirectChat",c1,22,a3,05))) {
-HXLINE(1602)			chat =  ::snikket::DirectChat_obj::__alloc( HX_CTX ,client,stream,persistence,this->chatId,this->uiState,this->isBlocked,extensionsStanza,this->readUpToId,this->readUpToBy);
+HXLINE(1610)		bool mention = this->notifyMention;
+HXLINE(1612)		 ::snikket::Chat chat;
+HXDLIN(1612)		if ((this->klass == HX_("DirectChat",c1,22,a3,05))) {
+HXLINE(1612)			chat =  ::snikket::DirectChat_obj::__alloc( HX_CTX ,client,stream,persistence,this->chatId,this->uiState,this->isBlocked,extensionsStanza,this->readUpToId,this->readUpToBy);
             		}
             		else {
-HXLINE(1604)			if ((this->klass == HX_("Channel",a3,28,23,9a))) {
-HXLINE(1605)				 ::snikket::Channel channel =  ::snikket::Channel_obj::__alloc( HX_CTX ,client,stream,persistence,this->chatId,this->uiState,this->isBlocked,extensionsStanza,this->readUpToId,this->readUpToBy,null());
-HXLINE(1606)				 ::snikket::Caps tmp1 = this->disco;
-HXDLIN(1606)				 ::snikket::Caps chat1;
-HXDLIN(1606)				if (::hx::IsNotNull( tmp1 )) {
-HXLINE(1606)					chat1 = tmp1;
+HXLINE(1614)			if ((this->klass == HX_("Channel",a3,28,23,9a))) {
+HXLINE(1615)				 ::snikket::Channel channel =  ::snikket::Channel_obj::__alloc( HX_CTX ,client,stream,persistence,this->chatId,this->uiState,this->isBlocked,extensionsStanza,this->readUpToId,this->readUpToBy,null());
+HXLINE(1616)				 ::snikket::Caps tmp1 = this->disco;
+HXDLIN(1616)				 ::snikket::Caps chat1;
+HXDLIN(1616)				if (::hx::IsNotNull( tmp1 )) {
+HXLINE(1616)					chat1 = tmp1;
             				}
             				else {
-HXLINE(1606)					chat1 =  ::snikket::Caps_obj::__alloc( HX_CTX ,HX_("",00,00,00,00),::Array_obj< ::Dynamic>::__new(0),::Array_obj< ::String >::fromData( _hx_array_data_8cddf06d_3,1),null());
+HXLINE(1616)					chat1 =  ::snikket::Caps_obj::__alloc( HX_CTX ,HX_("",00,00,00,00),::Array_obj< ::Dynamic>::__new(0),::Array_obj< ::String >::fromData( _hx_array_data_8cddf06d_3,1),null());
             				}
-HXDLIN(1606)				channel->disco = chat1;
-HXLINE(1607)				bool chat2;
-HXDLIN(1607)				if (::hx::IsNull( this->notificationsFiltered )) {
-HXLINE(1607)					chat2 = !(channel->isPrivate());
+HXDLIN(1616)				channel->disco = chat1;
+HXLINE(1617)				bool chat2;
+HXDLIN(1617)				if (::hx::IsNull( this->notificationsFiltered )) {
+HXLINE(1617)					chat2 = !(channel->isPrivate());
             				}
             				else {
-HXLINE(1607)					chat2 = false;
+HXLINE(1617)					chat2 = false;
             				}
-HXDLIN(1607)				if (chat2) {
-HXLINE(1608)					filterN = true;
-HXDLIN(1608)					mention = filterN;
+HXDLIN(1617)				if (chat2) {
+HXLINE(1618)					filterN = true;
+HXDLIN(1618)					mention = filterN;
             				}
-HXLINE(1602)				chat = channel;
+HXLINE(1612)				chat = channel;
             			}
             			else {
-HXLINE(1612)				HX_STACK_DO_THROW((((HX_("Unknown class of ",0b,cb,7f,f2) + this->chatId) + HX_(": ",a6,32,00,00)) + this->klass));
+HXLINE(1622)				HX_STACK_DO_THROW((((HX_("Unknown class of ",0b,cb,7f,f2) + this->chatId) + HX_(": ",a6,32,00,00)) + this->klass));
             			}
             		}
-HXLINE(1614)		chat->setNotificationsInternal(filterN,mention,this->notifyReply);
-HXLINE(1615)		if (::hx::IsNotNull( this->displayName )) {
-HXLINE(1615)			chat->displayName = this->displayName;
+HXLINE(1624)		chat->setNotificationsInternal(filterN,mention,this->notifyReply);
+HXLINE(1625)		if (::hx::IsNotNull( this->displayName )) {
+HXLINE(1625)			chat->displayName = this->displayName;
             		}
-HXLINE(1616)		if (::hx::IsNotNull( this->avatarSha1 )) {
-HXLINE(1616)			chat->setAvatarSha1(this->avatarSha1);
+HXLINE(1626)		if (::hx::IsNotNull( this->avatarSha1 )) {
+HXLINE(1626)			chat->setAvatarSha1(this->avatarSha1);
             		}
-HXLINE(1617)		chat->setTrusted(this->trusted);
-HXLINE(1618)		{
-HXLINE(1618)			::Dynamic map = this->presence;
-HXDLIN(1618)			::Dynamic _g_map = map;
-HXDLIN(1618)			 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
-HXDLIN(1618)			while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE(1618)				::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
-HXDLIN(1618)				 ::snikket::Presence _g_value = ( ( ::snikket::Presence)(::haxe::IMap_obj::get(_g_map,key)) );
-HXDLIN(1618)				::String _g_key = key;
-HXDLIN(1618)				::String resource = _g_key;
-HXDLIN(1618)				 ::snikket::Presence p = _g_value;
-HXLINE(1619)				chat->setPresence(resource,p);
+HXLINE(1627)		chat->setTrusted(this->trusted);
+HXLINE(1628)		{
+HXLINE(1628)			::Dynamic map = this->presence;
+HXDLIN(1628)			::Dynamic _g_map = map;
+HXDLIN(1628)			 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
+HXDLIN(1628)			while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE(1628)				::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
+HXDLIN(1628)				 ::snikket::Presence _g_value = ( ( ::snikket::Presence)(::haxe::IMap_obj::get(_g_map,key)) );
+HXDLIN(1628)				::String _g_key = key;
+HXDLIN(1628)				::String resource = _g_key;
+HXDLIN(1628)				 ::snikket::Presence p = _g_value;
+HXLINE(1629)				chat->setPresence(resource,p);
             			}
             		}
-HXLINE(1621)		return chat;
+HXLINE(1631)		return chat;
             	}
 
 
diff --git a/Sources/c_snikket/src/snikket/jingle/IncomingProposedSession.cpp b/Sources/c_snikket/src/snikket/jingle/IncomingProposedSession.cpp
index dd8e202..47cc82e 100644
--- a/Sources/c_snikket/src/snikket/jingle/IncomingProposedSession.cpp
+++ b/Sources/c_snikket/src/snikket/jingle/IncomingProposedSession.cpp
@@ -65,34 +65,34 @@
 #include <thenshim/_Promise/Promise_Impl_.h>
 #endif
 
-HX_DEFINE_STACK_FRAME(_hx_pos_070c1caeb07d54b9_61_new,"snikket.jingle.IncomingProposedSession","new",0x8d7afc70,"snikket.jingle.IncomingProposedSession.new","snikket/jingle/Session.hx",61,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_81_ring,"snikket.jingle.IncomingProposedSession","ring",0x40c9c1a0,"snikket.jingle.IncomingProposedSession.ring","snikket/jingle/Session.hx",81,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_75_ring,"snikket.jingle.IncomingProposedSession","ring",0x40c9c1a0,"snikket.jingle.IncomingProposedSession.ring","snikket/jingle/Session.hx",75,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_93_hangup,"snikket.jingle.IncomingProposedSession","hangup",0xbd2f903d,"snikket.jingle.IncomingProposedSession.hangup","snikket/jingle/Session.hx",93,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_86_hangup,"snikket.jingle.IncomingProposedSession","hangup",0xbd2f903d,"snikket.jingle.IncomingProposedSession.hangup","snikket/jingle/Session.hx",86,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_100_retract,"snikket.jingle.IncomingProposedSession","retract",0x81505611,"snikket.jingle.IncomingProposedSession.retract","snikket/jingle/Session.hx",100,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_104_terminate,"snikket.jingle.IncomingProposedSession","terminate",0xabf9ca71,"snikket.jingle.IncomingProposedSession.terminate","snikket/jingle/Session.hx",104,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_108_contentAdd,"snikket.jingle.IncomingProposedSession","contentAdd",0xf85adc58,"snikket.jingle.IncomingProposedSession.contentAdd","snikket/jingle/Session.hx",108,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_112_contentAccept,"snikket.jingle.IncomingProposedSession","contentAccept",0x4d3ea531,"snikket.jingle.IncomingProposedSession.contentAccept","snikket/jingle/Session.hx",112,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_115_transportInfo,"snikket.jingle.IncomingProposedSession","transportInfo",0x230c1cc7,"snikket.jingle.IncomingProposedSession.transportInfo","snikket/jingle/Session.hx",115,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_126_accept,"snikket.jingle.IncomingProposedSession","accept",0x103650f8,"snikket.jingle.IncomingProposedSession.accept","snikket/jingle/Session.hx",126,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_120_accept,"snikket.jingle.IncomingProposedSession","accept",0x103650f8,"snikket.jingle.IncomingProposedSession.accept","snikket/jingle/Session.hx",120,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_136_initiate,"snikket.jingle.IncomingProposedSession","initiate",0xde9e8449,"snikket.jingle.IncomingProposedSession.initiate","snikket/jingle/Session.hx",136,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_146_addMedia,"snikket.jingle.IncomingProposedSession","addMedia",0xfe2844f3,"snikket.jingle.IncomingProposedSession.addMedia","snikket/jingle/Session.hx",146,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_150_callStatus,"snikket.jingle.IncomingProposedSession","callStatus",0xe5a93460,"snikket.jingle.IncomingProposedSession.callStatus","snikket/jingle/Session.hx",150,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_154_videoTracks,"snikket.jingle.IncomingProposedSession","videoTracks",0xf76e7e73,"snikket.jingle.IncomingProposedSession.videoTracks","snikket/jingle/Session.hx",154,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_158_dtmf,"snikket.jingle.IncomingProposedSession","dtmf",0x37911cd9,"snikket.jingle.IncomingProposedSession.dtmf","snikket/jingle/Session.hx",158,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_162_get_sid,"snikket.jingle.IncomingProposedSession","get_sid",0xab62dbb5,"snikket.jingle.IncomingProposedSession.get_sid","snikket/jingle/Session.hx",162,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_166_get_chatId,"snikket.jingle.IncomingProposedSession","get_chatId",0x5c7bea8c,"snikket.jingle.IncomingProposedSession.get_chatId","snikket/jingle/Session.hx",166,0x6db2dd54)
+HX_DEFINE_STACK_FRAME(_hx_pos_070c1caeb07d54b9_70_new,"snikket.jingle.IncomingProposedSession","new",0x8d7afc70,"snikket.jingle.IncomingProposedSession.new","snikket/jingle/Session.hx",70,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_90_ring,"snikket.jingle.IncomingProposedSession","ring",0x40c9c1a0,"snikket.jingle.IncomingProposedSession.ring","snikket/jingle/Session.hx",90,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_84_ring,"snikket.jingle.IncomingProposedSession","ring",0x40c9c1a0,"snikket.jingle.IncomingProposedSession.ring","snikket/jingle/Session.hx",84,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_102_hangup,"snikket.jingle.IncomingProposedSession","hangup",0xbd2f903d,"snikket.jingle.IncomingProposedSession.hangup","snikket/jingle/Session.hx",102,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_95_hangup,"snikket.jingle.IncomingProposedSession","hangup",0xbd2f903d,"snikket.jingle.IncomingProposedSession.hangup","snikket/jingle/Session.hx",95,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_109_retract,"snikket.jingle.IncomingProposedSession","retract",0x81505611,"snikket.jingle.IncomingProposedSession.retract","snikket/jingle/Session.hx",109,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_113_terminate,"snikket.jingle.IncomingProposedSession","terminate",0xabf9ca71,"snikket.jingle.IncomingProposedSession.terminate","snikket/jingle/Session.hx",113,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_117_contentAdd,"snikket.jingle.IncomingProposedSession","contentAdd",0xf85adc58,"snikket.jingle.IncomingProposedSession.contentAdd","snikket/jingle/Session.hx",117,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_121_contentAccept,"snikket.jingle.IncomingProposedSession","contentAccept",0x4d3ea531,"snikket.jingle.IncomingProposedSession.contentAccept","snikket/jingle/Session.hx",121,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_124_transportInfo,"snikket.jingle.IncomingProposedSession","transportInfo",0x230c1cc7,"snikket.jingle.IncomingProposedSession.transportInfo","snikket/jingle/Session.hx",124,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_135_accept,"snikket.jingle.IncomingProposedSession","accept",0x103650f8,"snikket.jingle.IncomingProposedSession.accept","snikket/jingle/Session.hx",135,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_129_accept,"snikket.jingle.IncomingProposedSession","accept",0x103650f8,"snikket.jingle.IncomingProposedSession.accept","snikket/jingle/Session.hx",129,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_145_initiate,"snikket.jingle.IncomingProposedSession","initiate",0xde9e8449,"snikket.jingle.IncomingProposedSession.initiate","snikket/jingle/Session.hx",145,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_156_addMedia,"snikket.jingle.IncomingProposedSession","addMedia",0xfe2844f3,"snikket.jingle.IncomingProposedSession.addMedia","snikket/jingle/Session.hx",156,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_160_callStatus,"snikket.jingle.IncomingProposedSession","callStatus",0xe5a93460,"snikket.jingle.IncomingProposedSession.callStatus","snikket/jingle/Session.hx",160,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_164_videoTracks,"snikket.jingle.IncomingProposedSession","videoTracks",0xf76e7e73,"snikket.jingle.IncomingProposedSession.videoTracks","snikket/jingle/Session.hx",164,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_168_dtmf,"snikket.jingle.IncomingProposedSession","dtmf",0x37911cd9,"snikket.jingle.IncomingProposedSession.dtmf","snikket/jingle/Session.hx",168,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_172_get_sid,"snikket.jingle.IncomingProposedSession","get_sid",0xab62dbb5,"snikket.jingle.IncomingProposedSession.get_sid","snikket/jingle/Session.hx",172,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_070c1caeb07d54b9_176_get_chatId,"snikket.jingle.IncomingProposedSession","get_chatId",0x5c7bea8c,"snikket.jingle.IncomingProposedSession.get_chatId","snikket/jingle/Session.hx",176,0x6db2dd54)
 namespace snikket{
 namespace jingle{
 
 void IncomingProposedSession_obj::__construct( ::snikket::Client client, ::snikket::JID from,::String sid){
-            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_61_new)
-HXLINE(  67)		this->accepted = false;
-HXLINE(  70)		this->client = client;
-HXLINE(  71)		this->from = from;
-HXLINE(  72)		this->_sid = sid;
+            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_70_new)
+HXLINE(  76)		this->accepted = false;
+HXLINE(  79)		this->client = client;
+HXLINE(  80)		this->from = from;
+HXLINE(  81)		this->_sid = sid;
             	}
 
 Dynamic IncomingProposedSession_obj::__CreateEmpty() { return new IncomingProposedSession_obj; }
@@ -122,7 +122,7 @@ static ::snikket::jingle::Session_obj _hx_snikket_jingle_IncomingProposedSession
 	( void (::hx::Object::*)( ::snikket::Stanza))&::snikket::jingle::IncomingProposedSession_obj::contentAccept,
 	( ::Dynamic (::hx::Object::*)( ::snikket::Stanza))&::snikket::jingle::IncomingProposedSession_obj::transportInfo,
 	( void (::hx::Object::*)(::Array< ::Dynamic>))&::snikket::jingle::IncomingProposedSession_obj::addMedia,
-	( ::String (::hx::Object::*)())&::snikket::jingle::IncomingProposedSession_obj::callStatus,
+	( int (::hx::Object::*)())&::snikket::jingle::IncomingProposedSession_obj::callStatus,
 	( ::Array< ::Dynamic> (::hx::Object::*)())&::snikket::jingle::IncomingProposedSession_obj::videoTracks,
 	(  ::snikket::jingle::DTMFSender (::hx::Object::*)())&::snikket::jingle::IncomingProposedSession_obj::dtmf,
 };
@@ -141,19 +141,19 @@ void *IncomingProposedSession_obj::_hx_getInterface(int inHash) {
 void IncomingProposedSession_obj::ring(){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::jingle::IncomingProposedSession,_gthis) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> stored){
-            			HX_GC_STACKFRAME(&_hx_pos_070c1caeb07d54b9_81_ring)
-HXLINE(  81)			_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),1);
+            			HX_GC_STACKFRAME(&_hx_pos_070c1caeb07d54b9_90_ring)
+HXLINE(  90)			_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),1);
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_070c1caeb07d54b9_75_ring)
-HXDLIN(  75)		 ::snikket::jingle::IncomingProposedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(  78)		 ::snikket::Stanza event =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("ringing",32,9b,80,1a), ::Dynamic(::hx::Anon_obj::Create(2)
+            	HX_GC_STACKFRAME(&_hx_pos_070c1caeb07d54b9_84_ring)
+HXDLIN(  84)		 ::snikket::jingle::IncomingProposedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(  87)		 ::snikket::Stanza event =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("ringing",32,9b,80,1a), ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("id",db,5b,00,00),this->get_sid())
             			->setFixed(1,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07))));
-HXLINE(  79)		 ::snikket::ChatMessage msg = ::snikket::jingle::_Session::Session_Fields__obj::mkCallMessage(this->from,this->client->jid,event);
-HXLINE(  80)		this->client->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,msg), ::Dynamic(new _hx_Closure_0(_gthis)));
-HXLINE(  83)		this->client->trigger(HX_("call/ring",01,8e,91,54), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE(  88)		 ::snikket::ChatMessage msg = ::snikket::jingle::_Session::Session_Fields__obj::mkCallMessage(this->from,this->client->jid,event);
+HXLINE(  89)		this->client->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,msg), ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE(  92)		this->client->trigger(HX_("call/ring",01,8e,91,54), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("session",56,17,98,93),::hx::ObjectPtr<OBJ_>(this))));
             	}
 
@@ -163,22 +163,22 @@ HX_DEFINE_DYNAMIC_FUNC0(IncomingProposedSession_obj,ring,(void))
 void IncomingProposedSession_obj::hangup(){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::jingle::IncomingProposedSession,_gthis) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> stored){
-            			HX_GC_STACKFRAME(&_hx_pos_070c1caeb07d54b9_93_hangup)
-HXLINE(  93)			_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),1);
+            			HX_GC_STACKFRAME(&_hx_pos_070c1caeb07d54b9_102_hangup)
+HXLINE( 102)			_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),1);
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_070c1caeb07d54b9_86_hangup)
-HXDLIN(  86)		 ::snikket::jingle::IncomingProposedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE(  90)		 ::snikket::Stanza event =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("reject",5f,51,85,02), ::Dynamic(::hx::Anon_obj::Create(2)
+            	HX_GC_STACKFRAME(&_hx_pos_070c1caeb07d54b9_95_hangup)
+HXDLIN(  95)		 ::snikket::jingle::IncomingProposedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE(  99)		 ::snikket::Stanza event =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("reject",5f,51,85,02), ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("id",db,5b,00,00),this->get_sid())
             			->setFixed(1,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07))));
-HXLINE(  91)		 ::snikket::ChatMessage msg = ::snikket::jingle::_Session::Session_Fields__obj::mkCallMessage(this->from,this->client->jid,event);
-HXLINE(  92)		this->client->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,msg), ::Dynamic(new _hx_Closure_0(_gthis)));
-HXLINE(  95)		{
-HXLINE(  95)			 ::snikket::Client this1 = this->client;
-HXDLIN(  95)			::Dynamic this2 = this1->getDirectChat(this->from->asBare()->asString(),false)->jingleSessions;
-HXDLIN(  95)			( ( ::haxe::ds::StringMap)(this2) )->remove(this->get_sid());
+HXLINE( 100)		 ::snikket::ChatMessage msg = ::snikket::jingle::_Session::Session_Fields__obj::mkCallMessage(this->from,this->client->jid,event);
+HXLINE( 101)		this->client->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,msg), ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE( 104)		{
+HXLINE( 104)			 ::snikket::Client this1 = this->client;
+HXDLIN( 104)			::Dynamic this2 = this1->getDirectChat(this->from->asBare()->asString(),false)->jingleSessions;
+HXDLIN( 104)			( ( ::haxe::ds::StringMap)(this2) )->remove(this->get_sid());
             		}
             	}
 
@@ -186,10 +186,10 @@ HXDLIN(  95)			( ( ::haxe::ds::StringMap)(this2) )->remove(this->get_sid());
 HX_DEFINE_DYNAMIC_FUNC0(IncomingProposedSession_obj,hangup,(void))
 
 void IncomingProposedSession_obj::retract(){
-            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_100_retract)
-HXDLIN( 100)		 ::snikket::Client _hx_tmp = this->client;
-HXDLIN( 100)		::String _hx_tmp1 = this->get_chatId();
-HXDLIN( 100)		_hx_tmp->trigger(HX_("call/retract",50,bc,8d,db), ::Dynamic(::hx::Anon_obj::Create(2)
+            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_109_retract)
+HXDLIN( 109)		 ::snikket::Client _hx_tmp = this->client;
+HXDLIN( 109)		::String _hx_tmp1 = this->get_chatId();
+HXDLIN( 109)		_hx_tmp->trigger(HX_("call/retract",50,bc,8d,db), ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("chatId",d3,04,77,b7),_hx_tmp1)
             			->setFixed(1,HX_("sid",0e,9f,57,00),this->get_sid())));
             	}
@@ -198,61 +198,61 @@ HXDLIN( 100)		_hx_tmp->trigger(HX_("call/retract",50,bc,8d,db), ::Dynamic(::hx::
 HX_DEFINE_DYNAMIC_FUNC0(IncomingProposedSession_obj,retract,(void))
 
 void IncomingProposedSession_obj::terminate(){
-            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_104_terminate)
-HXDLIN( 104)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
-HXDLIN( 104)		::String _hx_tmp1 = (HX_("Tried to terminate before session-initiate: ",a9,d4,f3,a4) + this->get_sid());
-HXDLIN( 104)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
+            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_113_terminate)
+HXDLIN( 113)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
+HXDLIN( 113)		::String _hx_tmp1 = (HX_("Tried to terminate before session-initiate: ",a9,d4,f3,a4) + this->get_sid());
+HXDLIN( 113)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
             			->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.jingle.IncomingProposedSession",7e,44,d0,fa))
             			->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)))
             			->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("terminate",61,32,d2,fd))
             			->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/jingle/Session.hx",54,dd,b2,6d))
-            			->setFixed(4,HX_("lineNumber",dd,81,22,76),104)));
+            			->setFixed(4,HX_("lineNumber",dd,81,22,76),113)));
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(IncomingProposedSession_obj,terminate,(void))
 
 void IncomingProposedSession_obj::contentAdd( ::snikket::Stanza _){
-            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_108_contentAdd)
-HXDLIN( 108)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
-HXDLIN( 108)		::String _hx_tmp1 = (HX_("Got content-add before session-initiate: ",10,d3,fa,8a) + this->get_sid());
-HXDLIN( 108)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
+            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_117_contentAdd)
+HXDLIN( 117)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
+HXDLIN( 117)		::String _hx_tmp1 = (HX_("Got content-add before session-initiate: ",10,d3,fa,8a) + this->get_sid());
+HXDLIN( 117)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
             			->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.jingle.IncomingProposedSession",7e,44,d0,fa))
             			->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)))
             			->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("contentAdd",68,66,dd,43))
             			->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/jingle/Session.hx",54,dd,b2,6d))
-            			->setFixed(4,HX_("lineNumber",dd,81,22,76),108)));
+            			->setFixed(4,HX_("lineNumber",dd,81,22,76),117)));
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(IncomingProposedSession_obj,contentAdd,(void))
 
 void IncomingProposedSession_obj::contentAccept( ::snikket::Stanza _){
-            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_112_contentAccept)
-HXDLIN( 112)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
-HXDLIN( 112)		::String _hx_tmp1 = (HX_("Got content-accept before session-initiate: ",47,72,87,71) + this->get_sid());
-HXDLIN( 112)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
+            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_121_contentAccept)
+HXDLIN( 121)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
+HXDLIN( 121)		::String _hx_tmp1 = (HX_("Got content-accept before session-initiate: ",47,72,87,71) + this->get_sid());
+HXDLIN( 121)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
             			->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.jingle.IncomingProposedSession",7e,44,d0,fa))
             			->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)))
             			->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("contentAccept",21,c5,01,e1))
             			->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/jingle/Session.hx",54,dd,b2,6d))
-            			->setFixed(4,HX_("lineNumber",dd,81,22,76),112)));
+            			->setFixed(4,HX_("lineNumber",dd,81,22,76),121)));
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(IncomingProposedSession_obj,contentAccept,(void))
 
 ::Dynamic IncomingProposedSession_obj::transportInfo( ::snikket::Stanza _){
-            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_115_transportInfo)
-HXLINE( 116)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
-HXDLIN( 116)		::String _hx_tmp1 = (HX_("Got transport-info before session-initiate: ",bd,bd,9d,08) + this->get_sid());
-HXDLIN( 116)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
+            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_124_transportInfo)
+HXLINE( 125)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
+HXDLIN( 125)		::String _hx_tmp1 = (HX_("Got transport-info before session-initiate: ",bd,bd,9d,08) + this->get_sid());
+HXDLIN( 125)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
             			->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.jingle.IncomingProposedSession",7e,44,d0,fa))
             			->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)))
             			->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("transportInfo",b7,3c,cf,b6))
             			->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/jingle/Session.hx",54,dd,b2,6d))
-            			->setFixed(4,HX_("lineNumber",dd,81,22,76),116)));
-HXLINE( 117)		return ::thenshim::_Promise::Promise_Impl__obj::resolve(null());
+            			->setFixed(4,HX_("lineNumber",dd,81,22,76),125)));
+HXLINE( 126)		return ::thenshim::_Promise::Promise_Impl__obj::resolve(null());
             	}
 
 
@@ -261,11 +261,11 @@ HX_DEFINE_DYNAMIC_FUNC1(IncomingProposedSession_obj,transportInfo,return )
 void IncomingProposedSession_obj::accept(){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_0, ::snikket::jingle::IncomingProposedSession,_gthis, ::snikket::Stanza,event, ::snikket::ChatMessage,msg) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> stored){
-            			HX_GC_STACKFRAME(&_hx_pos_070c1caeb07d54b9_126_accept)
-HXLINE( 127)			_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),1);
-HXLINE( 128)			 ::snikket::Client _gthis1 = _gthis->client;
-HXLINE( 129)			::String _hx_tmp = _gthis->from->asString();
-HXLINE( 128)			_gthis1->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(3)
+            			HX_GC_STACKFRAME(&_hx_pos_070c1caeb07d54b9_135_accept)
+HXLINE( 136)			_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),1);
+HXLINE( 137)			 ::snikket::Client _gthis1 = _gthis->client;
+HXLINE( 138)			::String _hx_tmp = _gthis->from->asString();
+HXLINE( 137)			_gthis1->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(3)
             				->setFixed(0,HX_("id",db,5b,00,00),msg->versions->__get(0).StaticCast<  ::snikket::ChatMessage >()->localId)
             				->setFixed(1,HX_("to",7b,65,00,00),_hx_tmp)
             				->setFixed(2,HX_("type",ba,f2,08,4d),HX_("chat",d8,5e,bf,41))))->addChild(event)->tag(HX_("store",e1,13,16,84), ::Dynamic(::hx::Anon_obj::Create(1)
@@ -273,84 +273,86 @@ HXLINE( 128)			_gthis1->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_(
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_070c1caeb07d54b9_120_accept)
-HXDLIN( 120)		 ::snikket::jingle::IncomingProposedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 121)		if (this->accepted) {
-HXLINE( 121)			return;
+            	HX_GC_STACKFRAME(&_hx_pos_070c1caeb07d54b9_129_accept)
+HXDLIN( 129)		 ::snikket::jingle::IncomingProposedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 130)		if (this->accepted) {
+HXLINE( 130)			return;
             		}
-HXLINE( 122)		this->accepted = true;
-HXLINE( 123)		 ::snikket::Client _hx_tmp = this->client;
-HXDLIN( 123)		_hx_tmp->sendPresence(this->from->asString(),null());
-HXLINE( 124)		 ::snikket::Stanza event =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("proceed",2e,96,4a,f1), ::Dynamic(::hx::Anon_obj::Create(2)
+HXLINE( 131)		this->accepted = true;
+HXLINE( 132)		 ::snikket::Client _hx_tmp = this->client;
+HXDLIN( 132)		_hx_tmp->sendPresence(this->from->asString(),null());
+HXLINE( 133)		 ::snikket::Stanza event =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("proceed",2e,96,4a,f1), ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("id",db,5b,00,00),this->get_sid())
             			->setFixed(1,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07))));
-HXLINE( 125)		 ::snikket::ChatMessage msg = ::snikket::jingle::_Session::Session_Fields__obj::mkCallMessage(this->from,this->client->jid,event);
-HXLINE( 126)		this->client->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,msg), ::Dynamic(new _hx_Closure_0(_gthis,event,msg)));
+HXLINE( 134)		 ::snikket::ChatMessage msg = ::snikket::jingle::_Session::Session_Fields__obj::mkCallMessage(this->from,this->client->jid,event);
+HXLINE( 135)		this->client->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,msg), ::Dynamic(new _hx_Closure_0(_gthis,event,msg)));
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(IncomingProposedSession_obj,accept,(void))
 
  ::snikket::jingle::InitiatedSession IncomingProposedSession_obj::initiate( ::snikket::Stanza stanza){
-            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_136_initiate)
-HXLINE( 138)		 ::snikket::jingle::InitiatedSession session = ::snikket::jingle::InitiatedSession_obj::fromSessionInitiate(this->client,stanza);
-HXLINE( 139)		::String _hx_tmp = session->get_sid();
-HXDLIN( 139)		if ((_hx_tmp != this->get_sid())) {
-HXLINE( 139)			HX_STACK_DO_THROW(HX_("id mismatch",33,05,74,bd));
+            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_145_initiate)
+HXLINE( 147)		 ::snikket::jingle::InitiatedSession session = ::snikket::jingle::InitiatedSession_obj::fromSessionInitiate(this->client,stanza);
+HXLINE( 148)		::String _hx_tmp = session->get_sid();
+HXDLIN( 148)		if ((_hx_tmp != this->get_sid())) {
+HXLINE( 148)			HX_STACK_DO_THROW(HX_("id mismatch",33,05,74,bd));
             		}
-HXLINE( 140)		if (!(this->accepted)) {
-HXLINE( 140)			HX_STACK_DO_THROW(HX_("trying to initiate unaccepted session",b1,34,34,a4));
+HXLINE( 149)		if (!(this->accepted)) {
+HXLINE( 149)			HX_STACK_DO_THROW(HX_("trying to initiate unaccepted session",b1,34,34,a4));
             		}
-HXLINE( 141)		session->accept();
-HXLINE( 142)		return session;
+HXLINE( 150)		session->accept();
+HXLINE( 151)		this->client->trigger(HX_("call/updateStatus",6c,f5,e6,ec), ::Dynamic(::hx::Anon_obj::Create(1)
+            			->setFixed(0,HX_("session",56,17,98,93),session)));
+HXLINE( 152)		return session;
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(IncomingProposedSession_obj,initiate,return )
 
 void IncomingProposedSession_obj::addMedia(::Array< ::Dynamic> _){
-            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_146_addMedia)
-HXDLIN( 146)		HX_STACK_DO_THROW(HX_("Cannot add media before call starts",aa,0a,79,d5));
+            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_156_addMedia)
+HXDLIN( 156)		HX_STACK_DO_THROW(HX_("Cannot add media before call starts",aa,0a,79,d5));
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(IncomingProposedSession_obj,addMedia,(void))
 
-::String IncomingProposedSession_obj::callStatus(){
-            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_150_callStatus)
-HXDLIN( 150)		return HX_("incoming",e6,40,15,1b);
+int IncomingProposedSession_obj::callStatus(){
+            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_160_callStatus)
+HXDLIN( 160)		return 1;
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(IncomingProposedSession_obj,callStatus,return )
 
 ::Array< ::Dynamic> IncomingProposedSession_obj::videoTracks(){
-            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_154_videoTracks)
-HXDLIN( 154)		return ::Array_obj< ::Dynamic>::__new(0);
+            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_164_videoTracks)
+HXDLIN( 164)		return ::Array_obj< ::Dynamic>::__new(0);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(IncomingProposedSession_obj,videoTracks,return )
 
  ::snikket::jingle::DTMFSender IncomingProposedSession_obj::dtmf(){
-            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_158_dtmf)
-HXDLIN( 158)		return null();
+            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_168_dtmf)
+HXDLIN( 168)		return null();
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(IncomingProposedSession_obj,dtmf,return )
 
 ::String IncomingProposedSession_obj::get_sid(){
-            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_162_get_sid)
-HXDLIN( 162)		return this->_sid;
+            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_172_get_sid)
+HXDLIN( 172)		return this->_sid;
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(IncomingProposedSession_obj,get_sid,return )
 
 ::String IncomingProposedSession_obj::get_chatId(){
-            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_166_get_chatId)
-HXDLIN( 166)		return this->from->asBare()->asString();
+            	HX_STACKFRAME(&_hx_pos_070c1caeb07d54b9_176_get_chatId)
+HXDLIN( 176)		return this->from->asBare()->asString();
             	}
 
 
diff --git a/Sources/c_snikket/src/snikket/jingle/InitiatedSession.cpp b/Sources/c_snikket/src/snikket/jingle/InitiatedSession.cpp
index 323ac94..5f15db7 100644
--- a/Sources/c_snikket/src/snikket/jingle/InitiatedSession.cpp
+++ b/Sources/c_snikket/src/snikket/jingle/InitiatedSession.cpp
@@ -13,6 +13,9 @@
 #ifndef INCLUDED__HaxeCBridge_Internal
 #include <_HaxeCBridge/Internal.h>
 #endif
+#ifndef INCLUDED_cpp_Int64Map
+#include <cpp/Int64Map.h>
+#endif
 #ifndef INCLUDED_haxe_IMap
 #include <haxe/IMap.h>
 #endif
@@ -22,9 +25,6 @@
 #ifndef INCLUDED_haxe_Timer
 #include <haxe/Timer.h>
 #endif
-#ifndef INCLUDED_haxe_ds_IntMap
-#include <haxe/ds/IntMap.h>
-#endif
 #ifndef INCLUDED_snikket_Caps
 #include <snikket/Caps.h>
 #endif
@@ -107,88 +107,88 @@
 #include <thenshim/_Promise/Promise_Impl_.h>
 #endif
 
-HX_DEFINE_STACK_FRAME(_hx_pos_de51993dbb06b02d_289_new,"snikket.jingle.InitiatedSession","new",0x32cfb629,"snikket.jingle.InitiatedSession.new","snikket/jingle/Session.hx",289,0x6db2dd54)
+HX_DEFINE_STACK_FRAME(_hx_pos_de51993dbb06b02d_300_new,"snikket.jingle.InitiatedSession","new",0x32cfb629,"snikket.jingle.InitiatedSession.new","snikket/jingle/Session.hx",300,0x6db2dd54)
 HX_LOCAL_STACK_FRAME(_hx_pos_042a82ddefcd0233_308_sid__fromC,"snikket.jingle.InitiatedSession","sid__fromC",0x9aaf4482,"snikket.jingle.InitiatedSession.sid__fromC","HaxeCBridge.hx",308,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_042a82ddefcd0233_308_chatId__fromC,"snikket.jingle.InitiatedSession","chatId__fromC",0xf380570f,"snikket.jingle.InitiatedSession.chatId__fromC","HaxeCBridge.hx",308,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_329_get_sid,"snikket.jingle.InitiatedSession","get_sid",0x312965ee,"snikket.jingle.InitiatedSession.get_sid","snikket/jingle/Session.hx",329,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_333_get_chatId,"snikket.jingle.InitiatedSession","get_chatId",0x9394c9f3,"snikket.jingle.InitiatedSession.get_chatId","snikket/jingle/Session.hx",333,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_338_ring,"snikket.jingle.InitiatedSession","ring",0x459789c7,"snikket.jingle.InitiatedSession.ring","snikket/jingle/Session.hx",338,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_343_retract,"snikket.jingle.InitiatedSession","retract",0x0716e04a,"snikket.jingle.InitiatedSession.retract","snikket/jingle/Session.hx",343,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_349_accept,"snikket.jingle.InitiatedSession","accept",0x3a23b0df,"snikket.jingle.InitiatedSession.accept","snikket/jingle/Session.hx",349,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_350_accept,"snikket.jingle.InitiatedSession","accept",0x3a23b0df,"snikket.jingle.InitiatedSession.accept","snikket/jingle/Session.hx",350,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_346_accept,"snikket.jingle.InitiatedSession","accept",0x3a23b0df,"snikket.jingle.InitiatedSession.accept","snikket/jingle/Session.hx",346,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_354_hangup,"snikket.jingle.InitiatedSession","hangup",0xe71cf024,"snikket.jingle.InitiatedSession.hangup","snikket/jingle/Session.hx",354,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_365_initiate,"snikket.jingle.InitiatedSession","initiate",0x6690ebf0,"snikket.jingle.InitiatedSession.initiate","snikket/jingle/Session.hx",365,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_384_terminate,"snikket.jingle.InitiatedSession","terminate",0x182214ea,"snikket.jingle.InitiatedSession.terminate","snikket/jingle/Session.hx",384,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_371_terminate,"snikket.jingle.InitiatedSession","terminate",0x182214ea,"snikket.jingle.InitiatedSession.terminate","snikket/jingle/Session.hx",371,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_418_contentAdd,"snikket.jingle.InitiatedSession","contentAdd",0x2f73bbbf,"snikket.jingle.InitiatedSession.contentAdd","snikket/jingle/Session.hx",418,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_417_contentAdd,"snikket.jingle.InitiatedSession","contentAdd",0x2f73bbbf,"snikket.jingle.InitiatedSession.contentAdd","snikket/jingle/Session.hx",417,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_411_contentAdd,"snikket.jingle.InitiatedSession","contentAdd",0x2f73bbbf,"snikket.jingle.InitiatedSession.contentAdd","snikket/jingle/Session.hx",411,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_410_contentAdd,"snikket.jingle.InitiatedSession","contentAdd",0x2f73bbbf,"snikket.jingle.InitiatedSession.contentAdd","snikket/jingle/Session.hx",410,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_395_contentAdd,"snikket.jingle.InitiatedSession","contentAdd",0x2f73bbbf,"snikket.jingle.InitiatedSession.contentAdd","snikket/jingle/Session.hx",395,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_340_get_sid,"snikket.jingle.InitiatedSession","get_sid",0x312965ee,"snikket.jingle.InitiatedSession.get_sid","snikket/jingle/Session.hx",340,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_344_get_chatId,"snikket.jingle.InitiatedSession","get_chatId",0x9394c9f3,"snikket.jingle.InitiatedSession.get_chatId","snikket/jingle/Session.hx",344,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_349_ring,"snikket.jingle.InitiatedSession","ring",0x459789c7,"snikket.jingle.InitiatedSession.ring","snikket/jingle/Session.hx",349,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_354_retract,"snikket.jingle.InitiatedSession","retract",0x0716e04a,"snikket.jingle.InitiatedSession.retract","snikket/jingle/Session.hx",354,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_360_accept,"snikket.jingle.InitiatedSession","accept",0x3a23b0df,"snikket.jingle.InitiatedSession.accept","snikket/jingle/Session.hx",360,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_361_accept,"snikket.jingle.InitiatedSession","accept",0x3a23b0df,"snikket.jingle.InitiatedSession.accept","snikket/jingle/Session.hx",361,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_357_accept,"snikket.jingle.InitiatedSession","accept",0x3a23b0df,"snikket.jingle.InitiatedSession.accept","snikket/jingle/Session.hx",357,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_365_hangup,"snikket.jingle.InitiatedSession","hangup",0xe71cf024,"snikket.jingle.InitiatedSession.hangup","snikket/jingle/Session.hx",365,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_376_initiate,"snikket.jingle.InitiatedSession","initiate",0x6690ebf0,"snikket.jingle.InitiatedSession.initiate","snikket/jingle/Session.hx",376,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_395_terminate,"snikket.jingle.InitiatedSession","terminate",0x182214ea,"snikket.jingle.InitiatedSession.terminate","snikket/jingle/Session.hx",395,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_382_terminate,"snikket.jingle.InitiatedSession","terminate",0x182214ea,"snikket.jingle.InitiatedSession.terminate","snikket/jingle/Session.hx",382,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_429_contentAdd,"snikket.jingle.InitiatedSession","contentAdd",0x2f73bbbf,"snikket.jingle.InitiatedSession.contentAdd","snikket/jingle/Session.hx",429,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_428_contentAdd,"snikket.jingle.InitiatedSession","contentAdd",0x2f73bbbf,"snikket.jingle.InitiatedSession.contentAdd","snikket/jingle/Session.hx",428,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_422_contentAdd,"snikket.jingle.InitiatedSession","contentAdd",0x2f73bbbf,"snikket.jingle.InitiatedSession.contentAdd","snikket/jingle/Session.hx",422,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_421_contentAdd,"snikket.jingle.InitiatedSession","contentAdd",0x2f73bbbf,"snikket.jingle.InitiatedSession.contentAdd","snikket/jingle/Session.hx",421,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_406_contentAdd,"snikket.jingle.InitiatedSession","contentAdd",0x2f73bbbf,"snikket.jingle.InitiatedSession.contentAdd","snikket/jingle/Session.hx",406,0x6db2dd54)
 static const bool _hx_array_data_22056db7_23[] = {
 	0,
 };
 static const bool _hx_array_data_22056db7_24[] = {
 	0,
 };
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_402_contentAdd,"snikket.jingle.InitiatedSession","contentAdd",0x2f73bbbf,"snikket.jingle.InitiatedSession.contentAdd","snikket/jingle/Session.hx",402,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_434_contentAccept,"snikket.jingle.InitiatedSession","contentAccept",0x3fd0202a,"snikket.jingle.InitiatedSession.contentAccept","snikket/jingle/Session.hx",434,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_461_transportInfo,"snikket.jingle.InitiatedSession","transportInfo",0x159d97c0,"snikket.jingle.InitiatedSession.transportInfo","snikket/jingle/Session.hx",461,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_447_transportInfo,"snikket.jingle.InitiatedSession","transportInfo",0x159d97c0,"snikket.jingle.InitiatedSession.transportInfo","snikket/jingle/Session.hx",447,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_464_addMedia,"snikket.jingle.InitiatedSession","addMedia",0x861aac9a,"snikket.jingle.InitiatedSession.addMedia","snikket/jingle/Session.hx",464,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_413_contentAdd,"snikket.jingle.InitiatedSession","contentAdd",0x2f73bbbf,"snikket.jingle.InitiatedSession.contentAdd","snikket/jingle/Session.hx",413,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_445_contentAccept,"snikket.jingle.InitiatedSession","contentAccept",0x3fd0202a,"snikket.jingle.InitiatedSession.contentAccept","snikket/jingle/Session.hx",445,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_472_transportInfo,"snikket.jingle.InitiatedSession","transportInfo",0x159d97c0,"snikket.jingle.InitiatedSession.transportInfo","snikket/jingle/Session.hx",472,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_458_transportInfo,"snikket.jingle.InitiatedSession","transportInfo",0x159d97c0,"snikket.jingle.InitiatedSession.transportInfo","snikket/jingle/Session.hx",458,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_475_addMedia,"snikket.jingle.InitiatedSession","addMedia",0x861aac9a,"snikket.jingle.InitiatedSession.addMedia","snikket/jingle/Session.hx",475,0x6db2dd54)
 HX_LOCAL_STACK_FRAME(_hx_pos_042a82ddefcd0233_252_addMedia__fromC,"snikket.jingle.InitiatedSession","addMedia__fromC",0x8f17eb1f,"snikket.jingle.InitiatedSession.addMedia__fromC","HaxeCBridge.hx",252,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_478_callStatus,"snikket.jingle.InitiatedSession","callStatus",0x1cc213c7,"snikket.jingle.InitiatedSession.callStatus","snikket/jingle/Session.hx",478,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_481_videoTracks,"snikket.jingle.InitiatedSession","videoTracks",0xf619192c,"snikket.jingle.InitiatedSession.videoTracks","snikket/jingle/Session.hx",481,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_489_callStatus,"snikket.jingle.InitiatedSession","callStatus",0x1cc213c7,"snikket.jingle.InitiatedSession.callStatus","snikket/jingle/Session.hx",489,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_498_videoTracks,"snikket.jingle.InitiatedSession","videoTracks",0xf619192c,"snikket.jingle.InitiatedSession.videoTracks","snikket/jingle/Session.hx",498,0x6db2dd54)
 HX_LOCAL_STACK_FRAME(_hx_pos_042a82ddefcd0233_250_videoTracks__fromC,"snikket.jingle.InitiatedSession","videoTracks__fromC",0x21c414cd,"snikket.jingle.InitiatedSession.videoTracks__fromC","HaxeCBridge.hx",250,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_490_dtmf,"snikket.jingle.InitiatedSession","dtmf",0x3c5ee500,"snikket.jingle.InitiatedSession.dtmf","snikket/jingle/Session.hx",490,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_488_dtmf,"snikket.jingle.InitiatedSession","dtmf",0x3c5ee500,"snikket.jingle.InitiatedSession.dtmf","snikket/jingle/Session.hx",488,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_505_sendIceCandidate,"snikket.jingle.InitiatedSession","sendIceCandidate",0x8f88e577,"snikket.jingle.InitiatedSession.sendIceCandidate","snikket/jingle/Session.hx",505,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_517_sendIceCandidate,"snikket.jingle.InitiatedSession","sendIceCandidate",0x8f88e577,"snikket.jingle.InitiatedSession.sendIceCandidate","snikket/jingle/Session.hx",517,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_495_sendIceCandidate,"snikket.jingle.InitiatedSession","sendIceCandidate",0x8f88e577,"snikket.jingle.InitiatedSession.sendIceCandidate","snikket/jingle/Session.hx",495,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_518_sendIceCandidate,"snikket.jingle.InitiatedSession","sendIceCandidate",0x8f88e577,"snikket.jingle.InitiatedSession.sendIceCandidate","snikket/jingle/Session.hx",518,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_530_supplyMedia,"snikket.jingle.InitiatedSession","supplyMedia",0xd2bd62fe,"snikket.jingle.InitiatedSession.supplyMedia","snikket/jingle/Session.hx",530,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_538_supplyMedia,"snikket.jingle.InitiatedSession","supplyMedia",0xd2bd62fe,"snikket.jingle.InitiatedSession.supplyMedia","snikket/jingle/Session.hx",538,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_529_supplyMedia,"snikket.jingle.InitiatedSession","supplyMedia",0xd2bd62fe,"snikket.jingle.InitiatedSession.supplyMedia","snikket/jingle/Session.hx",529,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_507_dtmf,"snikket.jingle.InitiatedSession","dtmf",0x3c5ee500,"snikket.jingle.InitiatedSession.dtmf","snikket/jingle/Session.hx",507,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_505_dtmf,"snikket.jingle.InitiatedSession","dtmf",0x3c5ee500,"snikket.jingle.InitiatedSession.dtmf","snikket/jingle/Session.hx",505,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_522_sendIceCandidate,"snikket.jingle.InitiatedSession","sendIceCandidate",0x8f88e577,"snikket.jingle.InitiatedSession.sendIceCandidate","snikket/jingle/Session.hx",522,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_534_sendIceCandidate,"snikket.jingle.InitiatedSession","sendIceCandidate",0x8f88e577,"snikket.jingle.InitiatedSession.sendIceCandidate","snikket/jingle/Session.hx",534,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_512_sendIceCandidate,"snikket.jingle.InitiatedSession","sendIceCandidate",0x8f88e577,"snikket.jingle.InitiatedSession.sendIceCandidate","snikket/jingle/Session.hx",512,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_535_sendIceCandidate,"snikket.jingle.InitiatedSession","sendIceCandidate",0x8f88e577,"snikket.jingle.InitiatedSession.sendIceCandidate","snikket/jingle/Session.hx",535,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_547_supplyMedia,"snikket.jingle.InitiatedSession","supplyMedia",0xd2bd62fe,"snikket.jingle.InitiatedSession.supplyMedia","snikket/jingle/Session.hx",547,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_555_supplyMedia,"snikket.jingle.InitiatedSession","supplyMedia",0xd2bd62fe,"snikket.jingle.InitiatedSession.supplyMedia","snikket/jingle/Session.hx",555,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_546_supplyMedia,"snikket.jingle.InitiatedSession","supplyMedia",0xd2bd62fe,"snikket.jingle.InitiatedSession.supplyMedia","snikket/jingle/Session.hx",546,0x6db2dd54)
 HX_LOCAL_STACK_FRAME(_hx_pos_042a82ddefcd0233_252_supplyMedia__fromC,"snikket.jingle.InitiatedSession","supplyMedia__fromC",0x2f8c893b,"snikket.jingle.InitiatedSession.supplyMedia__fromC","HaxeCBridge.hx",252,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_556_setupPeerConnection,"snikket.jingle.InitiatedSession","setupPeerConnection",0xb3182f86,"snikket.jingle.InitiatedSession.setupPeerConnection","snikket/jingle/Session.hx",556,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_558_setupPeerConnection,"snikket.jingle.InitiatedSession","setupPeerConnection",0xb3182f86,"snikket.jingle.InitiatedSession.setupPeerConnection","snikket/jingle/Session.hx",558,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_560_setupPeerConnection,"snikket.jingle.InitiatedSession","setupPeerConnection",0xb3182f86,"snikket.jingle.InitiatedSession.setupPeerConnection","snikket/jingle/Session.hx",560,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_563_setupPeerConnection,"snikket.jingle.InitiatedSession","setupPeerConnection",0xb3182f86,"snikket.jingle.InitiatedSession.setupPeerConnection","snikket/jingle/Session.hx",563,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_553_setupPeerConnection,"snikket.jingle.InitiatedSession","setupPeerConnection",0xb3182f86,"snikket.jingle.InitiatedSession.setupPeerConnection","snikket/jingle/Session.hx",553,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_548_setupPeerConnection,"snikket.jingle.InitiatedSession","setupPeerConnection",0xb3182f86,"snikket.jingle.InitiatedSession.setupPeerConnection","snikket/jingle/Session.hx",548,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_578_setupLocalDescription,"snikket.jingle.InitiatedSession","setupLocalDescription",0x3c0669f7,"snikket.jingle.InitiatedSession.setupLocalDescription","snikket/jingle/Session.hx",578,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_583_setupLocalDescription,"snikket.jingle.InitiatedSession","setupLocalDescription",0x3c0669f7,"snikket.jingle.InitiatedSession.setupLocalDescription","snikket/jingle/Session.hx",583,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_582_setupLocalDescription,"snikket.jingle.InitiatedSession","setupLocalDescription",0x3c0669f7,"snikket.jingle.InitiatedSession.setupLocalDescription","snikket/jingle/Session.hx",582,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_586_setupLocalDescription,"snikket.jingle.InitiatedSession","setupLocalDescription",0x3c0669f7,"snikket.jingle.InitiatedSession.setupLocalDescription","snikket/jingle/Session.hx",586,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_581_setupLocalDescription,"snikket.jingle.InitiatedSession","setupLocalDescription",0x3c0669f7,"snikket.jingle.InitiatedSession.setupLocalDescription","snikket/jingle/Session.hx",581,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_594_setupLocalDescription,"snikket.jingle.InitiatedSession","setupLocalDescription",0x3c0669f7,"snikket.jingle.InitiatedSession.setupLocalDescription","snikket/jingle/Session.hx",594,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_577_setupLocalDescription,"snikket.jingle.InitiatedSession","setupLocalDescription",0x3c0669f7,"snikket.jingle.InitiatedSession.setupLocalDescription","snikket/jingle/Session.hx",577,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_622_onPeerConnection,"snikket.jingle.InitiatedSession","onPeerConnection",0x7ec12276,"snikket.jingle.InitiatedSession.onPeerConnection","snikket/jingle/Session.hx",622,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_628_onPeerConnection,"snikket.jingle.InitiatedSession","onPeerConnection",0x7ec12276,"snikket.jingle.InitiatedSession.onPeerConnection","snikket/jingle/Session.hx",628,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_629_onPeerConnection,"snikket.jingle.InitiatedSession","onPeerConnection",0x7ec12276,"snikket.jingle.InitiatedSession.onPeerConnection","snikket/jingle/Session.hx",629,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_620_onPeerConnection,"snikket.jingle.InitiatedSession","onPeerConnection",0x7ec12276,"snikket.jingle.InitiatedSession.onPeerConnection","snikket/jingle/Session.hx",620,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_316_fromSessionInitiate,"snikket.jingle.InitiatedSession","fromSessionInitiate",0xe2a3554e,"snikket.jingle.InitiatedSession.fromSessionInitiate","snikket/jingle/Session.hx",316,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_289_boot,"snikket.jingle.InitiatedSession","boot",0x3b08ae49,"snikket.jingle.InitiatedSession.boot","snikket/jingle/Session.hx",289,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_573_setupPeerConnection,"snikket.jingle.InitiatedSession","setupPeerConnection",0xb3182f86,"snikket.jingle.InitiatedSession.setupPeerConnection","snikket/jingle/Session.hx",573,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_575_setupPeerConnection,"snikket.jingle.InitiatedSession","setupPeerConnection",0xb3182f86,"snikket.jingle.InitiatedSession.setupPeerConnection","snikket/jingle/Session.hx",575,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_577_setupPeerConnection,"snikket.jingle.InitiatedSession","setupPeerConnection",0xb3182f86,"snikket.jingle.InitiatedSession.setupPeerConnection","snikket/jingle/Session.hx",577,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_579_setupPeerConnection,"snikket.jingle.InitiatedSession","setupPeerConnection",0xb3182f86,"snikket.jingle.InitiatedSession.setupPeerConnection","snikket/jingle/Session.hx",579,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_570_setupPeerConnection,"snikket.jingle.InitiatedSession","setupPeerConnection",0xb3182f86,"snikket.jingle.InitiatedSession.setupPeerConnection","snikket/jingle/Session.hx",570,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_565_setupPeerConnection,"snikket.jingle.InitiatedSession","setupPeerConnection",0xb3182f86,"snikket.jingle.InitiatedSession.setupPeerConnection","snikket/jingle/Session.hx",565,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_596_setupLocalDescription,"snikket.jingle.InitiatedSession","setupLocalDescription",0x3c0669f7,"snikket.jingle.InitiatedSession.setupLocalDescription","snikket/jingle/Session.hx",596,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_601_setupLocalDescription,"snikket.jingle.InitiatedSession","setupLocalDescription",0x3c0669f7,"snikket.jingle.InitiatedSession.setupLocalDescription","snikket/jingle/Session.hx",601,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_600_setupLocalDescription,"snikket.jingle.InitiatedSession","setupLocalDescription",0x3c0669f7,"snikket.jingle.InitiatedSession.setupLocalDescription","snikket/jingle/Session.hx",600,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_604_setupLocalDescription,"snikket.jingle.InitiatedSession","setupLocalDescription",0x3c0669f7,"snikket.jingle.InitiatedSession.setupLocalDescription","snikket/jingle/Session.hx",604,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_599_setupLocalDescription,"snikket.jingle.InitiatedSession","setupLocalDescription",0x3c0669f7,"snikket.jingle.InitiatedSession.setupLocalDescription","snikket/jingle/Session.hx",599,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_612_setupLocalDescription,"snikket.jingle.InitiatedSession","setupLocalDescription",0x3c0669f7,"snikket.jingle.InitiatedSession.setupLocalDescription","snikket/jingle/Session.hx",612,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_595_setupLocalDescription,"snikket.jingle.InitiatedSession","setupLocalDescription",0x3c0669f7,"snikket.jingle.InitiatedSession.setupLocalDescription","snikket/jingle/Session.hx",595,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_640_onPeerConnection,"snikket.jingle.InitiatedSession","onPeerConnection",0x7ec12276,"snikket.jingle.InitiatedSession.onPeerConnection","snikket/jingle/Session.hx",640,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_646_onPeerConnection,"snikket.jingle.InitiatedSession","onPeerConnection",0x7ec12276,"snikket.jingle.InitiatedSession.onPeerConnection","snikket/jingle/Session.hx",646,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_647_onPeerConnection,"snikket.jingle.InitiatedSession","onPeerConnection",0x7ec12276,"snikket.jingle.InitiatedSession.onPeerConnection","snikket/jingle/Session.hx",647,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_638_onPeerConnection,"snikket.jingle.InitiatedSession","onPeerConnection",0x7ec12276,"snikket.jingle.InitiatedSession.onPeerConnection","snikket/jingle/Session.hx",638,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_327_fromSessionInitiate,"snikket.jingle.InitiatedSession","fromSessionInitiate",0xe2a3554e,"snikket.jingle.InitiatedSession.fromSessionInitiate","snikket/jingle/Session.hx",327,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_de51993dbb06b02d_300_boot,"snikket.jingle.InitiatedSession","boot",0x3b08ae49,"snikket.jingle.InitiatedSession.boot","snikket/jingle/Session.hx",300,0x6db2dd54)
 namespace snikket{
 namespace jingle{
 
 void InitiatedSession_obj::__construct( ::snikket::Client client, ::snikket::JID counterpart,::String sid, ::snikket::jingle::SessionDescription remoteDescription){
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_289_new)
-HXLINE( 304)		this->candidatesDone = null();
-HXLINE( 302)		this->afterMedia = null();
-HXLINE( 301)		this->accepted = false;
-HXLINE( 300)		this->queuedOutboundCandidate = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 299)		this->queuedInboundTransportInfo = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 298)		this->peerDtlsSetup = HX_("actpass",23,e7,c3,6b);
-HXLINE( 297)		this->pc = null();
-HXLINE( 296)		this->localDescription = null();
-HXLINE( 295)		this->remoteDescription = null();
-HXLINE( 308)		this->client = client;
-HXLINE( 309)		this->counterpart = counterpart;
-HXLINE( 310)		this->_sid = sid;
-HXLINE( 311)		this->remoteDescription = remoteDescription;
-HXLINE( 312)		this->initiator = ::hx::IsNull( remoteDescription );
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_300_new)
+HXLINE( 315)		this->candidatesDone = null();
+HXLINE( 313)		this->afterMedia = null();
+HXLINE( 312)		this->accepted = false;
+HXLINE( 311)		this->queuedOutboundCandidate = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 310)		this->queuedInboundTransportInfo = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 309)		this->peerDtlsSetup = HX_("actpass",23,e7,c3,6b);
+HXLINE( 308)		this->pc = null();
+HXLINE( 307)		this->localDescription = null();
+HXLINE( 306)		this->remoteDescription = null();
+HXLINE( 319)		this->client = client;
+HXLINE( 320)		this->counterpart = counterpart;
+HXLINE( 321)		this->_sid = sid;
+HXLINE( 322)		this->remoteDescription = remoteDescription;
+HXLINE( 323)		this->initiator = ::hx::IsNull( remoteDescription );
             	}
 
 Dynamic InitiatedSession_obj::__CreateEmpty() { return new InitiatedSession_obj; }
@@ -218,7 +218,7 @@ static ::snikket::jingle::Session_obj _hx_snikket_jingle_InitiatedSession__hx_sn
 	( void (::hx::Object::*)( ::snikket::Stanza))&::snikket::jingle::InitiatedSession_obj::contentAccept,
 	( ::Dynamic (::hx::Object::*)( ::snikket::Stanza))&::snikket::jingle::InitiatedSession_obj::transportInfo,
 	( void (::hx::Object::*)(::Array< ::Dynamic>))&::snikket::jingle::InitiatedSession_obj::addMedia,
-	( ::String (::hx::Object::*)())&::snikket::jingle::InitiatedSession_obj::callStatus,
+	( int (::hx::Object::*)())&::snikket::jingle::InitiatedSession_obj::callStatus,
 	( ::Array< ::Dynamic> (::hx::Object::*)())&::snikket::jingle::InitiatedSession_obj::videoTracks,
 	(  ::snikket::jingle::DTMFSender (::hx::Object::*)())&::snikket::jingle::InitiatedSession_obj::dtmf,
 };
@@ -254,24 +254,24 @@ HXDLIN( 308)		return this->get_chatId();
 HX_DEFINE_DYNAMIC_FUNC0(InitiatedSession_obj,chatId__fromC,return )
 
 ::String InitiatedSession_obj::get_sid(){
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_329_get_sid)
-HXDLIN( 329)		return this->_sid;
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_340_get_sid)
+HXDLIN( 340)		return this->_sid;
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(InitiatedSession_obj,get_sid,return )
 
 ::String InitiatedSession_obj::get_chatId(){
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_333_get_chatId)
-HXDLIN( 333)		return this->counterpart->asBare()->asString();
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_344_get_chatId)
+HXDLIN( 344)		return this->counterpart->asBare()->asString();
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(InitiatedSession_obj,get_chatId,return )
 
 void InitiatedSession_obj::ring(){
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_338_ring)
-HXDLIN( 338)		this->client->trigger(HX_("call/ring",01,8e,91,54), ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_349_ring)
+HXDLIN( 349)		this->client->trigger(HX_("call/ring",01,8e,91,54), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("session",56,17,98,93),::hx::ObjectPtr<OBJ_>(this))));
             	}
 
@@ -279,15 +279,15 @@ HXDLIN( 338)		this->client->trigger(HX_("call/ring",01,8e,91,54), ::Dynamic(::hx
 HX_DEFINE_DYNAMIC_FUNC0(InitiatedSession_obj,ring,(void))
 
 void InitiatedSession_obj::retract(){
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_343_retract)
-HXDLIN( 343)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
-HXDLIN( 343)		::String _hx_tmp1 = (HX_("Tried to retract session in wrong state: ",e1,1c,0c,db) + this->get_sid());
-HXDLIN( 343)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_354_retract)
+HXDLIN( 354)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
+HXDLIN( 354)		::String _hx_tmp1 = (HX_("Tried to retract session in wrong state: ",e1,1c,0c,db) + this->get_sid());
+HXDLIN( 354)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
             			->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.jingle.InitiatedSession",b7,6d,05,22))
             			->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)))
             			->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("retract",01,e2,b9,fc))
             			->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/jingle/Session.hx",54,dd,b2,6d))
-            			->setFixed(4,HX_("lineNumber",dd,81,22,76),343)));
+            			->setFixed(4,HX_("lineNumber",dd,81,22,76),354)));
             	}
 
 
@@ -296,33 +296,33 @@ HX_DEFINE_DYNAMIC_FUNC0(InitiatedSession_obj,retract,(void))
 void InitiatedSession_obj::accept(){
             		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             		bool _hx_run( ::snikket::jingle::Media m){
-            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_349_accept)
-HXLINE( 349)			return (m->media == HX_("audio",d6,78,80,27));
+            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_360_accept)
+HXLINE( 360)			return (m->media == HX_("audio",d6,78,80,27));
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_1) HXARGC(1)
             		bool _hx_run( ::snikket::jingle::Media m){
-            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_350_accept)
-HXLINE( 350)			return (m->media == HX_("video",7b,14,fc,36));
+            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_361_accept)
+HXLINE( 361)			return (m->media == HX_("video",7b,14,fc,36));
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_346_accept)
-HXLINE( 347)		bool _hx_tmp;
-HXDLIN( 347)		if (!(this->accepted)) {
-HXLINE( 347)			_hx_tmp = ::hx::IsNull( this->remoteDescription );
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_357_accept)
+HXLINE( 358)		bool _hx_tmp;
+HXDLIN( 358)		if (!(this->accepted)) {
+HXLINE( 358)			_hx_tmp = ::hx::IsNull( this->remoteDescription );
             		}
             		else {
-HXLINE( 347)			_hx_tmp = true;
+HXLINE( 358)			_hx_tmp = true;
             		}
-HXDLIN( 347)		if (_hx_tmp) {
-HXLINE( 347)			return;
+HXDLIN( 358)		if (_hx_tmp) {
+HXLINE( 358)			return;
             		}
-HXLINE( 348)		this->accepted = true;
-HXLINE( 349)		bool audio = ::hx::IsNotNull( ::Lambda_obj::find(this->remoteDescription->media, ::Dynamic(new _hx_Closure_0())) );
-HXLINE( 350)		bool video = ::hx::IsNotNull( ::Lambda_obj::find(this->remoteDescription->media, ::Dynamic(new _hx_Closure_1())) );
-HXLINE( 351)		this->client->trigger(HX_("call/media",73,5d,1d,c7), ::Dynamic(::hx::Anon_obj::Create(3)
+HXLINE( 359)		this->accepted = true;
+HXLINE( 360)		bool audio = ::hx::IsNotNull( ::Lambda_obj::find(this->remoteDescription->media, ::Dynamic(new _hx_Closure_0())) );
+HXLINE( 361)		bool video = ::hx::IsNotNull( ::Lambda_obj::find(this->remoteDescription->media, ::Dynamic(new _hx_Closure_1())) );
+HXLINE( 362)		this->client->trigger(HX_("call/media",73,5d,1d,c7), ::Dynamic(::hx::Anon_obj::Create(3)
             			->setFixed(0,HX_("session",56,17,98,93),::hx::ObjectPtr<OBJ_>(this))
             			->setFixed(1,HX_("audio",d6,78,80,27),audio)
             			->setFixed(2,HX_("video",7b,14,fc,36),video)));
@@ -332,30 +332,30 @@ HXLINE( 351)		this->client->trigger(HX_("call/media",73,5d,1d,c7), ::Dynamic(::h
 HX_DEFINE_DYNAMIC_FUNC0(InitiatedSession_obj,accept,(void))
 
 void InitiatedSession_obj::hangup(){
-            	HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_354_hangup)
-HXLINE( 355)		 ::snikket::Client _hx_tmp = this->client;
-HXLINE( 356)		::String _hx_tmp1 = this->counterpart->asString();
-HXDLIN( 356)		 ::snikket::Stanza _hx_tmp2 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(3)
+            	HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_365_hangup)
+HXLINE( 366)		 ::snikket::Client _hx_tmp = this->client;
+HXLINE( 367)		::String _hx_tmp1 = this->counterpart->asString();
+HXDLIN( 367)		 ::snikket::Stanza _hx_tmp2 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(3)
             			->setFixed(0,HX_("id",db,5b,00,00),::snikket::ID_obj::medium())
             			->setFixed(1,HX_("to",7b,65,00,00),_hx_tmp1)
             			->setFixed(2,HX_("type",ba,f2,08,4d),HX_("set",a2,9b,57,00))));
-HXLINE( 355)		_hx_tmp->sendStanza(_hx_tmp2->tag(HX_("jingle",31,27,eb,1f), ::Dynamic(::hx::Anon_obj::Create(3)
+HXLINE( 366)		_hx_tmp->sendStanza(_hx_tmp2->tag(HX_("jingle",31,27,eb,1f), ::Dynamic(::hx::Anon_obj::Create(3)
             			->setFixed(0,HX_("sid",0e,9f,57,00),this->get_sid())
             			->setFixed(1,HX_("action",b6,3b,46,16),HX_("session-terminate",6a,23,dc,12))
             			->setFixed(2,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:jingle:1",44,c4,fe,f7))))->tag(HX_("reason",c4,0f,9d,fc),null())->tag(HX_("success",c3,25,4e,b8),null())->up()->up()->up());
-HXLINE( 361)		this->terminate();
+HXLINE( 372)		this->terminate();
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(InitiatedSession_obj,hangup,(void))
 
  ::snikket::jingle::OutgoingSession InitiatedSession_obj::initiate( ::snikket::Stanza stanza){
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_365_initiate)
-HXLINE( 366)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
-HXDLIN( 366)		::String _hx_tmp1 = (HX_("Trying to initiate already initiated session: ",84,56,c8,79) + this->get_sid());
-HXDLIN( 366)		_hx_tmp(_hx_tmp1,::hx::SourceInfo(HX_("snikket/jingle/Session.hx",54,dd,b2,6d),366,HX_("snikket.jingle.InitiatedSession",b7,6d,05,22),HX_("initiate",59,6a,8f,5f)));
-HXLINE( 367)		HX_STACK_DO_THROW(HX_("already initiated",63,a5,36,1a));
-HXDLIN( 367)		return null();
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_376_initiate)
+HXLINE( 377)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
+HXDLIN( 377)		::String _hx_tmp1 = (HX_("Trying to initiate already initiated session: ",84,56,c8,79) + this->get_sid());
+HXDLIN( 377)		_hx_tmp(_hx_tmp1,::hx::SourceInfo(HX_("snikket/jingle/Session.hx",54,dd,b2,6d),377,HX_("snikket.jingle.InitiatedSession",b7,6d,05,22),HX_("initiate",59,6a,8f,5f)));
+HXLINE( 378)		HX_STACK_DO_THROW(HX_("already initiated",63,a5,36,1a));
+HXDLIN( 378)		return null();
             	}
 
 
@@ -364,11 +364,11 @@ HX_DEFINE_DYNAMIC_FUNC1(InitiatedSession_obj,initiate,return )
 void InitiatedSession_obj::terminate(){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_0, ::snikket::jingle::InitiatedSession,_gthis, ::snikket::Stanza,event, ::snikket::ChatMessage,msg) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> stored){
-            			HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_384_terminate)
-HXLINE( 385)			_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),1);
-HXLINE( 386)			 ::snikket::Client _gthis1 = _gthis->client;
-HXLINE( 387)			::String _hx_tmp = _gthis->counterpart->asString();
-HXLINE( 386)			_gthis1->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(3)
+            			HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_395_terminate)
+HXLINE( 396)			_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),1);
+HXLINE( 397)			 ::snikket::Client _gthis1 = _gthis->client;
+HXLINE( 398)			::String _hx_tmp = _gthis->counterpart->asString();
+HXLINE( 397)			_gthis1->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(3)
             				->setFixed(0,HX_("id",db,5b,00,00),msg->versions->__get(0).StaticCast<  ::snikket::ChatMessage >()->localId)
             				->setFixed(1,HX_("to",7b,65,00,00),_hx_tmp)
             				->setFixed(2,HX_("type",ba,f2,08,4d),HX_("chat",d8,5e,bf,41))))->addChild(event)->tag(HX_("store",e1,13,16,84), ::Dynamic(::hx::Anon_obj::Create(1)
@@ -376,41 +376,41 @@ HXLINE( 386)			_gthis1->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_(
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_371_terminate)
-HXDLIN( 371)		 ::snikket::jingle::InitiatedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 372)		if (::hx::IsNull( this->pc )) {
-HXLINE( 372)			return;
+            	HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_382_terminate)
+HXDLIN( 382)		 ::snikket::jingle::InitiatedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 383)		if (::hx::IsNull( this->pc )) {
+HXLINE( 383)			return;
             		}
-HXLINE( 373)		this->pc->close();
-HXLINE( 374)		{
-HXLINE( 374)			int _g = 0;
-HXDLIN( 374)			::Array< ::Dynamic> _g1 = this->pc->getTransceivers();
-HXDLIN( 374)			while((_g < _g1->length)){
-HXLINE( 374)				 ::Dynamic tranceiver = _g1->__get(_g);
-HXDLIN( 374)				_g = (_g + 1);
-HXLINE( 375)				bool _hx_tmp;
-HXDLIN( 375)				if (::hx::IsNotNull( tranceiver->__Field(HX_("sender",b5,c7,84,6b),::hx::paccDynamic) )) {
-HXLINE( 375)					_hx_tmp = ::hx::IsNotNull(  ::Dynamic(tranceiver->__Field(HX_("sender",b5,c7,84,6b),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic) );
+HXLINE( 384)		this->pc->close();
+HXLINE( 385)		{
+HXLINE( 385)			int _g = 0;
+HXDLIN( 385)			::Array< ::Dynamic> _g1 = this->pc->getTransceivers();
+HXDLIN( 385)			while((_g < _g1->length)){
+HXLINE( 385)				 ::Dynamic tranceiver = _g1->__get(_g);
+HXDLIN( 385)				_g = (_g + 1);
+HXLINE( 386)				bool _hx_tmp;
+HXDLIN( 386)				if (::hx::IsNotNull( tranceiver->__Field(HX_("sender",b5,c7,84,6b),::hx::paccDynamic) )) {
+HXLINE( 386)					_hx_tmp = ::hx::IsNotNull(  ::Dynamic(tranceiver->__Field(HX_("sender",b5,c7,84,6b),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic) );
             				}
             				else {
-HXLINE( 375)					_hx_tmp = false;
+HXLINE( 386)					_hx_tmp = false;
             				}
-HXDLIN( 375)				if (_hx_tmp) {
-HXLINE( 376)					( ( ::snikket::jingle::MediaStreamTrack)( ::Dynamic(tranceiver->__Field(HX_("sender",b5,c7,84,6b),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic)) )->stop();
+HXDLIN( 386)				if (_hx_tmp) {
+HXLINE( 387)					( ( ::snikket::jingle::MediaStreamTrack)( ::Dynamic(tranceiver->__Field(HX_("sender",b5,c7,84,6b),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic)) )->stop();
             				}
             			}
             		}
-HXLINE( 379)		this->pc = null();
-HXLINE( 380)		 ::snikket::Client _hx_tmp1 = this->client;
-HXDLIN( 380)		::String _hx_tmp2 = this->get_chatId();
-HXDLIN( 380)		_hx_tmp1->trigger(HX_("call/retract",50,bc,8d,db), ::Dynamic(::hx::Anon_obj::Create(2)
+HXLINE( 390)		this->pc = null();
+HXLINE( 391)		 ::snikket::Client _hx_tmp1 = this->client;
+HXDLIN( 391)		::String _hx_tmp2 = this->get_chatId();
+HXDLIN( 391)		_hx_tmp1->trigger(HX_("call/retract",50,bc,8d,db), ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("chatId",d3,04,77,b7),_hx_tmp2)
             			->setFixed(1,HX_("sid",0e,9f,57,00),this->get_sid())));
-HXLINE( 382)		 ::snikket::Stanza event =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("finish",53,40,7f,86), ::Dynamic(::hx::Anon_obj::Create(2)
+HXLINE( 393)		 ::snikket::Stanza event =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("finish",53,40,7f,86), ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("id",db,5b,00,00),this->get_sid())
             			->setFixed(1,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07))));
-HXLINE( 383)		 ::snikket::ChatMessage msg = ::snikket::jingle::_Session::Session_Fields__obj::mkCallMessage(this->counterpart,this->client->jid,event);
-HXLINE( 384)		this->client->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,msg), ::Dynamic(new _hx_Closure_0(_gthis,event,msg)));
+HXLINE( 394)		 ::snikket::ChatMessage msg = ::snikket::jingle::_Session::Session_Fields__obj::mkCallMessage(this->counterpart,this->client->jid,event);
+HXLINE( 395)		this->client->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,msg), ::Dynamic(new _hx_Closure_0(_gthis,event,msg)));
             	}
 
 
@@ -427,108 +427,108 @@ void InitiatedSession_obj::contentAdd( ::snikket::Stanza stanza){
             					bool _hx_run( ::snikket::jingle::Media m){
             						HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_1, ::snikket::jingle::Media,m) HXARGC(1)
             						bool _hx_run( ::snikket::jingle::Media addM){
-            							HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_418_contentAdd)
-HXLINE( 418)							return (addM->mid == m->mid);
+            							HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_429_contentAdd)
+HXLINE( 429)							return (addM->mid == m->mid);
             						}
             						HX_END_LOCAL_FUNC1(return)
 
-            						HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_418_contentAdd)
-HXLINE( 418)						::String _hx_tmp = ( (::String)(::Reflect_obj::field(m->contentElement(false)->attr,HX_("senders",1e,f7,a9,a8))) );
-HXDLIN( 418)						return (_hx_tmp != ( (::String)(::Reflect_obj::field(( ( ::snikket::jingle::Media)(::Lambda_obj::find(addThis->media, ::Dynamic(new _hx_Closure_1(m)))) )->contentElement(false)->attr,HX_("senders",1e,f7,a9,a8))) ));
+            						HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_429_contentAdd)
+HXLINE( 429)						::String _hx_tmp = ( (::String)(::Reflect_obj::field(m->contentElement(false)->attr,HX_("senders",1e,f7,a9,a8))) );
+HXDLIN( 429)						return (_hx_tmp != ( (::String)(::Reflect_obj::field(( ( ::snikket::jingle::Media)(::Lambda_obj::find(addThis->media, ::Dynamic(new _hx_Closure_1(m)))) )->contentElement(false)->attr,HX_("senders",1e,f7,a9,a8))) ));
             					}
             					HX_END_LOCAL_FUNC1(return)
 
-            					HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_417_contentAdd)
-HXLINE( 417)					if (::hx::IsNotNull( ::Lambda_obj::find(gonnaAccept->media, ::Dynamic(new _hx_Closure_2(addThis))) )) {
-HXLINE( 420)						::String modify = _gthis->get_sid();
-HXDLIN( 420)						 ::snikket::Stanza modify1 = gonnaAccept->toStanza(HX_("content-modify",4e,70,8f,a8),modify,_gthis->initiator);
-HXLINE( 421)						{
-HXLINE( 421)							 ::Dynamic this1 = modify1->attr;
-HXDLIN( 421)							::String value = _gthis->counterpart->asString();
-HXDLIN( 421)							::Reflect_obj::setField(this1,HX_("to",7b,65,00,00),value);
+            					HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_428_contentAdd)
+HXLINE( 428)					if (::hx::IsNotNull( ::Lambda_obj::find(gonnaAccept->media, ::Dynamic(new _hx_Closure_2(addThis))) )) {
+HXLINE( 431)						::String modify = _gthis->get_sid();
+HXDLIN( 431)						 ::snikket::Stanza modify1 = gonnaAccept->toStanza(HX_("content-modify",4e,70,8f,a8),modify,_gthis->initiator);
+HXLINE( 432)						{
+HXLINE( 432)							 ::Dynamic this1 = modify1->attr;
+HXDLIN( 432)							::String value = _gthis->counterpart->asString();
+HXDLIN( 432)							::Reflect_obj::setField(this1,HX_("to",7b,65,00,00),value);
             						}
-HXLINE( 422)						{
-HXLINE( 422)							 ::Dynamic this2 = modify1->attr;
-HXDLIN( 422)							::String value1 = ::snikket::ID_obj::medium();
-HXDLIN( 422)							::Reflect_obj::setField(this2,HX_("id",db,5b,00,00),value1);
+HXLINE( 433)						{
+HXLINE( 433)							 ::Dynamic this2 = modify1->attr;
+HXDLIN( 433)							::String value1 = ::snikket::ID_obj::medium();
+HXDLIN( 433)							::Reflect_obj::setField(this2,HX_("id",db,5b,00,00),value1);
             						}
-HXLINE( 423)						_gthis->client->sendStanza(modify1);
+HXLINE( 434)						_gthis->client->sendStanza(modify1);
             					}
             				}
             				HX_END_LOCAL_FUNC1((void))
 
-            				HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_411_contentAdd)
-HXLINE( 412)				 ::snikket::jingle::InitiatedSession _gthis1 = _gthis;
-HXLINE( 414)				::Array< ::Dynamic> _this = addThis->media;
-HXDLIN( 414)				::Array< ::String > result = ::Array_obj< ::String >::__new(_this->length);
-HXDLIN( 414)				{
-HXLINE( 414)					int _g = 0;
-HXDLIN( 414)					int _g1 = _this->length;
-HXDLIN( 414)					while((_g < _g1)){
-HXLINE( 414)						_g = (_g + 1);
-HXDLIN( 414)						int i = (_g - 1);
-HXDLIN( 414)						{
-HXLINE( 414)							::String inValue = ( ( ::snikket::jingle::Media)(_hx_array_unsafe_get(_this,i)) )->mid;
-HXDLIN( 414)							result->__unsafe_set(i,inValue);
+            				HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_422_contentAdd)
+HXLINE( 423)				 ::snikket::jingle::InitiatedSession _gthis1 = _gthis;
+HXLINE( 425)				::Array< ::Dynamic> _this = addThis->media;
+HXDLIN( 425)				::Array< ::String > result = ::Array_obj< ::String >::__new(_this->length);
+HXDLIN( 425)				{
+HXLINE( 425)					int _g = 0;
+HXDLIN( 425)					int _g1 = _this->length;
+HXDLIN( 425)					while((_g < _g1)){
+HXLINE( 425)						_g = (_g + 1);
+HXDLIN( 425)						int i = (_g - 1);
+HXDLIN( 425)						{
+HXLINE( 425)							::String inValue = ( ( ::snikket::jingle::Media)(_hx_array_unsafe_get(_this,i)) )->mid;
+HXDLIN( 425)							result->__unsafe_set(i,inValue);
             						}
             					}
             				}
-HXLINE( 412)				_gthis1->setupLocalDescription(HX_("content-accept",dc,ee,cb,f2),result,false, ::Dynamic(new _hx_Closure_3(_gthis,addThis)));
-HXLINE( 427)				_gthis->afterMedia = null();
+HXLINE( 423)				_gthis1->setupLocalDescription(HX_("content-accept",dc,ee,cb,f2),result,false, ::Dynamic(new _hx_Closure_3(_gthis,addThis)));
+HXLINE( 438)				_gthis->afterMedia = null();
             			}
             			HX_END_LOCAL_FUNC0((void))
 
-            			HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_410_contentAdd)
-HXLINE( 411)			_gthis->afterMedia =  ::Dynamic(new _hx_Closure_4(_gthis,addThis));
-HXLINE( 429)			return _gthis->client->trigger(HX_("call/media",73,5d,1d,c7), ::Dynamic(::hx::Anon_obj::Create(3)
+            			HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_421_contentAdd)
+HXLINE( 422)			_gthis->afterMedia =  ::Dynamic(new _hx_Closure_4(_gthis,addThis));
+HXLINE( 440)			return _gthis->client->trigger(HX_("call/media",73,5d,1d,c7), ::Dynamic(::hx::Anon_obj::Create(3)
             				->setFixed(0,HX_("session",56,17,98,93),_gthis)
             				->setFixed(1,HX_("audio",d6,78,80,27),audio->__get(0))
             				->setFixed(2,HX_("video",7b,14,fc,36),video->__get(0))));
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_395_contentAdd)
-HXDLIN( 395)		 ::snikket::jingle::InitiatedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 396)		if (::hx::IsNull( this->remoteDescription )) {
-HXLINE( 396)			HX_STACK_DO_THROW(HX_("Got content-add before session-accept",59,44,5e,1c));
+            	HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_406_contentAdd)
+HXDLIN( 406)		 ::snikket::jingle::InitiatedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 407)		if (::hx::IsNull( this->remoteDescription )) {
+HXLINE( 407)			HX_STACK_DO_THROW(HX_("Got content-add before session-accept",59,44,5e,1c));
             		}
-HXLINE( 398)		 ::snikket::jingle::SessionDescription addThis = ::snikket::jingle::SessionDescription_obj::fromStanza(stanza,this->initiator,this->remoteDescription);
-HXLINE( 399)		::Array< bool > video = ::Array_obj< bool >::fromData( _hx_array_data_22056db7_23,1);
-HXLINE( 400)		::Array< bool > audio = ::Array_obj< bool >::fromData( _hx_array_data_22056db7_24,1);
-HXLINE( 401)		{
-HXLINE( 401)			int _g = 0;
-HXDLIN( 401)			::Array< ::Dynamic> _g1 = addThis->media;
-HXDLIN( 401)			while((_g < _g1->length)){
+HXLINE( 409)		 ::snikket::jingle::SessionDescription addThis = ::snikket::jingle::SessionDescription_obj::fromStanza(stanza,this->initiator,this->remoteDescription);
+HXLINE( 410)		::Array< bool > video = ::Array_obj< bool >::fromData( _hx_array_data_22056db7_23,1);
+HXLINE( 411)		::Array< bool > audio = ::Array_obj< bool >::fromData( _hx_array_data_22056db7_24,1);
+HXLINE( 412)		{
+HXLINE( 412)			int _g = 0;
+HXDLIN( 412)			::Array< ::Dynamic> _g1 = addThis->media;
+HXDLIN( 412)			while((_g < _g1->length)){
             				HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             				bool _hx_run( ::snikket::jingle::Attribute attr){
-            					HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_402_contentAdd)
-HXLINE( 402)					if ((attr->key != HX_("sendrecv",6e,1e,9c,f4))) {
-HXLINE( 402)						return (attr->key == HX_("sendonly",b4,56,a7,f2));
+            					HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_413_contentAdd)
+HXLINE( 413)					if ((attr->key != HX_("sendrecv",6e,1e,9c,f4))) {
+HXLINE( 413)						return (attr->key == HX_("sendonly",b4,56,a7,f2));
             					}
             					else {
-HXLINE( 402)						return true;
+HXLINE( 413)						return true;
             					}
-HXDLIN( 402)					return false;
+HXDLIN( 413)					return false;
             				}
             				HX_END_LOCAL_FUNC1(return)
 
-HXLINE( 401)				 ::snikket::jingle::Media m = _g1->__get(_g).StaticCast<  ::snikket::jingle::Media >();
-HXDLIN( 401)				_g = (_g + 1);
-HXLINE( 402)				if (::Lambda_obj::exists(m->attributes, ::Dynamic(new _hx_Closure_0()))) {
-HXLINE( 403)					if ((m->media == HX_("video",7b,14,fc,36))) {
-HXLINE( 403)						video[0] = true;
+HXLINE( 412)				 ::snikket::jingle::Media m = _g1->__get(_g).StaticCast<  ::snikket::jingle::Media >();
+HXDLIN( 412)				_g = (_g + 1);
+HXLINE( 413)				if (::Lambda_obj::exists(m->attributes, ::Dynamic(new _hx_Closure_0()))) {
+HXLINE( 414)					if ((m->media == HX_("video",7b,14,fc,36))) {
+HXLINE( 414)						video[0] = true;
             					}
-HXLINE( 404)					if ((m->media == HX_("audio",d6,78,80,27))) {
-HXLINE( 404)						audio[0] = true;
+HXLINE( 415)					if ((m->media == HX_("audio",d6,78,80,27))) {
+HXLINE( 415)						audio[0] = true;
             					}
             				}
-HXLINE( 406)				::Array< ::Dynamic> m1 = m->attributes;
-HXDLIN( 406)				m1->push( ::snikket::jingle::Attribute_obj::__alloc( HX_CTX ,HX_("setup",7d,ae,2f,7a),this->peerDtlsSetup));
+HXLINE( 417)				::Array< ::Dynamic> m1 = m->attributes;
+HXDLIN( 417)				m1->push( ::snikket::jingle::Attribute_obj::__alloc( HX_CTX ,HX_("setup",7d,ae,2f,7a),this->peerDtlsSetup));
             			}
             		}
-HXLINE( 408)		this->remoteDescription = this->remoteDescription->addContent(addThis);
-HXLINE( 410)		 ::snikket::jingle::PeerConnection _hx_tmp = this->pc;
-HXDLIN( 410)		::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp->setRemoteDescription( ::Dynamic(::hx::Anon_obj::Create(2)
+HXLINE( 419)		this->remoteDescription = this->remoteDescription->addContent(addThis);
+HXLINE( 421)		 ::snikket::jingle::PeerConnection _hx_tmp = this->pc;
+HXDLIN( 421)		::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp->setRemoteDescription( ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("sdp",bf,9a,57,00),this->remoteDescription->toSdp())
             			->setFixed(1,HX_("type",ba,f2,08,4d),cpp::Struct(rtc::Description::Type::Offer)))), ::Dynamic(new _hx_Closure_5(video,_gthis,addThis,audio)),null());
             	}
@@ -537,24 +537,24 @@ HXDLIN( 410)		::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp->setRemoteDe
 HX_DEFINE_DYNAMIC_FUNC1(InitiatedSession_obj,contentAdd,(void))
 
 void InitiatedSession_obj::contentAccept( ::snikket::Stanza stanza){
-            	HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_434_contentAccept)
-HXLINE( 435)		if (::hx::IsNull( this->remoteDescription )) {
-HXLINE( 435)			HX_STACK_DO_THROW(HX_("Got content-accept before session-accept",10,3c,4f,73));
+            	HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_445_contentAccept)
+HXLINE( 446)		if (::hx::IsNull( this->remoteDescription )) {
+HXLINE( 446)			HX_STACK_DO_THROW(HX_("Got content-accept before session-accept",10,3c,4f,73));
             		}
-HXLINE( 438)		 ::snikket::jingle::SessionDescription addThis = ::snikket::jingle::SessionDescription_obj::fromStanza(stanza,!(this->initiator),this->remoteDescription);
-HXLINE( 439)		{
-HXLINE( 439)			int _g = 0;
-HXDLIN( 439)			::Array< ::Dynamic> _g1 = addThis->media;
-HXDLIN( 439)			while((_g < _g1->length)){
-HXLINE( 439)				 ::snikket::jingle::Media m = _g1->__get(_g).StaticCast<  ::snikket::jingle::Media >();
-HXDLIN( 439)				_g = (_g + 1);
-HXLINE( 440)				::Array< ::Dynamic> m1 = m->attributes;
-HXDLIN( 440)				m1->push( ::snikket::jingle::Attribute_obj::__alloc( HX_CTX ,HX_("setup",7d,ae,2f,7a),this->peerDtlsSetup));
+HXLINE( 449)		 ::snikket::jingle::SessionDescription addThis = ::snikket::jingle::SessionDescription_obj::fromStanza(stanza,!(this->initiator),this->remoteDescription);
+HXLINE( 450)		{
+HXLINE( 450)			int _g = 0;
+HXDLIN( 450)			::Array< ::Dynamic> _g1 = addThis->media;
+HXDLIN( 450)			while((_g < _g1->length)){
+HXLINE( 450)				 ::snikket::jingle::Media m = _g1->__get(_g).StaticCast<  ::snikket::jingle::Media >();
+HXDLIN( 450)				_g = (_g + 1);
+HXLINE( 451)				::Array< ::Dynamic> m1 = m->attributes;
+HXDLIN( 451)				m1->push( ::snikket::jingle::Attribute_obj::__alloc( HX_CTX ,HX_("setup",7d,ae,2f,7a),this->peerDtlsSetup));
             			}
             		}
-HXLINE( 442)		this->remoteDescription = this->remoteDescription->addContent(addThis);
-HXLINE( 443)		 ::snikket::jingle::PeerConnection _hx_tmp = this->pc;
-HXDLIN( 443)		_hx_tmp->setRemoteDescription( ::Dynamic(::hx::Anon_obj::Create(2)
+HXLINE( 453)		this->remoteDescription = this->remoteDescription->addContent(addThis);
+HXLINE( 454)		 ::snikket::jingle::PeerConnection _hx_tmp = this->pc;
+HXDLIN( 454)		_hx_tmp->setRemoteDescription( ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("sdp",bf,9a,57,00),this->remoteDescription->toSdp())
             			->setFixed(1,HX_("type",ba,f2,08,4d),cpp::Struct(rtc::Description::Type::Answer))));
             	}
@@ -565,96 +565,96 @@ HX_DEFINE_DYNAMIC_FUNC1(InitiatedSession_obj,contentAccept,(void))
 ::Dynamic InitiatedSession_obj::transportInfo( ::snikket::Stanza stanza){
             		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             		void _hx_run(::cpp::VirtualArray _){
-            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_461_transportInfo)
-HXLINE( 461)			return;
+            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_472_transportInfo)
+HXLINE( 472)			return;
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_447_transportInfo)
-HXDLIN( 447)		 ::snikket::jingle::InitiatedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 448)		bool _hx_tmp;
-HXDLIN( 448)		if (::hx::IsNotNull( this->pc )) {
-HXLINE( 448)			_hx_tmp = ::hx::IsNull( this->remoteDescription );
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_458_transportInfo)
+HXDLIN( 458)		 ::snikket::jingle::InitiatedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 459)		bool _hx_tmp;
+HXDLIN( 459)		if (::hx::IsNotNull( this->pc )) {
+HXLINE( 459)			_hx_tmp = ::hx::IsNull( this->remoteDescription );
             		}
             		else {
-HXLINE( 448)			_hx_tmp = true;
+HXLINE( 459)			_hx_tmp = true;
             		}
-HXDLIN( 448)		if (_hx_tmp) {
-HXLINE( 449)			this->queuedInboundTransportInfo->push(stanza);
-HXLINE( 450)			return ::thenshim::_Promise::Promise_Impl__obj::resolve(null());
+HXDLIN( 459)		if (_hx_tmp) {
+HXLINE( 460)			this->queuedInboundTransportInfo->push(stanza);
+HXLINE( 461)			return ::thenshim::_Promise::Promise_Impl__obj::resolve(null());
             		}
-HXLINE( 453)		::Array< ::Dynamic> _this = ::snikket::jingle::IceCandidate_obj::fromStanza(stanza);
-HXDLIN( 453)		::Array< ::Dynamic> result = ::Array_obj< ::Dynamic>::__new(_this->length);
-HXDLIN( 453)		{
-HXLINE( 453)			int _g = 0;
-HXDLIN( 453)			int _g1 = _this->length;
-HXDLIN( 453)			while((_g < _g1)){
-HXLINE( 453)				_g = (_g + 1);
-HXDLIN( 453)				int i = (_g - 1);
-HXDLIN( 453)				{
-HXLINE( 453)					 ::snikket::jingle::IceCandidate candidate = ( ( ::snikket::jingle::IceCandidate)(_hx_array_unsafe_get(_this,i)) );
-HXLINE( 454)					int index = _gthis->remoteDescription->identificationTags->indexOf(candidate->sdpMid,null());
-HXLINE( 455)					 ::snikket::jingle::PeerConnection _gthis1 = _gthis->pc;
-HXLINE( 456)					::String inValue = candidate->toSdp();
-HXLINE( 458)					 ::Dynamic inValue1;
-HXDLIN( 458)					if ((index < 0)) {
-HXLINE( 458)						inValue1 = null();
+HXLINE( 464)		::Array< ::Dynamic> _this = ::snikket::jingle::IceCandidate_obj::fromStanza(stanza);
+HXDLIN( 464)		::Array< ::Dynamic> result = ::Array_obj< ::Dynamic>::__new(_this->length);
+HXDLIN( 464)		{
+HXLINE( 464)			int _g = 0;
+HXDLIN( 464)			int _g1 = _this->length;
+HXDLIN( 464)			while((_g < _g1)){
+HXLINE( 464)				_g = (_g + 1);
+HXDLIN( 464)				int i = (_g - 1);
+HXDLIN( 464)				{
+HXLINE( 464)					 ::snikket::jingle::IceCandidate candidate = ( ( ::snikket::jingle::IceCandidate)(_hx_array_unsafe_get(_this,i)) );
+HXLINE( 465)					int index = _gthis->remoteDescription->identificationTags->indexOf(candidate->sdpMid,null());
+HXLINE( 466)					 ::snikket::jingle::PeerConnection _gthis1 = _gthis->pc;
+HXLINE( 467)					::String inValue = candidate->toSdp();
+HXLINE( 469)					 ::Dynamic inValue1;
+HXDLIN( 469)					if ((index < 0)) {
+HXLINE( 469)						inValue1 = null();
             					}
             					else {
-HXLINE( 458)						inValue1 = index;
+HXLINE( 469)						inValue1 = index;
             					}
-HXLINE( 453)					::Dynamic inValue2 = _gthis1->addIceCandidate( ::Dynamic(::hx::Anon_obj::Create(4)
+HXLINE( 464)					::Dynamic inValue2 = _gthis1->addIceCandidate( ::Dynamic(::hx::Anon_obj::Create(4)
             						->setFixed(0,HX_("usernameFragment",06,a8,37,89),candidate->ufrag)
             						->setFixed(1,HX_("candidate",43,34,d8,d0),inValue)
             						->setFixed(2,HX_("sdpMid",09,30,5f,d9),candidate->sdpMid)
             						->setFixed(3,HX_("sdpMLineIndex",f0,ab,d6,e2),inValue1)));
-HXDLIN( 453)					result->__unsafe_set(i,inValue2);
+HXDLIN( 464)					result->__unsafe_set(i,inValue2);
             				}
             			}
             		}
-HXDLIN( 453)		return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::PromiseTools_obj::all(result), ::Dynamic(new _hx_Closure_0()),null());
+HXDLIN( 464)		return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::PromiseTools_obj::all(result), ::Dynamic(new _hx_Closure_0()),null());
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(InitiatedSession_obj,transportInfo,return )
 
 void InitiatedSession_obj::addMedia(::Array< ::Dynamic> streams){
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_464_addMedia)
-HXLINE( 465)		if (::hx::IsNull( this->pc )) {
-HXLINE( 465)			HX_STACK_DO_THROW(HX_("tried to add media before PeerConnection exists",25,49,19,b2));
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_475_addMedia)
+HXLINE( 476)		if (::hx::IsNull( this->pc )) {
+HXLINE( 476)			HX_STACK_DO_THROW(HX_("tried to add media before PeerConnection exists",25,49,19,b2));
             		}
-HXLINE( 467)		::Array< ::Dynamic> _this = this->localDescription->media;
-HXDLIN( 467)		::Array< ::String > result = ::Array_obj< ::String >::__new(_this->length);
-HXDLIN( 467)		{
-HXLINE( 467)			int _g = 0;
-HXDLIN( 467)			int _g1 = _this->length;
-HXDLIN( 467)			while((_g < _g1)){
-HXLINE( 467)				_g = (_g + 1);
-HXDLIN( 467)				int i = (_g - 1);
-HXDLIN( 467)				{
-HXLINE( 467)					::String inValue = ( ( ::snikket::jingle::Media)(_hx_array_unsafe_get(_this,i)) )->mid;
-HXDLIN( 467)					result->__unsafe_set(i,inValue);
+HXLINE( 478)		::Array< ::Dynamic> _this = this->localDescription->media;
+HXDLIN( 478)		::Array< ::String > result = ::Array_obj< ::String >::__new(_this->length);
+HXDLIN( 478)		{
+HXLINE( 478)			int _g = 0;
+HXDLIN( 478)			int _g1 = _this->length;
+HXDLIN( 478)			while((_g < _g1)){
+HXLINE( 478)				_g = (_g + 1);
+HXDLIN( 478)				int i = (_g - 1);
+HXDLIN( 478)				{
+HXLINE( 478)					::String inValue = ( ( ::snikket::jingle::Media)(_hx_array_unsafe_get(_this,i)) )->mid;
+HXDLIN( 478)					result->__unsafe_set(i,inValue);
             				}
             			}
             		}
-HXDLIN( 467)		::Array< ::String > oldMids = result;
-HXLINE( 468)		{
-HXLINE( 468)			int _g2 = 0;
-HXDLIN( 468)			while((_g2 < streams->length)){
-HXLINE( 468)				 ::snikket::jingle::MediaStream stream = streams->__get(_g2).StaticCast<  ::snikket::jingle::MediaStream >();
-HXDLIN( 468)				_g2 = (_g2 + 1);
-HXLINE( 469)				{
-HXLINE( 469)					int _g3 = 0;
-HXDLIN( 469)					::Array< ::Dynamic> _g4 = stream->getTracks();
-HXDLIN( 469)					while((_g3 < _g4->length)){
-HXLINE( 469)						 ::snikket::jingle::MediaStreamTrack track = _g4->__get(_g3).StaticCast<  ::snikket::jingle::MediaStreamTrack >();
-HXDLIN( 469)						_g3 = (_g3 + 1);
-HXLINE( 470)						this->pc->addTrack(track,stream);
+HXDLIN( 478)		::Array< ::String > oldMids = result;
+HXLINE( 479)		{
+HXLINE( 479)			int _g2 = 0;
+HXDLIN( 479)			while((_g2 < streams->length)){
+HXLINE( 479)				 ::snikket::jingle::MediaStream stream = streams->__get(_g2).StaticCast<  ::snikket::jingle::MediaStream >();
+HXDLIN( 479)				_g2 = (_g2 + 1);
+HXLINE( 480)				{
+HXLINE( 480)					int _g3 = 0;
+HXDLIN( 480)					::Array< ::Dynamic> _g4 = stream->getTracks();
+HXDLIN( 480)					while((_g3 < _g4->length)){
+HXLINE( 480)						 ::snikket::jingle::MediaStreamTrack track = _g4->__get(_g3).StaticCast<  ::snikket::jingle::MediaStreamTrack >();
+HXDLIN( 480)						_g3 = (_g3 + 1);
+HXLINE( 481)						this->pc->addTrack(track,stream);
             					}
             				}
             			}
             		}
-HXLINE( 474)		this->setupLocalDescription(HX_("content-add",cd,a9,a1,10),oldMids,true,null());
+HXLINE( 485)		this->setupLocalDescription(HX_("content-add",cd,a9,a1,10),oldMids,true,null());
             	}
 
 
@@ -679,74 +679,99 @@ HXLINE( 252)		this->addMedia(_hx_tmp);
 
 HX_DEFINE_DYNAMIC_FUNC2(InitiatedSession_obj,addMedia__fromC,(void))
 
-::String InitiatedSession_obj::callStatus(){
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_478_callStatus)
-HXDLIN( 478)		return HX_("ongoing",3b,aa,04,9b);
+int InitiatedSession_obj::callStatus(){
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_489_callStatus)
+HXDLIN( 489)		bool _hx_tmp;
+HXDLIN( 489)		if (::hx::IsNotNull( this->pc )) {
+HXDLIN( 489)			_hx_tmp = (this->pc->get_connectionState() == HX_("connecting",38,9f,12,f5));
+            		}
+            		else {
+HXDLIN( 489)			_hx_tmp = true;
+            		}
+HXDLIN( 489)		if (_hx_tmp) {
+HXLINE( 490)			return 3;
+            		}
+            		else {
+HXLINE( 491)			bool _hx_tmp1;
+HXDLIN( 491)			if ((this->pc->get_connectionState() != HX_("failed",bd,c5,fe,e7))) {
+HXLINE( 491)				_hx_tmp1 = (this->pc->get_connectionState() == HX_("closed",ac,a9,51,0e));
+            			}
+            			else {
+HXLINE( 491)				_hx_tmp1 = true;
+            			}
+HXDLIN( 491)			if (_hx_tmp1) {
+HXLINE( 492)				return 5;
+            			}
+            			else {
+HXLINE( 494)				return 4;
+            			}
+            		}
+HXLINE( 489)		return null();
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(InitiatedSession_obj,callStatus,return )
 
 ::Array< ::Dynamic> InitiatedSession_obj::videoTracks(){
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_481_videoTracks)
-HXLINE( 482)		if (::hx::IsNull( this->pc )) {
-HXLINE( 482)			return ::Array_obj< ::Dynamic>::__new(0);
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_498_videoTracks)
+HXLINE( 499)		if (::hx::IsNull( this->pc )) {
+HXLINE( 499)			return ::Array_obj< ::Dynamic>::__new(0);
             		}
-HXLINE( 483)		::Array< ::Dynamic> _g = ::Array_obj< ::Dynamic>::__new(0);
-HXDLIN( 483)		{
-HXLINE( 483)			int _g1 = 0;
-HXDLIN( 483)			::Array< ::Dynamic> _g2 = this->pc->getTransceivers();
-HXDLIN( 483)			while((_g1 < _g2->length)){
-HXLINE( 483)				 ::Dynamic v = _g2->__get(_g1);
-HXDLIN( 483)				_g1 = (_g1 + 1);
-HXLINE( 484)				bool _hx_tmp;
-HXDLIN( 484)				bool _hx_tmp1;
-HXDLIN( 484)				bool _hx_tmp2;
-HXDLIN( 484)				if (::hx::IsNotNull( v->__Field(HX_("receiver",2f,45,fd,e2),::hx::paccDynamic) )) {
-HXLINE( 484)					_hx_tmp2 = ::hx::IsNotNull(  ::Dynamic(v->__Field(HX_("receiver",2f,45,fd,e2),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic) );
+HXLINE( 500)		::Array< ::Dynamic> _g = ::Array_obj< ::Dynamic>::__new(0);
+HXDLIN( 500)		{
+HXLINE( 500)			int _g1 = 0;
+HXDLIN( 500)			::Array< ::Dynamic> _g2 = this->pc->getTransceivers();
+HXDLIN( 500)			while((_g1 < _g2->length)){
+HXLINE( 500)				 ::Dynamic v = _g2->__get(_g1);
+HXDLIN( 500)				_g1 = (_g1 + 1);
+HXLINE( 501)				bool _hx_tmp;
+HXDLIN( 501)				bool _hx_tmp1;
+HXDLIN( 501)				bool _hx_tmp2;
+HXDLIN( 501)				if (::hx::IsNotNull( v->__Field(HX_("receiver",2f,45,fd,e2),::hx::paccDynamic) )) {
+HXLINE( 501)					_hx_tmp2 = ::hx::IsNotNull(  ::Dynamic(v->__Field(HX_("receiver",2f,45,fd,e2),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic) );
             				}
             				else {
-HXLINE( 484)					_hx_tmp2 = false;
+HXLINE( 501)					_hx_tmp2 = false;
             				}
-HXDLIN( 484)				if (_hx_tmp2) {
-HXLINE( 484)					_hx_tmp1 = (( ( ::snikket::jingle::MediaStreamTrack)( ::Dynamic(v->__Field(HX_("receiver",2f,45,fd,e2),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic)) )->get_kind() == HX_("video",7b,14,fc,36));
+HXDLIN( 501)				if (_hx_tmp2) {
+HXLINE( 501)					_hx_tmp1 = (( ( ::snikket::jingle::MediaStreamTrack)( ::Dynamic(v->__Field(HX_("receiver",2f,45,fd,e2),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic)) )->get_kind() == HX_("video",7b,14,fc,36));
             				}
             				else {
-HXLINE( 484)					_hx_tmp1 = false;
+HXLINE( 501)					_hx_tmp1 = false;
             				}
-HXDLIN( 484)				if (_hx_tmp1) {
-HXLINE( 484)					_hx_tmp = !(( ( ::snikket::jingle::MediaStreamTrack)( ::Dynamic(v->__Field(HX_("receiver",2f,45,fd,e2),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic)) )->get_muted());
+HXDLIN( 501)				if (_hx_tmp1) {
+HXLINE( 501)					_hx_tmp = !(( ( ::snikket::jingle::MediaStreamTrack)( ::Dynamic(v->__Field(HX_("receiver",2f,45,fd,e2),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic)) )->get_muted());
             				}
             				else {
-HXLINE( 484)					_hx_tmp = false;
+HXLINE( 501)					_hx_tmp = false;
             				}
-HXLINE( 483)				if (_hx_tmp) {
-HXLINE( 483)					_g->push(v);
+HXLINE( 500)				if (_hx_tmp) {
+HXLINE( 500)					_g->push(v);
             				}
             			}
             		}
-HXDLIN( 483)		::Array< ::Dynamic> _this = _g;
-HXDLIN( 483)		::Array< ::Dynamic> result = ::Array_obj< ::Dynamic>::__new(_this->length);
-HXDLIN( 483)		{
-HXLINE( 483)			int _g3 = 0;
-HXDLIN( 483)			int _g4 = _this->length;
-HXDLIN( 483)			while((_g3 < _g4)){
-HXLINE( 483)				_g3 = (_g3 + 1);
-HXDLIN( 483)				int i = (_g3 - 1);
-HXDLIN( 483)				{
-HXLINE( 483)					 ::snikket::jingle::MediaStreamTrack inValue = ( ( ::snikket::jingle::MediaStreamTrack)( ::Dynamic(_hx_array_unsafe_get(_this,i)->__Field(HX_("receiver",2f,45,fd,e2),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic)) );
-HXDLIN( 483)					result->__unsafe_set(i,inValue);
+HXDLIN( 500)		::Array< ::Dynamic> _this = _g;
+HXDLIN( 500)		::Array< ::Dynamic> result = ::Array_obj< ::Dynamic>::__new(_this->length);
+HXDLIN( 500)		{
+HXLINE( 500)			int _g3 = 0;
+HXDLIN( 500)			int _g4 = _this->length;
+HXDLIN( 500)			while((_g3 < _g4)){
+HXLINE( 500)				_g3 = (_g3 + 1);
+HXDLIN( 500)				int i = (_g3 - 1);
+HXDLIN( 500)				{
+HXLINE( 500)					 ::snikket::jingle::MediaStreamTrack inValue = ( ( ::snikket::jingle::MediaStreamTrack)( ::Dynamic(_hx_array_unsafe_get(_this,i)->__Field(HX_("receiver",2f,45,fd,e2),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic)) );
+HXDLIN( 500)					result->__unsafe_set(i,inValue);
             				}
             			}
             		}
-HXDLIN( 483)		return result;
+HXDLIN( 500)		return result;
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(InitiatedSession_obj,videoTracks,return )
 
 size_t InitiatedSession_obj::videoTracks__fromC(void*** outPtr){
-            	HX_GC_STACKFRAME(&_hx_pos_042a82ddefcd0233_250_videoTracks__fromC)
+            	HX_STACKFRAME(&_hx_pos_042a82ddefcd0233_250_videoTracks__fromC)
 HXDLIN( 250)		::Array< ::Dynamic> out = this->videoTracks();
 HXDLIN( 250)		if (::hx::IsNotNull( outPtr )) {
 HXDLIN( 250)			::cpp::Pointer< void** > _hx_tmp = ::cpp::Pointer_obj::fromRaw(outPtr);
@@ -760,15 +785,16 @@ HXDLIN( 250)						 ::Dynamic haxeObject = el;
 HXDLIN( 250)						void* ptr = haxeObject.mPtr;
 HXDLIN( 250)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 250)						{
-HXDLIN( 250)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 250)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 250)							int high = ptrInt64 >> 32;
-HXDLIN( 250)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 250)							if (::hx::IsNull( highMap )) {
-HXDLIN( 250)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 250)								this1->set(low,highMap);
+HXDLIN( 250)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 250)							if (::hx::IsNull( store )) {
+HXDLIN( 250)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 250)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXDLIN( 250)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 250)							highMap->set(high,haxeObject);
             						}
             					}
             				}
@@ -776,15 +802,16 @@ HXDLIN( 250)							highMap->set(high,haxeObject);
 HXDLIN( 250)			void** ptr1 = (void**)out->getBase();
 HXDLIN( 250)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 250)			{
-HXDLIN( 250)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 250)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 250)				int high1 = ptrInt641 >> 32;
-HXDLIN( 250)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 250)				if (::hx::IsNull( highMap1 )) {
-HXDLIN( 250)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 250)					this2->set(low1,highMap1);
+HXDLIN( 250)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 250)				if (::hx::IsNull( store1 )) {
+HXDLIN( 250)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),out));
+HXDLIN( 250)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXDLIN( 250)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 250)				highMap1->set(high1,out);
             			}
 HXDLIN( 250)			_hx_tmp->set_ref(ptr1);
             		}
@@ -795,40 +822,40 @@ HXDLIN( 250)		return ( (size_t)(out->length) );
  ::snikket::jingle::DTMFSender InitiatedSession_obj::dtmf(){
             		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             		bool _hx_run( ::Dynamic t){
-            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_490_dtmf)
-HXLINE( 490)			bool transceiver;
-HXDLIN( 490)			bool transceiver1;
-HXDLIN( 490)			if (::hx::IsNotNull( t->__Field(HX_("sender",b5,c7,84,6b),::hx::paccDynamic) )) {
-HXLINE( 490)				transceiver1 = ::hx::IsNotNull(  ::Dynamic(t->__Field(HX_("sender",b5,c7,84,6b),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic) );
+            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_507_dtmf)
+HXLINE( 507)			bool transceiver;
+HXDLIN( 507)			bool transceiver1;
+HXDLIN( 507)			if (::hx::IsNotNull( t->__Field(HX_("sender",b5,c7,84,6b),::hx::paccDynamic) )) {
+HXLINE( 507)				transceiver1 = ::hx::IsNotNull(  ::Dynamic(t->__Field(HX_("sender",b5,c7,84,6b),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic) );
             			}
             			else {
-HXLINE( 490)				transceiver1 = false;
+HXLINE( 507)				transceiver1 = false;
             			}
-HXDLIN( 490)			if (transceiver1) {
-HXLINE( 490)				transceiver = (( ( ::snikket::jingle::MediaStreamTrack)( ::Dynamic(t->__Field(HX_("sender",b5,c7,84,6b),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic)) )->get_kind() == HX_("audio",d6,78,80,27));
+HXDLIN( 507)			if (transceiver1) {
+HXLINE( 507)				transceiver = (( ( ::snikket::jingle::MediaStreamTrack)( ::Dynamic(t->__Field(HX_("sender",b5,c7,84,6b),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic)) )->get_kind() == HX_("audio",d6,78,80,27));
             			}
             			else {
-HXLINE( 490)				transceiver = false;
+HXLINE( 507)				transceiver = false;
             			}
-HXDLIN( 490)			if (transceiver) {
-HXLINE( 490)				return !(( ( ::snikket::jingle::MediaStreamTrack)( ::Dynamic(t->__Field(HX_("sender",b5,c7,84,6b),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic)) )->get_muted());
+HXDLIN( 507)			if (transceiver) {
+HXLINE( 507)				return !(( ( ::snikket::jingle::MediaStreamTrack)( ::Dynamic(t->__Field(HX_("sender",b5,c7,84,6b),::hx::paccDynamic))->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic)) )->get_muted());
             			}
             			else {
-HXLINE( 490)				return false;
+HXLINE( 507)				return false;
             			}
-HXDLIN( 490)			return false;
+HXDLIN( 507)			return false;
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_488_dtmf)
-HXLINE( 489)		if (::hx::IsNull( this->pc )) {
-HXLINE( 489)			return null();
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_505_dtmf)
+HXLINE( 506)		if (::hx::IsNull( this->pc )) {
+HXLINE( 506)			return null();
             		}
-HXLINE( 490)		 ::Dynamic transceiver = ::Lambda_obj::find(this->pc->getTransceivers(), ::Dynamic(new _hx_Closure_0()));
-HXLINE( 491)		if (::hx::IsNull( transceiver )) {
-HXLINE( 491)			return null();
+HXLINE( 507)		 ::Dynamic transceiver = ::Lambda_obj::find(this->pc->getTransceivers(), ::Dynamic(new _hx_Closure_0()));
+HXLINE( 508)		if (::hx::IsNull( transceiver )) {
+HXLINE( 508)			return null();
             		}
-HXLINE( 492)		return ( ( ::snikket::jingle::DTMFSender)( ::Dynamic(transceiver->__Field(HX_("sender",b5,c7,84,6b),::hx::paccDynamic))->__Field(HX_("dtmf",e9,ba,71,42),::hx::paccDynamic)) );
+HXLINE( 509)		return ( ( ::snikket::jingle::DTMFSender)( ::Dynamic(transceiver->__Field(HX_("sender",b5,c7,84,6b),::hx::paccDynamic))->__Field(HX_("dtmf",e9,ba,71,42),::hx::paccDynamic)) );
             	}
 
 
@@ -837,79 +864,79 @@ HX_DEFINE_DYNAMIC_FUNC0(InitiatedSession_obj,dtmf,return )
 void InitiatedSession_obj::sendIceCandidate( ::Dynamic candidate){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::Dynamic,candidate) HXARGC(1)
             		bool _hx_run( ::snikket::jingle::Media media){
-            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_505_sendIceCandidate)
-HXLINE( 505)			return ::hx::IsEq( media->mid,candidate->__Field(HX_("sdpMid",09,30,5f,d9),::hx::paccDynamic) );
+            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_522_sendIceCandidate)
+HXLINE( 522)			return ::hx::IsEq( media->mid,candidate->__Field(HX_("sdpMid",09,30,5f,d9),::hx::paccDynamic) );
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_1) HXARGC(1)
             		bool _hx_run( ::snikket::jingle::Attribute attr){
-            			HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_517_sendIceCandidate)
-HXLINE( 517)			return (attr->key == HX_("ice-pwd",3b,03,2f,e9));
+            			HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_534_sendIceCandidate)
+HXLINE( 534)			return (attr->key == HX_("ice-pwd",3b,03,2f,e9));
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_495_sendIceCandidate)
-HXLINE( 496)		bool _hx_tmp;
-HXDLIN( 496)		if (::hx::IsNotNull( candidate )) {
-HXLINE( 496)			_hx_tmp = ::hx::IsEq( candidate->__Field(HX_("candidate",43,34,d8,d0),::hx::paccDynamic),HX_("",00,00,00,00) );
+            	HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_512_sendIceCandidate)
+HXLINE( 513)		bool _hx_tmp;
+HXDLIN( 513)		if (::hx::IsNotNull( candidate )) {
+HXLINE( 513)			_hx_tmp = ::hx::IsEq( candidate->__Field(HX_("candidate",43,34,d8,d0),::hx::paccDynamic),HX_("",00,00,00,00) );
             		}
             		else {
-HXLINE( 496)			_hx_tmp = true;
+HXLINE( 513)			_hx_tmp = true;
             		}
-HXDLIN( 496)		if (_hx_tmp) {
-HXLINE( 497)			if (::hx::IsNotNull( this->candidatesDone )) {
-HXLINE( 497)				this->candidatesDone();
+HXDLIN( 513)		if (_hx_tmp) {
+HXLINE( 514)			if (::hx::IsNotNull( this->candidatesDone )) {
+HXLINE( 514)				this->candidatesDone();
             			}
-HXLINE( 498)			return;
+HXLINE( 515)			return;
             		}
-HXLINE( 500)		if (::hx::IsNotNull( this->candidatesDone )) {
-HXLINE( 500)			return;
+HXLINE( 517)		if (::hx::IsNotNull( this->candidatesDone )) {
+HXLINE( 517)			return;
             		}
-HXLINE( 501)		if (::hx::IsNull( this->localDescription )) {
-HXLINE( 502)			this->queuedOutboundCandidate->push(candidate);
-HXLINE( 503)			return;
+HXLINE( 518)		if (::hx::IsNull( this->localDescription )) {
+HXLINE( 519)			this->queuedOutboundCandidate->push(candidate);
+HXLINE( 520)			return;
             		}
-HXLINE( 505)		 ::snikket::jingle::Media media = ( ( ::snikket::jingle::Media)(::Lambda_obj::find(this->localDescription->media, ::Dynamic(new _hx_Closure_0(candidate)))) );
-HXLINE( 506)		if (::hx::IsNull( media )) {
-HXLINE( 506)			HX_STACK_DO_THROW( ::Dynamic((HX_("Unknown media: ",d4,41,45,83) + candidate->__Field(HX_("sdpMid",09,30,5f,d9),::hx::paccDynamic))));
+HXLINE( 522)		 ::snikket::jingle::Media media = ( ( ::snikket::jingle::Media)(::Lambda_obj::find(this->localDescription->media, ::Dynamic(new _hx_Closure_0(candidate)))) );
+HXLINE( 523)		if (::hx::IsNull( media )) {
+HXLINE( 523)			HX_STACK_DO_THROW( ::Dynamic((HX_("Unknown media: ",d4,41,45,83) + candidate->__Field(HX_("sdpMid",09,30,5f,d9),::hx::paccDynamic))));
             		}
-HXLINE( 509)		::String media1 = media->mid;
-HXLINE( 510)		::String media2 = media->media;
-HXLINE( 511)		::String media3 = media->connectionData;
-HXLINE( 512)		::String media4 = media->port;
-HXLINE( 513)		::String media5 = media->protocol;
-HXLINE( 515)		 ::snikket::jingle::Attribute transportInfo = ::snikket::jingle::Attribute_obj::parse(( (::String)(candidate->__Field(HX_("candidate",43,34,d8,d0),::hx::paccDynamic)) ));
-HXLINE( 516)		 ::snikket::jingle::Attribute transportInfo1 =  ::snikket::jingle::Attribute_obj::__alloc( HX_CTX ,HX_("ice-ufrag",65,c2,31,ab),( (::String)(candidate->__Field(HX_("usernameFragment",06,a8,37,89),::hx::paccDynamic)) ));
-HXLINE( 517)		 ::snikket::jingle::Attribute tmp = ( ( ::snikket::jingle::Attribute)(::Lambda_obj::find(media->attributes, ::Dynamic(new _hx_Closure_1()))) );
-HXDLIN( 517)		 ::snikket::jingle::Attribute transportInfo2;
-HXDLIN( 517)		if (::hx::IsNotNull( tmp )) {
-HXLINE( 517)			transportInfo2 = tmp;
+HXLINE( 526)		::String media1 = media->mid;
+HXLINE( 527)		::String media2 = media->media;
+HXLINE( 528)		::String media3 = media->connectionData;
+HXLINE( 529)		::String media4 = media->port;
+HXLINE( 530)		::String media5 = media->protocol;
+HXLINE( 532)		 ::snikket::jingle::Attribute transportInfo = ::snikket::jingle::Attribute_obj::parse(( (::String)(candidate->__Field(HX_("candidate",43,34,d8,d0),::hx::paccDynamic)) ));
+HXLINE( 533)		 ::snikket::jingle::Attribute transportInfo1 =  ::snikket::jingle::Attribute_obj::__alloc( HX_CTX ,HX_("ice-ufrag",65,c2,31,ab),( (::String)(candidate->__Field(HX_("usernameFragment",06,a8,37,89),::hx::paccDynamic)) ));
+HXLINE( 534)		 ::snikket::jingle::Attribute tmp = ( ( ::snikket::jingle::Attribute)(::Lambda_obj::find(media->attributes, ::Dynamic(new _hx_Closure_1()))) );
+HXDLIN( 534)		 ::snikket::jingle::Attribute transportInfo2;
+HXDLIN( 534)		if (::hx::IsNotNull( tmp )) {
+HXLINE( 534)			transportInfo2 = tmp;
             		}
             		else {
             			HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_2) HXARGC(1)
             			bool _hx_run( ::snikket::jingle::Attribute attr){
-            				HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_518_sendIceCandidate)
-HXLINE( 518)				return (attr->key == HX_("ice-pwd",3b,03,2f,e9));
+            				HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_535_sendIceCandidate)
+HXLINE( 535)				return (attr->key == HX_("ice-pwd",3b,03,2f,e9));
             			}
             			HX_END_LOCAL_FUNC1(return)
 
-HXLINE( 517)			transportInfo2 = ( ( ::snikket::jingle::Attribute)(::Lambda_obj::find(this->localDescription->attributes, ::Dynamic(new _hx_Closure_2()))) );
+HXLINE( 534)			transportInfo2 = ( ( ::snikket::jingle::Attribute)(::Lambda_obj::find(this->localDescription->attributes, ::Dynamic(new _hx_Closure_2()))) );
             		}
-HXLINE( 508)		 ::snikket::jingle::Media transportInfo3 =  ::snikket::jingle::Media_obj::__alloc( HX_CTX ,media1,media2,media3,media4,media5,::Array_obj< ::Dynamic>::__new(3)->init(0,transportInfo)->init(1,transportInfo1)->init(2,transportInfo2),media->formats);
-HXLINE( 522)		::String transportInfo4 = this->get_sid();
-HXLINE( 507)		 ::snikket::Stanza transportInfo5 =  ::snikket::jingle::TransportInfo_obj::__alloc( HX_CTX ,transportInfo3,transportInfo4)->toStanza(this->initiator);
-HXLINE( 524)		{
-HXLINE( 524)			 ::Dynamic this1 = transportInfo5->attr;
-HXDLIN( 524)			::String value = this->counterpart->asString();
-HXDLIN( 524)			::Reflect_obj::setField(this1,HX_("to",7b,65,00,00),value);
+HXLINE( 525)		 ::snikket::jingle::Media transportInfo3 =  ::snikket::jingle::Media_obj::__alloc( HX_CTX ,media1,media2,media3,media4,media5,::Array_obj< ::Dynamic>::__new(3)->init(0,transportInfo)->init(1,transportInfo1)->init(2,transportInfo2),media->formats);
+HXLINE( 539)		::String transportInfo4 = this->get_sid();
+HXLINE( 524)		 ::snikket::Stanza transportInfo5 =  ::snikket::jingle::TransportInfo_obj::__alloc( HX_CTX ,transportInfo3,transportInfo4)->toStanza(this->initiator);
+HXLINE( 541)		{
+HXLINE( 541)			 ::Dynamic this1 = transportInfo5->attr;
+HXDLIN( 541)			::String value = this->counterpart->asString();
+HXDLIN( 541)			::Reflect_obj::setField(this1,HX_("to",7b,65,00,00),value);
             		}
-HXLINE( 525)		{
-HXLINE( 525)			 ::Dynamic this2 = transportInfo5->attr;
-HXDLIN( 525)			::String value1 = ::snikket::ID_obj::medium();
-HXDLIN( 525)			::Reflect_obj::setField(this2,HX_("id",db,5b,00,00),value1);
+HXLINE( 542)		{
+HXLINE( 542)			 ::Dynamic this2 = transportInfo5->attr;
+HXDLIN( 542)			::String value1 = ::snikket::ID_obj::medium();
+HXDLIN( 542)			::Reflect_obj::setField(this2,HX_("id",db,5b,00,00),value1);
             		}
-HXLINE( 526)		this->client->sendStanza(transportInfo5);
+HXLINE( 543)		this->client->sendStanza(transportInfo5);
             	}
 
 
@@ -918,56 +945,56 @@ HX_DEFINE_DYNAMIC_FUNC1(InitiatedSession_obj,sendIceCandidate,(void))
 void InitiatedSession_obj::supplyMedia(::Array< ::Dynamic> streams){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_1, ::snikket::jingle::InitiatedSession,_gthis,::Array< ::Dynamic>,streams) HXARGC(0)
             		void _hx_run(){
-            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_530_supplyMedia)
-HXLINE( 531)			{
-HXLINE( 531)				int _g = 0;
-HXDLIN( 531)				while((_g < streams->length)){
-HXLINE( 531)					 ::snikket::jingle::MediaStream stream = streams->__get(_g).StaticCast<  ::snikket::jingle::MediaStream >();
-HXDLIN( 531)					_g = (_g + 1);
-HXLINE( 532)					{
-HXLINE( 532)						int _g1 = 0;
-HXDLIN( 532)						::Array< ::Dynamic> _g2 = stream->getTracks();
-HXDLIN( 532)						while((_g1 < _g2->length)){
-HXLINE( 532)							 ::snikket::jingle::MediaStreamTrack track = _g2->__get(_g1).StaticCast<  ::snikket::jingle::MediaStreamTrack >();
-HXDLIN( 532)							_g1 = (_g1 + 1);
-HXLINE( 533)							_gthis->pc->addTrack(track,stream);
+            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_547_supplyMedia)
+HXLINE( 548)			{
+HXLINE( 548)				int _g = 0;
+HXDLIN( 548)				while((_g < streams->length)){
+HXLINE( 548)					 ::snikket::jingle::MediaStream stream = streams->__get(_g).StaticCast<  ::snikket::jingle::MediaStream >();
+HXDLIN( 548)					_g = (_g + 1);
+HXLINE( 549)					{
+HXLINE( 549)						int _g1 = 0;
+HXDLIN( 549)						::Array< ::Dynamic> _g2 = stream->getTracks();
+HXDLIN( 549)						while((_g1 < _g2->length)){
+HXLINE( 549)							 ::snikket::jingle::MediaStreamTrack track = _g2->__get(_g1).StaticCast<  ::snikket::jingle::MediaStreamTrack >();
+HXDLIN( 549)							_g1 = (_g1 + 1);
+HXLINE( 550)							_gthis->pc->addTrack(track,stream);
             						}
             					}
             				}
             			}
-HXLINE( 537)			if (::hx::IsNull( _gthis->afterMedia )) {
+HXLINE( 554)			if (::hx::IsNull( _gthis->afterMedia )) {
             				HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::jingle::InitiatedSession,_gthis) HXARGC(1)
             				void _hx_run( ::Dynamic e){
-            					HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_538_supplyMedia)
-HXLINE( 539)					 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
-HXDLIN( 539)					::String _hx_tmp1;
-HXDLIN( 539)					if (::hx::IsNull( e )) {
-HXLINE( 539)						_hx_tmp1 = HX_("null",87,9e,0e,49);
+            					HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_555_supplyMedia)
+HXLINE( 556)					 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
+HXDLIN( 556)					::String _hx_tmp1;
+HXDLIN( 556)					if (::hx::IsNull( e )) {
+HXLINE( 556)						_hx_tmp1 = HX_("null",87,9e,0e,49);
             					}
             					else {
-HXLINE( 539)						_hx_tmp1 = ::Std_obj::string(e);
+HXLINE( 556)						_hx_tmp1 = ::Std_obj::string(e);
             					}
-HXDLIN( 539)					_hx_tmp(HX_("supplyMedia error",9d,f9,a0,33), ::Dynamic(::hx::Anon_obj::Create(5)
+HXDLIN( 556)					_hx_tmp(HX_("supplyMedia error",9d,f9,a0,33), ::Dynamic(::hx::Anon_obj::Create(5)
             						->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.jingle.InitiatedSession",b7,6d,05,22))
             						->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,_hx_tmp1))
             						->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("supplyMedia",35,0c,c9,9a))
             						->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/jingle/Session.hx",54,dd,b2,6d))
-            						->setFixed(4,HX_("lineNumber",dd,81,22,76),539)));
-HXLINE( 540)					_gthis->pc->close();
+            						->setFixed(4,HX_("lineNumber",dd,81,22,76),556)));
+HXLINE( 557)					_gthis->pc->close();
             				}
             				HX_END_LOCAL_FUNC1((void))
 
-HXLINE( 538)				::thenshim::PromiseTools_obj::catch_(_gthis->onPeerConnection(), ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE( 555)				::thenshim::PromiseTools_obj::catch_(_gthis->onPeerConnection(), ::Dynamic(new _hx_Closure_0(_gthis)));
             			}
             			else {
-HXLINE( 543)				_gthis->afterMedia();
+HXLINE( 560)				_gthis->afterMedia();
             			}
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_529_supplyMedia)
-HXDLIN( 529)		 ::snikket::jingle::InitiatedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 530)		this->setupPeerConnection( ::Dynamic(new _hx_Closure_1(_gthis,streams)));
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_546_supplyMedia)
+HXDLIN( 546)		 ::snikket::jingle::InitiatedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 547)		this->setupPeerConnection( ::Dynamic(new _hx_Closure_1(_gthis,streams)));
             	}
 
 
@@ -997,10 +1024,10 @@ void InitiatedSession_obj::setupPeerConnection( ::Dynamic callback){
             		void _hx_run(::Array< ::Dynamic> servers){
             			HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::jingle::InitiatedSession,_gthis) HXARGC(1)
             			void _hx_run( ::Dynamic event){
-            				HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_556_setupPeerConnection)
-HXLINE( 556)				 ::snikket::Client _gthis1 = _gthis->client;
-HXDLIN( 556)				::String _hx_tmp = _gthis->get_chatId();
-HXDLIN( 556)				_gthis1->trigger(HX_("call/track",1a,e7,80,d7), ::Dynamic(::hx::Anon_obj::Create(3)
+            				HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_573_setupPeerConnection)
+HXLINE( 573)				 ::snikket::Client _gthis1 = _gthis->client;
+HXDLIN( 573)				::String _hx_tmp = _gthis->get_chatId();
+HXDLIN( 573)				_gthis1->trigger(HX_("call/track",1a,e7,80,d7), ::Dynamic(::hx::Anon_obj::Create(3)
             					->setFixed(0,HX_("chatId",d3,04,77,b7),_hx_tmp)
             					->setFixed(1,HX_("streams",f3,db,44,f6), ::Dynamic(event->__Field(HX_("streams",f3,db,44,f6),::hx::paccDynamic)))
             					->setFixed(2,HX_("track",8b,8e,1f,16), ::Dynamic(event->__Field(HX_("track",8b,8e,1f,16),::hx::paccDynamic)))));
@@ -1009,72 +1036,76 @@ HXDLIN( 556)				_gthis1->trigger(HX_("call/track",1a,e7,80,d7), ::Dynamic(::hx::
 
             			HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_1) HXARGC(1)
             			void _hx_run( ::Dynamic event){
-            				HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_558_setupPeerConnection)
-HXLINE( 558)				::haxe::Log_obj::trace(HX_("renegotiate",2b,b9,fb,a1), ::Dynamic(::hx::Anon_obj::Create(5)
+            				HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_575_setupPeerConnection)
+HXLINE( 575)				::haxe::Log_obj::trace(HX_("renegotiate",2b,b9,fb,a1), ::Dynamic(::hx::Anon_obj::Create(5)
             					->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.jingle.InitiatedSession",b7,6d,05,22))
             					->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,event))
             					->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("setupPeerConnection",bd,67,52,ae))
             					->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/jingle/Session.hx",54,dd,b2,6d))
-            					->setFixed(4,HX_("lineNumber",dd,81,22,76),558)));
+            					->setFixed(4,HX_("lineNumber",dd,81,22,76),575)));
             			}
             			HX_END_LOCAL_FUNC1((void))
 
             			HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_2, ::snikket::jingle::InitiatedSession,_gthis) HXARGC(1)
             			void _hx_run( ::Dynamic event){
-            				HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_560_setupPeerConnection)
-HXLINE( 560)				_gthis->sendIceCandidate(event->__Field(HX_("candidate",43,34,d8,d0),::hx::paccDynamic));
+            				HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_577_setupPeerConnection)
+HXLINE( 577)				_gthis->sendIceCandidate(event->__Field(HX_("candidate",43,34,d8,d0),::hx::paccDynamic));
             			}
             			HX_END_LOCAL_FUNC1((void))
 
             			HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_3, ::snikket::jingle::InitiatedSession,_gthis) HXARGC(1)
             			void _hx_run( ::Dynamic event){
-            				HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_563_setupPeerConnection)
-HXLINE( 563)				bool _hx_tmp;
-HXDLIN( 563)				if (::hx::IsNotNull( _gthis->pc )) {
-HXLINE( 563)					if ((_gthis->pc->get_connectionState() != HX_("closed",ac,a9,51,0e))) {
-HXLINE( 563)						_hx_tmp = (_gthis->pc->get_connectionState() == HX_("failed",bd,c5,fe,e7));
+            				HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_579_setupPeerConnection)
+HXLINE( 580)				if (::hx::IsNotNull( _gthis->pc )) {
+HXLINE( 580)					_gthis->client->trigger(HX_("call/updateStatus",6c,f5,e6,ec), ::Dynamic(::hx::Anon_obj::Create(1)
+            						->setFixed(0,HX_("session",56,17,98,93),_gthis)));
+            				}
+HXLINE( 581)				bool _hx_tmp;
+HXDLIN( 581)				if (::hx::IsNotNull( _gthis->pc )) {
+HXLINE( 581)					if ((_gthis->pc->get_connectionState() != HX_("closed",ac,a9,51,0e))) {
+HXLINE( 581)						_hx_tmp = (_gthis->pc->get_connectionState() == HX_("failed",bd,c5,fe,e7));
             					}
             					else {
-HXLINE( 563)						_hx_tmp = true;
+HXLINE( 581)						_hx_tmp = true;
             					}
             				}
             				else {
-HXLINE( 563)					_hx_tmp = false;
+HXLINE( 581)					_hx_tmp = false;
             				}
-HXDLIN( 563)				if (_hx_tmp) {
-HXLINE( 564)					 ::snikket::Client _gthis1 = _gthis->client;
-HXLINE( 565)					::String _hx_tmp1 = _gthis->counterpart->asString();
-HXDLIN( 565)					 ::snikket::Stanza _hx_tmp2 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(3)
+HXDLIN( 581)				if (_hx_tmp) {
+HXLINE( 582)					 ::snikket::Client _gthis1 = _gthis->client;
+HXLINE( 583)					::String _hx_tmp1 = _gthis->counterpart->asString();
+HXDLIN( 583)					 ::snikket::Stanza _hx_tmp2 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(3)
             						->setFixed(0,HX_("id",db,5b,00,00),::snikket::ID_obj::medium())
             						->setFixed(1,HX_("to",7b,65,00,00),_hx_tmp1)
             						->setFixed(2,HX_("type",ba,f2,08,4d),HX_("set",a2,9b,57,00))));
-HXLINE( 564)					_gthis1->sendStanza(_hx_tmp2->tag(HX_("jingle",31,27,eb,1f), ::Dynamic(::hx::Anon_obj::Create(3)
+HXLINE( 582)					_gthis1->sendStanza(_hx_tmp2->tag(HX_("jingle",31,27,eb,1f), ::Dynamic(::hx::Anon_obj::Create(3)
             						->setFixed(0,HX_("sid",0e,9f,57,00),_gthis->get_sid())
             						->setFixed(1,HX_("action",b6,3b,46,16),HX_("session-terminate",6a,23,dc,12))
             						->setFixed(2,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:jingle:1",44,c4,fe,f7))))->tag(HX_("reason",c4,0f,9d,fc),null())->tag(HX_("connectivity-error",f2,07,09,18),null())->up()->up()->up());
-HXLINE( 570)					_gthis->terminate();
+HXLINE( 588)					_gthis->terminate();
             				}
             			}
             			HX_END_LOCAL_FUNC1((void))
 
-            			HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_553_setupPeerConnection)
-HXLINE( 554)			_gthis->pc =  ::snikket::jingle::PeerConnection_obj::__alloc( HX_CTX , ::Dynamic(::hx::Anon_obj::Create(1)
+            			HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_570_setupPeerConnection)
+HXLINE( 571)			_gthis->pc =  ::snikket::jingle::PeerConnection_obj::__alloc( HX_CTX , ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("iceServers",45,14,49,d2),servers)),null());
-HXLINE( 555)			_gthis->pc->addEventListener(HX_("track",8b,8e,1f,16), ::Dynamic(new _hx_Closure_0(_gthis)));
-HXLINE( 558)			_gthis->pc->addEventListener(HX_("negotiationneeded",d6,4d,d0,53), ::Dynamic(new _hx_Closure_1()));
-HXLINE( 559)			_gthis->pc->addEventListener(HX_("icecandidate",98,ef,c0,7b), ::Dynamic(new _hx_Closure_2(_gthis)));
-HXLINE( 562)			_gthis->pc->addEventListener(HX_("connectionstatechange",e3,a2,87,36), ::Dynamic(new _hx_Closure_3(_gthis)));
-HXLINE( 573)			callback();
+HXLINE( 572)			_gthis->pc->addEventListener(HX_("track",8b,8e,1f,16), ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE( 575)			_gthis->pc->addEventListener(HX_("negotiationneeded",d6,4d,d0,53), ::Dynamic(new _hx_Closure_1()));
+HXLINE( 576)			_gthis->pc->addEventListener(HX_("icecandidate",98,ef,c0,7b), ::Dynamic(new _hx_Closure_2(_gthis)));
+HXLINE( 579)			_gthis->pc->addEventListener(HX_("connectionstatechange",e3,a2,87,36), ::Dynamic(new _hx_Closure_3(_gthis)));
+HXLINE( 591)			callback();
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_548_setupPeerConnection)
-HXDLIN( 548)		 ::snikket::jingle::InitiatedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 549)		if (::hx::IsNotNull( this->pc )) {
-HXLINE( 550)			callback();
-HXLINE( 551)			return;
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_565_setupPeerConnection)
+HXDLIN( 565)		 ::snikket::jingle::InitiatedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 566)		if (::hx::IsNotNull( this->pc )) {
+HXLINE( 567)			callback();
+HXLINE( 568)			return;
             		}
-HXLINE( 553)		this->client->getIceServers( ::Dynamic(new _hx_Closure_4(_gthis,callback)));
+HXLINE( 570)		this->client->getIceServers( ::Dynamic(new _hx_Closure_4(_gthis,callback)));
             	}
 
 
@@ -1083,118 +1114,118 @@ HX_DEFINE_DYNAMIC_FUNC1(InitiatedSession_obj,setupPeerConnection,(void))
 ::Dynamic InitiatedSession_obj::setupLocalDescription(::String type,::Array< ::String > filterMedia, ::Dynamic __o_filterOut, ::Dynamic beforeSend){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_4, ::snikket::jingle::InitiatedSession,_gthis,::String,type) HXARGC(1)
             		::Dynamic _hx_run( ::Dynamic _){
-            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_578_setupLocalDescription)
-HXLINE( 579)			 ::snikket::Client _gthis1 = _gthis->client;
-HXDLIN( 579)			::String caps = _gthis->counterpart->asBare()->asString();
-HXDLIN( 579)			 ::snikket::Caps caps1 = _gthis1->getDirectChat(caps,null())->getResourceCaps(_gthis->counterpart->resource);
-HXLINE( 580)			bool _hx_tmp;
-HXDLIN( 580)			bool _hx_tmp1;
-HXDLIN( 580)			if ((type != HX_("session-initiate",70,2d,30,f7))) {
-HXLINE( 580)				_hx_tmp1 = (type == HX_("session-accept",5f,92,e7,a8));
+            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_596_setupLocalDescription)
+HXLINE( 597)			 ::snikket::Client _gthis1 = _gthis->client;
+HXDLIN( 597)			::String caps = _gthis->counterpart->asBare()->asString();
+HXDLIN( 597)			 ::snikket::Caps caps1 = _gthis1->getDirectChat(caps,null())->getResourceCaps(_gthis->counterpart->resource);
+HXLINE( 598)			bool _hx_tmp;
+HXDLIN( 598)			bool _hx_tmp1;
+HXDLIN( 598)			if ((type != HX_("session-initiate",70,2d,30,f7))) {
+HXLINE( 598)				_hx_tmp1 = (type == HX_("session-accept",5f,92,e7,a8));
             			}
             			else {
-HXLINE( 580)				_hx_tmp1 = true;
+HXLINE( 598)				_hx_tmp1 = true;
             			}
-HXDLIN( 580)			if (_hx_tmp1) {
-HXLINE( 580)				_hx_tmp = caps1->features->contains(HX_("urn:ietf:rfc:3264",2b,35,57,2c));
+HXDLIN( 598)			if (_hx_tmp1) {
+HXLINE( 598)				_hx_tmp = caps1->features->contains(HX_("urn:ietf:rfc:3264",2b,35,57,2c));
             			}
             			else {
-HXLINE( 580)				_hx_tmp = false;
+HXLINE( 598)				_hx_tmp = false;
             			}
-HXDLIN( 580)			if (_hx_tmp) {
+HXDLIN( 598)			if (_hx_tmp) {
             				HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_3, ::snikket::jingle::InitiatedSession,_gthis) HXARGC(2)
             				void _hx_run( ::Dynamic resolve, ::Dynamic reject){
             					HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_1, ::snikket::jingle::InitiatedSession,_gthis, ::Dynamic,resolve) HXARGC(0)
             					void _hx_run(){
             						HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(0)
             						void _hx_run(){
-            							HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_583_setupLocalDescription)
+            							HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_601_setupLocalDescription)
             						}
             						HX_END_LOCAL_FUNC0((void))
 
-            						HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_582_setupLocalDescription)
-HXLINE( 583)						_gthis->candidatesDone =  ::Dynamic(new _hx_Closure_0());
-HXLINE( 584)						resolve(false);
+            						HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_600_setupLocalDescription)
+HXLINE( 601)						_gthis->candidatesDone =  ::Dynamic(new _hx_Closure_0());
+HXLINE( 602)						resolve(false);
             					}
             					HX_END_LOCAL_FUNC0((void))
 
             					HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_2, ::Dynamic,resolve, ::haxe::Timer,timeout) HXARGC(0)
             					void _hx_run(){
-            						HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_586_setupLocalDescription)
-HXLINE( 587)						timeout->stop();
-HXLINE( 588)						resolve(true);
+            						HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_604_setupLocalDescription)
+HXLINE( 605)						timeout->stop();
+HXLINE( 606)						resolve(true);
             					}
             					HX_END_LOCAL_FUNC0((void))
 
-            					HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_581_setupLocalDescription)
-HXLINE( 582)					 ::haxe::Timer timeout = ::haxe::Timer_obj::delay( ::Dynamic(new _hx_Closure_1(_gthis,resolve)),3000);
-HXLINE( 586)					_gthis->candidatesDone =  ::Dynamic(new _hx_Closure_2(resolve,timeout));
+            					HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_599_setupLocalDescription)
+HXLINE( 600)					 ::haxe::Timer timeout = ::haxe::Timer_obj::delay( ::Dynamic(new _hx_Closure_1(_gthis,resolve)),3000);
+HXLINE( 604)					_gthis->candidatesDone =  ::Dynamic(new _hx_Closure_2(resolve,timeout));
             				}
             				HX_END_LOCAL_FUNC2((void))
 
-HXLINE( 581)				return ::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_3(_gthis)));
+HXLINE( 599)				return ::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_3(_gthis)));
             			}
             			else {
-HXLINE( 592)				return null();
+HXLINE( 610)				return null();
             			}
-HXLINE( 580)			return null();
+HXLINE( 598)			return null();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S5(::hx::LocalFunc,_hx_Closure_5, ::snikket::jingle::InitiatedSession,_gthis,::String,type, ::Dynamic,beforeSend, ::Dynamic,filterOut,::Array< ::String >,filterMedia) HXARGC(1)
             		void _hx_run(bool _){
-            			HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_594_setupLocalDescription)
-HXLINE( 595)			_gthis->localDescription = ::snikket::jingle::SessionDescription_obj::parse(( (::String)(_gthis->pc->get_localDescription()->__Field(HX_("sdp",bf,9a,57,00),::hx::paccDynamic)) ));
-HXLINE( 596)			 ::snikket::jingle::SessionDescription descriptionToSend = _gthis->localDescription;
-HXLINE( 597)			if (::hx::IsNotNull( filterMedia )) {
-HXLINE( 599)				int descriptionToSend1 = descriptionToSend->version;
-HXLINE( 600)				::String descriptionToSend2 = descriptionToSend->name;
-HXLINE( 601)				::Array< ::Dynamic> _g = ::Array_obj< ::Dynamic>::__new(0);
-HXDLIN( 601)				{
-HXLINE( 601)					int _g1 = 0;
-HXDLIN( 601)					::Array< ::Dynamic> _g2 = descriptionToSend->media;
-HXDLIN( 601)					while((_g1 < _g2->length)){
-HXLINE( 601)						 ::snikket::jingle::Media v = _g2->__get(_g1).StaticCast<  ::snikket::jingle::Media >();
-HXDLIN( 601)						_g1 = (_g1 + 1);
-HXDLIN( 601)						bool descriptionToSend3;
-HXDLIN( 601)						if (( (bool)(filterOut) )) {
-HXLINE( 601)							descriptionToSend3 = !(filterMedia->contains(v->mid));
+            			HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_612_setupLocalDescription)
+HXLINE( 613)			_gthis->localDescription = ::snikket::jingle::SessionDescription_obj::parse(( (::String)(_gthis->pc->get_localDescription()->__Field(HX_("sdp",bf,9a,57,00),::hx::paccDynamic)) ));
+HXLINE( 614)			 ::snikket::jingle::SessionDescription descriptionToSend = _gthis->localDescription;
+HXLINE( 615)			if (::hx::IsNotNull( filterMedia )) {
+HXLINE( 617)				int descriptionToSend1 = descriptionToSend->version;
+HXLINE( 618)				::String descriptionToSend2 = descriptionToSend->name;
+HXLINE( 619)				::Array< ::Dynamic> _g = ::Array_obj< ::Dynamic>::__new(0);
+HXDLIN( 619)				{
+HXLINE( 619)					int _g1 = 0;
+HXDLIN( 619)					::Array< ::Dynamic> _g2 = descriptionToSend->media;
+HXDLIN( 619)					while((_g1 < _g2->length)){
+HXLINE( 619)						 ::snikket::jingle::Media v = _g2->__get(_g1).StaticCast<  ::snikket::jingle::Media >();
+HXDLIN( 619)						_g1 = (_g1 + 1);
+HXDLIN( 619)						bool descriptionToSend3;
+HXDLIN( 619)						if (( (bool)(filterOut) )) {
+HXLINE( 619)							descriptionToSend3 = !(filterMedia->contains(v->mid));
             						}
             						else {
-HXLINE( 601)							descriptionToSend3 = filterMedia->contains(v->mid);
+HXLINE( 619)							descriptionToSend3 = filterMedia->contains(v->mid);
             						}
-HXDLIN( 601)						if (descriptionToSend3) {
-HXLINE( 601)							_g->push(v);
+HXDLIN( 619)						if (descriptionToSend3) {
+HXLINE( 619)							_g->push(v);
             						}
             					}
             				}
-HXLINE( 598)				descriptionToSend =  ::snikket::jingle::SessionDescription_obj::__alloc( HX_CTX ,descriptionToSend1,descriptionToSend2,_g,descriptionToSend->attributes,descriptionToSend->identificationTags);
+HXLINE( 616)				descriptionToSend =  ::snikket::jingle::SessionDescription_obj::__alloc( HX_CTX ,descriptionToSend1,descriptionToSend2,_g,descriptionToSend->attributes,descriptionToSend->identificationTags);
             			}
-HXLINE( 606)			if (::hx::IsNotNull( beforeSend )) {
-HXLINE( 606)				beforeSend(descriptionToSend);
+HXLINE( 624)			if (::hx::IsNotNull( beforeSend )) {
+HXLINE( 624)				beforeSend(descriptionToSend);
             			}
-HXLINE( 607)			::String type1 = type;
-HXDLIN( 607)			::String sessionAccept = _gthis->get_sid();
-HXDLIN( 607)			 ::snikket::Stanza sessionAccept1 = descriptionToSend->toStanza(type1,sessionAccept,_gthis->initiator);
-HXLINE( 608)			{
-HXLINE( 608)				 ::Dynamic this1 = sessionAccept1->attr;
-HXDLIN( 608)				::String value = _gthis->counterpart->asString();
-HXDLIN( 608)				::Reflect_obj::setField(this1,HX_("to",7b,65,00,00),value);
+HXLINE( 625)			::String type1 = type;
+HXDLIN( 625)			::String sessionAccept = _gthis->get_sid();
+HXDLIN( 625)			 ::snikket::Stanza sessionAccept1 = descriptionToSend->toStanza(type1,sessionAccept,_gthis->initiator);
+HXLINE( 626)			{
+HXLINE( 626)				 ::Dynamic this1 = sessionAccept1->attr;
+HXDLIN( 626)				::String value = _gthis->counterpart->asString();
+HXDLIN( 626)				::Reflect_obj::setField(this1,HX_("to",7b,65,00,00),value);
             			}
-HXLINE( 609)			{
-HXLINE( 609)				 ::Dynamic this2 = sessionAccept1->attr;
-HXDLIN( 609)				::String value1 = ::snikket::ID_obj::medium();
-HXDLIN( 609)				::Reflect_obj::setField(this2,HX_("id",db,5b,00,00),value1);
+HXLINE( 627)			{
+HXLINE( 627)				 ::Dynamic this2 = sessionAccept1->attr;
+HXDLIN( 627)				::String value1 = ::snikket::ID_obj::medium();
+HXDLIN( 627)				::Reflect_obj::setField(this2,HX_("id",db,5b,00,00),value1);
             			}
-HXLINE( 610)			_gthis->client->sendStanza(sessionAccept1);
-HXLINE( 612)			::Array< ::Dynamic> outboundCandidate = _gthis->queuedOutboundCandidate->copy();
-HXLINE( 613)			_gthis->queuedOutboundCandidate->resize(0);
-HXLINE( 614)			{
-HXLINE( 614)				int _g3 = 0;
-HXDLIN( 614)				while((_g3 < outboundCandidate->length)){
-HXLINE( 614)					 ::Dynamic candidate = outboundCandidate->__get(_g3);
-HXDLIN( 614)					_g3 = (_g3 + 1);
-HXLINE( 615)					_gthis->sendIceCandidate(candidate);
+HXLINE( 628)			_gthis->client->sendStanza(sessionAccept1);
+HXLINE( 630)			::Array< ::Dynamic> outboundCandidate = _gthis->queuedOutboundCandidate->copy();
+HXLINE( 631)			_gthis->queuedOutboundCandidate->resize(0);
+HXLINE( 632)			{
+HXLINE( 632)				int _g3 = 0;
+HXDLIN( 632)				while((_g3 < outboundCandidate->length)){
+HXLINE( 632)					 ::Dynamic candidate = outboundCandidate->__get(_g3);
+HXDLIN( 632)					_g3 = (_g3 + 1);
+HXLINE( 633)					_gthis->sendIceCandidate(candidate);
             				}
             			}
             		}
@@ -1202,9 +1233,9 @@ HXLINE( 615)					_gthis->sendIceCandidate(candidate);
 
             		 ::Dynamic filterOut = __o_filterOut;
             		if (::hx::IsNull(__o_filterOut)) filterOut = false;
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_577_setupLocalDescription)
-HXDLIN( 577)		 ::snikket::jingle::InitiatedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 578)		return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(this->pc->setLocalDescription(null()), ::Dynamic(new _hx_Closure_4(_gthis,type)),null()), ::Dynamic(new _hx_Closure_5(_gthis,type,beforeSend,filterOut,filterMedia)),null());
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_595_setupLocalDescription)
+HXDLIN( 595)		 ::snikket::jingle::InitiatedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 596)		return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(this->pc->setLocalDescription(null()), ::Dynamic(new _hx_Closure_4(_gthis,type)),null()), ::Dynamic(new _hx_Closure_5(_gthis,type,beforeSend,filterOut,filterMedia)),null());
             	}
 
 
@@ -1213,52 +1244,52 @@ HX_DEFINE_DYNAMIC_FUNC4(InitiatedSession_obj,setupLocalDescription,return )
 ::Dynamic InitiatedSession_obj::onPeerConnection(){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::jingle::InitiatedSession,_gthis) HXARGC(1)
             		::Array< ::Dynamic> _hx_run( ::Dynamic _){
-            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_622_onPeerConnection)
-HXLINE( 623)			::Array< ::Dynamic> inboundTransportInfo = _gthis->queuedInboundTransportInfo->copy();
-HXLINE( 624)			_gthis->queuedInboundTransportInfo->resize(0);
-HXLINE( 625)			 ::Dynamic f = _gthis->transportInfo_dyn();
-HXDLIN( 625)			::Array< ::Dynamic> result = ::Array_obj< ::Dynamic>::__new(inboundTransportInfo->length);
-HXDLIN( 625)			{
-HXLINE( 625)				int _g = 0;
-HXDLIN( 625)				int _g1 = inboundTransportInfo->length;
-HXDLIN( 625)				while((_g < _g1)){
-HXLINE( 625)					_g = (_g + 1);
-HXDLIN( 625)					int i = (_g - 1);
-HXDLIN( 625)					{
-HXLINE( 625)						::Dynamic inValue = f(_hx_array_unsafe_get(inboundTransportInfo,i));
-HXDLIN( 625)						result->__unsafe_set(i,inValue);
+            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_640_onPeerConnection)
+HXLINE( 641)			::Array< ::Dynamic> inboundTransportInfo = _gthis->queuedInboundTransportInfo->copy();
+HXLINE( 642)			_gthis->queuedInboundTransportInfo->resize(0);
+HXLINE( 643)			 ::Dynamic f = _gthis->transportInfo_dyn();
+HXDLIN( 643)			::Array< ::Dynamic> result = ::Array_obj< ::Dynamic>::__new(inboundTransportInfo->length);
+HXDLIN( 643)			{
+HXLINE( 643)				int _g = 0;
+HXDLIN( 643)				int _g1 = inboundTransportInfo->length;
+HXDLIN( 643)				while((_g < _g1)){
+HXLINE( 643)					_g = (_g + 1);
+HXDLIN( 643)					int i = (_g - 1);
+HXDLIN( 643)					{
+HXLINE( 643)						::Dynamic inValue = f(_hx_array_unsafe_get(inboundTransportInfo,i));
+HXDLIN( 643)						result->__unsafe_set(i,inValue);
             					}
             				}
             			}
-HXDLIN( 625)			return result;
+HXDLIN( 643)			return result;
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_1, ::snikket::jingle::InitiatedSession,_gthis) HXARGC(1)
             		::Dynamic _hx_run(::Array< ::Dynamic> _){
-            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_628_onPeerConnection)
-HXLINE( 628)			return _gthis->setupLocalDescription(HX_("session-accept",5f,92,e7,a8),null(),null(),null());
+            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_646_onPeerConnection)
+HXLINE( 646)			return _gthis->setupLocalDescription(HX_("session-accept",5f,92,e7,a8),null(),null(),null());
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_2, ::snikket::jingle::InitiatedSession,_gthis) HXARGC(1)
             		::String _hx_run( ::Dynamic _){
-            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_629_onPeerConnection)
-HXLINE( 630)			::String _hx_tmp;
-HXDLIN( 630)			if ((_gthis->localDescription->getDtlsSetup() == HX_("active",c6,41,46,16))) {
-HXLINE( 630)				_hx_tmp = HX_("passive",a7,47,6a,7d);
+            			HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_647_onPeerConnection)
+HXLINE( 648)			::String _hx_tmp;
+HXDLIN( 648)			if ((_gthis->localDescription->getDtlsSetup() == HX_("active",c6,41,46,16))) {
+HXLINE( 648)				_hx_tmp = HX_("passive",a7,47,6a,7d);
             			}
             			else {
-HXLINE( 630)				_hx_tmp = HX_("active",c6,41,46,16);
+HXLINE( 648)				_hx_tmp = HX_("active",c6,41,46,16);
             			}
-HXLINE( 629)			return (_gthis->peerDtlsSetup = _hx_tmp);
+HXLINE( 647)			return (_gthis->peerDtlsSetup = _hx_tmp);
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_620_onPeerConnection)
-HXDLIN( 620)		 ::snikket::jingle::InitiatedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 621)		 ::snikket::jingle::PeerConnection _hx_tmp = this->pc;
-HXDLIN( 621)		return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp->setRemoteDescription( ::Dynamic(::hx::Anon_obj::Create(2)
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_638_onPeerConnection)
+HXDLIN( 638)		 ::snikket::jingle::InitiatedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 639)		 ::snikket::jingle::PeerConnection _hx_tmp = this->pc;
+HXDLIN( 639)		return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp->setRemoteDescription( ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("sdp",bf,9a,57,00),this->remoteDescription->toSdp())
             			->setFixed(1,HX_("type",ba,f2,08,4d),cpp::Struct(rtc::Description::Type::Offer)))), ::Dynamic(new _hx_Closure_0(_gthis)),null()), ::Dynamic(new _hx_Closure_1(_gthis)),null()), ::Dynamic(new _hx_Closure_2(_gthis)),null());
             	}
@@ -1267,13 +1298,13 @@ HXDLIN( 621)		return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_
 HX_DEFINE_DYNAMIC_FUNC0(InitiatedSession_obj,onPeerConnection,return )
 
  ::snikket::jingle::InitiatedSession InitiatedSession_obj::fromSessionInitiate( ::snikket::Client client, ::snikket::Stanza stanza){
-            	HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_316_fromSessionInitiate)
-HXLINE( 317)		 ::snikket::Stanza jingle = stanza->getChild(HX_("jingle",31,27,eb,1f),HX_("urn:xmpp:jingle:1",44,c4,fe,f7));
-HXLINE( 320)		 ::snikket::JID session = ::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ));
-HXLINE( 321)		::String session1 = ( (::String)(::Reflect_obj::field(jingle->attr,HX_("sid",0e,9f,57,00))) );
-HXLINE( 318)		 ::snikket::jingle::InitiatedSession session2 =  ::snikket::jingle::InitiatedSession_obj::__alloc( HX_CTX ,client,session,session1,::snikket::jingle::SessionDescription_obj::fromStanza(stanza,false,null()));
-HXLINE( 324)		session2->transportInfo(stanza);
-HXLINE( 325)		return session2;
+            	HX_GC_STACKFRAME(&_hx_pos_de51993dbb06b02d_327_fromSessionInitiate)
+HXLINE( 328)		 ::snikket::Stanza jingle = stanza->getChild(HX_("jingle",31,27,eb,1f),HX_("urn:xmpp:jingle:1",44,c4,fe,f7));
+HXLINE( 331)		 ::snikket::JID session = ::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ));
+HXLINE( 332)		::String session1 = ( (::String)(::Reflect_obj::field(jingle->attr,HX_("sid",0e,9f,57,00))) );
+HXLINE( 329)		 ::snikket::jingle::InitiatedSession session2 =  ::snikket::jingle::InitiatedSession_obj::__alloc( HX_CTX ,client,session,session1,::snikket::jingle::SessionDescription_obj::fromStanza(stanza,false,null()));
+HXLINE( 335)		session2->transportInfo(stanza);
+HXLINE( 336)		return session2;
             	}
 
 
@@ -1593,8 +1624,8 @@ void InitiatedSession_obj::__register()
 void InitiatedSession_obj::__boot()
 {
 {
-            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_289_boot)
-HXDLIN( 289)		__mClass->__meta__ =  ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_STACKFRAME(&_hx_pos_de51993dbb06b02d_300_boot)
+HXDLIN( 300)		__mClass->__meta__ =  ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("fields",79,8e,8e,80), ::Dynamic(::hx::Anon_obj::Create(8)
             				->setFixed(0,HX_("chatId__fromC",06,fc,b1,94), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.wrapper",8b,ea,27,d4),null())))
diff --git a/Sources/c_snikket/src/snikket/jingle/MediaStream.cpp b/Sources/c_snikket/src/snikket/jingle/MediaStream.cpp
index b66a660..7375c6d 100644
--- a/Sources/c_snikket/src/snikket/jingle/MediaStream.cpp
+++ b/Sources/c_snikket/src/snikket/jingle/MediaStream.cpp
@@ -12,12 +12,12 @@
 #ifndef INCLUDED__HaxeCBridge_Internal
 #include <_HaxeCBridge/Internal.h>
 #endif
+#ifndef INCLUDED_cpp_Int64Map
+#include <cpp/Int64Map.h>
+#endif
 #ifndef INCLUDED_haxe_IMap
 #include <haxe/IMap.h>
 #endif
-#ifndef INCLUDED_haxe_ds_IntMap
-#include <haxe/ds/IntMap.h>
-#endif
 #ifndef INCLUDED_snikket_ID
 #include <snikket/ID.h>
 #endif
@@ -28,18 +28,18 @@
 #include <snikket/jingle/MediaStreamTrack.h>
 #endif
 
-HX_DEFINE_STACK_FRAME(_hx_pos_73a4884454ac5ac3_642_new,"snikket.jingle.MediaStream","new",0xfb2579ea,"snikket.jingle.MediaStream.new","snikket/jingle/PeerConnection.cpp.hx",642,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_73a4884454ac5ac3_662_addTrack,"snikket.jingle.MediaStream","addTrack",0x3c4636e0,"snikket.jingle.MediaStream.addTrack","snikket/jingle/PeerConnection.cpp.hx",662,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_73a4884454ac5ac3_666_getTracks,"snikket.jingle.MediaStream","getTracks",0x455c21c8,"snikket.jingle.MediaStream.getTracks","snikket/jingle/PeerConnection.cpp.hx",666,0xf9fab71d)
+HX_DEFINE_STACK_FRAME(_hx_pos_73a4884454ac5ac3_645_new,"snikket.jingle.MediaStream","new",0xfb2579ea,"snikket.jingle.MediaStream.new","snikket/jingle/PeerConnection.cpp.hx",645,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_73a4884454ac5ac3_665_addTrack,"snikket.jingle.MediaStream","addTrack",0x3c4636e0,"snikket.jingle.MediaStream.addTrack","snikket/jingle/PeerConnection.cpp.hx",665,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_73a4884454ac5ac3_669_getTracks,"snikket.jingle.MediaStream","getTracks",0x455c21c8,"snikket.jingle.MediaStream.getTracks","snikket/jingle/PeerConnection.cpp.hx",669,0xf9fab71d)
 HX_LOCAL_STACK_FRAME(_hx_pos_fa9a1f555469415a_250_getTracks__fromC,"snikket.jingle.MediaStream","getTracks__fromC",0xff2f97b1,"snikket.jingle.MediaStream.getTracks__fromC","HaxeCBridge.hx",250,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_73a4884454ac5ac3_647_makeAudio,"snikket.jingle.MediaStream","makeAudio",0x7ea15d12,"snikket.jingle.MediaStream.makeAudio","snikket/jingle/PeerConnection.cpp.hx",647,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_73a4884454ac5ac3_641_boot,"snikket.jingle.MediaStream","boot",0xbdbe3368,"snikket.jingle.MediaStream.boot","snikket/jingle/PeerConnection.cpp.hx",641,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_73a4884454ac5ac3_650_makeAudio,"snikket.jingle.MediaStream","makeAudio",0x7ea15d12,"snikket.jingle.MediaStream.makeAudio","snikket/jingle/PeerConnection.cpp.hx",650,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_73a4884454ac5ac3_644_boot,"snikket.jingle.MediaStream","boot",0xbdbe3368,"snikket.jingle.MediaStream.boot","snikket/jingle/PeerConnection.cpp.hx",644,0xf9fab71d)
 namespace snikket{
 namespace jingle{
 
 void MediaStream_obj::__construct(){
-            	HX_STACKFRAME(&_hx_pos_73a4884454ac5ac3_642_new)
-HXDLIN( 642)		this->tracks = ::Array_obj< ::Dynamic>::__new(0);
+            	HX_STACKFRAME(&_hx_pos_73a4884454ac5ac3_645_new)
+HXDLIN( 645)		this->tracks = ::Array_obj< ::Dynamic>::__new(0);
             	}
 
 Dynamic MediaStream_obj::__CreateEmpty() { return new MediaStream_obj; }
@@ -58,23 +58,23 @@ bool MediaStream_obj::_hx_isInstanceOf(int inClassId) {
 }
 
 void MediaStream_obj::addTrack( ::snikket::jingle::MediaStreamTrack track){
-            	HX_STACKFRAME(&_hx_pos_73a4884454ac5ac3_662_addTrack)
-HXDLIN( 662)		this->tracks->push(track);
+            	HX_STACKFRAME(&_hx_pos_73a4884454ac5ac3_665_addTrack)
+HXDLIN( 665)		this->tracks->push(track);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(MediaStream_obj,addTrack,(void))
 
 ::Array< ::Dynamic> MediaStream_obj::getTracks(){
-            	HX_STACKFRAME(&_hx_pos_73a4884454ac5ac3_666_getTracks)
-HXDLIN( 666)		return this->tracks;
+            	HX_STACKFRAME(&_hx_pos_73a4884454ac5ac3_669_getTracks)
+HXDLIN( 669)		return this->tracks;
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(MediaStream_obj,getTracks,return )
 
 size_t MediaStream_obj::getTracks__fromC(void*** outPtr){
-            	HX_GC_STACKFRAME(&_hx_pos_fa9a1f555469415a_250_getTracks__fromC)
+            	HX_STACKFRAME(&_hx_pos_fa9a1f555469415a_250_getTracks__fromC)
 HXDLIN( 250)		::Array< ::Dynamic> out = this->getTracks();
 HXDLIN( 250)		if (::hx::IsNotNull( outPtr )) {
 HXDLIN( 250)			::cpp::Pointer< void** > _hx_tmp = ::cpp::Pointer_obj::fromRaw(outPtr);
@@ -88,15 +88,16 @@ HXDLIN( 250)						 ::Dynamic haxeObject = el;
 HXDLIN( 250)						void* ptr = haxeObject.mPtr;
 HXDLIN( 250)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 250)						{
-HXDLIN( 250)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 250)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 250)							int high = ptrInt64 >> 32;
-HXDLIN( 250)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 250)							if (::hx::IsNull( highMap )) {
-HXDLIN( 250)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 250)								this1->set(low,highMap);
+HXDLIN( 250)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 250)							if (::hx::IsNull( store )) {
+HXDLIN( 250)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 250)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXDLIN( 250)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 250)							highMap->set(high,haxeObject);
             						}
             					}
             				}
@@ -104,15 +105,16 @@ HXDLIN( 250)							highMap->set(high,haxeObject);
 HXDLIN( 250)			void** ptr1 = (void**)out->getBase();
 HXDLIN( 250)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 250)			{
-HXDLIN( 250)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 250)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 250)				int high1 = ptrInt641 >> 32;
-HXDLIN( 250)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 250)				if (::hx::IsNull( highMap1 )) {
-HXDLIN( 250)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 250)					this2->set(low1,highMap1);
+HXDLIN( 250)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 250)				if (::hx::IsNull( store1 )) {
+HXDLIN( 250)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),out));
+HXDLIN( 250)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXDLIN( 250)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 250)				highMap1->set(high1,out);
             			}
 HXDLIN( 250)			_hx_tmp->set_ref(ptr1);
             		}
@@ -121,16 +123,16 @@ HXDLIN( 250)		return ( (size_t)(out->length) );
 
 
  ::snikket::jingle::MediaStream MediaStream_obj::makeAudio(){
-            	HX_GC_STACKFRAME(&_hx_pos_73a4884454ac5ac3_647_makeAudio)
-HXLINE( 648)		 rtc::Description::Audio audio =  rtc::Description::Audio(::hx::StdString(::snikket::ID_obj::tiny()),cpp::Struct(rtc::Description::Direction::SendRecv));
-HXLINE( 649)		audio.addOpusCodec(107);
-HXLINE( 650)		audio.addPCMUCodec(0);
-HXLINE( 651)		audio.addAudioCodec(101,::hx::StdString(HX_("telephone-event/8000",36,ae,10,93)));
-HXLINE( 652)		 ::snikket::jingle::MediaStreamTrack media =  ::snikket::jingle::MediaStreamTrack_obj::__alloc( HX_CTX );
-HXLINE( 653)		media->media =  std::optional<  rtc::Description::Media >(audio);
-HXLINE( 654)		 ::snikket::jingle::MediaStream stream =  ::snikket::jingle::MediaStream_obj::__alloc( HX_CTX );
-HXLINE( 655)		stream->addTrack(media);
-HXLINE( 656)		return stream;
+            	HX_GC_STACKFRAME(&_hx_pos_73a4884454ac5ac3_650_makeAudio)
+HXLINE( 651)		 rtc::Description::Audio audio =  rtc::Description::Audio(::hx::StdString(::snikket::ID_obj::tiny()),cpp::Struct(rtc::Description::Direction::SendRecv));
+HXLINE( 652)		audio.addOpusCodec(107);
+HXLINE( 653)		audio.addPCMUCodec(0);
+HXLINE( 654)		audio.addAudioCodec(101,::hx::StdString(HX_("telephone-event/8000",36,ae,10,93)));
+HXLINE( 655)		 ::snikket::jingle::MediaStreamTrack media =  ::snikket::jingle::MediaStreamTrack_obj::__alloc( HX_CTX );
+HXLINE( 656)		media->media =  std::optional<  rtc::Description::Media >(audio);
+HXLINE( 657)		 ::snikket::jingle::MediaStream stream =  ::snikket::jingle::MediaStream_obj::__alloc( HX_CTX );
+HXLINE( 658)		stream->addTrack(media);
+HXLINE( 659)		return stream;
             	}
 
 
@@ -252,8 +254,8 @@ void MediaStream_obj::__register()
 void MediaStream_obj::__boot()
 {
 {
-            	HX_STACKFRAME(&_hx_pos_73a4884454ac5ac3_641_boot)
-HXDLIN( 641)		__mClass->__meta__ =  ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_STACKFRAME(&_hx_pos_73a4884454ac5ac3_644_boot)
+HXDLIN( 644)		__mClass->__meta__ =  ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("fields",79,8e,8e,80), ::Dynamic(::hx::Anon_obj::Create(2)
             				->setFixed(0,HX_("getTracks",be,b4,d3,c1), ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("HaxeCBridge.noemit",dc,2c,99,2f),::cpp::VirtualArray_obj::__new(1)->init(0,HX_("wrapped",45,d5,64,0d)))))
diff --git a/Sources/c_snikket/src/snikket/jingle/MediaStreamTrack.cpp b/Sources/c_snikket/src/snikket/jingle/MediaStreamTrack.cpp
index c71fd2d..8d2f843 100644
--- a/Sources/c_snikket/src/snikket/jingle/MediaStreamTrack.cpp
+++ b/Sources/c_snikket/src/snikket/jingle/MediaStreamTrack.cpp
@@ -34,6 +34,9 @@
 #ifndef INCLUDED__HaxeCBridge_Internal
 #include <_HaxeCBridge/Internal.h>
 #endif
+#ifndef INCLUDED_cpp_Int64Map
+#include <cpp/Int64Map.h>
+#endif
 #ifndef INCLUDED_haxe_IMap
 #include <haxe/IMap.h>
 #endif
@@ -43,9 +46,6 @@
 #ifndef INCLUDED_haxe_Timer
 #include <haxe/Timer.h>
 #endif
-#ifndef INCLUDED_haxe_ds_IntMap
-#include <haxe/ds/IntMap.h>
-#endif
 #ifndef INCLUDED_snikket_jingle_AudioFormat
 #include <snikket/jingle/AudioFormat.h>
 #endif
@@ -88,13 +88,13 @@ HX_LOCAL_STACK_FRAME(_hx_pos_6a2465e57550c9c8_252_addReadyForPCMListener__fromC,
 HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_536_notifyReadyForData,"snikket.jingle.MediaStreamTrack","notifyReadyForData",0x61f3b534,"snikket.jingle.MediaStreamTrack.notifyReadyForData","snikket/jingle/PeerConnection.cpp.hx",536,0xf9fab71d)
 HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_540_notifyReadyForData,"snikket.jingle.MediaStreamTrack","notifyReadyForData",0x61f3b534,"snikket.jingle.MediaStreamTrack.notifyReadyForData","snikket/jingle/PeerConnection.cpp.hx",540,0xf9fab71d)
 HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_562_writePCM,"snikket.jingle.MediaStreamTrack","writePCM",0x763990d6,"snikket.jingle.MediaStreamTrack.writePCM","snikket/jingle/PeerConnection.cpp.hx",562,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_564_writePCM,"snikket.jingle.MediaStreamTrack","writePCM",0x763990d6,"snikket.jingle.MediaStreamTrack.writePCM","snikket/jingle/PeerConnection.cpp.hx",564,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_567_writePCM,"snikket.jingle.MediaStreamTrack","writePCM",0x763990d6,"snikket.jingle.MediaStreamTrack.writePCM","snikket/jingle/PeerConnection.cpp.hx",567,0xf9fab71d)
 HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_561_writePCM,"snikket.jingle.MediaStreamTrack","writePCM",0x763990d6,"snikket.jingle.MediaStreamTrack.writePCM","snikket/jingle/PeerConnection.cpp.hx",561,0xf9fab71d)
 HX_LOCAL_STACK_FRAME(_hx_pos_6a2465e57550c9c8_252_writePCM__fromC,"snikket.jingle.MediaStreamTrack","writePCM__fromC",0x54304663,"snikket.jingle.MediaStreamTrack.writePCM__fromC","HaxeCBridge.hx",252,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_607_onAudioLoop,"snikket.jingle.MediaStreamTrack","onAudioLoop",0x959462c0,"snikket.jingle.MediaStreamTrack.onAudioLoop","snikket/jingle/PeerConnection.cpp.hx",607,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_611_write,"snikket.jingle.MediaStreamTrack","write",0xf83bdca4,"snikket.jingle.MediaStreamTrack.write","snikket/jingle/PeerConnection.cpp.hx",611,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_623_advanceTimestamp,"snikket.jingle.MediaStreamTrack","advanceTimestamp",0xa8dad84f,"snikket.jingle.MediaStreamTrack.advanceTimestamp","snikket/jingle/PeerConnection.cpp.hx",623,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_626_stop,"snikket.jingle.MediaStreamTrack","stop",0x4ffb5fdd,"snikket.jingle.MediaStreamTrack.stop","snikket/jingle/PeerConnection.cpp.hx",626,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_610_onAudioLoop,"snikket.jingle.MediaStreamTrack","onAudioLoop",0x959462c0,"snikket.jingle.MediaStreamTrack.onAudioLoop","snikket/jingle/PeerConnection.cpp.hx",610,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_614_write,"snikket.jingle.MediaStreamTrack","write",0xf83bdca4,"snikket.jingle.MediaStreamTrack.write","snikket/jingle/PeerConnection.cpp.hx",614,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_626_advanceTimestamp,"snikket.jingle.MediaStreamTrack","advanceTimestamp",0xa8dad84f,"snikket.jingle.MediaStreamTrack.advanceTimestamp","snikket/jingle/PeerConnection.cpp.hx",626,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_629_stop,"snikket.jingle.MediaStreamTrack","stop",0x4ffb5fdd,"snikket.jingle.MediaStreamTrack.stop","snikket/jingle/PeerConnection.cpp.hx",629,0xf9fab71d)
 HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_362_fromTrack,"snikket.jingle.MediaStreamTrack","fromTrack",0x73deaf06,"snikket.jingle.MediaStreamTrack.fromTrack","snikket/jingle/PeerConnection.cpp.hx",362,0xf9fab71d)
 HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_473_pcmToUlaw,"snikket.jingle.MediaStreamTrack","pcmToUlaw",0x7deff727,"snikket.jingle.MediaStreamTrack.pcmToUlaw","snikket/jingle/PeerConnection.cpp.hx",473,0xf9fab71d)
 HX_LOCAL_STACK_FRAME(_hx_pos_199cfc803453bfcf_337_boot,"snikket.jingle.MediaStreamTrack","boot",0x44baf40d,"snikket.jingle.MediaStreamTrack.boot","snikket/jingle/PeerConnection.cpp.hx",337,0xf9fab71d)
@@ -221,7 +221,7 @@ HXDLIN( 308)		return this->get_kind();
 HX_DEFINE_DYNAMIC_FUNC0(MediaStreamTrack_obj,kind__fromC,return )
 
 size_t MediaStreamTrack_obj::supportedAudioFormats__fromC(void*** outPtr){
-            	HX_GC_STACKFRAME(&_hx_pos_6a2465e57550c9c8_297_supportedAudioFormats__fromC)
+            	HX_STACKFRAME(&_hx_pos_6a2465e57550c9c8_297_supportedAudioFormats__fromC)
 HXDLIN( 297)		::Array< ::Dynamic> x = this->get_supportedAudioFormats();
 HXDLIN( 297)		if (::hx::IsNotNull( outPtr )) {
 HXDLIN( 297)			::cpp::Pointer< void** > _hx_tmp = ::cpp::Pointer_obj::fromRaw(outPtr);
@@ -235,15 +235,16 @@ HXDLIN( 297)						 ::Dynamic haxeObject = el;
 HXDLIN( 297)						void* ptr = haxeObject.mPtr;
 HXDLIN( 297)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 297)						{
-HXDLIN( 297)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 297)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 297)							int high = ptrInt64 >> 32;
-HXDLIN( 297)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 297)							if (::hx::IsNull( highMap )) {
-HXDLIN( 297)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 297)								this1->set(low,highMap);
+HXDLIN( 297)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 297)							if (::hx::IsNull( store )) {
+HXDLIN( 297)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 297)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXDLIN( 297)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 297)							highMap->set(high,haxeObject);
             						}
             					}
             				}
@@ -251,15 +252,16 @@ HXDLIN( 297)							highMap->set(high,haxeObject);
 HXDLIN( 297)			void** ptr1 = (void**)x->getBase();
 HXDLIN( 297)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 297)			{
-HXDLIN( 297)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 297)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 297)				int high1 = ptrInt641 >> 32;
-HXDLIN( 297)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 297)				if (::hx::IsNull( highMap1 )) {
-HXDLIN( 297)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 297)					this2->set(low1,highMap1);
+HXDLIN( 297)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 297)				if (::hx::IsNull( store1 )) {
+HXDLIN( 297)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),x));
+HXDLIN( 297)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXDLIN( 297)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 297)				highMap1->set(high1,x);
             			}
 HXDLIN( 297)			_hx_tmp->set_ref(ptr1);
             		}
@@ -409,20 +411,21 @@ HX_DEFINE_DYNAMIC_FUNC1(MediaStreamTrack_obj,addPCMListener,(void))
 void MediaStreamTrack_obj::addPCMListener__fromC(::cpp::Function< void  (short*,size_t,int,int,void*) > callback,void* callback__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,void*,callback__context,::cpp::Function< void  (short* HX_COMMA size_t HX_COMMA int HX_COMMA int HX_COMMA void*) >,callback) HXARGC(3)
             		void _hx_run(::Array< short > a0,int a1,int a2){
-            			HX_GC_STACKFRAME(&_hx_pos_6a2465e57550c9c8_221_addPCMListener__fromC)
+            			HX_STACKFRAME(&_hx_pos_6a2465e57550c9c8_221_addPCMListener__fromC)
 HXLINE( 221)			::cpp::Function< void  (short*,size_t,int,int,void*) > callback1 = callback;
 HXLINE( 211)			void** ptr = (void**)a0->getBase();
 HXDLIN( 211)			::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 211)			{
-HXLINE( 211)				 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 211)				int low = ptrInt64 & 0xffffffff;
-HXDLIN( 211)				int high = ptrInt64 >> 32;
-HXDLIN( 211)				 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 211)				if (::hx::IsNull( highMap )) {
-HXLINE( 211)					highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 211)					this1->set(low,highMap);
+HXLINE( 211)				 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 211)				if (::hx::IsNull( store )) {
+HXLINE( 211)					store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),a0));
+HXDLIN( 211)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            				}
+            				else {
+HXLINE( 211)					::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 211)				highMap->set(high,a0);
             			}
 HXLINE( 221)			callback1(( (short*)(ptr) ),( (size_t)(a0->length) ),a1,a2,callback__context);
             		}
@@ -576,96 +579,96 @@ HXDLIN( 562)			return false;
 
             		HX_BEGIN_LOCAL_FUNC_S5(::hx::LocalFunc,_hx_Closure_1,::Array< short >,pcm, ::snikket::jingle::MediaStreamTrack,_gthis,int,channels,int,clockRate, ::snikket::jingle::AudioFormat,format) HXARGC(0)
             		void _hx_run(){
-            			HX_STACKFRAME(&_hx_pos_199cfc803453bfcf_564_writePCM)
-HXLINE( 565)			int samples = ::Std_obj::_hx_int((( (Float)(pcm->length) ) / ( (Float)(channels) )));
-HXLINE( 566)			_gthis->mutex->acquire();
-HXLINE( 567)			Float stamp;
-HXDLIN( 567)			if ((_gthis->audioQ->length < 1)) {
-HXLINE( 568)				_gthis->bufferSizeInSeconds = ::Math_obj::max(_gthis->bufferSizeInSeconds,(_gthis->bufferSizeInSeconds + ((Float)0.1)));
-HXLINE( 569)				Float stamp1 =  ::__time_stamp();
-HXLINE( 567)				stamp = (stamp1 + _gthis->bufferSizeInSeconds);
+            			HX_STACKFRAME(&_hx_pos_199cfc803453bfcf_567_writePCM)
+HXLINE( 568)			int samples = ::Std_obj::_hx_int((( (Float)(pcm->length) ) / ( (Float)(channels) )));
+HXLINE( 569)			_gthis->mutex->acquire();
+HXLINE( 570)			Float stamp;
+HXDLIN( 570)			if ((_gthis->audioQ->length < 1)) {
+HXLINE( 571)				_gthis->bufferSizeInSeconds = ::Math_obj::max(_gthis->bufferSizeInSeconds,(_gthis->bufferSizeInSeconds + ((Float)0.1)));
+HXLINE( 572)				Float stamp1 =  ::__time_stamp();
+HXLINE( 570)				stamp = (stamp1 + _gthis->bufferSizeInSeconds);
             			}
             			else {
-HXLINE( 567)				stamp = ( (Float)((_gthis->audioQ->__get(0)->__Field(HX_("stamp",03,70,0b,84),::hx::paccDynamic) + ((( (Float)(samples) ) / (( (Float)(clockRate) ) / ( (Float)(1000) ))) / ((Float)1000.0)))) );
+HXLINE( 570)				stamp = ( (Float)((_gthis->audioQ->__get(0)->__Field(HX_("stamp",03,70,0b,84),::hx::paccDynamic) + ((( (Float)(samples) ) / (( (Float)(clockRate) ) / ( (Float)(1000) ))) / ((Float)1000.0)))) );
             			}
-HXLINE( 573)			_gthis->mutex->release();
-HXLINE( 574)			if ((format->format == HX_("PCMU",1b,2c,14,35))) {
-HXLINE( 575)				int channels1 = channels;
-HXDLIN( 575)				unsigned char format1 = format->payloadType;
-HXDLIN( 575)				int clockRate1 = clockRate;
-HXDLIN( 575)				 ::Dynamic f = ::snikket::jingle::MediaStreamTrack_obj::pcmToUlaw_dyn();
-HXDLIN( 575)				::Array< unsigned char > result = ::Array_obj< unsigned char >::__new(pcm->length);
-HXDLIN( 575)				{
-HXLINE( 575)					int _g = 0;
-HXDLIN( 575)					int _g1 = pcm->length;
-HXDLIN( 575)					while((_g < _g1)){
-HXLINE( 575)						_g = (_g + 1);
-HXDLIN( 575)						int i = (_g - 1);
-HXDLIN( 575)						{
-HXLINE( 575)							unsigned char inValue = ( (unsigned char)(f(_hx_array_unsafe_get(pcm,i))) );
-HXDLIN( 575)							result->__unsafe_set(i,inValue);
+HXLINE( 576)			_gthis->mutex->release();
+HXLINE( 577)			if ((format->format == HX_("PCMU",1b,2c,14,35))) {
+HXLINE( 578)				int channels1 = channels;
+HXDLIN( 578)				unsigned char format1 = format->payloadType;
+HXDLIN( 578)				int clockRate1 = clockRate;
+HXDLIN( 578)				 ::Dynamic f = ::snikket::jingle::MediaStreamTrack_obj::pcmToUlaw_dyn();
+HXDLIN( 578)				::Array< unsigned char > result = ::Array_obj< unsigned char >::__new(pcm->length);
+HXDLIN( 578)				{
+HXLINE( 578)					int _g = 0;
+HXDLIN( 578)					int _g1 = pcm->length;
+HXDLIN( 578)					while((_g < _g1)){
+HXLINE( 578)						_g = (_g + 1);
+HXDLIN( 578)						int i = (_g - 1);
+HXDLIN( 578)						{
+HXLINE( 578)							unsigned char inValue = ( (unsigned char)(f(_hx_array_unsafe_get(pcm,i))) );
+HXDLIN( 578)							result->__unsafe_set(i,inValue);
             						}
             					}
             				}
-HXDLIN( 575)				 ::Dynamic packet =  ::Dynamic(::hx::Anon_obj::Create(6)
+HXDLIN( 578)				 ::Dynamic packet =  ::Dynamic(::hx::Anon_obj::Create(6)
             					->setFixed(0,HX_("samples",09,c5,c9,83),samples)
             					->setFixed(1,HX_("stamp",03,70,0b,84),stamp)
             					->setFixed(2,HX_("payloadType",68,bd,49,af),format1)
             					->setFixed(3,HX_("payload",8e,bf,35,ed),result)
             					->setFixed(4,HX_("clockRate",ce,87,24,24),clockRate1)
             					->setFixed(5,HX_("channels",50,aa,ee,6a),channels1));
-HXLINE( 576)				_gthis->mutex->acquire();
-HXLINE( 577)				_gthis->audioQ->unshift(packet);
-HXLINE( 578)				_gthis->mutex->release();
+HXLINE( 579)				_gthis->mutex->acquire();
+HXLINE( 580)				_gthis->audioQ->unshift(packet);
+HXLINE( 581)				_gthis->mutex->release();
             			}
             			else {
-HXLINE( 579)				if ((format->format == HX_("opus",bf,11,b4,49))) {
-HXLINE( 580)					if (!_gthis->opusEncoder) {
-HXLINE( 581)						::cpp::Pointer< int > tmp = null();
-HXDLIN( 581)						int clockRate2 = clockRate;
-HXDLIN( 581)						int channels2 = channels;
-HXDLIN( 581)						int _hx_tmp = OPUS_APPLICATION_VOIP;
-HXDLIN( 581)						_gthis->opusEncoder = opus_encoder_create(clockRate2,channels2,_hx_tmp,tmp);
-HXLINE( 582)						opus_encoder_ctl(_gthis->opusEncoder, OPUS_SET_BITRATE(24000));
-HXLINE( 583)						opus_encoder_ctl(_gthis->opusEncoder, OPUS_SET_PACKET_LOSS_PERC(5));
-HXLINE( 584)						opus_encoder_ctl(_gthis->opusEncoder, OPUS_SET_INBAND_FEC(1));
+HXLINE( 582)				if ((format->format == HX_("opus",bf,11,b4,49))) {
+HXLINE( 583)					if (!_gthis->opusEncoder) {
+HXLINE( 584)						::cpp::Pointer< int > tmp = null();
+HXDLIN( 584)						int clockRate2 = clockRate;
+HXDLIN( 584)						int channels2 = channels;
+HXDLIN( 584)						int _hx_tmp = OPUS_APPLICATION_VOIP;
+HXDLIN( 584)						_gthis->opusEncoder = opus_encoder_create(clockRate2,channels2,_hx_tmp,tmp);
+HXLINE( 585)						opus_encoder_ctl(_gthis->opusEncoder, OPUS_SET_BITRATE(24000));
+HXLINE( 586)						opus_encoder_ctl(_gthis->opusEncoder, OPUS_SET_PACKET_LOSS_PERC(5));
+HXLINE( 587)						opus_encoder_ctl(_gthis->opusEncoder, OPUS_SET_INBAND_FEC(1));
             					}
-HXLINE( 586)					::Array< unsigned char > rawOpus = ::Array_obj< unsigned char >::__new((pcm->length * 2));
-HXLINE( 588)					::cpp::Pointer< short > tmp1 = ( (::cpp::Pointer< short >)(::cpp::Pointer_obj::ofArray(pcm)) );
-HXDLIN( 588)					::cpp::Pointer< unsigned char > tmp2 = ( (::cpp::Pointer< unsigned char >)(::cpp::Pointer_obj::ofArray(rawOpus)) );
-HXDLIN( 588)					int encoded = opus_encode(_gthis->opusEncoder,tmp1,samples,tmp2,rawOpus->length);
-HXLINE( 589)					if ((encoded < 0)) {
-HXLINE( 590)						::haxe::Log_obj::trace(HX_("Opus encode failed",86,4c,9a,50), ::Dynamic(::hx::Anon_obj::Create(5)
+HXLINE( 589)					::Array< unsigned char > rawOpus = ::Array_obj< unsigned char >::__new((pcm->length * 2));
+HXLINE( 591)					::cpp::Pointer< short > tmp1 = ( (::cpp::Pointer< short >)(::cpp::Pointer_obj::ofArray(pcm)) );
+HXDLIN( 591)					::cpp::Pointer< unsigned char > tmp2 = ( (::cpp::Pointer< unsigned char >)(::cpp::Pointer_obj::ofArray(rawOpus)) );
+HXDLIN( 591)					int encoded = opus_encode(_gthis->opusEncoder,tmp1,samples,tmp2,rawOpus->length);
+HXLINE( 592)					if ((encoded < 0)) {
+HXLINE( 593)						::haxe::Log_obj::trace(HX_("Opus encode failed",86,4c,9a,50), ::Dynamic(::hx::Anon_obj::Create(5)
             							->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.jingle.MediaStreamTrack",73,fe,80,a9))
             							->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,encoded))
             							->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("writePCM",7b,97,f5,23))
             							->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/jingle/PeerConnection.cpp.hx",1d,b7,fa,f9))
-            							->setFixed(4,HX_("lineNumber",dd,81,22,76),590)));
+            							->setFixed(4,HX_("lineNumber",dd,81,22,76),593)));
             					}
             					else {
-HXLINE( 592)						rawOpus->resize(encoded);
-HXLINE( 593)						 ::Dynamic packet1 =  ::Dynamic(::hx::Anon_obj::Create(6)
+HXLINE( 595)						rawOpus->resize(encoded);
+HXLINE( 596)						 ::Dynamic packet1 =  ::Dynamic(::hx::Anon_obj::Create(6)
             							->setFixed(0,HX_("samples",09,c5,c9,83),samples)
             							->setFixed(1,HX_("stamp",03,70,0b,84),stamp)
             							->setFixed(2,HX_("payloadType",68,bd,49,af),format->payloadType)
             							->setFixed(3,HX_("payload",8e,bf,35,ed),rawOpus)
             							->setFixed(4,HX_("clockRate",ce,87,24,24),clockRate)
             							->setFixed(5,HX_("channels",50,aa,ee,6a),channels));
-HXLINE( 594)						_gthis->mutex->acquire();
-HXLINE( 595)						_gthis->audioQ->unshift(packet1);
-HXLINE( 596)						_gthis->mutex->release();
+HXLINE( 597)						_gthis->mutex->acquire();
+HXLINE( 598)						_gthis->audioQ->unshift(packet1);
+HXLINE( 599)						_gthis->mutex->release();
             					}
             				}
             				else {
-HXLINE( 599)					::haxe::Log_obj::trace(HX_("Ignoring audio meant to go out as",e3,e7,4f,55), ::Dynamic(::hx::Anon_obj::Create(5)
+HXLINE( 602)					::haxe::Log_obj::trace(HX_("Ignoring audio meant to go out as",e3,e7,4f,55), ::Dynamic(::hx::Anon_obj::Create(5)
             						->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.jingle.MediaStreamTrack",73,fe,80,a9))
             						->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(3)->init(0,format->format)->init(1,format->clockRate)->init(2,format->channels))
             						->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("writePCM",7b,97,f5,23))
             						->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/jingle/PeerConnection.cpp.hx",1d,b7,fa,f9))
-            						->setFixed(4,HX_("lineNumber",dd,81,22,76),599)));
+            						->setFixed(4,HX_("lineNumber",dd,81,22,76),602)));
             				}
             			}
-HXLINE( 601)			_gthis->notifyReadyForData(false);
+HXLINE( 604)			_gthis->notifyReadyForData(false);
             		}
             		HX_END_LOCAL_FUNC0((void))
 
@@ -673,9 +676,10 @@ HXLINE( 601)			_gthis->notifyReadyForData(false);
 HXDLIN( 561)		 ::snikket::jingle::MediaStreamTrack _gthis = ::hx::ObjectPtr<OBJ_>(this);
 HXLINE( 562)		 ::snikket::jingle::AudioFormat format = ( ( ::snikket::jingle::AudioFormat)(::Lambda_obj::find(this->get_supportedAudioFormats(), ::Dynamic(new _hx_Closure_0(channels,clockRate)))) );
 HXLINE( 563)		if (::hx::IsNull( format )) {
-HXLINE( 563)			HX_STACK_DO_THROW((((HX_("Unsupported audo format: ",93,2f,48,26) + clockRate) + HX_("/",2f,00,00,00)) + channels));
+HXLINE( 564)			::haxe::Log_obj::trace((((HX_("Unsupported audio format: ",52,9d,51,59) + clockRate) + HX_("/",2f,00,00,00)) + channels),::hx::SourceInfo(HX_("snikket/jingle/PeerConnection.cpp.hx",1d,b7,fa,f9),564,HX_("snikket.jingle.MediaStreamTrack",73,fe,80,a9),HX_("writePCM",7b,97,f5,23)));
+HXLINE( 565)			return;
             		}
-HXLINE( 564)		this->eventLoop->run( ::Dynamic(new _hx_Closure_1(pcm,_gthis,channels,clockRate,format)));
+HXLINE( 567)		this->eventLoop->run( ::Dynamic(new _hx_Closure_1(pcm,_gthis,channels,clockRate,format)));
             	}
 
 
@@ -701,55 +705,55 @@ HXLINE( 252)		this->writePCM(_hx_tmp,clockRate,channels);
 HX_DEFINE_DYNAMIC_FUNC4(MediaStreamTrack_obj,writePCM__fromC,(void))
 
 void MediaStreamTrack_obj::onAudioLoop( ::Dynamic callback){
-            	HX_STACKFRAME(&_hx_pos_199cfc803453bfcf_607_onAudioLoop)
-HXDLIN( 607)		this->eventLoop->run(callback);
+            	HX_STACKFRAME(&_hx_pos_199cfc803453bfcf_610_onAudioLoop)
+HXDLIN( 610)		this->eventLoop->run(callback);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(MediaStreamTrack_obj,onAudioLoop,(void))
 
 void MediaStreamTrack_obj::write(::Array< unsigned char > payload,unsigned char payloadType,int clockRate){
-            	HX_STACKFRAME(&_hx_pos_199cfc803453bfcf_611_write)
-HXLINE( 612)		bool _hx_tmp;
-HXDLIN( 612)		if (!(!track)) {
-HXLINE( 612)			_hx_tmp = !(this->track->isOpen());
+            	HX_STACKFRAME(&_hx_pos_199cfc803453bfcf_614_write)
+HXLINE( 615)		bool _hx_tmp;
+HXDLIN( 615)		if (!(!track)) {
+HXLINE( 615)			_hx_tmp = !(this->track->isOpen());
             		}
             		else {
-HXLINE( 612)			_hx_tmp = true;
+HXLINE( 615)			_hx_tmp = true;
             		}
-HXDLIN( 612)		if (_hx_tmp) {
-HXLINE( 612)			return;
+HXDLIN( 615)		if (_hx_tmp) {
+HXLINE( 615)			return;
             		}
-HXLINE( 614)		this->rtpPacketizationConfig->payloadType = payloadType;
-HXLINE( 615)		this->rtpPacketizationConfig->clockRate = ( (unsigned int)(clockRate) );
-HXLINE( 616)		::cpp::Pointer<  std::byte > tmp = ( (::cpp::Pointer< unsigned char >)(::cpp::Pointer_obj::ofArray(payload)) )->reinterpret();
-HXDLIN( 616)		this->track->send(tmp,( (size_t)(payload->length) ));
+HXLINE( 617)		this->rtpPacketizationConfig->payloadType = payloadType;
+HXLINE( 618)		this->rtpPacketizationConfig->clockRate = ( (unsigned int)(clockRate) );
+HXLINE( 619)		::cpp::Pointer<  std::byte > tmp = ( (::cpp::Pointer< unsigned char >)(::cpp::Pointer_obj::ofArray(payload)) )->reinterpret();
+HXDLIN( 619)		this->track->send(tmp,( (size_t)(payload->length) ));
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC3(MediaStreamTrack_obj,write,(void))
 
 void MediaStreamTrack_obj::advanceTimestamp(int samples){
-            	HX_STACKFRAME(&_hx_pos_199cfc803453bfcf_623_advanceTimestamp)
-HXDLIN( 623)		this->rtpPacketizationConfig->timestamp = (this->rtpPacketizationConfig->timestamp + samples);
+            	HX_STACKFRAME(&_hx_pos_199cfc803453bfcf_626_advanceTimestamp)
+HXDLIN( 626)		this->rtpPacketizationConfig->timestamp = (this->rtpPacketizationConfig->timestamp + samples);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(MediaStreamTrack_obj,advanceTimestamp,(void))
 
 void MediaStreamTrack_obj::stop(){
-            	HX_STACKFRAME(&_hx_pos_199cfc803453bfcf_626_stop)
-HXLINE( 627)		this->timer->stop();
-HXLINE( 628)		this->mutex->acquire();
-HXLINE( 629)		this->alive = false;
-HXLINE( 630)		if (this->track->isOpen()) {
-HXLINE( 630)			this->track->close();
+            	HX_STACKFRAME(&_hx_pos_199cfc803453bfcf_629_stop)
+HXLINE( 630)		this->timer->stop();
+HXLINE( 631)		this->mutex->acquire();
+HXLINE( 632)		this->alive = false;
+HXLINE( 633)		if (this->track->isOpen()) {
+HXLINE( 633)			this->track->close();
             		}
-HXLINE( 631)		if (opus) {
-HXLINE( 632)			opus_decoder_destroy(this->opus);
-HXLINE( 633)			this->opus = null();
+HXLINE( 634)		if (opus) {
+HXLINE( 635)			opus_decoder_destroy(this->opus);
+HXLINE( 636)			this->opus = null();
             		}
-HXLINE( 635)		this->mutex->release();
+HXLINE( 638)		this->mutex->release();
             	}
 
 
diff --git a/Sources/c_snikket/src/snikket/jingle/OutgoingProposedSession.cpp b/Sources/c_snikket/src/snikket/jingle/OutgoingProposedSession.cpp
index be630dd..004d12e 100644
--- a/Sources/c_snikket/src/snikket/jingle/OutgoingProposedSession.cpp
+++ b/Sources/c_snikket/src/snikket/jingle/OutgoingProposedSession.cpp
@@ -77,34 +77,34 @@
 #include <thenshim/_Promise/Promise_Impl_.h>
 #endif
 
-HX_DEFINE_STACK_FRAME(_hx_pos_3d104e43c930d498_170_new,"snikket.jingle.OutgoingProposedSession","new",0x73d7b0aa,"snikket.jingle.OutgoingProposedSession.new","snikket/jingle/Session.hx",170,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_196_propose,"snikket.jingle.OutgoingProposedSession","propose",0x4884cc48,"snikket.jingle.OutgoingProposedSession.propose","snikket/jingle/Session.hx",196,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_185_propose,"snikket.jingle.OutgoingProposedSession","propose",0x4884cc48,"snikket.jingle.OutgoingProposedSession.propose","snikket/jingle/Session.hx",185,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_213_hangup,"snikket.jingle.OutgoingProposedSession","hangup",0x5911bc43,"snikket.jingle.OutgoingProposedSession.hangup","snikket/jingle/Session.hx",213,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_210_hangup,"snikket.jingle.OutgoingProposedSession","hangup",0x5911bc43,"snikket.jingle.OutgoingProposedSession.hangup","snikket/jingle/Session.hx",210,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_226_retract,"snikket.jingle.OutgoingProposedSession","retract",0x4b54af4b,"snikket.jingle.OutgoingProposedSession.retract","snikket/jingle/Session.hx",226,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_230_terminate,"snikket.jingle.OutgoingProposedSession","terminate",0x42b2662b,"snikket.jingle.OutgoingProposedSession.terminate","snikket/jingle/Session.hx",230,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_234_contentAdd,"snikket.jingle.OutgoingProposedSession","contentAdd",0x432a835e,"snikket.jingle.OutgoingProposedSession.contentAdd","snikket/jingle/Session.hx",234,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_238_contentAccept,"snikket.jingle.OutgoingProposedSession","contentAccept",0xd468a5eb,"snikket.jingle.OutgoingProposedSession.contentAccept","snikket/jingle/Session.hx",238,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_241_transportInfo,"snikket.jingle.OutgoingProposedSession","transportInfo",0xaa361d81,"snikket.jingle.OutgoingProposedSession.transportInfo","snikket/jingle/Session.hx",241,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_247_accept,"snikket.jingle.OutgoingProposedSession","accept",0xac187cfe,"snikket.jingle.OutgoingProposedSession.accept","snikket/jingle/Session.hx",247,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_250_initiate,"snikket.jingle.OutgoingProposedSession","initiate",0xd8683dcf,"snikket.jingle.OutgoingProposedSession.initiate","snikket/jingle/Session.hx",250,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_261_addMedia,"snikket.jingle.OutgoingProposedSession","addMedia",0xf7f1fe79,"snikket.jingle.OutgoingProposedSession.addMedia","snikket/jingle/Session.hx",261,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_265_callStatus,"snikket.jingle.OutgoingProposedSession","callStatus",0x3078db66,"snikket.jingle.OutgoingProposedSession.callStatus","snikket/jingle/Session.hx",265,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_269_videoTracks,"snikket.jingle.OutgoingProposedSession","videoTracks",0x2250fcad,"snikket.jingle.OutgoingProposedSession.videoTracks","snikket/jingle/Session.hx",269,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_273_dtmf,"snikket.jingle.OutgoingProposedSession","dtmf",0xe2521b5f,"snikket.jingle.OutgoingProposedSession.dtmf","snikket/jingle/Session.hx",273,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_277_get_sid,"snikket.jingle.OutgoingProposedSession","get_sid",0x756734ef,"snikket.jingle.OutgoingProposedSession.get_sid","snikket/jingle/Session.hx",277,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_281_get_chatId,"snikket.jingle.OutgoingProposedSession","get_chatId",0xa74b9192,"snikket.jingle.OutgoingProposedSession.get_chatId","snikket/jingle/Session.hx",281,0x6db2dd54)
+HX_DEFINE_STACK_FRAME(_hx_pos_3d104e43c930d498_180_new,"snikket.jingle.OutgoingProposedSession","new",0x73d7b0aa,"snikket.jingle.OutgoingProposedSession.new","snikket/jingle/Session.hx",180,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_206_propose,"snikket.jingle.OutgoingProposedSession","propose",0x4884cc48,"snikket.jingle.OutgoingProposedSession.propose","snikket/jingle/Session.hx",206,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_195_propose,"snikket.jingle.OutgoingProposedSession","propose",0x4884cc48,"snikket.jingle.OutgoingProposedSession.propose","snikket/jingle/Session.hx",195,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_223_hangup,"snikket.jingle.OutgoingProposedSession","hangup",0x5911bc43,"snikket.jingle.OutgoingProposedSession.hangup","snikket/jingle/Session.hx",223,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_220_hangup,"snikket.jingle.OutgoingProposedSession","hangup",0x5911bc43,"snikket.jingle.OutgoingProposedSession.hangup","snikket/jingle/Session.hx",220,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_236_retract,"snikket.jingle.OutgoingProposedSession","retract",0x4b54af4b,"snikket.jingle.OutgoingProposedSession.retract","snikket/jingle/Session.hx",236,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_240_terminate,"snikket.jingle.OutgoingProposedSession","terminate",0x42b2662b,"snikket.jingle.OutgoingProposedSession.terminate","snikket/jingle/Session.hx",240,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_244_contentAdd,"snikket.jingle.OutgoingProposedSession","contentAdd",0x432a835e,"snikket.jingle.OutgoingProposedSession.contentAdd","snikket/jingle/Session.hx",244,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_248_contentAccept,"snikket.jingle.OutgoingProposedSession","contentAccept",0xd468a5eb,"snikket.jingle.OutgoingProposedSession.contentAccept","snikket/jingle/Session.hx",248,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_251_transportInfo,"snikket.jingle.OutgoingProposedSession","transportInfo",0xaa361d81,"snikket.jingle.OutgoingProposedSession.transportInfo","snikket/jingle/Session.hx",251,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_257_accept,"snikket.jingle.OutgoingProposedSession","accept",0xac187cfe,"snikket.jingle.OutgoingProposedSession.accept","snikket/jingle/Session.hx",257,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_260_initiate,"snikket.jingle.OutgoingProposedSession","initiate",0xd8683dcf,"snikket.jingle.OutgoingProposedSession.initiate","snikket/jingle/Session.hx",260,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_272_addMedia,"snikket.jingle.OutgoingProposedSession","addMedia",0xf7f1fe79,"snikket.jingle.OutgoingProposedSession.addMedia","snikket/jingle/Session.hx",272,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_276_callStatus,"snikket.jingle.OutgoingProposedSession","callStatus",0x3078db66,"snikket.jingle.OutgoingProposedSession.callStatus","snikket/jingle/Session.hx",276,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_280_videoTracks,"snikket.jingle.OutgoingProposedSession","videoTracks",0x2250fcad,"snikket.jingle.OutgoingProposedSession.videoTracks","snikket/jingle/Session.hx",280,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_284_dtmf,"snikket.jingle.OutgoingProposedSession","dtmf",0xe2521b5f,"snikket.jingle.OutgoingProposedSession.dtmf","snikket/jingle/Session.hx",284,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_288_get_sid,"snikket.jingle.OutgoingProposedSession","get_sid",0x756734ef,"snikket.jingle.OutgoingProposedSession.get_sid","snikket/jingle/Session.hx",288,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_3d104e43c930d498_292_get_chatId,"snikket.jingle.OutgoingProposedSession","get_chatId",0xa74b9192,"snikket.jingle.OutgoingProposedSession.get_chatId","snikket/jingle/Session.hx",292,0x6db2dd54)
 namespace snikket{
 namespace jingle{
 
 void OutgoingProposedSession_obj::__construct( ::snikket::Client client, ::snikket::JID to){
-            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_170_new)
-HXLINE( 177)		this->video = false;
-HXLINE( 176)		this->audio = false;
-HXLINE( 180)		this->client = client;
-HXLINE( 181)		this->to = to;
-HXLINE( 182)		this->_sid = ::snikket::ID_obj::_hx_long();
+            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_180_new)
+HXLINE( 187)		this->video = false;
+HXLINE( 186)		this->audio = false;
+HXLINE( 190)		this->client = client;
+HXLINE( 191)		this->to = to;
+HXLINE( 192)		this->_sid = ::snikket::ID_obj::_hx_long();
             	}
 
 Dynamic OutgoingProposedSession_obj::__CreateEmpty() { return new OutgoingProposedSession_obj; }
@@ -134,7 +134,7 @@ static ::snikket::jingle::Session_obj _hx_snikket_jingle_OutgoingProposedSession
 	( void (::hx::Object::*)( ::snikket::Stanza))&::snikket::jingle::OutgoingProposedSession_obj::contentAccept,
 	( ::Dynamic (::hx::Object::*)( ::snikket::Stanza))&::snikket::jingle::OutgoingProposedSession_obj::transportInfo,
 	( void (::hx::Object::*)(::Array< ::Dynamic>))&::snikket::jingle::OutgoingProposedSession_obj::addMedia,
-	( ::String (::hx::Object::*)())&::snikket::jingle::OutgoingProposedSession_obj::callStatus,
+	( int (::hx::Object::*)())&::snikket::jingle::OutgoingProposedSession_obj::callStatus,
 	( ::Array< ::Dynamic> (::hx::Object::*)())&::snikket::jingle::OutgoingProposedSession_obj::videoTracks,
 	(  ::snikket::jingle::DTMFSender (::hx::Object::*)())&::snikket::jingle::OutgoingProposedSession_obj::dtmf,
 };
@@ -156,42 +156,42 @@ void *OutgoingProposedSession_obj::_hx_getInterface(int inHash) {
 void OutgoingProposedSession_obj::propose(bool audio,bool video){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_0, ::snikket::jingle::OutgoingProposedSession,_gthis, ::snikket::Stanza,event, ::snikket::ChatMessage,msg) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> stored){
-            			HX_GC_STACKFRAME(&_hx_pos_3d104e43c930d498_196_propose)
-HXLINE( 197)			::String stanza = _gthis->to->asString();
-HXDLIN( 197)			 ::snikket::Stanza stanza1 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(3)
+            			HX_GC_STACKFRAME(&_hx_pos_3d104e43c930d498_206_propose)
+HXLINE( 207)			::String stanza = _gthis->to->asString();
+HXDLIN( 207)			 ::snikket::Stanza stanza1 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(3)
             				->setFixed(0,HX_("id",db,5b,00,00),msg->localId)
             				->setFixed(1,HX_("to",7b,65,00,00),stanza)
             				->setFixed(2,HX_("type",ba,f2,08,4d),HX_("chat",d8,5e,bf,41))))->addChild(event)->tag(HX_("store",e1,13,16,84), ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:hints",70,b3,d6,fe))));
-HXLINE( 200)			_gthis->client->sendStanza(stanza1);
-HXLINE( 201)			_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),0);
-HXLINE( 202)			 ::snikket::Client _gthis1 = _gthis->client;
-HXDLIN( 202)			::String _hx_tmp = _gthis->get_chatId();
-HXDLIN( 202)			_gthis1->trigger(HX_("call/ringing",81,75,54,f9), ::Dynamic(::hx::Anon_obj::Create(2)
+HXLINE( 210)			_gthis->client->sendStanza(stanza1);
+HXLINE( 211)			_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),0);
+HXLINE( 212)			 ::snikket::Client _gthis1 = _gthis->client;
+HXDLIN( 212)			::String _hx_tmp = _gthis->get_chatId();
+HXDLIN( 212)			_gthis1->trigger(HX_("call/ringing",81,75,54,f9), ::Dynamic(::hx::Anon_obj::Create(2)
             				->setFixed(0,HX_("chatId",d3,04,77,b7),_hx_tmp)
             				->setFixed(1,HX_("sid",0e,9f,57,00),_gthis->get_sid())));
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_3d104e43c930d498_185_propose)
-HXDLIN( 185)		 ::snikket::jingle::OutgoingProposedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 186)		this->audio = audio;
-HXLINE( 187)		this->video = video;
-HXLINE( 188)		 ::snikket::Stanza event =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("propose",fe,fe,e9,f9), ::Dynamic(::hx::Anon_obj::Create(2)
+            	HX_GC_STACKFRAME(&_hx_pos_3d104e43c930d498_195_propose)
+HXDLIN( 195)		 ::snikket::jingle::OutgoingProposedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 196)		this->audio = audio;
+HXLINE( 197)		this->video = video;
+HXLINE( 198)		 ::snikket::Stanza event =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("propose",fe,fe,e9,f9), ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("id",db,5b,00,00),this->get_sid())
             			->setFixed(1,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07))));
-HXLINE( 189)		if (audio) {
-HXLINE( 190)			event->tag(HX_("description",fc,08,1d,5f), ::Dynamic(::hx::Anon_obj::Create(2)
+HXLINE( 199)		if (audio) {
+HXLINE( 200)			event->tag(HX_("description",fc,08,1d,5f), ::Dynamic(::hx::Anon_obj::Create(2)
             				->setFixed(0,HX_("media",e4,04,bc,05),HX_("audio",d6,78,80,27))
             				->setFixed(1,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:jingle:apps:rtp:1",ea,41,fe,5c))))->up();
             		}
-HXLINE( 192)		if (video) {
-HXLINE( 193)			event->tag(HX_("description",fc,08,1d,5f), ::Dynamic(::hx::Anon_obj::Create(2)
+HXLINE( 202)		if (video) {
+HXLINE( 203)			event->tag(HX_("description",fc,08,1d,5f), ::Dynamic(::hx::Anon_obj::Create(2)
             				->setFixed(0,HX_("media",e4,04,bc,05),HX_("video",7b,14,fc,36))
             				->setFixed(1,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:jingle:apps:rtp:1",ea,41,fe,5c))))->up();
             		}
-HXLINE( 195)		 ::snikket::ChatMessage msg = ::snikket::jingle::_Session::Session_Fields__obj::mkCallMessage(this->to,this->client->jid,event);
-HXLINE( 196)		this->client->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,msg), ::Dynamic(new _hx_Closure_0(_gthis,event,msg)));
+HXLINE( 205)		 ::snikket::ChatMessage msg = ::snikket::jingle::_Session::Session_Fields__obj::mkCallMessage(this->to,this->client->jid,event);
+HXLINE( 206)		this->client->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,msg), ::Dynamic(new _hx_Closure_0(_gthis,event,msg)));
             	}
 
 
@@ -200,29 +200,29 @@ HX_DEFINE_DYNAMIC_FUNC2(OutgoingProposedSession_obj,propose,(void))
 void OutgoingProposedSession_obj::hangup(){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_0, ::snikket::jingle::OutgoingProposedSession,_gthis, ::snikket::Stanza,event, ::snikket::ChatMessage,msg) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> stored){
-            			HX_GC_STACKFRAME(&_hx_pos_3d104e43c930d498_213_hangup)
-HXLINE( 214)			 ::snikket::Client _gthis1 = _gthis->client;
-HXLINE( 215)			::String _hx_tmp = _gthis->to->asString();
-HXLINE( 214)			_gthis1->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(3)
+            			HX_GC_STACKFRAME(&_hx_pos_3d104e43c930d498_223_hangup)
+HXLINE( 224)			 ::snikket::Client _gthis1 = _gthis->client;
+HXLINE( 225)			::String _hx_tmp = _gthis->to->asString();
+HXLINE( 224)			_gthis1->sendStanza( ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("message",c7,35,11,9a), ::Dynamic(::hx::Anon_obj::Create(3)
             				->setFixed(0,HX_("id",db,5b,00,00),msg->versions->__get(0).StaticCast<  ::snikket::ChatMessage >()->localId)
             				->setFixed(1,HX_("to",7b,65,00,00),_hx_tmp)
             				->setFixed(2,HX_("type",ba,f2,08,4d),HX_("chat",d8,5e,bf,41))))->addChild(event)->tag(HX_("store",e1,13,16,84), ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:hints",70,b3,d6,fe)))));
-HXLINE( 219)			_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),1);
+HXLINE( 229)			_gthis->client->notifyMessageHandlers(stored->__get(0).StaticCast<  ::snikket::ChatMessage >(),1);
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_GC_STACKFRAME(&_hx_pos_3d104e43c930d498_210_hangup)
-HXDLIN( 210)		 ::snikket::jingle::OutgoingProposedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 211)		 ::snikket::Stanza event =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("retract",01,e2,b9,fc), ::Dynamic(::hx::Anon_obj::Create(2)
+            	HX_GC_STACKFRAME(&_hx_pos_3d104e43c930d498_220_hangup)
+HXDLIN( 220)		 ::snikket::jingle::OutgoingProposedSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 221)		 ::snikket::Stanza event =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("retract",01,e2,b9,fc), ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("id",db,5b,00,00),this->get_sid())
             			->setFixed(1,HX_("xmlns",dc,31,74,60),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07))));
-HXLINE( 212)		 ::snikket::ChatMessage msg = ::snikket::jingle::_Session::Session_Fields__obj::mkCallMessage(this->to,this->client->jid,event);
-HXLINE( 213)		this->client->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,msg), ::Dynamic(new _hx_Closure_0(_gthis,event,msg)));
-HXLINE( 221)		{
-HXLINE( 221)			 ::snikket::Client this1 = this->client;
-HXDLIN( 221)			::Dynamic this2 = this1->getDirectChat(this->to->asBare()->asString(),false)->jingleSessions;
-HXDLIN( 221)			( ( ::haxe::ds::StringMap)(this2) )->remove(this->get_sid());
+HXLINE( 222)		 ::snikket::ChatMessage msg = ::snikket::jingle::_Session::Session_Fields__obj::mkCallMessage(this->to,this->client->jid,event);
+HXLINE( 223)		this->client->storeMessages(::Array_obj< ::Dynamic>::__new(1)->init(0,msg), ::Dynamic(new _hx_Closure_0(_gthis,event,msg)));
+HXLINE( 231)		{
+HXLINE( 231)			 ::snikket::Client this1 = this->client;
+HXDLIN( 231)			::Dynamic this2 = this1->getDirectChat(this->to->asBare()->asString(),false)->jingleSessions;
+HXDLIN( 231)			( ( ::haxe::ds::StringMap)(this2) )->remove(this->get_sid());
             		}
             	}
 
@@ -230,10 +230,10 @@ HXDLIN( 221)			( ( ::haxe::ds::StringMap)(this2) )->remove(this->get_sid());
 HX_DEFINE_DYNAMIC_FUNC0(OutgoingProposedSession_obj,hangup,(void))
 
 void OutgoingProposedSession_obj::retract(){
-            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_226_retract)
-HXDLIN( 226)		 ::snikket::Client _hx_tmp = this->client;
-HXDLIN( 226)		::String _hx_tmp1 = this->get_chatId();
-HXDLIN( 226)		_hx_tmp->trigger(HX_("call/retract",50,bc,8d,db), ::Dynamic(::hx::Anon_obj::Create(2)
+            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_236_retract)
+HXDLIN( 236)		 ::snikket::Client _hx_tmp = this->client;
+HXDLIN( 236)		::String _hx_tmp1 = this->get_chatId();
+HXDLIN( 236)		_hx_tmp->trigger(HX_("call/retract",50,bc,8d,db), ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("chatId",d3,04,77,b7),_hx_tmp1)
             			->setFixed(1,HX_("sid",0e,9f,57,00),this->get_sid())));
             	}
@@ -242,150 +242,152 @@ HXDLIN( 226)		_hx_tmp->trigger(HX_("call/retract",50,bc,8d,db), ::Dynamic(::hx::
 HX_DEFINE_DYNAMIC_FUNC0(OutgoingProposedSession_obj,retract,(void))
 
 void OutgoingProposedSession_obj::terminate(){
-            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_230_terminate)
-HXDLIN( 230)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
-HXDLIN( 230)		::String _hx_tmp1 = (HX_("Tried to terminate before session-initiate: ",a9,d4,f3,a4) + this->get_sid());
-HXDLIN( 230)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
+            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_240_terminate)
+HXDLIN( 240)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
+HXDLIN( 240)		::String _hx_tmp1 = (HX_("Tried to terminate before session-initiate: ",a9,d4,f3,a4) + this->get_sid());
+HXDLIN( 240)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
             			->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.jingle.OutgoingProposedSession",b8,d3,7b,fd))
             			->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)))
             			->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("terminate",61,32,d2,fd))
             			->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/jingle/Session.hx",54,dd,b2,6d))
-            			->setFixed(4,HX_("lineNumber",dd,81,22,76),230)));
+            			->setFixed(4,HX_("lineNumber",dd,81,22,76),240)));
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(OutgoingProposedSession_obj,terminate,(void))
 
 void OutgoingProposedSession_obj::contentAdd( ::snikket::Stanza _){
-            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_234_contentAdd)
-HXDLIN( 234)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
-HXDLIN( 234)		::String _hx_tmp1 = (HX_("Got content-add before session-initiate: ",10,d3,fa,8a) + this->get_sid());
-HXDLIN( 234)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
+            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_244_contentAdd)
+HXDLIN( 244)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
+HXDLIN( 244)		::String _hx_tmp1 = (HX_("Got content-add before session-initiate: ",10,d3,fa,8a) + this->get_sid());
+HXDLIN( 244)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
             			->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.jingle.OutgoingProposedSession",b8,d3,7b,fd))
             			->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)))
             			->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("contentAdd",68,66,dd,43))
             			->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/jingle/Session.hx",54,dd,b2,6d))
-            			->setFixed(4,HX_("lineNumber",dd,81,22,76),234)));
+            			->setFixed(4,HX_("lineNumber",dd,81,22,76),244)));
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(OutgoingProposedSession_obj,contentAdd,(void))
 
 void OutgoingProposedSession_obj::contentAccept( ::snikket::Stanza _){
-            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_238_contentAccept)
-HXDLIN( 238)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
-HXDLIN( 238)		::String _hx_tmp1 = (HX_("Got content-accept before session-initiate: ",47,72,87,71) + this->get_sid());
-HXDLIN( 238)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
+            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_248_contentAccept)
+HXDLIN( 248)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
+HXDLIN( 248)		::String _hx_tmp1 = (HX_("Got content-accept before session-initiate: ",47,72,87,71) + this->get_sid());
+HXDLIN( 248)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
             			->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.jingle.OutgoingProposedSession",b8,d3,7b,fd))
             			->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)))
             			->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("contentAccept",21,c5,01,e1))
             			->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/jingle/Session.hx",54,dd,b2,6d))
-            			->setFixed(4,HX_("lineNumber",dd,81,22,76),238)));
+            			->setFixed(4,HX_("lineNumber",dd,81,22,76),248)));
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(OutgoingProposedSession_obj,contentAccept,(void))
 
 ::Dynamic OutgoingProposedSession_obj::transportInfo( ::snikket::Stanza _){
-            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_241_transportInfo)
-HXLINE( 242)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
-HXDLIN( 242)		::String _hx_tmp1 = (HX_("Got transport-info before session-initiate: ",bd,bd,9d,08) + this->get_sid());
-HXDLIN( 242)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
+            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_251_transportInfo)
+HXLINE( 252)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
+HXDLIN( 252)		::String _hx_tmp1 = (HX_("Got transport-info before session-initiate: ",bd,bd,9d,08) + this->get_sid());
+HXDLIN( 252)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
             			->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.jingle.OutgoingProposedSession",b8,d3,7b,fd))
             			->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)))
             			->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("transportInfo",b7,3c,cf,b6))
             			->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/jingle/Session.hx",54,dd,b2,6d))
-            			->setFixed(4,HX_("lineNumber",dd,81,22,76),242)));
-HXLINE( 243)		return ::thenshim::_Promise::Promise_Impl__obj::resolve(null());
+            			->setFixed(4,HX_("lineNumber",dd,81,22,76),252)));
+HXLINE( 253)		return ::thenshim::_Promise::Promise_Impl__obj::resolve(null());
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(OutgoingProposedSession_obj,transportInfo,return )
 
 void OutgoingProposedSession_obj::accept(){
-            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_247_accept)
-HXDLIN( 247)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
-HXDLIN( 247)		::String _hx_tmp1 = (HX_("Tried to accept before initiate: ",77,4a,a0,ec) + this->get_sid());
-HXDLIN( 247)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
+            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_257_accept)
+HXDLIN( 257)		 ::Dynamic _hx_tmp = ::haxe::Log_obj::trace;
+HXDLIN( 257)		::String _hx_tmp1 = (HX_("Tried to accept before initiate: ",77,4a,a0,ec) + this->get_sid());
+HXDLIN( 257)		_hx_tmp(_hx_tmp1, ::Dynamic(::hx::Anon_obj::Create(5)
             			->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.jingle.OutgoingProposedSession",b8,d3,7b,fd))
             			->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,::hx::ObjectPtr<OBJ_>(this)))
             			->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("accept",08,93,06,0b))
             			->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/jingle/Session.hx",54,dd,b2,6d))
-            			->setFixed(4,HX_("lineNumber",dd,81,22,76),247)));
+            			->setFixed(4,HX_("lineNumber",dd,81,22,76),257)));
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(OutgoingProposedSession_obj,accept,(void))
 
  ::snikket::jingle::OutgoingSession OutgoingProposedSession_obj::initiate( ::snikket::Stanza stanza){
-            	HX_GC_STACKFRAME(&_hx_pos_3d104e43c930d498_250_initiate)
-HXLINE( 251)		 ::snikket::Stanza jmi = stanza->getChild(HX_("proceed",2e,96,4a,f1),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07));
-HXLINE( 252)		if (::hx::IsNull( jmi )) {
-HXLINE( 252)			HX_STACK_DO_THROW((HX_("no jmi: ",4d,b1,bc,b7) + ::Std_obj::string(stanza)));
+            	HX_GC_STACKFRAME(&_hx_pos_3d104e43c930d498_260_initiate)
+HXLINE( 261)		 ::snikket::Stanza jmi = stanza->getChild(HX_("proceed",2e,96,4a,f1),HX_("urn:xmpp:jingle-message:0",fd,20,a5,07));
+HXLINE( 262)		if (::hx::IsNull( jmi )) {
+HXLINE( 262)			HX_STACK_DO_THROW((HX_("no jmi: ",4d,b1,bc,b7) + ::Std_obj::string(stanza)));
             		}
-HXLINE( 253)		::String _hx_tmp = ( (::String)(::Reflect_obj::field(jmi->attr,HX_("id",db,5b,00,00))) );
-HXDLIN( 253)		if ((_hx_tmp != this->get_sid())) {
-HXLINE( 253)			::String _hx_tmp1 = ((HX_("sid doesn't match: ",3b,d7,99,76) + ( (::String)(::Reflect_obj::field(jmi->attr,HX_("id",db,5b,00,00))) )) + HX_(" vs ",23,c2,80,15));
-HXDLIN( 253)			HX_STACK_DO_THROW((_hx_tmp1 + this->get_sid()));
+HXLINE( 263)		::String _hx_tmp = ( (::String)(::Reflect_obj::field(jmi->attr,HX_("id",db,5b,00,00))) );
+HXDLIN( 263)		if ((_hx_tmp != this->get_sid())) {
+HXLINE( 263)			::String _hx_tmp1 = ((HX_("sid doesn't match: ",3b,d7,99,76) + ( (::String)(::Reflect_obj::field(jmi->attr,HX_("id",db,5b,00,00))) )) + HX_(" vs ",23,c2,80,15));
+HXDLIN( 263)			HX_STACK_DO_THROW((_hx_tmp1 + this->get_sid()));
             		}
-HXLINE( 254)		 ::snikket::Client _hx_tmp2 = this->client;
-HXDLIN( 254)		_hx_tmp2->sendPresence(this->to->asString(),null());
-HXLINE( 255)		 ::snikket::Client session = this->client;
-HXDLIN( 255)		 ::snikket::JID session1 = ::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ));
-HXDLIN( 255)		 ::snikket::jingle::OutgoingSession session2 =  ::snikket::jingle::OutgoingSession_obj::__alloc( HX_CTX ,session,session1,this->get_sid());
-HXLINE( 256)		this->client->trigger(HX_("call/media",73,5d,1d,c7), ::Dynamic(::hx::Anon_obj::Create(3)
+HXLINE( 264)		 ::snikket::Client _hx_tmp2 = this->client;
+HXDLIN( 264)		_hx_tmp2->sendPresence(this->to->asString(),null());
+HXLINE( 265)		 ::snikket::Client session = this->client;
+HXDLIN( 265)		 ::snikket::JID session1 = ::snikket::JID_obj::parse(( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) ));
+HXDLIN( 265)		 ::snikket::jingle::OutgoingSession session2 =  ::snikket::jingle::OutgoingSession_obj::__alloc( HX_CTX ,session,session1,this->get_sid());
+HXLINE( 266)		this->client->trigger(HX_("call/media",73,5d,1d,c7), ::Dynamic(::hx::Anon_obj::Create(3)
             			->setFixed(0,HX_("session",56,17,98,93),session2)
             			->setFixed(1,HX_("audio",d6,78,80,27),this->audio)
             			->setFixed(2,HX_("video",7b,14,fc,36),this->video)));
-HXLINE( 257)		return session2;
+HXLINE( 267)		this->client->trigger(HX_("call/updateStatus",6c,f5,e6,ec), ::Dynamic(::hx::Anon_obj::Create(1)
+            			->setFixed(0,HX_("session",56,17,98,93),session2)));
+HXLINE( 268)		return session2;
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(OutgoingProposedSession_obj,initiate,return )
 
 void OutgoingProposedSession_obj::addMedia(::Array< ::Dynamic> _){
-            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_261_addMedia)
-HXDLIN( 261)		HX_STACK_DO_THROW(HX_("Cannot add media before call starts",aa,0a,79,d5));
+            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_272_addMedia)
+HXDLIN( 272)		HX_STACK_DO_THROW(HX_("Cannot add media before call starts",aa,0a,79,d5));
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(OutgoingProposedSession_obj,addMedia,(void))
 
-::String OutgoingProposedSession_obj::callStatus(){
-            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_265_callStatus)
-HXDLIN( 265)		return HX_("outgoing",6c,18,89,c7);
+int OutgoingProposedSession_obj::callStatus(){
+            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_276_callStatus)
+HXDLIN( 276)		return 2;
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(OutgoingProposedSession_obj,callStatus,return )
 
 ::Array< ::Dynamic> OutgoingProposedSession_obj::videoTracks(){
-            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_269_videoTracks)
-HXDLIN( 269)		return ::Array_obj< ::Dynamic>::__new(0);
+            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_280_videoTracks)
+HXDLIN( 280)		return ::Array_obj< ::Dynamic>::__new(0);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(OutgoingProposedSession_obj,videoTracks,return )
 
  ::snikket::jingle::DTMFSender OutgoingProposedSession_obj::dtmf(){
-            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_273_dtmf)
-HXDLIN( 273)		return null();
+            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_284_dtmf)
+HXDLIN( 284)		return null();
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(OutgoingProposedSession_obj,dtmf,return )
 
 ::String OutgoingProposedSession_obj::get_sid(){
-            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_277_get_sid)
-HXDLIN( 277)		return this->_sid;
+            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_288_get_sid)
+HXDLIN( 288)		return this->_sid;
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(OutgoingProposedSession_obj,get_sid,return )
 
 ::String OutgoingProposedSession_obj::get_chatId(){
-            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_281_get_chatId)
-HXDLIN( 281)		return this->to->asBare()->asString();
+            	HX_STACKFRAME(&_hx_pos_3d104e43c930d498_292_get_chatId)
+HXDLIN( 292)		return this->to->asBare()->asString();
             	}
 
 
diff --git a/Sources/c_snikket/src/snikket/jingle/OutgoingSession.cpp b/Sources/c_snikket/src/snikket/jingle/OutgoingSession.cpp
index 9d329ad..368195e 100644
--- a/Sources/c_snikket/src/snikket/jingle/OutgoingSession.cpp
+++ b/Sources/c_snikket/src/snikket/jingle/OutgoingSession.cpp
@@ -38,16 +38,16 @@
 #include <thenshim/_Promise/Promise_Impl_.h>
 #endif
 
-HX_DEFINE_STACK_FRAME(_hx_pos_4d1e8fd6f72343e8_637_new,"snikket.jingle.OutgoingSession","new",0xd3491ab0,"snikket.jingle.OutgoingSession.new","snikket/jingle/Session.hx",637,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_4d1e8fd6f72343e8_641_onPeerConnection,"snikket.jingle.OutgoingSession","onPeerConnection",0xa4a0358f,"snikket.jingle.OutgoingSession.onPeerConnection","snikket/jingle/Session.hx",641,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_4d1e8fd6f72343e8_648_initiate,"snikket.jingle.OutgoingSession","initiate",0x19babe09,"snikket.jingle.OutgoingSession.initiate","snikket/jingle/Session.hx",648,0x6db2dd54)
-HX_LOCAL_STACK_FRAME(_hx_pos_4d1e8fd6f72343e8_644_initiate,"snikket.jingle.OutgoingSession","initiate",0x19babe09,"snikket.jingle.OutgoingSession.initiate","snikket/jingle/Session.hx",644,0x6db2dd54)
+HX_DEFINE_STACK_FRAME(_hx_pos_4d1e8fd6f72343e8_655_new,"snikket.jingle.OutgoingSession","new",0xd3491ab0,"snikket.jingle.OutgoingSession.new","snikket/jingle/Session.hx",655,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_4d1e8fd6f72343e8_659_onPeerConnection,"snikket.jingle.OutgoingSession","onPeerConnection",0xa4a0358f,"snikket.jingle.OutgoingSession.onPeerConnection","snikket/jingle/Session.hx",659,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_4d1e8fd6f72343e8_666_initiate,"snikket.jingle.OutgoingSession","initiate",0x19babe09,"snikket.jingle.OutgoingSession.initiate","snikket/jingle/Session.hx",666,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_4d1e8fd6f72343e8_662_initiate,"snikket.jingle.OutgoingSession","initiate",0x19babe09,"snikket.jingle.OutgoingSession.initiate","snikket/jingle/Session.hx",662,0x6db2dd54)
 namespace snikket{
 namespace jingle{
 
 void OutgoingSession_obj::__construct( ::snikket::Client client, ::snikket::JID counterpart,::String sid){
-            	HX_STACKFRAME(&_hx_pos_4d1e8fd6f72343e8_637_new)
-HXDLIN( 637)		super::__construct(client,counterpart,sid,null());
+            	HX_STACKFRAME(&_hx_pos_4d1e8fd6f72343e8_655_new)
+HXDLIN( 655)		super::__construct(client,counterpart,sid,null());
             	}
 
 Dynamic OutgoingSession_obj::__CreateEmpty() { return new OutgoingSession_obj; }
@@ -70,28 +70,28 @@ bool OutgoingSession_obj::_hx_isInstanceOf(int inClassId) {
 }
 
 ::Dynamic OutgoingSession_obj::onPeerConnection(){
-            	HX_STACKFRAME(&_hx_pos_4d1e8fd6f72343e8_641_onPeerConnection)
-HXDLIN( 641)		return this->setupLocalDescription(HX_("session-initiate",70,2d,30,f7),null(),null(),null());
+            	HX_STACKFRAME(&_hx_pos_4d1e8fd6f72343e8_659_onPeerConnection)
+HXDLIN( 659)		return this->setupLocalDescription(HX_("session-initiate",70,2d,30,f7),null(),null(),null());
             	}
 
 
  ::snikket::jingle::OutgoingSession OutgoingSession_obj::initiate( ::snikket::Stanza stanza){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::jingle::OutgoingSession,_gthis, ::snikket::Stanza,stanza) HXARGC(1)
             		::Dynamic _hx_run( ::Dynamic _){
-            			HX_STACKFRAME(&_hx_pos_4d1e8fd6f72343e8_648_initiate)
-HXLINE( 648)			return _gthis->transportInfo(stanza);
+            			HX_STACKFRAME(&_hx_pos_4d1e8fd6f72343e8_666_initiate)
+HXLINE( 666)			return _gthis->transportInfo(stanza);
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_4d1e8fd6f72343e8_644_initiate)
-HXDLIN( 644)		 ::snikket::jingle::OutgoingSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 645)		this->remoteDescription = ::snikket::jingle::SessionDescription_obj::fromStanza(stanza,true,null());
-HXLINE( 646)		this->peerDtlsSetup = this->remoteDescription->getDtlsSetup();
-HXLINE( 647)		 ::snikket::jingle::PeerConnection _hx_tmp = this->pc;
-HXDLIN( 647)		::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp->setRemoteDescription( ::Dynamic(::hx::Anon_obj::Create(2)
+            	HX_STACKFRAME(&_hx_pos_4d1e8fd6f72343e8_662_initiate)
+HXDLIN( 662)		 ::snikket::jingle::OutgoingSession _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 663)		this->remoteDescription = ::snikket::jingle::SessionDescription_obj::fromStanza(stanza,true,null());
+HXLINE( 664)		this->peerDtlsSetup = this->remoteDescription->getDtlsSetup();
+HXLINE( 665)		 ::snikket::jingle::PeerConnection _hx_tmp = this->pc;
+HXDLIN( 665)		::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp->setRemoteDescription( ::Dynamic(::hx::Anon_obj::Create(2)
             			->setFixed(0,HX_("sdp",bf,9a,57,00),this->remoteDescription->toSdp())
             			->setFixed(1,HX_("type",ba,f2,08,4d),cpp::Struct(rtc::Description::Type::Answer)))), ::Dynamic(new _hx_Closure_0(_gthis,stanza)),null());
-HXLINE( 649)		return ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 667)		return ::hx::ObjectPtr<OBJ_>(this);
             	}
 
 
diff --git a/Sources/c_snikket/src/snikket/jingle/PeerConnection.cpp b/Sources/c_snikket/src/snikket/jingle/PeerConnection.cpp
index 31d9820..30c7e57 100644
--- a/Sources/c_snikket/src/snikket/jingle/PeerConnection.cpp
+++ b/Sources/c_snikket/src/snikket/jingle/PeerConnection.cpp
@@ -49,104 +49,104 @@
 #include <thenshim/_Promise/Promise_Impl_.h>
 #endif
 
-HX_DEFINE_STACK_FRAME(_hx_pos_8cd3f69017bd5103_784_new,"snikket.jingle.PeerConnection","new",0x0e347f5e,"snikket.jingle.PeerConnection.new","snikket/jingle/PeerConnection.cpp.hx",784,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_832_onLocalDescription,"snikket.jingle.PeerConnection","onLocalDescription",0x9c63d352,"snikket.jingle.PeerConnection.onLocalDescription","snikket/jingle/PeerConnection.cpp.hx",832,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_830_onLocalDescription,"snikket.jingle.PeerConnection","onLocalDescription",0x9c63d352,"snikket.jingle.PeerConnection.onLocalDescription","snikket/jingle/PeerConnection.cpp.hx",830,0xf9fab71d)
+HX_DEFINE_STACK_FRAME(_hx_pos_8cd3f69017bd5103_787_new,"snikket.jingle.PeerConnection","new",0x0e347f5e,"snikket.jingle.PeerConnection.new","snikket/jingle/PeerConnection.cpp.hx",787,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_835_onLocalDescription,"snikket.jingle.PeerConnection","onLocalDescription",0x9c63d352,"snikket.jingle.PeerConnection.onLocalDescription","snikket/jingle/PeerConnection.cpp.hx",835,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_833_onLocalDescription,"snikket.jingle.PeerConnection","onLocalDescription",0x9c63d352,"snikket.jingle.PeerConnection.onLocalDescription","snikket/jingle/PeerConnection.cpp.hx",833,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_847_onLocalCandidate,"snikket.jingle.PeerConnection","onLocalCandidate",0xfc129d19,"snikket.jingle.PeerConnection.onLocalCandidate","snikket/jingle/PeerConnection.cpp.hx",847,0xf9fab71d)
 HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_844_onLocalCandidate,"snikket.jingle.PeerConnection","onLocalCandidate",0xfc129d19,"snikket.jingle.PeerConnection.onLocalCandidate","snikket/jingle/PeerConnection.cpp.hx",844,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_841_onLocalCandidate,"snikket.jingle.PeerConnection","onLocalCandidate",0xfc129d19,"snikket.jingle.PeerConnection.onLocalCandidate","snikket/jingle/PeerConnection.cpp.hx",841,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_858_onStateChange,"snikket.jingle.PeerConnection","onStateChange",0xc45a9400,"snikket.jingle.PeerConnection.onStateChange","snikket/jingle/PeerConnection.cpp.hx",858,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_856_onStateChange,"snikket.jingle.PeerConnection","onStateChange",0xc45a9400,"snikket.jingle.PeerConnection.onStateChange","snikket/jingle/PeerConnection.cpp.hx",856,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_868_onGatheringStateChange,"snikket.jingle.PeerConnection","onGatheringStateChange",0x35b9a25b,"snikket.jingle.PeerConnection.onGatheringStateChange","snikket/jingle/PeerConnection.cpp.hx",868,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_873_onGatheringStateChange,"snikket.jingle.PeerConnection","onGatheringStateChange",0x35b9a25b,"snikket.jingle.PeerConnection.onGatheringStateChange","snikket/jingle/PeerConnection.cpp.hx",873,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_861_onStateChange,"snikket.jingle.PeerConnection","onStateChange",0xc45a9400,"snikket.jingle.PeerConnection.onStateChange","snikket/jingle/PeerConnection.cpp.hx",861,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_859_onStateChange,"snikket.jingle.PeerConnection","onStateChange",0xc45a9400,"snikket.jingle.PeerConnection.onStateChange","snikket/jingle/PeerConnection.cpp.hx",859,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_871_onGatheringStateChange,"snikket.jingle.PeerConnection","onGatheringStateChange",0x35b9a25b,"snikket.jingle.PeerConnection.onGatheringStateChange","snikket/jingle/PeerConnection.cpp.hx",871,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_876_onGatheringStateChange,"snikket.jingle.PeerConnection","onGatheringStateChange",0x35b9a25b,"snikket.jingle.PeerConnection.onGatheringStateChange","snikket/jingle/PeerConnection.cpp.hx",876,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_888_onTrack,"snikket.jingle.PeerConnection","onTrack",0x22f432ea,"snikket.jingle.PeerConnection.onTrack","snikket/jingle/PeerConnection.cpp.hx",888,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_887_onTrack,"snikket.jingle.PeerConnection","onTrack",0x22f432ea,"snikket.jingle.PeerConnection.onTrack","snikket/jingle/PeerConnection.cpp.hx",887,0xf9fab71d)
 HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_885_onTrack,"snikket.jingle.PeerConnection","onTrack",0x22f432ea,"snikket.jingle.PeerConnection.onTrack","snikket/jingle/PeerConnection.cpp.hx",885,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_884_onTrack,"snikket.jingle.PeerConnection","onTrack",0x22f432ea,"snikket.jingle.PeerConnection.onTrack","snikket/jingle/PeerConnection.cpp.hx",884,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_882_onTrack,"snikket.jingle.PeerConnection","onTrack",0x22f432ea,"snikket.jingle.PeerConnection.onTrack","snikket/jingle/PeerConnection.cpp.hx",882,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_902_get_connectionState,"snikket.jingle.PeerConnection","get_connectionState",0x98e8f328,"snikket.jingle.PeerConnection.get_connectionState","snikket/jingle/PeerConnection.cpp.hx",902,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_905_get_localDescription,"snikket.jingle.PeerConnection","get_localDescription",0xf881419c,"snikket.jingle.PeerConnection.get_localDescription","snikket/jingle/PeerConnection.cpp.hx",905,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_915_setLocalDescription,"snikket.jingle.PeerConnection","setLocalDescription",0xc3beb011,"snikket.jingle.PeerConnection.setLocalDescription","snikket/jingle/PeerConnection.cpp.hx",915,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_914_setLocalDescription,"snikket.jingle.PeerConnection","setLocalDescription",0xc3beb011,"snikket.jingle.PeerConnection.setLocalDescription","snikket/jingle/PeerConnection.cpp.hx",914,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_922_setRemoteDescription,"snikket.jingle.PeerConnection","setRemoteDescription",0x03bc2956,"snikket.jingle.PeerConnection.setRemoteDescription","snikket/jingle/PeerConnection.cpp.hx",922,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_928_addIceCandidate,"snikket.jingle.PeerConnection","addIceCandidate",0x0c0d6f37,"snikket.jingle.PeerConnection.addIceCandidate","snikket/jingle/PeerConnection.cpp.hx",928,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_933_addPendingTracks,"snikket.jingle.PeerConnection","addPendingTracks",0xfb3dbaa0,"snikket.jingle.PeerConnection.addPendingTracks","snikket/jingle/PeerConnection.cpp.hx",933,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_942_addTrack,"snikket.jingle.PeerConnection","addTrack",0xdd0aecec,"snikket.jingle.PeerConnection.addTrack","snikket/jingle/PeerConnection.cpp.hx",942,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_950_getTransceivers,"snikket.jingle.PeerConnection","getTransceivers",0x24b14243,"snikket.jingle.PeerConnection.getTransceivers","snikket/jingle/PeerConnection.cpp.hx",950,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_963_close,"snikket.jingle.PeerConnection","close",0x130c0236,"snikket.jingle.PeerConnection.close","snikket/jingle/PeerConnection.cpp.hx",963,0xf9fab71d)
-HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_966_addEventListener,"snikket.jingle.PeerConnection","addEventListener",0xae27560f,"snikket.jingle.PeerConnection.addEventListener","snikket/jingle/PeerConnection.cpp.hx",966,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_905_get_connectionState,"snikket.jingle.PeerConnection","get_connectionState",0x98e8f328,"snikket.jingle.PeerConnection.get_connectionState","snikket/jingle/PeerConnection.cpp.hx",905,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_908_get_localDescription,"snikket.jingle.PeerConnection","get_localDescription",0xf881419c,"snikket.jingle.PeerConnection.get_localDescription","snikket/jingle/PeerConnection.cpp.hx",908,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_918_setLocalDescription,"snikket.jingle.PeerConnection","setLocalDescription",0xc3beb011,"snikket.jingle.PeerConnection.setLocalDescription","snikket/jingle/PeerConnection.cpp.hx",918,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_917_setLocalDescription,"snikket.jingle.PeerConnection","setLocalDescription",0xc3beb011,"snikket.jingle.PeerConnection.setLocalDescription","snikket/jingle/PeerConnection.cpp.hx",917,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_925_setRemoteDescription,"snikket.jingle.PeerConnection","setRemoteDescription",0x03bc2956,"snikket.jingle.PeerConnection.setRemoteDescription","snikket/jingle/PeerConnection.cpp.hx",925,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_931_addIceCandidate,"snikket.jingle.PeerConnection","addIceCandidate",0x0c0d6f37,"snikket.jingle.PeerConnection.addIceCandidate","snikket/jingle/PeerConnection.cpp.hx",931,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_936_addPendingTracks,"snikket.jingle.PeerConnection","addPendingTracks",0xfb3dbaa0,"snikket.jingle.PeerConnection.addPendingTracks","snikket/jingle/PeerConnection.cpp.hx",936,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_945_addTrack,"snikket.jingle.PeerConnection","addTrack",0xdd0aecec,"snikket.jingle.PeerConnection.addTrack","snikket/jingle/PeerConnection.cpp.hx",945,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_953_getTransceivers,"snikket.jingle.PeerConnection","getTransceivers",0x24b14243,"snikket.jingle.PeerConnection.getTransceivers","snikket/jingle/PeerConnection.cpp.hx",953,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_966_close,"snikket.jingle.PeerConnection","close",0x130c0236,"snikket.jingle.PeerConnection.close","snikket/jingle/PeerConnection.cpp.hx",966,0xf9fab71d)
+HX_LOCAL_STACK_FRAME(_hx_pos_8cd3f69017bd5103_969_addEventListener,"snikket.jingle.PeerConnection","addEventListener",0xae27560f,"snikket.jingle.PeerConnection.addEventListener","snikket/jingle/PeerConnection.cpp.hx",969,0xf9fab71d)
 namespace snikket{
 namespace jingle{
 
 void PeerConnection_obj::__construct( ::Dynamic configuration, ::Dynamic constraints){
-            	HX_GC_STACKFRAME(&_hx_pos_8cd3f69017bd5103_784_new)
-HXLINE( 798)		this->pendingTracks = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 797)		this->hasRemote = false;
-HXLINE( 796)		this->hasLocal = false;
-HXLINE( 794)		this->stateChangeListeners = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 793)		this->localCandidateListeners = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 792)		this->trackListeners = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 791)		this->tracks =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
-HXLINE( 790)		this->waitingOnLocal = null();
-HXLINE( 801)		if (::hx::IsNotNull( ::Sys_obj::getEnv(HX_("SNIKKET_WEBRTC_DEBUG",e3,43,ef,ce)) )) {
-HXLINE( 802)			rtc::InitLogger(rtc::LogLevel::Verbose);;
+            	HX_GC_STACKFRAME(&_hx_pos_8cd3f69017bd5103_787_new)
+HXLINE( 801)		this->pendingTracks = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 800)		this->hasRemote = false;
+HXLINE( 799)		this->hasLocal = false;
+HXLINE( 797)		this->stateChangeListeners = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 796)		this->localCandidateListeners = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 795)		this->trackListeners = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 794)		this->tracks =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
+HXLINE( 793)		this->waitingOnLocal = null();
+HXLINE( 804)		if (::hx::IsNotNull( ::Sys_obj::getEnv(HX_("SNIKKET_WEBRTC_DEBUG",e3,43,ef,ce)) )) {
+HXLINE( 805)			rtc::InitLogger(rtc::LogLevel::Verbose);;
             		}
-HXLINE( 804)		this->mainLoop = ::sys::thread::_Thread::Thread_Impl__obj::get_events(::sys::thread::_Thread::HaxeThread_obj::current());
-HXLINE( 805)		rtc::Configuration configRaw;;
-HXLINE( 806)		::cpp::Pointer<  rtc::Configuration > config = &configRaw;
-HXLINE( 807)		bool _hx_tmp;
-HXDLIN( 807)		if (::hx::IsNotNull( configuration )) {
-HXLINE( 807)			_hx_tmp = ::hx::IsNotNull( configuration->__Field(HX_("iceServers",45,14,49,d2),::hx::paccDynamic) );
+HXLINE( 807)		this->mainLoop = ::sys::thread::_Thread::Thread_Impl__obj::get_events(::sys::thread::_Thread::HaxeThread_obj::current());
+HXLINE( 808)		rtc::Configuration configRaw;;
+HXLINE( 809)		::cpp::Pointer<  rtc::Configuration > config = &configRaw;
+HXLINE( 810)		bool _hx_tmp;
+HXDLIN( 810)		if (::hx::IsNotNull( configuration )) {
+HXLINE( 810)			_hx_tmp = ::hx::IsNotNull( configuration->__Field(HX_("iceServers",45,14,49,d2),::hx::paccDynamic) );
             		}
             		else {
-HXLINE( 807)			_hx_tmp = false;
+HXLINE( 810)			_hx_tmp = false;
             		}
-HXDLIN( 807)		if (_hx_tmp) {
-HXLINE( 808)			int _g = 0;
-HXDLIN( 808)			::Array< ::Dynamic> _g1 = ( (::Array< ::Dynamic>)(configuration->__Field(HX_("iceServers",45,14,49,d2),::hx::paccDynamic)) );
-HXDLIN( 808)			while((_g < _g1->length)){
-HXLINE( 808)				 ::Dynamic server = _g1->__get(_g);
-HXDLIN( 808)				_g = (_g + 1);
-HXLINE( 809)				bool _hx_tmp1;
-HXDLIN( 809)				bool _hx_tmp2;
-HXDLIN( 809)				if (::hx::IsNotNull( server->__Field(HX_("urls",24,d6,ac,4d),::hx::paccDynamic) )) {
-HXLINE( 809)					_hx_tmp2 = (( (::Array< ::String >)(server->__Field(HX_("urls",24,d6,ac,4d),::hx::paccDynamic)) )->length == 1);
+HXDLIN( 810)		if (_hx_tmp) {
+HXLINE( 811)			int _g = 0;
+HXDLIN( 811)			::Array< ::Dynamic> _g1 = ( (::Array< ::Dynamic>)(configuration->__Field(HX_("iceServers",45,14,49,d2),::hx::paccDynamic)) );
+HXDLIN( 811)			while((_g < _g1->length)){
+HXLINE( 811)				 ::Dynamic server = _g1->__get(_g);
+HXDLIN( 811)				_g = (_g + 1);
+HXLINE( 812)				bool _hx_tmp1;
+HXDLIN( 812)				bool _hx_tmp2;
+HXDLIN( 812)				if (::hx::IsNotNull( server->__Field(HX_("urls",24,d6,ac,4d),::hx::paccDynamic) )) {
+HXLINE( 812)					_hx_tmp2 = (( (::Array< ::String >)(server->__Field(HX_("urls",24,d6,ac,4d),::hx::paccDynamic)) )->length == 1);
             				}
             				else {
-HXLINE( 809)					_hx_tmp2 = false;
+HXLINE( 812)					_hx_tmp2 = false;
             				}
-HXDLIN( 809)				if (_hx_tmp2) {
-HXLINE( 809)					_hx_tmp1 = (( (::String)( ::Dynamic(server->__Field(HX_("urls",24,d6,ac,4d),::hx::paccDynamic))->__GetItem(0)) ).indexOf(HX_("stuns",f9,9d,1a,84),null()) != 0);
+HXDLIN( 812)				if (_hx_tmp2) {
+HXLINE( 812)					_hx_tmp1 = (( (::String)( ::Dynamic(server->__Field(HX_("urls",24,d6,ac,4d),::hx::paccDynamic))->__GetItem(0)) ).indexOf(HX_("stuns",f9,9d,1a,84),null()) != 0);
             				}
             				else {
-HXLINE( 809)					_hx_tmp1 = false;
+HXLINE( 812)					_hx_tmp1 = false;
             				}
-HXDLIN( 809)				if (_hx_tmp1) {
-HXLINE( 810)					 hx::StdString url = ::hx::StdString(( (::String)( ::Dynamic(server->__Field(HX_("urls",24,d6,ac,4d),::hx::paccDynamic))->__GetItem(0)) ));
-HXLINE( 811)					rtc::IceServer iceServerRaw(url);;
-HXLINE( 812)					::cpp::Pointer<  rtc::IceServer > iceServer = &iceServerRaw;
-HXLINE( 813)					if (::hx::IsNotNull( server->__Field(HX_("username",16,86,eb,20),::hx::paccDynamic) )) {
-HXLINE( 813)						iceServer->get_ref().username = ::hx::StdString(( (::String)(server->__Field(HX_("username",16,86,eb,20),::hx::paccDynamic)) ));
+HXDLIN( 812)				if (_hx_tmp1) {
+HXLINE( 813)					 hx::StdString url = ::hx::StdString(( (::String)( ::Dynamic(server->__Field(HX_("urls",24,d6,ac,4d),::hx::paccDynamic))->__GetItem(0)) ));
+HXLINE( 814)					rtc::IceServer iceServerRaw(url);;
+HXLINE( 815)					::cpp::Pointer<  rtc::IceServer > iceServer = &iceServerRaw;
+HXLINE( 816)					if (::hx::IsNotNull( server->__Field(HX_("username",16,86,eb,20),::hx::paccDynamic) )) {
+HXLINE( 816)						iceServer->get_ref().username = ::hx::StdString(( (::String)(server->__Field(HX_("username",16,86,eb,20),::hx::paccDynamic)) ));
             					}
-HXLINE( 814)					if (::hx::IsNotNull( server->__Field(HX_("credential",d7,89,b2,20),::hx::paccDynamic) )) {
-HXLINE( 814)						iceServer->get_ref().password = ::hx::StdString(( (::String)(server->__Field(HX_("credential",d7,89,b2,20),::hx::paccDynamic)) ));
+HXLINE( 817)					if (::hx::IsNotNull( server->__Field(HX_("credential",d7,89,b2,20),::hx::paccDynamic) )) {
+HXLINE( 817)						iceServer->get_ref().password = ::hx::StdString(( (::String)(server->__Field(HX_("credential",d7,89,b2,20),::hx::paccDynamic)) ));
             					}
-HXLINE( 815)					::cpp::Pointer<  std::vector<  rtc::IceServer > > iceServers = &configRaw.iceServers;
-HXLINE( 816)					 std::vector<  rtc::IceServer > & _hx_tmp3 = iceServers->get_ref();
-HXDLIN( 816)					 rtc::IceServer & _hx_tmp4 = iceServer->get_ref();
-HXDLIN( 816)					_hx_tmp3.push_back(_hx_tmp4);
+HXLINE( 818)					::cpp::Pointer<  std::vector<  rtc::IceServer > > iceServers = &configRaw.iceServers;
+HXLINE( 819)					 std::vector<  rtc::IceServer > & _hx_tmp3 = iceServers->get_ref();
+HXDLIN( 819)					 rtc::IceServer & _hx_tmp4 = iceServer->get_ref();
+HXDLIN( 819)					_hx_tmp3.push_back(_hx_tmp4);
             				}
             			}
             		}
-HXLINE( 820)		this->_pc = std::make_shared<rtc::PeerConnection>(config->get_ref());
-HXLINE( 821)		this->pc = ::cpp::Pointer_obj::fromRaw(this->_pc.get());
-HXLINE( 822)		 rtc::PeerConnection & _hx_tmp5 = this->pc->get_ref();
-HXDLIN( 822)		_hx_tmp5.onLocalDescription([this](auto d) { this->onLocalDescription(); });
-HXLINE( 823)		 rtc::PeerConnection & _hx_tmp6 = this->pc->get_ref();
-HXDLIN( 823)		_hx_tmp6.onTrack([this](auto t) { this->onTrack(t); });
-HXLINE( 824)		 rtc::PeerConnection & _hx_tmp7 = this->pc->get_ref();
-HXDLIN( 824)		_hx_tmp7.onLocalCandidate([this](auto c) { this->onLocalCandidate(c); });
-HXLINE( 825)		 rtc::PeerConnection & _hx_tmp8 = this->pc->get_ref();
-HXDLIN( 825)		_hx_tmp8.onStateChange([this](auto s) { this->onStateChange(s); });
-HXLINE( 826)		 rtc::PeerConnection & _hx_tmp9 = this->pc->get_ref();
-HXDLIN( 826)		_hx_tmp9.onGatheringStateChange([this](auto s) { this->onGatheringStateChange(s); });
+HXLINE( 823)		this->_pc = std::make_shared<rtc::PeerConnection>(config->get_ref());
+HXLINE( 824)		this->pc = ::cpp::Pointer_obj::fromRaw(this->_pc.get());
+HXLINE( 825)		 rtc::PeerConnection & _hx_tmp5 = this->pc->get_ref();
+HXDLIN( 825)		_hx_tmp5.onLocalDescription([this](auto d) { this->onLocalDescription(); });
+HXLINE( 826)		 rtc::PeerConnection & _hx_tmp6 = this->pc->get_ref();
+HXDLIN( 826)		_hx_tmp6.onTrack([this](auto t) { this->onTrack(t); });
+HXLINE( 827)		 rtc::PeerConnection & _hx_tmp7 = this->pc->get_ref();
+HXDLIN( 827)		_hx_tmp7.onLocalCandidate([this](auto c) { this->onLocalCandidate(c); });
+HXLINE( 828)		 rtc::PeerConnection & _hx_tmp8 = this->pc->get_ref();
+HXDLIN( 828)		_hx_tmp8.onStateChange([this](auto s) { this->onStateChange(s); });
+HXLINE( 829)		 rtc::PeerConnection & _hx_tmp9 = this->pc->get_ref();
+HXDLIN( 829)		_hx_tmp9.onGatheringStateChange([this](auto s) { this->onGatheringStateChange(s); });
             	}
 
 Dynamic PeerConnection_obj::__CreateEmpty() { return new PeerConnection_obj; }
@@ -167,20 +167,20 @@ bool PeerConnection_obj::_hx_isInstanceOf(int inClassId) {
 void PeerConnection_obj::onLocalDescription(){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::jingle::PeerConnection,_gthis) HXARGC(0)
             		void _hx_run(){
-            			HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_832_onLocalDescription)
-HXLINE( 833)			_gthis->addPendingTracks();
-HXLINE( 834)			if (::hx::IsNotNull( _gthis->waitingOnLocal )) {
-HXLINE( 834)				_gthis->waitingOnLocal(null());
+            			HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_835_onLocalDescription)
+HXLINE( 836)			_gthis->addPendingTracks();
+HXLINE( 837)			if (::hx::IsNotNull( _gthis->waitingOnLocal )) {
+HXLINE( 837)				_gthis->waitingOnLocal(null());
             			}
-HXLINE( 835)			_gthis->waitingOnLocal = null();
+HXLINE( 838)			_gthis->waitingOnLocal = null();
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_830_onLocalDescription)
-HXDLIN( 830)		 ::snikket::jingle::PeerConnection _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 831)		int base = 0; hx::SetTopOfStack(&base, true);;
-HXLINE( 832)		this->mainLoop->run( ::Dynamic(new _hx_Closure_0(_gthis)));
-HXLINE( 837)		hx::SetTopOfStack((int*)0, true);;
+            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_833_onLocalDescription)
+HXDLIN( 833)		 ::snikket::jingle::PeerConnection _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 834)		int base = 0; hx::SetTopOfStack(&base, true);;
+HXLINE( 835)		this->mainLoop->run( ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE( 840)		hx::SetTopOfStack((int*)0, true);;
             	}
 
 
@@ -189,18 +189,18 @@ HX_DEFINE_DYNAMIC_FUNC0(PeerConnection_obj,onLocalDescription,(void))
 void PeerConnection_obj::onLocalCandidate( rtc::Candidate candidate){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::jingle::PeerConnection,_gthis, rtc::Candidate,candidate) HXARGC(0)
             		void _hx_run(){
-            			HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_844_onLocalCandidate)
-HXLINE( 844)			int _g = 0;
-HXDLIN( 844)			::Array< ::Dynamic> _g1 = _gthis->localCandidateListeners;
-HXDLIN( 844)			while((_g < _g1->length)){
-HXLINE( 844)				 ::Dynamic cb = _g1->__get(_g);
-HXDLIN( 844)				_g = (_g + 1);
-HXLINE( 846)				 std::string this1 = candidate.candidate();
-HXDLIN( 846)				::String _hx_tmp = ( ( hx::StdString)(::hx::StdString(this1)) ).toString();
-HXLINE( 847)				 std::string this2 = candidate.mid();
-HXDLIN( 847)				::String _hx_tmp1 = ( ( hx::StdString)(::hx::StdString(this2)) ).toString();
-HXLINE( 848)				 std::string this3 = ( ( std::string)(( (cpp::Struct<  std::string >)(( ( rtc::Description)(( (cpp::Struct<  rtc::Description >)(_gthis->pc->get_ref().localDescription().value()) )) ).iceUfrag().value()) )) );
-HXLINE( 845)				cb( ::Dynamic(::hx::Anon_obj::Create(1)
+            			HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_847_onLocalCandidate)
+HXLINE( 847)			int _g = 0;
+HXDLIN( 847)			::Array< ::Dynamic> _g1 = _gthis->localCandidateListeners;
+HXDLIN( 847)			while((_g < _g1->length)){
+HXLINE( 847)				 ::Dynamic cb = _g1->__get(_g);
+HXDLIN( 847)				_g = (_g + 1);
+HXLINE( 849)				 std::string this1 = candidate.candidate();
+HXDLIN( 849)				::String _hx_tmp = ( ( hx::StdString)(::hx::StdString(this1)) ).toString();
+HXLINE( 850)				 std::string this2 = candidate.mid();
+HXDLIN( 850)				::String _hx_tmp1 = ( ( hx::StdString)(::hx::StdString(this2)) ).toString();
+HXLINE( 851)				 std::string this3 = ( ( std::string)(( (cpp::Struct<  std::string >)(( ( rtc::Description)(( (cpp::Struct<  rtc::Description >)(_gthis->pc->get_ref().localDescription().value()) )) ).iceUfrag().value()) )) );
+HXLINE( 848)				cb( ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("candidate",43,34,d8,d0), ::Dynamic(::hx::Anon_obj::Create(3)
             						->setFixed(0,HX_("usernameFragment",06,a8,37,89),( ( hx::StdString)(::hx::StdString(this3)) ).toString())
             						->setFixed(1,HX_("candidate",43,34,d8,d0),_hx_tmp)
@@ -209,90 +209,90 @@ HXLINE( 845)				cb( ::Dynamic(::hx::Anon_obj::Create(1)
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_841_onLocalCandidate)
-HXDLIN( 841)		 ::snikket::jingle::PeerConnection _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 842)		int base = 0; hx::SetTopOfStack(&base, true);;
-HXLINE( 843)		this->mainLoop->run( ::Dynamic(new _hx_Closure_0(_gthis,candidate)));
-HXLINE( 852)		hx::SetTopOfStack((int*)0, true);;
+            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_844_onLocalCandidate)
+HXDLIN( 844)		 ::snikket::jingle::PeerConnection _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 845)		int base = 0; hx::SetTopOfStack(&base, true);;
+HXLINE( 846)		this->mainLoop->run( ::Dynamic(new _hx_Closure_0(_gthis,candidate)));
+HXLINE( 855)		hx::SetTopOfStack((int*)0, true);;
             	}
 
 
 void PeerConnection_obj::onStateChange(cpp::Struct<  rtc::PeerConnection::State > state){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::jingle::PeerConnection,_gthis,cpp::Struct<  rtc::PeerConnection::State >,state) HXARGC(0)
             		void _hx_run(){
-            			HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_858_onStateChange)
-HXLINE( 859)			::String stateString;
-HXDLIN( 859)			 rtc::PeerConnection::State _hx_switch_0 = ( ( rtc::PeerConnection::State)(state) );
+            			HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_861_onStateChange)
+HXLINE( 862)			::String stateString;
+HXDLIN( 862)			 rtc::PeerConnection::State _hx_switch_0 = ( ( rtc::PeerConnection::State)(state) );
             			if (  (_hx_switch_0==rtc::PeerConnection::State::Closed) ){
-HXLINE( 859)				stateString = HX_("closed",ac,a9,51,0e);
-HXDLIN( 859)				goto _hx_goto_7;
+HXLINE( 862)				stateString = HX_("closed",ac,a9,51,0e);
+HXDLIN( 862)				goto _hx_goto_7;
             			}
             			if (  (_hx_switch_0==rtc::PeerConnection::State::Connected) ){
-HXLINE( 859)				stateString = HX_("connected",c9,e2,f6,a2);
-HXDLIN( 859)				goto _hx_goto_7;
+HXLINE( 862)				stateString = HX_("connected",c9,e2,f6,a2);
+HXDLIN( 862)				goto _hx_goto_7;
             			}
             			if (  (_hx_switch_0==rtc::PeerConnection::State::Connecting) ){
-HXLINE( 859)				stateString = HX_("connecting",38,9f,12,f5);
-HXDLIN( 859)				goto _hx_goto_7;
+HXLINE( 862)				stateString = HX_("connecting",38,9f,12,f5);
+HXDLIN( 862)				goto _hx_goto_7;
             			}
             			if (  (_hx_switch_0==rtc::PeerConnection::State::Disconnected) ){
-HXLINE( 859)				stateString = HX_("disconnected",bb,8b,6b,8e);
-HXDLIN( 859)				goto _hx_goto_7;
+HXLINE( 862)				stateString = HX_("disconnected",bb,8b,6b,8e);
+HXDLIN( 862)				goto _hx_goto_7;
             			}
             			if (  (_hx_switch_0==rtc::PeerConnection::State::Failed) ){
-HXLINE( 859)				stateString = HX_("failed",bd,c5,fe,e7);
-HXDLIN( 859)				goto _hx_goto_7;
+HXLINE( 862)				stateString = HX_("failed",bd,c5,fe,e7);
+HXDLIN( 862)				goto _hx_goto_7;
             			}
             			if (  (_hx_switch_0==rtc::PeerConnection::State::New) ){
-HXLINE( 859)				stateString = HX_("new",60,d0,53,00);
-HXDLIN( 859)				goto _hx_goto_7;
+HXLINE( 862)				stateString = HX_("new",60,d0,53,00);
+HXDLIN( 862)				goto _hx_goto_7;
             			}
             			_hx_goto_7:;
-HXLINE( 860)			{
-HXLINE( 860)				int _g = 0;
-HXDLIN( 860)				::Array< ::Dynamic> _g1 = _gthis->stateChangeListeners;
-HXDLIN( 860)				while((_g < _g1->length)){
-HXLINE( 860)					 ::Dynamic cb = _g1->__get(_g);
-HXDLIN( 860)					_g = (_g + 1);
-HXLINE( 861)					cb(stateString);
+HXLINE( 863)			{
+HXLINE( 863)				int _g = 0;
+HXDLIN( 863)				::Array< ::Dynamic> _g1 = _gthis->stateChangeListeners;
+HXDLIN( 863)				while((_g < _g1->length)){
+HXLINE( 863)					 ::Dynamic cb = _g1->__get(_g);
+HXDLIN( 863)					_g = (_g + 1);
+HXLINE( 864)					cb(stateString);
             				}
             			}
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_856_onStateChange)
-HXDLIN( 856)		 ::snikket::jingle::PeerConnection _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 857)		int base = 0; hx::SetTopOfStack(&base, true);;
-HXLINE( 858)		this->mainLoop->run( ::Dynamic(new _hx_Closure_0(_gthis,state)));
-HXLINE( 864)		hx::SetTopOfStack((int*)0, true);;
+            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_859_onStateChange)
+HXDLIN( 859)		 ::snikket::jingle::PeerConnection _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 860)		int base = 0; hx::SetTopOfStack(&base, true);;
+HXLINE( 861)		this->mainLoop->run( ::Dynamic(new _hx_Closure_0(_gthis,state)));
+HXLINE( 867)		hx::SetTopOfStack((int*)0, true);;
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(PeerConnection_obj,onStateChange,(void))
 
 void PeerConnection_obj::onGatheringStateChange(cpp::Struct<  rtc::PeerConnection::GatheringState > state){
-            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_868_onGatheringStateChange)
-HXDLIN( 868)		 ::snikket::jingle::PeerConnection _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 869)		int base = 0; hx::SetTopOfStack(&base, true);;
-HXLINE( 870)		cpp::Struct<  rtc::PeerConnection::GatheringState > c = rtc::PeerConnection::GatheringState::Complete;
-HXLINE( 871)		if (::hx::IsEq( state,c )) {
+            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_871_onGatheringStateChange)
+HXDLIN( 871)		 ::snikket::jingle::PeerConnection _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 872)		int base = 0; hx::SetTopOfStack(&base, true);;
+HXLINE( 873)		cpp::Struct<  rtc::PeerConnection::GatheringState > c = rtc::PeerConnection::GatheringState::Complete;
+HXLINE( 874)		if (::hx::IsEq( state,c )) {
             			HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::jingle::PeerConnection,_gthis) HXARGC(0)
             			void _hx_run(){
-            				HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_873_onGatheringStateChange)
-HXLINE( 873)				int _g = 0;
-HXDLIN( 873)				::Array< ::Dynamic> _g1 = _gthis->localCandidateListeners;
-HXDLIN( 873)				while((_g < _g1->length)){
-HXLINE( 873)					 ::Dynamic cb = _g1->__get(_g);
-HXDLIN( 873)					_g = (_g + 1);
-HXLINE( 874)					cb( ::Dynamic(::hx::Anon_obj::Create(1)
+            				HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_876_onGatheringStateChange)
+HXLINE( 876)				int _g = 0;
+HXDLIN( 876)				::Array< ::Dynamic> _g1 = _gthis->localCandidateListeners;
+HXDLIN( 876)				while((_g < _g1->length)){
+HXLINE( 876)					 ::Dynamic cb = _g1->__get(_g);
+HXDLIN( 876)					_g = (_g + 1);
+HXLINE( 877)					cb( ::Dynamic(::hx::Anon_obj::Create(1)
             						->setFixed(0,HX_("candidate",43,34,d8,d0),null())));
             				}
             			}
             			HX_END_LOCAL_FUNC0((void))
 
-HXLINE( 872)			this->mainLoop->run( ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE( 875)			this->mainLoop->run( ::Dynamic(new _hx_Closure_0(_gthis)));
             		}
-HXLINE( 878)		hx::SetTopOfStack((int*)0, true);;
+HXLINE( 881)		hx::SetTopOfStack((int*)0, true);;
             	}
 
 
@@ -303,48 +303,48 @@ void PeerConnection_obj::onTrack( std::shared_ptr<  rtc::Track > track){
             		void _hx_run(){
             			HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, std::shared_ptr<  rtc::Track >,track) HXARGC(1)
             			bool _hx_run( ::snikket::jingle::MediaStreamTrack t){
-            				HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_885_onTrack)
-HXLINE( 885)				::String matchingTrack = t->get_kind();
-HXDLIN( 885)				 std::string this1 = track->description().type();
-HXDLIN( 885)				return (matchingTrack == ( ( hx::StdString)(::hx::StdString(this1)) ).toString());
+            				HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_888_onTrack)
+HXLINE( 888)				::String matchingTrack = t->get_kind();
+HXDLIN( 888)				 std::string this1 = track->description().type();
+HXDLIN( 888)				return (matchingTrack == ( ( hx::StdString)(::hx::StdString(this1)) ).toString());
             			}
             			HX_END_LOCAL_FUNC1(return)
 
-            			HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_884_onTrack)
-HXLINE( 885)			 ::snikket::jingle::MediaStreamTrack matchingTrack = ( ( ::snikket::jingle::MediaStreamTrack)(::Lambda_obj::find(_gthis->pendingTracks, ::Dynamic(new _hx_Closure_0(track)))) );
-HXLINE( 886)			 ::snikket::jingle::MediaStreamTrack media;
-HXDLIN( 886)			if (::hx::IsNull( matchingTrack )) {
-HXLINE( 886)				media = ::snikket::jingle::MediaStreamTrack_obj::fromTrack(track);
+            			HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_887_onTrack)
+HXLINE( 888)			 ::snikket::jingle::MediaStreamTrack matchingTrack = ( ( ::snikket::jingle::MediaStreamTrack)(::Lambda_obj::find(_gthis->pendingTracks, ::Dynamic(new _hx_Closure_0(track)))) );
+HXLINE( 889)			 ::snikket::jingle::MediaStreamTrack media;
+HXDLIN( 889)			if (::hx::IsNull( matchingTrack )) {
+HXLINE( 889)				media = ::snikket::jingle::MediaStreamTrack_obj::fromTrack(track);
             			}
             			else {
-HXLINE( 889)				::Array< ::Dynamic> _g = ::Array_obj< ::Dynamic>::__new(0);
-HXDLIN( 889)				{
-HXLINE( 889)					int _g1 = 0;
-HXDLIN( 889)					::Array< ::Dynamic> _g2 = _gthis->pendingTracks;
-HXDLIN( 889)					while((_g1 < _g2->length)){
-HXLINE( 889)						 ::snikket::jingle::MediaStreamTrack v = _g2->__get(_g1).StaticCast<  ::snikket::jingle::MediaStreamTrack >();
-HXDLIN( 889)						_g1 = (_g1 + 1);
-HXDLIN( 889)						::String media1 = v->get_id();
-HXDLIN( 889)						if ((media1 != matchingTrack->get_id())) {
-HXLINE( 889)							_g->push(v);
+HXLINE( 892)				::Array< ::Dynamic> _g = ::Array_obj< ::Dynamic>::__new(0);
+HXDLIN( 892)				{
+HXLINE( 892)					int _g1 = 0;
+HXDLIN( 892)					::Array< ::Dynamic> _g2 = _gthis->pendingTracks;
+HXDLIN( 892)					while((_g1 < _g2->length)){
+HXLINE( 892)						 ::snikket::jingle::MediaStreamTrack v = _g2->__get(_g1).StaticCast<  ::snikket::jingle::MediaStreamTrack >();
+HXDLIN( 892)						_g1 = (_g1 + 1);
+HXDLIN( 892)						::String media1 = v->get_id();
+HXDLIN( 892)						if ((media1 != matchingTrack->get_id())) {
+HXLINE( 892)							_g->push(v);
             						}
             					}
             				}
-HXDLIN( 889)				_gthis->pendingTracks = _g;
-HXLINE( 890)				matchingTrack->set_track(track);
-HXLINE( 886)				media = matchingTrack;
+HXDLIN( 892)				_gthis->pendingTracks = _g;
+HXLINE( 893)				matchingTrack->set_track(track);
+HXLINE( 889)				media = matchingTrack;
             			}
-HXLINE( 893)			{
-HXLINE( 893)				::Dynamic this1 = _gthis->tracks;
-HXDLIN( 893)				( ( ::haxe::ds::StringMap)(this1) )->set(media->get_id(),media);
+HXLINE( 896)			{
+HXLINE( 896)				::Dynamic this1 = _gthis->tracks;
+HXDLIN( 896)				( ( ::haxe::ds::StringMap)(this1) )->set(media->get_id(),media);
             			}
-HXLINE( 894)			{
-HXLINE( 894)				int _g3 = 0;
-HXDLIN( 894)				::Array< ::Dynamic> _g4 = _gthis->trackListeners;
-HXDLIN( 894)				while((_g3 < _g4->length)){
-HXLINE( 894)					 ::Dynamic cb = _g4->__get(_g3);
-HXDLIN( 894)					_g3 = (_g3 + 1);
-HXLINE( 895)					cb( ::Dynamic(::hx::Anon_obj::Create(2)
+HXLINE( 897)			{
+HXLINE( 897)				int _g3 = 0;
+HXDLIN( 897)				::Array< ::Dynamic> _g4 = _gthis->trackListeners;
+HXDLIN( 897)				while((_g3 < _g4->length)){
+HXLINE( 897)					 ::Dynamic cb = _g4->__get(_g3);
+HXDLIN( 897)					_g3 = (_g3 + 1);
+HXLINE( 898)					cb( ::Dynamic(::hx::Anon_obj::Create(2)
             						->setFixed(0,HX_("streams",f3,db,44,f6),::cpp::VirtualArray_obj::__new(0))
             						->setFixed(1,HX_("track",8b,8e,1f,16),media)));
             				}
@@ -352,60 +352,60 @@ HXLINE( 895)					cb( ::Dynamic(::hx::Anon_obj::Create(2)
             		}
             		HX_END_LOCAL_FUNC0((void))
 
-            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_882_onTrack)
-HXDLIN( 882)		 ::snikket::jingle::PeerConnection _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 883)		int base = 0; hx::SetTopOfStack(&base, true);;
-HXLINE( 884)		this->mainLoop->run( ::Dynamic(new _hx_Closure_1(_gthis,track)));
-HXLINE( 898)		hx::SetTopOfStack((int*)0, true);;
+            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_885_onTrack)
+HXDLIN( 885)		 ::snikket::jingle::PeerConnection _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 886)		int base = 0; hx::SetTopOfStack(&base, true);;
+HXLINE( 887)		this->mainLoop->run( ::Dynamic(new _hx_Closure_1(_gthis,track)));
+HXLINE( 901)		hx::SetTopOfStack((int*)0, true);;
             	}
 
 
 ::String PeerConnection_obj::get_connectionState(){
-            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_902_get_connectionState)
-HXDLIN( 902)		 rtc::PeerConnection::State _hx_switch_0 = this->pc->get_ref().state();
+            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_905_get_connectionState)
+HXDLIN( 905)		 rtc::PeerConnection::State _hx_switch_0 = this->pc->get_ref().state();
             		if (  (_hx_switch_0==rtc::PeerConnection::State::Closed) ){
-HXDLIN( 902)			return HX_("closed",ac,a9,51,0e);
-HXDLIN( 902)			goto _hx_goto_19;
+HXDLIN( 905)			return HX_("closed",ac,a9,51,0e);
+HXDLIN( 905)			goto _hx_goto_19;
             		}
             		if (  (_hx_switch_0==rtc::PeerConnection::State::Connected) ){
-HXDLIN( 902)			return HX_("connected",c9,e2,f6,a2);
-HXDLIN( 902)			goto _hx_goto_19;
+HXDLIN( 905)			return HX_("connected",c9,e2,f6,a2);
+HXDLIN( 905)			goto _hx_goto_19;
             		}
             		if (  (_hx_switch_0==rtc::PeerConnection::State::Connecting) ){
-HXDLIN( 902)			return HX_("connecting",38,9f,12,f5);
-HXDLIN( 902)			goto _hx_goto_19;
+HXDLIN( 905)			return HX_("connecting",38,9f,12,f5);
+HXDLIN( 905)			goto _hx_goto_19;
             		}
             		if (  (_hx_switch_0==rtc::PeerConnection::State::Disconnected) ){
-HXDLIN( 902)			return HX_("disconnected",bb,8b,6b,8e);
-HXDLIN( 902)			goto _hx_goto_19;
+HXDLIN( 905)			return HX_("disconnected",bb,8b,6b,8e);
+HXDLIN( 905)			goto _hx_goto_19;
             		}
             		if (  (_hx_switch_0==rtc::PeerConnection::State::Failed) ){
-HXDLIN( 902)			return HX_("failed",bd,c5,fe,e7);
-HXDLIN( 902)			goto _hx_goto_19;
+HXDLIN( 905)			return HX_("failed",bd,c5,fe,e7);
+HXDLIN( 905)			goto _hx_goto_19;
             		}
             		if (  (_hx_switch_0==rtc::PeerConnection::State::New) ){
-HXDLIN( 902)			return HX_("new",60,d0,53,00);
-HXDLIN( 902)			goto _hx_goto_19;
+HXDLIN( 905)			return HX_("new",60,d0,53,00);
+HXDLIN( 905)			goto _hx_goto_19;
             		}
             		_hx_goto_19:;
-HXDLIN( 902)		return null();
+HXDLIN( 905)		return null();
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(PeerConnection_obj,get_connectionState,return )
 
  ::Dynamic PeerConnection_obj::get_localDescription(){
-            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_905_get_localDescription)
-HXLINE( 906)		 std::optional<  rtc::Description > desc = this->pc->get_ref().localDescription();
-HXLINE( 907)		if (desc.has_value()) {
-HXLINE( 908)			 std::string this1 = ( ( rtc::Description)(( (cpp::Struct<  rtc::Description >)(desc.value()) )) ).generateSdp();
-HXDLIN( 908)			return  ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_908_get_localDescription)
+HXLINE( 909)		 std::optional<  rtc::Description > desc = this->pc->get_ref().localDescription();
+HXLINE( 910)		if (desc.has_value()) {
+HXLINE( 911)			 std::string this1 = ( ( rtc::Description)(( (cpp::Struct<  rtc::Description >)(desc.value()) )) ).generateSdp();
+HXDLIN( 911)			return  ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("sdp",bf,9a,57,00),( ( hx::StdString)(::hx::StdString(this1)) ).toString()));
             		}
             		else {
-HXLINE( 910)			return null();
+HXLINE( 913)			return null();
             		}
-HXLINE( 907)		return null();
+HXLINE( 910)		return null();
             	}
 
 
@@ -414,66 +414,66 @@ HX_DEFINE_DYNAMIC_FUNC0(PeerConnection_obj,get_localDescription,return )
 ::Dynamic PeerConnection_obj::setLocalDescription(cpp::Struct<  rtc::Description::Type > sdpType){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::jingle::PeerConnection,_gthis,cpp::Struct<  rtc::Description::Type >,sdpType) HXARGC(2)
             		void _hx_run( ::Dynamic resolve, ::Dynamic reject){
-            			HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_915_setLocalDescription)
-HXLINE( 916)			_gthis->waitingOnLocal = resolve;
-HXLINE( 917)			if (!(_gthis->hasRemote)) {
-HXLINE( 917)				_gthis->addPendingTracks();
+            			HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_918_setLocalDescription)
+HXLINE( 919)			_gthis->waitingOnLocal = resolve;
+HXLINE( 920)			if (!(_gthis->hasRemote)) {
+HXLINE( 920)				_gthis->addPendingTracks();
             			}
-HXLINE( 918)			 rtc::PeerConnection & _hx_tmp = _gthis->pc->get_ref();
-HXDLIN( 918)			cpp::Struct<  rtc::Description::Type > tmp = sdpType;
-HXDLIN( 918)			cpp::Struct<  rtc::Description::Type > _hx_tmp1;
-HXDLIN( 918)			if (::hx::IsNotNull( tmp )) {
-HXLINE( 918)				_hx_tmp1 = tmp;
+HXLINE( 921)			 rtc::PeerConnection & _hx_tmp = _gthis->pc->get_ref();
+HXDLIN( 921)			cpp::Struct<  rtc::Description::Type > tmp = sdpType;
+HXDLIN( 921)			cpp::Struct<  rtc::Description::Type > _hx_tmp1;
+HXDLIN( 921)			if (::hx::IsNotNull( tmp )) {
+HXLINE( 921)				_hx_tmp1 = tmp;
             			}
             			else {
-HXLINE( 918)				_hx_tmp1 = cpp::Struct(rtc::Description::Type::Unspec);
+HXLINE( 921)				_hx_tmp1 = cpp::Struct(rtc::Description::Type::Unspec);
             			}
-HXDLIN( 918)			_hx_tmp.setLocalDescription(_hx_tmp1);
+HXDLIN( 921)			_hx_tmp.setLocalDescription(_hx_tmp1);
             		}
             		HX_END_LOCAL_FUNC2((void))
 
-            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_914_setLocalDescription)
-HXDLIN( 914)		 ::snikket::jingle::PeerConnection _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 915)		return ::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_0(_gthis,sdpType)));
+            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_917_setLocalDescription)
+HXDLIN( 917)		 ::snikket::jingle::PeerConnection _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 918)		return ::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_0(_gthis,sdpType)));
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(PeerConnection_obj,setLocalDescription,return )
 
 ::Dynamic PeerConnection_obj::setRemoteDescription( ::Dynamic description){
-            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_922_setRemoteDescription)
-HXLINE( 923)		 rtc::PeerConnection & _hx_tmp = this->pc->get_ref();
-HXDLIN( 923)		 hx::StdString _hx_tmp1 = ::hx::StdString(( (::String)(description->__Field(HX_("sdp",bf,9a,57,00),::hx::paccDynamic)) ));
-HXDLIN( 923)		_hx_tmp.setRemoteDescription( rtc::Description(_hx_tmp1,::hx::TCast< cpp::Struct<  rtc::Description::Type > >::cast(description->__Field(HX_("type",ba,f2,08,4d),::hx::paccDynamic))));
-HXLINE( 924)		this->hasRemote = true;
-HXLINE( 925)		return ::thenshim::_Promise::Promise_Impl__obj::resolve(null());
+            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_925_setRemoteDescription)
+HXLINE( 926)		 rtc::PeerConnection & _hx_tmp = this->pc->get_ref();
+HXDLIN( 926)		 hx::StdString _hx_tmp1 = ::hx::StdString(( (::String)(description->__Field(HX_("sdp",bf,9a,57,00),::hx::paccDynamic)) ));
+HXDLIN( 926)		_hx_tmp.setRemoteDescription( rtc::Description(_hx_tmp1,::hx::TCast< cpp::Struct<  rtc::Description::Type > >::cast(description->__Field(HX_("type",ba,f2,08,4d),::hx::paccDynamic))));
+HXLINE( 927)		this->hasRemote = true;
+HXLINE( 928)		return ::thenshim::_Promise::Promise_Impl__obj::resolve(null());
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(PeerConnection_obj,setRemoteDescription,return )
 
 ::Dynamic PeerConnection_obj::addIceCandidate( ::Dynamic candidate){
-            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_928_addIceCandidate)
-HXLINE( 929)		 rtc::PeerConnection & _hx_tmp = this->pc->get_ref();
-HXDLIN( 929)		 hx::StdString _hx_tmp1 = ::hx::StdString(( (::String)(candidate->__Field(HX_("candidate",43,34,d8,d0),::hx::paccDynamic)) ));
-HXDLIN( 929)		 hx::StdString _hx_tmp2 = ::hx::StdString(( (::String)(candidate->__Field(HX_("sdpMid",09,30,5f,d9),::hx::paccDynamic)) ));
-HXDLIN( 929)		_hx_tmp.addRemoteCandidate( rtc::Candidate(_hx_tmp1,_hx_tmp2));
-HXLINE( 930)		return ::thenshim::_Promise::Promise_Impl__obj::resolve(null());
+            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_931_addIceCandidate)
+HXLINE( 932)		 rtc::PeerConnection & _hx_tmp = this->pc->get_ref();
+HXDLIN( 932)		 hx::StdString _hx_tmp1 = ::hx::StdString(( (::String)(candidate->__Field(HX_("candidate",43,34,d8,d0),::hx::paccDynamic)) ));
+HXDLIN( 932)		 hx::StdString _hx_tmp2 = ::hx::StdString(( (::String)(candidate->__Field(HX_("sdpMid",09,30,5f,d9),::hx::paccDynamic)) ));
+HXDLIN( 932)		_hx_tmp.addRemoteCandidate( rtc::Candidate(_hx_tmp1,_hx_tmp2));
+HXLINE( 933)		return ::thenshim::_Promise::Promise_Impl__obj::resolve(null());
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(PeerConnection_obj,addIceCandidate,return )
 
 void PeerConnection_obj::addPendingTracks(){
-            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_933_addPendingTracks)
-HXLINE( 934)		this->hasLocal = true;
-HXLINE( 935)		 ::snikket::jingle::MediaStreamTrack track;
-HXLINE( 936)		while(true){
-HXLINE( 936)			track = this->pendingTracks->shift().StaticCast<  ::snikket::jingle::MediaStreamTrack >();
-HXDLIN( 936)			if (!(::hx::IsNotNull( track ))) {
-HXLINE( 936)				goto _hx_goto_26;
+            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_936_addPendingTracks)
+HXLINE( 937)		this->hasLocal = true;
+HXLINE( 938)		 ::snikket::jingle::MediaStreamTrack track;
+HXLINE( 939)		while(true){
+HXLINE( 939)			track = this->pendingTracks->shift().StaticCast<  ::snikket::jingle::MediaStreamTrack >();
+HXDLIN( 939)			if (!(::hx::IsNotNull( track ))) {
+HXLINE( 939)				goto _hx_goto_26;
             			}
-HXLINE( 937)			this->addTrack(track,null());
+HXLINE( 940)			this->addTrack(track,null());
             		}
             		_hx_goto_26:;
             	}
@@ -482,18 +482,18 @@ HXLINE( 937)			this->addTrack(track,null());
 HX_DEFINE_DYNAMIC_FUNC0(PeerConnection_obj,addPendingTracks,(void))
 
 void PeerConnection_obj::addTrack( ::snikket::jingle::MediaStreamTrack track, ::snikket::jingle::MediaStream stream){
-            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_942_addTrack)
-HXDLIN( 942)		if (this->hasLocal) {
-HXLINE( 943)			 rtc::PeerConnection & _hx_tmp = this->pc->get_ref();
-HXDLIN( 943)			 rtc::Description::Media _hx_tmp1 = ( ( rtc::Description::Media)(( (cpp::Struct<  rtc::Description::Media >)(track->get_media().value()) )) );
-HXDLIN( 943)			track->set_track(_hx_tmp.addTrack(_hx_tmp1));
-HXLINE( 944)			{
-HXLINE( 944)				::Dynamic this1 = this->tracks;
-HXDLIN( 944)				( ( ::haxe::ds::StringMap)(this1) )->set(track->get_id(),track);
+            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_945_addTrack)
+HXDLIN( 945)		if (this->hasLocal) {
+HXLINE( 946)			 rtc::PeerConnection & _hx_tmp = this->pc->get_ref();
+HXDLIN( 946)			 rtc::Description::Media _hx_tmp1 = ( ( rtc::Description::Media)(( (cpp::Struct<  rtc::Description::Media >)(track->get_media().value()) )) );
+HXDLIN( 946)			track->set_track(_hx_tmp.addTrack(_hx_tmp1));
+HXLINE( 947)			{
+HXLINE( 947)				::Dynamic this1 = this->tracks;
+HXDLIN( 947)				( ( ::haxe::ds::StringMap)(this1) )->set(track->get_id(),track);
             			}
             		}
             		else {
-HXLINE( 946)			this->pendingTracks->push(track);
+HXLINE( 949)			this->pendingTracks->push(track);
             		}
             	}
 
@@ -501,19 +501,19 @@ HXLINE( 946)			this->pendingTracks->push(track);
 HX_DEFINE_DYNAMIC_FUNC2(PeerConnection_obj,addTrack,(void))
 
 ::Array< ::Dynamic> PeerConnection_obj::getTransceivers(){
-            	HX_GC_STACKFRAME(&_hx_pos_8cd3f69017bd5103_950_getTransceivers)
-HXLINE( 952)		::Array< ::Dynamic> ts = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 953)		{
-HXLINE( 953)			::Dynamic map = this->tracks;
-HXDLIN( 953)			::Dynamic _g_map = map;
-HXDLIN( 953)			 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
-HXDLIN( 953)			while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE( 953)				::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
-HXDLIN( 953)				 ::snikket::jingle::MediaStreamTrack _g_value = ( ( ::snikket::jingle::MediaStreamTrack)(::haxe::IMap_obj::get(_g_map,key)) );
-HXDLIN( 953)				::String _g_key = key;
-HXDLIN( 953)				::String mid = _g_key;
-HXDLIN( 953)				 ::snikket::jingle::MediaStreamTrack track = _g_value;
-HXLINE( 954)				ts->push( ::Dynamic(::hx::Anon_obj::Create(2)
+            	HX_GC_STACKFRAME(&_hx_pos_8cd3f69017bd5103_953_getTransceivers)
+HXLINE( 955)		::Array< ::Dynamic> ts = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 956)		{
+HXLINE( 956)			::Dynamic map = this->tracks;
+HXDLIN( 956)			::Dynamic _g_map = map;
+HXDLIN( 956)			 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
+HXDLIN( 956)			while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE( 956)				::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
+HXDLIN( 956)				 ::snikket::jingle::MediaStreamTrack _g_value = ( ( ::snikket::jingle::MediaStreamTrack)(::haxe::IMap_obj::get(_g_map,key)) );
+HXDLIN( 956)				::String _g_key = key;
+HXDLIN( 956)				::String mid = _g_key;
+HXDLIN( 956)				 ::snikket::jingle::MediaStreamTrack track = _g_value;
+HXLINE( 957)				ts->push( ::Dynamic(::hx::Anon_obj::Create(2)
             					->setFixed(0,HX_("receiver",2f,45,fd,e2), ::Dynamic(::hx::Anon_obj::Create(1)
             						->setFixed(0,HX_("track",8b,8e,1f,16),track)))
             					->setFixed(1,HX_("sender",b5,c7,84,6b), ::Dynamic(::hx::Anon_obj::Create(2)
@@ -521,30 +521,30 @@ HXLINE( 954)				ts->push( ::Dynamic(::hx::Anon_obj::Create(2)
             						->setFixed(1,HX_("dtmf",e9,ba,71,42), ::snikket::jingle::DTMFSender_obj::__alloc( HX_CTX ,track))))));
             			}
             		}
-HXLINE( 959)		return ts;
+HXLINE( 962)		return ts;
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(PeerConnection_obj,getTransceivers,return )
 
 void PeerConnection_obj::close(){
-            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_963_close)
-HXDLIN( 963)		this->pc->get_ref().close();
+            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_966_close)
+HXDLIN( 966)		this->pc->get_ref().close();
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(PeerConnection_obj,close,(void))
 
 void PeerConnection_obj::addEventListener(::String event, ::Dynamic callback){
-            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_966_addEventListener)
-HXLINE( 967)		if ((event == HX_("track",8b,8e,1f,16))) {
-HXLINE( 967)			this->trackListeners->push(callback);
+            	HX_STACKFRAME(&_hx_pos_8cd3f69017bd5103_969_addEventListener)
+HXLINE( 970)		if ((event == HX_("track",8b,8e,1f,16))) {
+HXLINE( 970)			this->trackListeners->push(callback);
             		}
-HXLINE( 968)		if ((event == HX_("icecandidate",98,ef,c0,7b))) {
-HXLINE( 968)			this->localCandidateListeners->push(callback);
+HXLINE( 971)		if ((event == HX_("icecandidate",98,ef,c0,7b))) {
+HXLINE( 971)			this->localCandidateListeners->push(callback);
             		}
-HXLINE( 969)		if ((event == HX_("connectionstatechange",e3,a2,87,36))) {
-HXLINE( 969)			this->stateChangeListeners->push(callback);
+HXLINE( 972)		if ((event == HX_("connectionstatechange",e3,a2,87,36))) {
+HXLINE( 972)			this->stateChangeListeners->push(callback);
             		}
             	}
 
diff --git a/Sources/c_snikket/src/snikket/jingle/_Session/Session_Fields_.cpp b/Sources/c_snikket/src/snikket/jingle/_Session/Session_Fields_.cpp
index 12de4e9..ec83eeb 100644
--- a/Sources/c_snikket/src/snikket/jingle/_Session/Session_Fields_.cpp
+++ b/Sources/c_snikket/src/snikket/jingle/_Session/Session_Fields_.cpp
@@ -32,7 +32,7 @@
 #include <snikket/jingle/_Session/Session_Fields_.h>
 #endif
 
-HX_LOCAL_STACK_FRAME(_hx_pos_02df9d92159f3aa0_41_mkCallMessage,"snikket.jingle._Session.Session_Fields_","mkCallMessage",0x268ca02f,"snikket.jingle._Session.Session_Fields_.mkCallMessage","snikket/jingle/Session.hx",41,0x6db2dd54)
+HX_LOCAL_STACK_FRAME(_hx_pos_02df9d92159f3aa0_50_mkCallMessage,"snikket.jingle._Session.Session_Fields_","mkCallMessage",0x268ca02f,"snikket.jingle._Session.Session_Fields_.mkCallMessage","snikket/jingle/Session.hx",50,0x6db2dd54)
 namespace snikket{
 namespace jingle{
 namespace _Session{
@@ -55,24 +55,24 @@ bool Session_Fields__obj::_hx_isInstanceOf(int inClassId) {
 }
 
  ::snikket::ChatMessage Session_Fields__obj::mkCallMessage( ::snikket::JID to, ::snikket::JID from, ::snikket::Stanza event){
-            	HX_GC_STACKFRAME(&_hx_pos_02df9d92159f3aa0_41_mkCallMessage)
-HXLINE(  42)		 ::snikket::ChatMessageBuilder m =  ::snikket::ChatMessageBuilder_obj::__alloc( HX_CTX );
-HXLINE(  43)		m->type = 1;
-HXLINE(  44)		m->to = to;
-HXLINE(  45)		m->recipients = ::Array_obj< ::Dynamic>::__new(1)->init(0,to->asBare());
-HXLINE(  46)		m->from = from;
-HXLINE(  47)		m->sender = m->from->asBare();
-HXLINE(  48)		m->replyTo = ::Array_obj< ::Dynamic>::__new(1)->init(0,m->sender);
-HXLINE(  49)		m->direction = 1;
-HXLINE(  50)		m->text = (HX_("call ",c2,71,1b,41) + event->name);
-HXLINE(  51)		m->timestamp = ::snikket::Date_obj::format(::Date_obj::now());
-HXLINE(  52)		m->payloads->push(event);
-HXLINE(  53)		m->localId = ::snikket::ID_obj::_hx_long();
-HXLINE(  54)		if ((event->name != HX_("propose",fe,fe,e9,f9))) {
-HXLINE(  55)			m->versions = ::Array_obj< ::Dynamic>::__new(1)->init(0,m->build());
+            	HX_GC_STACKFRAME(&_hx_pos_02df9d92159f3aa0_50_mkCallMessage)
+HXLINE(  51)		 ::snikket::ChatMessageBuilder m =  ::snikket::ChatMessageBuilder_obj::__alloc( HX_CTX );
+HXLINE(  52)		m->type = 1;
+HXLINE(  53)		m->to = to;
+HXLINE(  54)		m->recipients = ::Array_obj< ::Dynamic>::__new(1)->init(0,to->asBare());
+HXLINE(  55)		m->from = from;
+HXLINE(  56)		m->sender = m->from->asBare();
+HXLINE(  57)		m->replyTo = ::Array_obj< ::Dynamic>::__new(1)->init(0,m->sender);
+HXLINE(  58)		m->direction = 1;
+HXLINE(  59)		m->text = (HX_("call ",c2,71,1b,41) + event->name);
+HXLINE(  60)		m->timestamp = ::snikket::Date_obj::format(::Date_obj::now());
+HXLINE(  61)		m->payloads->push(event);
+HXLINE(  62)		m->localId = ::snikket::ID_obj::_hx_long();
+HXLINE(  63)		if ((event->name != HX_("propose",fe,fe,e9,f9))) {
+HXLINE(  64)			m->versions = ::Array_obj< ::Dynamic>::__new(1)->init(0,m->build());
             		}
-HXLINE(  57)		m->localId = ( (::String)(::Reflect_obj::field(event->attr,HX_("id",db,5b,00,00))) );
-HXLINE(  58)		return m->build();
+HXLINE(  66)		m->localId = ( (::String)(::Reflect_obj::field(event->attr,HX_("id",db,5b,00,00))) );
+HXLINE(  67)		return m->build();
             	}
 
 
diff --git a/Sources/c_snikket/src/snikket/persistence/MediaStoreFS.cpp b/Sources/c_snikket/src/snikket/persistence/MediaStoreFS.cpp
index ee5793f..9429403 100644
--- a/Sources/c_snikket/src/snikket/persistence/MediaStoreFS.cpp
+++ b/Sources/c_snikket/src/snikket/persistence/MediaStoreFS.cpp
@@ -4,12 +4,12 @@
 #ifndef INCLUDED__HaxeCBridge_Internal
 #include <_HaxeCBridge/Internal.h>
 #endif
+#ifndef INCLUDED_cpp_Int64Map
+#include <cpp/Int64Map.h>
+#endif
 #ifndef INCLUDED_haxe_IMap
 #include <haxe/IMap.h>
 #endif
-#ifndef INCLUDED_haxe_ds_IntMap
-#include <haxe/ds/IntMap.h>
-#endif
 #ifndef INCLUDED_haxe_io_Bytes
 #include <haxe/io/Bytes.h>
 #endif
@@ -155,20 +155,21 @@ HX_DEFINE_DYNAMIC_FUNC2(MediaStoreFS_obj,getMediaPath,(void))
 void MediaStoreFS_obj::getMediaPath__fromC(::String uri,::cpp::Function< void  (const char*,void*) > callback,void* callback__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,void*,callback__context,::cpp::Function< void  (const char* HX_COMMA void*) >,callback) HXARGC(1)
             		void _hx_run(::String a0){
-            			HX_GC_STACKFRAME(&_hx_pos_01cf80b813798682_221_getMediaPath__fromC)
+            			HX_STACKFRAME(&_hx_pos_01cf80b813798682_221_getMediaPath__fromC)
 HXLINE( 221)			::cpp::Function< void  (const char*,void*) > callback1 = callback;
 HXLINE( 213)			const char* cStrPtr = a0.utf8_str();
 HXDLIN( 213)			::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(cStrPtr);
 HXDLIN( 213)			{
-HXLINE( 213)				 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 213)				int low = ptrInt64 & 0xffffffff;
-HXDLIN( 213)				int high = ptrInt64 >> 32;
-HXDLIN( 213)				 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 213)				if (::hx::IsNull( highMap )) {
-HXLINE( 213)					highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 213)					this1->set(low,highMap);
+HXLINE( 213)				 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 213)				if (::hx::IsNull( store )) {
+HXLINE( 213)					store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),a0));
+HXDLIN( 213)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            				}
+            				else {
+HXLINE( 213)					::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 213)				highMap->set(high,a0);
             			}
 HXLINE( 221)			callback1(cStrPtr,callback__context);
             		}
diff --git a/Sources/c_snikket/src/snikket/persistence/Sqlite.cpp b/Sources/c_snikket/src/snikket/persistence/Sqlite.cpp
index f7519fc..9915070 100644
--- a/Sources/c_snikket/src/snikket/persistence/Sqlite.cpp
+++ b/Sources/c_snikket/src/snikket/persistence/Sqlite.cpp
@@ -19,6 +19,9 @@
 #ifndef INCLUDED__HaxeCBridge_Internal
 #include <_HaxeCBridge/Internal.h>
 #endif
+#ifndef INCLUDED_cpp_Int64Map
+#include <cpp/Int64Map.h>
+#endif
 #ifndef INCLUDED_haxe_IMap
 #include <haxe/IMap.h>
 #endif
@@ -28,9 +31,6 @@
 #ifndef INCLUDED_haxe_crypto_Base64
 #include <haxe/crypto/Base64.h>
 #endif
-#ifndef INCLUDED_haxe_ds_IntMap
-#include <haxe/ds/IntMap.h>
-#endif
 #ifndef INCLUDED_haxe_ds_ObjectMap
 #include <haxe/ds/ObjectMap.h>
 #endif
@@ -64,6 +64,9 @@
 #ifndef INCLUDED_snikket_ChatMessageBuilder
 #include <snikket/ChatMessageBuilder.h>
 #endif
+#ifndef INCLUDED_snikket_Config
+#include <snikket/Config.h>
+#endif
 #ifndef INCLUDED_snikket_CustomEmojiReaction
 #include <snikket/CustomEmojiReaction.h>
 #endif
@@ -154,16 +157,16 @@ static const ::String _hx_array_data_e415cb6c_27[] = {
 	HX_("(?,?,?,?,?,?,?,?,?,?,?,jsonb(?),?,?,?,?)",4e,16,2e,3d),
 };
 HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_174_storeChats,"snikket.persistence.Sqlite","storeChats",0xcde3e4bc,"snikket.persistence.Sqlite.storeChats","snikket/persistence/Sqlite.hx",174,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_248_getChats,"snikket.persistence.Sqlite","getChats",0x2aaef367,"snikket.persistence.Sqlite.getChats","snikket/persistence/Sqlite.hx",248,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_247_getChats,"snikket.persistence.Sqlite","getChats",0x2aaef367,"snikket.persistence.Sqlite.getChats","snikket/persistence/Sqlite.hx",247,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_251_getChats,"snikket.persistence.Sqlite","getChats",0x2aaef367,"snikket.persistence.Sqlite.getChats","snikket/persistence/Sqlite.hx",251,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_234_getChats,"snikket.persistence.Sqlite","getChats",0x2aaef367,"snikket.persistence.Sqlite.getChats","snikket/persistence/Sqlite.hx",234,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_239_getChats,"snikket.persistence.Sqlite","getChats",0x2aaef367,"snikket.persistence.Sqlite.getChats","snikket/persistence/Sqlite.hx",239,0x917a2510)
 HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_252_getChats,"snikket.persistence.Sqlite","getChats",0x2aaef367,"snikket.persistence.Sqlite.getChats","snikket/persistence/Sqlite.hx",252,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_235_getChats,"snikket.persistence.Sqlite","getChats",0x2aaef367,"snikket.persistence.Sqlite.getChats","snikket/persistence/Sqlite.hx",235,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_240_getChats,"snikket.persistence.Sqlite","getChats",0x2aaef367,"snikket.persistence.Sqlite.getChats","snikket/persistence/Sqlite.hx",240,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_253_getChats,"snikket.persistence.Sqlite","getChats",0x2aaef367,"snikket.persistence.Sqlite.getChats","snikket/persistence/Sqlite.hx",253,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_257_getChats,"snikket.persistence.Sqlite","getChats",0x2aaef367,"snikket.persistence.Sqlite.getChats","snikket/persistence/Sqlite.hx",257,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_231_getChats,"snikket.persistence.Sqlite","getChats",0x2aaef367,"snikket.persistence.Sqlite.getChats","snikket/persistence/Sqlite.hx",231,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_318_storeMessages,"snikket.persistence.Sqlite","storeMessages",0x458d5d4b,"snikket.persistence.Sqlite.storeMessages","snikket/persistence/Sqlite.hx",318,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_333_storeMessages,"snikket.persistence.Sqlite","storeMessages",0x458d5d4b,"snikket.persistence.Sqlite.storeMessages","snikket/persistence/Sqlite.hx",333,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_281_storeMessages,"snikket.persistence.Sqlite","storeMessages",0x458d5d4b,"snikket.persistence.Sqlite.storeMessages","snikket/persistence/Sqlite.hx",281,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_256_getChats,"snikket.persistence.Sqlite","getChats",0x2aaef367,"snikket.persistence.Sqlite.getChats","snikket/persistence/Sqlite.hx",256,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_230_getChats,"snikket.persistence.Sqlite","getChats",0x2aaef367,"snikket.persistence.Sqlite.getChats","snikket/persistence/Sqlite.hx",230,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_316_storeMessages,"snikket.persistence.Sqlite","storeMessages",0x458d5d4b,"snikket.persistence.Sqlite.storeMessages","snikket/persistence/Sqlite.hx",316,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_331_storeMessages,"snikket.persistence.Sqlite","storeMessages",0x458d5d4b,"snikket.persistence.Sqlite.storeMessages","snikket/persistence/Sqlite.hx",331,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_279_storeMessages,"snikket.persistence.Sqlite","storeMessages",0x458d5d4b,"snikket.persistence.Sqlite.storeMessages","snikket/persistence/Sqlite.hx",279,0x917a2510)
 static const ::String _hx_array_data_e415cb6c_53[] = {
 	HX_("DELETE FROM messages WHERE account_id=? AND direction=? AND chat_id IN (",a1,9c,a2,06),
 };
@@ -173,24 +176,24 @@ static const ::String _hx_array_data_e415cb6c_54[] = {
 static const ::String _hx_array_data_e415cb6c_55[] = {
 	HX_(")",29,00,00,00),
 };
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_341_updateMessage,"snikket.persistence.Sqlite","updateMessage",0xc14f063c,"snikket.persistence.Sqlite.updateMessage","snikket/persistence/Sqlite.hx",341,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_355_getMessage,"snikket.persistence.Sqlite","getMessage",0x34245593,"snikket.persistence.Sqlite.getMessage","snikket/persistence/Sqlite.hx",355,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_361_getMessage,"snikket.persistence.Sqlite","getMessage",0x34245593,"snikket.persistence.Sqlite.getMessage","snikket/persistence/Sqlite.hx",361,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_344_getMessage,"snikket.persistence.Sqlite","getMessage",0x34245593,"snikket.persistence.Sqlite.getMessage","snikket/persistence/Sqlite.hx",344,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_339_updateMessage,"snikket.persistence.Sqlite","updateMessage",0xc14f063c,"snikket.persistence.Sqlite.updateMessage","snikket/persistence/Sqlite.hx",339,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_353_getMessage,"snikket.persistence.Sqlite","getMessage",0x34245593,"snikket.persistence.Sqlite.getMessage","snikket/persistence/Sqlite.hx",353,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_359_getMessage,"snikket.persistence.Sqlite","getMessage",0x34245593,"snikket.persistence.Sqlite.getMessage","snikket/persistence/Sqlite.hx",359,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_342_getMessage,"snikket.persistence.Sqlite","getMessage",0x34245593,"snikket.persistence.Sqlite.getMessage","snikket/persistence/Sqlite.hx",342,0x917a2510)
 HX_LOCAL_STACK_FRAME(_hx_pos_45dcb523da764b50_221_getMessage__fromC,"snikket.persistence.Sqlite","getMessage__fromC",0x61244346,"snikket.persistence.Sqlite.getMessage__fromC","HaxeCBridge.hx",221,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_45dcb523da764b50_252_getMessage__fromC,"snikket.persistence.Sqlite","getMessage__fromC",0x61244346,"snikket.persistence.Sqlite.getMessage__fromC","HaxeCBridge.hx",252,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_394_getMessages,"snikket.persistence.Sqlite","getMessages",0x6ba68b80,"snikket.persistence.Sqlite.getMessages","snikket/persistence/Sqlite.hx",394,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_407_getMessages,"snikket.persistence.Sqlite","getMessages",0x6ba68b80,"snikket.persistence.Sqlite.getMessages","snikket/persistence/Sqlite.hx",407,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_368_getMessages,"snikket.persistence.Sqlite","getMessages",0x6ba68b80,"snikket.persistence.Sqlite.getMessages","snikket/persistence/Sqlite.hx",368,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_412_getMessagesBefore,"snikket.persistence.Sqlite","getMessagesBefore",0x6d22f41f,"snikket.persistence.Sqlite.getMessagesBefore","snikket/persistence/Sqlite.hx",412,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_417_getMessagesAfter,"snikket.persistence.Sqlite","getMessagesAfter",0x143f9a7c,"snikket.persistence.Sqlite.getMessagesAfter","snikket/persistence/Sqlite.hx",417,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_433_getMessagesAround,"snikket.persistence.Sqlite","getMessagesAround",0x88f497ed,"snikket.persistence.Sqlite.getMessagesAround","snikket/persistence/Sqlite.hx",433,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_438_getMessagesAround,"snikket.persistence.Sqlite","getMessagesAround",0x88f497ed,"snikket.persistence.Sqlite.getMessagesAround","snikket/persistence/Sqlite.hx",438,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_392_getMessages,"snikket.persistence.Sqlite","getMessages",0x6ba68b80,"snikket.persistence.Sqlite.getMessages","snikket/persistence/Sqlite.hx",392,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_405_getMessages,"snikket.persistence.Sqlite","getMessages",0x6ba68b80,"snikket.persistence.Sqlite.getMessages","snikket/persistence/Sqlite.hx",405,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_366_getMessages,"snikket.persistence.Sqlite","getMessages",0x6ba68b80,"snikket.persistence.Sqlite.getMessages","snikket/persistence/Sqlite.hx",366,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_410_getMessagesBefore,"snikket.persistence.Sqlite","getMessagesBefore",0x6d22f41f,"snikket.persistence.Sqlite.getMessagesBefore","snikket/persistence/Sqlite.hx",410,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_415_getMessagesAfter,"snikket.persistence.Sqlite","getMessagesAfter",0x143f9a7c,"snikket.persistence.Sqlite.getMessagesAfter","snikket/persistence/Sqlite.hx",415,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_431_getMessagesAround,"snikket.persistence.Sqlite","getMessagesAround",0x88f497ed,"snikket.persistence.Sqlite.getMessagesAround","snikket/persistence/Sqlite.hx",431,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_436_getMessagesAround,"snikket.persistence.Sqlite","getMessagesAround",0x88f497ed,"snikket.persistence.Sqlite.getMessagesAround","snikket/persistence/Sqlite.hx",436,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_419_getMessagesAround,"snikket.persistence.Sqlite","getMessagesAround",0x88f497ed,"snikket.persistence.Sqlite.getMessagesAround","snikket/persistence/Sqlite.hx",419,0x917a2510)
 HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_421_getMessagesAround,"snikket.persistence.Sqlite","getMessagesAround",0x88f497ed,"snikket.persistence.Sqlite.getMessagesAround","snikket/persistence/Sqlite.hx",421,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_423_getMessagesAround,"snikket.persistence.Sqlite","getMessagesAround",0x88f497ed,"snikket.persistence.Sqlite.getMessagesAround","snikket/persistence/Sqlite.hx",423,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_424_getMessagesAround,"snikket.persistence.Sqlite","getMessagesAround",0x88f497ed,"snikket.persistence.Sqlite.getMessagesAround","snikket/persistence/Sqlite.hx",424,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_427_getMessagesAround,"snikket.persistence.Sqlite","getMessagesAround",0x88f497ed,"snikket.persistence.Sqlite.getMessagesAround","snikket/persistence/Sqlite.hx",427,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_449_getChatsUnreadDetails,"snikket.persistence.Sqlite","getChatsUnreadDetails",0x81deee6c,"snikket.persistence.Sqlite.getChatsUnreadDetails","snikket/persistence/Sqlite.hx",449,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_422_getMessagesAround,"snikket.persistence.Sqlite","getMessagesAround",0x88f497ed,"snikket.persistence.Sqlite.getMessagesAround","snikket/persistence/Sqlite.hx",422,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_425_getMessagesAround,"snikket.persistence.Sqlite","getMessagesAround",0x88f497ed,"snikket.persistence.Sqlite.getMessagesAround","snikket/persistence/Sqlite.hx",425,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_447_getChatsUnreadDetails,"snikket.persistence.Sqlite","getChatsUnreadDetails",0x81deee6c,"snikket.persistence.Sqlite.getChatsUnreadDetails","snikket/persistence/Sqlite.hx",447,0x917a2510)
 static const ::String _hx_array_data_e415cb6c_88[] = {
 	HX_("SELECT chat_id, ROWID as row, MAX(created_at) AS created_at FROM messages WHERE account_id=?",d0,69,08,92),
 };
@@ -230,21 +233,21 @@ static const ::String _hx_array_data_e415cb6c_99[] = {
 static const ::String _hx_array_data_e415cb6c_100[] = {
 	HX_(") AND (subq.created_at IS NULL OR messages.created_at > subq.created_at OR (messages.created_at=subq.created_at AND messages.ROWID >= subq.row)) GROUP BY chat_id;",58,6f,52,ea),
 };
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_484_getChatsUnreadDetails,"snikket.persistence.Sqlite","getChatsUnreadDetails",0x81deee6c,"snikket.persistence.Sqlite.getChatsUnreadDetails","snikket/persistence/Sqlite.hx",484,0x917a2510)
 HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_486_getChatsUnreadDetails,"snikket.persistence.Sqlite","getChatsUnreadDetails",0x81deee6c,"snikket.persistence.Sqlite.getChatsUnreadDetails","snikket/persistence/Sqlite.hx",486,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_488_getChatsUnreadDetails,"snikket.persistence.Sqlite","getChatsUnreadDetails",0x81deee6c,"snikket.persistence.Sqlite.getChatsUnreadDetails","snikket/persistence/Sqlite.hx",488,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_487_getChatsUnreadDetails,"snikket.persistence.Sqlite","getChatsUnreadDetails",0x81deee6c,"snikket.persistence.Sqlite.getChatsUnreadDetails","snikket/persistence/Sqlite.hx",487,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_443_getChatsUnreadDetails,"snikket.persistence.Sqlite","getChatsUnreadDetails",0x81deee6c,"snikket.persistence.Sqlite.getChatsUnreadDetails","snikket/persistence/Sqlite.hx",443,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_512_storeReaction,"snikket.persistence.Sqlite","storeReaction",0x07446c28,"snikket.persistence.Sqlite.storeReaction","snikket/persistence/Sqlite.hx",512,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_503_storeReaction,"snikket.persistence.Sqlite","storeReaction",0x07446c28,"snikket.persistence.Sqlite.storeReaction","snikket/persistence/Sqlite.hx",503,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_522_updateMessageStatus,"snikket.persistence.Sqlite","updateMessageStatus",0xa0efb68e,"snikket.persistence.Sqlite.updateMessageStatus","snikket/persistence/Sqlite.hx",522,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_526_updateMessageStatus,"snikket.persistence.Sqlite","updateMessageStatus",0xa0efb68e,"snikket.persistence.Sqlite.updateMessageStatus","snikket/persistence/Sqlite.hx",526,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_533_updateMessageStatus,"snikket.persistence.Sqlite","updateMessageStatus",0xa0efb68e,"snikket.persistence.Sqlite.updateMessageStatus","snikket/persistence/Sqlite.hx",533,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_517_updateMessageStatus,"snikket.persistence.Sqlite","updateMessageStatus",0xa0efb68e,"snikket.persistence.Sqlite.updateMessageStatus","snikket/persistence/Sqlite.hx",517,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_541_hasMedia,"snikket.persistence.Sqlite","hasMedia",0x1738946c,"snikket.persistence.Sqlite.hasMedia","snikket/persistence/Sqlite.hx",541,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_546_removeMedia,"snikket.persistence.Sqlite","removeMedia",0x14a4d1fe,"snikket.persistence.Sqlite.removeMedia","snikket/persistence/Sqlite.hx",546,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_551_storeMedia,"snikket.persistence.Sqlite","storeMedia",0x8dec4b05,"snikket.persistence.Sqlite.storeMedia","snikket/persistence/Sqlite.hx",551,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_556_storeCaps,"snikket.persistence.Sqlite","storeCaps",0x986fb520,"snikket.persistence.Sqlite.storeCaps","snikket/persistence/Sqlite.hx",556,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_559_storeCapsSet,"snikket.persistence.Sqlite","storeCapsSet",0xcff59262,"snikket.persistence.Sqlite.storeCapsSet","snikket/persistence/Sqlite.hx",559,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_485_getChatsUnreadDetails,"snikket.persistence.Sqlite","getChatsUnreadDetails",0x81deee6c,"snikket.persistence.Sqlite.getChatsUnreadDetails","snikket/persistence/Sqlite.hx",485,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_441_getChatsUnreadDetails,"snikket.persistence.Sqlite","getChatsUnreadDetails",0x81deee6c,"snikket.persistence.Sqlite.getChatsUnreadDetails","snikket/persistence/Sqlite.hx",441,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_510_storeReaction,"snikket.persistence.Sqlite","storeReaction",0x07446c28,"snikket.persistence.Sqlite.storeReaction","snikket/persistence/Sqlite.hx",510,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_501_storeReaction,"snikket.persistence.Sqlite","storeReaction",0x07446c28,"snikket.persistence.Sqlite.storeReaction","snikket/persistence/Sqlite.hx",501,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_520_updateMessageStatus,"snikket.persistence.Sqlite","updateMessageStatus",0xa0efb68e,"snikket.persistence.Sqlite.updateMessageStatus","snikket/persistence/Sqlite.hx",520,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_524_updateMessageStatus,"snikket.persistence.Sqlite","updateMessageStatus",0xa0efb68e,"snikket.persistence.Sqlite.updateMessageStatus","snikket/persistence/Sqlite.hx",524,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_531_updateMessageStatus,"snikket.persistence.Sqlite","updateMessageStatus",0xa0efb68e,"snikket.persistence.Sqlite.updateMessageStatus","snikket/persistence/Sqlite.hx",531,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_515_updateMessageStatus,"snikket.persistence.Sqlite","updateMessageStatus",0xa0efb68e,"snikket.persistence.Sqlite.updateMessageStatus","snikket/persistence/Sqlite.hx",515,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_539_hasMedia,"snikket.persistence.Sqlite","hasMedia",0x1738946c,"snikket.persistence.Sqlite.hasMedia","snikket/persistence/Sqlite.hx",539,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_544_removeMedia,"snikket.persistence.Sqlite","removeMedia",0x14a4d1fe,"snikket.persistence.Sqlite.removeMedia","snikket/persistence/Sqlite.hx",544,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_549_storeMedia,"snikket.persistence.Sqlite","storeMedia",0x8dec4b05,"snikket.persistence.Sqlite.storeMedia","snikket/persistence/Sqlite.hx",549,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_554_storeCaps,"snikket.persistence.Sqlite","storeCaps",0x986fb520,"snikket.persistence.Sqlite.storeCaps","snikket/persistence/Sqlite.hx",554,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_557_storeCapsSet,"snikket.persistence.Sqlite","storeCapsSet",0xcff59262,"snikket.persistence.Sqlite.storeCapsSet","snikket/persistence/Sqlite.hx",557,0x917a2510)
 static const ::String _hx_array_data_e415cb6c_120[] = {
 	HX_("INSERT OR IGNORE INTO caps VALUES ",27,4b,68,bf),
 };
@@ -254,10 +257,10 @@ static const ::String _hx_array_data_e415cb6c_121[] = {
 static const ::String _hx_array_data_e415cb6c_122[] = {
 	HX_("(?,jsonb(?))",1c,61,06,9e),
 };
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_586_getCaps,"snikket.persistence.Sqlite","getCaps",0x487e64d5,"snikket.persistence.Sqlite.getCaps","snikket/persistence/Sqlite.hx",586,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_589_getCaps,"snikket.persistence.Sqlite","getCaps",0x487e64d5,"snikket.persistence.Sqlite.getCaps","snikket/persistence/Sqlite.hx",589,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_576_getCaps,"snikket.persistence.Sqlite","getCaps",0x487e64d5,"snikket.persistence.Sqlite.getCaps","snikket/persistence/Sqlite.hx",576,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_597_storeLogin,"snikket.persistence.Sqlite","storeLogin",0x01241f8a,"snikket.persistence.Sqlite.storeLogin","snikket/persistence/Sqlite.hx",597,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_584_getCaps,"snikket.persistence.Sqlite","getCaps",0x487e64d5,"snikket.persistence.Sqlite.getCaps","snikket/persistence/Sqlite.hx",584,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_587_getCaps,"snikket.persistence.Sqlite","getCaps",0x487e64d5,"snikket.persistence.Sqlite.getCaps","snikket/persistence/Sqlite.hx",587,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_574_getCaps,"snikket.persistence.Sqlite","getCaps",0x487e64d5,"snikket.persistence.Sqlite.getCaps","snikket/persistence/Sqlite.hx",574,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_595_storeLogin,"snikket.persistence.Sqlite","storeLogin",0x01241f8a,"snikket.persistence.Sqlite.storeLogin","snikket/persistence/Sqlite.hx",595,0x917a2510)
 static const ::String _hx_array_data_e415cb6c_128[] = {
 	HX_("INSERT INTO accounts (account_id, client_id, display_name",03,b0,6a,0b),
 };
@@ -285,22 +288,22 @@ static const ::String _hx_array_data_e415cb6c_135[] = {
 static const ::String _hx_array_data_e415cb6c_136[] = {
 	HX_(", fast_count=0",73,a8,4f,82),
 };
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_627_getLogin,"snikket.persistence.Sqlite","getLogin",0x5def2e35,"snikket.persistence.Sqlite.getLogin","snikket/persistence/Sqlite.hx",627,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_623_getLogin,"snikket.persistence.Sqlite","getLogin",0x5def2e35,"snikket.persistence.Sqlite.getLogin","snikket/persistence/Sqlite.hx",623,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_640_removeAccount,"snikket.persistence.Sqlite","removeAccount",0xd5e3c447,"snikket.persistence.Sqlite.removeAccount","snikket/persistence/Sqlite.hx",640,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_653_listAccounts,"snikket.persistence.Sqlite","listAccounts",0x83858fe6,"snikket.persistence.Sqlite.listAccounts","snikket/persistence/Sqlite.hx",653,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_652_listAccounts,"snikket.persistence.Sqlite","listAccounts",0x83858fe6,"snikket.persistence.Sqlite.listAccounts","snikket/persistence/Sqlite.hx",652,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_625_getLogin,"snikket.persistence.Sqlite","getLogin",0x5def2e35,"snikket.persistence.Sqlite.getLogin","snikket/persistence/Sqlite.hx",625,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_621_getLogin,"snikket.persistence.Sqlite","getLogin",0x5def2e35,"snikket.persistence.Sqlite.getLogin","snikket/persistence/Sqlite.hx",621,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_638_removeAccount,"snikket.persistence.Sqlite","removeAccount",0xd5e3c447,"snikket.persistence.Sqlite.removeAccount","snikket/persistence/Sqlite.hx",638,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_651_listAccounts,"snikket.persistence.Sqlite","listAccounts",0x83858fe6,"snikket.persistence.Sqlite.listAccounts","snikket/persistence/Sqlite.hx",651,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_650_listAccounts,"snikket.persistence.Sqlite","listAccounts",0x83858fe6,"snikket.persistence.Sqlite.listAccounts","snikket/persistence/Sqlite.hx",650,0x917a2510)
 HX_LOCAL_STACK_FRAME(_hx_pos_45dcb523da764b50_221_listAccounts__fromC,"snikket.persistence.Sqlite","listAccounts__fromC",0x29194953,"snikket.persistence.Sqlite.listAccounts__fromC","HaxeCBridge.hx",221,0xa18550d8)
 HX_LOCAL_STACK_FRAME(_hx_pos_45dcb523da764b50_252_listAccounts__fromC,"snikket.persistence.Sqlite","listAccounts__fromC",0x29194953,"snikket.persistence.Sqlite.listAccounts__fromC","HaxeCBridge.hx",252,0xa18550d8)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_660_storeStreamManagement,"snikket.persistence.Sqlite","storeStreamManagement",0x8a3c36a2,"snikket.persistence.Sqlite.storeStreamManagement","snikket/persistence/Sqlite.hx",660,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_667_storeStreamManagement,"snikket.persistence.Sqlite","storeStreamManagement",0x8a3c36a2,"snikket.persistence.Sqlite.storeStreamManagement","snikket/persistence/Sqlite.hx",667,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_676_getStreamManagement,"snikket.persistence.Sqlite","getStreamManagement",0xfe2e21d7,"snikket.persistence.Sqlite.getStreamManagement","snikket/persistence/Sqlite.hx",676,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_687_storeService,"snikket.persistence.Sqlite","storeService",0x2b93ec96,"snikket.persistence.Sqlite.storeService","snikket/persistence/Sqlite.hx",687,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_702_findServicesWithFeature,"snikket.persistence.Sqlite","findServicesWithFeature",0x83994397,"snikket.persistence.Sqlite.findServicesWithFeature","snikket/persistence/Sqlite.hx",702,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_699_findServicesWithFeature,"snikket.persistence.Sqlite","findServicesWithFeature",0x83994397,"snikket.persistence.Sqlite.findServicesWithFeature","snikket/persistence/Sqlite.hx",699,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_721_hydrateReactions,"snikket.persistence.Sqlite","hydrateReactions",0xe3b51cd9,"snikket.persistence.Sqlite.hydrateReactions","snikket/persistence/Sqlite.hx",721,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_749_fetchReactions,"snikket.persistence.Sqlite","fetchReactions",0x5819e3d2,"snikket.persistence.Sqlite.fetchReactions","snikket/persistence/Sqlite.hx",749,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_733_fetchReactions,"snikket.persistence.Sqlite","fetchReactions",0x5819e3d2,"snikket.persistence.Sqlite.fetchReactions","snikket/persistence/Sqlite.hx",733,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_658_storeStreamManagement,"snikket.persistence.Sqlite","storeStreamManagement",0x8a3c36a2,"snikket.persistence.Sqlite.storeStreamManagement","snikket/persistence/Sqlite.hx",658,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_665_storeStreamManagement,"snikket.persistence.Sqlite","storeStreamManagement",0x8a3c36a2,"snikket.persistence.Sqlite.storeStreamManagement","snikket/persistence/Sqlite.hx",665,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_674_getStreamManagement,"snikket.persistence.Sqlite","getStreamManagement",0xfe2e21d7,"snikket.persistence.Sqlite.getStreamManagement","snikket/persistence/Sqlite.hx",674,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_685_storeService,"snikket.persistence.Sqlite","storeService",0x2b93ec96,"snikket.persistence.Sqlite.storeService","snikket/persistence/Sqlite.hx",685,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_700_findServicesWithFeature,"snikket.persistence.Sqlite","findServicesWithFeature",0x83994397,"snikket.persistence.Sqlite.findServicesWithFeature","snikket/persistence/Sqlite.hx",700,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_697_findServicesWithFeature,"snikket.persistence.Sqlite","findServicesWithFeature",0x83994397,"snikket.persistence.Sqlite.findServicesWithFeature","snikket/persistence/Sqlite.hx",697,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_719_hydrateReactions,"snikket.persistence.Sqlite","hydrateReactions",0xe3b51cd9,"snikket.persistence.Sqlite.hydrateReactions","snikket/persistence/Sqlite.hx",719,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_747_fetchReactions,"snikket.persistence.Sqlite","fetchReactions",0x5819e3d2,"snikket.persistence.Sqlite.fetchReactions","snikket/persistence/Sqlite.hx",747,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_731_fetchReactions,"snikket.persistence.Sqlite","fetchReactions",0x5819e3d2,"snikket.persistence.Sqlite.fetchReactions","snikket/persistence/Sqlite.hx",731,0x917a2510)
 static const ::String _hx_array_data_e415cb6c_172[] = {
 	HX_("SELECT kind, chat_id, mam_id, mam_by, stanza_id, sender_id, json(reactions) AS reactions FROM reactions WHERE 1=0",d2,04,de,a3),
 };
@@ -313,19 +316,19 @@ static const ::String _hx_array_data_e415cb6c_174[] = {
 static const ::String _hx_array_data_e415cb6c_175[] = {
 	HX_(" ORDER BY created_at, ROWID",00,65,8d,0e),
 };
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_804_hydrateReplyTo,"snikket.persistence.Sqlite","hydrateReplyTo",0x94f407b4,"snikket.persistence.Sqlite.hydrateReplyTo","snikket/persistence/Sqlite.hx",804,0x917a2510)
 HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_806_hydrateReplyTo,"snikket.persistence.Sqlite","hydrateReplyTo",0x94f407b4,"snikket.persistence.Sqlite.hydrateReplyTo","snikket/persistence/Sqlite.hx",806,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_808_hydrateReplyTo,"snikket.persistence.Sqlite","hydrateReplyTo",0x94f407b4,"snikket.persistence.Sqlite.hydrateReplyTo","snikket/persistence/Sqlite.hx",808,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_786_hydrateReplyTo,"snikket.persistence.Sqlite","hydrateReplyTo",0x94f407b4,"snikket.persistence.Sqlite.hydrateReplyTo","snikket/persistence/Sqlite.hx",786,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_784_hydrateReplyTo,"snikket.persistence.Sqlite","hydrateReplyTo",0x94f407b4,"snikket.persistence.Sqlite.hydrateReplyTo","snikket/persistence/Sqlite.hx",784,0x917a2510)
 static const ::String _hx_array_data_e415cb6c_182[] = {
 	HX_("SELECT chat_id, stanza_id, stanza, direction, type, status, strftime('%FT%H:%M:%fZ', created_at / 1000.0, 'unixepoch') AS timestamp, sender_id, mam_id, mam_by, sync_point FROM messages WHERE account_id=? AND (",56,f2,9f,31),
 };
 static const ::String _hx_array_data_e415cb6c_183[] = {
 	HX_(")",29,00,00,00),
 };
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_820_hydrateMessages,"snikket.persistence.Sqlite","hydrateMessages",0xcda7e37d,"snikket.persistence.Sqlite.hydrateMessages","snikket/persistence/Sqlite.hx",820,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_823_hydrateMessages,"snikket.persistence.Sqlite","hydrateMessages",0xcda7e37d,"snikket.persistence.Sqlite.hydrateMessages","snikket/persistence/Sqlite.hx",823,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_853_hydrateMessages,"snikket.persistence.Sqlite","hydrateMessages",0xcda7e37d,"snikket.persistence.Sqlite.hydrateMessages","snikket/persistence/Sqlite.hx",853,0x917a2510)
-HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_843_hydrateMessages,"snikket.persistence.Sqlite","hydrateMessages",0xcda7e37d,"snikket.persistence.Sqlite.hydrateMessages","snikket/persistence/Sqlite.hx",843,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_818_hydrateMessages,"snikket.persistence.Sqlite","hydrateMessages",0xcda7e37d,"snikket.persistence.Sqlite.hydrateMessages","snikket/persistence/Sqlite.hx",818,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_821_hydrateMessages,"snikket.persistence.Sqlite","hydrateMessages",0xcda7e37d,"snikket.persistence.Sqlite.hydrateMessages","snikket/persistence/Sqlite.hx",821,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_851_hydrateMessages,"snikket.persistence.Sqlite","hydrateMessages",0xcda7e37d,"snikket.persistence.Sqlite.hydrateMessages","snikket/persistence/Sqlite.hx",851,0x917a2510)
+HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_841_hydrateMessages,"snikket.persistence.Sqlite","hydrateMessages",0xcda7e37d,"snikket.persistence.Sqlite.hydrateMessages","snikket/persistence/Sqlite.hx",841,0x917a2510)
 HX_LOCAL_STACK_FRAME(_hx_pos_5b1a6b524efab4db_24_boot,"snikket.persistence.Sqlite","boot",0x8e1f8074,"snikket.persistence.Sqlite.boot","snikket/persistence/Sqlite.hx",24,0x917a2510)
 namespace snikket{
 namespace persistence{
@@ -382,8 +385,8 @@ HXLINE(  38)			return ::thenshim::_Promise::Promise_Impl__obj::then(exec(::Array
             		HX_END_LOCAL_FUNC1(return)
 
             	HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_24_new)
-HXLINE( 658)		this->smStoreNext = null();
-HXLINE( 657)		this->smStoreInProgress = false;
+HXLINE( 656)		this->smStoreNext = null();
+HXLINE( 655)		this->smStoreInProgress = false;
 HXLINE( 171)		this->storeChatTimer = null();
 HXLINE( 170)		this->storeChatBuffer =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
 HXLINE(  36)		this->media = media;
@@ -562,17 +565,25 @@ HXDLIN( 187)						::String _g_key = key;
 HXDLIN( 187)						::String resource = _g_key;
 HXDLIN( 187)						 ::snikket::Presence presence = _g_value;
 HXDLIN( 187)						{
-HXLINE( 188)							{
+HXLINE( 188)							::String tmp = resource;
+HXDLIN( 188)							::String mapPresence;
+HXDLIN( 188)							if (::hx::IsNotNull( tmp )) {
+HXLINE( 188)								mapPresence = tmp;
+            							}
+            							else {
+HXLINE( 188)								mapPresence = HX_("",00,00,00,00);
+            							}
+HXDLIN( 188)							if (::hx::IsNull( ::Reflect_obj::field(storePresence,mapPresence) )) {
 HXLINE( 188)								 ::Dynamic value =  ::Dynamic(::hx::Anon_obj::Create(0));
-HXDLIN( 188)								::String tmp = resource;
-HXDLIN( 188)								::String mapPresence;
-HXDLIN( 188)								if (::hx::IsNotNull( tmp )) {
-HXLINE( 188)									mapPresence = tmp;
+HXDLIN( 188)								::String tmp1 = resource;
+HXDLIN( 188)								::String mapPresence1;
+HXDLIN( 188)								if (::hx::IsNotNull( tmp1 )) {
+HXLINE( 188)									mapPresence1 = tmp1;
             								}
             								else {
-HXLINE( 188)									mapPresence = HX_("",00,00,00,00);
+HXLINE( 188)									mapPresence1 = HX_("",00,00,00,00);
             								}
-HXDLIN( 188)								::Reflect_obj::setField(storePresence,mapPresence,value);
+HXDLIN( 188)								::Reflect_obj::setField(storePresence,mapPresence1,value);
             							}
 HXLINE( 189)							if (::hx::IsNotNull( presence->caps )) {
 HXLINE( 190)								{
@@ -580,26 +591,26 @@ HXLINE( 190)									::Array< unsigned char > k = presence->caps->verRaw()->hash
 HXDLIN( 190)									 ::snikket::Caps v = presence->caps;
 HXDLIN( 190)									caps->set(k,v);
             								}
-HXLINE( 191)								::String tmp1 = resource;
-HXDLIN( 191)								::String mapPresence1;
-HXDLIN( 191)								if (::hx::IsNotNull( tmp1 )) {
-HXLINE( 191)									mapPresence1 = tmp1;
+HXLINE( 191)								::String tmp2 = resource;
+HXDLIN( 191)								::String mapPresence2;
+HXDLIN( 191)								if (::hx::IsNotNull( tmp2 )) {
+HXLINE( 191)									mapPresence2 = tmp2;
             								}
             								else {
-HXLINE( 191)									mapPresence1 = HX_("",00,00,00,00);
+HXLINE( 191)									mapPresence2 = HX_("",00,00,00,00);
             								}
-HXDLIN( 191)								::Reflect_obj::field(storePresence,mapPresence1)->__SetField(HX_("caps",21,1c,ba,41),presence->caps->ver(),::hx::paccDynamic);
+HXDLIN( 191)								::Reflect_obj::field(storePresence,mapPresence2)->__SetField(HX_("caps",21,1c,ba,41),presence->caps->ver(),::hx::paccDynamic);
             							}
 HXLINE( 193)							if (::hx::IsNotNull( presence->mucUser )) {
-HXLINE( 194)								::String tmp2 = resource;
-HXDLIN( 194)								::String mapPresence2;
-HXDLIN( 194)								if (::hx::IsNotNull( tmp2 )) {
-HXLINE( 194)									mapPresence2 = tmp2;
+HXLINE( 194)								::String tmp3 = resource;
+HXDLIN( 194)								::String mapPresence3;
+HXDLIN( 194)								if (::hx::IsNotNull( tmp3 )) {
+HXLINE( 194)									mapPresence3 = tmp3;
             								}
             								else {
-HXLINE( 194)									mapPresence2 = HX_("",00,00,00,00);
+HXLINE( 194)									mapPresence3 = HX_("",00,00,00,00);
             								}
-HXDLIN( 194)								::Reflect_obj::field(storePresence,mapPresence2)->__SetField(HX_("mucUser",e6,f3,96,b5),presence->mucUser->toString(),::hx::paccDynamic);
+HXDLIN( 194)								::Reflect_obj::field(storePresence,mapPresence3)->__SetField(HX_("mucUser",e6,f3,96,b5),presence->mucUser->toString(),::hx::paccDynamic);
             							}
             						}
             					}
@@ -653,68 +664,68 @@ HXLINE( 206)							q->b->push(HX_("(?,?,?,?,?,?,?,?,?,?,?,jsonb(?),?,?,?,?)",4e,
             					}
             				}
             			}
-HXLINE( 209)			 ::snikket::persistence::SqliteDriver _gthis1 = _gthis->db;
-HXLINE( 210)			::String _hx_tmp = q->toString();
-HXLINE( 211)			::Array< ::Dynamic> _g = ::Array_obj< ::Dynamic>::__new(0);
-HXDLIN( 211)			{
-HXLINE( 211)				 ::Dynamic x = _gthis->storeChatBuffer->__Field(HX_("iterator",ee,49,9a,93),::hx::paccDynamic)();
-HXDLIN( 211)				while(( (bool)(x->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE( 211)					 ::snikket::Chat x1 = ( ( ::snikket::Chat)(x->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
-HXLINE( 212)					 ::snikket::Channel channel = ( ( ::snikket::Channel)(::Std_obj::downcast(x1,::hx::ClassOf< ::snikket::Channel >())) );
-HXLINE( 213)					if (::hx::IsNotNull( channel )) {
-HXLINE( 213)						_gthis->storeCaps(channel->disco);
-            					}
-HXLINE( 215)					::String accountId1 = accountId;
-HXDLIN( 215)					::String x2 = x1->chatId;
-HXDLIN( 215)					bool row = x1->isTrusted();
-HXDLIN( 215)					::Array< unsigned char > x3 = x1->avatarSha1;
-HXLINE( 216)					::String row1 = x1->getDisplayName();
-HXDLIN( 216)					int x4 = x1->uiState;
-HXDLIN( 216)					bool x5 = x1->isBlocked;
-HXLINE( 217)					::String row2 = x1->extensions->toString();
-HXDLIN( 217)					::String row3 = x1->readUpTo();
-HXDLIN( 217)					::String x6 = x1->readUpToBy;
-HXLINE( 218)					 ::snikket::Caps tmp;
-HXDLIN( 218)					if (::hx::IsNotNull( channel )) {
-HXLINE( 218)						tmp = channel->disco;
+HXLINE( 208)			 ::snikket::persistence::SqliteDriver _gthis1 = _gthis->db;
+HXLINE( 209)			::String _hx_tmp = q->toString();
+HXLINE( 210)			::Array< ::Dynamic> _g = ::Array_obj< ::Dynamic>::__new(0);
+HXDLIN( 210)			{
+HXLINE( 210)				 ::Dynamic x = _gthis->storeChatBuffer->__Field(HX_("iterator",ee,49,9a,93),::hx::paccDynamic)();
+HXDLIN( 210)				while(( (bool)(x->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE( 210)					 ::snikket::Chat x1 = ( ( ::snikket::Chat)(x->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
+HXLINE( 211)					 ::snikket::Channel channel = ( ( ::snikket::Channel)(::Std_obj::downcast(x1,::hx::ClassOf< ::snikket::Channel >())) );
+HXLINE( 212)					if (::hx::IsNotNull( channel )) {
+HXLINE( 212)						_gthis->storeCaps(channel->disco);
+            					}
+HXLINE( 214)					::String accountId1 = accountId;
+HXDLIN( 214)					::String x2 = x1->chatId;
+HXDLIN( 214)					bool row = x1->isTrusted();
+HXDLIN( 214)					::Array< unsigned char > x3 = x1->avatarSha1;
+HXLINE( 215)					::String row1 = x1->getDisplayName();
+HXDLIN( 215)					int x4 = x1->uiState;
+HXDLIN( 215)					bool x5 = x1->isBlocked;
+HXLINE( 216)					::String row2 = x1->extensions->toString();
+HXDLIN( 216)					::String row3 = x1->readUpTo();
+HXDLIN( 216)					::String x6 = x1->readUpToBy;
+HXLINE( 217)					 ::snikket::Caps tmp;
+HXDLIN( 217)					if (::hx::IsNotNull( channel )) {
+HXLINE( 217)						tmp = channel->disco;
             					}
             					else {
-HXLINE( 218)						tmp = null();
+HXLINE( 217)						tmp = null();
             					}
-HXDLIN( 218)					::Array< unsigned char > row4;
-HXDLIN( 218)					if (::hx::IsNotNull( tmp )) {
-HXLINE( 218)						row4 = tmp->verRaw()->hash;
+HXDLIN( 217)					::Array< unsigned char > row4;
+HXDLIN( 217)					if (::hx::IsNotNull( tmp )) {
+HXLINE( 217)						row4 = tmp->verRaw()->hash;
             					}
             					else {
-HXLINE( 218)						row4 = null();
-            					}
-HXDLIN( 218)					 ::Dynamic replacer = null();
-HXDLIN( 218)					::String space = null();
-HXDLIN( 218)					::String row5 = ::haxe::format::JsonPrinter_obj::print(mapPresence(x1),replacer,space);
-HXLINE( 219)					::String row6 = ( (::String)(::Type_obj::getClassName(::Type_obj::getClass(x1)).split(HX_(".",2e,00,00,00))->pop()) );
-HXLINE( 220)					bool row7 = x1->notificationsFiltered();
-HXDLIN( 220)					bool row8 = x1->notifyMention();
-HXLINE( 214)					::cpp::VirtualArray row9 = ::cpp::VirtualArray_obj::__new(16)->init(0,accountId1)->init(1,x2)->init(2,row)->init(3,x3)->init(4,row1)->init(5,x4)->init(6,x5)->init(7,row2)->init(8,row3)->init(9,x6)->init(10,row4)->init(11,row5)->init(12,row6)->init(13,row7)->init(14,row8)->init(15,x1->notifyReply());
-HXLINE( 211)					_g->push(row9);
-            				}
-            			}
-HXDLIN( 211)			::cpp::VirtualArray _g1 = ::cpp::VirtualArray_obj::__new(0);
-HXDLIN( 211)			{
-HXLINE( 211)				 ::Dynamic e = _g->__Field(HX_("iterator",ee,49,9a,93),::hx::paccDynamic)();
-HXDLIN( 211)				while(( (bool)(e->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE( 211)					 ::Dynamic e1 = e->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)();
-HXDLIN( 211)					{
-HXLINE( 211)						 ::Dynamic x7 = e1->__Field(HX_("iterator",ee,49,9a,93),::hx::paccDynamic)();
-HXDLIN( 211)						while(( (bool)(x7->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE( 211)							 ::Dynamic x8 = x7->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)();
-HXDLIN( 211)							_g1->push(x8);
+HXLINE( 217)						row4 = null();
+            					}
+HXDLIN( 217)					 ::Dynamic replacer = null();
+HXDLIN( 217)					::String space = null();
+HXDLIN( 217)					::String row5 = ::haxe::format::JsonPrinter_obj::print(mapPresence(x1),replacer,space);
+HXLINE( 218)					::String row6 = ( (::String)(::Type_obj::getClassName(::Type_obj::getClass(x1)).split(HX_(".",2e,00,00,00))->pop()) );
+HXLINE( 219)					bool row7 = x1->notificationsFiltered();
+HXDLIN( 219)					bool row8 = x1->notifyMention();
+HXLINE( 213)					::cpp::VirtualArray row9 = ::cpp::VirtualArray_obj::__new(16)->init(0,accountId1)->init(1,x2)->init(2,row)->init(3,x3)->init(4,row1)->init(5,x4)->init(6,x5)->init(7,row2)->init(8,row3)->init(9,x6)->init(10,row4)->init(11,row5)->init(12,row6)->init(13,row7)->init(14,row8)->init(15,x1->notifyReply());
+HXLINE( 210)					_g->push(row9);
+            				}
+            			}
+HXDLIN( 210)			::cpp::VirtualArray _g1 = ::cpp::VirtualArray_obj::__new(0);
+HXDLIN( 210)			{
+HXLINE( 210)				 ::Dynamic e = _g->__Field(HX_("iterator",ee,49,9a,93),::hx::paccDynamic)();
+HXDLIN( 210)				while(( (bool)(e->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE( 210)					 ::Dynamic e1 = e->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)();
+HXDLIN( 210)					{
+HXLINE( 210)						 ::Dynamic x7 = e1->__Field(HX_("iterator",ee,49,9a,93),::hx::paccDynamic)();
+HXDLIN( 210)						while(( (bool)(x7->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE( 210)							 ::Dynamic x8 = x7->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)();
+HXDLIN( 210)							_g1->push(x8);
             						}
             					}
             				}
             			}
-HXLINE( 209)			_gthis1->exec(_hx_tmp,_g1);
+HXLINE( 208)			_gthis1->exec(_hx_tmp,_g1);
+HXLINE( 224)			_gthis->storeChatTimer = null();
 HXLINE( 225)			_gthis->storeChatBuffer->clear();
-HXLINE( 226)			_gthis->storeChatTimer = null();
             		}
             		HX_END_LOCAL_FUNC0((void))
 
@@ -742,187 +753,193 @@ void Sqlite_obj::getChats(::String accountId, ::Dynamic callback){
             		::Dynamic _hx_run( ::haxe::iterators::ArrayIterator result){
             			HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_1, ::haxe::ds::ObjectMap,fetchCaps) HXARGC(0)
             			 ::Dynamic _hx_run(){
-            				HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_248_getChats)
-HXLINE( 248)				return fetchCaps->keys();
+            				HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_247_getChats)
+HXLINE( 247)				return fetchCaps->keys();
             			}
             			HX_END_LOCAL_FUNC0(return)
 
             			HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_2,::cpp::VirtualArray,chats) HXARGC(1)
             			 ::Dynamic _hx_run( ::haxe::iterators::ArrayIterator capsResult){
-            				HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_252_getChats)
-HXLINE( 252)				return  ::Dynamic(::hx::Anon_obj::Create(2)
+            				HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_251_getChats)
+HXLINE( 251)				return  ::Dynamic(::hx::Anon_obj::Create(2)
             					->setFixed(0,HX_("caps",21,1c,ba,41),capsResult)
             					->setFixed(1,HX_("chats",9b,9e,b3,45),chats));
             			}
             			HX_END_LOCAL_FUNC1(return)
 
-            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_235_getChats)
-HXLINE( 236)			 ::haxe::ds::ObjectMap fetchCaps =  ::haxe::ds::ObjectMap_obj::__alloc( HX_CTX );
-HXLINE( 237)			::cpp::VirtualArray chats = ::cpp::VirtualArray_obj::__new(0);
-HXLINE( 238)			{
-HXLINE( 238)				 ::haxe::iterators::ArrayIterator _g = result;
-HXDLIN( 238)				while((_g->current < _g->array->get_length())){
-HXLINE( 238)					 ::Dynamic row = _g->array->__get(_g->current++);
-HXLINE( 239)					 ::Dynamic capsJson;
-HXDLIN( 239)					if (::hx::IsNull( row->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic) )) {
-HXLINE( 239)						capsJson = null();
+            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_234_getChats)
+HXLINE( 235)			 ::haxe::ds::ObjectMap fetchCaps =  ::haxe::ds::ObjectMap_obj::__alloc( HX_CTX );
+HXLINE( 236)			::cpp::VirtualArray chats = ::cpp::VirtualArray_obj::__new(0);
+HXLINE( 237)			{
+HXLINE( 237)				 ::haxe::iterators::ArrayIterator _g = result;
+HXDLIN( 237)				while((_g->current < _g->array->get_length())){
+HXLINE( 237)					 ::Dynamic row = _g->array->__get(_g->current++);
+HXLINE( 238)					 ::Dynamic capsJson;
+HXDLIN( 238)					if (::hx::IsNull( row->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic) )) {
+HXLINE( 238)						capsJson = null();
             					}
             					else {
-HXLINE( 239)						capsJson =  ::haxe::format::JsonParser_obj::__alloc( HX_CTX ,( (::String)(row->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic)) ))->doParse();
+HXLINE( 238)						capsJson =  ::haxe::format::JsonParser_obj::__alloc( HX_CTX ,( (::String)(row->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic)) ))->doParse();
             					}
-HXLINE( 240)					 ::snikket::Caps _hx_tmp;
-HXDLIN( 240)					if (::hx::IsNull( capsJson )) {
-HXLINE( 240)						_hx_tmp = null();
+HXLINE( 239)					 ::snikket::Caps _hx_tmp;
+HXDLIN( 239)					if (::hx::IsNull( capsJson )) {
+HXLINE( 239)						_hx_tmp = null();
             					}
             					else {
             						HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             						 ::snikket::Identity _hx_run( ::Dynamic i){
-            							HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_240_getChats)
-HXLINE( 240)							return  ::snikket::Identity_obj::__alloc( HX_CTX ,( (::String)(i->__Field(HX_("category",fe,2a,6c,ad),::hx::paccDynamic)) ),( (::String)(i->__Field(HX_("type",ba,f2,08,4d),::hx::paccDynamic)) ),( (::String)(i->__Field(HX_("name",4b,72,ff,48),::hx::paccDynamic)) ));
+            							HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_239_getChats)
+HXLINE( 239)							return  ::snikket::Identity_obj::__alloc( HX_CTX ,( (::String)(i->__Field(HX_("category",fe,2a,6c,ad),::hx::paccDynamic)) ),( (::String)(i->__Field(HX_("type",ba,f2,08,4d),::hx::paccDynamic)) ),( (::String)(i->__Field(HX_("name",4b,72,ff,48),::hx::paccDynamic)) ));
             						}
             						HX_END_LOCAL_FUNC1(return)
 
-HXLINE( 240)						::String capsJson1 = ( (::String)(capsJson->__Field(HX_("node",02,0a,0a,49),::hx::paccDynamic)) );
-HXDLIN( 240)						::Array< ::Dynamic> _hx_tmp1 = ( (::Array< ::Dynamic>)( ::Dynamic(capsJson->__Field(HX_("identities",1c,c5,6d,d7),::hx::paccDynamic))->__Field(HX_("map",9c,0a,53,00),::hx::paccDynamic)( ::Dynamic(new _hx_Closure_0()), ::Dynamic(row->__Field(HX_("caps_ver",05,68,56,1e),::hx::paccDynamic)))) );
-HXDLIN( 240)						_hx_tmp =  ::snikket::Caps_obj::__alloc( HX_CTX ,capsJson1,_hx_tmp1,( (::Array< ::String >)(capsJson->__Field(HX_("features",fd,6c,d7,12),::hx::paccDynamic)) ),null());
-            					}
-HXDLIN( 240)					row->__SetField(HX_("capsObj",56,b6,8b,a6),_hx_tmp,::hx::paccDynamic);
-HXLINE( 241)					 ::Dynamic presenceJson =  ::haxe::format::JsonParser_obj::__alloc( HX_CTX ,( (::String)(row->__Field(HX_("presence",3b,52,d7,66),::hx::paccDynamic)) ))->doParse();
-HXLINE( 242)					row->__SetField(HX_("presenceJson",03,fa,cd,23),presenceJson,::hx::paccDynamic);
-HXLINE( 243)					{
-HXLINE( 243)						 ::Dynamic access = presenceJson;
-HXDLIN( 243)						 ::Dynamic _g_access = access;
-HXDLIN( 243)						::Array< ::String > _g_keys = ::Reflect_obj::fields(access);
-HXDLIN( 243)						int _g_index = 0;
-HXDLIN( 243)						while((_g_index < _g_keys->length)){
-HXLINE( 243)							_g_index = (_g_index + 1);
-HXDLIN( 243)							::String key = _g_keys->__get((_g_index - 1));
-HXDLIN( 243)							 ::Dynamic _g_value = ::Reflect_obj::field(_g_access,key);
-HXDLIN( 243)							::String _g_key = key;
-HXDLIN( 243)							::String resource = _g_key;
-HXDLIN( 243)							 ::Dynamic presence = _g_value;
-HXLINE( 244)							if (( (bool)(presence->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic)) )) {
-HXLINE( 244)								::Array< unsigned char > k = ::haxe::crypto::Base64_obj::decode(( (::String)(presence->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic)) ),null())->b;
-HXDLIN( 244)								fetchCaps->set(k,true);
+HXLINE( 239)						::String capsJson1 = ( (::String)(capsJson->__Field(HX_("node",02,0a,0a,49),::hx::paccDynamic)) );
+HXDLIN( 239)						::Array< ::Dynamic> _hx_tmp1 = ( (::Array< ::Dynamic>)( ::Dynamic(capsJson->__Field(HX_("identities",1c,c5,6d,d7),::hx::paccDynamic))->__Field(HX_("map",9c,0a,53,00),::hx::paccDynamic)( ::Dynamic(new _hx_Closure_0()), ::Dynamic(row->__Field(HX_("caps_ver",05,68,56,1e),::hx::paccDynamic)))) );
+HXDLIN( 239)						_hx_tmp =  ::snikket::Caps_obj::__alloc( HX_CTX ,capsJson1,_hx_tmp1,( (::Array< ::String >)(capsJson->__Field(HX_("features",fd,6c,d7,12),::hx::paccDynamic)) ),null());
+            					}
+HXDLIN( 239)					row->__SetField(HX_("capsObj",56,b6,8b,a6),_hx_tmp,::hx::paccDynamic);
+HXLINE( 240)					 ::Dynamic presenceJson =  ::haxe::format::JsonParser_obj::__alloc( HX_CTX ,( (::String)(row->__Field(HX_("presence",3b,52,d7,66),::hx::paccDynamic)) ))->doParse();
+HXLINE( 241)					row->__SetField(HX_("presenceJson",03,fa,cd,23),presenceJson,::hx::paccDynamic);
+HXLINE( 242)					{
+HXLINE( 242)						 ::Dynamic access = presenceJson;
+HXDLIN( 242)						 ::Dynamic _g_access = access;
+HXDLIN( 242)						::Array< ::String > _g_keys = ::Reflect_obj::fields(access);
+HXDLIN( 242)						int _g_index = 0;
+HXDLIN( 242)						while((_g_index < _g_keys->length)){
+HXLINE( 242)							_g_index = (_g_index + 1);
+HXDLIN( 242)							::String key = _g_keys->__get((_g_index - 1));
+HXDLIN( 242)							 ::Dynamic _g_value = ::Reflect_obj::field(_g_access,key);
+HXDLIN( 242)							::String _g_key = key;
+HXDLIN( 242)							::String resource = _g_key;
+HXDLIN( 242)							 ::Dynamic presence = _g_value;
+HXLINE( 243)							if (::hx::IsNotNull( presence->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic) )) {
+HXLINE( 243)								::Array< unsigned char > k = ::haxe::crypto::Base64_obj::decode(( (::String)(presence->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic)) ),null())->b;
+HXDLIN( 243)								fetchCaps->set(k,true);
             							}
             						}
             					}
-HXLINE( 246)					chats->push(row);
+HXLINE( 245)					chats->push(row);
             				}
             			}
-HXLINE( 248)			::Array< ::Dynamic> fetchCapsSha1s = ::Lambda_obj::array( ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE( 247)			::Array< ::Dynamic> fetchCapsSha1s = ::Lambda_obj::array( ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("iterator",ee,49,9a,93), ::Dynamic(new _hx_Closure_1(fetchCaps)))));
-HXLINE( 249)			 ::snikket::persistence::SqliteDriver _gthis1 = _gthis->db;
-HXLINE( 250)			::Array< ::String > result1 = ::Array_obj< ::String >::__new(fetchCapsSha1s->length);
-HXDLIN( 250)			{
-HXLINE( 250)				int _g1 = 0;
-HXDLIN( 250)				int _g2 = fetchCapsSha1s->length;
-HXDLIN( 250)				while((_g1 < _g2)){
-HXLINE( 250)					_g1 = (_g1 + 1);
-HXDLIN( 250)					int i = (_g1 - 1);
-HXDLIN( 250)					{
-HXLINE( 250)						::Array< unsigned char > _ = ( (::Array< unsigned char >)(_hx_array_unsafe_get(fetchCapsSha1s,i)) );
-HXDLIN( 250)						result1->__unsafe_set(i,HX_("?",3f,00,00,00));
+HXLINE( 248)			 ::snikket::persistence::SqliteDriver _gthis1 = _gthis->db;
+HXLINE( 249)			::Array< ::String > result1 = ::Array_obj< ::String >::__new(fetchCapsSha1s->length);
+HXDLIN( 249)			{
+HXLINE( 249)				int _g1 = 0;
+HXDLIN( 249)				int _g2 = fetchCapsSha1s->length;
+HXDLIN( 249)				while((_g1 < _g2)){
+HXLINE( 249)					_g1 = (_g1 + 1);
+HXDLIN( 249)					int i = (_g1 - 1);
+HXDLIN( 249)					{
+HXLINE( 249)						::Array< unsigned char > _ = ( (::Array< unsigned char >)(_hx_array_unsafe_get(fetchCapsSha1s,i)) );
+HXDLIN( 249)						result1->__unsafe_set(i,HX_("?",3f,00,00,00));
             					}
             				}
             			}
-HXLINE( 249)			return ::thenshim::_Promise::Promise_Impl__obj::then(_gthis1->exec(((HX_("SELECT sha1, json(caps) AS caps FROM caps WHERE sha1 IN (",5a,e4,9c,e2) + result1->join(HX_(",",2c,00,00,00))) + HX_(")",29,00,00,00)),fetchCapsSha1s), ::Dynamic(new _hx_Closure_2(chats)),null());
+HXLINE( 248)			return ::thenshim::_Promise::Promise_Impl__obj::then(_gthis1->exec(((HX_("SELECT sha1, json(caps) AS caps FROM caps WHERE sha1 IN (",5a,e4,9c,e2) + result1->join(HX_(",",2c,00,00,00))) + HX_(")",29,00,00,00)),fetchCapsSha1s), ::Dynamic(new _hx_Closure_2(chats)),null());
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_5) HXARGC(1)
             		::Array< ::Dynamic> _hx_run( ::Dynamic result){
-            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_253_getChats)
-HXLINE( 254)			 ::haxe::ds::StringMap capsMap =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
-HXLINE( 255)			{
-HXLINE( 255)				 ::haxe::iterators::ArrayIterator _g = ( ( ::haxe::iterators::ArrayIterator)(result->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic)) );
-HXDLIN( 255)				while((_g->current < _g->array->get_length())){
-HXLINE( 255)					 ::Dynamic row = _g->array->__get(_g->current++);
-HXLINE( 256)					 ::Dynamic json =  ::haxe::format::JsonParser_obj::__alloc( HX_CTX ,( (::String)(row->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic)) ))->doParse();
-HXLINE( 257)					{
+            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_252_getChats)
+HXLINE( 253)			 ::haxe::ds::StringMap capsMap =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
+HXLINE( 254)			{
+HXLINE( 254)				 ::haxe::iterators::ArrayIterator _g = ( ( ::haxe::iterators::ArrayIterator)(result->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic)) );
+HXDLIN( 254)				while((_g->current < _g->array->get_length())){
+HXLINE( 254)					 ::Dynamic row = _g->array->__get(_g->current++);
+HXLINE( 255)					 ::Dynamic json =  ::haxe::format::JsonParser_obj::__alloc( HX_CTX ,( (::String)(row->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic)) ))->doParse();
+HXLINE( 256)					{
             						HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_4) HXARGC(1)
             						 ::snikket::Identity _hx_run( ::Dynamic i){
-            							HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_257_getChats)
-HXLINE( 257)							return  ::snikket::Identity_obj::__alloc( HX_CTX ,( (::String)(i->__Field(HX_("category",fe,2a,6c,ad),::hx::paccDynamic)) ),( (::String)(i->__Field(HX_("type",ba,f2,08,4d),::hx::paccDynamic)) ),( (::String)(i->__Field(HX_("name",4b,72,ff,48),::hx::paccDynamic)) ));
+            							HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_256_getChats)
+HXLINE( 256)							return  ::snikket::Identity_obj::__alloc( HX_CTX ,( (::String)(i->__Field(HX_("category",fe,2a,6c,ad),::hx::paccDynamic)) ),( (::String)(i->__Field(HX_("type",ba,f2,08,4d),::hx::paccDynamic)) ),( (::String)(i->__Field(HX_("name",4b,72,ff,48),::hx::paccDynamic)) ));
             						}
             						HX_END_LOCAL_FUNC1(return)
 
-HXLINE( 257)						::String k = ::haxe::crypto::Base64_obj::encode(::haxe::io::Bytes_obj::ofData(( (::Array< unsigned char >)(row->__Field(HX_("sha1",85,c8,52,4c),::hx::paccDynamic)) )),null());
-HXDLIN( 257)						::String json1 = ( (::String)(json->__Field(HX_("node",02,0a,0a,49),::hx::paccDynamic)) );
-HXDLIN( 257)						::Array< ::Dynamic> v = ( (::Array< ::Dynamic>)( ::Dynamic(json->__Field(HX_("identities",1c,c5,6d,d7),::hx::paccDynamic))->__Field(HX_("map",9c,0a,53,00),::hx::paccDynamic)( ::Dynamic(new _hx_Closure_4()), ::Dynamic(row->__Field(HX_("sha1",85,c8,52,4c),::hx::paccDynamic)))) );
-HXDLIN( 257)						 ::snikket::Caps v1 =  ::snikket::Caps_obj::__alloc( HX_CTX ,json1,v,( (::Array< ::String >)(json->__Field(HX_("features",fd,6c,d7,12),::hx::paccDynamic)) ),null());
-HXDLIN( 257)						capsMap->set(k,v1);
-            					}
-            				}
-            			}
-HXLINE( 259)			result->__SetField(HX_("caps",21,1c,ba,41),null(),::hx::paccDynamic);
-HXLINE( 260)			::Array< ::Dynamic> chats = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 261)			 ::Dynamic row1 = null();
-HXLINE( 262)			while(true){
-HXLINE( 262)				row1 = ( (::cpp::VirtualArray)(result->__Field(HX_("chats",9b,9e,b3,45),::hx::paccDynamic)) )->pop();
-HXDLIN( 262)				if (!(::hx::IsNotNull( row1 ))) {
-HXLINE( 262)					goto _hx_goto_33;
-            				}
-HXLINE( 263)				 ::haxe::ds::StringMap presenceMap =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
-HXLINE( 264)				 ::haxe::ds::StringMap parsedMucUsers =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
-HXLINE( 265)				 ::Dynamic presenceJson =  ::Dynamic(row1->__Field(HX_("presenceJson",03,fa,cd,23),::hx::paccDynamic));
-HXLINE( 266)				{
-HXLINE( 266)					int _g1 = 0;
-HXDLIN( 266)					::Array< ::String > _g2 = ::Reflect_obj::fields(presenceJson);
-HXDLIN( 266)					while((_g1 < _g2->length)){
-HXLINE( 266)						::String resource = _g2->__get(_g1);
-HXDLIN( 266)						_g1 = (_g1 + 1);
-HXLINE( 267)						 ::Dynamic presence = ::Reflect_obj::field(presenceJson,resource);
-HXLINE( 268)						::Reflect_obj::deleteField(presenceJson,resource);
-HXLINE( 269)						{
-HXLINE( 270)							 ::snikket::Caps v2;
-HXDLIN( 270)							if (::hx::IsNull( presence->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic) )) {
-HXLINE( 270)								v2 = null();
+HXLINE( 256)						::String k = ::haxe::crypto::Base64_obj::encode(::haxe::io::Bytes_obj::ofData(( (::Array< unsigned char >)(row->__Field(HX_("sha1",85,c8,52,4c),::hx::paccDynamic)) )),null());
+HXDLIN( 256)						::String json1 = ( (::String)(json->__Field(HX_("node",02,0a,0a,49),::hx::paccDynamic)) );
+HXDLIN( 256)						::Array< ::Dynamic> v = ( (::Array< ::Dynamic>)( ::Dynamic(json->__Field(HX_("identities",1c,c5,6d,d7),::hx::paccDynamic))->__Field(HX_("map",9c,0a,53,00),::hx::paccDynamic)( ::Dynamic(new _hx_Closure_4()), ::Dynamic(row->__Field(HX_("sha1",85,c8,52,4c),::hx::paccDynamic)))) );
+HXDLIN( 256)						 ::snikket::Caps v1 =  ::snikket::Caps_obj::__alloc( HX_CTX ,json1,v,( (::Array< ::String >)(json->__Field(HX_("features",fd,6c,d7,12),::hx::paccDynamic)) ),null());
+HXDLIN( 256)						capsMap->set(k,v1);
+            					}
+            				}
+            			}
+HXLINE( 258)			result->__SetField(HX_("caps",21,1c,ba,41),null(),::hx::paccDynamic);
+HXLINE( 259)			::Array< ::Dynamic> chats = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 260)			 ::Dynamic row1 = null();
+HXLINE( 261)			while(true){
+HXLINE( 261)				row1 = ( (::cpp::VirtualArray)(result->__Field(HX_("chats",9b,9e,b3,45),::hx::paccDynamic)) )->pop();
+HXDLIN( 261)				if (!(::hx::IsNotNull( row1 ))) {
+HXLINE( 261)					goto _hx_goto_33;
+            				}
+HXLINE( 262)				 ::haxe::ds::StringMap presenceMap =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
+HXLINE( 263)				 ::Dynamic presenceJson =  ::Dynamic(row1->__Field(HX_("presenceJson",03,fa,cd,23),::hx::paccDynamic));
+HXLINE( 264)				{
+HXLINE( 264)					int _g1 = 0;
+HXDLIN( 264)					::Array< ::String > _g2 = ::Reflect_obj::fields(presenceJson);
+HXDLIN( 264)					while((_g1 < _g2->length)){
+HXLINE( 264)						::String resource = _g2->__get(_g1);
+HXDLIN( 264)						_g1 = (_g1 + 1);
+HXLINE( 265)						 ::Dynamic presence = ::Reflect_obj::field(presenceJson,resource);
+HXLINE( 266)						::Reflect_obj::deleteField(presenceJson,resource);
+HXLINE( 267)						{
+HXLINE( 268)							 ::snikket::Caps v2;
+HXDLIN( 268)							if (::hx::IsNull( presence->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic) )) {
+HXLINE( 268)								v2 = null();
+            							}
+            							else {
+HXLINE( 268)								v2 = ( ( ::snikket::Caps)(capsMap->get(( (::String)(presence->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic)) ))) );
+            							}
+HXLINE( 269)							 ::snikket::Stanza v3;
+HXDLIN( 269)							bool v4;
+HXDLIN( 269)							if (::hx::IsNotNull( presence->__Field(HX_("mucUser",e6,f3,96,b5),::hx::paccDynamic) )) {
+HXLINE( 269)								v4 = ::snikket::Config_obj::constrainedMemoryMode;
             							}
             							else {
-HXLINE( 270)								v2 = ( ( ::snikket::Caps)(capsMap->get(( (::String)(presence->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic)) ))) );
+HXLINE( 269)								v4 = true;
             							}
-HXLINE( 271)							 ::snikket::Stanza v3;
-HXDLIN( 271)							if (::hx::IsNull( presence->__Field(HX_("mucUser",e6,f3,96,b5),::hx::paccDynamic) )) {
-HXLINE( 271)								v3 = null();
+HXDLIN( 269)							if (v4) {
+HXLINE( 269)								v3 = null();
             							}
             							else {
-HXLINE( 271)								v3 = ::snikket::Stanza_obj::parse(( (::String)(presence->__Field(HX_("mucUser",e6,f3,96,b5),::hx::paccDynamic)) ));
+HXLINE( 269)								v3 = ::snikket::Stanza_obj::parse(( (::String)(presence->__Field(HX_("mucUser",e6,f3,96,b5),::hx::paccDynamic)) ));
             							}
-HXLINE( 269)							 ::snikket::Presence v4 =  ::snikket::Presence_obj::__alloc( HX_CTX ,v2,v3);
-HXDLIN( 269)							presenceMap->set(resource,v4);
+HXLINE( 267)							 ::snikket::Presence v5 =  ::snikket::Presence_obj::__alloc( HX_CTX ,v2,v3);
+HXDLIN( 267)							presenceMap->set(resource,v5);
             						}
             					}
             				}
-HXLINE( 274)				::String row2 = ( (::String)(row1->__Field(HX_("chat_id",22,ea,bd,d0),::hx::paccDynamic)) );
-HXDLIN( 274)				bool _hx_tmp = ::hx::IsNotEq( row1->__Field(HX_("trusted",f7,b7,a6,16),::hx::paccDynamic),0 );
-HXDLIN( 274)				::Array< unsigned char > row3 = ( (::Array< unsigned char >)(row1->__Field(HX_("avatar_sha1",ab,69,a3,a4),::hx::paccDynamic)) );
-HXDLIN( 274)				::String row4 = ( (::String)(row1->__Field(HX_("fn",48,59,00,00),::hx::paccDynamic)) );
-HXDLIN( 274)				 ::Dynamic row5 = row1->__Field(HX_("ui_state",a6,9a,4e,b2),::hx::paccDynamic);
-HXDLIN( 274)				bool _hx_tmp1 = ::hx::IsNotEq( row1->__Field(HX_("blocked",ec,7a,fe,44),::hx::paccDynamic),0 );
-HXDLIN( 274)				::String row6 = ( (::String)(row1->__Field(HX_("extensions",14,7c,70,89),::hx::paccDynamic)) );
-HXDLIN( 274)				::String row7 = ( (::String)(row1->__Field(HX_("read_up_to_id",84,60,ad,9e),::hx::paccDynamic)) );
-HXDLIN( 274)				::String row8 = ( (::String)(row1->__Field(HX_("read_up_to_by",80,5a,ad,9e),::hx::paccDynamic)) );
-HXDLIN( 274)				 ::Dynamic _hx_tmp2;
-HXDLIN( 274)				if (::hx::IsNull( row1->__Field(HX_("notifications_filtered",4e,91,57,51),::hx::paccDynamic) )) {
-HXLINE( 274)					_hx_tmp2 = null();
+HXLINE( 272)				::String row2 = ( (::String)(row1->__Field(HX_("chat_id",22,ea,bd,d0),::hx::paccDynamic)) );
+HXDLIN( 272)				bool _hx_tmp = ::hx::IsNotEq( row1->__Field(HX_("trusted",f7,b7,a6,16),::hx::paccDynamic),0 );
+HXDLIN( 272)				::Array< unsigned char > row3 = ( (::Array< unsigned char >)(row1->__Field(HX_("avatar_sha1",ab,69,a3,a4),::hx::paccDynamic)) );
+HXDLIN( 272)				::String row4 = ( (::String)(row1->__Field(HX_("fn",48,59,00,00),::hx::paccDynamic)) );
+HXDLIN( 272)				 ::Dynamic row5 = row1->__Field(HX_("ui_state",a6,9a,4e,b2),::hx::paccDynamic);
+HXDLIN( 272)				bool _hx_tmp1 = ::hx::IsNotEq( row1->__Field(HX_("blocked",ec,7a,fe,44),::hx::paccDynamic),0 );
+HXDLIN( 272)				::String row6 = ( (::String)(row1->__Field(HX_("extensions",14,7c,70,89),::hx::paccDynamic)) );
+HXDLIN( 272)				::String row7 = ( (::String)(row1->__Field(HX_("read_up_to_id",84,60,ad,9e),::hx::paccDynamic)) );
+HXDLIN( 272)				::String row8 = ( (::String)(row1->__Field(HX_("read_up_to_by",80,5a,ad,9e),::hx::paccDynamic)) );
+HXDLIN( 272)				 ::Dynamic _hx_tmp2;
+HXDLIN( 272)				if (::hx::IsNull( row1->__Field(HX_("notifications_filtered",4e,91,57,51),::hx::paccDynamic) )) {
+HXLINE( 272)					_hx_tmp2 = null();
             				}
             				else {
-HXLINE( 274)					_hx_tmp2 = ::hx::IsNotEq( row1->__Field(HX_("notifications_filtered",4e,91,57,51),::hx::paccDynamic),0 );
+HXLINE( 272)					_hx_tmp2 = ::hx::IsNotEq( row1->__Field(HX_("notifications_filtered",4e,91,57,51),::hx::paccDynamic),0 );
             				}
-HXDLIN( 274)				bool _hx_tmp3 = ::hx::IsNotEq( row1->__Field(HX_("notify_mention",34,44,26,d0),::hx::paccDynamic),0 );
-HXDLIN( 274)				bool _hx_tmp4 = ::hx::IsNotEq( row1->__Field(HX_("notify_reply",f4,e7,df,1b),::hx::paccDynamic),0 );
-HXDLIN( 274)				 ::snikket::Caps row9 = ( ( ::snikket::Caps)(row1->__Field(HX_("capsObj",56,b6,8b,a6),::hx::paccDynamic)) );
-HXDLIN( 274)				chats->push( ::snikket::SerializedChat_obj::__alloc( HX_CTX ,row2,_hx_tmp,row3,presenceMap,row4,row5,_hx_tmp1,row6,row7,row8,_hx_tmp2,_hx_tmp3,_hx_tmp4,row9,( (::String)(::Reflect_obj::field(row1,HX_("class",38,78,58,48))) )));
+HXDLIN( 272)				bool _hx_tmp3 = ::hx::IsNotEq( row1->__Field(HX_("notify_mention",34,44,26,d0),::hx::paccDynamic),0 );
+HXDLIN( 272)				bool _hx_tmp4 = ::hx::IsNotEq( row1->__Field(HX_("notify_reply",f4,e7,df,1b),::hx::paccDynamic),0 );
+HXDLIN( 272)				 ::snikket::Caps row9 = ( ( ::snikket::Caps)(row1->__Field(HX_("capsObj",56,b6,8b,a6),::hx::paccDynamic)) );
+HXDLIN( 272)				chats->push( ::snikket::SerializedChat_obj::__alloc( HX_CTX ,row2,_hx_tmp,row3,presenceMap,row4,row5,_hx_tmp1,row6,row7,row8,_hx_tmp2,_hx_tmp3,_hx_tmp4,row9,( (::String)(::Reflect_obj::field(row1,HX_("class",38,78,58,48))) )));
             			}
             			_hx_goto_33:;
-HXLINE( 276)			return chats;
+HXLINE( 274)			return chats;
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_231_getChats)
-HXDLIN( 231)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 232)		::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(HX_("SELECT chat_id, trusted, avatar_sha1, fn, ui_state, blocked, extensions, read_up_to_id, read_up_to_by, notifications_filtered, notify_mention, notify_reply, json(caps) AS caps, caps_ver, json(presence) AS presence, class FROM chats LEFT JOIN caps ON chats.caps_ver=caps.sha1 WHERE account_id=?",32,f7,06,7e),::cpp::VirtualArray_obj::__new(1)->init(0,accountId)), ::Dynamic(new _hx_Closure_3(_gthis)),null()), ::Dynamic(new _hx_Closure_5()),null()),callback,null());
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_230_getChats)
+HXDLIN( 230)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 231)		::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(HX_("SELECT chat_id, trusted, avatar_sha1, fn, ui_state, blocked, extensions, read_up_to_id, read_up_to_by, notifications_filtered, notify_mention, notify_reply, json(caps) AS caps, caps_ver, json(presence) AS presence, class FROM chats LEFT JOIN caps ON chats.caps_ver=caps.sha1 WHERE account_id=?",32,f7,06,7e),::cpp::VirtualArray_obj::__new(1)->init(0,accountId)), ::Dynamic(new _hx_Closure_3(_gthis)),null()), ::Dynamic(new _hx_Closure_5()),null()),callback,null());
             	}
 
 
@@ -931,95 +948,95 @@ HX_DEFINE_DYNAMIC_FUNC2(Sqlite_obj,getChats,(void))
 void Sqlite_obj::storeMessages(::String accountId,::Array< ::Dynamic> messages, ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_0,::Array< ::Dynamic>,messages, ::snikket::persistence::Sqlite,_gthis,::String,accountId) HXARGC(1)
             		::Dynamic _hx_run( ::haxe::iterators::ArrayIterator _){
-            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_318_storeMessages)
-HXLINE( 318)			 ::snikket::persistence::SqliteDriver _gthis1 = _gthis->db;
-HXLINE( 319)			::Array< ::String > result = ::Array_obj< ::String >::__new(messages->length);
-HXDLIN( 319)			{
-HXLINE( 319)				int _g = 0;
-HXDLIN( 319)				int _g1 = messages->length;
-HXDLIN( 319)				while((_g < _g1)){
-HXLINE( 319)					_g = (_g + 1);
-HXDLIN( 319)					int i = (_g - 1);
-HXDLIN( 319)					{
-HXLINE( 319)						 ::snikket::ChatMessage _1 = ( ( ::snikket::ChatMessage)(_hx_array_unsafe_get(messages,i)) );
-HXDLIN( 319)						result->__unsafe_set(i,HX_("(?,?,?,?,?,?,?,?,CAST(unixepoch(?, 'subsec') * 1000 AS INTEGER),?,?,?,?)",56,f5,42,e0));
-            					}
-            				}
-            			}
-HXDLIN( 319)			::String _hx_tmp = (HX_("INSERT OR REPLACE INTO messages VALUES ",28,32,a2,bc) + result->join(HX_(",",2c,00,00,00)));
-HXLINE( 320)			::Array< ::Dynamic> _g2 = ::Array_obj< ::Dynamic>::__new(0);
-HXDLIN( 320)			{
-HXLINE( 320)				int _g_current = 0;
-HXDLIN( 320)				::Array< ::Dynamic> _g_array = messages;
-HXDLIN( 320)				while((_g_current < _g_array->length)){
-HXLINE( 320)					_g_current = (_g_current + 1);
-HXDLIN( 320)					 ::snikket::ChatMessage x = _g_array->__get((_g_current - 1)).StaticCast<  ::snikket::ChatMessage >();
-HXLINE( 321)					 ::snikket::ChatMessage correctable = x;
-HXLINE( 322)					 ::snikket::ChatMessage message;
-HXDLIN( 322)					if ((x->versions->length == 1)) {
-HXLINE( 322)						message = x->versions->__get(0).StaticCast<  ::snikket::ChatMessage >();
+            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_316_storeMessages)
+HXLINE( 316)			 ::snikket::persistence::SqliteDriver _gthis1 = _gthis->db;
+HXLINE( 317)			::Array< ::String > result = ::Array_obj< ::String >::__new(messages->length);
+HXDLIN( 317)			{
+HXLINE( 317)				int _g = 0;
+HXDLIN( 317)				int _g1 = messages->length;
+HXDLIN( 317)				while((_g < _g1)){
+HXLINE( 317)					_g = (_g + 1);
+HXDLIN( 317)					int i = (_g - 1);
+HXDLIN( 317)					{
+HXLINE( 317)						 ::snikket::ChatMessage _1 = ( ( ::snikket::ChatMessage)(_hx_array_unsafe_get(messages,i)) );
+HXDLIN( 317)						result->__unsafe_set(i,HX_("(?,?,?,?,?,?,?,?,CAST(unixepoch(?, 'subsec') * 1000 AS INTEGER),?,?,?,?)",56,f5,42,e0));
+            					}
+            				}
+            			}
+HXDLIN( 317)			::String _hx_tmp = (HX_("INSERT OR REPLACE INTO messages VALUES ",28,32,a2,bc) + result->join(HX_(",",2c,00,00,00)));
+HXLINE( 318)			::Array< ::Dynamic> _g2 = ::Array_obj< ::Dynamic>::__new(0);
+HXDLIN( 318)			{
+HXLINE( 318)				int _g_current = 0;
+HXDLIN( 318)				::Array< ::Dynamic> _g_array = messages;
+HXDLIN( 318)				while((_g_current < _g_array->length)){
+HXLINE( 318)					_g_current = (_g_current + 1);
+HXDLIN( 318)					 ::snikket::ChatMessage x = _g_array->__get((_g_current - 1)).StaticCast<  ::snikket::ChatMessage >();
+HXLINE( 319)					 ::snikket::ChatMessage correctable = x;
+HXLINE( 320)					 ::snikket::ChatMessage message;
+HXDLIN( 320)					if ((x->versions->length == 1)) {
+HXLINE( 320)						message = x->versions->__get(0).StaticCast<  ::snikket::ChatMessage >();
             					}
             					else {
-HXLINE( 322)						message = x;
+HXLINE( 320)						message = x;
             					}
-HXLINE( 324)					::String accountId1 = accountId;
-HXDLIN( 324)					::String _hx_tmp1;
-HXDLIN( 324)					::String tmp = message->serverId;
-HXDLIN( 324)					if (::hx::IsNotNull( tmp )) {
-HXLINE( 324)						_hx_tmp1 = tmp;
+HXLINE( 322)					::String accountId1 = accountId;
+HXDLIN( 322)					::String _hx_tmp1;
+HXDLIN( 322)					::String tmp = message->serverId;
+HXDLIN( 322)					if (::hx::IsNotNull( tmp )) {
+HXLINE( 322)						_hx_tmp1 = tmp;
             					}
             					else {
-HXLINE( 324)						_hx_tmp1 = HX_("",00,00,00,00);
+HXLINE( 322)						_hx_tmp1 = HX_("",00,00,00,00);
             					}
-HXDLIN( 324)					::String _hx_tmp2;
-HXDLIN( 324)					::String tmp1 = message->serverIdBy;
-HXDLIN( 324)					if (::hx::IsNotNull( tmp1 )) {
-HXLINE( 324)						_hx_tmp2 = tmp1;
+HXDLIN( 322)					::String _hx_tmp2;
+HXDLIN( 322)					::String tmp1 = message->serverIdBy;
+HXDLIN( 322)					if (::hx::IsNotNull( tmp1 )) {
+HXLINE( 322)						_hx_tmp2 = tmp1;
             					}
             					else {
-HXLINE( 324)						_hx_tmp2 = HX_("",00,00,00,00);
+HXLINE( 322)						_hx_tmp2 = HX_("",00,00,00,00);
             					}
-HXLINE( 325)					::String _hx_tmp3;
-HXDLIN( 325)					::String tmp2 = message->localId;
-HXDLIN( 325)					if (::hx::IsNotNull( tmp2 )) {
-HXLINE( 325)						_hx_tmp3 = tmp2;
+HXLINE( 323)					::String _hx_tmp3;
+HXDLIN( 323)					::String tmp2 = message->localId;
+HXDLIN( 323)					if (::hx::IsNotNull( tmp2 )) {
+HXLINE( 323)						_hx_tmp3 = tmp2;
             					}
             					else {
-HXLINE( 325)						_hx_tmp3 = HX_("",00,00,00,00);
+HXLINE( 323)						_hx_tmp3 = HX_("",00,00,00,00);
             					}
-HXDLIN( 325)					::String _hx_tmp4;
-HXDLIN( 325)					::String tmp3 = correctable->localId;
-HXDLIN( 325)					if (::hx::IsNotNull( tmp3 )) {
-HXLINE( 325)						_hx_tmp4 = tmp3;
+HXDLIN( 323)					::String _hx_tmp4;
+HXDLIN( 323)					::String tmp3 = correctable->localId;
+HXDLIN( 323)					if (::hx::IsNotNull( tmp3 )) {
+HXLINE( 323)						_hx_tmp4 = tmp3;
             					}
             					else {
-HXLINE( 325)						_hx_tmp4 = correctable->serverId;
-            					}
-HXDLIN( 325)					bool correctable1 = correctable->syncPoint;
-HXLINE( 326)					::String _hx_tmp5 = correctable->chatId();
-HXDLIN( 326)					::String correctable2 = correctable->senderId;
-HXLINE( 327)					::String message1 = message->timestamp;
-HXDLIN( 327)					int message2 = message->status;
-HXDLIN( 327)					int message3 = message->direction;
-HXDLIN( 327)					int message4 = message->type;
-HXLINE( 320)					_g2->push(::cpp::VirtualArray_obj::__new(13)->init(0,accountId1)->init(1,_hx_tmp1)->init(2,_hx_tmp2)->init(3,_hx_tmp3)->init(4,_hx_tmp4)->init(5,correctable1)->init(6,_hx_tmp5)->init(7,correctable2)->init(8,message1)->init(9,message2)->init(10,message3)->init(11,message4)->init(12,message->asStanza()->toString()));
-            				}
-            			}
-HXDLIN( 320)			::cpp::VirtualArray _g3 = ::cpp::VirtualArray_obj::__new(0);
-HXDLIN( 320)			{
-HXLINE( 320)				 ::Dynamic e = _g2->__Field(HX_("iterator",ee,49,9a,93),::hx::paccDynamic)();
-HXDLIN( 320)				while(( (bool)(e->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE( 320)					 ::Dynamic e1 = e->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)();
-HXDLIN( 320)					{
-HXLINE( 320)						 ::Dynamic x1 = e1->__Field(HX_("iterator",ee,49,9a,93),::hx::paccDynamic)();
-HXDLIN( 320)						while(( (bool)(x1->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE( 320)							 ::Dynamic x2 = x1->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)();
-HXDLIN( 320)							_g3->push(x2);
+HXLINE( 323)						_hx_tmp4 = correctable->serverId;
+            					}
+HXDLIN( 323)					bool correctable1 = correctable->syncPoint;
+HXLINE( 324)					::String _hx_tmp5 = correctable->chatId();
+HXDLIN( 324)					::String correctable2 = correctable->senderId;
+HXLINE( 325)					::String message1 = message->timestamp;
+HXDLIN( 325)					int message2 = message->status;
+HXDLIN( 325)					int message3 = message->direction;
+HXDLIN( 325)					int message4 = message->type;
+HXLINE( 318)					_g2->push(::cpp::VirtualArray_obj::__new(13)->init(0,accountId1)->init(1,_hx_tmp1)->init(2,_hx_tmp2)->init(3,_hx_tmp3)->init(4,_hx_tmp4)->init(5,correctable1)->init(6,_hx_tmp5)->init(7,correctable2)->init(8,message1)->init(9,message2)->init(10,message3)->init(11,message4)->init(12,message->asStanza()->toString()));
+            				}
+            			}
+HXDLIN( 318)			::cpp::VirtualArray _g3 = ::cpp::VirtualArray_obj::__new(0);
+HXDLIN( 318)			{
+HXLINE( 318)				 ::Dynamic e = _g2->__Field(HX_("iterator",ee,49,9a,93),::hx::paccDynamic)();
+HXDLIN( 318)				while(( (bool)(e->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE( 318)					 ::Dynamic e1 = e->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)();
+HXDLIN( 318)					{
+HXLINE( 318)						 ::Dynamic x1 = e1->__Field(HX_("iterator",ee,49,9a,93),::hx::paccDynamic)();
+HXDLIN( 318)						while(( (bool)(x1->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE( 318)							 ::Dynamic x2 = x1->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)();
+HXDLIN( 318)							_g3->push(x2);
             						}
             					}
             				}
             			}
-HXLINE( 318)			return _gthis1->exec(_hx_tmp,_g3);
+HXLINE( 316)			return _gthis1->exec(_hx_tmp,_g3);
             		}
             		HX_END_LOCAL_FUNC1(return)
 
@@ -1027,134 +1044,171 @@ HXLINE( 318)			return _gthis1->exec(_hx_tmp,_g3);
             		::Dynamic _hx_run( ::haxe::iterators::ArrayIterator _){
             			HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_1, ::snikket::persistence::Sqlite,_gthis,::String,accountId) HXARGC(1)
             			::Dynamic _hx_run(::Array< ::Dynamic> ms){
-            				HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_333_storeMessages)
-HXLINE( 333)				return _gthis->hydrateReactions(accountId,ms);
+            				HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_331_storeMessages)
+HXLINE( 331)				return _gthis->hydrateReactions(accountId,ms);
             			}
             			HX_END_LOCAL_FUNC1(return)
 
-            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_333_storeMessages)
-HXLINE( 333)			::Dynamic _hx_tmp = ::thenshim::_Promise::Promise_Impl__obj::then(_gthis->hydrateReplyTo(accountId,messages,replyTos), ::Dynamic(new _hx_Closure_1(_gthis,accountId)),null());
-HXDLIN( 333)			return ::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp,callback,null());
+            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_331_storeMessages)
+HXLINE( 331)			::Dynamic _hx_tmp = ::thenshim::_Promise::Promise_Impl__obj::then(_gthis->hydrateReplyTo(accountId,messages,replyTos), ::Dynamic(new _hx_Closure_1(_gthis,accountId)),null());
+HXDLIN( 331)			return ::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp,callback,null());
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_281_storeMessages)
-HXDLIN( 281)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 282)		if ((messages->length < 1)) {
-HXLINE( 283)			callback(messages);
-HXLINE( 284)			return;
-            		}
-HXLINE( 287)		::Array< ::String > chatIds = ::Array_obj< ::String >::__new(0);
-HXLINE( 288)		::Array< ::String > localIds = ::Array_obj< ::String >::__new(0);
-HXLINE( 289)		::Array< ::Dynamic> replyTos = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 290)		{
-HXLINE( 290)			int _g = 0;
-HXDLIN( 290)			while((_g < messages->length)){
-HXLINE( 290)				 ::snikket::ChatMessage message = messages->__get(_g).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN( 290)				_g = (_g + 1);
-HXLINE( 291)				bool _hx_tmp;
-HXDLIN( 291)				if (::hx::IsNull( message->serverId )) {
-HXLINE( 291)					_hx_tmp = ::hx::IsNull( message->localId );
+            	HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_279_storeMessages)
+HXDLIN( 279)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 280)		if ((messages->length < 1)) {
+HXLINE( 281)			callback(messages);
+HXLINE( 282)			return;
+            		}
+HXLINE( 285)		::Array< ::String > chatIds = ::Array_obj< ::String >::__new(0);
+HXLINE( 286)		::Array< ::String > localIds = ::Array_obj< ::String >::__new(0);
+HXLINE( 287)		::Array< ::Dynamic> replyTos = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 288)		{
+HXLINE( 288)			int _g = 0;
+HXDLIN( 288)			while((_g < messages->length)){
+HXLINE( 288)				 ::snikket::ChatMessage message = messages->__get(_g).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN( 288)				_g = (_g + 1);
+HXLINE( 289)				bool _hx_tmp;
+HXDLIN( 289)				if (::hx::IsNull( message->serverId )) {
+HXLINE( 289)					_hx_tmp = ::hx::IsNull( message->localId );
             				}
             				else {
-HXLINE( 291)					_hx_tmp = false;
+HXLINE( 289)					_hx_tmp = false;
             				}
-HXDLIN( 291)				if (_hx_tmp) {
-HXLINE( 291)					HX_STACK_DO_THROW(HX_("Cannot store a message with no id",54,e5,b0,de));
+HXDLIN( 289)				if (_hx_tmp) {
+HXLINE( 289)					HX_STACK_DO_THROW(HX_("Cannot store a message with no id",54,e5,b0,de));
             				}
-HXLINE( 292)				bool _hx_tmp1;
-HXDLIN( 292)				if (::hx::IsNull( message->serverId )) {
-HXLINE( 292)					_hx_tmp1 = message->isIncoming();
+HXLINE( 290)				bool _hx_tmp1;
+HXDLIN( 290)				if (::hx::IsNull( message->serverId )) {
+HXLINE( 290)					_hx_tmp1 = message->isIncoming();
             				}
             				else {
-HXLINE( 292)					_hx_tmp1 = false;
+HXLINE( 290)					_hx_tmp1 = false;
             				}
-HXDLIN( 292)				if (_hx_tmp1) {
-HXLINE( 292)					HX_STACK_DO_THROW(HX_("Cannot store an incoming message with no server id",d7,6d,19,fb));
+HXDLIN( 290)				if (_hx_tmp1) {
+HXLINE( 290)					HX_STACK_DO_THROW(HX_("Cannot store an incoming message with no server id",d7,6d,19,fb));
             				}
-HXLINE( 293)				bool _hx_tmp2;
-HXDLIN( 293)				if (::hx::IsNotNull( message->serverId )) {
-HXLINE( 293)					_hx_tmp2 = ::hx::IsNull( message->serverIdBy );
+HXLINE( 291)				bool _hx_tmp2;
+HXDLIN( 291)				if (::hx::IsNotNull( message->serverId )) {
+HXLINE( 291)					_hx_tmp2 = ::hx::IsNull( message->serverIdBy );
             				}
             				else {
-HXLINE( 293)					_hx_tmp2 = false;
+HXLINE( 291)					_hx_tmp2 = false;
             				}
-HXDLIN( 293)				if (_hx_tmp2) {
-HXLINE( 293)					HX_STACK_DO_THROW(HX_("Cannot store a message with a server id and no by",00,9f,b7,38));
+HXDLIN( 291)				if (_hx_tmp2) {
+HXLINE( 291)					HX_STACK_DO_THROW(HX_("Cannot store a message with a server id and no by",00,9f,b7,38));
             				}
-HXLINE( 295)				bool _hx_tmp3;
-HXDLIN( 295)				if (!(message->isIncoming())) {
-HXLINE( 295)					_hx_tmp3 = (message->versions->length < 1);
+HXLINE( 293)				bool _hx_tmp3;
+HXDLIN( 293)				if (!(message->isIncoming())) {
+HXLINE( 293)					_hx_tmp3 = (message->versions->length < 1);
             				}
             				else {
-HXLINE( 295)					_hx_tmp3 = false;
+HXLINE( 293)					_hx_tmp3 = false;
             				}
-HXDLIN( 295)				if (_hx_tmp3) {
-HXLINE( 298)					chatIds->push(message->chatId());
-HXLINE( 299)					localIds->push(message->localId);
+HXDLIN( 293)				if (_hx_tmp3) {
+HXLINE( 296)					chatIds->push(message->chatId());
+HXLINE( 297)					localIds->push(message->localId);
             				}
-HXLINE( 301)				bool _hx_tmp4;
-HXDLIN( 301)				if (::hx::IsNotNull( message->replyToMessage )) {
-HXLINE( 301)					_hx_tmp4 = ::hx::IsNull( message->replyToMessage->serverIdBy );
+HXLINE( 299)				bool _hx_tmp4;
+HXDLIN( 299)				if (::hx::IsNotNull( message->replyToMessage )) {
+HXLINE( 299)					_hx_tmp4 = ::hx::IsNull( message->replyToMessage->serverIdBy );
             				}
             				else {
-HXLINE( 301)					_hx_tmp4 = false;
+HXLINE( 299)					_hx_tmp4 = false;
             				}
-HXDLIN( 301)				if (_hx_tmp4) {
-HXLINE( 302)					::Array< ::Dynamic> replyTos1 = replyTos;
-HXDLIN( 302)					::String _hx_tmp5 = message->chatId();
-HXDLIN( 302)					replyTos1->push( ::Dynamic(::hx::Anon_obj::Create(3)
+HXDLIN( 299)				if (_hx_tmp4) {
+HXLINE( 300)					::Array< ::Dynamic> replyTos1 = replyTos;
+HXDLIN( 300)					::String _hx_tmp5 = message->chatId();
+HXDLIN( 300)					replyTos1->push( ::Dynamic(::hx::Anon_obj::Create(3)
             						->setFixed(0,HX_("chatId",d3,04,77,b7),_hx_tmp5)
             						->setFixed(1,HX_("serverId",7e,01,b2,e2),message->replyToMessage->serverId)
             						->setFixed(2,HX_("localId",26,7a,c6,2d),message->replyToMessage->localId)));
             				}
             			}
             		}
-HXLINE( 306)		::Dynamic _hx_tmp6;
-HXDLIN( 306)		bool _hx_tmp7;
-HXDLIN( 306)		if ((chatIds->length > 0)) {
-HXLINE( 306)			_hx_tmp7 = (localIds->length > 0);
+HXLINE( 304)		::Dynamic _hx_tmp6;
+HXDLIN( 304)		bool _hx_tmp7;
+HXDLIN( 304)		if ((chatIds->length > 0)) {
+HXLINE( 304)			_hx_tmp7 = (localIds->length > 0);
             		}
             		else {
-HXLINE( 306)			_hx_tmp7 = false;
+HXLINE( 304)			_hx_tmp7 = false;
             		}
-HXDLIN( 306)		if (_hx_tmp7) {
-HXLINE( 308)			 ::StringBuf q =  ::StringBuf_obj::__alloc( HX_CTX );
+HXDLIN( 304)		if (_hx_tmp7) {
+HXLINE( 306)			 ::StringBuf q =  ::StringBuf_obj::__alloc( HX_CTX );
+HXLINE( 307)			{
+HXLINE( 307)				if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 307)					q->flush();
+            				}
+HXDLIN( 307)				if (::hx::IsNull( q->b )) {
+HXLINE( 307)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_53,1);
+            				}
+            				else {
+HXLINE( 307)					q->b->push(HX_("DELETE FROM messages WHERE account_id=? AND direction=? AND chat_id IN (",a1,9c,a2,06));
+            				}
+            			}
+HXLINE( 308)			{
+HXLINE( 308)				::Array< ::String > result = ::Array_obj< ::String >::__new(chatIds->length);
+HXDLIN( 308)				{
+HXLINE( 308)					int _g1 = 0;
+HXDLIN( 308)					int _g2 = chatIds->length;
+HXDLIN( 308)					while((_g1 < _g2)){
+HXLINE( 308)						_g1 = (_g1 + 1);
+HXDLIN( 308)						int i = (_g1 - 1);
+HXDLIN( 308)						{
+HXLINE( 308)							::String _ = ( (::String)(_hx_array_unsafe_get(chatIds,i)) );
+HXDLIN( 308)							result->__unsafe_set(i,HX_("?",3f,00,00,00));
+            						}
+            					}
+            				}
+HXDLIN( 308)				::String x = result->join(HX_(",",2c,00,00,00));
+HXDLIN( 308)				if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 308)					q->flush();
+            				}
+HXDLIN( 308)				if (::hx::IsNull( q->b )) {
+HXLINE( 308)					q->b = ::Array_obj< ::String >::__new(1)->init(0,::Std_obj::string(x));
+            				}
+            				else {
+HXLINE( 308)					::Array< ::String > q1 = q->b;
+HXDLIN( 308)					q1->push(::Std_obj::string(x));
+            				}
+            			}
 HXLINE( 309)			{
 HXLINE( 309)				if (::hx::IsNotNull( q->charBuf )) {
 HXLINE( 309)					q->flush();
             				}
 HXDLIN( 309)				if (::hx::IsNull( q->b )) {
-HXLINE( 309)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_53,1);
+HXLINE( 309)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_54,1);
             				}
             				else {
-HXLINE( 309)					q->b->push(HX_("DELETE FROM messages WHERE account_id=? AND direction=? AND chat_id IN (",a1,9c,a2,06));
+HXLINE( 309)					q->b->push(HX_(") AND stanza_id IN (",e8,da,d3,eb));
             				}
             			}
 HXLINE( 310)			{
-HXLINE( 310)				::Array< ::String > result = ::Array_obj< ::String >::__new(chatIds->length);
+HXLINE( 310)				::Array< ::String > result1 = ::Array_obj< ::String >::__new(localIds->length);
 HXDLIN( 310)				{
-HXLINE( 310)					int _g1 = 0;
-HXDLIN( 310)					int _g2 = chatIds->length;
-HXDLIN( 310)					while((_g1 < _g2)){
-HXLINE( 310)						_g1 = (_g1 + 1);
-HXDLIN( 310)						int i = (_g1 - 1);
+HXLINE( 310)					int _g3 = 0;
+HXDLIN( 310)					int _g4 = localIds->length;
+HXDLIN( 310)					while((_g3 < _g4)){
+HXLINE( 310)						_g3 = (_g3 + 1);
+HXDLIN( 310)						int i1 = (_g3 - 1);
 HXDLIN( 310)						{
-HXLINE( 310)							::String _ = ( (::String)(_hx_array_unsafe_get(chatIds,i)) );
-HXDLIN( 310)							result->__unsafe_set(i,HX_("?",3f,00,00,00));
+HXLINE( 310)							::String _1 = ( (::String)(_hx_array_unsafe_get(localIds,i1)) );
+HXDLIN( 310)							result1->__unsafe_set(i1,HX_("?",3f,00,00,00));
             						}
             					}
             				}
-HXDLIN( 310)				::String x = result->join(HX_(",",2c,00,00,00));
+HXDLIN( 310)				::String x1 = result1->join(HX_(",",2c,00,00,00));
 HXDLIN( 310)				if (::hx::IsNotNull( q->charBuf )) {
 HXLINE( 310)					q->flush();
             				}
 HXDLIN( 310)				if (::hx::IsNull( q->b )) {
-HXLINE( 310)					q->b = ::Array_obj< ::String >::__new(1)->init(0,::Std_obj::string(x));
+HXLINE( 310)					q->b = ::Array_obj< ::String >::__new(1)->init(0,::Std_obj::string(x1));
             				}
             				else {
-HXLINE( 310)					::Array< ::String > q1 = q->b;
-HXDLIN( 310)					q1->push(::Std_obj::string(x));
+HXLINE( 310)					::Array< ::String > q2 = q->b;
+HXDLIN( 310)					q2->push(::Std_obj::string(x1));
             				}
             			}
 HXLINE( 311)			{
@@ -1162,57 +1216,20 @@ HXLINE( 311)				if (::hx::IsNotNull( q->charBuf )) {
 HXLINE( 311)					q->flush();
             				}
 HXDLIN( 311)				if (::hx::IsNull( q->b )) {
-HXLINE( 311)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_54,1);
+HXLINE( 311)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_55,1);
             				}
             				else {
-HXLINE( 311)					q->b->push(HX_(") AND stanza_id IN (",e8,da,d3,eb));
-            				}
-            			}
-HXLINE( 312)			{
-HXLINE( 312)				::Array< ::String > result1 = ::Array_obj< ::String >::__new(localIds->length);
-HXDLIN( 312)				{
-HXLINE( 312)					int _g3 = 0;
-HXDLIN( 312)					int _g4 = localIds->length;
-HXDLIN( 312)					while((_g3 < _g4)){
-HXLINE( 312)						_g3 = (_g3 + 1);
-HXDLIN( 312)						int i1 = (_g3 - 1);
-HXDLIN( 312)						{
-HXLINE( 312)							::String _1 = ( (::String)(_hx_array_unsafe_get(localIds,i1)) );
-HXDLIN( 312)							result1->__unsafe_set(i1,HX_("?",3f,00,00,00));
-            						}
-            					}
-            				}
-HXDLIN( 312)				::String x1 = result1->join(HX_(",",2c,00,00,00));
-HXDLIN( 312)				if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 312)					q->flush();
-            				}
-HXDLIN( 312)				if (::hx::IsNull( q->b )) {
-HXLINE( 312)					q->b = ::Array_obj< ::String >::__new(1)->init(0,::Std_obj::string(x1));
-            				}
-            				else {
-HXLINE( 312)					::Array< ::String > q2 = q->b;
-HXDLIN( 312)					q2->push(::Std_obj::string(x1));
-            				}
-            			}
-HXLINE( 313)			{
-HXLINE( 313)				if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 313)					q->flush();
-            				}
-HXDLIN( 313)				if (::hx::IsNull( q->b )) {
-HXLINE( 313)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_55,1);
-            				}
-            				else {
-HXLINE( 313)					q->b->push(HX_(")",29,00,00,00));
+HXLINE( 311)					q->b->push(HX_(")",29,00,00,00));
             				}
             			}
-HXLINE( 314)			 ::snikket::persistence::SqliteDriver _hx_tmp8 = this->db;
-HXDLIN( 314)			::String _hx_tmp9 = q->toString();
-HXLINE( 306)			_hx_tmp6 = _hx_tmp8->exec(_hx_tmp9,::cpp::VirtualArray_obj::__new(2)->init(0,accountId)->init(1,1)->concat(chatIds)->concat(localIds));
+HXLINE( 312)			 ::snikket::persistence::SqliteDriver _hx_tmp8 = this->db;
+HXDLIN( 312)			::String _hx_tmp9 = q->toString();
+HXLINE( 304)			_hx_tmp6 = _hx_tmp8->exec(_hx_tmp9,::cpp::VirtualArray_obj::__new(2)->init(0,accountId)->init(1,1)->concat(chatIds)->concat(localIds));
             		}
             		else {
-HXLINE( 306)			_hx_tmp6 = ::thenshim::_Promise::Promise_Impl__obj::resolve(null());
+HXLINE( 304)			_hx_tmp6 = ::thenshim::_Promise::Promise_Impl__obj::resolve(null());
             		}
-HXDLIN( 306)		::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp6, ::Dynamic(new _hx_Closure_0(messages,_gthis,accountId)),null()), ::Dynamic(new _hx_Closure_2(messages,_gthis,replyTos,accountId,callback)),null());
+HXDLIN( 304)		::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp6, ::Dynamic(new _hx_Closure_0(messages,_gthis,accountId)),null()), ::Dynamic(new _hx_Closure_2(messages,_gthis,replyTos,accountId,callback)),null());
             	}
 
 
@@ -1221,12 +1238,12 @@ HX_DEFINE_DYNAMIC_FUNC3(Sqlite_obj,storeMessages,(void))
 void Sqlite_obj::updateMessage(::String accountId, ::snikket::ChatMessage message){
             		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> _){
-            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_341_updateMessage)
+            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_339_updateMessage)
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_341_updateMessage)
-HXDLIN( 341)		this->storeMessages(accountId,::Array_obj< ::Dynamic>::__new(1)->init(0,message), ::Dynamic(new _hx_Closure_0()));
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_339_updateMessage)
+HXDLIN( 339)		this->storeMessages(accountId,::Array_obj< ::Dynamic>::__new(1)->init(0,message), ::Dynamic(new _hx_Closure_0()));
             	}
 
 
@@ -1235,67 +1252,67 @@ HX_DEFINE_DYNAMIC_FUNC2(Sqlite_obj,updateMessage,(void))
 void Sqlite_obj::getMessage(::String accountId,::String chatId,::String serverId,::String localId, ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::persistence::Sqlite,_gthis,::String,accountId) HXARGC(1)
             		::Array< ::Dynamic> _hx_run( ::haxe::iterators::ArrayIterator result){
-            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_355_getMessage)
-HXLINE( 355)			return _gthis->hydrateMessages(accountId,result);
+            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_353_getMessage)
+HXLINE( 353)			return _gthis->hydrateMessages(accountId,result);
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S4(::hx::LocalFunc,_hx_Closure_3, ::snikket::persistence::Sqlite,_gthis,::String,chatId,::String,accountId, ::Dynamic,callback) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> messages){
-            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_355_getMessage)
-HXLINE( 356)			{
-HXLINE( 356)				int _g = 0;
-HXDLIN( 356)				while((_g < messages->length)){
+            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_353_getMessage)
+HXLINE( 354)			{
+HXLINE( 354)				int _g = 0;
+HXDLIN( 354)				while((_g < messages->length)){
             					HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_1, ::snikket::persistence::Sqlite,_gthis,::String,accountId) HXARGC(1)
             					::Dynamic _hx_run(::Array< ::Dynamic> messages){
-            						HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_361_getMessage)
-HXLINE( 361)						return _gthis->hydrateReactions(accountId,messages);
+            						HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_359_getMessage)
+HXLINE( 359)						return _gthis->hydrateReactions(accountId,messages);
             					}
             					HX_END_LOCAL_FUNC1(return)
 
             					HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_2, ::Dynamic,callback) HXARGC(1)
             					void _hx_run(::Array< ::Dynamic> hydrated){
-            						HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_361_getMessage)
-HXLINE( 361)						callback(hydrated->__get(0).StaticCast<  ::snikket::ChatMessage >());
+            						HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_359_getMessage)
+HXLINE( 359)						callback(hydrated->__get(0).StaticCast<  ::snikket::ChatMessage >());
             					}
             					HX_END_LOCAL_FUNC1((void))
 
-HXLINE( 356)					 ::snikket::ChatMessage message = messages->__get(_g).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN( 356)					_g = (_g + 1);
-HXLINE( 357)					::Dynamic _hx_tmp;
-HXDLIN( 357)					if (::hx::IsNotNull( message->replyToMessage )) {
-HXLINE( 357)						_hx_tmp = _gthis->hydrateReplyTo(accountId,::Array_obj< ::Dynamic>::__new(1)->init(0,message),::Array_obj< ::Dynamic>::__new(1)->init(0, ::Dynamic(::hx::Anon_obj::Create(3)
+HXLINE( 354)					 ::snikket::ChatMessage message = messages->__get(_g).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN( 354)					_g = (_g + 1);
+HXLINE( 355)					::Dynamic _hx_tmp;
+HXDLIN( 355)					if (::hx::IsNotNull( message->replyToMessage )) {
+HXLINE( 355)						_hx_tmp = _gthis->hydrateReplyTo(accountId,::Array_obj< ::Dynamic>::__new(1)->init(0,message),::Array_obj< ::Dynamic>::__new(1)->init(0, ::Dynamic(::hx::Anon_obj::Create(3)
             							->setFixed(0,HX_("chatId",d3,04,77,b7),chatId)
             							->setFixed(1,HX_("serverId",7e,01,b2,e2),message->replyToMessage->serverId)
             							->setFixed(2,HX_("localId",26,7a,c6,2d),message->replyToMessage->localId))));
             					}
             					else {
-HXLINE( 357)						_hx_tmp = ::thenshim::_Promise::Promise_Impl__obj::resolve(::Array_obj< ::Dynamic>::__new(1)->init(0,message));
+HXLINE( 355)						_hx_tmp = ::thenshim::_Promise::Promise_Impl__obj::resolve(::Array_obj< ::Dynamic>::__new(1)->init(0,message));
             					}
-HXDLIN( 357)					::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp, ::Dynamic(new _hx_Closure_1(_gthis,accountId)),null()), ::Dynamic(new _hx_Closure_2(callback)),null());
-HXLINE( 362)					return;
+HXDLIN( 355)					::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp, ::Dynamic(new _hx_Closure_1(_gthis,accountId)),null()), ::Dynamic(new _hx_Closure_2(callback)),null());
+HXLINE( 360)					return;
             				}
             			}
-HXLINE( 364)			callback(null());
+HXLINE( 362)			callback(null());
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_344_getMessage)
-HXDLIN( 344)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 345)		::String q = HX_("SELECT stanza, direction, type, status, strftime('%FT%H:%M:%fZ', created_at / 1000.0, 'unixepoch') AS timestamp, sender_id, mam_id, mam_by, sync_point FROM messages WHERE account_id=? AND chat_id=?",6f,5d,49,f4);
-HXLINE( 346)		::Array< ::String > params = ::Array_obj< ::String >::__new(2)->init(0,accountId)->init(1,chatId);
-HXLINE( 347)		if (::hx::IsNotNull( serverId )) {
-HXLINE( 348)			q = (q + HX_(" AND mam_id=?",4c,af,2b,c9));
-HXLINE( 349)			params->push(serverId);
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_342_getMessage)
+HXDLIN( 342)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 343)		::String q = HX_("SELECT stanza, direction, type, status, strftime('%FT%H:%M:%fZ', created_at / 1000.0, 'unixepoch') AS timestamp, sender_id, mam_id, mam_by, sync_point FROM messages WHERE account_id=? AND chat_id=?",6f,5d,49,f4);
+HXLINE( 344)		::Array< ::String > params = ::Array_obj< ::String >::__new(2)->init(0,accountId)->init(1,chatId);
+HXLINE( 345)		if (::hx::IsNotNull( serverId )) {
+HXLINE( 346)			q = (q + HX_(" AND mam_id=?",4c,af,2b,c9));
+HXLINE( 347)			params->push(serverId);
             		}
             		else {
-HXLINE( 350)			if (::hx::IsNotNull( localId )) {
-HXLINE( 351)				q = (q + HX_(" AND stanza_id=?",be,a8,32,e3));
-HXLINE( 352)				params->push(localId);
+HXLINE( 348)			if (::hx::IsNotNull( localId )) {
+HXLINE( 349)				q = (q + HX_(" AND stanza_id=?",be,a8,32,e3));
+HXLINE( 350)				params->push(localId);
             			}
             		}
-HXLINE( 354)		q = (q + HX_("LIMIT 1",ec,af,c7,0e));
-HXLINE( 355)		::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(q,params), ::Dynamic(new _hx_Closure_0(_gthis,accountId)),null()), ::Dynamic(new _hx_Closure_3(_gthis,chatId,accountId,callback)),null());
+HXLINE( 352)		q = (q + HX_("LIMIT 1",ec,af,c7,0e));
+HXLINE( 353)		::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(q,params), ::Dynamic(new _hx_Closure_0(_gthis,accountId)),null()), ::Dynamic(new _hx_Closure_3(_gthis,chatId,accountId,callback)),null());
             	}
 
 
@@ -1304,21 +1321,22 @@ HX_DEFINE_DYNAMIC_FUNC5(Sqlite_obj,getMessage,(void))
 void Sqlite_obj::getMessage__fromC(::String accountId,::String chatId,::String serverId,::String localId,::cpp::Function< void  (void*,void*) > callback,void* callback__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,void*,callback__context,::cpp::Function< void  (void* HX_COMMA void*) >,callback) HXARGC(1)
             		void _hx_run( ::snikket::ChatMessage a0){
-            			HX_GC_STACKFRAME(&_hx_pos_45dcb523da764b50_221_getMessage__fromC)
+            			HX_STACKFRAME(&_hx_pos_45dcb523da764b50_221_getMessage__fromC)
 HXLINE( 221)			::cpp::Function< void  (void*,void*) > callback1 = callback;
 HXLINE( 215)			 ::Dynamic haxeObject = a0;
 HXDLIN( 215)			void* ptr = haxeObject.mPtr;
 HXDLIN( 215)			::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(ptr);
 HXDLIN( 215)			{
-HXLINE( 215)				 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 215)				int low = ptrInt64 & 0xffffffff;
-HXDLIN( 215)				int high = ptrInt64 >> 32;
-HXDLIN( 215)				 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 215)				if (::hx::IsNull( highMap )) {
-HXLINE( 215)					highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXDLIN( 215)					this1->set(low,highMap);
+HXLINE( 215)				 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 215)				if (::hx::IsNull( store )) {
+HXLINE( 215)					store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),haxeObject));
+HXDLIN( 215)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            				}
+            				else {
+HXLINE( 215)					::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 215)				highMap->set(high,haxeObject);
             			}
 HXLINE( 221)			callback1(ptr,callback__context);
             		}
@@ -1332,107 +1350,107 @@ HXDLIN( 252)		this->getMessage(accountId,chatId,serverId,localId, ::Dynamic(new
 ::Dynamic Sqlite_obj::getMessages(::String accountId,::String chatId,::String time,::String op){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::snikket::persistence::Sqlite,_gthis,::String,accountId) HXARGC(1)
             		::Array< ::Dynamic> _hx_run( ::haxe::iterators::ArrayIterator result){
-            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_394_getMessages)
-HXLINE( 394)			return _gthis->hydrateMessages(accountId,result);
+            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_392_getMessages)
+HXLINE( 392)			return _gthis->hydrateMessages(accountId,result);
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_1, ::snikket::persistence::Sqlite,_gthis,::String,op,::String,accountId) HXARGC(1)
             		::Dynamic _hx_run(::Array< ::Dynamic> iter){
-            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_394_getMessages)
-HXLINE( 395)			::Array< ::Dynamic> arr = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 396)			::Array< ::Dynamic> replyTos = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 397)			{
-HXLINE( 397)				int _g = 0;
-HXDLIN( 397)				while((_g < iter->length)){
-HXLINE( 397)					 ::snikket::ChatMessage message = iter->__get(_g).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN( 397)					_g = (_g + 1);
-HXLINE( 398)					arr->push(message);
-HXLINE( 399)					bool _hx_tmp;
-HXDLIN( 399)					if (::hx::IsNotNull( message->replyToMessage )) {
-HXLINE( 399)						_hx_tmp = ::hx::IsNull( message->replyToMessage->serverIdBy );
+            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_392_getMessages)
+HXLINE( 393)			::Array< ::Dynamic> arr = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 394)			::Array< ::Dynamic> replyTos = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 395)			{
+HXLINE( 395)				int _g = 0;
+HXDLIN( 395)				while((_g < iter->length)){
+HXLINE( 395)					 ::snikket::ChatMessage message = iter->__get(_g).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN( 395)					_g = (_g + 1);
+HXLINE( 396)					arr->push(message);
+HXLINE( 397)					bool _hx_tmp;
+HXDLIN( 397)					if (::hx::IsNotNull( message->replyToMessage )) {
+HXLINE( 397)						_hx_tmp = ::hx::IsNull( message->replyToMessage->serverIdBy );
             					}
             					else {
-HXLINE( 399)						_hx_tmp = false;
+HXLINE( 397)						_hx_tmp = false;
             					}
-HXDLIN( 399)					if (_hx_tmp) {
-HXLINE( 400)						::String _hx_tmp1 = message->chatId();
-HXDLIN( 400)						replyTos->push( ::Dynamic(::hx::Anon_obj::Create(3)
+HXDLIN( 397)					if (_hx_tmp) {
+HXLINE( 398)						::String _hx_tmp1 = message->chatId();
+HXDLIN( 398)						replyTos->push( ::Dynamic(::hx::Anon_obj::Create(3)
             							->setFixed(0,HX_("chatId",d3,04,77,b7),_hx_tmp1)
             							->setFixed(1,HX_("serverId",7e,01,b2,e2),message->replyToMessage->serverId)
             							->setFixed(2,HX_("localId",26,7a,c6,2d),message->replyToMessage->localId)));
             					}
             				}
             			}
-HXLINE( 403)			bool _hx_tmp2;
-HXDLIN( 403)			if ((op != HX_("<",3c,00,00,00))) {
-HXLINE( 403)				_hx_tmp2 = (op == HX_("<=",81,34,00,00));
+HXLINE( 401)			bool _hx_tmp2;
+HXDLIN( 401)			if ((op != HX_("<",3c,00,00,00))) {
+HXLINE( 401)				_hx_tmp2 = (op == HX_("<=",81,34,00,00));
             			}
             			else {
-HXLINE( 403)				_hx_tmp2 = true;
+HXLINE( 401)				_hx_tmp2 = true;
             			}
-HXDLIN( 403)			if (_hx_tmp2) {
-HXLINE( 404)				arr->reverse();
+HXDLIN( 401)			if (_hx_tmp2) {
+HXLINE( 402)				arr->reverse();
             			}
-HXLINE( 406)			return _gthis->hydrateReplyTo(accountId,arr,replyTos);
+HXLINE( 404)			return _gthis->hydrateReplyTo(accountId,arr,replyTos);
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_2, ::snikket::persistence::Sqlite,_gthis,::String,accountId) HXARGC(1)
             		::Dynamic _hx_run(::Array< ::Dynamic> messages){
-            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_407_getMessages)
-HXLINE( 407)			return _gthis->hydrateReactions(accountId,messages);
+            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_405_getMessages)
+HXLINE( 405)			return _gthis->hydrateReactions(accountId,messages);
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_368_getMessages)
-HXDLIN( 368)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 369)		::String q = HX_("SELECT\n\t\t\tcorrection_id AS stanza_id,\n\t\t\tversions.stanza,\n\t\t\tjson_group_object(CASE WHEN versions.mam_id IS NULL OR versions.mam_id='' THEN versions.stanza_id ELSE versions.mam_id END, strftime('%FT%H:%M:%fZ', versions.created_at / 1000.0, 'unixepoch')) AS version_times,\n\t\t\tjson_group_object(CASE WHEN versions.mam_id IS NULL OR versions.mam_id='' THEN versions.stanza_id ELSE versions.mam_id END, versions.stanza) AS versions,\n\t\t\tmessages.direction,\n\t\t\tmessages.type,\n\t\t\tmessages.status,\n\t\t\tstrftime('%FT%H:%M:%fZ', messages.created_at / 1000.0, 'unixepoch') AS timestamp,\n\t\t\tmessages.sender_id,\n\t\t\tmessages.mam_id,\n\t\t\tmessages.mam_by,\n\t\t\tmessages.sync_point,\n\t\t\tMAX(versions.created_at)\n\t\t\tFROM messages INNER JOIN messages versions USING (correction_id) WHERE (messages.stanza_id IS NULL OR messages.stanza_id='' OR messages.stanza_id=correction_id) AND messages.account_id=? AND messages.chat_id=?",23,4e,0b,77);
-HXLINE( 384)		::Array< ::String > params = ::Array_obj< ::String >::__new(2)->init(0,accountId)->init(1,chatId);
-HXLINE( 385)		if (::hx::IsNotNull( time )) {
-HXLINE( 386)			q = (q + ((HX_(" AND messages.created_at ",3d,a0,ae,bb) + op) + HX_("CAST(unixepoch(?, 'subsec') * 1000 AS INTEGER)",17,de,5d,f8)));
-HXLINE( 387)			params->push(time);
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_366_getMessages)
+HXDLIN( 366)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 367)		::String q = HX_("SELECT\n\t\t\tcorrection_id AS stanza_id,\n\t\t\tversions.stanza,\n\t\t\tjson_group_object(CASE WHEN versions.mam_id IS NULL OR versions.mam_id='' THEN versions.stanza_id ELSE versions.mam_id END, strftime('%FT%H:%M:%fZ', versions.created_at / 1000.0, 'unixepoch')) AS version_times,\n\t\t\tjson_group_object(CASE WHEN versions.mam_id IS NULL OR versions.mam_id='' THEN versions.stanza_id ELSE versions.mam_id END, versions.stanza) AS versions,\n\t\t\tmessages.direction,\n\t\t\tmessages.type,\n\t\t\tmessages.status,\n\t\t\tstrftime('%FT%H:%M:%fZ', messages.created_at / 1000.0, 'unixepoch') AS timestamp,\n\t\t\tmessages.sender_id,\n\t\t\tmessages.mam_id,\n\t\t\tmessages.mam_by,\n\t\t\tmessages.sync_point,\n\t\t\tMAX(versions.created_at)\n\t\t\tFROM messages INNER JOIN messages versions USING (correction_id) WHERE (messages.stanza_id IS NULL OR messages.stanza_id='' OR messages.stanza_id=correction_id) AND messages.account_id=? AND messages.chat_id=?",23,4e,0b,77);
+HXLINE( 382)		::Array< ::String > params = ::Array_obj< ::String >::__new(2)->init(0,accountId)->init(1,chatId);
+HXLINE( 383)		if (::hx::IsNotNull( time )) {
+HXLINE( 384)			q = (q + ((HX_(" AND messages.created_at ",3d,a0,ae,bb) + op) + HX_("CAST(unixepoch(?, 'subsec') * 1000 AS INTEGER)",17,de,5d,f8)));
+HXLINE( 385)			params->push(time);
             		}
-HXLINE( 389)		q = (q + HX_(" GROUP BY correction_id, messages.sender_id ORDER BY messages.created_at",6a,b6,3b,02));
-HXLINE( 390)		bool _hx_tmp;
-HXDLIN( 390)		if ((op != HX_("<",3c,00,00,00))) {
-HXLINE( 390)			_hx_tmp = (op == HX_("<=",81,34,00,00));
+HXLINE( 387)		q = (q + HX_(" GROUP BY correction_id, messages.sender_id ORDER BY messages.created_at",6a,b6,3b,02));
+HXLINE( 388)		bool _hx_tmp;
+HXDLIN( 388)		if ((op != HX_("<",3c,00,00,00))) {
+HXLINE( 388)			_hx_tmp = (op == HX_("<=",81,34,00,00));
             		}
             		else {
-HXLINE( 390)			_hx_tmp = true;
+HXLINE( 388)			_hx_tmp = true;
             		}
-HXDLIN( 390)		if (_hx_tmp) {
-HXLINE( 390)			q = (q + HX_(" DESC",71,b6,f9,99));
+HXDLIN( 388)		if (_hx_tmp) {
+HXLINE( 388)			q = (q + HX_(" DESC",71,b6,f9,99));
             		}
-HXLINE( 391)		q = (q + HX_(", messages.ROWID",a7,cc,85,7b));
-HXLINE( 392)		bool _hx_tmp1;
-HXDLIN( 392)		if ((op != HX_("<",3c,00,00,00))) {
-HXLINE( 392)			_hx_tmp1 = (op == HX_("<=",81,34,00,00));
+HXLINE( 389)		q = (q + HX_(", messages.ROWID",a7,cc,85,7b));
+HXLINE( 390)		bool _hx_tmp1;
+HXDLIN( 390)		if ((op != HX_("<",3c,00,00,00))) {
+HXLINE( 390)			_hx_tmp1 = (op == HX_("<=",81,34,00,00));
             		}
             		else {
-HXLINE( 392)			_hx_tmp1 = true;
+HXLINE( 390)			_hx_tmp1 = true;
             		}
-HXDLIN( 392)		if (_hx_tmp1) {
-HXLINE( 392)			q = (q + HX_(" DESC",71,b6,f9,99));
+HXDLIN( 390)		if (_hx_tmp1) {
+HXLINE( 390)			q = (q + HX_(" DESC",71,b6,f9,99));
             		}
-HXLINE( 393)		q = (q + HX_(" LIMIT 50",60,62,1f,3e));
-HXLINE( 394)		return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(q,params), ::Dynamic(new _hx_Closure_0(_gthis,accountId)),null()), ::Dynamic(new _hx_Closure_1(_gthis,op,accountId)),null()), ::Dynamic(new _hx_Closure_2(_gthis,accountId)),null());
+HXLINE( 391)		q = (q + HX_(" LIMIT 50",60,62,1f,3e));
+HXLINE( 392)		return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(q,params), ::Dynamic(new _hx_Closure_0(_gthis,accountId)),null()), ::Dynamic(new _hx_Closure_1(_gthis,op,accountId)),null()), ::Dynamic(new _hx_Closure_2(_gthis,accountId)),null());
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC4(Sqlite_obj,getMessages,return )
 
 void Sqlite_obj::getMessagesBefore(::String accountId,::String chatId,::String beforeId,::String beforeTime, ::Dynamic callback){
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_412_getMessagesBefore)
-HXDLIN( 412)		::thenshim::_Promise::Promise_Impl__obj::then(this->getMessages(accountId,chatId,beforeTime,HX_("<",3c,00,00,00)),callback,null());
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_410_getMessagesBefore)
+HXDLIN( 410)		::thenshim::_Promise::Promise_Impl__obj::then(this->getMessages(accountId,chatId,beforeTime,HX_("<",3c,00,00,00)),callback,null());
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC5(Sqlite_obj,getMessagesBefore,(void))
 
 void Sqlite_obj::getMessagesAfter(::String accountId,::String chatId,::String afterId,::String afterTime, ::Dynamic callback){
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_417_getMessagesAfter)
-HXDLIN( 417)		::thenshim::_Promise::Promise_Impl__obj::then(this->getMessages(accountId,chatId,afterTime,HX_(">",3e,00,00,00)),callback,null());
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_415_getMessagesAfter)
+HXDLIN( 415)		::thenshim::_Promise::Promise_Impl__obj::then(this->getMessages(accountId,chatId,afterTime,HX_(">",3e,00,00,00)),callback,null());
             	}
 
 
@@ -1441,94 +1459,94 @@ HX_DEFINE_DYNAMIC_FUNC5(Sqlite_obj,getMessagesAfter,(void))
 void Sqlite_obj::getMessagesAround(::String accountId,::String chatId,::String aroundId,::String aroundTime, ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_4, ::snikket::persistence::Sqlite,_gthis,::String,chatId,::String,accountId) HXARGC(1)
             		::Dynamic _hx_run(::String aroundTime){
-            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_433_getMessagesAround)
-HXLINE( 434)			::Dynamic _hx_tmp = _gthis->getMessages(accountId,chatId,aroundTime,HX_("<",3c,00,00,00));
-HXLINE( 433)			return ::thenshim::PromiseTools_obj::all(::Array_obj< ::Dynamic>::__new(2)->init(0,_hx_tmp)->init(1,_gthis->getMessages(accountId,chatId,aroundTime,HX_(">=",3f,36,00,00))));
+            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_431_getMessagesAround)
+HXLINE( 432)			::Dynamic _hx_tmp = _gthis->getMessages(accountId,chatId,aroundTime,HX_("<",3c,00,00,00));
+HXLINE( 431)			return ::thenshim::PromiseTools_obj::all(::Array_obj< ::Dynamic>::__new(2)->init(0,_hx_tmp)->init(1,_gthis->getMessages(accountId,chatId,aroundTime,HX_(">=",3f,36,00,00))));
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_5, ::Dynamic,callback) HXARGC(1)
             		void _hx_run(::Array< ::Dynamic> results){
-            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_438_getMessagesAround)
-HXLINE( 438)			 ::Dynamic callback1 = callback;
-HXDLIN( 438)			::Array< ::Dynamic> _g = ::Array_obj< ::Dynamic>::__new(0);
-HXDLIN( 438)			{
-HXLINE( 438)				int _g_current = 0;
-HXDLIN( 438)				::Array< ::Dynamic> _g_array = results;
-HXDLIN( 438)				while((_g_current < _g_array->length)){
-HXLINE( 438)					_g_current = (_g_current + 1);
-HXDLIN( 438)					::Array< ::Dynamic> x = _g_array->__get((_g_current - 1)).StaticCast< ::Array< ::Dynamic> >();
-HXDLIN( 438)					_g->push(x);
-            				}
-            			}
-HXDLIN( 438)			::Array< ::Dynamic> _g1 = ::Array_obj< ::Dynamic>::__new(0);
-HXDLIN( 438)			{
-HXLINE( 438)				 ::Dynamic e = _g->__Field(HX_("iterator",ee,49,9a,93),::hx::paccDynamic)();
-HXDLIN( 438)				while(( (bool)(e->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE( 438)					 ::Dynamic e1 = e->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)();
-HXDLIN( 438)					{
-HXLINE( 438)						 ::Dynamic x1 = e1->__Field(HX_("iterator",ee,49,9a,93),::hx::paccDynamic)();
-HXDLIN( 438)						while(( (bool)(x1->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE( 438)							 ::snikket::ChatMessage x2 = ( ( ::snikket::ChatMessage)(x1->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
-HXDLIN( 438)							_g1->push(x2);
+            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_436_getMessagesAround)
+HXLINE( 436)			 ::Dynamic callback1 = callback;
+HXDLIN( 436)			::Array< ::Dynamic> _g = ::Array_obj< ::Dynamic>::__new(0);
+HXDLIN( 436)			{
+HXLINE( 436)				int _g_current = 0;
+HXDLIN( 436)				::Array< ::Dynamic> _g_array = results;
+HXDLIN( 436)				while((_g_current < _g_array->length)){
+HXLINE( 436)					_g_current = (_g_current + 1);
+HXDLIN( 436)					::Array< ::Dynamic> x = _g_array->__get((_g_current - 1)).StaticCast< ::Array< ::Dynamic> >();
+HXDLIN( 436)					_g->push(x);
+            				}
+            			}
+HXDLIN( 436)			::Array< ::Dynamic> _g1 = ::Array_obj< ::Dynamic>::__new(0);
+HXDLIN( 436)			{
+HXLINE( 436)				 ::Dynamic e = _g->__Field(HX_("iterator",ee,49,9a,93),::hx::paccDynamic)();
+HXDLIN( 436)				while(( (bool)(e->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE( 436)					 ::Dynamic e1 = e->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)();
+HXDLIN( 436)					{
+HXLINE( 436)						 ::Dynamic x1 = e1->__Field(HX_("iterator",ee,49,9a,93),::hx::paccDynamic)();
+HXDLIN( 436)						while(( (bool)(x1->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE( 436)							 ::snikket::ChatMessage x2 = ( ( ::snikket::ChatMessage)(x1->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
+HXDLIN( 436)							_g1->push(x2);
             						}
             					}
             				}
             			}
-HXDLIN( 438)			callback1(_g1);
+HXDLIN( 436)			callback1(_g1);
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_421_getMessagesAround)
-HXDLIN( 421)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 422)		::Dynamic _hx_tmp;
-HXDLIN( 422)		if (::hx::IsNull( aroundTime )) {
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_419_getMessagesAround)
+HXDLIN( 419)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 420)		::Dynamic _hx_tmp;
+HXDLIN( 420)		if (::hx::IsNull( aroundTime )) {
             			HX_BEGIN_LOCAL_FUNC_S4(::hx::LocalFunc,_hx_Closure_0, ::snikket::persistence::Sqlite,_gthis,::String,chatId,::String,aroundId,::String,accountId) HXARGC(2)
             			void _hx_run( ::Dynamic resolve, ::Dynamic reject){
-            				HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_423_getMessagesAround)
-HXLINE( 423)				_gthis->getMessage(accountId,chatId,aroundId,null(),resolve);
+            				HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_421_getMessagesAround)
+HXLINE( 421)				_gthis->getMessage(accountId,chatId,aroundId,null(),resolve);
             			}
             			HX_END_LOCAL_FUNC2((void))
 
             			HX_BEGIN_LOCAL_FUNC_S4(::hx::LocalFunc,_hx_Closure_3, ::snikket::persistence::Sqlite,_gthis,::String,chatId,::String,aroundId,::String,accountId) HXARGC(1)
             			::Dynamic _hx_run( ::snikket::ChatMessage m){
-            				HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_424_getMessagesAround)
-HXLINE( 424)				if (::hx::IsNotNull( m )) {
-HXLINE( 425)					return ::thenshim::_Promise::Promise_Impl__obj::resolve(m->timestamp);
+            				HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_422_getMessagesAround)
+HXLINE( 422)				if (::hx::IsNotNull( m )) {
+HXLINE( 423)					return ::thenshim::_Promise::Promise_Impl__obj::resolve(m->timestamp);
             				}
             				else {
             					HX_BEGIN_LOCAL_FUNC_S4(::hx::LocalFunc,_hx_Closure_1, ::snikket::persistence::Sqlite,_gthis,::String,chatId,::String,aroundId,::String,accountId) HXARGC(2)
             					void _hx_run( ::Dynamic resolve, ::Dynamic reject){
-            						HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_427_getMessagesAround)
-HXLINE( 427)						_gthis->getMessage(accountId,chatId,null(),aroundId,resolve);
+            						HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_425_getMessagesAround)
+HXLINE( 425)						_gthis->getMessage(accountId,chatId,null(),aroundId,resolve);
             					}
             					HX_END_LOCAL_FUNC2((void))
 
             					HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_2) HXARGC(1)
             					::String _hx_run( ::snikket::ChatMessage m){
-            						HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_427_getMessagesAround)
-HXLINE( 427)						if (::hx::IsNotNull( m )) {
-HXLINE( 427)							return m->timestamp;
+            						HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_425_getMessagesAround)
+HXLINE( 425)						if (::hx::IsNotNull( m )) {
+HXLINE( 425)							return m->timestamp;
             						}
             						else {
-HXLINE( 427)							return null();
+HXLINE( 425)							return null();
             						}
-HXDLIN( 427)						return null();
+HXDLIN( 425)						return null();
             					}
             					HX_END_LOCAL_FUNC1(return)
 
-HXLINE( 427)					return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_1(_gthis,chatId,aroundId,accountId))), ::Dynamic(new _hx_Closure_2()),null());
+HXLINE( 425)					return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_1(_gthis,chatId,aroundId,accountId))), ::Dynamic(new _hx_Closure_2()),null());
             				}
-HXLINE( 424)				return null();
+HXLINE( 422)				return null();
             			}
             			HX_END_LOCAL_FUNC1(return)
 
-HXLINE( 422)			_hx_tmp = ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_0(_gthis,chatId,aroundId,accountId))), ::Dynamic(new _hx_Closure_3(_gthis,chatId,aroundId,accountId)),null());
+HXLINE( 420)			_hx_tmp = ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::_new( ::Dynamic(new _hx_Closure_0(_gthis,chatId,aroundId,accountId))), ::Dynamic(new _hx_Closure_3(_gthis,chatId,aroundId,accountId)),null());
             		}
             		else {
-HXLINE( 422)			_hx_tmp = ::thenshim::_Promise::Promise_Impl__obj::resolve(aroundTime);
+HXLINE( 420)			_hx_tmp = ::thenshim::_Promise::Promise_Impl__obj::resolve(aroundTime);
             		}
-HXDLIN( 422)		::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp, ::Dynamic(new _hx_Closure_4(_gthis,chatId,accountId)),null()), ::Dynamic(new _hx_Closure_5(callback)),null());
+HXDLIN( 420)		::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp, ::Dynamic(new _hx_Closure_4(_gthis,chatId,accountId)),null()), ::Dynamic(new _hx_Closure_5(callback)),null());
             	}
 
 
@@ -1537,210 +1555,210 @@ HX_DEFINE_DYNAMIC_FUNC5(Sqlite_obj,getMessagesAround,(void))
 void Sqlite_obj::getChatsUnreadDetails(::String accountId,::Array< ::Dynamic> chats, ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_0, ::snikket::persistence::Sqlite,_gthis,::Array< ::Dynamic>,chats,::String,accountId) HXARGC(1)
             		::Dynamic _hx_run( ::Dynamic _){
-            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_449_getChatsUnreadDetails)
-HXLINE( 450)			::cpp::VirtualArray params = ::cpp::VirtualArray_obj::__new(1)->init(0,accountId);
-HXLINE( 452)			 ::StringBuf subq =  ::StringBuf_obj::__alloc( HX_CTX );
-HXLINE( 453)			{
-HXLINE( 453)				if (::hx::IsNotNull( subq->charBuf )) {
-HXLINE( 453)					subq->flush();
+            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_447_getChatsUnreadDetails)
+HXLINE( 448)			::cpp::VirtualArray params = ::cpp::VirtualArray_obj::__new(1)->init(0,accountId);
+HXLINE( 450)			 ::StringBuf subq =  ::StringBuf_obj::__alloc( HX_CTX );
+HXLINE( 451)			{
+HXLINE( 451)				if (::hx::IsNotNull( subq->charBuf )) {
+HXLINE( 451)					subq->flush();
             				}
-HXDLIN( 453)				if (::hx::IsNull( subq->b )) {
-HXLINE( 453)					subq->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_88,1);
+HXDLIN( 451)				if (::hx::IsNull( subq->b )) {
+HXLINE( 451)					subq->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_88,1);
             				}
             				else {
-HXLINE( 453)					subq->b->push(HX_("SELECT chat_id, ROWID as row, MAX(created_at) AS created_at FROM messages WHERE account_id=?",d0,69,08,92));
+HXLINE( 451)					subq->b->push(HX_("SELECT chat_id, ROWID as row, MAX(created_at) AS created_at FROM messages WHERE account_id=?",d0,69,08,92));
             				}
             			}
-HXLINE( 454)			{
-HXLINE( 454)				if (::hx::IsNotNull( subq->charBuf )) {
-HXLINE( 454)					subq->flush();
+HXLINE( 452)			{
+HXLINE( 452)				if (::hx::IsNotNull( subq->charBuf )) {
+HXLINE( 452)					subq->flush();
             				}
-HXDLIN( 454)				if (::hx::IsNull( subq->b )) {
-HXLINE( 454)					subq->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_89,1);
+HXDLIN( 452)				if (::hx::IsNull( subq->b )) {
+HXLINE( 452)					subq->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_89,1);
             				}
             				else {
-HXLINE( 454)					subq->b->push(HX_(" AND chat_id IN (",14,bd,7b,de));
-            				}
-            			}
-HXLINE( 455)			{
-HXLINE( 455)				int _g_current = 0;
-HXDLIN( 455)				::Array< ::Dynamic> _g_array = chats;
-HXDLIN( 455)				while((_g_current < _g_array->length)){
-HXLINE( 455)					 ::snikket::Chat _g_value = _g_array->__get(_g_current).StaticCast<  ::snikket::Chat >();
-HXDLIN( 455)					_g_current = (_g_current + 1);
-HXDLIN( 455)					int _g_key = (_g_current - 1);
-HXDLIN( 455)					int i = _g_key;
-HXDLIN( 455)					 ::snikket::Chat chat = _g_value;
-HXDLIN( 455)					{
-HXLINE( 456)						if ((i != 0)) {
-HXLINE( 456)							if (::hx::IsNotNull( subq->charBuf )) {
-HXLINE( 456)								subq->flush();
+HXLINE( 452)					subq->b->push(HX_(" AND chat_id IN (",14,bd,7b,de));
+            				}
+            			}
+HXLINE( 453)			{
+HXLINE( 453)				int _g_current = 0;
+HXDLIN( 453)				::Array< ::Dynamic> _g_array = chats;
+HXDLIN( 453)				while((_g_current < _g_array->length)){
+HXLINE( 453)					 ::snikket::Chat _g_value = _g_array->__get(_g_current).StaticCast<  ::snikket::Chat >();
+HXDLIN( 453)					_g_current = (_g_current + 1);
+HXDLIN( 453)					int _g_key = (_g_current - 1);
+HXDLIN( 453)					int i = _g_key;
+HXDLIN( 453)					 ::snikket::Chat chat = _g_value;
+HXDLIN( 453)					{
+HXLINE( 454)						if ((i != 0)) {
+HXLINE( 454)							if (::hx::IsNotNull( subq->charBuf )) {
+HXLINE( 454)								subq->flush();
             							}
-HXDLIN( 456)							if (::hx::IsNull( subq->b )) {
-HXLINE( 456)								subq->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_90,1);
+HXDLIN( 454)							if (::hx::IsNull( subq->b )) {
+HXLINE( 454)								subq->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_90,1);
             							}
             							else {
-HXLINE( 456)								subq->b->push(HX_(",",2c,00,00,00));
+HXLINE( 454)								subq->b->push(HX_(",",2c,00,00,00));
             							}
             						}
-HXLINE( 457)						{
-HXLINE( 457)							if (::hx::IsNotNull( subq->charBuf )) {
-HXLINE( 457)								subq->flush();
+HXLINE( 455)						{
+HXLINE( 455)							if (::hx::IsNotNull( subq->charBuf )) {
+HXLINE( 455)								subq->flush();
             							}
-HXDLIN( 457)							if (::hx::IsNull( subq->b )) {
-HXLINE( 457)								subq->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_91,1);
+HXDLIN( 455)							if (::hx::IsNull( subq->b )) {
+HXLINE( 455)								subq->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_91,1);
             							}
             							else {
-HXLINE( 457)								subq->b->push(HX_("?",3f,00,00,00));
+HXLINE( 455)								subq->b->push(HX_("?",3f,00,00,00));
             							}
             						}
-HXLINE( 458)						params->push(chat->chatId);
+HXLINE( 456)						params->push(chat->chatId);
             					}
             				}
             			}
-HXLINE( 460)			{
-HXLINE( 460)				if (::hx::IsNotNull( subq->charBuf )) {
-HXLINE( 460)					subq->flush();
+HXLINE( 458)			{
+HXLINE( 458)				if (::hx::IsNotNull( subq->charBuf )) {
+HXLINE( 458)					subq->flush();
             				}
-HXDLIN( 460)				if (::hx::IsNull( subq->b )) {
-HXLINE( 460)					subq->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_92,1);
+HXDLIN( 458)				if (::hx::IsNull( subq->b )) {
+HXLINE( 458)					subq->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_92,1);
             				}
             				else {
-HXLINE( 460)					subq->b->push(HX_(") AND (mam_id IN (",64,f4,1c,69));
-            				}
-            			}
-HXLINE( 461)			bool didOne = false;
-HXLINE( 462)			{
-HXLINE( 462)				int _g = 0;
-HXDLIN( 462)				while((_g < chats->length)){
-HXLINE( 462)					 ::snikket::Chat chat1 = chats->__get(_g).StaticCast<  ::snikket::Chat >();
-HXDLIN( 462)					_g = (_g + 1);
-HXLINE( 463)					if (::hx::IsNotNull( chat1->readUpTo() )) {
-HXLINE( 464)						if (didOne) {
-HXLINE( 464)							if (::hx::IsNotNull( subq->charBuf )) {
-HXLINE( 464)								subq->flush();
+HXLINE( 458)					subq->b->push(HX_(") AND (mam_id IN (",64,f4,1c,69));
+            				}
+            			}
+HXLINE( 459)			bool didOne = false;
+HXLINE( 460)			{
+HXLINE( 460)				int _g = 0;
+HXDLIN( 460)				while((_g < chats->length)){
+HXLINE( 460)					 ::snikket::Chat chat1 = chats->__get(_g).StaticCast<  ::snikket::Chat >();
+HXDLIN( 460)					_g = (_g + 1);
+HXLINE( 461)					if (::hx::IsNotNull( chat1->readUpTo() )) {
+HXLINE( 462)						if (didOne) {
+HXLINE( 462)							if (::hx::IsNotNull( subq->charBuf )) {
+HXLINE( 462)								subq->flush();
             							}
-HXDLIN( 464)							if (::hx::IsNull( subq->b )) {
-HXLINE( 464)								subq->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_93,1);
+HXDLIN( 462)							if (::hx::IsNull( subq->b )) {
+HXLINE( 462)								subq->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_93,1);
             							}
             							else {
-HXLINE( 464)								subq->b->push(HX_(",",2c,00,00,00));
+HXLINE( 462)								subq->b->push(HX_(",",2c,00,00,00));
             							}
             						}
-HXLINE( 465)						{
-HXLINE( 465)							if (::hx::IsNotNull( subq->charBuf )) {
-HXLINE( 465)								subq->flush();
+HXLINE( 463)						{
+HXLINE( 463)							if (::hx::IsNotNull( subq->charBuf )) {
+HXLINE( 463)								subq->flush();
             							}
-HXDLIN( 465)							if (::hx::IsNull( subq->b )) {
-HXLINE( 465)								subq->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_94,1);
+HXDLIN( 463)							if (::hx::IsNull( subq->b )) {
+HXLINE( 463)								subq->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_94,1);
             							}
             							else {
-HXLINE( 465)								subq->b->push(HX_("?",3f,00,00,00));
+HXLINE( 463)								subq->b->push(HX_("?",3f,00,00,00));
             							}
             						}
-HXLINE( 466)						params->push(chat1->readUpTo());
-HXLINE( 467)						didOne = true;
+HXLINE( 464)						params->push(chat1->readUpTo());
+HXLINE( 465)						didOne = true;
             					}
             				}
             			}
-HXLINE( 470)			{
-HXLINE( 470)				if (::hx::IsNotNull( subq->charBuf )) {
-HXLINE( 470)					subq->flush();
+HXLINE( 468)			{
+HXLINE( 468)				if (::hx::IsNotNull( subq->charBuf )) {
+HXLINE( 468)					subq->flush();
             				}
-HXDLIN( 470)				if (::hx::IsNull( subq->b )) {
-HXLINE( 470)					subq->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_95,1);
+HXDLIN( 468)				if (::hx::IsNull( subq->b )) {
+HXLINE( 468)					subq->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_95,1);
             				}
             				else {
-HXLINE( 470)					subq->b->push(HX_(") OR direction=?) GROUP BY chat_id",cc,ab,94,e3));
+HXLINE( 468)					subq->b->push(HX_(") OR direction=?) GROUP BY chat_id",cc,ab,94,e3));
             				}
             			}
-HXLINE( 471)			params->push(1);
-HXLINE( 473)			 ::StringBuf q =  ::StringBuf_obj::__alloc( HX_CTX );
-HXLINE( 474)			{
-HXLINE( 474)				if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 474)					q->flush();
+HXLINE( 469)			params->push(1);
+HXLINE( 471)			 ::StringBuf q =  ::StringBuf_obj::__alloc( HX_CTX );
+HXLINE( 472)			{
+HXLINE( 472)				if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 472)					q->flush();
             				}
-HXDLIN( 474)				if (::hx::IsNull( q->b )) {
-HXLINE( 474)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_96,1);
+HXDLIN( 472)				if (::hx::IsNull( q->b )) {
+HXLINE( 472)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_96,1);
             				}
             				else {
-HXLINE( 474)					q->b->push(HX_("SELECT chat_id AS chatId, stanza, direction, type, status, sender_id, mam_id, mam_by, sync_point, CASE WHEN subq.created_at IS NULL THEN COUNT(*) ELSE COUNT(*) - 1 END AS unreadCount, strftime('%FT%H:%M:%fZ', MAX(messages.created_at) / 1000.0, 'unixepoch') AS timestamp FROM messages LEFT JOIN (",2a,b0,45,a6));
+HXLINE( 472)					q->b->push(HX_("SELECT chat_id AS chatId, stanza, direction, type, status, sender_id, mam_id, mam_by, sync_point, CASE WHEN subq.created_at IS NULL THEN COUNT(*) ELSE COUNT(*) - 1 END AS unreadCount, strftime('%FT%H:%M:%fZ', MAX(messages.created_at) / 1000.0, 'unixepoch') AS timestamp FROM messages LEFT JOIN (",2a,b0,45,a6));
             				}
             			}
-HXLINE( 475)			{
-HXLINE( 475)				::String x = subq->toString();
-HXDLIN( 475)				if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 475)					q->flush();
+HXLINE( 473)			{
+HXLINE( 473)				::String x = subq->toString();
+HXDLIN( 473)				if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 473)					q->flush();
             				}
-HXDLIN( 475)				if (::hx::IsNull( q->b )) {
-HXLINE( 475)					q->b = ::Array_obj< ::String >::__new(1)->init(0,::Std_obj::string(x));
+HXDLIN( 473)				if (::hx::IsNull( q->b )) {
+HXLINE( 473)					q->b = ::Array_obj< ::String >::__new(1)->init(0,::Std_obj::string(x));
             				}
             				else {
-HXLINE( 475)					::Array< ::String > q1 = q->b;
-HXDLIN( 475)					q1->push(::Std_obj::string(x));
+HXLINE( 473)					::Array< ::String > q1 = q->b;
+HXDLIN( 473)					q1->push(::Std_obj::string(x));
             				}
             			}
-HXLINE( 476)			{
-HXLINE( 476)				if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 476)					q->flush();
+HXLINE( 474)			{
+HXLINE( 474)				if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 474)					q->flush();
             				}
-HXDLIN( 476)				if (::hx::IsNull( q->b )) {
-HXLINE( 476)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_97,1);
+HXDLIN( 474)				if (::hx::IsNull( q->b )) {
+HXLINE( 474)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_97,1);
             				}
             				else {
-HXLINE( 476)					q->b->push(HX_(") subq USING (chat_id) WHERE account_id=? AND (stanza_id IS NULL OR stanza_id='' OR stanza_id=correction_id) AND chat_id IN (",e7,a1,32,e5));
-            				}
-            			}
-HXLINE( 477)			params->push(accountId);
-HXLINE( 478)			{
-HXLINE( 478)				int _g_current1 = 0;
-HXDLIN( 478)				::Array< ::Dynamic> _g_array1 = chats;
-HXDLIN( 478)				while((_g_current1 < _g_array1->length)){
-HXLINE( 478)					 ::snikket::Chat _g_value1 = _g_array1->__get(_g_current1).StaticCast<  ::snikket::Chat >();
-HXDLIN( 478)					_g_current1 = (_g_current1 + 1);
-HXDLIN( 478)					int _g_key1 = (_g_current1 - 1);
-HXDLIN( 478)					int i1 = _g_key1;
-HXDLIN( 478)					 ::snikket::Chat chat2 = _g_value1;
-HXDLIN( 478)					{
-HXLINE( 479)						if ((i1 != 0)) {
-HXLINE( 479)							if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 479)								q->flush();
+HXLINE( 474)					q->b->push(HX_(") subq USING (chat_id) WHERE account_id=? AND (stanza_id IS NULL OR stanza_id='' OR stanza_id=correction_id) AND chat_id IN (",e7,a1,32,e5));
+            				}
+            			}
+HXLINE( 475)			params->push(accountId);
+HXLINE( 476)			{
+HXLINE( 476)				int _g_current1 = 0;
+HXDLIN( 476)				::Array< ::Dynamic> _g_array1 = chats;
+HXDLIN( 476)				while((_g_current1 < _g_array1->length)){
+HXLINE( 476)					 ::snikket::Chat _g_value1 = _g_array1->__get(_g_current1).StaticCast<  ::snikket::Chat >();
+HXDLIN( 476)					_g_current1 = (_g_current1 + 1);
+HXDLIN( 476)					int _g_key1 = (_g_current1 - 1);
+HXDLIN( 476)					int i1 = _g_key1;
+HXDLIN( 476)					 ::snikket::Chat chat2 = _g_value1;
+HXDLIN( 476)					{
+HXLINE( 477)						if ((i1 != 0)) {
+HXLINE( 477)							if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 477)								q->flush();
             							}
-HXDLIN( 479)							if (::hx::IsNull( q->b )) {
-HXLINE( 479)								q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_98,1);
+HXDLIN( 477)							if (::hx::IsNull( q->b )) {
+HXLINE( 477)								q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_98,1);
             							}
             							else {
-HXLINE( 479)								q->b->push(HX_(",",2c,00,00,00));
+HXLINE( 477)								q->b->push(HX_(",",2c,00,00,00));
             							}
             						}
-HXLINE( 480)						{
-HXLINE( 480)							if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 480)								q->flush();
+HXLINE( 478)						{
+HXLINE( 478)							if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 478)								q->flush();
             							}
-HXDLIN( 480)							if (::hx::IsNull( q->b )) {
-HXLINE( 480)								q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_99,1);
+HXDLIN( 478)							if (::hx::IsNull( q->b )) {
+HXLINE( 478)								q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_99,1);
             							}
             							else {
-HXLINE( 480)								q->b->push(HX_("?",3f,00,00,00));
+HXLINE( 478)								q->b->push(HX_("?",3f,00,00,00));
             							}
             						}
-HXLINE( 481)						params->push(chat2->chatId);
+HXLINE( 479)						params->push(chat2->chatId);
             					}
             				}
             			}
-HXLINE( 483)			{
-HXLINE( 483)				if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 483)					q->flush();
+HXLINE( 481)			{
+HXLINE( 481)				if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 481)					q->flush();
             				}
-HXDLIN( 483)				if (::hx::IsNull( q->b )) {
-HXLINE( 483)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_100,1);
+HXDLIN( 481)				if (::hx::IsNull( q->b )) {
+HXLINE( 481)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_100,1);
             				}
             				else {
-HXLINE( 483)					q->b->push(HX_(") AND (subq.created_at IS NULL OR messages.created_at > subq.created_at OR (messages.created_at=subq.created_at AND messages.ROWID >= subq.row)) GROUP BY chat_id;",58,6f,52,ea));
+HXLINE( 481)					q->b->push(HX_(") AND (subq.created_at IS NULL OR messages.created_at > subq.created_at OR (messages.created_at=subq.created_at AND messages.ROWID >= subq.row)) GROUP BY chat_id;",58,6f,52,ea));
             				}
             			}
-HXLINE( 484)			 ::snikket::persistence::SqliteDriver _gthis1 = _gthis->db;
-HXDLIN( 484)			return _gthis1->exec(q->toString(),params);
+HXLINE( 482)			 ::snikket::persistence::SqliteDriver _gthis1 = _gthis->db;
+HXDLIN( 482)			return _gthis1->exec(q->toString(),params);
             		}
             		HX_END_LOCAL_FUNC1(return)
 
@@ -1748,13 +1766,13 @@ HXDLIN( 484)			return _gthis1->exec(q->toString(),params);
             		::cpp::VirtualArray _hx_run( ::haxe::iterators::ArrayIterator result){
             			HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_1, ::haxe::iterators::ArrayIterator,result) HXARGC(0)
             			 ::haxe::iterators::ArrayIterator _hx_run(){
-            				HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_486_getChatsUnreadDetails)
-HXLINE( 486)				return result;
+            				HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_484_getChatsUnreadDetails)
+HXLINE( 484)				return result;
             			}
             			HX_END_LOCAL_FUNC0(return)
 
-            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_486_getChatsUnreadDetails)
-HXLINE( 486)			return ::Lambda_obj::array( ::Dynamic(::hx::Anon_obj::Create(1)
+            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_484_getChatsUnreadDetails)
+HXLINE( 484)			return ::Lambda_obj::array( ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("iterator",ee,49,9a,93), ::Dynamic(new _hx_Closure_1(result)))));
             		}
             		HX_END_LOCAL_FUNC1(return)
@@ -1763,48 +1781,48 @@ HXLINE( 486)			return ::Lambda_obj::array( ::Dynamic(::hx::Anon_obj::Create(1)
             		::Dynamic _hx_run(::cpp::VirtualArray rows){
             			HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_3,::cpp::VirtualArray,rows, ::Dynamic,callback) HXARGC(1)
             			void _hx_run(::Array< ::Dynamic> messages){
-            				HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_488_getChatsUnreadDetails)
-HXLINE( 489)				::Array< ::Dynamic> details = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 490)				{
-HXLINE( 490)					int _g_current = 0;
-HXDLIN( 490)					::Array< ::Dynamic> _g_array = messages;
-HXDLIN( 490)					while((_g_current < _g_array->length)){
-HXLINE( 490)						 ::snikket::ChatMessage _g_value = _g_array->__get(_g_current).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN( 490)						_g_current = (_g_current + 1);
-HXDLIN( 490)						int _g_key = (_g_current - 1);
-HXDLIN( 490)						int i = _g_key;
-HXDLIN( 490)						 ::snikket::ChatMessage m = _g_value;
-HXLINE( 491)						details->push( ::Dynamic(::hx::Anon_obj::Create(3)
+            				HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_486_getChatsUnreadDetails)
+HXLINE( 487)				::Array< ::Dynamic> details = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 488)				{
+HXLINE( 488)					int _g_current = 0;
+HXDLIN( 488)					::Array< ::Dynamic> _g_array = messages;
+HXDLIN( 488)					while((_g_current < _g_array->length)){
+HXLINE( 488)						 ::snikket::ChatMessage _g_value = _g_array->__get(_g_current).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN( 488)						_g_current = (_g_current + 1);
+HXDLIN( 488)						int _g_key = (_g_current - 1);
+HXDLIN( 488)						int i = _g_key;
+HXDLIN( 488)						 ::snikket::ChatMessage m = _g_value;
+HXLINE( 489)						details->push( ::Dynamic(::hx::Anon_obj::Create(3)
             							->setFixed(0,HX_("message",c7,35,11,9a),m)
             							->setFixed(1,HX_("unreadCount",20,18,f1,a0), ::Dynamic(rows->__get(i)->__Field(HX_("unreadCount",20,18,f1,a0),::hx::paccDynamic)))
             							->setFixed(2,HX_("chatId",d3,04,77,b7), ::Dynamic(rows->__get(i)->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)))));
             					}
             				}
-HXLINE( 497)				callback(details);
+HXLINE( 495)				callback(details);
             			}
             			HX_END_LOCAL_FUNC1((void))
 
-            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_487_getChatsUnreadDetails)
-HXLINE( 488)			 ::snikket::persistence::Sqlite _gthis1 = _gthis;
-HXDLIN( 488)			::String accountId1 = accountId;
-HXLINE( 487)			return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::resolve(_gthis1->hydrateMessages(accountId1, ::haxe::iterators::ArrayIterator_obj::__alloc( HX_CTX ,rows))), ::Dynamic(new _hx_Closure_3(rows,callback)),null());
+            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_485_getChatsUnreadDetails)
+HXLINE( 486)			 ::snikket::persistence::Sqlite _gthis1 = _gthis;
+HXDLIN( 486)			::String accountId1 = accountId;
+HXLINE( 485)			return ::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::resolve(_gthis1->hydrateMessages(accountId1, ::haxe::iterators::ArrayIterator_obj::__alloc( HX_CTX ,rows))), ::Dynamic(new _hx_Closure_3(rows,callback)),null());
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_443_getChatsUnreadDetails)
-HXDLIN( 443)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 444)		bool _hx_tmp;
-HXDLIN( 444)		if (::hx::IsNotNull( chats )) {
-HXLINE( 444)			_hx_tmp = (chats->length < 1);
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_441_getChatsUnreadDetails)
+HXDLIN( 441)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 442)		bool _hx_tmp;
+HXDLIN( 442)		if (::hx::IsNotNull( chats )) {
+HXLINE( 442)			_hx_tmp = (chats->length < 1);
             		}
             		else {
-HXLINE( 444)			_hx_tmp = true;
+HXLINE( 442)			_hx_tmp = true;
             		}
-HXDLIN( 444)		if (_hx_tmp) {
-HXLINE( 445)			callback(::Array_obj< ::Dynamic>::__new(0));
-HXLINE( 446)			return;
+HXDLIN( 442)		if (_hx_tmp) {
+HXLINE( 443)			callback(::Array_obj< ::Dynamic>::__new(0));
+HXLINE( 444)			return;
             		}
-HXLINE( 449)		::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::resolve(null()), ::Dynamic(new _hx_Closure_0(_gthis,chats,accountId)),null()), ::Dynamic(new _hx_Closure_2()),null()), ::Dynamic(new _hx_Closure_4(_gthis,accountId,callback)),null());
+HXLINE( 447)		::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::resolve(null()), ::Dynamic(new _hx_Closure_0(_gthis,chats,accountId)),null()), ::Dynamic(new _hx_Closure_2()),null()), ::Dynamic(new _hx_Closure_4(_gthis,accountId,callback)),null());
             	}
 
 
@@ -1813,24 +1831,24 @@ HX_DEFINE_DYNAMIC_FUNC3(Sqlite_obj,getChatsUnreadDetails,(void))
 void Sqlite_obj::storeReaction(::String accountId, ::snikket::ReactionUpdate update, ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S4(::hx::LocalFunc,_hx_Closure_0, ::snikket::persistence::Sqlite,_gthis,::String,accountId, ::snikket::ReactionUpdate,update, ::Dynamic,callback) HXARGC(1)
             		void _hx_run( ::haxe::iterators::ArrayIterator _){
-            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_512_storeReaction)
-HXLINE( 512)			_gthis->getMessage(accountId,update->chatId,update->serverId,update->localId,callback);
+            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_510_storeReaction)
+HXLINE( 510)			_gthis->getMessage(accountId,update->chatId,update->serverId,update->localId,callback);
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_503_storeReaction)
-HXDLIN( 503)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 504)		 ::snikket::persistence::SqliteDriver _hx_tmp = this->db;
-HXLINE( 507)		::String accountId1 = accountId;
-HXDLIN( 507)		::String update1 = update->updateId;
-HXDLIN( 507)		::String update2 = update->serverId;
-HXDLIN( 507)		::String update3 = update->serverIdBy;
-HXLINE( 508)		::String update4 = update->localId;
-HXDLIN( 508)		::String update5 = update->chatId;
-HXDLIN( 508)		::String update6 = update->senderId;
-HXDLIN( 508)		::String update7 = update->timestamp;
-HXLINE( 509)		::String _hx_tmp1 = ::snikket::JsonPrinter_obj::print(update->reactions,null(),null());
-HXLINE( 504)		::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp->exec(HX_("INSERT OR REPLACE INTO reactions VALUES (?,?,?,?,?,?,?,CAST(unixepoch(?, 'subsec') * 1000 AS INTEGER),jsonb(?),?)",e2,55,57,48),::cpp::VirtualArray_obj::__new(10)->init(0,accountId1)->init(1,update1)->init(2,update2)->init(3,update3)->init(4,update4)->init(5,update5)->init(6,update6)->init(7,update7)->init(8,_hx_tmp1)->init(9,update->kind)), ::Dynamic(new _hx_Closure_0(_gthis,accountId,update,callback)),null());
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_501_storeReaction)
+HXDLIN( 501)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 502)		 ::snikket::persistence::SqliteDriver _hx_tmp = this->db;
+HXLINE( 505)		::String accountId1 = accountId;
+HXDLIN( 505)		::String update1 = update->updateId;
+HXDLIN( 505)		::String update2 = update->serverId;
+HXDLIN( 505)		::String update3 = update->serverIdBy;
+HXLINE( 506)		::String update4 = update->localId;
+HXDLIN( 506)		::String update5 = update->chatId;
+HXDLIN( 506)		::String update6 = update->senderId;
+HXDLIN( 506)		::String update7 = update->timestamp;
+HXLINE( 507)		::String _hx_tmp1 = ::snikket::JsonPrinter_obj::print(update->reactions,null(),null());
+HXLINE( 502)		::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp->exec(HX_("INSERT OR REPLACE INTO reactions VALUES (?,?,?,?,?,?,?,CAST(unixepoch(?, 'subsec') * 1000 AS INTEGER),jsonb(?),?)",e2,55,57,48),::cpp::VirtualArray_obj::__new(10)->init(0,accountId1)->init(1,update1)->init(2,update2)->init(3,update3)->init(4,update4)->init(5,update5)->init(6,update6)->init(7,update7)->init(8,_hx_tmp1)->init(9,update->kind)), ::Dynamic(new _hx_Closure_0(_gthis,accountId,update,callback)),null());
             	}
 
 
@@ -1839,161 +1857,161 @@ HX_DEFINE_DYNAMIC_FUNC3(Sqlite_obj,storeReaction,(void))
 void Sqlite_obj::updateMessageStatus(::String accountId,::String localId,int status, ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_0, ::snikket::persistence::Sqlite,_gthis,::String,localId,::String,accountId) HXARGC(1)
             		::Dynamic _hx_run( ::haxe::iterators::ArrayIterator _){
-            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_522_updateMessageStatus)
-HXLINE( 522)			return _gthis->db->exec(HX_("SELECT stanza, direction, type, status, strftime('%FT%H:%M:%fZ', created_at / 1000.0, 'unixepoch') AS timestamp, sender_id, correction_id AS stanza_id, mam_id, mam_by, sync_point FROM messages WHERE account_id=? AND stanza_id=? AND direction=?",7b,f7,03,13),::cpp::VirtualArray_obj::__new(3)->init(0,accountId)->init(1,localId)->init(2,1));
+            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_520_updateMessageStatus)
+HXLINE( 520)			return _gthis->db->exec(HX_("SELECT stanza, direction, type, status, strftime('%FT%H:%M:%fZ', created_at / 1000.0, 'unixepoch') AS timestamp, sender_id, correction_id AS stanza_id, mam_id, mam_by, sync_point FROM messages WHERE account_id=? AND stanza_id=? AND direction=?",7b,f7,03,13),::cpp::VirtualArray_obj::__new(3)->init(0,accountId)->init(1,localId)->init(2,1));
             		}
             		HX_END_LOCAL_FUNC1(return)
 
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_3, ::snikket::persistence::Sqlite,_gthis,::String,accountId, ::Dynamic,callback) HXARGC(1)
             		void _hx_run( ::haxe::iterators::ArrayIterator result){
-            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_526_updateMessageStatus)
-HXLINE( 527)			::Array< ::Dynamic> messages = _gthis->hydrateMessages(accountId,result);
-HXLINE( 528)			{
-HXLINE( 528)				int _g = 0;
-HXDLIN( 528)				while((_g < messages->length)){
+            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_524_updateMessageStatus)
+HXLINE( 525)			::Array< ::Dynamic> messages = _gthis->hydrateMessages(accountId,result);
+HXLINE( 526)			{
+HXLINE( 526)				int _g = 0;
+HXDLIN( 526)				while((_g < messages->length)){
             					HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_1, ::snikket::persistence::Sqlite,_gthis,::String,accountId) HXARGC(1)
             					::Dynamic _hx_run(::Array< ::Dynamic> messages){
-            						HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_533_updateMessageStatus)
-HXLINE( 533)						return _gthis->hydrateReactions(accountId,messages);
+            						HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_531_updateMessageStatus)
+HXLINE( 531)						return _gthis->hydrateReactions(accountId,messages);
             					}
             					HX_END_LOCAL_FUNC1(return)
 
             					HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_2, ::Dynamic,callback) HXARGC(1)
             					void _hx_run(::Array< ::Dynamic> hydrated){
-            						HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_533_updateMessageStatus)
-HXLINE( 533)						callback(hydrated->__get(0).StaticCast<  ::snikket::ChatMessage >());
+            						HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_531_updateMessageStatus)
+HXLINE( 531)						callback(hydrated->__get(0).StaticCast<  ::snikket::ChatMessage >());
             					}
             					HX_END_LOCAL_FUNC1((void))
 
-HXLINE( 528)					 ::snikket::ChatMessage message = messages->__get(_g).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN( 528)					_g = (_g + 1);
-HXLINE( 529)					::Dynamic _hx_tmp;
-HXDLIN( 529)					if (::hx::IsNotNull( message->replyToMessage )) {
-HXLINE( 530)						 ::snikket::persistence::Sqlite _gthis1 = _gthis;
-HXDLIN( 530)						::String accountId1 = accountId;
-HXDLIN( 530)						::String _hx_tmp1 = message->chatId();
-HXLINE( 529)						_hx_tmp = _gthis1->hydrateReplyTo(accountId1,::Array_obj< ::Dynamic>::__new(1)->init(0,message),::Array_obj< ::Dynamic>::__new(1)->init(0, ::Dynamic(::hx::Anon_obj::Create(3)
+HXLINE( 526)					 ::snikket::ChatMessage message = messages->__get(_g).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN( 526)					_g = (_g + 1);
+HXLINE( 527)					::Dynamic _hx_tmp;
+HXDLIN( 527)					if (::hx::IsNotNull( message->replyToMessage )) {
+HXLINE( 528)						 ::snikket::persistence::Sqlite _gthis1 = _gthis;
+HXDLIN( 528)						::String accountId1 = accountId;
+HXDLIN( 528)						::String _hx_tmp1 = message->chatId();
+HXLINE( 527)						_hx_tmp = _gthis1->hydrateReplyTo(accountId1,::Array_obj< ::Dynamic>::__new(1)->init(0,message),::Array_obj< ::Dynamic>::__new(1)->init(0, ::Dynamic(::hx::Anon_obj::Create(3)
             							->setFixed(0,HX_("chatId",d3,04,77,b7),_hx_tmp1)
             							->setFixed(1,HX_("serverId",7e,01,b2,e2),message->replyToMessage->serverId)
             							->setFixed(2,HX_("localId",26,7a,c6,2d),message->replyToMessage->localId))));
             					}
             					else {
-HXLINE( 529)						_hx_tmp = ::thenshim::_Promise::Promise_Impl__obj::resolve(::Array_obj< ::Dynamic>::__new(1)->init(0,message));
+HXLINE( 527)						_hx_tmp = ::thenshim::_Promise::Promise_Impl__obj::resolve(::Array_obj< ::Dynamic>::__new(1)->init(0,message));
             					}
-HXDLIN( 529)					::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp, ::Dynamic(new _hx_Closure_1(_gthis,accountId)),null()), ::Dynamic(new _hx_Closure_2(callback)),null());
-HXLINE( 534)					return;
+HXDLIN( 527)					::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp, ::Dynamic(new _hx_Closure_1(_gthis,accountId)),null()), ::Dynamic(new _hx_Closure_2(callback)),null());
+HXLINE( 532)					return;
             				}
             			}
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_517_updateMessageStatus)
-HXDLIN( 517)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 518)		::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(HX_("UPDATE messages SET status=? WHERE account_id=? AND stanza_id=? AND direction=? AND status <> ?",75,90,3c,fc),::cpp::VirtualArray_obj::__new(5)->init(0,status)->init(1,accountId)->init(2,localId)->init(3,1)->init(4,2)), ::Dynamic(new _hx_Closure_0(_gthis,localId,accountId)),null()), ::Dynamic(new _hx_Closure_3(_gthis,accountId,callback)),null());
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_515_updateMessageStatus)
+HXDLIN( 515)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 516)		::thenshim::_Promise::Promise_Impl__obj::then(::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(HX_("UPDATE messages SET status=? WHERE account_id=? AND stanza_id=? AND direction=? AND status <> ?",75,90,3c,fc),::cpp::VirtualArray_obj::__new(5)->init(0,status)->init(1,accountId)->init(2,localId)->init(3,1)->init(4,2)), ::Dynamic(new _hx_Closure_0(_gthis,localId,accountId)),null()), ::Dynamic(new _hx_Closure_3(_gthis,accountId,callback)),null());
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC4(Sqlite_obj,updateMessageStatus,(void))
 
 void Sqlite_obj::hasMedia(::String hashAlgorithm,::Array< unsigned char > hash, ::Dynamic callback){
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_541_hasMedia)
-HXDLIN( 541)		::snikket::persistence::MediaStore_obj::hasMedia(this->media,hashAlgorithm,hash,callback);
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_539_hasMedia)
+HXDLIN( 539)		::snikket::persistence::MediaStore_obj::hasMedia(this->media,hashAlgorithm,hash,callback);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC3(Sqlite_obj,hasMedia,(void))
 
 void Sqlite_obj::removeMedia(::String hashAlgorithm,::Array< unsigned char > hash){
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_546_removeMedia)
-HXDLIN( 546)		::snikket::persistence::MediaStore_obj::removeMedia(this->media,hashAlgorithm,hash);
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_544_removeMedia)
+HXDLIN( 544)		::snikket::persistence::MediaStore_obj::removeMedia(this->media,hashAlgorithm,hash);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC2(Sqlite_obj,removeMedia,(void))
 
 void Sqlite_obj::storeMedia(::String mime,::Array< unsigned char > bd, ::Dynamic callback){
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_551_storeMedia)
-HXDLIN( 551)		::snikket::persistence::MediaStore_obj::storeMedia(this->media,mime,bd,callback);
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_549_storeMedia)
+HXDLIN( 549)		::snikket::persistence::MediaStore_obj::storeMedia(this->media,mime,bd,callback);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC3(Sqlite_obj,storeMedia,(void))
 
 void Sqlite_obj::storeCaps( ::snikket::Caps caps){
-            	HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_556_storeCaps)
-HXDLIN( 556)		 ::haxe::ds::ObjectMap _g =  ::haxe::ds::ObjectMap_obj::__alloc( HX_CTX );
-HXDLIN( 556)		_g->set(caps->verRaw()->hash,caps);
-HXDLIN( 556)		this->storeCapsSet(_g);
+            	HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_554_storeCaps)
+HXDLIN( 554)		 ::haxe::ds::ObjectMap _g =  ::haxe::ds::ObjectMap_obj::__alloc( HX_CTX );
+HXDLIN( 554)		_g->set(caps->verRaw()->hash,caps);
+HXDLIN( 554)		this->storeCapsSet(_g);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(Sqlite_obj,storeCaps,(void))
 
 void Sqlite_obj::storeCapsSet( ::haxe::ds::ObjectMap capsSet){
-            	HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_559_storeCapsSet)
-HXLINE( 560)		::cpp::VirtualArray params = ::cpp::VirtualArray_obj::__new(0);
-HXLINE( 561)		 ::StringBuf q =  ::StringBuf_obj::__alloc( HX_CTX );
-HXLINE( 562)		{
-HXLINE( 562)			if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 562)				q->flush();
+            	HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_557_storeCapsSet)
+HXLINE( 558)		::cpp::VirtualArray params = ::cpp::VirtualArray_obj::__new(0);
+HXLINE( 559)		 ::StringBuf q =  ::StringBuf_obj::__alloc( HX_CTX );
+HXLINE( 560)		{
+HXLINE( 560)			if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 560)				q->flush();
             			}
-HXDLIN( 562)			if (::hx::IsNull( q->b )) {
-HXLINE( 562)				q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_120,1);
+HXDLIN( 560)			if (::hx::IsNull( q->b )) {
+HXLINE( 560)				q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_120,1);
             			}
             			else {
-HXLINE( 562)				q->b->push(HX_("INSERT OR IGNORE INTO caps VALUES ",27,4b,68,bf));
-            			}
-            		}
-HXLINE( 563)		bool first = true;
-HXLINE( 564)		{
-HXLINE( 564)			::Dynamic map = capsSet;
-HXDLIN( 564)			::Dynamic _g_map = map;
-HXDLIN( 564)			 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
-HXDLIN( 564)			while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE( 564)				::Array< unsigned char > key = ( (::Array< unsigned char >)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
-HXDLIN( 564)				 ::snikket::Caps _g_value = ( ( ::snikket::Caps)(::haxe::IMap_obj::get(_g_map,key)) );
-HXDLIN( 564)				::Array< unsigned char > _g_key = key;
-HXDLIN( 564)				::Array< unsigned char > ver = _g_key;
-HXDLIN( 564)				 ::snikket::Caps caps = _g_value;
-HXDLIN( 564)				{
-HXLINE( 565)					if (!(first)) {
-HXLINE( 565)						if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 565)							q->flush();
+HXLINE( 560)				q->b->push(HX_("INSERT OR IGNORE INTO caps VALUES ",27,4b,68,bf));
+            			}
+            		}
+HXLINE( 561)		bool first = true;
+HXLINE( 562)		{
+HXLINE( 562)			::Dynamic map = capsSet;
+HXDLIN( 562)			::Dynamic _g_map = map;
+HXDLIN( 562)			 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
+HXDLIN( 562)			while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE( 562)				::Array< unsigned char > key = ( (::Array< unsigned char >)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
+HXDLIN( 562)				 ::snikket::Caps _g_value = ( ( ::snikket::Caps)(::haxe::IMap_obj::get(_g_map,key)) );
+HXDLIN( 562)				::Array< unsigned char > _g_key = key;
+HXDLIN( 562)				::Array< unsigned char > ver = _g_key;
+HXDLIN( 562)				 ::snikket::Caps caps = _g_value;
+HXDLIN( 562)				{
+HXLINE( 563)					if (!(first)) {
+HXLINE( 563)						if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 563)							q->flush();
             						}
-HXDLIN( 565)						if (::hx::IsNull( q->b )) {
-HXLINE( 565)							q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_121,1);
+HXDLIN( 563)						if (::hx::IsNull( q->b )) {
+HXLINE( 563)							q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_121,1);
             						}
             						else {
-HXLINE( 565)							q->b->push(HX_(",",2c,00,00,00));
+HXLINE( 563)							q->b->push(HX_(",",2c,00,00,00));
             						}
             					}
-HXLINE( 566)					{
-HXLINE( 566)						if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 566)							q->flush();
+HXLINE( 564)					{
+HXLINE( 564)						if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 564)							q->flush();
             						}
-HXDLIN( 566)						if (::hx::IsNull( q->b )) {
-HXLINE( 566)							q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_122,1);
+HXDLIN( 564)						if (::hx::IsNull( q->b )) {
+HXLINE( 564)							q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_122,1);
             						}
             						else {
-HXLINE( 566)							q->b->push(HX_("(?,jsonb(?))",1c,61,06,9e));
+HXLINE( 564)							q->b->push(HX_("(?,jsonb(?))",1c,61,06,9e));
             						}
             					}
-HXLINE( 567)					params->push(ver);
-HXLINE( 568)					 ::Dynamic replacer = null();
-HXDLIN( 568)					::String space = null();
-HXDLIN( 568)					params->push(::haxe::format::JsonPrinter_obj::print( ::Dynamic(::hx::Anon_obj::Create(3)
+HXLINE( 565)					params->push(ver);
+HXLINE( 566)					 ::Dynamic replacer = null();
+HXDLIN( 566)					::String space = null();
+HXDLIN( 566)					params->push(::haxe::format::JsonPrinter_obj::print( ::Dynamic(::hx::Anon_obj::Create(3)
             						->setFixed(0,HX_("identities",1c,c5,6d,d7),caps->identities)
             						->setFixed(1,HX_("features",fd,6c,d7,12),caps->features)
             						->setFixed(2,HX_("node",02,0a,0a,49),caps->node)),replacer,space));
-HXLINE( 569)					first = false;
+HXLINE( 567)					first = false;
             				}
             			}
             		}
-HXLINE( 571)		if ((params->get_length() < 1)) {
-HXLINE( 571)			return;
+HXLINE( 569)		if ((params->get_length() < 1)) {
+HXLINE( 569)			return;
             		}
-HXLINE( 572)		 ::snikket::persistence::SqliteDriver _hx_tmp = this->db;
-HXDLIN( 572)		_hx_tmp->exec(q->toString(),params);
+HXLINE( 570)		 ::snikket::persistence::SqliteDriver _hx_tmp = this->db;
+HXDLIN( 570)		_hx_tmp->exec(q->toString(),params);
             	}
 
 
@@ -2002,165 +2020,165 @@ HX_DEFINE_DYNAMIC_FUNC1(Sqlite_obj,storeCapsSet,(void))
 void Sqlite_obj::getCaps(::String ver, ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_1,::Array< unsigned char >,verData, ::Dynamic,callback) HXARGC(1)
             		void _hx_run( ::haxe::iterators::ArrayIterator result){
-            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_586_getCaps)
-HXLINE( 587)			{
-HXLINE( 587)				 ::haxe::iterators::ArrayIterator _g = result;
-HXDLIN( 587)				while((_g->current < _g->array->get_length())){
+            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_584_getCaps)
+HXLINE( 585)			{
+HXLINE( 585)				 ::haxe::iterators::ArrayIterator _g = result;
+HXDLIN( 585)				while((_g->current < _g->array->get_length())){
             					HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             					 ::snikket::Identity _hx_run( ::Dynamic i){
-            						HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_589_getCaps)
-HXLINE( 589)						return  ::snikket::Identity_obj::__alloc( HX_CTX ,( (::String)(i->__Field(HX_("category",fe,2a,6c,ad),::hx::paccDynamic)) ),( (::String)(i->__Field(HX_("type",ba,f2,08,4d),::hx::paccDynamic)) ),( (::String)(i->__Field(HX_("name",4b,72,ff,48),::hx::paccDynamic)) ));
+            						HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_587_getCaps)
+HXLINE( 587)						return  ::snikket::Identity_obj::__alloc( HX_CTX ,( (::String)(i->__Field(HX_("category",fe,2a,6c,ad),::hx::paccDynamic)) ),( (::String)(i->__Field(HX_("type",ba,f2,08,4d),::hx::paccDynamic)) ),( (::String)(i->__Field(HX_("name",4b,72,ff,48),::hx::paccDynamic)) ));
             					}
             					HX_END_LOCAL_FUNC1(return)
 
-HXLINE( 587)					 ::Dynamic row = _g->array->__get(_g->current++);
-HXLINE( 588)					 ::Dynamic json =  ::haxe::format::JsonParser_obj::__alloc( HX_CTX ,( (::String)(row->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic)) ))->doParse();
-HXLINE( 589)					 ::Dynamic callback1 = callback;
-HXDLIN( 589)					::String json1 = ( (::String)(json->__Field(HX_("node",02,0a,0a,49),::hx::paccDynamic)) );
-HXDLIN( 589)					::Array< ::Dynamic> _hx_tmp = ( (::Array< ::Dynamic>)( ::Dynamic(json->__Field(HX_("identities",1c,c5,6d,d7),::hx::paccDynamic))->__Field(HX_("map",9c,0a,53,00),::hx::paccDynamic)( ::Dynamic(new _hx_Closure_0()))) );
-HXDLIN( 589)					callback1( ::snikket::Caps_obj::__alloc( HX_CTX ,json1,_hx_tmp,( (::Array< ::String >)(json->__Field(HX_("features",fd,6c,d7,12),::hx::paccDynamic)) ),verData));
-HXLINE( 590)					return;
+HXLINE( 585)					 ::Dynamic row = _g->array->__get(_g->current++);
+HXLINE( 586)					 ::Dynamic json =  ::haxe::format::JsonParser_obj::__alloc( HX_CTX ,( (::String)(row->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic)) ))->doParse();
+HXLINE( 587)					 ::Dynamic callback1 = callback;
+HXDLIN( 587)					::String json1 = ( (::String)(json->__Field(HX_("node",02,0a,0a,49),::hx::paccDynamic)) );
+HXDLIN( 587)					::Array< ::Dynamic> _hx_tmp = ( (::Array< ::Dynamic>)( ::Dynamic(json->__Field(HX_("identities",1c,c5,6d,d7),::hx::paccDynamic))->__Field(HX_("map",9c,0a,53,00),::hx::paccDynamic)( ::Dynamic(new _hx_Closure_0()))) );
+HXDLIN( 587)					callback1( ::snikket::Caps_obj::__alloc( HX_CTX ,json1,_hx_tmp,( (::Array< ::String >)(json->__Field(HX_("features",fd,6c,d7,12),::hx::paccDynamic)) ),verData));
+HXLINE( 588)					return;
             				}
             			}
-HXLINE( 592)			callback(null());
+HXLINE( 590)			callback(null());
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_576_getCaps)
-HXLINE( 577)		::Array< unsigned char > verData;
-HXDLIN( 577)		try {
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_574_getCaps)
+HXLINE( 575)		::Array< unsigned char > verData;
+HXDLIN( 575)		try {
             			HX_STACK_CATCHABLE( ::Dynamic, 0);
-HXLINE( 577)			verData = ::haxe::crypto::Base64_obj::decode(ver,null())->b;
+HXLINE( 575)			verData = ::haxe::crypto::Base64_obj::decode(ver,null())->b;
             		} catch( ::Dynamic _hx_e) {
             			if (_hx_e.IsClass<  ::Dynamic >() ){
             				HX_STACK_BEGIN_CATCH
             				 ::Dynamic _g = _hx_e;
-HXLINE( 580)				callback(null());
-HXLINE( 581)				return;
+HXLINE( 578)				callback(null());
+HXLINE( 579)				return;
             			}
             			else {
             				HX_STACK_DO_THROW(_hx_e);
             			}
             		}
-HXLINE( 583)		::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(HX_("SELECT json(caps) AS caps FROM caps WHERE sha1=? LIMIT 1",5a,98,24,09),::cpp::VirtualArray_obj::__new(1)->init(0,verData)), ::Dynamic(new _hx_Closure_1(verData,callback)),null());
+HXLINE( 581)		::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(HX_("SELECT json(caps) AS caps FROM caps WHERE sha1=? LIMIT 1",5a,98,24,09),::cpp::VirtualArray_obj::__new(1)->init(0,verData)), ::Dynamic(new _hx_Closure_1(verData,callback)),null());
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC2(Sqlite_obj,getCaps,(void))
 
 void Sqlite_obj::storeLogin(::String accountId,::String clientId,::String displayName,::String token){
-            	HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_597_storeLogin)
-HXLINE( 598)		::Array< ::String > params = ::Array_obj< ::String >::__new(3)->init(0,accountId)->init(1,clientId)->init(2,displayName);
-HXLINE( 599)		 ::StringBuf q =  ::StringBuf_obj::__alloc( HX_CTX );
-HXLINE( 600)		{
+            	HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_595_storeLogin)
+HXLINE( 596)		::Array< ::String > params = ::Array_obj< ::String >::__new(3)->init(0,accountId)->init(1,clientId)->init(2,displayName);
+HXLINE( 597)		 ::StringBuf q =  ::StringBuf_obj::__alloc( HX_CTX );
+HXLINE( 598)		{
+HXLINE( 598)			if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 598)				q->flush();
+            			}
+HXDLIN( 598)			if (::hx::IsNull( q->b )) {
+HXLINE( 598)				q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_128,1);
+            			}
+            			else {
+HXLINE( 598)				q->b->push(HX_("INSERT INTO accounts (account_id, client_id, display_name",03,b0,6a,0b));
+            			}
+            		}
+HXLINE( 599)		if (::hx::IsNotNull( token )) {
 HXLINE( 600)			if (::hx::IsNotNull( q->charBuf )) {
 HXLINE( 600)				q->flush();
             			}
 HXDLIN( 600)			if (::hx::IsNull( q->b )) {
-HXLINE( 600)				q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_128,1);
+HXLINE( 600)				q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_129,1);
             			}
             			else {
-HXLINE( 600)				q->b->push(HX_("INSERT INTO accounts (account_id, client_id, display_name",03,b0,6a,0b));
+HXLINE( 600)				q->b->push(HX_(", token, fast_count",a5,56,e4,ae));
             			}
             		}
-HXLINE( 601)		if (::hx::IsNotNull( token )) {
+HXLINE( 602)		{
 HXLINE( 602)			if (::hx::IsNotNull( q->charBuf )) {
 HXLINE( 602)				q->flush();
             			}
 HXDLIN( 602)			if (::hx::IsNull( q->b )) {
-HXLINE( 602)				q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_129,1);
+HXLINE( 602)				q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_130,1);
             			}
             			else {
-HXLINE( 602)				q->b->push(HX_(", token, fast_count",a5,56,e4,ae));
+HXLINE( 602)				q->b->push(HX_(") VALUES (?,?,?",c4,1c,e3,67));
             			}
             		}
-HXLINE( 604)		{
-HXLINE( 604)			if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 604)				q->flush();
-            			}
-HXDLIN( 604)			if (::hx::IsNull( q->b )) {
-HXLINE( 604)				q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_130,1);
-            			}
-            			else {
-HXLINE( 604)				q->b->push(HX_(") VALUES (?,?,?",c4,1c,e3,67));
-            			}
-            		}
-HXLINE( 605)		if (::hx::IsNotNull( token )) {
-HXLINE( 606)			{
-HXLINE( 606)				if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 606)					q->flush();
+HXLINE( 603)		if (::hx::IsNotNull( token )) {
+HXLINE( 604)			{
+HXLINE( 604)				if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 604)					q->flush();
             				}
-HXDLIN( 606)				if (::hx::IsNull( q->b )) {
-HXLINE( 606)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_131,1);
+HXDLIN( 604)				if (::hx::IsNull( q->b )) {
+HXLINE( 604)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_131,1);
             				}
             				else {
-HXLINE( 606)					q->b->push(HX_(",?",93,26,00,00));
+HXLINE( 604)					q->b->push(HX_(",?",93,26,00,00));
             				}
             			}
-HXLINE( 607)			params->push(token);
-HXLINE( 608)			{
-HXLINE( 608)				if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 608)					q->flush();
+HXLINE( 605)			params->push(token);
+HXLINE( 606)			{
+HXLINE( 606)				if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 606)					q->flush();
             				}
-HXDLIN( 608)				if (::hx::IsNull( q->b )) {
-HXLINE( 608)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_132,1);
+HXDLIN( 606)				if (::hx::IsNull( q->b )) {
+HXLINE( 606)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_132,1);
             				}
             				else {
-HXLINE( 608)					q->b->push(HX_(",0",84,26,00,00));
+HXLINE( 606)					q->b->push(HX_(",0",84,26,00,00));
             				}
             			}
             		}
-HXLINE( 610)		{
-HXLINE( 610)			if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 610)				q->flush();
+HXLINE( 608)		{
+HXLINE( 608)			if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 608)				q->flush();
             			}
-HXDLIN( 610)			if (::hx::IsNull( q->b )) {
-HXLINE( 610)				q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_133,1);
+HXDLIN( 608)			if (::hx::IsNull( q->b )) {
+HXLINE( 608)				q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_133,1);
             			}
             			else {
-HXLINE( 610)				q->b->push(HX_(") ON CONFLICT DO UPDATE SET client_id=?",cd,99,0c,96));
+HXLINE( 608)				q->b->push(HX_(") ON CONFLICT DO UPDATE SET client_id=?",cd,99,0c,96));
             			}
             		}
-HXLINE( 611)		params->push(clientId);
-HXLINE( 612)		{
-HXLINE( 612)			if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 612)				q->flush();
+HXLINE( 609)		params->push(clientId);
+HXLINE( 610)		{
+HXLINE( 610)			if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 610)				q->flush();
             			}
-HXDLIN( 612)			if (::hx::IsNull( q->b )) {
-HXLINE( 612)				q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_134,1);
+HXDLIN( 610)			if (::hx::IsNull( q->b )) {
+HXLINE( 610)				q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_134,1);
             			}
             			else {
-HXLINE( 612)				q->b->push(HX_(", display_name=?",7e,ad,5b,0f));
+HXLINE( 610)				q->b->push(HX_(", display_name=?",7e,ad,5b,0f));
             			}
             		}
-HXLINE( 613)		params->push(displayName);
-HXLINE( 614)		if (::hx::IsNotNull( token )) {
-HXLINE( 615)			{
-HXLINE( 615)				if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 615)					q->flush();
+HXLINE( 611)		params->push(displayName);
+HXLINE( 612)		if (::hx::IsNotNull( token )) {
+HXLINE( 613)			{
+HXLINE( 613)				if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 613)					q->flush();
             				}
-HXDLIN( 615)				if (::hx::IsNull( q->b )) {
-HXLINE( 615)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_135,1);
+HXDLIN( 613)				if (::hx::IsNull( q->b )) {
+HXLINE( 613)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_135,1);
             				}
             				else {
-HXLINE( 615)					q->b->push(HX_(", token=?",a7,78,19,80));
+HXLINE( 613)					q->b->push(HX_(", token=?",a7,78,19,80));
             				}
             			}
-HXLINE( 616)			params->push(token);
-HXLINE( 617)			{
-HXLINE( 617)				if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 617)					q->flush();
+HXLINE( 614)			params->push(token);
+HXLINE( 615)			{
+HXLINE( 615)				if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 615)					q->flush();
             				}
-HXDLIN( 617)				if (::hx::IsNull( q->b )) {
-HXLINE( 617)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_136,1);
+HXDLIN( 615)				if (::hx::IsNull( q->b )) {
+HXLINE( 615)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_136,1);
             				}
             				else {
-HXLINE( 617)					q->b->push(HX_(", fast_count=0",73,a8,4f,82));
+HXLINE( 615)					q->b->push(HX_(", fast_count=0",73,a8,4f,82));
             				}
             			}
             		}
-HXLINE( 619)		 ::snikket::persistence::SqliteDriver _hx_tmp = this->db;
-HXDLIN( 619)		_hx_tmp->exec(q->toString(),params);
+HXLINE( 617)		 ::snikket::persistence::SqliteDriver _hx_tmp = this->db;
+HXDLIN( 617)		_hx_tmp->exec(q->toString(),params);
             	}
 
 
@@ -2169,47 +2187,47 @@ HX_DEFINE_DYNAMIC_FUNC4(Sqlite_obj,storeLogin,(void))
 void Sqlite_obj::getLogin(::String accountId, ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_0, ::snikket::persistence::Sqlite,_gthis,::String,accountId, ::Dynamic,callback) HXARGC(1)
             		void _hx_run( ::haxe::iterators::ArrayIterator result){
-            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_627_getLogin)
-HXLINE( 628)			{
-HXLINE( 628)				 ::haxe::iterators::ArrayIterator _g = result;
-HXDLIN( 628)				while((_g->current < _g->array->get_length())){
-HXLINE( 628)					 ::Dynamic row = _g->array->__get(_g->current++);
-HXLINE( 629)					if (::hx::IsNotNull( row->__Field(HX_("token",f9,82,2b,14),::hx::paccDynamic) )) {
-HXLINE( 630)						_gthis->db->exec(HX_("UPDATE accounts SET fast_count=fast_count+1 WHERE account_id=?",a6,3f,55,2d),::cpp::VirtualArray_obj::__new(1)->init(0,accountId));
-            					}
-HXLINE( 632)					 ::Dynamic tmp = row->__Field(HX_("fast_count",ac,2b,d2,5a),::hx::paccDynamic);
-HXDLIN( 632)					int _hx_tmp;
-HXDLIN( 632)					if (::hx::IsNotNull( tmp )) {
-HXLINE( 632)						_hx_tmp = ( (int)(tmp) );
+            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_625_getLogin)
+HXLINE( 626)			{
+HXLINE( 626)				 ::haxe::iterators::ArrayIterator _g = result;
+HXDLIN( 626)				while((_g->current < _g->array->get_length())){
+HXLINE( 626)					 ::Dynamic row = _g->array->__get(_g->current++);
+HXLINE( 627)					if (::hx::IsNotNull( row->__Field(HX_("token",f9,82,2b,14),::hx::paccDynamic) )) {
+HXLINE( 628)						_gthis->db->exec(HX_("UPDATE accounts SET fast_count=fast_count+1 WHERE account_id=?",a6,3f,55,2d),::cpp::VirtualArray_obj::__new(1)->init(0,accountId));
+            					}
+HXLINE( 630)					 ::Dynamic tmp = row->__Field(HX_("fast_count",ac,2b,d2,5a),::hx::paccDynamic);
+HXDLIN( 630)					int _hx_tmp;
+HXDLIN( 630)					if (::hx::IsNotNull( tmp )) {
+HXLINE( 630)						_hx_tmp = ( (int)(tmp) );
             					}
             					else {
-HXLINE( 632)						_hx_tmp = 0;
+HXLINE( 630)						_hx_tmp = 0;
             					}
-HXDLIN( 632)					callback( ::Dynamic(row->__Field(HX_("client_id",8f,e8,05,c8),::hx::paccDynamic)), ::Dynamic(row->__Field(HX_("token",f9,82,2b,14),::hx::paccDynamic)),_hx_tmp, ::Dynamic(row->__Field(HX_("display_name",a8,f4,3b,75),::hx::paccDynamic)));
-HXLINE( 633)					return;
+HXDLIN( 630)					callback( ::Dynamic(row->__Field(HX_("client_id",8f,e8,05,c8),::hx::paccDynamic)), ::Dynamic(row->__Field(HX_("token",f9,82,2b,14),::hx::paccDynamic)),_hx_tmp, ::Dynamic(row->__Field(HX_("display_name",a8,f4,3b,75),::hx::paccDynamic)));
+HXLINE( 631)					return;
             				}
             			}
-HXLINE( 636)			callback(null(),null(),0,null());
+HXLINE( 634)			callback(null(),null(),0,null());
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_623_getLogin)
-HXDLIN( 623)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 624)		::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(HX_("SELECT client_id, display_name, token, fast_count FROM accounts WHERE account_id=? LIMIT 1",fa,f8,24,9e),::cpp::VirtualArray_obj::__new(1)->init(0,accountId)), ::Dynamic(new _hx_Closure_0(_gthis,accountId,callback)),null());
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_621_getLogin)
+HXDLIN( 621)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 622)		::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(HX_("SELECT client_id, display_name, token, fast_count FROM accounts WHERE account_id=? LIMIT 1",fa,f8,24,9e),::cpp::VirtualArray_obj::__new(1)->init(0,accountId)), ::Dynamic(new _hx_Closure_0(_gthis,accountId,callback)),null());
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC2(Sqlite_obj,getLogin,(void))
 
 void Sqlite_obj::removeAccount(::String accountId,bool completely){
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_640_removeAccount)
-HXLINE( 641)		this->db->exec(HX_("DELETE FROM accounts WHERE account_id=?",a1,e8,94,4e),::cpp::VirtualArray_obj::__new(1)->init(0,accountId));
-HXLINE( 643)		if (!(completely)) {
-HXLINE( 643)			return;
-            		}
-HXLINE( 645)		this->db->exec(HX_("DELETE FROM messages WHERE account_id=?",bb,0a,07,c2),::cpp::VirtualArray_obj::__new(1)->init(0,accountId));
-HXLINE( 646)		this->db->exec(HX_("DELETE FROM chats WHERE account_id=?",2e,3d,02,57),::cpp::VirtualArray_obj::__new(1)->init(0,accountId));
-HXLINE( 647)		this->db->exec(HX_("DELETE FROM services WHERE account_id=?",29,fc,5f,4f),::cpp::VirtualArray_obj::__new(1)->init(0,accountId));
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_638_removeAccount)
+HXLINE( 639)		this->db->exec(HX_("DELETE FROM accounts WHERE account_id=?",a1,e8,94,4e),::cpp::VirtualArray_obj::__new(1)->init(0,accountId));
+HXLINE( 641)		if (!(completely)) {
+HXLINE( 641)			return;
+            		}
+HXLINE( 643)		this->db->exec(HX_("DELETE FROM messages WHERE account_id=?",bb,0a,07,c2),::cpp::VirtualArray_obj::__new(1)->init(0,accountId));
+HXLINE( 644)		this->db->exec(HX_("DELETE FROM chats WHERE account_id=?",2e,3d,02,57),::cpp::VirtualArray_obj::__new(1)->init(0,accountId));
+HXLINE( 645)		this->db->exec(HX_("DELETE FROM services WHERE account_id=?",29,fc,5f,4f),::cpp::VirtualArray_obj::__new(1)->init(0,accountId));
             	}
 
 
@@ -2218,37 +2236,37 @@ HX_DEFINE_DYNAMIC_FUNC2(Sqlite_obj,removeAccount,(void))
 void Sqlite_obj::listAccounts( ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_1, ::Dynamic,callback) HXARGC(1)
             		void _hx_run( ::haxe::iterators::ArrayIterator result){
-            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_653_listAccounts)
-HXLINE( 653)			 ::Dynamic callback1 = callback;
-HXDLIN( 653)			::Array< ::String > _hx_tmp;
-HXDLIN( 653)			if (::hx::IsNull( result )) {
-HXLINE( 653)				_hx_tmp = ::Array_obj< ::String >::__new(0);
+            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_651_listAccounts)
+HXLINE( 651)			 ::Dynamic callback1 = callback;
+HXDLIN( 651)			::Array< ::String > _hx_tmp;
+HXDLIN( 651)			if (::hx::IsNull( result )) {
+HXLINE( 651)				_hx_tmp = ::Array_obj< ::String >::__new(0);
             			}
             			else {
-HXLINE( 653)				::Array< ::String > _g = ::Array_obj< ::String >::__new(0);
-HXDLIN( 653)				{
+HXLINE( 651)				::Array< ::String > _g = ::Array_obj< ::String >::__new(0);
+HXDLIN( 651)				{
             					HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::haxe::iterators::ArrayIterator,result) HXARGC(0)
             					 ::haxe::iterators::ArrayIterator _hx_run(){
-            						HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_653_listAccounts)
-HXLINE( 653)						return result;
+            						HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_651_listAccounts)
+HXLINE( 651)						return result;
             					}
             					HX_END_LOCAL_FUNC0(return)
 
-HXLINE( 653)					 ::Dynamic x =  ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE( 651)					 ::Dynamic x =  ::Dynamic(::hx::Anon_obj::Create(1)
             						->setFixed(0,HX_("iterator",ee,49,9a,93), ::Dynamic(new _hx_Closure_0(result))))->__Field(HX_("iterator",ee,49,9a,93),::hx::paccDynamic)();
-HXDLIN( 653)					while(( (bool)(x->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE( 653)						 ::Dynamic x1 = x->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)();
-HXDLIN( 653)						_g->push( ::Dynamic(x1->__Field(HX_("account_id",6d,df,ad,00),::hx::paccDynamic)));
+HXDLIN( 651)					while(( (bool)(x->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE( 651)						 ::Dynamic x1 = x->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)();
+HXDLIN( 651)						_g->push( ::Dynamic(x1->__Field(HX_("account_id",6d,df,ad,00),::hx::paccDynamic)));
             					}
             				}
-HXDLIN( 653)				_hx_tmp = _g;
+HXDLIN( 651)				_hx_tmp = _g;
             			}
-HXDLIN( 653)			callback1(_hx_tmp);
+HXDLIN( 651)			callback1(_hx_tmp);
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_652_listAccounts)
-HXDLIN( 652)		::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(HX_("SELECT account_id FROM accounts",4d,82,81,0c),null()), ::Dynamic(new _hx_Closure_1(callback)),null());
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_650_listAccounts)
+HXDLIN( 650)		::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(HX_("SELECT account_id FROM accounts",4d,82,81,0c),null()), ::Dynamic(new _hx_Closure_1(callback)),null());
             	}
 
 
@@ -2257,7 +2275,7 @@ HX_DEFINE_DYNAMIC_FUNC1(Sqlite_obj,listAccounts,(void))
 void Sqlite_obj::listAccounts__fromC(::cpp::Function< void  (const char**,size_t,void*) > callback,void* callback__context){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0,void*,callback__context,::cpp::Function< void  (const char** HX_COMMA size_t HX_COMMA void*) >,callback) HXARGC(1)
             		void _hx_run(::Array< ::String > a0){
-            			HX_GC_STACKFRAME(&_hx_pos_45dcb523da764b50_221_listAccounts__fromC)
+            			HX_STACKFRAME(&_hx_pos_45dcb523da764b50_221_listAccounts__fromC)
 HXLINE( 221)			::cpp::Function< void  (const char**,size_t,void*) > callback1 = callback;
 HXLINE( 211)			::Array< size_t > arr = ::Array_obj< size_t >::__new(a0->length);
 HXDLIN( 211)			{
@@ -2273,15 +2291,16 @@ HXDLIN( 211)					{
 HXLINE( 211)						const char* cStrPtr = el.utf8_str();
 HXDLIN( 211)						::cpp::Int64 ptrInt64 = reinterpret_cast<int64_t>(cStrPtr);
 HXDLIN( 211)						{
-HXLINE( 211)							 ::haxe::ds::IntMap this1 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 211)							int low = ptrInt64 & 0xffffffff;
-HXDLIN( 211)							int high = ptrInt64 >> 32;
-HXDLIN( 211)							 ::haxe::ds::IntMap highMap = ( ( ::haxe::ds::IntMap)(this1->get(low)) );
-HXDLIN( 211)							if (::hx::IsNull( highMap )) {
-HXLINE(2131)								highMap =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXLINE( 211)								this1->set(low,highMap);
+HXLINE( 211)							 ::Dynamic store = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt64);
+HXDLIN( 211)							if (::hx::IsNull( store )) {
+HXLINE(2111)								store =  ::Dynamic(::hx::Anon_obj::Create(2)
+            									->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            									->setFixed(1,HX_("value",71,7f,b8,31),el));
+HXLINE( 211)								::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt64,store);
+            							}
+            							else {
+HXLINE( 211)								::hx::FieldRef((store).mPtr,HX_("refCount",7c,2e,66,86))++;
             							}
-HXDLIN( 211)							highMap->set(high,el);
             						}
 HXDLIN( 211)						const char* ptr = cStrPtr;
 HXDLIN( 211)						arr[i] = reinterpret_cast<size_t>(ptr);
@@ -2291,15 +2310,16 @@ HXDLIN( 211)						arr[i] = reinterpret_cast<size_t>(ptr);
 HXDLIN( 211)			void** ptr1 = (void**)arr->getBase();
 HXDLIN( 211)			::cpp::Int64 ptrInt641 = reinterpret_cast<int64_t>(ptr1);
 HXDLIN( 211)			{
-HXLINE( 211)				 ::haxe::ds::IntMap this2 = ::_HaxeCBridge::Internal_obj::gcRetainMap;
-HXDLIN( 211)				int low1 = ptrInt641 & 0xffffffff;
-HXDLIN( 211)				int high1 = ptrInt641 >> 32;
-HXDLIN( 211)				 ::haxe::ds::IntMap highMap1 = ( ( ::haxe::ds::IntMap)(this2->get(low1)) );
-HXDLIN( 211)				if (::hx::IsNull( highMap1 )) {
-HXLINE(2131)					highMap1 =  ::haxe::ds::IntMap_obj::__alloc( HX_CTX );
-HXLINE( 211)					this2->set(low1,highMap1);
+HXLINE( 211)				 ::Dynamic store1 = ::_HaxeCBridge::Internal_obj::gcRetainMap->get(ptrInt641);
+HXDLIN( 211)				if (::hx::IsNull( store1 )) {
+HXLINE(2111)					store1 =  ::Dynamic(::hx::Anon_obj::Create(2)
+            						->setFixed(0,HX_("refCount",7c,2e,66,86),1)
+            						->setFixed(1,HX_("value",71,7f,b8,31),arr));
+HXLINE( 211)					::_HaxeCBridge::Internal_obj::gcRetainMap->set(ptrInt641,store1);
+            				}
+            				else {
+HXLINE( 211)					::hx::FieldRef((store1).mPtr,HX_("refCount",7c,2e,66,86))++;
             				}
-HXDLIN( 211)				highMap1->set(high1,arr);
             			}
 HXLINE( 221)			callback1(( (const char**)(ptr1) ),( (size_t)(a0->length) ),callback__context);
             		}
@@ -2311,22 +2331,22 @@ HXDLIN( 252)		this->listAccounts( ::Dynamic(new _hx_Closure_0(callback__context,
 
 
 void Sqlite_obj::storeStreamManagement(::String accountId,::Array< unsigned char > sm){
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_660_storeStreamManagement)
-HXDLIN( 660)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 661)		this->smStoreNext = sm;
-HXLINE( 662)		if (!(this->smStoreInProgress)) {
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_658_storeStreamManagement)
+HXDLIN( 658)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 659)		this->smStoreNext = sm;
+HXLINE( 660)		if (!(this->smStoreInProgress)) {
             			HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_0, ::snikket::persistence::Sqlite,_gthis,::String,accountId,::Array< unsigned char >,sm) HXARGC(1)
             			void _hx_run( ::haxe::iterators::ArrayIterator _){
-            				HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_667_storeStreamManagement)
-HXLINE( 668)				_gthis->smStoreInProgress = false;
-HXLINE( 669)				if (::hx::IsPointerNotEq( _gthis->smStoreNext,sm )) {
-HXLINE( 669)					_gthis->storeStreamManagement(accountId,sm);
+            				HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_665_storeStreamManagement)
+HXLINE( 666)				_gthis->smStoreInProgress = false;
+HXLINE( 667)				if (::hx::IsPointerNotEq( _gthis->smStoreNext,sm )) {
+HXLINE( 667)					_gthis->storeStreamManagement(accountId,sm);
             				}
             			}
             			HX_END_LOCAL_FUNC1((void))
 
-HXLINE( 663)			this->smStoreInProgress = true;
-HXLINE( 664)			::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(HX_("UPDATE accounts SET sm_state=? WHERE account_id=?",39,71,68,1b),::cpp::VirtualArray_obj::__new(2)->init(0,sm)->init(1,accountId)), ::Dynamic(new _hx_Closure_0(_gthis,accountId,sm)),null());
+HXLINE( 661)			this->smStoreInProgress = true;
+HXLINE( 662)			::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(HX_("UPDATE accounts SET sm_state=? WHERE account_id=?",39,71,68,1b),::cpp::VirtualArray_obj::__new(2)->init(0,sm)->init(1,accountId)), ::Dynamic(new _hx_Closure_0(_gthis,accountId,sm)),null());
             		}
             	}
 
@@ -2336,31 +2356,31 @@ HX_DEFINE_DYNAMIC_FUNC2(Sqlite_obj,storeStreamManagement,(void))
 void Sqlite_obj::getStreamManagement(::String accountId, ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::Dynamic,callback) HXARGC(1)
             		void _hx_run( ::haxe::iterators::ArrayIterator result){
-            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_676_getStreamManagement)
-HXLINE( 677)			{
-HXLINE( 677)				 ::haxe::iterators::ArrayIterator _g = result;
-HXDLIN( 677)				while((_g->current < _g->array->get_length())){
-HXLINE( 677)					 ::Dynamic row = _g->array->__get(_g->current++);
-HXLINE( 678)					callback( ::Dynamic(row->__Field(HX_("sm_state",6c,91,3f,e6),::hx::paccDynamic)));
-HXLINE( 679)					return;
+            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_674_getStreamManagement)
+HXLINE( 675)			{
+HXLINE( 675)				 ::haxe::iterators::ArrayIterator _g = result;
+HXDLIN( 675)				while((_g->current < _g->array->get_length())){
+HXLINE( 675)					 ::Dynamic row = _g->array->__get(_g->current++);
+HXLINE( 676)					callback( ::Dynamic(row->__Field(HX_("sm_state",6c,91,3f,e6),::hx::paccDynamic)));
+HXLINE( 677)					return;
             				}
             			}
-HXLINE( 682)			callback(null());
+HXLINE( 680)			callback(null());
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_676_getStreamManagement)
-HXDLIN( 676)		::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(HX_("SELECT sm_state FROM accounts  WHERE account_id=?",94,7f,74,ea),::cpp::VirtualArray_obj::__new(1)->init(0,accountId)), ::Dynamic(new _hx_Closure_0(callback)),null());
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_674_getStreamManagement)
+HXDLIN( 674)		::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(HX_("SELECT sm_state FROM accounts  WHERE account_id=?",94,7f,74,ea),::cpp::VirtualArray_obj::__new(1)->init(0,accountId)), ::Dynamic(new _hx_Closure_0(callback)),null());
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC2(Sqlite_obj,getStreamManagement,(void))
 
 void Sqlite_obj::storeService(::String accountId,::String serviceId,::String name,::String node, ::snikket::Caps caps){
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_687_storeService)
-HXLINE( 688)		this->storeCaps(caps);
-HXLINE( 690)		 ::snikket::persistence::SqliteDriver _hx_tmp = this->db;
-HXDLIN( 690)		_hx_tmp->exec(HX_("INSERT OR REPLACE INTO services VALUES (?,?,?,?,?)",2c,3a,d9,f8),::cpp::VirtualArray_obj::__new(5)->init(0,accountId)->init(1,serviceId)->init(2,name)->init(3,node)->init(4,caps->verRaw()->hash));
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_685_storeService)
+HXLINE( 686)		this->storeCaps(caps);
+HXLINE( 688)		 ::snikket::persistence::SqliteDriver _hx_tmp = this->db;
+HXDLIN( 688)		_hx_tmp->exec(HX_("INSERT OR REPLACE INTO services VALUES (?,?,?,?,?)",2c,3a,d9,f8),::cpp::VirtualArray_obj::__new(5)->init(0,accountId)->init(1,serviceId)->init(2,name)->init(3,node)->init(4,caps->verRaw()->hash));
             	}
 
 
@@ -2369,55 +2389,55 @@ HX_DEFINE_DYNAMIC_FUNC5(Sqlite_obj,storeService,(void))
 void Sqlite_obj::findServicesWithFeature(::String accountId,::String feature, ::Dynamic callback){
             		HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_0, ::Dynamic,callback,::String,feature) HXARGC(1)
             		void _hx_run( ::haxe::iterators::ArrayIterator result){
-            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_702_findServicesWithFeature)
-HXLINE( 703)			::Array< ::Dynamic> services = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 704)			{
-HXLINE( 704)				 ::haxe::iterators::ArrayIterator _g = result;
-HXDLIN( 704)				while((_g->current < _g->array->get_length())){
-HXLINE( 704)					 ::Dynamic row = _g->array->__get(_g->current++);
-HXLINE( 705)					 ::Dynamic json =  ::haxe::format::JsonParser_obj::__alloc( HX_CTX ,( (::String)(row->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic)) ))->doParse();
-HXLINE( 706)					::Array< ::String > features;
-HXDLIN( 706)					::Array< ::String > tmp;
-HXDLIN( 706)					if (::hx::IsNotNull( json )) {
-HXLINE( 706)						tmp = ( (::Array< ::String >)(json->__Field(HX_("features",fd,6c,d7,12),::hx::paccDynamic)) );
+            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_700_findServicesWithFeature)
+HXLINE( 701)			::Array< ::Dynamic> services = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 702)			{
+HXLINE( 702)				 ::haxe::iterators::ArrayIterator _g = result;
+HXDLIN( 702)				while((_g->current < _g->array->get_length())){
+HXLINE( 702)					 ::Dynamic row = _g->array->__get(_g->current++);
+HXLINE( 703)					 ::Dynamic json =  ::haxe::format::JsonParser_obj::__alloc( HX_CTX ,( (::String)(row->__Field(HX_("caps",21,1c,ba,41),::hx::paccDynamic)) ))->doParse();
+HXLINE( 704)					::Array< ::String > features;
+HXDLIN( 704)					::Array< ::String > tmp;
+HXDLIN( 704)					if (::hx::IsNotNull( json )) {
+HXLINE( 704)						tmp = ( (::Array< ::String >)(json->__Field(HX_("features",fd,6c,d7,12),::hx::paccDynamic)) );
             					}
             					else {
-HXLINE( 706)						tmp = null();
+HXLINE( 704)						tmp = null();
             					}
-HXDLIN( 706)					if (::hx::IsNotNull( tmp )) {
-HXLINE( 706)						features = tmp;
+HXDLIN( 704)					if (::hx::IsNotNull( tmp )) {
+HXLINE( 704)						features = tmp;
             					}
             					else {
-HXLINE( 706)						features = ::Array_obj< ::String >::__new(0);
-            					}
-HXLINE( 707)					if (features->contains(feature)) {
-HXLINE( 709)						::String row1 = ( (::String)(row->__Field(HX_("service_id",e5,24,3d,7d),::hx::paccDynamic)) );
-HXLINE( 710)						::String row2 = ( (::String)(row->__Field(HX_("name",4b,72,ff,48),::hx::paccDynamic)) );
-HXLINE( 711)						::String row3 = ( (::String)(row->__Field(HX_("node",02,0a,0a,49),::hx::paccDynamic)) );
-HXLINE( 712)						::String json1 = ( (::String)(json->__Field(HX_("node",02,0a,0a,49),::hx::paccDynamic)) );
-HXDLIN( 712)						::Array< ::Dynamic> _this;
-HXDLIN( 712)						::Array< ::Dynamic> tmp1 = ( (::Array< ::Dynamic>)(json->__Field(HX_("identities",1c,c5,6d,d7),::hx::paccDynamic)) );
-HXDLIN( 712)						if (::hx::IsNotNull( tmp1 )) {
-HXLINE( 712)							_this = tmp1;
+HXLINE( 704)						features = ::Array_obj< ::String >::__new(0);
+            					}
+HXLINE( 705)					if (features->contains(feature)) {
+HXLINE( 707)						::String row1 = ( (::String)(row->__Field(HX_("service_id",e5,24,3d,7d),::hx::paccDynamic)) );
+HXLINE( 708)						::String row2 = ( (::String)(row->__Field(HX_("name",4b,72,ff,48),::hx::paccDynamic)) );
+HXLINE( 709)						::String row3 = ( (::String)(row->__Field(HX_("node",02,0a,0a,49),::hx::paccDynamic)) );
+HXLINE( 710)						::String json1 = ( (::String)(json->__Field(HX_("node",02,0a,0a,49),::hx::paccDynamic)) );
+HXDLIN( 710)						::Array< ::Dynamic> _this;
+HXDLIN( 710)						::Array< ::Dynamic> tmp1 = ( (::Array< ::Dynamic>)(json->__Field(HX_("identities",1c,c5,6d,d7),::hx::paccDynamic)) );
+HXDLIN( 710)						if (::hx::IsNotNull( tmp1 )) {
+HXLINE( 710)							_this = tmp1;
             						}
             						else {
-HXLINE( 712)							_this = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 710)							_this = ::Array_obj< ::Dynamic>::__new(0);
             						}
-HXDLIN( 712)						::Array< ::Dynamic> result1 = ::Array_obj< ::Dynamic>::__new(_this->length);
-HXDLIN( 712)						{
-HXLINE( 712)							int _g1 = 0;
-HXDLIN( 712)							int _g2 = _this->length;
-HXDLIN( 712)							while((_g1 < _g2)){
-HXLINE( 712)								_g1 = (_g1 + 1);
-HXDLIN( 712)								int i = (_g1 - 1);
-HXDLIN( 712)								{
-HXLINE( 712)									 ::Dynamic i1 = _hx_array_unsafe_get(_this,i);
-HXDLIN( 712)									 ::snikket::Identity inValue =  ::snikket::Identity_obj::__alloc( HX_CTX ,( (::String)(i1->__Field(HX_("category",fe,2a,6c,ad),::hx::paccDynamic)) ),( (::String)(i1->__Field(HX_("type",ba,f2,08,4d),::hx::paccDynamic)) ),( (::String)(i1->__Field(HX_("name",4b,72,ff,48),::hx::paccDynamic)) ));
-HXDLIN( 712)									result1->__unsafe_set(i,inValue);
+HXDLIN( 710)						::Array< ::Dynamic> result1 = ::Array_obj< ::Dynamic>::__new(_this->length);
+HXDLIN( 710)						{
+HXLINE( 710)							int _g1 = 0;
+HXDLIN( 710)							int _g2 = _this->length;
+HXDLIN( 710)							while((_g1 < _g2)){
+HXLINE( 710)								_g1 = (_g1 + 1);
+HXDLIN( 710)								int i = (_g1 - 1);
+HXDLIN( 710)								{
+HXLINE( 710)									 ::Dynamic i1 = _hx_array_unsafe_get(_this,i);
+HXDLIN( 710)									 ::snikket::Identity inValue =  ::snikket::Identity_obj::__alloc( HX_CTX ,( (::String)(i1->__Field(HX_("category",fe,2a,6c,ad),::hx::paccDynamic)) ),( (::String)(i1->__Field(HX_("type",ba,f2,08,4d),::hx::paccDynamic)) ),( (::String)(i1->__Field(HX_("name",4b,72,ff,48),::hx::paccDynamic)) ));
+HXDLIN( 710)									result1->__unsafe_set(i,inValue);
             								}
             							}
             						}
-HXLINE( 708)						services->push( ::Dynamic(::hx::Anon_obj::Create(4)
+HXLINE( 706)						services->push( ::Dynamic(::hx::Anon_obj::Create(4)
             							->setFixed(0,HX_("serviceId",70,93,d4,bc),row1)
             							->setFixed(1,HX_("caps",21,1c,ba,41), ::snikket::Caps_obj::__alloc( HX_CTX ,json1,result1,features,null()))
             							->setFixed(2,HX_("name",4b,72,ff,48),row2)
@@ -2425,12 +2445,12 @@ HXLINE( 708)						services->push( ::Dynamic(::hx::Anon_obj::Create(4)
             					}
             				}
             			}
-HXLINE( 716)			callback(services);
+HXLINE( 714)			callback(services);
             		}
             		HX_END_LOCAL_FUNC1((void))
 
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_699_findServicesWithFeature)
-HXDLIN( 699)		::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(HX_("SELECT service_id, name, node, json(caps.caps) AS caps FROM services INNER JOIN caps ON services.caps=caps.sha1 WHERE account_id=?",fc,fb,5f,40),::cpp::VirtualArray_obj::__new(1)->init(0,accountId)), ::Dynamic(new _hx_Closure_0(callback,feature)),null());
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_697_findServicesWithFeature)
+HXDLIN( 697)		::thenshim::_Promise::Promise_Impl__obj::then(this->db->exec(HX_("SELECT service_id, name, node, json(caps.caps) AS caps FROM services INNER JOIN caps ON services.caps=caps.sha1 WHERE account_id=?",fc,fb,5f,40),::cpp::VirtualArray_obj::__new(1)->init(0,accountId)), ::Dynamic(new _hx_Closure_0(callback,feature)),null());
             	}
 
 
@@ -2439,75 +2459,75 @@ HX_DEFINE_DYNAMIC_FUNC3(Sqlite_obj,findServicesWithFeature,(void))
 ::Dynamic Sqlite_obj::hydrateReactions(::String accountId,::Array< ::Dynamic> messages){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0,::Array< ::Dynamic>,messages) HXARGC(1)
             		::Array< ::Dynamic> _hx_run( ::haxe::ds::StringMap result){
-            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_721_hydrateReactions)
-HXLINE( 722)			{
-HXLINE( 722)				::Dynamic map = result;
-HXDLIN( 722)				::Dynamic _g_map = map;
-HXDLIN( 722)				 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
-HXDLIN( 722)				while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE( 722)					::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
-HXDLIN( 722)					 ::haxe::ds::StringMap _g_value = ( ( ::haxe::ds::StringMap)(::haxe::IMap_obj::get(_g_map,key)) );
-HXDLIN( 722)					::String _g_key = key;
-HXDLIN( 722)					::String id = _g_key;
-HXDLIN( 722)					 ::haxe::ds::StringMap reactions = _g_value;
-HXDLIN( 722)					{
-HXLINE( 723)						 ::snikket::ChatMessage result1 = null();
-HXDLIN( 723)						{
-HXLINE( 723)							int _g = 0;
-HXDLIN( 723)							while((_g < messages->length)){
-HXLINE( 723)								 ::snikket::ChatMessage v = messages->__get(_g).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN( 723)								_g = (_g + 1);
-HXLINE( 724)								bool m;
-HXDLIN( 724)								::String m1;
-HXDLIN( 724)								if (::hx::IsNull( v->serverId )) {
-HXLINE( 724)									m1 = v->localId;
+            			HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_719_hydrateReactions)
+HXLINE( 720)			{
+HXLINE( 720)				::Dynamic map = result;
+HXDLIN( 720)				::Dynamic _g_map = map;
+HXDLIN( 720)				 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map);
+HXDLIN( 720)				while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE( 720)					::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
+HXDLIN( 720)					 ::haxe::ds::StringMap _g_value = ( ( ::haxe::ds::StringMap)(::haxe::IMap_obj::get(_g_map,key)) );
+HXDLIN( 720)					::String _g_key = key;
+HXDLIN( 720)					::String id = _g_key;
+HXDLIN( 720)					 ::haxe::ds::StringMap reactions = _g_value;
+HXDLIN( 720)					{
+HXLINE( 721)						 ::snikket::ChatMessage result1 = null();
+HXDLIN( 721)						{
+HXLINE( 721)							int _g = 0;
+HXDLIN( 721)							while((_g < messages->length)){
+HXLINE( 721)								 ::snikket::ChatMessage v = messages->__get(_g).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN( 721)								_g = (_g + 1);
+HXLINE( 722)								bool m;
+HXDLIN( 722)								::String m1;
+HXDLIN( 722)								if (::hx::IsNull( v->serverId )) {
+HXLINE( 722)									m1 = v->localId;
             								}
             								else {
-HXLINE( 724)									m1 = ((v->serverId + HX_("\n",0a,00,00,00)) + v->serverIdBy);
+HXLINE( 722)									m1 = ((v->serverId + HX_("\n",0a,00,00,00)) + v->serverIdBy);
             								}
-HXDLIN( 724)								if ((((m1 + HX_("\n",0a,00,00,00)) + v->chatId()) != id)) {
-HXLINE( 725)									::String m2;
-HXDLIN( 725)									if (::hx::IsNull( v->localId )) {
-HXLINE( 725)										m2 = ((v->serverId + HX_("\n",0a,00,00,00)) + v->serverIdBy);
+HXDLIN( 722)								if ((((m1 + HX_("\n",0a,00,00,00)) + v->chatId()) != id)) {
+HXLINE( 723)									::String m2;
+HXDLIN( 723)									if (::hx::IsNull( v->localId )) {
+HXLINE( 723)										m2 = ((v->serverId + HX_("\n",0a,00,00,00)) + v->serverIdBy);
             									}
             									else {
-HXLINE( 725)										m2 = v->localId;
+HXLINE( 723)										m2 = v->localId;
             									}
-HXLINE( 724)									m = (((m2 + HX_("\n",0a,00,00,00)) + v->chatId()) == id);
+HXLINE( 722)									m = (((m2 + HX_("\n",0a,00,00,00)) + v->chatId()) == id);
             								}
             								else {
-HXLINE( 724)									m = true;
+HXLINE( 722)									m = true;
             								}
-HXLINE( 723)								if (m) {
+HXLINE( 721)								if (m) {
 HXLINE(  36)									result1 = v;
-HXLINE( 723)									goto _hx_goto_160;
+HXLINE( 721)									goto _hx_goto_160;
             								}
             							}
             							_hx_goto_160:;
             						}
-HXDLIN( 723)						 ::snikket::ChatMessage m3 = result1;
-HXLINE( 727)						if (::hx::IsNotNull( m3 )) {
-HXLINE( 727)							m3->set_reactions(reactions);
+HXDLIN( 721)						 ::snikket::ChatMessage m3 = result1;
+HXLINE( 725)						if (::hx::IsNotNull( m3 )) {
+HXLINE( 725)							m3->set_reactions(reactions);
             						}
             					}
             				}
             			}
-HXLINE( 729)			return messages;
+HXLINE( 727)			return messages;
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_721_hydrateReactions)
-HXDLIN( 721)		::Array< ::Dynamic> result = ::Array_obj< ::Dynamic>::__new(messages->length);
-HXDLIN( 721)		{
-HXDLIN( 721)			int _g = 0;
-HXDLIN( 721)			int _g1 = messages->length;
-HXDLIN( 721)			while((_g < _g1)){
-HXDLIN( 721)				_g = (_g + 1);
-HXDLIN( 721)				int i = (_g - 1);
-HXDLIN( 721)				{
-HXDLIN( 721)					 ::snikket::ChatMessage m = ( ( ::snikket::ChatMessage)(_hx_array_unsafe_get(messages,i)) );
-HXDLIN( 721)					::String inValue = m->chatId();
-HXDLIN( 721)					result->__unsafe_set(i, ::Dynamic(::hx::Anon_obj::Create(4)
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_719_hydrateReactions)
+HXDLIN( 719)		::Array< ::Dynamic> result = ::Array_obj< ::Dynamic>::__new(messages->length);
+HXDLIN( 719)		{
+HXDLIN( 719)			int _g = 0;
+HXDLIN( 719)			int _g1 = messages->length;
+HXDLIN( 719)			while((_g < _g1)){
+HXDLIN( 719)				_g = (_g + 1);
+HXDLIN( 719)				int i = (_g - 1);
+HXDLIN( 719)				{
+HXDLIN( 719)					 ::snikket::ChatMessage m = ( ( ::snikket::ChatMessage)(_hx_array_unsafe_get(messages,i)) );
+HXDLIN( 719)					::String inValue = m->chatId();
+HXDLIN( 719)					result->__unsafe_set(i, ::Dynamic(::hx::Anon_obj::Create(4)
             						->setFixed(0,HX_("chatId",d3,04,77,b7),inValue)
             						->setFixed(1,HX_("serverId",7e,01,b2,e2),m->serverId)
             						->setFixed(2,HX_("localId",26,7a,c6,2d),m->localId)
@@ -2515,7 +2535,7 @@ HXDLIN( 721)					result->__unsafe_set(i, ::Dynamic(::hx::Anon_obj::Create(4)
             				}
             			}
             		}
-HXDLIN( 721)		return ::thenshim::_Promise::Promise_Impl__obj::then(this->fetchReactions(accountId,result), ::Dynamic(new _hx_Closure_0(messages)),null());
+HXDLIN( 719)		return ::thenshim::_Promise::Promise_Impl__obj::then(this->fetchReactions(accountId,result), ::Dynamic(new _hx_Closure_0(messages)),null());
             	}
 
 
@@ -2524,179 +2544,179 @@ HX_DEFINE_DYNAMIC_FUNC2(Sqlite_obj,hydrateReactions,return )
 ::Dynamic Sqlite_obj::fetchReactions(::String accountId,::Array< ::Dynamic> ids){
             		HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_0) HXARGC(1)
             		 ::haxe::ds::StringMap _hx_run( ::haxe::iterators::ArrayIterator rows){
-            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_749_fetchReactions)
-HXLINE( 750)			 ::haxe::ds::StringMap agg =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
-HXLINE( 751)			{
-HXLINE( 751)				 ::haxe::iterators::ArrayIterator _g = rows;
-HXDLIN( 751)				while((_g->current < _g->array->get_length())){
-HXLINE( 751)					 ::Dynamic row = _g->array->__get(_g->current++);
-HXLINE( 752)					::cpp::VirtualArray reactions = ( (::cpp::VirtualArray)( ::haxe::format::JsonParser_obj::__alloc( HX_CTX ,( (::String)(row->__Field(HX_("reactions",aa,cc,95,e7),::hx::paccDynamic)) ))->doParse()) );
-HXLINE( 753)					::String mapId;
-HXDLIN( 753)					bool mapId1;
-HXDLIN( 753)					if (::hx::IsNotNull( row->__Field(HX_("mam_id",01,4d,19,b7),::hx::paccDynamic) )) {
-HXLINE( 753)						mapId1 = ::hx::IsEq( row->__Field(HX_("mam_id",01,4d,19,b7),::hx::paccDynamic),HX_("",00,00,00,00) );
+            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_747_fetchReactions)
+HXLINE( 748)			 ::haxe::ds::StringMap agg =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
+HXLINE( 749)			{
+HXLINE( 749)				 ::haxe::iterators::ArrayIterator _g = rows;
+HXDLIN( 749)				while((_g->current < _g->array->get_length())){
+HXLINE( 749)					 ::Dynamic row = _g->array->__get(_g->current++);
+HXLINE( 750)					::cpp::VirtualArray reactions = ( (::cpp::VirtualArray)( ::haxe::format::JsonParser_obj::__alloc( HX_CTX ,( (::String)(row->__Field(HX_("reactions",aa,cc,95,e7),::hx::paccDynamic)) ))->doParse()) );
+HXLINE( 751)					::String mapId;
+HXDLIN( 751)					bool mapId1;
+HXDLIN( 751)					if (::hx::IsNotNull( row->__Field(HX_("mam_id",01,4d,19,b7),::hx::paccDynamic) )) {
+HXLINE( 751)						mapId1 = ::hx::IsEq( row->__Field(HX_("mam_id",01,4d,19,b7),::hx::paccDynamic),HX_("",00,00,00,00) );
             					}
             					else {
-HXLINE( 753)						mapId1 = true;
+HXLINE( 751)						mapId1 = true;
             					}
-HXDLIN( 753)					if (mapId1) {
-HXLINE( 753)						mapId = ( (::String)(row->__Field(HX_("stanza_id",25,7b,7a,e9),::hx::paccDynamic)) );
+HXDLIN( 751)					if (mapId1) {
+HXLINE( 751)						mapId = ( (::String)(row->__Field(HX_("stanza_id",25,7b,7a,e9),::hx::paccDynamic)) );
             					}
             					else {
-HXLINE( 753)						mapId = ( (::String)(((row->__Field(HX_("mam_id",01,4d,19,b7),::hx::paccDynamic) + HX_("\n",0a,00,00,00)) + row->__Field(HX_("mam_by",fd,46,19,b7),::hx::paccDynamic))) );
-            					}
-HXDLIN( 753)					::String mapId2 = ( (::String)(((mapId + HX_("\n",0a,00,00,00)) + row->__Field(HX_("chat_id",22,ea,bd,d0),::hx::paccDynamic))) );
-HXLINE( 754)					if (!(agg->exists(mapId2))) {
-HXLINE( 754)						agg->set(mapId2, ::haxe::ds::StringMap_obj::__alloc( HX_CTX ));
-            					}
-HXLINE( 755)					 ::haxe::ds::StringMap map = ( ( ::haxe::ds::StringMap)(agg->get(mapId2)) );
-HXLINE( 756)					if (!(map->exists(( (::String)(row->__Field(HX_("sender_id",65,a9,5d,a0),::hx::paccDynamic)) )))) {
-HXLINE( 756)						::cpp::VirtualArray v = ::cpp::VirtualArray_obj::__new(0);
-HXDLIN( 756)						map->set(( (::String)(row->__Field(HX_("sender_id",65,a9,5d,a0),::hx::paccDynamic)) ),v);
-            					}
-HXLINE( 757)					if (::hx::IsEq( row->__Field(HX_("kind",54,e1,09,47),::hx::paccDynamic),1 )) {
-HXLINE( 758)						int _g1 = 0;
-HXDLIN( 758)						while((_g1 < reactions->get_length())){
-HXLINE( 758)							 ::Dynamic reaction = reactions->__get(_g1);
-HXDLIN( 758)							_g1 = (_g1 + 1);
-HXDLIN( 758)							( (::cpp::VirtualArray)(map->get( ::Dynamic(row->__Field(HX_("sender_id",65,a9,5d,a0),::hx::paccDynamic)))) )->push(reaction);
+HXLINE( 751)						mapId = ( (::String)(((row->__Field(HX_("mam_id",01,4d,19,b7),::hx::paccDynamic) + HX_("\n",0a,00,00,00)) + row->__Field(HX_("mam_by",fd,46,19,b7),::hx::paccDynamic))) );
+            					}
+HXDLIN( 751)					::String mapId2 = ( (::String)(((mapId + HX_("\n",0a,00,00,00)) + row->__Field(HX_("chat_id",22,ea,bd,d0),::hx::paccDynamic))) );
+HXLINE( 752)					if (!(agg->exists(mapId2))) {
+HXLINE( 752)						agg->set(mapId2, ::haxe::ds::StringMap_obj::__alloc( HX_CTX ));
+            					}
+HXLINE( 753)					 ::haxe::ds::StringMap map = ( ( ::haxe::ds::StringMap)(agg->get(mapId2)) );
+HXLINE( 754)					if (!(map->exists(( (::String)(row->__Field(HX_("sender_id",65,a9,5d,a0),::hx::paccDynamic)) )))) {
+HXLINE( 754)						::cpp::VirtualArray v = ::cpp::VirtualArray_obj::__new(0);
+HXDLIN( 754)						map->set(( (::String)(row->__Field(HX_("sender_id",65,a9,5d,a0),::hx::paccDynamic)) ),v);
+            					}
+HXLINE( 755)					if (::hx::IsEq( row->__Field(HX_("kind",54,e1,09,47),::hx::paccDynamic),1 )) {
+HXLINE( 756)						int _g1 = 0;
+HXDLIN( 756)						while((_g1 < reactions->get_length())){
+HXLINE( 756)							 ::Dynamic reaction = reactions->__get(_g1);
+HXDLIN( 756)							_g1 = (_g1 + 1);
+HXDLIN( 756)							( (::cpp::VirtualArray)(map->get( ::Dynamic(row->__Field(HX_("sender_id",65,a9,5d,a0),::hx::paccDynamic)))) )->push(reaction);
             						}
             					}
             					else {
-HXLINE( 759)						if (::hx::IsEq( row->__Field(HX_("kind",54,e1,09,47),::hx::paccDynamic),0 )) {
-HXLINE( 760)							::String k = ( (::String)(row->__Field(HX_("sender_id",65,a9,5d,a0),::hx::paccDynamic)) );
-HXDLIN( 760)							::cpp::VirtualArray _g2 = ::cpp::VirtualArray_obj::__new(0);
-HXDLIN( 760)							{
-HXLINE( 760)								int _g3 = 0;
-HXDLIN( 760)								::cpp::VirtualArray _g4 = ( (::cpp::VirtualArray)(map->get( ::Dynamic(row->__Field(HX_("sender_id",65,a9,5d,a0),::hx::paccDynamic)))) );
-HXDLIN( 760)								while((_g3 < _g4->get_length())){
-HXLINE( 760)									 ::Dynamic v1 = _g4->__get(_g3);
-HXDLIN( 760)									_g3 = (_g3 + 1);
-HXDLIN( 760)									if (::hx::IsNotNull( v1->__Field(HX_("uri",6c,2b,59,00),::hx::paccDynamic) )) {
-HXLINE( 760)										_g2->push(v1);
+HXLINE( 757)						if (::hx::IsEq( row->__Field(HX_("kind",54,e1,09,47),::hx::paccDynamic),0 )) {
+HXLINE( 758)							::String k = ( (::String)(row->__Field(HX_("sender_id",65,a9,5d,a0),::hx::paccDynamic)) );
+HXDLIN( 758)							::cpp::VirtualArray _g2 = ::cpp::VirtualArray_obj::__new(0);
+HXDLIN( 758)							{
+HXLINE( 758)								int _g3 = 0;
+HXDLIN( 758)								::cpp::VirtualArray _g4 = ( (::cpp::VirtualArray)(map->get( ::Dynamic(row->__Field(HX_("sender_id",65,a9,5d,a0),::hx::paccDynamic)))) );
+HXDLIN( 758)								while((_g3 < _g4->get_length())){
+HXLINE( 758)									 ::Dynamic v1 = _g4->__get(_g3);
+HXDLIN( 758)									_g3 = (_g3 + 1);
+HXDLIN( 758)									if (::hx::IsNotNull( v1->__Field(HX_("uri",6c,2b,59,00),::hx::paccDynamic) )) {
+HXLINE( 758)										_g2->push(v1);
             									}
             								}
             							}
-HXDLIN( 760)							::cpp::VirtualArray v2 = reactions->concat(_g2);
-HXDLIN( 760)							map->set(k,v2);
+HXDLIN( 758)							::cpp::VirtualArray v2 = reactions->concat(_g2);
+HXDLIN( 758)							map->set(k,v2);
             						}
             						else {
-HXLINE( 761)							if (::hx::IsEq( row->__Field(HX_("kind",54,e1,09,47),::hx::paccDynamic),2 )) {
-HXLINE( 762)								map->set(( (::String)(row->__Field(HX_("sender_id",65,a9,5d,a0),::hx::paccDynamic)) ),reactions);
+HXLINE( 759)							if (::hx::IsEq( row->__Field(HX_("kind",54,e1,09,47),::hx::paccDynamic),2 )) {
+HXLINE( 760)								map->set(( (::String)(row->__Field(HX_("sender_id",65,a9,5d,a0),::hx::paccDynamic)) ),reactions);
             							}
             						}
             					}
             				}
             			}
-HXLINE( 765)			 ::haxe::ds::StringMap result =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
-HXLINE( 766)			{
-HXLINE( 766)				::Dynamic map1 = agg;
-HXDLIN( 766)				::Dynamic _g_map = map1;
-HXDLIN( 766)				 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map1);
-HXDLIN( 766)				while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE( 766)					::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
-HXDLIN( 766)					 ::haxe::ds::StringMap _g_value = ( ( ::haxe::ds::StringMap)(::haxe::IMap_obj::get(_g_map,key)) );
-HXDLIN( 766)					::String _g_key = key;
-HXDLIN( 766)					::String id = _g_key;
-HXDLIN( 766)					 ::haxe::ds::StringMap reactions1 = _g_value;
-HXDLIN( 766)					{
-HXLINE( 767)						 ::haxe::ds::StringMap map2 =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
-HXLINE( 768)						{
-HXLINE( 768)							 ::Dynamic reactionsBySender = reactions1->iterator();
-HXDLIN( 768)							while(( (bool)(reactionsBySender->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
-HXLINE( 768)								::cpp::VirtualArray reactionsBySender1 = ( (::cpp::VirtualArray)(reactionsBySender->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
-HXLINE( 769)								{
-HXLINE( 769)									int _g5 = 0;
-HXDLIN( 769)									while((_g5 < reactionsBySender1->get_length())){
-HXLINE( 769)										 ::Dynamic reactionD = reactionsBySender1->__get(_g5);
-HXDLIN( 769)										_g5 = (_g5 + 1);
-HXLINE( 770)										 ::snikket::Reaction reaction1;
-HXDLIN( 770)										if (::hx::IsNull( reactionD->__Field(HX_("uri",6c,2b,59,00),::hx::paccDynamic) )) {
-HXLINE( 770)											reaction1 =  ::snikket::Reaction_obj::__alloc( HX_CTX ,( (::String)(reactionD->__Field(HX_("senderId",f0,1e,0e,ec),::hx::paccDynamic)) ),( (::String)(reactionD->__Field(HX_("timestamp",d6,d4,ce,a5),::hx::paccDynamic)) ),( (::String)(reactionD->__Field(HX_("text",ad,cc,f9,4c),::hx::paccDynamic)) ),( (::String)(reactionD->__Field(HX_("envelopeId",0b,03,af,a8),::hx::paccDynamic)) ),( (::String)(reactionD->__Field(HX_("key",9f,89,51,00),::hx::paccDynamic)) ));
+HXLINE( 763)			 ::haxe::ds::StringMap result =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
+HXLINE( 764)			{
+HXLINE( 764)				::Dynamic map1 = agg;
+HXDLIN( 764)				::Dynamic _g_map = map1;
+HXDLIN( 764)				 ::Dynamic _g_keys = ::haxe::IMap_obj::keys(map1);
+HXDLIN( 764)				while(( (bool)(_g_keys->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE( 764)					::String key = ( (::String)(_g_keys->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
+HXDLIN( 764)					 ::haxe::ds::StringMap _g_value = ( ( ::haxe::ds::StringMap)(::haxe::IMap_obj::get(_g_map,key)) );
+HXDLIN( 764)					::String _g_key = key;
+HXDLIN( 764)					::String id = _g_key;
+HXDLIN( 764)					 ::haxe::ds::StringMap reactions1 = _g_value;
+HXDLIN( 764)					{
+HXLINE( 765)						 ::haxe::ds::StringMap map2 =  ::haxe::ds::StringMap_obj::__alloc( HX_CTX );
+HXLINE( 766)						{
+HXLINE( 766)							 ::Dynamic reactionsBySender = reactions1->iterator();
+HXDLIN( 766)							while(( (bool)(reactionsBySender->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE( 766)								::cpp::VirtualArray reactionsBySender1 = ( (::cpp::VirtualArray)(reactionsBySender->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)()) );
+HXLINE( 767)								{
+HXLINE( 767)									int _g5 = 0;
+HXDLIN( 767)									while((_g5 < reactionsBySender1->get_length())){
+HXLINE( 767)										 ::Dynamic reactionD = reactionsBySender1->__get(_g5);
+HXDLIN( 767)										_g5 = (_g5 + 1);
+HXLINE( 768)										 ::snikket::Reaction reaction1;
+HXDLIN( 768)										if (::hx::IsNull( reactionD->__Field(HX_("uri",6c,2b,59,00),::hx::paccDynamic) )) {
+HXLINE( 768)											reaction1 =  ::snikket::Reaction_obj::__alloc( HX_CTX ,( (::String)(reactionD->__Field(HX_("senderId",f0,1e,0e,ec),::hx::paccDynamic)) ),( (::String)(reactionD->__Field(HX_("timestamp",d6,d4,ce,a5),::hx::paccDynamic)) ),( (::String)(reactionD->__Field(HX_("text",ad,cc,f9,4c),::hx::paccDynamic)) ),( (::String)(reactionD->__Field(HX_("envelopeId",0b,03,af,a8),::hx::paccDynamic)) ),( (::String)(reactionD->__Field(HX_("key",9f,89,51,00),::hx::paccDynamic)) ));
             										}
             										else {
-HXLINE( 770)											reaction1 =  ::snikket::CustomEmojiReaction_obj::__alloc( HX_CTX ,( (::String)(reactionD->__Field(HX_("senderId",f0,1e,0e,ec),::hx::paccDynamic)) ),( (::String)(reactionD->__Field(HX_("timestamp",d6,d4,ce,a5),::hx::paccDynamic)) ),( (::String)(reactionD->__Field(HX_("text",ad,cc,f9,4c),::hx::paccDynamic)) ),( (::String)(reactionD->__Field(HX_("uri",6c,2b,59,00),::hx::paccDynamic)) ),( (::String)(reactionD->__Field(HX_("envelopeId",0b,03,af,a8),::hx::paccDynamic)) ));
+HXLINE( 768)											reaction1 =  ::snikket::CustomEmojiReaction_obj::__alloc( HX_CTX ,( (::String)(reactionD->__Field(HX_("senderId",f0,1e,0e,ec),::hx::paccDynamic)) ),( (::String)(reactionD->__Field(HX_("timestamp",d6,d4,ce,a5),::hx::paccDynamic)) ),( (::String)(reactionD->__Field(HX_("text",ad,cc,f9,4c),::hx::paccDynamic)) ),( (::String)(reactionD->__Field(HX_("uri",6c,2b,59,00),::hx::paccDynamic)) ),( (::String)(reactionD->__Field(HX_("envelopeId",0b,03,af,a8),::hx::paccDynamic)) ));
             										}
-HXLINE( 776)										if (!(map2->exists(reaction1->key))) {
-HXLINE( 776)											::Array< ::Dynamic> v3 = ::Array_obj< ::Dynamic>::__new(0);
-HXDLIN( 776)											map2->set(reaction1->key,v3);
+HXLINE( 774)										if (!(map2->exists(reaction1->key))) {
+HXLINE( 774)											::Array< ::Dynamic> v3 = ::Array_obj< ::Dynamic>::__new(0);
+HXDLIN( 774)											map2->set(reaction1->key,v3);
             										}
-HXLINE( 777)										( (::Array< ::Dynamic>)(map2->get(reaction1->key)) )->push(reaction1);
+HXLINE( 775)										( (::Array< ::Dynamic>)(map2->get(reaction1->key)) )->push(reaction1);
             									}
             								}
             							}
             						}
-HXLINE( 780)						result->set(id,map2);
+HXLINE( 778)						result->set(id,map2);
             					}
             				}
             			}
-HXLINE( 782)			return result;
+HXLINE( 780)			return result;
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_733_fetchReactions)
-HXLINE( 734)		 ::StringBuf q =  ::StringBuf_obj::__alloc( HX_CTX );
-HXLINE( 735)		{
-HXLINE( 735)			if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 735)				q->flush();
+            	HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_731_fetchReactions)
+HXLINE( 732)		 ::StringBuf q =  ::StringBuf_obj::__alloc( HX_CTX );
+HXLINE( 733)		{
+HXLINE( 733)			if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 733)				q->flush();
             			}
-HXDLIN( 735)			if (::hx::IsNull( q->b )) {
-HXLINE( 735)				q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_172,1);
+HXDLIN( 733)			if (::hx::IsNull( q->b )) {
+HXLINE( 733)				q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_172,1);
             			}
             			else {
-HXLINE( 735)				q->b->push(HX_("SELECT kind, chat_id, mam_id, mam_by, stanza_id, sender_id, json(reactions) AS reactions FROM reactions WHERE 1=0",d2,04,de,a3));
-            			}
-            		}
-HXLINE( 736)		::Array< ::String > params = ::Array_obj< ::String >::__new(0);
-HXLINE( 737)		{
-HXLINE( 737)			int _g = 0;
-HXDLIN( 737)			while((_g < ids->length)){
-HXLINE( 737)				 ::Dynamic item = ids->__get(_g);
-HXDLIN( 737)				_g = (_g + 1);
-HXLINE( 738)				if (::hx::IsNotNull( item->__Field(HX_("serverId",7e,01,b2,e2),::hx::paccDynamic) )) {
-HXLINE( 739)					{
-HXLINE( 739)						if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 739)							q->flush();
+HXLINE( 733)				q->b->push(HX_("SELECT kind, chat_id, mam_id, mam_by, stanza_id, sender_id, json(reactions) AS reactions FROM reactions WHERE 1=0",d2,04,de,a3));
+            			}
+            		}
+HXLINE( 734)		::Array< ::String > params = ::Array_obj< ::String >::__new(0);
+HXLINE( 735)		{
+HXLINE( 735)			int _g = 0;
+HXDLIN( 735)			while((_g < ids->length)){
+HXLINE( 735)				 ::Dynamic item = ids->__get(_g);
+HXDLIN( 735)				_g = (_g + 1);
+HXLINE( 736)				if (::hx::IsNotNull( item->__Field(HX_("serverId",7e,01,b2,e2),::hx::paccDynamic) )) {
+HXLINE( 737)					{
+HXLINE( 737)						if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 737)							q->flush();
             						}
-HXDLIN( 739)						if (::hx::IsNull( q->b )) {
-HXLINE( 739)							q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_173,1);
+HXDLIN( 737)						if (::hx::IsNull( q->b )) {
+HXLINE( 737)							q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_173,1);
             						}
             						else {
-HXLINE( 739)							q->b->push(HX_(" OR (mam_id=? AND mam_by=?)",0f,bb,c5,e5));
+HXLINE( 737)							q->b->push(HX_(" OR (mam_id=? AND mam_by=?)",0f,bb,c5,e5));
             						}
             					}
-HXLINE( 740)					params->push( ::Dynamic(item->__Field(HX_("serverId",7e,01,b2,e2),::hx::paccDynamic)));
-HXLINE( 741)					params->push( ::Dynamic(item->__Field(HX_("serverIdBy",f5,16,54,74),::hx::paccDynamic)));
+HXLINE( 738)					params->push( ::Dynamic(item->__Field(HX_("serverId",7e,01,b2,e2),::hx::paccDynamic)));
+HXLINE( 739)					params->push( ::Dynamic(item->__Field(HX_("serverIdBy",f5,16,54,74),::hx::paccDynamic)));
             				}
-HXLINE( 743)				if (::hx::IsNotNull( item->__Field(HX_("localId",26,7a,c6,2d),::hx::paccDynamic) )) {
-HXLINE( 744)					{
-HXLINE( 744)						if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 744)							q->flush();
+HXLINE( 741)				if (::hx::IsNotNull( item->__Field(HX_("localId",26,7a,c6,2d),::hx::paccDynamic) )) {
+HXLINE( 742)					{
+HXLINE( 742)						if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 742)							q->flush();
             						}
-HXDLIN( 744)						if (::hx::IsNull( q->b )) {
-HXLINE( 744)							q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_174,1);
+HXDLIN( 742)						if (::hx::IsNull( q->b )) {
+HXLINE( 742)							q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_174,1);
             						}
             						else {
-HXLINE( 744)							q->b->push(HX_(" OR stanza_id=?",6a,1d,f2,5b));
+HXLINE( 742)							q->b->push(HX_(" OR stanza_id=?",6a,1d,f2,5b));
             						}
             					}
-HXLINE( 745)					params->push( ::Dynamic(item->__Field(HX_("localId",26,7a,c6,2d),::hx::paccDynamic)));
+HXLINE( 743)					params->push( ::Dynamic(item->__Field(HX_("localId",26,7a,c6,2d),::hx::paccDynamic)));
             				}
             			}
             		}
-HXLINE( 748)		{
-HXLINE( 748)			if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 748)				q->flush();
+HXLINE( 746)		{
+HXLINE( 746)			if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 746)				q->flush();
             			}
-HXDLIN( 748)			if (::hx::IsNull( q->b )) {
-HXLINE( 748)				q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_175,1);
+HXDLIN( 746)			if (::hx::IsNull( q->b )) {
+HXLINE( 746)				q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_175,1);
             			}
             			else {
-HXLINE( 748)				q->b->push(HX_(" ORDER BY created_at, ROWID",00,65,8d,0e));
+HXLINE( 746)				q->b->push(HX_(" ORDER BY created_at, ROWID",00,65,8d,0e));
             			}
             		}
-HXLINE( 749)		 ::snikket::persistence::SqliteDriver _hx_tmp = this->db;
-HXDLIN( 749)		return ::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp->exec(q->toString(),params), ::Dynamic(new _hx_Closure_0()),null());
+HXLINE( 747)		 ::snikket::persistence::SqliteDriver _hx_tmp = this->db;
+HXDLIN( 747)		return ::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp->exec(q->toString(),params), ::Dynamic(new _hx_Closure_0()),null());
             	}
 
 
@@ -2705,285 +2725,285 @@ HX_DEFINE_DYNAMIC_FUNC2(Sqlite_obj,fetchReactions,return )
 ::Dynamic Sqlite_obj::hydrateReplyTo(::String accountId,::Array< ::Dynamic> messages,::Array< ::Dynamic> replyTos){
             		HX_BEGIN_LOCAL_FUNC_S3(::hx::LocalFunc,_hx_Closure_1,::Array< ::Dynamic>,messages, ::snikket::persistence::Sqlite,_gthis,::String,accountId) HXARGC(1)
             		::Array< ::Dynamic> _hx_run( ::haxe::iterators::ArrayIterator iter){
-            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_806_hydrateReplyTo)
-HXLINE( 807)			if (::hx::IsNotNull( iter )) {
+            			HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_804_hydrateReplyTo)
+HXLINE( 805)			if (::hx::IsNotNull( iter )) {
             				HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::haxe::iterators::ArrayIterator,iter) HXARGC(0)
             				 ::haxe::iterators::ArrayIterator _hx_run(){
-            					HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_808_hydrateReplyTo)
-HXLINE( 808)					return iter;
+            					HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_806_hydrateReplyTo)
+HXLINE( 806)					return iter;
             				}
             				HX_END_LOCAL_FUNC0(return)
 
-HXLINE( 808)				::Array< ::Dynamic> parents = ::Lambda_obj::array( ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE( 806)				::Array< ::Dynamic> parents = ::Lambda_obj::array( ::Dynamic(::hx::Anon_obj::Create(1)
             					->setFixed(0,HX_("iterator",ee,49,9a,93), ::Dynamic(new _hx_Closure_0(iter)))));
-HXLINE( 809)				{
-HXLINE( 809)					int _g = 0;
-HXDLIN( 809)					while((_g < messages->length)){
-HXLINE( 809)						 ::snikket::ChatMessage message = messages->__get(_g).StaticCast<  ::snikket::ChatMessage >();
-HXDLIN( 809)						_g = (_g + 1);
-HXLINE( 810)						if (::hx::IsNotNull( message->replyToMessage )) {
-HXLINE( 811)							 ::Dynamic result = null();
-HXDLIN( 811)							{
-HXLINE( 811)								int _g1 = 0;
-HXDLIN( 811)								while((_g1 < parents->length)){
-HXLINE( 811)									 ::Dynamic v = parents->__get(_g1);
-HXDLIN( 811)									_g1 = (_g1 + 1);
-HXDLIN( 811)									bool found;
-HXDLIN( 811)									bool found1;
-HXDLIN( 811)									::String v1 = ( (::String)(v->__Field(HX_("chat_id",22,ea,bd,d0),::hx::paccDynamic)) );
-HXDLIN( 811)									if ((v1 == message->chatId())) {
-HXLINE( 811)										if (::hx::IsNotNull( message->replyToMessage->serverId )) {
-HXLINE( 811)											found1 = ::hx::IsEq( v->__Field(HX_("mam_id",01,4d,19,b7),::hx::paccDynamic),message->replyToMessage->serverId );
+HXLINE( 807)				{
+HXLINE( 807)					int _g = 0;
+HXDLIN( 807)					while((_g < messages->length)){
+HXLINE( 807)						 ::snikket::ChatMessage message = messages->__get(_g).StaticCast<  ::snikket::ChatMessage >();
+HXDLIN( 807)						_g = (_g + 1);
+HXLINE( 808)						if (::hx::IsNotNull( message->replyToMessage )) {
+HXLINE( 809)							 ::Dynamic result = null();
+HXDLIN( 809)							{
+HXLINE( 809)								int _g1 = 0;
+HXDLIN( 809)								while((_g1 < parents->length)){
+HXLINE( 809)									 ::Dynamic v = parents->__get(_g1);
+HXDLIN( 809)									_g1 = (_g1 + 1);
+HXDLIN( 809)									bool found;
+HXDLIN( 809)									bool found1;
+HXDLIN( 809)									::String v1 = ( (::String)(v->__Field(HX_("chat_id",22,ea,bd,d0),::hx::paccDynamic)) );
+HXDLIN( 809)									if ((v1 == message->chatId())) {
+HXLINE( 809)										if (::hx::IsNotNull( message->replyToMessage->serverId )) {
+HXLINE( 809)											found1 = ::hx::IsEq( v->__Field(HX_("mam_id",01,4d,19,b7),::hx::paccDynamic),message->replyToMessage->serverId );
             										}
             										else {
-HXLINE( 811)											found1 = true;
+HXLINE( 809)											found1 = true;
             										}
             									}
             									else {
-HXLINE( 811)										found1 = false;
+HXLINE( 809)										found1 = false;
             									}
-HXDLIN( 811)									if (found1) {
-HXLINE( 811)										if (::hx::IsNotNull( message->replyToMessage->localId )) {
-HXLINE( 811)											found = ::hx::IsEq( v->__Field(HX_("stanza_id",25,7b,7a,e9),::hx::paccDynamic),message->replyToMessage->localId );
+HXDLIN( 809)									if (found1) {
+HXLINE( 809)										if (::hx::IsNotNull( message->replyToMessage->localId )) {
+HXLINE( 809)											found = ::hx::IsEq( v->__Field(HX_("stanza_id",25,7b,7a,e9),::hx::paccDynamic),message->replyToMessage->localId );
             										}
             										else {
-HXLINE( 811)											found = true;
+HXLINE( 809)											found = true;
             										}
             									}
             									else {
-HXLINE( 811)										found = false;
+HXLINE( 809)										found = false;
             									}
-HXDLIN( 811)									if (found) {
-HXLINE( 811)										result = v;
-HXDLIN( 811)										goto _hx_goto_178;
+HXDLIN( 809)									if (found) {
+HXLINE( 809)										result = v;
+HXDLIN( 809)										goto _hx_goto_178;
             									}
             								}
             								_hx_goto_178:;
             							}
-HXDLIN( 811)							 ::Dynamic found2 = result;
-HXLINE( 812)							if (::hx::IsNotNull( found2 )) {
-HXLINE( 812)								 ::snikket::persistence::Sqlite _gthis1 = _gthis;
-HXDLIN( 812)								::String accountId1 = accountId;
-HXDLIN( 812)								message->set_replyToMessage(_gthis1->hydrateMessages(accountId1, ::haxe::iterators::ArrayIterator_obj::__alloc( HX_CTX ,::cpp::VirtualArray_obj::__new(1)->init(0,found2)))->__get(0).StaticCast<  ::snikket::ChatMessage >());
+HXDLIN( 809)							 ::Dynamic found2 = result;
+HXLINE( 810)							if (::hx::IsNotNull( found2 )) {
+HXLINE( 810)								 ::snikket::persistence::Sqlite _gthis1 = _gthis;
+HXDLIN( 810)								::String accountId1 = accountId;
+HXDLIN( 810)								message->set_replyToMessage(_gthis1->hydrateMessages(accountId1, ::haxe::iterators::ArrayIterator_obj::__alloc( HX_CTX ,::cpp::VirtualArray_obj::__new(1)->init(0,found2)))->__get(0).StaticCast<  ::snikket::ChatMessage >());
             							}
             						}
             					}
             				}
             			}
-HXLINE( 816)			return messages;
+HXLINE( 814)			return messages;
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_786_hydrateReplyTo)
-HXDLIN( 786)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 787)		::Dynamic _hx_tmp;
-HXDLIN( 787)		if ((replyTos->length < 1)) {
-HXLINE( 787)			_hx_tmp = ::thenshim::_Promise::Promise_Impl__obj::resolve(null());
+            	HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_784_hydrateReplyTo)
+HXDLIN( 784)		 ::snikket::persistence::Sqlite _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 785)		::Dynamic _hx_tmp;
+HXDLIN( 785)		if ((replyTos->length < 1)) {
+HXLINE( 785)			_hx_tmp = ::thenshim::_Promise::Promise_Impl__obj::resolve(null());
             		}
             		else {
-HXLINE( 790)			::Array< ::String > params = ::Array_obj< ::String >::__new(1)->init(0,accountId);
-HXLINE( 791)			 ::StringBuf q =  ::StringBuf_obj::__alloc( HX_CTX );
-HXLINE( 792)			{
-HXLINE( 792)				if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 792)					q->flush();
+HXLINE( 788)			::Array< ::String > params = ::Array_obj< ::String >::__new(1)->init(0,accountId);
+HXLINE( 789)			 ::StringBuf q =  ::StringBuf_obj::__alloc( HX_CTX );
+HXLINE( 790)			{
+HXLINE( 790)				if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 790)					q->flush();
             				}
-HXDLIN( 792)				if (::hx::IsNull( q->b )) {
-HXLINE( 792)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_182,1);
+HXDLIN( 790)				if (::hx::IsNull( q->b )) {
+HXLINE( 790)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_182,1);
             				}
             				else {
-HXLINE( 792)					q->b->push(HX_("SELECT chat_id, stanza_id, stanza, direction, type, status, strftime('%FT%H:%M:%fZ', created_at / 1000.0, 'unixepoch') AS timestamp, sender_id, mam_id, mam_by, sync_point FROM messages WHERE account_id=? AND (",56,f2,9f,31));
-            				}
-            			}
-HXLINE( 793)			{
-HXLINE( 793)				::Array< ::String > result = ::Array_obj< ::String >::__new(replyTos->length);
-HXDLIN( 793)				{
-HXLINE( 793)					int _g = 0;
-HXDLIN( 793)					int _g1 = replyTos->length;
-HXDLIN( 793)					while((_g < _g1)){
-HXLINE( 793)						_g = (_g + 1);
-HXDLIN( 793)						int i = (_g - 1);
-HXDLIN( 793)						{
-HXLINE( 794)							 ::Dynamic parent = _hx_array_unsafe_get(replyTos,i);
-HXLINE( 793)							::String inValue;
-HXLINE( 794)							if (::hx::IsNotNull( parent->__Field(HX_("serverId",7e,01,b2,e2),::hx::paccDynamic) )) {
-HXLINE( 795)								params->push( ::Dynamic(parent->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)));
-HXLINE( 796)								params->push( ::Dynamic(parent->__Field(HX_("serverId",7e,01,b2,e2),::hx::paccDynamic)));
-HXLINE( 793)								inValue = HX_(" (chat_id=? AND mam_id=?)",59,03,f2,84);
+HXLINE( 790)					q->b->push(HX_("SELECT chat_id, stanza_id, stanza, direction, type, status, strftime('%FT%H:%M:%fZ', created_at / 1000.0, 'unixepoch') AS timestamp, sender_id, mam_id, mam_by, sync_point FROM messages WHERE account_id=? AND (",56,f2,9f,31));
+            				}
+            			}
+HXLINE( 791)			{
+HXLINE( 791)				::Array< ::String > result = ::Array_obj< ::String >::__new(replyTos->length);
+HXDLIN( 791)				{
+HXLINE( 791)					int _g = 0;
+HXDLIN( 791)					int _g1 = replyTos->length;
+HXDLIN( 791)					while((_g < _g1)){
+HXLINE( 791)						_g = (_g + 1);
+HXDLIN( 791)						int i = (_g - 1);
+HXDLIN( 791)						{
+HXLINE( 792)							 ::Dynamic parent = _hx_array_unsafe_get(replyTos,i);
+HXLINE( 791)							::String inValue;
+HXLINE( 792)							if (::hx::IsNotNull( parent->__Field(HX_("serverId",7e,01,b2,e2),::hx::paccDynamic) )) {
+HXLINE( 793)								params->push( ::Dynamic(parent->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)));
+HXLINE( 794)								params->push( ::Dynamic(parent->__Field(HX_("serverId",7e,01,b2,e2),::hx::paccDynamic)));
+HXLINE( 791)								inValue = HX_(" (chat_id=? AND mam_id=?)",59,03,f2,84);
             							}
             							else {
-HXLINE( 799)								params->push( ::Dynamic(parent->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)));
-HXLINE( 800)								params->push( ::Dynamic(parent->__Field(HX_("localId",26,7a,c6,2d),::hx::paccDynamic)));
-HXLINE( 793)								inValue = HX_(" (chat_id=? AND stanza_id=?)",2f,d3,29,86);
+HXLINE( 797)								params->push( ::Dynamic(parent->__Field(HX_("chatId",d3,04,77,b7),::hx::paccDynamic)));
+HXLINE( 798)								params->push( ::Dynamic(parent->__Field(HX_("localId",26,7a,c6,2d),::hx::paccDynamic)));
+HXLINE( 791)								inValue = HX_(" (chat_id=? AND stanza_id=?)",2f,d3,29,86);
             							}
-HXDLIN( 793)							result->__unsafe_set(i,inValue);
+HXDLIN( 791)							result->__unsafe_set(i,inValue);
             						}
             					}
             				}
-HXDLIN( 793)				::String x = result->join(HX_(" OR ",7d,0d,63,15));
-HXDLIN( 793)				if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 793)					q->flush();
+HXDLIN( 791)				::String x = result->join(HX_(" OR ",7d,0d,63,15));
+HXDLIN( 791)				if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 791)					q->flush();
             				}
-HXDLIN( 793)				if (::hx::IsNull( q->b )) {
-HXLINE( 793)					q->b = ::Array_obj< ::String >::__new(1)->init(0,::Std_obj::string(x));
+HXDLIN( 791)				if (::hx::IsNull( q->b )) {
+HXLINE( 791)					q->b = ::Array_obj< ::String >::__new(1)->init(0,::Std_obj::string(x));
             				}
             				else {
-HXLINE( 793)					::Array< ::String > q1 = q->b;
-HXDLIN( 793)					q1->push(::Std_obj::string(x));
+HXLINE( 791)					::Array< ::String > q1 = q->b;
+HXDLIN( 791)					q1->push(::Std_obj::string(x));
             				}
             			}
-HXLINE( 804)			{
-HXLINE( 804)				if (::hx::IsNotNull( q->charBuf )) {
-HXLINE( 804)					q->flush();
+HXLINE( 802)			{
+HXLINE( 802)				if (::hx::IsNotNull( q->charBuf )) {
+HXLINE( 802)					q->flush();
             				}
-HXDLIN( 804)				if (::hx::IsNull( q->b )) {
-HXLINE( 804)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_183,1);
+HXDLIN( 802)				if (::hx::IsNull( q->b )) {
+HXLINE( 802)					q->b = ::Array_obj< ::String >::fromData( _hx_array_data_e415cb6c_183,1);
             				}
             				else {
-HXLINE( 804)					q->b->push(HX_(")",29,00,00,00));
+HXLINE( 802)					q->b->push(HX_(")",29,00,00,00));
             				}
             			}
-HXLINE( 805)			 ::snikket::persistence::SqliteDriver _hx_tmp1 = this->db;
-HXLINE( 787)			_hx_tmp = _hx_tmp1->exec(q->toString(),params);
+HXLINE( 803)			 ::snikket::persistence::SqliteDriver _hx_tmp1 = this->db;
+HXLINE( 785)			_hx_tmp = _hx_tmp1->exec(q->toString(),params);
             		}
-HXDLIN( 787)		return ::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp, ::Dynamic(new _hx_Closure_1(messages,_gthis,accountId)),null());
+HXDLIN( 785)		return ::thenshim::_Promise::Promise_Impl__obj::then(_hx_tmp, ::Dynamic(new _hx_Closure_1(messages,_gthis,accountId)),null());
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC3(Sqlite_obj,hydrateReplyTo,return )
 
 ::Array< ::Dynamic> Sqlite_obj::hydrateMessages(::String accountId, ::Dynamic rows){
-            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_820_hydrateMessages)
-HXLINE( 822)		 ::snikket::JID accountJid = ::snikket::JID_obj::parse(accountId);
-HXLINE( 823)		::Array< ::Dynamic> _g = ::Array_obj< ::Dynamic>::__new(0);
-HXDLIN( 823)		{
+            	HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_818_hydrateMessages)
+HXLINE( 820)		 ::snikket::JID accountJid = ::snikket::JID_obj::parse(accountId);
+HXLINE( 821)		::Array< ::Dynamic> _g = ::Array_obj< ::Dynamic>::__new(0);
+HXDLIN( 821)		{
             			HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::Dynamic,rows) HXARGC(0)
             			 ::Dynamic _hx_run(){
-            				HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_823_hydrateMessages)
-HXLINE( 823)				return rows;
+            				HX_STACKFRAME(&_hx_pos_5b1a6b524efab4db_821_hydrateMessages)
+HXLINE( 821)				return rows;
             			}
             			HX_END_LOCAL_FUNC0(return)
 
-HXLINE( 823)			 ::Dynamic inlobj_iterator =  ::Dynamic(new _hx_Closure_0(rows));
-HXDLIN( 823)			 ::Dynamic x = inlobj_iterator();
-HXDLIN( 823)			while(( (bool)(x->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
+HXLINE( 821)			 ::Dynamic inlobj_iterator =  ::Dynamic(new _hx_Closure_0(rows));
+HXDLIN( 821)			 ::Dynamic x = inlobj_iterator();
+HXDLIN( 821)			while(( (bool)(x->__Field(HX_("hasNext",6d,a5,46,18),::hx::paccDynamic)()) )){
             				HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_3, ::snikket::JID,accountJid, ::Dynamic,row) HXARGC(2)
             				 ::snikket::ChatMessageBuilder _hx_run( ::snikket::ChatMessageBuilder builder, ::snikket::Stanza _){
-            					HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_823_hydrateMessages)
-HXLINE( 824)					builder->syncPoint = ::hx::IsNotEq( row->__Field(HX_("sync_point",2c,6c,7f,80),::hx::paccDynamic),0 );
-HXLINE( 825)					builder->timestamp = ( (::String)(row->__Field(HX_("timestamp",d6,d4,ce,a5),::hx::paccDynamic)) );
-HXLINE( 826)					builder->type = ( (int)(row->__Field(HX_("type",ba,f2,08,4d),::hx::paccDynamic)) );
-HXLINE( 827)					builder->status = ( (int)(row->__Field(HX_("status",32,e7,fb,05),::hx::paccDynamic)) );
-HXLINE( 828)					builder->senderId = ( (::String)(row->__Field(HX_("sender_id",65,a9,5d,a0),::hx::paccDynamic)) );
-HXLINE( 829)					::String _hx_tmp;
-HXDLIN( 829)					if (::hx::IsEq( row->__Field(HX_("mam_id",01,4d,19,b7),::hx::paccDynamic),HX_("",00,00,00,00) )) {
-HXLINE( 829)						_hx_tmp = null();
+            					HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_821_hydrateMessages)
+HXLINE( 822)					builder->syncPoint = ::hx::IsNotEq( row->__Field(HX_("sync_point",2c,6c,7f,80),::hx::paccDynamic),0 );
+HXLINE( 823)					builder->timestamp = ( (::String)(row->__Field(HX_("timestamp",d6,d4,ce,a5),::hx::paccDynamic)) );
+HXLINE( 824)					builder->type = ( (int)(row->__Field(HX_("type",ba,f2,08,4d),::hx::paccDynamic)) );
+HXLINE( 825)					builder->status = ( (int)(row->__Field(HX_("status",32,e7,fb,05),::hx::paccDynamic)) );
+HXLINE( 826)					builder->senderId = ( (::String)(row->__Field(HX_("sender_id",65,a9,5d,a0),::hx::paccDynamic)) );
+HXLINE( 827)					::String _hx_tmp;
+HXDLIN( 827)					if (::hx::IsEq( row->__Field(HX_("mam_id",01,4d,19,b7),::hx::paccDynamic),HX_("",00,00,00,00) )) {
+HXLINE( 827)						_hx_tmp = null();
             					}
             					else {
-HXLINE( 829)						_hx_tmp = ( (::String)(row->__Field(HX_("mam_id",01,4d,19,b7),::hx::paccDynamic)) );
+HXLINE( 827)						_hx_tmp = ( (::String)(row->__Field(HX_("mam_id",01,4d,19,b7),::hx::paccDynamic)) );
             					}
-HXDLIN( 829)					builder->serverId = _hx_tmp;
-HXLINE( 830)					::String _hx_tmp1;
-HXDLIN( 830)					if (::hx::IsEq( row->__Field(HX_("mam_by",fd,46,19,b7),::hx::paccDynamic),HX_("",00,00,00,00) )) {
-HXLINE( 830)						_hx_tmp1 = null();
+HXDLIN( 827)					builder->serverId = _hx_tmp;
+HXLINE( 828)					::String _hx_tmp1;
+HXDLIN( 828)					if (::hx::IsEq( row->__Field(HX_("mam_by",fd,46,19,b7),::hx::paccDynamic),HX_("",00,00,00,00) )) {
+HXLINE( 828)						_hx_tmp1 = null();
             					}
             					else {
-HXLINE( 830)						_hx_tmp1 = ( (::String)(row->__Field(HX_("mam_by",fd,46,19,b7),::hx::paccDynamic)) );
+HXLINE( 828)						_hx_tmp1 = ( (::String)(row->__Field(HX_("mam_by",fd,46,19,b7),::hx::paccDynamic)) );
             					}
-HXDLIN( 830)					builder->serverIdBy = _hx_tmp1;
-HXLINE( 831)					if (::hx::IsNotEq( builder->direction,row->__Field(HX_("direction",3f,62,40,10),::hx::paccDynamic) )) {
-HXLINE( 832)						builder->direction = ( (int)(row->__Field(HX_("direction",3f,62,40,10),::hx::paccDynamic)) );
-HXLINE( 833)						::Array< ::Dynamic> replyTo = builder->replyTo;
-HXLINE( 834)						builder->replyTo = builder->recipients;
-HXLINE( 835)						builder->recipients = replyTo;
+HXDLIN( 828)					builder->serverIdBy = _hx_tmp1;
+HXLINE( 829)					if (::hx::IsNotEq( builder->direction,row->__Field(HX_("direction",3f,62,40,10),::hx::paccDynamic) )) {
+HXLINE( 830)						builder->direction = ( (int)(row->__Field(HX_("direction",3f,62,40,10),::hx::paccDynamic)) );
+HXLINE( 831)						::Array< ::Dynamic> replyTo = builder->replyTo;
+HXLINE( 832)						builder->replyTo = builder->recipients;
+HXLINE( 833)						builder->recipients = replyTo;
             					}
-HXLINE( 837)					bool _hx_tmp2;
-HXDLIN( 837)					if (::hx::IsNotNull( row->__Field(HX_("stanza_id",25,7b,7a,e9),::hx::paccDynamic) )) {
-HXLINE( 837)						_hx_tmp2 = ::hx::IsNotEq( row->__Field(HX_("stanza_id",25,7b,7a,e9),::hx::paccDynamic),HX_("",00,00,00,00) );
+HXLINE( 835)					bool _hx_tmp2;
+HXDLIN( 835)					if (::hx::IsNotNull( row->__Field(HX_("stanza_id",25,7b,7a,e9),::hx::paccDynamic) )) {
+HXLINE( 835)						_hx_tmp2 = ::hx::IsNotEq( row->__Field(HX_("stanza_id",25,7b,7a,e9),::hx::paccDynamic),HX_("",00,00,00,00) );
             					}
             					else {
-HXLINE( 837)						_hx_tmp2 = false;
+HXLINE( 835)						_hx_tmp2 = false;
             					}
-HXDLIN( 837)					if (_hx_tmp2) {
-HXLINE( 837)						builder->localId = ( (::String)(row->__Field(HX_("stanza_id",25,7b,7a,e9),::hx::paccDynamic)) );
+HXDLIN( 835)					if (_hx_tmp2) {
+HXLINE( 835)						builder->localId = ( (::String)(row->__Field(HX_("stanza_id",25,7b,7a,e9),::hx::paccDynamic)) );
             					}
-HXLINE( 838)					if (::hx::IsNotNull( row->__Field(HX_("versions",5b,4e,b8,d6),::hx::paccDynamic) )) {
-HXLINE( 839)						 ::Dynamic versionTimes =  ::haxe::format::JsonParser_obj::__alloc( HX_CTX ,( (::String)(row->__Field(HX_("version_times",1f,50,f9,17),::hx::paccDynamic)) ))->doParse();
-HXLINE( 840)						 ::Dynamic versions =  ::haxe::format::JsonParser_obj::__alloc( HX_CTX ,( (::String)(row->__Field(HX_("versions",5b,4e,b8,d6),::hx::paccDynamic)) ))->doParse();
-HXLINE( 841)						if ((::Reflect_obj::fields(versions)->length > 1)) {
+HXLINE( 836)					if (::hx::IsNotNull( row->__Field(HX_("versions",5b,4e,b8,d6),::hx::paccDynamic) )) {
+HXLINE( 837)						 ::Dynamic versionTimes =  ::haxe::format::JsonParser_obj::__alloc( HX_CTX ,( (::String)(row->__Field(HX_("version_times",1f,50,f9,17),::hx::paccDynamic)) ))->doParse();
+HXLINE( 838)						 ::Dynamic versions =  ::haxe::format::JsonParser_obj::__alloc( HX_CTX ,( (::String)(row->__Field(HX_("versions",5b,4e,b8,d6),::hx::paccDynamic)) ))->doParse();
+HXLINE( 839)						if ((::Reflect_obj::fields(versions)->length > 1)) {
             							HX_BEGIN_LOCAL_FUNC_S0(::hx::LocalFunc,_hx_Closure_2) HXARGC(2)
             							int _hx_run( ::snikket::ChatMessage a, ::snikket::ChatMessage b){
-            								HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_853_hydrateMessages)
-HXLINE( 853)								return ::Reflect_obj::compare(b->timestamp,a->timestamp);
+            								HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_851_hydrateMessages)
+HXLINE( 851)								return ::Reflect_obj::compare(b->timestamp,a->timestamp);
             							}
             							HX_END_LOCAL_FUNC2(return)
 
-HXLINE( 842)							{
-HXLINE( 842)								 ::Dynamic access = versions;
-HXDLIN( 842)								 ::Dynamic _g_access = access;
-HXDLIN( 842)								::Array< ::String > _g_keys = ::Reflect_obj::fields(access);
-HXDLIN( 842)								int _g_index = 0;
-HXDLIN( 842)								while((_g_index < _g_keys->length)){
-HXLINE( 842)									_g_index = (_g_index + 1);
-HXDLIN( 842)									::String key = _g_keys->__get((_g_index - 1));
-HXDLIN( 842)									::String _g_value = ( (::String)(::Reflect_obj::field(_g_access,key)) );
-HXDLIN( 842)									::String _g_key = key;
-HXDLIN( 842)									::String versionId = _g_key;
-HXDLIN( 842)									::String version = _g_value;
-HXDLIN( 842)									{
+HXLINE( 840)							{
+HXLINE( 840)								 ::Dynamic access = versions;
+HXDLIN( 840)								 ::Dynamic _g_access = access;
+HXDLIN( 840)								::Array< ::String > _g_keys = ::Reflect_obj::fields(access);
+HXDLIN( 840)								int _g_index = 0;
+HXDLIN( 840)								while((_g_index < _g_keys->length)){
+HXLINE( 840)									_g_index = (_g_index + 1);
+HXDLIN( 840)									::String key = _g_keys->__get((_g_index - 1));
+HXDLIN( 840)									::String _g_value = ( (::String)(::Reflect_obj::field(_g_access,key)) );
+HXDLIN( 840)									::String _g_key = key;
+HXDLIN( 840)									::String versionId = _g_key;
+HXDLIN( 840)									::String version = _g_value;
+HXDLIN( 840)									{
             										HX_BEGIN_LOCAL_FUNC_S2(::hx::LocalFunc,_hx_Closure_1, ::Dynamic,versionTimes,::String,versionId) HXARGC(2)
             										 ::snikket::ChatMessageBuilder _hx_run( ::snikket::ChatMessageBuilder toPushB, ::snikket::Stanza _){
-            											HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_843_hydrateMessages)
-HXLINE( 844)											bool versionM;
-HXDLIN( 844)											if (::hx::IsNull( toPushB->serverId )) {
-HXLINE( 844)												versionM = (versionId != toPushB->localId);
+            											HX_GC_STACKFRAME(&_hx_pos_5b1a6b524efab4db_841_hydrateMessages)
+HXLINE( 842)											bool versionM;
+HXDLIN( 842)											if (::hx::IsNull( toPushB->serverId )) {
+HXLINE( 842)												versionM = (versionId != toPushB->localId);
             											}
             											else {
-HXLINE( 844)												versionM = false;
+HXLINE( 842)												versionM = false;
             											}
-HXDLIN( 844)											if (versionM) {
-HXLINE( 844)												toPushB->serverId = versionId;
+HXDLIN( 842)											if (versionM) {
+HXLINE( 842)												toPushB->serverId = versionId;
             											}
-HXLINE( 845)											toPushB->timestamp = ( (::String)(::Reflect_obj::field(versionTimes,versionId)) );
-HXLINE( 846)											return toPushB;
+HXLINE( 843)											toPushB->timestamp = ( (::String)(::Reflect_obj::field(versionTimes,versionId)) );
+HXLINE( 844)											return toPushB;
             										}
             										HX_END_LOCAL_FUNC2(return)
 
-HXLINE( 843)										 ::snikket::Stanza versionM = ::snikket::Stanza_obj::parse(version);
-HXDLIN( 843)										 ::snikket::ChatMessage versionM1 = ::snikket::ChatMessage_obj::fromStanza(versionM,accountJid, ::Dynamic(new _hx_Closure_1(versionTimes,versionId)));
-HXLINE( 848)										 ::snikket::ChatMessage toPush;
-HXDLIN( 848)										bool toPush1;
-HXDLIN( 848)										if (::hx::IsNotNull( versionM1 )) {
-HXLINE( 848)											toPush1 = (versionM1->versions->length < 1);
+HXLINE( 841)										 ::snikket::Stanza versionM = ::snikket::Stanza_obj::parse(version);
+HXDLIN( 841)										 ::snikket::ChatMessage versionM1 = ::snikket::ChatMessage_obj::fromStanza(versionM,accountJid, ::Dynamic(new _hx_Closure_1(versionTimes,versionId)));
+HXLINE( 846)										 ::snikket::ChatMessage toPush;
+HXDLIN( 846)										bool toPush1;
+HXDLIN( 846)										if (::hx::IsNotNull( versionM1 )) {
+HXLINE( 846)											toPush1 = (versionM1->versions->length < 1);
             										}
             										else {
-HXLINE( 848)											toPush1 = true;
+HXLINE( 846)											toPush1 = true;
             										}
-HXDLIN( 848)										if (toPush1) {
-HXLINE( 848)											toPush = versionM1;
+HXDLIN( 846)										if (toPush1) {
+HXLINE( 846)											toPush = versionM1;
             										}
             										else {
-HXLINE( 848)											toPush = versionM1->versions->__get(0).StaticCast<  ::snikket::ChatMessage >();
+HXLINE( 846)											toPush = versionM1->versions->__get(0).StaticCast<  ::snikket::ChatMessage >();
             										}
-HXLINE( 849)										if (::hx::IsNotNull( toPush )) {
-HXLINE( 850)											builder->versions->push(toPush);
+HXLINE( 847)										if (::hx::IsNotNull( toPush )) {
+HXLINE( 848)											builder->versions->push(toPush);
             										}
             									}
             								}
             							}
-HXLINE( 853)							builder->versions->sort( ::Dynamic(new _hx_Closure_2()));
+HXLINE( 851)							builder->versions->sort( ::Dynamic(new _hx_Closure_2()));
             						}
             					}
-HXLINE( 856)					return builder;
+HXLINE( 854)					return builder;
             				}
             				HX_END_LOCAL_FUNC2(return)
 
-HXLINE( 823)				 ::Dynamic x1 = x->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)();
-HXDLIN( 823)				 ::Dynamic row = x1;
-HXDLIN( 823)				 ::snikket::Stanza _hx_tmp = ::snikket::Stanza_obj::parse(( (::String)(row->__Field(HX_("stanza",f5,5d,f7,05),::hx::paccDynamic)) ));
-HXDLIN( 823)				_g->push(::snikket::ChatMessage_obj::fromStanza(_hx_tmp,accountJid, ::Dynamic(new _hx_Closure_3(accountJid,row))));
+HXLINE( 821)				 ::Dynamic x1 = x->__Field(HX_("next",f3,84,02,49),::hx::paccDynamic)();
+HXDLIN( 821)				 ::Dynamic row = x1;
+HXDLIN( 821)				 ::snikket::Stanza _hx_tmp = ::snikket::Stanza_obj::parse(( (::String)(row->__Field(HX_("stanza",f5,5d,f7,05),::hx::paccDynamic)) ));
+HXDLIN( 821)				_g->push(::snikket::ChatMessage_obj::fromStanza(_hx_tmp,accountJid, ::Dynamic(new _hx_Closure_3(accountJid,row))));
             			}
             		}
-HXDLIN( 823)		return _g;
+HXDLIN( 821)		return _g;
             	}
 
 
diff --git a/Sources/c_snikket/src/snikket/streams/XmppStropheStream.cpp b/Sources/c_snikket/src/snikket/streams/XmppStropheStream.cpp
index 4039f4e..d149243 100644
--- a/Sources/c_snikket/src/snikket/streams/XmppStropheStream.cpp
+++ b/Sources/c_snikket/src/snikket/streams/XmppStropheStream.cpp
@@ -64,26 +64,26 @@
 #include <snikket/streams/XmppStropheStream.h>
 #endif
 
-HX_DEFINE_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_228_new,"snikket.streams.XmppStropheStream","new",0x50539160,"snikket.streams.XmppStropheStream.new","snikket/streams/XmppStropheStream.hx",228,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_262_newId,"snikket.streams.XmppStropheStream","newId",0xb962e95b,"snikket.streams.XmppStropheStream.newId","snikket/streams/XmppStropheStream.hx",262,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_350_onIq,"snikket.streams.XmppStropheStream","onIq",0xf97b85e7,"snikket.streams.XmppStropheStream.onIq","snikket/streams/XmppStropheStream.hx",350,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_393_connect,"snikket.streams.XmppStropheStream","connect",0x26f47cea,"snikket.streams.XmppStropheStream.connect","snikket/streams/XmppStropheStream.hx",393,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_385_connect,"snikket.streams.XmppStropheStream","connect",0x26f47cea,"snikket.streams.XmppStropheStream.connect","snikket/streams/XmppStropheStream.hx",385,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_418_disconnect,"snikket.streams.XmppStropheStream","disconnect",0xaf2ec35c,"snikket.streams.XmppStropheStream.disconnect","snikket/streams/XmppStropheStream.hx",418,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_423_poll,"snikket.streams.XmppStropheStream","poll",0xfa259d3f,"snikket.streams.XmppStropheStream.poll","snikket/streams/XmppStropheStream.hx",423,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_421_poll,"snikket.streams.XmppStropheStream","poll",0xfa259d3f,"snikket.streams.XmppStropheStream.poll","snikket/streams/XmppStropheStream.hx",421,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_466_convertFromStanza,"snikket.streams.XmppStropheStream","convertFromStanza",0x96c3f3d2,"snikket.streams.XmppStropheStream.convertFromStanza","snikket/streams/XmppStropheStream.hx",466,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_492_sendStanza,"snikket.streams.XmppStropheStream","sendStanza",0xed37e45d,"snikket.streams.XmppStropheStream.sendStanza","snikket/streams/XmppStropheStream.hx",492,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_500_finalize,"snikket.streams.XmppStropheStream","finalize",0x297ee49e,"snikket.streams.XmppStropheStream.finalize","snikket/streams/XmppStropheStream.hx",500,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_265_strophe_fast_token_handler,"snikket.streams.XmppStropheStream","strophe_fast_token_handler",0xfc0a9611,"snikket.streams.XmppStropheStream.strophe_fast_token_handler","snikket/streams/XmppStropheStream.hx",265,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_271_strophe_sm_handler,"snikket.streams.XmppStropheStream","strophe_sm_handler",0xb2b084d5,"snikket.streams.XmppStropheStream.strophe_sm_handler","snikket/streams/XmppStropheStream.hx",271,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_277_strophe_sm_ack_handler,"snikket.streams.XmppStropheStream","strophe_sm_ack_handler",0x6c59a21f,"snikket.streams.XmppStropheStream.strophe_sm_ack_handler","snikket/streams/XmppStropheStream.hx",277,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_283_strophe_sm_fail_handler,"snikket.streams.XmppStropheStream","strophe_sm_fail_handler",0x892bd43e,"snikket.streams.XmppStropheStream.strophe_sm_fail_handler","snikket/streams/XmppStropheStream.hx",283,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_289_strophe_certfail_handler,"snikket.streams.XmppStropheStream","strophe_certfail_handler",0x0748fefd,"snikket.streams.XmppStropheStream.strophe_certfail_handler","snikket/streams/XmppStropheStream.hx",289,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_306_strophe_stanza,"snikket.streams.XmppStropheStream","strophe_stanza",0xa2c712e5,"snikket.streams.XmppStropheStream.strophe_stanza","snikket/streams/XmppStropheStream.hx",306,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_353_strophe_connect,"snikket.streams.XmppStropheStream","strophe_connect",0xae6ed8fa,"snikket.streams.XmppStropheStream.strophe_connect","snikket/streams/XmppStropheStream.hx",353,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_430_parseStanza,"snikket.streams.XmppStropheStream","parseStanza",0x685ccb88,"snikket.streams.XmppStropheStream.parseStanza","snikket/streams/XmppStropheStream.hx",430,0x06c67012)
-HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_438_convertToStanza,"snikket.streams.XmppStropheStream","convertToStanza",0x53baabe3,"snikket.streams.XmppStropheStream.convertToStanza","snikket/streams/XmppStropheStream.hx",438,0x06c67012)
+HX_DEFINE_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_231_new,"snikket.streams.XmppStropheStream","new",0x50539160,"snikket.streams.XmppStropheStream.new","snikket/streams/XmppStropheStream.hx",231,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_266_newId,"snikket.streams.XmppStropheStream","newId",0xb962e95b,"snikket.streams.XmppStropheStream.newId","snikket/streams/XmppStropheStream.hx",266,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_355_onIq,"snikket.streams.XmppStropheStream","onIq",0xf97b85e7,"snikket.streams.XmppStropheStream.onIq","snikket/streams/XmppStropheStream.hx",355,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_398_connect,"snikket.streams.XmppStropheStream","connect",0x26f47cea,"snikket.streams.XmppStropheStream.connect","snikket/streams/XmppStropheStream.hx",398,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_390_connect,"snikket.streams.XmppStropheStream","connect",0x26f47cea,"snikket.streams.XmppStropheStream.connect","snikket/streams/XmppStropheStream.hx",390,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_423_disconnect,"snikket.streams.XmppStropheStream","disconnect",0xaf2ec35c,"snikket.streams.XmppStropheStream.disconnect","snikket/streams/XmppStropheStream.hx",423,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_428_poll,"snikket.streams.XmppStropheStream","poll",0xfa259d3f,"snikket.streams.XmppStropheStream.poll","snikket/streams/XmppStropheStream.hx",428,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_426_poll,"snikket.streams.XmppStropheStream","poll",0xfa259d3f,"snikket.streams.XmppStropheStream.poll","snikket/streams/XmppStropheStream.hx",426,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_471_convertFromStanza,"snikket.streams.XmppStropheStream","convertFromStanza",0x96c3f3d2,"snikket.streams.XmppStropheStream.convertFromStanza","snikket/streams/XmppStropheStream.hx",471,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_497_sendStanza,"snikket.streams.XmppStropheStream","sendStanza",0xed37e45d,"snikket.streams.XmppStropheStream.sendStanza","snikket/streams/XmppStropheStream.hx",497,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_505_finalize,"snikket.streams.XmppStropheStream","finalize",0x297ee49e,"snikket.streams.XmppStropheStream.finalize","snikket/streams/XmppStropheStream.hx",505,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_269_strophe_certfail_handler,"snikket.streams.XmppStropheStream","strophe_certfail_handler",0x0748fefd,"snikket.streams.XmppStropheStream.strophe_certfail_handler","snikket/streams/XmppStropheStream.hx",269,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_287_strophe_fast_token_handler,"snikket.streams.XmppStropheStream","strophe_fast_token_handler",0xfc0a9611,"snikket.streams.XmppStropheStream.strophe_fast_token_handler","snikket/streams/XmppStropheStream.hx",287,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_293_strophe_sm_handler,"snikket.streams.XmppStropheStream","strophe_sm_handler",0xb2b084d5,"snikket.streams.XmppStropheStream.strophe_sm_handler","snikket/streams/XmppStropheStream.hx",293,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_299_strophe_sm_ack_handler,"snikket.streams.XmppStropheStream","strophe_sm_ack_handler",0x6c59a21f,"snikket.streams.XmppStropheStream.strophe_sm_ack_handler","snikket/streams/XmppStropheStream.hx",299,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_305_strophe_sm_fail_handler,"snikket.streams.XmppStropheStream","strophe_sm_fail_handler",0x892bd43e,"snikket.streams.XmppStropheStream.strophe_sm_fail_handler","snikket/streams/XmppStropheStream.hx",305,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_311_strophe_stanza,"snikket.streams.XmppStropheStream","strophe_stanza",0xa2c712e5,"snikket.streams.XmppStropheStream.strophe_stanza","snikket/streams/XmppStropheStream.hx",311,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_358_strophe_connect,"snikket.streams.XmppStropheStream","strophe_connect",0xae6ed8fa,"snikket.streams.XmppStropheStream.strophe_connect","snikket/streams/XmppStropheStream.hx",358,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_435_parseStanza,"snikket.streams.XmppStropheStream","parseStanza",0x685ccb88,"snikket.streams.XmppStropheStream.parseStanza","snikket/streams/XmppStropheStream.hx",435,0x06c67012)
+HX_LOCAL_STACK_FRAME(_hx_pos_c0c1f1a3af656a5a_443_convertToStanza,"snikket.streams.XmppStropheStream","convertToStanza",0x53baabe3,"snikket.streams.XmppStropheStream.convertToStanza","snikket/streams/XmppStropheStream.hx",443,0x06c67012)
 
 xmpp_log_t *logger = getenv("SNIKKET_XMPP_DEBUG") ? xmpp_get_default_logger(XMPP_LEVEL_DEBUG) : 0;
 xmpp_ctx_t* snikket::streams::XmppStropheStream_obj::ctx = xmpp_ctx_new(0,logger);
@@ -92,42 +92,44 @@ namespace snikket{
 namespace streams{
 
 void XmppStropheStream_obj::__construct(){
-            	HX_GC_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_228_new)
-HXLINE( 235)		this->stanzaThisPoll = false;
-HXLINE( 234)		this->ready = false;
-HXLINE( 233)		this->pollTimer = null();
-HXLINE( 232)		this->pending = ::Array_obj< ::Dynamic>::__new(0);
-HXLINE( 231)		 ::haxe::ds::EnumValueMap _g =  ::haxe::ds::EnumValueMap_obj::__alloc( HX_CTX );
-HXDLIN( 231)		_g->set(::snikket::IqRequestType_obj::Get_dyn(), ::haxe::ds::StringMap_obj::__alloc( HX_CTX ));
-HXDLIN( 231)		_g->set(::snikket::IqRequestType_obj::Set_dyn(), ::haxe::ds::StringMap_obj::__alloc( HX_CTX ));
-HXDLIN( 231)		this->iqHandlers = _g;
-HXLINE( 238)		super::__construct();
-HXLINE( 239)		xmpp_initialize();
-HXLINE( 240)		this->conn = xmpp_conn_new(::snikket::streams::XmppStropheStream_obj::ctx);
-HXLINE( 244)		::cpp::Pointer< char > tmp = null();
-HXLINE( 245)		::cpp::Pointer< char > tmp1 = null();
-HXLINE( 246)		::cpp::Pointer< char > tmp2 = null();
-HXLINE( 242)		 xmpp_conn_t* _hx_tmp = this->conn;
-HXLINE( 243)		::cpp::Function< int  ( xmpp_conn_t*, xmpp_stanza_t*,void*) > _hx_tmp1 = ::cpp::Function< int ( xmpp_conn_t*, xmpp_stanza_t*,void*)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_stanza ));
-HXLINE( 244)		::cpp::Pointer< char > tmp3 = tmp;
-HXLINE( 245)		::cpp::Pointer< char > tmp4 = tmp1;
-HXLINE( 246)		::cpp::Pointer< char > tmp5 = tmp2;
-HXLINE( 241)		xmpp_handler_add(_hx_tmp,_hx_tmp1,tmp3,tmp4,tmp5,(void*)this);
-HXLINE( 250)		 xmpp_conn_t* _hx_tmp2 = this->conn;
-HXLINE( 251)		::cpp::Function< void  ( xmpp_conn_t*,const char*,void*) > _hx_tmp3 = ::cpp::Function< void ( xmpp_conn_t*,const char*,void*)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_fast_token_handler ));
-HXLINE( 249)		xmpp_conn_set_fast_token_handler(_hx_tmp2,_hx_tmp3,(void*)this);
-HXLINE( 254)		 xmpp_conn_t* _hx_tmp4 = this->conn;
-HXDLIN( 254)		xmpp_conn_set_certfail_handler(_hx_tmp4,::cpp::Function< int ( const xmpp_tlscert_t*,const char*)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_certfail_handler )));
-HXLINE( 255)		 xmpp_conn_t* _hx_tmp5 = this->conn;
-HXDLIN( 255)		::cpp::Function< void  ( xmpp_conn_t*,void*,const unsigned char*,size_t) > _hx_tmp6 = ::cpp::Function< void ( xmpp_conn_t*,void*,const unsigned char*,size_t)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_sm_handler ));
-HXDLIN( 255)		xmpp_conn_set_sm_callback(_hx_tmp5,_hx_tmp6,(void*)this);
-HXLINE( 256)		 xmpp_conn_t* _hx_tmp7 = this->conn;
-HXDLIN( 256)		::cpp::Function< void  ( xmpp_conn_t*,void*,const char*) > _hx_tmp8 = ::cpp::Function< void ( xmpp_conn_t*,void*,const char*)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_sm_ack_handler ));
-HXDLIN( 256)		xmpp_conn_set_sm_ack_callback(_hx_tmp7,_hx_tmp8,(void*)this);
-HXLINE( 257)		 xmpp_conn_t* _hx_tmp9 = this->conn;
-HXDLIN( 257)		::cpp::Function< void  ( xmpp_conn_t*,void*,const char*) > _hx_tmp10 = ::cpp::Function< void ( xmpp_conn_t*,void*,const char*)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_sm_fail_handler ));
-HXDLIN( 257)		xmpp_conn_set_sm_fail_callback(_hx_tmp9,_hx_tmp10,(void*)this);
-HXLINE( 258)		_hx_add_finalizable(::hx::ObjectPtr<OBJ_>(this),false);
+            	HX_GC_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_231_new)
+HXLINE( 238)		this->stanzaThisPoll = false;
+HXLINE( 237)		this->ready = false;
+HXLINE( 236)		this->pollTimer = null();
+HXLINE( 235)		this->pending = ::Array_obj< ::Dynamic>::__new(0);
+HXLINE( 234)		 ::haxe::ds::EnumValueMap _g =  ::haxe::ds::EnumValueMap_obj::__alloc( HX_CTX );
+HXDLIN( 234)		_g->set(::snikket::IqRequestType_obj::Get_dyn(), ::haxe::ds::StringMap_obj::__alloc( HX_CTX ));
+HXDLIN( 234)		_g->set(::snikket::IqRequestType_obj::Set_dyn(), ::haxe::ds::StringMap_obj::__alloc( HX_CTX ));
+HXDLIN( 234)		this->iqHandlers = _g;
+HXLINE( 241)		super::__construct();
+HXLINE( 242)		xmpp_initialize();
+HXLINE( 243)		this->conn = xmpp_conn_new(::snikket::streams::XmppStropheStream_obj::ctx);
+HXLINE( 247)		::cpp::Pointer< char > tmp = null();
+HXLINE( 248)		::cpp::Pointer< char > tmp1 = null();
+HXLINE( 249)		::cpp::Pointer< char > tmp2 = null();
+HXLINE( 245)		 xmpp_conn_t* _hx_tmp = this->conn;
+HXLINE( 246)		::cpp::Function< int  ( xmpp_conn_t*, xmpp_stanza_t*,void*) > _hx_tmp1 = ::cpp::Function< int ( xmpp_conn_t*, xmpp_stanza_t*,void*)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_stanza ));
+HXLINE( 247)		::cpp::Pointer< char > tmp3 = tmp;
+HXLINE( 248)		::cpp::Pointer< char > tmp4 = tmp1;
+HXLINE( 249)		::cpp::Pointer< char > tmp5 = tmp2;
+HXLINE( 244)		xmpp_handler_add(_hx_tmp,_hx_tmp1,tmp3,tmp4,tmp5,(void*)this);
+HXLINE( 252)		 xmpp_conn_t* _hx_tmp2 = this->conn;
+HXDLIN( 252)		xmpp_conn_set_certfail_handler(_hx_tmp2,::cpp::Function< int ( const xmpp_tlscert_t*,const char*)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_certfail_handler )));
+HXLINE( 254)		 xmpp_conn_t* _hx_tmp3 = this->conn;
+HXLINE( 255)		::cpp::Function< void  ( xmpp_conn_t*,const char*,void*) > _hx_tmp4 = ::cpp::Function< void ( xmpp_conn_t*,const char*,void*)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_fast_token_handler ));
+HXLINE( 253)		xmpp_conn_set_fast_token_handler(_hx_tmp3,_hx_tmp4,(void*)this);
+HXLINE( 258)		 xmpp_conn_t* _hx_tmp5 = this->conn;
+HXDLIN( 258)		xmpp_conn_set_certfail_handler(_hx_tmp5,::cpp::Function< int ( const xmpp_tlscert_t*,const char*)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_certfail_handler )));
+HXLINE( 259)		 xmpp_conn_t* _hx_tmp6 = this->conn;
+HXDLIN( 259)		::cpp::Function< void  ( xmpp_conn_t*,void*,const unsigned char*,size_t) > _hx_tmp7 = ::cpp::Function< void ( xmpp_conn_t*,void*,const unsigned char*,size_t)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_sm_handler ));
+HXDLIN( 259)		xmpp_conn_set_sm_callback(_hx_tmp6,_hx_tmp7,(void*)this);
+HXLINE( 260)		 xmpp_conn_t* _hx_tmp8 = this->conn;
+HXDLIN( 260)		::cpp::Function< void  ( xmpp_conn_t*,void*,const char*) > _hx_tmp9 = ::cpp::Function< void ( xmpp_conn_t*,void*,const char*)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_sm_ack_handler ));
+HXDLIN( 260)		xmpp_conn_set_sm_ack_callback(_hx_tmp8,_hx_tmp9,(void*)this);
+HXLINE( 261)		 xmpp_conn_t* _hx_tmp10 = this->conn;
+HXDLIN( 261)		::cpp::Function< void  ( xmpp_conn_t*,void*,const char*) > _hx_tmp11 = ::cpp::Function< void ( xmpp_conn_t*,void*,const char*)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_sm_fail_handler ));
+HXDLIN( 261)		xmpp_conn_set_sm_fail_callback(_hx_tmp10,_hx_tmp11,(void*)this);
+HXLINE( 262)		_hx_add_finalizable(::hx::ObjectPtr<OBJ_>(this),false);
             	}
 
 Dynamic XmppStropheStream_obj::__CreateEmpty() { return new XmppStropheStream_obj; }
@@ -154,292 +156,310 @@ bool XmppStropheStream_obj::_hx_isInstanceOf(int inClassId) {
 }
 
 ::String XmppStropheStream_obj::newId(){
-            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_262_newId)
-HXDLIN( 262)		return ::snikket::ID_obj::_hx_long();
+            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_266_newId)
+HXDLIN( 266)		return ::snikket::ID_obj::_hx_long();
             	}
 
 
 void XmppStropheStream_obj::onIq( ::snikket::IqRequestType type,::String tag,::String xmlns, ::Dynamic handler){
-            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_350_onIq)
-HXDLIN( 350)		this->iqHandlers->get(type).StaticCast<  ::haxe::ds::StringMap >()->set((((HX_("{",7b,00,00,00) + xmlns) + HX_("}",7d,00,00,00)) + tag),handler);
+            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_355_onIq)
+HXDLIN( 355)		this->iqHandlers->get(type).StaticCast<  ::haxe::ds::StringMap >()->set((((HX_("{",7b,00,00,00) + xmlns) + HX_("}",7d,00,00,00)) + tag),handler);
             	}
 
 
 void XmppStropheStream_obj::connect(::String jid,::Array< unsigned char > sm){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::streams::XmppStropheStream,_gthis) HXARGC(1)
             		 ::snikket::EventResult _hx_run( ::Dynamic event){
-            			HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_393_connect)
-HXLINE( 394)			 ::snikket::streams::XmppStropheStream o = _gthis;
-HXLINE( 395)			::String pass = ( (::String)(event->__Field(HX_("password",1b,23,d0,48),::hx::paccDynamic)) );
-HXLINE( 396)			if (::hx::IsNotNull( event->__Field(HX_("fastCount",93,fc,67,a5),::hx::paccDynamic) )) {
-HXLINE( 397)				::cpp::Pointer< char > tmp = cpp::Pointer_obj::fromPointer(pass.c_str());
-HXDLIN( 397)				xmpp_conn_set_fast(_gthis->conn,tmp,( (int)(event->__Field(HX_("fastCount",93,fc,67,a5),::hx::paccDynamic)) ));
+            			HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_398_connect)
+HXLINE( 399)			 ::snikket::streams::XmppStropheStream o = _gthis;
+HXLINE( 400)			::String pass = ( (::String)(event->__Field(HX_("password",1b,23,d0,48),::hx::paccDynamic)) );
+HXLINE( 401)			if (::hx::IsNotNull( event->__Field(HX_("fastCount",93,fc,67,a5),::hx::paccDynamic) )) {
+HXLINE( 402)				::cpp::Pointer< char > tmp = cpp::Pointer_obj::fromPointer(pass.c_str());
+HXDLIN( 402)				xmpp_conn_set_fast(_gthis->conn,tmp,( (int)(event->__Field(HX_("fastCount",93,fc,67,a5),::hx::paccDynamic)) ));
             			}
             			else {
-HXLINE( 399)				::cpp::Pointer< char > tmp1 = cpp::Pointer_obj::fromPointer(pass.c_str());
-HXDLIN( 399)				xmpp_conn_set_pass(_gthis->conn,tmp1);
-HXLINE( 400)				::cpp::Pointer< char > tmp2 = null();
-HXDLIN( 400)				xmpp_conn_set_fast(_gthis->conn,tmp2,-1);
+HXLINE( 404)				::cpp::Pointer< char > tmp1 = cpp::Pointer_obj::fromPointer(pass.c_str());
+HXDLIN( 404)				xmpp_conn_set_pass(_gthis->conn,tmp1);
+HXLINE( 405)				::cpp::Pointer< char > tmp2 = null();
+HXDLIN( 405)				xmpp_conn_set_fast(_gthis->conn,tmp2,-1);
             			}
-HXLINE( 402)			::cpp::Pointer< char > tmp3 = cpp::Pointer_obj::fromPointer(_gthis->clientId.c_str());
-HXDLIN( 402)			xmpp_conn_set_user_agent_id(_gthis->conn,tmp3);
-HXLINE( 405)			::cpp::Pointer< char > tmp4 = null();
-HXLINE( 404)			 xmpp_conn_t* _gthis1 = _gthis->conn;
-HXLINE( 407)			::cpp::Function< void  ( xmpp_conn_t*, xmpp_conn_event_t,int, xmpp_stream_error_t*,int,void*) > _hx_tmp = ::cpp::Function< void ( xmpp_conn_t*, xmpp_conn_event_t,int, xmpp_stream_error_t*,int,void*)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_connect ));
-HXLINE( 403)			xmpp_connect_client(_gthis1,tmp4,( (unsigned short)(0) ),_hx_tmp,o.GetPtr());
-HXLINE( 411)			return ::snikket::EventResult_obj::EventHandled_dyn();
+HXLINE( 407)			::cpp::Pointer< char > tmp3 = cpp::Pointer_obj::fromPointer(_gthis->clientId.c_str());
+HXDLIN( 407)			xmpp_conn_set_user_agent_id(_gthis->conn,tmp3);
+HXLINE( 410)			::cpp::Pointer< char > tmp4 = null();
+HXLINE( 409)			 xmpp_conn_t* _gthis1 = _gthis->conn;
+HXLINE( 412)			::cpp::Function< void  ( xmpp_conn_t*, xmpp_conn_event_t,int, xmpp_stream_error_t*,int,void*) > _hx_tmp = ::cpp::Function< void ( xmpp_conn_t*, xmpp_conn_event_t,int, xmpp_stream_error_t*,int,void*)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_connect ));
+HXLINE( 408)			xmpp_connect_client(_gthis1,tmp4,( (unsigned short)(0) ),_hx_tmp,o.GetPtr());
+HXLINE( 416)			return ::snikket::EventResult_obj::EventHandled_dyn();
             		}
             		HX_END_LOCAL_FUNC1(return)
 
-            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_385_connect)
-HXDLIN( 385)		 ::snikket::streams::XmppStropheStream _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 386)		::haxe::Log_obj::trace(HX_("SM",9a,48,00,00), ::Dynamic(::hx::Anon_obj::Create(5)
+            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_390_connect)
+HXDLIN( 390)		 ::snikket::streams::XmppStropheStream _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 391)		::haxe::Log_obj::trace(HX_("SM",9a,48,00,00), ::Dynamic(::hx::Anon_obj::Create(5)
             			->setFixed(0,HX_("className",a3,92,3d,dc),HX_("snikket.streams.XmppStropheStream",6e,a1,9f,1c))
             			->setFixed(1,HX_("customParams",d7,51,18,ed),::cpp::VirtualArray_obj::__new(1)->init(0,sm))
             			->setFixed(2,HX_("methodName",cc,19,0f,12),HX_("connect",ea,3b,80,15))
             			->setFixed(3,HX_("fileName",e7,5a,43,62),HX_("snikket/streams/XmppStropheStream.hx",12,70,c6,06))
-            			->setFixed(4,HX_("lineNumber",dd,81,22,76),386)));
-HXLINE( 387)		::cpp::Pointer< char > tmp = cpp::Pointer_obj::fromPointer(jid.c_str());
-HXDLIN( 387)		xmpp_conn_set_jid(this->conn,tmp);
-HXLINE( 388)		if (::hx::IsNotNull( sm )) {
-HXLINE( 390)			const unsigned char* smPtr = (unsigned char*)sm->getBase();
-HXLINE( 391)			xmpp_conn_restore_sm_state(this->conn,smPtr,( (size_t)(sm->length) ));
+            			->setFixed(4,HX_("lineNumber",dd,81,22,76),391)));
+HXLINE( 392)		::cpp::Pointer< char > tmp = cpp::Pointer_obj::fromPointer(jid.c_str());
+HXDLIN( 392)		xmpp_conn_set_jid(this->conn,tmp);
+HXLINE( 393)		if (::hx::IsNotNull( sm )) {
+HXLINE( 395)			const unsigned char* smPtr = (unsigned char*)sm->getBase();
+HXLINE( 396)			xmpp_conn_restore_sm_state(this->conn,smPtr,( (size_t)(sm->length) ));
             		}
-HXLINE( 393)		this->on(HX_("auth/password",e2,5d,98,00), ::Dynamic(new _hx_Closure_0(_gthis)));
-HXLINE( 413)		this->trigger(HX_("auth/password-needed",80,f0,74,49), ::Dynamic(::hx::Anon_obj::Create(0)));
-HXLINE( 414)		this->poll(null());
+HXLINE( 398)		this->on(HX_("auth/password",e2,5d,98,00), ::Dynamic(new _hx_Closure_0(_gthis)));
+HXLINE( 418)		this->trigger(HX_("auth/password-needed",80,f0,74,49), ::Dynamic(::hx::Anon_obj::Create(0)));
+HXLINE( 419)		this->poll(null());
             	}
 
 
 void XmppStropheStream_obj::disconnect(){
-            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_418_disconnect)
-HXDLIN( 418)		xmpp_disconnect(this->conn);
+            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_423_disconnect)
+HXDLIN( 423)		xmpp_disconnect(this->conn);
             	}
 
 
 void XmppStropheStream_obj::poll( ::Dynamic __o_timeout){
             		HX_BEGIN_LOCAL_FUNC_S1(::hx::LocalFunc,_hx_Closure_0, ::snikket::streams::XmppStropheStream,_gthis) HXARGC(0)
             		void _hx_run(){
-            			HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_423_poll)
-HXLINE( 424)			_gthis->stanzaThisPoll = false;
-HXLINE( 425)			xmpp_run_once(::snikket::streams::XmppStropheStream_obj::ctx,( (::cpp::UInt64)(5) ));
-HXLINE( 426)			 ::Dynamic _hx_tmp;
-HXDLIN( 426)			if (_gthis->stanzaThisPoll) {
-HXLINE( 426)				_hx_tmp = 5;
+            			HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_428_poll)
+HXLINE( 429)			_gthis->stanzaThisPoll = false;
+HXLINE( 430)			xmpp_run_once(::snikket::streams::XmppStropheStream_obj::ctx,( (::cpp::UInt64)(5) ));
+HXLINE( 431)			 ::Dynamic _hx_tmp;
+HXDLIN( 431)			if (_gthis->stanzaThisPoll) {
+HXLINE( 431)				_hx_tmp = 5;
             			}
             			else {
-HXLINE( 426)				_hx_tmp = 100;
+HXLINE( 431)				_hx_tmp = 100;
             			}
-HXDLIN( 426)			_gthis->poll(_hx_tmp);
+HXDLIN( 431)			_gthis->poll(_hx_tmp);
             		}
             		HX_END_LOCAL_FUNC0((void))
 
             		 ::Dynamic timeout = __o_timeout;
             		if (::hx::IsNull(__o_timeout)) timeout = 100;
-            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_421_poll)
-HXDLIN( 421)		 ::snikket::streams::XmppStropheStream _gthis = ::hx::ObjectPtr<OBJ_>(this);
-HXLINE( 422)		if (::hx::IsNotNull( this->pollTimer )) {
-HXLINE( 422)			this->pollTimer->stop();
+            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_426_poll)
+HXDLIN( 426)		 ::snikket::streams::XmppStropheStream _gthis = ::hx::ObjectPtr<OBJ_>(this);
+HXLINE( 427)		if (::hx::IsNotNull( this->pollTimer )) {
+HXLINE( 427)			this->pollTimer->stop();
             		}
-HXLINE( 423)		this->pollTimer = ::haxe::Timer_obj::delay( ::Dynamic(new _hx_Closure_0(_gthis)),( (int)(timeout) ));
+HXLINE( 428)		this->pollTimer = ::haxe::Timer_obj::delay( ::Dynamic(new _hx_Closure_0(_gthis)),( (int)(timeout) ));
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(XmppStropheStream_obj,poll,(void))
 
  xmpp_stanza_t* XmppStropheStream_obj::convertFromStanza( ::snikket::Stanza el){
-            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_466_convertFromStanza)
-HXLINE( 467)		 xmpp_stanza_t* xml = xmpp_stanza_new(::snikket::streams::XmppStropheStream_obj::ctx);
-HXLINE( 468)		::cpp::Pointer< char > tmp = cpp::Pointer_obj::fromPointer(el->name.c_str());
-HXDLIN( 468)		xmpp_stanza_set_name(xml,tmp);
-HXLINE( 469)		{
-HXLINE( 469)			 ::Dynamic access = el->attr;
-HXDLIN( 469)			 ::Dynamic _g_access = access;
-HXDLIN( 469)			::Array< ::String > _g_keys = ::Reflect_obj::fields(access);
-HXDLIN( 469)			int _g_index = 0;
-HXDLIN( 469)			while((_g_index < _g_keys->length)){
-HXLINE( 469)				_g_index = (_g_index + 1);
-HXDLIN( 469)				::String key = _g_keys->__get((_g_index - 1));
-HXDLIN( 469)				::String attr_value = ( (::String)(::Reflect_obj::field(_g_access,key)) );
-HXDLIN( 469)				::String attr_key = key;
-HXLINE( 470)				::String key1 = attr_key;
-HXLINE( 471)				::String value = attr_value;
-HXLINE( 472)				if (::hx::IsNotNull( value )) {
-HXLINE( 473)					::cpp::Pointer< char > tmp1 = cpp::Pointer_obj::fromPointer(key1.c_str());
-HXDLIN( 473)					::cpp::Pointer< char > tmp2 = cpp::Pointer_obj::fromPointer(value.c_str());
-HXDLIN( 473)					xmpp_stanza_set_attribute(xml,tmp1,tmp2);
+            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_471_convertFromStanza)
+HXLINE( 472)		 xmpp_stanza_t* xml = xmpp_stanza_new(::snikket::streams::XmppStropheStream_obj::ctx);
+HXLINE( 473)		::cpp::Pointer< char > tmp = cpp::Pointer_obj::fromPointer(el->name.c_str());
+HXDLIN( 473)		xmpp_stanza_set_name(xml,tmp);
+HXLINE( 474)		{
+HXLINE( 474)			 ::Dynamic access = el->attr;
+HXDLIN( 474)			 ::Dynamic _g_access = access;
+HXDLIN( 474)			::Array< ::String > _g_keys = ::Reflect_obj::fields(access);
+HXDLIN( 474)			int _g_index = 0;
+HXDLIN( 474)			while((_g_index < _g_keys->length)){
+HXLINE( 474)				_g_index = (_g_index + 1);
+HXDLIN( 474)				::String key = _g_keys->__get((_g_index - 1));
+HXDLIN( 474)				::String attr_value = ( (::String)(::Reflect_obj::field(_g_access,key)) );
+HXDLIN( 474)				::String attr_key = key;
+HXLINE( 475)				::String key1 = attr_key;
+HXLINE( 476)				::String value = attr_value;
+HXLINE( 477)				if (::hx::IsNotNull( value )) {
+HXLINE( 478)					::cpp::Pointer< char > tmp1 = cpp::Pointer_obj::fromPointer(key1.c_str());
+HXDLIN( 478)					::cpp::Pointer< char > tmp2 = cpp::Pointer_obj::fromPointer(value.c_str());
+HXDLIN( 478)					xmpp_stanza_set_attribute(xml,tmp1,tmp2);
             				}
             			}
             		}
-HXLINE( 476)		if ((el->children->length > 0)) {
-HXLINE( 477)			int _g = 0;
-HXDLIN( 477)			::Array< ::Dynamic> _g1 = el->children;
-HXDLIN( 477)			while((_g < _g1->length)){
-HXLINE( 477)				 ::snikket::Node child = _g1->__get(_g).StaticCast<  ::snikket::Node >();
-HXDLIN( 477)				_g = (_g + 1);
-HXLINE( 478)				switch((int)(child->_hx_getIndex())){
+HXLINE( 481)		if ((el->children->length > 0)) {
+HXLINE( 482)			int _g = 0;
+HXDLIN( 482)			::Array< ::Dynamic> _g1 = el->children;
+HXDLIN( 482)			while((_g < _g1->length)){
+HXLINE( 482)				 ::snikket::Node child = _g1->__get(_g).StaticCast<  ::snikket::Node >();
+HXDLIN( 482)				_g = (_g + 1);
+HXLINE( 483)				switch((int)(child->_hx_getIndex())){
             					case (int)0: {
-HXLINE( 479)						 ::snikket::Stanza stanza = child->_hx_getObject(0).StaticCast<  ::snikket::Stanza >();
-HXLINE( 480)						xmpp_stanza_add_child_ex(xml,this->convertFromStanza(stanza),false);
+HXLINE( 484)						 ::snikket::Stanza stanza = child->_hx_getObject(0).StaticCast<  ::snikket::Stanza >();
+HXLINE( 485)						xmpp_stanza_add_child_ex(xml,this->convertFromStanza(stanza),false);
             					}
             					break;
             					case (int)1: {
-HXLINE( 481)						::String text = child->_hx_getString(0);
-HXDLIN( 481)						{
-HXLINE( 482)							 xmpp_stanza_t* text_node = xmpp_stanza_new(::snikket::streams::XmppStropheStream_obj::ctx);
-HXLINE( 483)							::cpp::Pointer< char > tmp3 = cpp::Pointer_obj::fromPointer(text.c_str());
-HXDLIN( 483)							xmpp_stanza_set_text(text_node,tmp3);
-HXLINE( 484)							xmpp_stanza_add_child_ex(xml,text_node,false);
+HXLINE( 486)						::String text = child->_hx_getString(0);
+HXDLIN( 486)						{
+HXLINE( 487)							 xmpp_stanza_t* text_node = xmpp_stanza_new(::snikket::streams::XmppStropheStream_obj::ctx);
+HXLINE( 488)							::cpp::Pointer< char > tmp3 = cpp::Pointer_obj::fromPointer(text.c_str());
+HXDLIN( 488)							xmpp_stanza_set_text(text_node,tmp3);
+HXLINE( 489)							xmpp_stanza_add_child_ex(xml,text_node,false);
             						}
             					}
             					break;
             				}
             			}
             		}
-HXLINE( 488)		return xml;
+HXLINE( 493)		return xml;
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC1(XmppStropheStream_obj,convertFromStanza,return )
 
 void XmppStropheStream_obj::sendStanza( ::snikket::Stanza stanza){
-            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_492_sendStanza)
-HXDLIN( 492)		if (this->ready) {
-HXLINE( 493)			 xmpp_conn_t* _hx_tmp = this->conn;
-HXDLIN( 493)			xmpp_send(_hx_tmp,this->convertFromStanza(stanza));
+            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_497_sendStanza)
+HXDLIN( 497)		if (this->ready) {
+HXLINE( 498)			 xmpp_conn_t* _hx_tmp = this->conn;
+HXDLIN( 498)			xmpp_send(_hx_tmp,this->convertFromStanza(stanza));
             		}
             		else {
-HXLINE( 495)			this->pending->push(stanza);
+HXLINE( 500)			this->pending->push(stanza);
             		}
             	}
 
 
 void XmppStropheStream_obj::finalize(){
-            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_500_finalize)
-HXDLIN( 500)		xmpp_conn_release(this->conn);
+            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_505_finalize)
+HXDLIN( 505)		xmpp_conn_release(this->conn);
             	}
 
 
 HX_DEFINE_DYNAMIC_FUNC0(XmppStropheStream_obj,finalize,(void))
 
+int XmppStropheStream_obj::strophe_certfail_handler( const xmpp_tlscert_t* cert,const char* err){
+            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_269_strophe_certfail_handler)
+HXLINE( 270)		void* userdata = xmpp_tlscert_get_userdata(cert);
+HXLINE( 271)		 ::snikket::streams::XmppStropheStream stream = static_cast<hx::Object*>(userdata);
+HXLINE( 272)		::Array< ::String > dnsNames = ::Array_obj< ::String >::__new(0);
+HXLINE( 273)		::cpp::Pointer< char > dnsName = null();
+HXLINE( 274)		int dnsNameN = 0;
+HXLINE( 275)		while(true){
+HXLINE( 275)			dnsNameN = (dnsNameN + 1);
+HXDLIN( 275)			dnsName = xmpp_tlscert_get_dnsname(cert,( (size_t)((dnsNameN - 1)) ));
+HXDLIN( 275)			if (!(::hx::IsNotNull( dnsName ))) {
+HXLINE( 275)				goto _hx_goto_13;
+            			}
+HXLINE( 276)			dnsNames->push( ::String(dnsName->ptr));
+            		}
+            		_hx_goto_13:;
+HXLINE( 278)		::cpp::Pointer< char > inPtr = xmpp_tlscert_get_pem(cert);
+HXDLIN( 278)		::String pem =  ::String(inPtr->ptr);
+HXLINE( 279)		 ::snikket::EventResult _g = stream->trigger(HX_("tls/check",74,a0,4c,75), ::Dynamic(::hx::Anon_obj::Create(2)
+            			->setFixed(0,HX_("pem",d8,54,55,00),pem)
+            			->setFixed(1,HX_("dnsNames",5f,19,aa,5a),dnsNames)));
+HXDLIN( 279)		if ((_g->_hx_getIndex() == 3)) {
+HXLINE( 280)			 ::Dynamic result = _g->_hx_getObject(0);
+HXLINE( 281)			if (( (bool)(result) )) {
+HXLINE( 281)				return 1;
+            			}
+            			else {
+HXLINE( 281)				return 0;
+            			}
+            		}
+            		else {
+HXLINE( 283)			return 0;
+            		}
+HXLINE( 279)		return 0;
+            	}
+
+
 void XmppStropheStream_obj::strophe_fast_token_handler( xmpp_conn_t* conn,const char* token,void* userdata){
-            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_265_strophe_fast_token_handler)
-HXLINE( 266)		 ::snikket::streams::XmppStropheStream stream = static_cast<hx::Object*>(userdata);
-HXLINE( 267)		::cpp::Pointer< char > inPtr = cpp::Pointer_obj::fromRaw(token);
-HXDLIN( 267)		::String token1 =  ::String(inPtr->ptr);
-HXLINE( 268)		stream->trigger(HX_("fast-token",48,5f,c2,26), ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_287_strophe_fast_token_handler)
+HXLINE( 288)		 ::snikket::streams::XmppStropheStream stream = static_cast<hx::Object*>(userdata);
+HXLINE( 289)		::cpp::Pointer< char > inPtr = cpp::Pointer_obj::fromRaw(token);
+HXDLIN( 289)		::String token1 =  ::String(inPtr->ptr);
+HXLINE( 290)		stream->trigger(HX_("fast-token",48,5f,c2,26), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("token",f9,82,2b,14),token1)));
             	}
 
 
 void XmppStropheStream_obj::strophe_sm_handler( xmpp_conn_t* conn,void* userdata,const unsigned char* sm_state,size_t sm_state_len){
-            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_271_strophe_sm_handler)
-HXLINE( 272)		 ::snikket::streams::XmppStropheStream stream = static_cast<hx::Object*>(userdata);
-HXLINE( 273)		::cpp::Pointer<  ::Dynamic > _this = cpp::Pointer_obj::fromRaw(sm_state)->reinterpret();
-HXDLIN( 273)		::cpp::VirtualArray result = ::cpp::VirtualArray_obj::__new();
-HXDLIN( 273)		::cpp::Pointer<  ::Dynamic > tmp = _this;
-HXDLIN( 273)		result->setUnmanagedData(tmp,( (int)(sm_state_len) ));
-HXDLIN( 273)		::cpp::VirtualArray bytes = result->copy();
-HXLINE( 274)		stream->trigger(HX_("sm/update",1e,16,63,46), ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_293_strophe_sm_handler)
+HXLINE( 294)		 ::snikket::streams::XmppStropheStream stream = static_cast<hx::Object*>(userdata);
+HXLINE( 295)		::cpp::Pointer<  ::Dynamic > _this = cpp::Pointer_obj::fromRaw(sm_state)->reinterpret();
+HXDLIN( 295)		::cpp::VirtualArray result = ::cpp::VirtualArray_obj::__new();
+HXDLIN( 295)		::cpp::Pointer<  ::Dynamic > tmp = _this;
+HXDLIN( 295)		result->setUnmanagedData(tmp,( (int)(sm_state_len) ));
+HXDLIN( 295)		::cpp::VirtualArray bytes = result->copy();
+HXLINE( 296)		stream->trigger(HX_("sm/update",1e,16,63,46), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("sm",9a,64,00,00),bytes)));
             	}
 
 
 void XmppStropheStream_obj::strophe_sm_ack_handler( xmpp_conn_t* conn,void* userdata,const char* id){
-            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_277_strophe_sm_ack_handler)
-HXLINE( 278)		 ::snikket::streams::XmppStropheStream stream = static_cast<hx::Object*>(userdata);
-HXLINE( 279)		::cpp::Pointer< char > inPtr = cpp::Pointer_obj::fromRaw(id);
-HXDLIN( 279)		::String sid =  ::String(inPtr->ptr);
-HXLINE( 280)		stream->trigger(HX_("sm/ack",14,b2,12,dd), ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_299_strophe_sm_ack_handler)
+HXLINE( 300)		 ::snikket::streams::XmppStropheStream stream = static_cast<hx::Object*>(userdata);
+HXLINE( 301)		::cpp::Pointer< char > inPtr = cpp::Pointer_obj::fromRaw(id);
+HXDLIN( 301)		::String sid =  ::String(inPtr->ptr);
+HXLINE( 302)		stream->trigger(HX_("sm/ack",14,b2,12,dd), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("id",db,5b,00,00),sid)));
             	}
 
 
 void XmppStropheStream_obj::strophe_sm_fail_handler( xmpp_conn_t* conn,void* userdata,const char* id){
-            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_283_strophe_sm_fail_handler)
-HXLINE( 284)		 ::snikket::streams::XmppStropheStream stream = static_cast<hx::Object*>(userdata);
-HXLINE( 285)		::cpp::Pointer< char > inPtr = cpp::Pointer_obj::fromRaw(id);
-HXDLIN( 285)		::String sid =  ::String(inPtr->ptr);
-HXLINE( 286)		stream->trigger(HX_("sm/fail",b3,aa,95,96), ::Dynamic(::hx::Anon_obj::Create(1)
+            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_305_strophe_sm_fail_handler)
+HXLINE( 306)		 ::snikket::streams::XmppStropheStream stream = static_cast<hx::Object*>(userdata);
+HXLINE( 307)		::cpp::Pointer< char > inPtr = cpp::Pointer_obj::fromRaw(id);
+HXDLIN( 307)		::String sid =  ::String(inPtr->ptr);
+HXLINE( 308)		stream->trigger(HX_("sm/fail",b3,aa,95,96), ::Dynamic(::hx::Anon_obj::Create(1)
             			->setFixed(0,HX_("id",db,5b,00,00),sid)));
             	}
 
 
-int XmppStropheStream_obj::strophe_certfail_handler( const xmpp_tlscert_t* cert,const char* err){
-            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_289_strophe_certfail_handler)
-HXLINE( 290)		 xmpp_conn_t* conn = xmpp_tlscert_get_conn(cert);
-HXLINE( 291)		::Array< ::String > dnsNames = ::Array_obj< ::String >::__new(0);
-HXLINE( 292)		::cpp::Pointer< char > dnsName = null();
-HXLINE( 293)		int dnsNameN = 0;
-HXLINE( 294)		while(true){
-HXLINE( 294)			dnsNameN = (dnsNameN + 1);
-HXDLIN( 294)			dnsName = xmpp_tlscert_get_dnsname(cert,( (size_t)((dnsNameN - 1)) ));
-HXDLIN( 294)			if (!(::hx::IsNotNull( dnsName ))) {
-HXLINE( 294)				goto _hx_goto_17;
-            			}
-HXLINE( 295)			dnsNames->push( ::String(dnsName->ptr));
-            		}
-            		_hx_goto_17:;
-HXLINE( 297)		return 1;
-            	}
-
-
 int XmppStropheStream_obj::strophe_stanza( xmpp_conn_t* conn, xmpp_stanza_t* sstanza,void* userdata){
-            	HX_GC_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_306_strophe_stanza)
-HXLINE( 307)		 ::snikket::streams::XmppStropheStream stream = static_cast<hx::Object*>(userdata);
-HXLINE( 308)		stream->stanzaThisPoll = true;
-HXLINE( 309)		 ::snikket::Stanza stanza = ::snikket::streams::XmppStropheStream_obj::convertToStanza(sstanza,null());
-HXLINE( 311)		::String xmlns = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("xmlns",dc,31,74,60))) );
-HXLINE( 312)		if ((xmlns == HX_("jabber:client",21,64,c5,e4))) {
-HXLINE( 313)			::String name = stanza->name;
-HXLINE( 314)			if ((name == HX_("iq",e8,5b,00,00))) {
-HXLINE( 315)				::String type = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("type",ba,f2,08,4d))) );
-HXLINE( 316)				bool _hx_tmp;
-HXDLIN( 316)				if ((type != HX_("result",dd,68,84,08))) {
-HXLINE( 316)					_hx_tmp = (type == HX_("error",c8,cb,29,73));
+            	HX_GC_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_311_strophe_stanza)
+HXLINE( 312)		 ::snikket::streams::XmppStropheStream stream = static_cast<hx::Object*>(userdata);
+HXLINE( 313)		stream->stanzaThisPoll = true;
+HXLINE( 314)		 ::snikket::Stanza stanza = ::snikket::streams::XmppStropheStream_obj::convertToStanza(sstanza,null());
+HXLINE( 316)		::String xmlns = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("xmlns",dc,31,74,60))) );
+HXLINE( 317)		if ((xmlns == HX_("jabber:client",21,64,c5,e4))) {
+HXLINE( 318)			::String name = stanza->name;
+HXLINE( 319)			if ((name == HX_("iq",e8,5b,00,00))) {
+HXLINE( 320)				::String type = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("type",ba,f2,08,4d))) );
+HXLINE( 321)				bool _hx_tmp;
+HXDLIN( 321)				if ((type != HX_("result",dd,68,84,08))) {
+HXLINE( 321)					_hx_tmp = (type == HX_("error",c8,cb,29,73));
             				}
             				else {
-HXLINE( 316)					_hx_tmp = true;
+HXLINE( 321)					_hx_tmp = true;
             				}
-HXDLIN( 316)				if (_hx_tmp) {
-HXLINE( 317)					stream->onStanza(stanza);
+HXDLIN( 321)				if (_hx_tmp) {
+HXLINE( 322)					stream->onStanza(stanza);
             				}
             				else {
-HXLINE( 320)					 ::snikket::Stanza child = stanza->getFirstChild();
-HXLINE( 321)					if (::hx::IsNotNull( child )) {
-HXLINE( 322)						 ::snikket::IqRequestType this1;
-HXDLIN( 322)						if ((type == HX_("get",96,80,4e,00))) {
-HXLINE( 322)							this1 = ::snikket::IqRequestType_obj::Get_dyn();
+HXLINE( 325)					 ::snikket::Stanza child = stanza->getFirstChild();
+HXLINE( 326)					if (::hx::IsNotNull( child )) {
+HXLINE( 327)						 ::snikket::IqRequestType this1;
+HXDLIN( 327)						if ((type == HX_("get",96,80,4e,00))) {
+HXLINE( 327)							this1 = ::snikket::IqRequestType_obj::Get_dyn();
             						}
             						else {
-HXLINE( 322)							this1 = ::snikket::IqRequestType_obj::Set_dyn();
+HXLINE( 327)							this1 = ::snikket::IqRequestType_obj::Set_dyn();
             						}
-HXDLIN( 322)						::Dynamic this2 = stream->iqHandlers->get(this1).StaticCast<  ::haxe::ds::StringMap >();
-HXDLIN( 322)						::String key = ((HX_("{",7b,00,00,00) + ( (::String)(::Reflect_obj::field(child->attr,HX_("xmlns",dc,31,74,60))) )) + HX_("}",7d,00,00,00));
-HXDLIN( 322)						 ::Dynamic handler = ( ( ::haxe::ds::StringMap)(this2) )->get((key + child->name));
-HXLINE( 323)						if (::hx::IsNotNull( handler )) {
-HXLINE( 324)							::String reply = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("to",7b,65,00,00))) );
-HXDLIN( 324)							::String reply1 = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) );
-HXDLIN( 324)							 ::snikket::Stanza reply2 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(4)
+HXDLIN( 327)						::Dynamic this2 = stream->iqHandlers->get(this1).StaticCast<  ::haxe::ds::StringMap >();
+HXDLIN( 327)						::String key = ((HX_("{",7b,00,00,00) + ( (::String)(::Reflect_obj::field(child->attr,HX_("xmlns",dc,31,74,60))) )) + HX_("}",7d,00,00,00));
+HXDLIN( 327)						 ::Dynamic handler = ( ( ::haxe::ds::StringMap)(this2) )->get((key + child->name));
+HXLINE( 328)						if (::hx::IsNotNull( handler )) {
+HXLINE( 329)							::String reply = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("to",7b,65,00,00))) );
+HXDLIN( 329)							::String reply1 = ( (::String)(::Reflect_obj::field(stanza->attr,HX_("from",6a,a5,c2,43))) );
+HXDLIN( 329)							 ::snikket::Stanza reply2 =  ::snikket::Stanza_obj::__alloc( HX_CTX ,HX_("iq",e8,5b,00,00), ::Dynamic(::hx::Anon_obj::Create(4)
             								->setFixed(0,HX_("id",db,5b,00,00),( (::String)(::Reflect_obj::field(stanza->attr,HX_("id",db,5b,00,00))) ))
             								->setFixed(1,HX_("to",7b,65,00,00),reply1)
             								->setFixed(2,HX_("from",6a,a5,c2,43),reply)
             								->setFixed(3,HX_("type",ba,f2,08,4d),HX_("result",dd,68,84,08))));
-HXLINE( 325)							try {
+HXLINE( 330)							try {
             								HX_STACK_CATCHABLE( ::Dynamic, 0);
-HXLINE( 326)								 ::snikket::IqResult _g = handler(stanza);
-HXDLIN( 326)								switch((int)(_g->_hx_getIndex())){
+HXLINE( 331)								 ::snikket::IqResult _g = handler(stanza);
+HXDLIN( 331)								switch((int)(_g->_hx_getIndex())){
             									case (int)0: {
-HXLINE( 327)										 ::snikket::Stanza el = _g->_hx_getObject(0).StaticCast<  ::snikket::Stanza >();
-HXDLIN( 327)										reply2->addChild(el);
+HXLINE( 332)										 ::snikket::Stanza el = _g->_hx_getObject(0).StaticCast<  ::snikket::Stanza >();
+HXDLIN( 332)										reply2->addChild(el);
             									}
             									break;
             									case (int)1: {
             									}
             									break;
             									case (int)2: {
-HXLINE( 330)										::Reflect_obj::setField(reply2->attr,HX_("result",dd,68,84,08),HX_("error",c8,cb,29,73));
-HXLINE( 331)										reply2->tag(HX_("error",c8,cb,29,73), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE( 335)										::Reflect_obj::setField(reply2->attr,HX_("result",dd,68,84,08),HX_("error",c8,cb,29,73));
+HXLINE( 336)										reply2->tag(HX_("error",c8,cb,29,73), ::Dynamic(::hx::Anon_obj::Create(1)
             											->setFixed(0,HX_("type",ba,f2,08,4d),HX_("cancel",7a,ed,33,b8))))->tag(HX_("service-unavailable",f8,3c,11,1c), ::Dynamic(::hx::Anon_obj::Create(1)
             											->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("urn:ietf:params:xml:ns:xmpp-stanzas",27,f2,3d,30))));
             									}
@@ -449,8 +469,8 @@ HXLINE( 331)										reply2->tag(HX_("error",c8,cb,29,73), ::Dynamic(::hx::Anon
             								if (_hx_e.IsClass<  ::Dynamic >() ){
             									HX_STACK_BEGIN_CATCH
             									 ::Dynamic _g1 = _hx_e;
-HXLINE( 334)									::Reflect_obj::setField(reply2->attr,HX_("result",dd,68,84,08),HX_("error",c8,cb,29,73));
-HXLINE( 335)									reply2->tag(HX_("error",c8,cb,29,73), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE( 339)									::Reflect_obj::setField(reply2->attr,HX_("result",dd,68,84,08),HX_("error",c8,cb,29,73));
+HXLINE( 340)									reply2->tag(HX_("error",c8,cb,29,73), ::Dynamic(::hx::Anon_obj::Create(1)
             										->setFixed(0,HX_("type",ba,f2,08,4d),HX_("cancel",7a,ed,33,b8))))->tag(HX_("internal-server-error",ce,6d,55,6c), ::Dynamic(::hx::Anon_obj::Create(1)
             										->setFixed(0,HX_("xmlns",dc,31,74,60),HX_("urn:ietf:params:xml:ns:xmpp-stanzas",27,f2,3d,30))));
             								}
@@ -458,100 +478,100 @@ HXLINE( 335)									reply2->tag(HX_("error",c8,cb,29,73), ::Dynamic(::hx::Anon_
             									HX_STACK_DO_THROW(_hx_e);
             								}
             							}
-HXLINE( 337)							stream->sendStanza(reply2);
+HXLINE( 342)							stream->sendStanza(reply2);
             						}
             					}
             				}
             			}
             			else {
-HXLINE( 342)				stream->onStanza(stanza);
+HXLINE( 347)				stream->onStanza(stanza);
             			}
             		}
-HXLINE( 346)		return 1;
+HXLINE( 351)		return 1;
             	}
 
 
 void XmppStropheStream_obj::strophe_connect( xmpp_conn_t* conn, xmpp_conn_event_t event,int error, xmpp_stream_error_t* stream_error,int resumed,void* userdata){
-            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_353_strophe_connect)
-HXLINE( 354)		 ::snikket::streams::XmppStropheStream stream = static_cast<hx::Object*>(userdata);
-HXLINE( 355)		if (::hx::IsInstanceEq( event,XMPP_CONN_CONNECT )) {
-HXLINE( 356)			stream->ready = true;
-HXLINE( 357)			while((stream->pending->length > 0)){
-HXLINE( 358)				stream->sendStanza(stream->pending->shift().StaticCast<  ::snikket::Stanza >());
+            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_358_strophe_connect)
+HXLINE( 359)		 ::snikket::streams::XmppStropheStream stream = static_cast<hx::Object*>(userdata);
+HXLINE( 360)		if (::hx::IsInstanceEq( event,XMPP_CONN_CONNECT )) {
+HXLINE( 361)			stream->ready = true;
+HXLINE( 362)			while((stream->pending->length > 0)){
+HXLINE( 363)				stream->sendStanza(stream->pending->shift().StaticCast<  ::snikket::Stanza >());
             			}
-HXLINE( 360)			stream->trigger(HX_("status/online",10,05,0e,d2), ::Dynamic(::hx::Anon_obj::Create(1)
+HXLINE( 365)			stream->trigger(HX_("status/online",10,05,0e,d2), ::Dynamic(::hx::Anon_obj::Create(1)
             				->setFixed(0,HX_("resumed",17,0e,58,6b),(resumed != 0))));
             		}
-HXLINE( 362)		if (::hx::IsInstanceEq( event,XMPP_CONN_DISCONNECT )) {
-HXLINE( 363)			if (!(stream->ready)) {
-HXLINE( 365)				stream->trigger(HX_("auth/fail",25,45,e9,d1), ::Dynamic(::hx::Anon_obj::Create(0)));
+HXLINE( 367)		if (::hx::IsInstanceEq( event,XMPP_CONN_DISCONNECT )) {
+HXLINE( 368)			if (!(stream->ready)) {
+HXLINE( 370)				stream->trigger(HX_("auth/fail",25,45,e9,d1), ::Dynamic(::hx::Anon_obj::Create(0)));
             			}
             			else {
-HXLINE( 367)				stream->ready = false;
-HXLINE( 368)				stream->trigger(HX_("status/offline",c6,eb,eb,54), ::Dynamic(::hx::Anon_obj::Create(0)));
-HXLINE( 372)				::cpp::Pointer< char > tmp = null();
-HXLINE( 370)				xmpp_connect_client(conn,tmp,( (unsigned short)(0) ),::cpp::Function< void ( xmpp_conn_t*, xmpp_conn_event_t,int, xmpp_stream_error_t*,int,void*)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_connect )),userdata);
+HXLINE( 372)				stream->ready = false;
+HXLINE( 373)				stream->trigger(HX_("status/offline",c6,eb,eb,54), ::Dynamic(::hx::Anon_obj::Create(0)));
+HXLINE( 377)				::cpp::Pointer< char > tmp = null();
+HXLINE( 375)				xmpp_connect_client(conn,tmp,( (unsigned short)(0) ),::cpp::Function< void ( xmpp_conn_t*, xmpp_conn_event_t,int, xmpp_stream_error_t*,int,void*)>(::hx::AnyCast(&::snikket::streams::XmppStropheStream_obj::strophe_connect )),userdata);
             			}
             		}
-HXLINE( 379)		if (::hx::IsInstanceEq( event,XMPP_CONN_FAIL )) {
-HXLINE( 380)			stream->ready = false;
-HXLINE( 381)			stream->trigger(HX_("status/offline",c6,eb,eb,54), ::Dynamic(::hx::Anon_obj::Create(0)));
+HXLINE( 384)		if (::hx::IsInstanceEq( event,XMPP_CONN_FAIL )) {
+HXLINE( 385)			stream->ready = false;
+HXLINE( 386)			stream->trigger(HX_("status/offline",c6,eb,eb,54), ::Dynamic(::hx::Anon_obj::Create(0)));
             		}
             	}
 
 
  ::snikket::Stanza XmppStropheStream_obj::parseStanza(::String s){
-            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_430_parseStanza)
-HXLINE( 431)		::cpp::Pointer< char > tmp = cpp::Pointer_obj::fromPointer(s.c_str());
-HXDLIN( 431)		 xmpp_stanza_t* sstanza = xmpp_stanza_new_from_string(::snikket::streams::XmppStropheStream_obj::ctx,tmp);
-HXLINE( 432)		if (::hx::IsNull( sstanza )) {
-HXLINE( 432)			HX_STACK_DO_THROW((HX_("Failed to parse stanza: ",6a,ef,ec,9c) + s));
+            	HX_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_435_parseStanza)
+HXLINE( 436)		::cpp::Pointer< char > tmp = cpp::Pointer_obj::fromPointer(s.c_str());
+HXDLIN( 436)		 xmpp_stanza_t* sstanza = xmpp_stanza_new_from_string(::snikket::streams::XmppStropheStream_obj::ctx,tmp);
+HXLINE( 437)		if (::hx::IsNull( sstanza )) {
+HXLINE( 437)			HX_STACK_DO_THROW((HX_("Failed to parse stanza: ",6a,ef,ec,9c) + s));
             		}
-HXLINE( 433)		 ::snikket::Stanza stanza = ::snikket::streams::XmppStropheStream_obj::convertToStanza(sstanza,null());
-HXLINE( 434)		xmpp_stanza_release(sstanza);
-HXLINE( 435)		return stanza;
+HXLINE( 438)		 ::snikket::Stanza stanza = ::snikket::streams::XmppStropheStream_obj::convertToStanza(sstanza,null());
+HXLINE( 439)		xmpp_stanza_release(sstanza);
+HXLINE( 440)		return stanza;
             	}
 
 
 STATIC_HX_DEFINE_DYNAMIC_FUNC1(XmppStropheStream_obj,parseStanza,return )
 
  ::snikket::Stanza XmppStropheStream_obj::convertToStanza( xmpp_stanza_t* el,void* dummy){
-            	HX_GC_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_438_convertToStanza)
-HXLINE( 439)		::cpp::Pointer< char > name = xmpp_stanza_get_name(el);
-HXLINE( 440)		int attrlen = xmpp_stanza_get_attribute_count(el);
-HXLINE( 441)		void* attrsraw = ::hx::InternalNew(((attrlen * 2) * sizeof(char*)),false);
-HXLINE( 442)		const char** attrsarray = static_cast<const char**>(attrsraw);
-HXLINE( 443)		::cpp::Pointer< const char* > attrsptr = ::cpp::Pointer_obj::fromRaw(attrsarray);
-HXLINE( 444)		xmpp_stanza_get_attributes(el,attrsarray,(attrlen * 2));
-HXLINE( 445)		 ::Dynamic attrs =  ::Dynamic(::hx::Anon_obj::Create(0));
-HXLINE( 446)		{
-HXLINE( 446)			int _g = 0;
-HXDLIN( 446)			int _g1 = attrlen;
-HXDLIN( 446)			while((_g < _g1)){
-HXLINE( 446)				_g = (_g + 1);
-HXDLIN( 446)				int i = (_g - 1);
-HXLINE( 447)				::cpp::Pointer< char > key = cpp::Pointer_obj::fromRaw(attrsptr->at((i * 2)));
-HXLINE( 448)				::cpp::Pointer< char > value = cpp::Pointer_obj::fromRaw(attrsptr->at(((i * 2) + 1)));
-HXLINE( 449)				{
-HXLINE( 449)					::String key1 =  ::String(key->ptr);
-HXDLIN( 449)					::String value1 =  ::String(value->ptr);
-HXDLIN( 449)					::Reflect_obj::setField(attrs,key1,value1);
+            	HX_GC_STACKFRAME(&_hx_pos_c0c1f1a3af656a5a_443_convertToStanza)
+HXLINE( 444)		::cpp::Pointer< char > name = xmpp_stanza_get_name(el);
+HXLINE( 445)		int attrlen = xmpp_stanza_get_attribute_count(el);
+HXLINE( 446)		void* attrsraw = ::hx::InternalNew(((attrlen * 2) * sizeof(char*)),false);
+HXLINE( 447)		const char** attrsarray = static_cast<const char**>(attrsraw);
+HXLINE( 448)		::cpp::Pointer< const char* > attrsptr = ::cpp::Pointer_obj::fromRaw(attrsarray);
+HXLINE( 449)		xmpp_stanza_get_attributes(el,attrsarray,(attrlen * 2));
+HXLINE( 450)		 ::Dynamic attrs =  ::Dynamic(::hx::Anon_obj::Create(0));
+HXLINE( 451)		{
+HXLINE( 451)			int _g = 0;
+HXDLIN( 451)			int _g1 = attrlen;
+HXDLIN( 451)			while((_g < _g1)){
+HXLINE( 451)				_g = (_g + 1);
+HXDLIN( 451)				int i = (_g - 1);
+HXLINE( 452)				::cpp::Pointer< char > key = cpp::Pointer_obj::fromRaw(attrsptr->at((i * 2)));
+HXLINE( 453)				::cpp::Pointer< char > value = cpp::Pointer_obj::fromRaw(attrsptr->at(((i * 2) + 1)));
+HXLINE( 454)				{
+HXLINE( 454)					::String key1 =  ::String(key->ptr);
+HXDLIN( 454)					::String value1 =  ::String(value->ptr);
+HXDLIN( 454)					::Reflect_obj::setField(attrs,key1,value1);
             				}
             			}
             		}
-HXLINE( 451)		 ::snikket::Stanza stanza =  ::snikket::Stanza_obj::__alloc( HX_CTX , ::String(name->ptr),attrs);
-HXLINE( 453)		 xmpp_stanza_t* child = xmpp_stanza_get_children(el);
-HXLINE( 454)		while(::hx::IsNotNull( child )){
-HXLINE( 455)			if (xmpp_stanza_is_text(child)) {
-HXLINE( 456)				::cpp::Pointer< char > inPtr = cpp::Pointer_obj::fromRaw(xmpp_stanza_get_text_ptr(child));
-HXDLIN( 456)				stanza->text( ::String(inPtr->ptr));
+HXLINE( 456)		 ::snikket::Stanza stanza =  ::snikket::Stanza_obj::__alloc( HX_CTX , ::String(name->ptr),attrs);
+HXLINE( 458)		 xmpp_stanza_t* child = xmpp_stanza_get_children(el);
+HXLINE( 459)		while(::hx::IsNotNull( child )){
+HXLINE( 460)			if (xmpp_stanza_is_text(child)) {
+HXLINE( 461)				::cpp::Pointer< char > inPtr = cpp::Pointer_obj::fromRaw(xmpp_stanza_get_text_ptr(child));
+HXDLIN( 461)				stanza->text( ::String(inPtr->ptr));
             			}
             			else {
-HXLINE( 458)				stanza->addChild(::snikket::streams::XmppStropheStream_obj::convertToStanza(child,null()));
+HXLINE( 463)				stanza->addChild(::snikket::streams::XmppStropheStream_obj::convertToStanza(child,null()));
             			}
-HXLINE( 460)			child = xmpp_stanza_get_next(child);
+HXLINE( 465)			child = xmpp_stanza_get_next(child);
             		}
-HXLINE( 463)		return stanza;
+HXLINE( 468)		return stanza;
             	}
 
 
diff --git a/Sources/c_snikket/src/sys/thread/NoEventLoopException.cpp b/Sources/c_snikket/src/sys/thread/NoEventLoopException.cpp
index e983405..99fc4f5 100644
--- a/Sources/c_snikket/src/sys/thread/NoEventLoopException.cpp
+++ b/Sources/c_snikket/src/sys/thread/NoEventLoopException.cpp
@@ -16,7 +16,12 @@ void NoEventLoopException_obj::__construct(::String __o_msg, ::haxe::Exception p
             		::String msg = __o_msg;
             		if (::hx::IsNull(__o_msg)) msg = HX_("Event loop is not available. Refer to sys.thread.Thread.runWithEventLoop.",89,e6,4c,1c);
             	HX_STACKFRAME(&_hx_pos_c0f6a7d563b0a42e_7_new)
-HXDLIN(   7)		super::__construct(msg,previous,null());
+HXDLIN(   7)		{
+HXDLIN(   7)			super::__construct(msg,previous,null());
+            		}
+HXDLIN(   7)		{
+HXDLIN(   7)			this->_hx___skipStack++;
+            		}
             	}
 
 Dynamic NoEventLoopException_obj::__CreateEmpty() { return new NoEventLoopException_obj; }
@@ -39,6 +44,19 @@ bool NoEventLoopException_obj::_hx_isInstanceOf(int inClassId) {
 }
 
 
+::hx::ObjectPtr< NoEventLoopException_obj > NoEventLoopException_obj::__new(::String __o_msg, ::haxe::Exception previous) {
+	::hx::ObjectPtr< NoEventLoopException_obj > __this = new NoEventLoopException_obj();
+	__this->__construct(__o_msg,previous);
+	return __this;
+}
+
+::hx::ObjectPtr< NoEventLoopException_obj > NoEventLoopException_obj::__alloc(::hx::Ctx *_hx_ctx,::String __o_msg, ::haxe::Exception previous) {
+	NoEventLoopException_obj *__this = (NoEventLoopException_obj*)(::hx::Ctx::alloc(_hx_ctx, sizeof(NoEventLoopException_obj), true, "sys.thread.NoEventLoopException"));
+	*(void **)__this = NoEventLoopException_obj::_hx_vtable;
+	__this->__construct(__o_msg,previous);
+	return __this;
+}
+
 NoEventLoopException_obj::NoEventLoopException_obj()
 {
 }
diff --git a/Sources/c_snikket/src/sys/thread/ThreadPoolException.cpp b/Sources/c_snikket/src/sys/thread/ThreadPoolException.cpp
index 09b4ce8..5d2138f 100644
--- a/Sources/c_snikket/src/sys/thread/ThreadPoolException.cpp
+++ b/Sources/c_snikket/src/sys/thread/ThreadPoolException.cpp
@@ -14,7 +14,12 @@ namespace thread{
 
 void ThreadPoolException_obj::__construct(::String message, ::haxe::Exception previous, ::Dynamic native){
             	HX_STACKFRAME(&_hx_pos_198c3f4b2c534790_5_new)
-HXDLIN(   5)		super::__construct(message,previous,native);
+HXDLIN(   5)		{
+HXDLIN(   5)			super::__construct(message,previous,native);
+            		}
+HXDLIN(   5)		{
+HXDLIN(   5)			this->_hx___skipStack++;
+            		}
             	}
 
 Dynamic ThreadPoolException_obj::__CreateEmpty() { return new ThreadPoolException_obj; }
@@ -37,6 +42,19 @@ bool ThreadPoolException_obj::_hx_isInstanceOf(int inClassId) {
 }
 
 
+::hx::ObjectPtr< ThreadPoolException_obj > ThreadPoolException_obj::__new(::String message, ::haxe::Exception previous, ::Dynamic native) {
+	::hx::ObjectPtr< ThreadPoolException_obj > __this = new ThreadPoolException_obj();
+	__this->__construct(message,previous,native);
+	return __this;
+}
+
+::hx::ObjectPtr< ThreadPoolException_obj > ThreadPoolException_obj::__alloc(::hx::Ctx *_hx_ctx,::String message, ::haxe::Exception previous, ::Dynamic native) {
+	ThreadPoolException_obj *__this = (ThreadPoolException_obj*)(::hx::Ctx::alloc(_hx_ctx, sizeof(ThreadPoolException_obj), true, "sys.thread.ThreadPoolException"));
+	*(void **)__this = ThreadPoolException_obj::_hx_vtable;
+	__this->__construct(message,previous,native);
+	return __this;
+}
+
 ThreadPoolException_obj::ThreadPoolException_obj()
 {
 }
diff --git a/Sources/c_snikket/src/sys/thread/_FixedThreadPool/ShutdownException.cpp b/Sources/c_snikket/src/sys/thread/_FixedThreadPool/ShutdownException.cpp
index 88796c2..3c30a55 100644
--- a/Sources/c_snikket/src/sys/thread/_FixedThreadPool/ShutdownException.cpp
+++ b/Sources/c_snikket/src/sys/thread/_FixedThreadPool/ShutdownException.cpp
@@ -15,7 +15,12 @@ namespace _FixedThreadPool{
 
 void ShutdownException_obj::__construct(::String message, ::haxe::Exception previous, ::Dynamic native){
             	HX_STACKFRAME(&_hx_pos_3d4aac51d93fb9ec_93_new)
-HXDLIN(  93)		super::__construct(message,previous,native);
+HXDLIN(  93)		{
+HXDLIN(  93)			super::__construct(message,previous,native);
+            		}
+HXDLIN(  93)		{
+HXDLIN(  93)			this->_hx___skipStack++;
+            		}
             	}
 
 Dynamic ShutdownException_obj::__CreateEmpty() { return new ShutdownException_obj; }
@@ -38,6 +43,19 @@ bool ShutdownException_obj::_hx_isInstanceOf(int inClassId) {
 }
 
 
+::hx::ObjectPtr< ShutdownException_obj > ShutdownException_obj::__new(::String message, ::haxe::Exception previous, ::Dynamic native) {
+	::hx::ObjectPtr< ShutdownException_obj > __this = new ShutdownException_obj();
+	__this->__construct(message,previous,native);
+	return __this;
+}
+
+::hx::ObjectPtr< ShutdownException_obj > ShutdownException_obj::__alloc(::hx::Ctx *_hx_ctx,::String message, ::haxe::Exception previous, ::Dynamic native) {
+	ShutdownException_obj *__this = (ShutdownException_obj*)(::hx::Ctx::alloc(_hx_ctx, sizeof(ShutdownException_obj), true, "sys.thread._FixedThreadPool.ShutdownException"));
+	*(void **)__this = ShutdownException_obj::_hx_vtable;
+	__this->__construct(message,previous,native);
+	return __this;
+}
+
 ShutdownException_obj::ShutdownException_obj()
 {
 }