// Code generated by easyjson for marshaling/unmarshaling. DO NOT EDIT.

package signaling

import (
	json "encoding/json"
	_v5 "github.com/golang-jwt/jwt/v5"
	easyjson "github.com/mailru/easyjson"
	jlexer "github.com/mailru/easyjson/jlexer"
	jwriter "github.com/mailru/easyjson/jwriter"
	time "time"
)

// suppress unused package warning
var (
	_ *json.RawMessage
	_ *jlexer.Lexer
	_ *jwriter.Writer
	_ easyjson.Marshaler
)

func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling(in *jlexer.Lexer, out *WelcomeServerMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "version":
			out.Version = string(in.String())
		case "features":
			if in.IsNull() {
				in.Skip()
				out.Features = nil
			} else {
				in.Delim('[')
				if out.Features == nil {
					if !in.IsDelim(']') {
						out.Features = make([]string, 0, 4)
					} else {
						out.Features = []string{}
					}
				} else {
					out.Features = (out.Features)[:0]
				}
				for !in.IsDelim(']') {
					var v1 string
					v1 = string(in.String())
					out.Features = append(out.Features, v1)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "country":
			out.Country = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling(out *jwriter.Writer, in WelcomeServerMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"version\":"
		out.RawString(prefix[1:])
		out.String(string(in.Version))
	}
	if len(in.Features) != 0 {
		const prefix string = ",\"features\":"
		out.RawString(prefix)
		{
			out.RawByte('[')
			for v2, v3 := range in.Features {
				if v2 > 0 {
					out.RawByte(',')
				}
				out.String(string(v3))
			}
			out.RawByte(']')
		}
	}
	if in.Country != "" {
		const prefix string = ",\"country\":"
		out.RawString(prefix)
		out.String(string(in.Country))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v WelcomeServerMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v WelcomeServerMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *WelcomeServerMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *WelcomeServerMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling1(in *jlexer.Lexer, out *UpdateSessionInternalClientMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "flags":
			if in.IsNull() {
				in.Skip()
				out.Flags = nil
			} else {
				if out.Flags == nil {
					out.Flags = new(uint32)
				}
				*out.Flags = uint32(in.Uint32())
			}
		case "incall":
			if in.IsNull() {
				in.Skip()
				out.InCall = nil
			} else {
				if out.InCall == nil {
					out.InCall = new(int)
				}
				*out.InCall = int(in.Int())
			}
		case "sessionid":
			out.SessionId = string(in.String())
		case "roomid":
			out.RoomId = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling1(out *jwriter.Writer, in UpdateSessionInternalClientMessage) {
	out.RawByte('{')
	first := true
	_ = first
	if in.Flags != nil {
		const prefix string = ",\"flags\":"
		first = false
		out.RawString(prefix[1:])
		out.Uint32(uint32(*in.Flags))
	}
	if in.InCall != nil {
		const prefix string = ",\"incall\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.Int(int(*in.InCall))
	}
	{
		const prefix string = ",\"sessionid\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.String(string(in.SessionId))
	}
	{
		const prefix string = ",\"roomid\":"
		out.RawString(prefix)
		out.String(string(in.RoomId))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v UpdateSessionInternalClientMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling1(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v UpdateSessionInternalClientMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling1(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *UpdateSessionInternalClientMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling1(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *UpdateSessionInternalClientMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling1(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling2(in *jlexer.Lexer, out *TransientDataServerMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "type":
			out.Type = string(in.String())
		case "key":
			out.Key = string(in.String())
		case "oldvalue":
			if m, ok := out.OldValue.(easyjson.Unmarshaler); ok {
				m.UnmarshalEasyJSON(in)
			} else if m, ok := out.OldValue.(json.Unmarshaler); ok {
				_ = m.UnmarshalJSON(in.Raw())
			} else {
				out.OldValue = in.Interface()
			}
		case "value":
			if m, ok := out.Value.(easyjson.Unmarshaler); ok {
				m.UnmarshalEasyJSON(in)
			} else if m, ok := out.Value.(json.Unmarshaler); ok {
				_ = m.UnmarshalJSON(in.Raw())
			} else {
				out.Value = in.Interface()
			}
		case "data":
			if in.IsNull() {
				in.Skip()
			} else {
				in.Delim('{')
				if !in.IsDelim('}') {
					out.Data = make(map[string]interface{})
				} else {
					out.Data = nil
				}
				for !in.IsDelim('}') {
					key := string(in.String())
					in.WantColon()
					var v4 interface{}
					if m, ok := v4.(easyjson.Unmarshaler); ok {
						m.UnmarshalEasyJSON(in)
					} else if m, ok := v4.(json.Unmarshaler); ok {
						_ = m.UnmarshalJSON(in.Raw())
					} else {
						v4 = in.Interface()
					}
					(out.Data)[key] = v4
					in.WantComma()
				}
				in.Delim('}')
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling2(out *jwriter.Writer, in TransientDataServerMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"type\":"
		out.RawString(prefix[1:])
		out.String(string(in.Type))
	}
	if in.Key != "" {
		const prefix string = ",\"key\":"
		out.RawString(prefix)
		out.String(string(in.Key))
	}
	if in.OldValue != nil {
		const prefix string = ",\"oldvalue\":"
		out.RawString(prefix)
		if m, ok := in.OldValue.(easyjson.Marshaler); ok {
			m.MarshalEasyJSON(out)
		} else if m, ok := in.OldValue.(json.Marshaler); ok {
			out.Raw(m.MarshalJSON())
		} else {
			out.Raw(json.Marshal(in.OldValue))
		}
	}
	if in.Value != nil {
		const prefix string = ",\"value\":"
		out.RawString(prefix)
		if m, ok := in.Value.(easyjson.Marshaler); ok {
			m.MarshalEasyJSON(out)
		} else if m, ok := in.Value.(json.Marshaler); ok {
			out.Raw(m.MarshalJSON())
		} else {
			out.Raw(json.Marshal(in.Value))
		}
	}
	if len(in.Data) != 0 {
		const prefix string = ",\"data\":"
		out.RawString(prefix)
		{
			out.RawByte('{')
			v5First := true
			for v5Name, v5Value := range in.Data {
				if v5First {
					v5First = false
				} else {
					out.RawByte(',')
				}
				out.String(string(v5Name))
				out.RawByte(':')
				if m, ok := v5Value.(easyjson.Marshaler); ok {
					m.MarshalEasyJSON(out)
				} else if m, ok := v5Value.(json.Marshaler); ok {
					out.Raw(m.MarshalJSON())
				} else {
					out.Raw(json.Marshal(v5Value))
				}
			}
			out.RawByte('}')
		}
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v TransientDataServerMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling2(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v TransientDataServerMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling2(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *TransientDataServerMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling2(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *TransientDataServerMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling2(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling3(in *jlexer.Lexer, out *TransientDataClientMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "type":
			out.Type = string(in.String())
		case "key":
			out.Key = string(in.String())
		case "value":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.Value).UnmarshalJSON(data))
			}
		case "ttl":
			out.TTL = time.Duration(in.Int64())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling3(out *jwriter.Writer, in TransientDataClientMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"type\":"
		out.RawString(prefix[1:])
		out.String(string(in.Type))
	}
	if in.Key != "" {
		const prefix string = ",\"key\":"
		out.RawString(prefix)
		out.String(string(in.Key))
	}
	if len(in.Value) != 0 {
		const prefix string = ",\"value\":"
		out.RawString(prefix)
		out.Raw((in.Value).MarshalJSON())
	}
	if in.TTL != 0 {
		const prefix string = ",\"ttl\":"
		out.RawString(prefix)
		out.Int64(int64(in.TTL))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v TransientDataClientMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling3(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v TransientDataClientMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling3(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *TransientDataClientMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling3(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *TransientDataClientMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling3(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling4(in *jlexer.Lexer, out *ServerMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "id":
			out.Id = string(in.String())
		case "type":
			out.Type = string(in.String())
		case "error":
			if in.IsNull() {
				in.Skip()
				out.Error = nil
			} else {
				if out.Error == nil {
					out.Error = new(Error)
				}
				(*out.Error).UnmarshalEasyJSON(in)
			}
		case "welcome":
			if in.IsNull() {
				in.Skip()
				out.Welcome = nil
			} else {
				if out.Welcome == nil {
					out.Welcome = new(WelcomeServerMessage)
				}
				(*out.Welcome).UnmarshalEasyJSON(in)
			}
		case "hello":
			if in.IsNull() {
				in.Skip()
				out.Hello = nil
			} else {
				if out.Hello == nil {
					out.Hello = new(HelloServerMessage)
				}
				(*out.Hello).UnmarshalEasyJSON(in)
			}
		case "bye":
			if in.IsNull() {
				in.Skip()
				out.Bye = nil
			} else {
				if out.Bye == nil {
					out.Bye = new(ByeServerMessage)
				}
				(*out.Bye).UnmarshalEasyJSON(in)
			}
		case "room":
			if in.IsNull() {
				in.Skip()
				out.Room = nil
			} else {
				if out.Room == nil {
					out.Room = new(RoomServerMessage)
				}
				(*out.Room).UnmarshalEasyJSON(in)
			}
		case "message":
			if in.IsNull() {
				in.Skip()
				out.Message = nil
			} else {
				if out.Message == nil {
					out.Message = new(MessageServerMessage)
				}
				(*out.Message).UnmarshalEasyJSON(in)
			}
		case "control":
			if in.IsNull() {
				in.Skip()
				out.Control = nil
			} else {
				if out.Control == nil {
					out.Control = new(ControlServerMessage)
				}
				(*out.Control).UnmarshalEasyJSON(in)
			}
		case "event":
			if in.IsNull() {
				in.Skip()
				out.Event = nil
			} else {
				if out.Event == nil {
					out.Event = new(EventServerMessage)
				}
				(*out.Event).UnmarshalEasyJSON(in)
			}
		case "transient":
			if in.IsNull() {
				in.Skip()
				out.TransientData = nil
			} else {
				if out.TransientData == nil {
					out.TransientData = new(TransientDataServerMessage)
				}
				(*out.TransientData).UnmarshalEasyJSON(in)
			}
		case "internal":
			if in.IsNull() {
				in.Skip()
				out.Internal = nil
			} else {
				if out.Internal == nil {
					out.Internal = new(InternalServerMessage)
				}
				(*out.Internal).UnmarshalEasyJSON(in)
			}
		case "dialout":
			if in.IsNull() {
				in.Skip()
				out.Dialout = nil
			} else {
				if out.Dialout == nil {
					out.Dialout = new(DialoutInternalClientMessage)
				}
				(*out.Dialout).UnmarshalEasyJSON(in)
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling4(out *jwriter.Writer, in ServerMessage) {
	out.RawByte('{')
	first := true
	_ = first
	if in.Id != "" {
		const prefix string = ",\"id\":"
		first = false
		out.RawString(prefix[1:])
		out.String(string(in.Id))
	}
	{
		const prefix string = ",\"type\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.String(string(in.Type))
	}
	if in.Error != nil {
		const prefix string = ",\"error\":"
		out.RawString(prefix)
		(*in.Error).MarshalEasyJSON(out)
	}
	if in.Welcome != nil {
		const prefix string = ",\"welcome\":"
		out.RawString(prefix)
		(*in.Welcome).MarshalEasyJSON(out)
	}
	if in.Hello != nil {
		const prefix string = ",\"hello\":"
		out.RawString(prefix)
		(*in.Hello).MarshalEasyJSON(out)
	}
	if in.Bye != nil {
		const prefix string = ",\"bye\":"
		out.RawString(prefix)
		(*in.Bye).MarshalEasyJSON(out)
	}
	if in.Room != nil {
		const prefix string = ",\"room\":"
		out.RawString(prefix)
		(*in.Room).MarshalEasyJSON(out)
	}
	if in.Message != nil {
		const prefix string = ",\"message\":"
		out.RawString(prefix)
		(*in.Message).MarshalEasyJSON(out)
	}
	if in.Control != nil {
		const prefix string = ",\"control\":"
		out.RawString(prefix)
		(*in.Control).MarshalEasyJSON(out)
	}
	if in.Event != nil {
		const prefix string = ",\"event\":"
		out.RawString(prefix)
		(*in.Event).MarshalEasyJSON(out)
	}
	if in.TransientData != nil {
		const prefix string = ",\"transient\":"
		out.RawString(prefix)
		(*in.TransientData).MarshalEasyJSON(out)
	}
	if in.Internal != nil {
		const prefix string = ",\"internal\":"
		out.RawString(prefix)
		(*in.Internal).MarshalEasyJSON(out)
	}
	if in.Dialout != nil {
		const prefix string = ",\"dialout\":"
		out.RawString(prefix)
		(*in.Dialout).MarshalEasyJSON(out)
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v ServerMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling4(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v ServerMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling4(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *ServerMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling4(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *ServerMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling4(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling5(in *jlexer.Lexer, out *RoomServerMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "roomid":
			out.RoomId = string(in.String())
		case "properties":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.Properties).UnmarshalJSON(data))
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling5(out *jwriter.Writer, in RoomServerMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"roomid\":"
		out.RawString(prefix[1:])
		out.String(string(in.RoomId))
	}
	if len(in.Properties) != 0 {
		const prefix string = ",\"properties\":"
		out.RawString(prefix)
		out.Raw((in.Properties).MarshalJSON())
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v RoomServerMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling5(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v RoomServerMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling5(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *RoomServerMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling5(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *RoomServerMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling5(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling6(in *jlexer.Lexer, out *RoomFlagsServerMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "roomid":
			out.RoomId = string(in.String())
		case "sessionid":
			out.SessionId = string(in.String())
		case "flags":
			out.Flags = uint32(in.Uint32())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling6(out *jwriter.Writer, in RoomFlagsServerMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"roomid\":"
		out.RawString(prefix[1:])
		out.String(string(in.RoomId))
	}
	{
		const prefix string = ",\"sessionid\":"
		out.RawString(prefix)
		out.String(string(in.SessionId))
	}
	{
		const prefix string = ",\"flags\":"
		out.RawString(prefix)
		out.Uint32(uint32(in.Flags))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v RoomFlagsServerMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling6(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v RoomFlagsServerMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling6(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *RoomFlagsServerMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling6(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *RoomFlagsServerMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling6(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling7(in *jlexer.Lexer, out *RoomFederationMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "signaling":
			out.SignalingUrl = string(in.String())
		case "url":
			out.NextcloudUrl = string(in.String())
		case "roomid":
			out.RoomId = string(in.String())
		case "token":
			out.Token = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling7(out *jwriter.Writer, in RoomFederationMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"signaling\":"
		out.RawString(prefix[1:])
		out.String(string(in.SignalingUrl))
	}
	{
		const prefix string = ",\"url\":"
		out.RawString(prefix)
		out.String(string(in.NextcloudUrl))
	}
	if in.RoomId != "" {
		const prefix string = ",\"roomid\":"
		out.RawString(prefix)
		out.String(string(in.RoomId))
	}
	{
		const prefix string = ",\"token\":"
		out.RawString(prefix)
		out.String(string(in.Token))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v RoomFederationMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling7(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v RoomFederationMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling7(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *RoomFederationMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling7(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *RoomFederationMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling7(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling8(in *jlexer.Lexer, out *RoomEventServerMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "roomid":
			out.RoomId = string(in.String())
		case "properties":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.Properties).UnmarshalJSON(data))
			}
		case "incall":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.InCall).UnmarshalJSON(data))
			}
		case "changed":
			if in.IsNull() {
				in.Skip()
				out.Changed = nil
			} else {
				in.Delim('[')
				if out.Changed == nil {
					if !in.IsDelim(']') {
						out.Changed = make([]map[string]interface{}, 0, 8)
					} else {
						out.Changed = []map[string]interface{}{}
					}
				} else {
					out.Changed = (out.Changed)[:0]
				}
				for !in.IsDelim(']') {
					var v6 map[string]interface{}
					if in.IsNull() {
						in.Skip()
					} else {
						in.Delim('{')
						if !in.IsDelim('}') {
							v6 = make(map[string]interface{})
						} else {
							v6 = nil
						}
						for !in.IsDelim('}') {
							key := string(in.String())
							in.WantColon()
							var v7 interface{}
							if m, ok := v7.(easyjson.Unmarshaler); ok {
								m.UnmarshalEasyJSON(in)
							} else if m, ok := v7.(json.Unmarshaler); ok {
								_ = m.UnmarshalJSON(in.Raw())
							} else {
								v7 = in.Interface()
							}
							(v6)[key] = v7
							in.WantComma()
						}
						in.Delim('}')
					}
					out.Changed = append(out.Changed, v6)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "users":
			if in.IsNull() {
				in.Skip()
				out.Users = nil
			} else {
				in.Delim('[')
				if out.Users == nil {
					if !in.IsDelim(']') {
						out.Users = make([]map[string]interface{}, 0, 8)
					} else {
						out.Users = []map[string]interface{}{}
					}
				} else {
					out.Users = (out.Users)[:0]
				}
				for !in.IsDelim(']') {
					var v8 map[string]interface{}
					if in.IsNull() {
						in.Skip()
					} else {
						in.Delim('{')
						if !in.IsDelim('}') {
							v8 = make(map[string]interface{})
						} else {
							v8 = nil
						}
						for !in.IsDelim('}') {
							key := string(in.String())
							in.WantColon()
							var v9 interface{}
							if m, ok := v9.(easyjson.Unmarshaler); ok {
								m.UnmarshalEasyJSON(in)
							} else if m, ok := v9.(json.Unmarshaler); ok {
								_ = m.UnmarshalJSON(in.Raw())
							} else {
								v9 = in.Interface()
							}
							(v8)[key] = v9
							in.WantComma()
						}
						in.Delim('}')
					}
					out.Users = append(out.Users, v8)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "all":
			out.All = bool(in.Bool())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling8(out *jwriter.Writer, in RoomEventServerMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"roomid\":"
		out.RawString(prefix[1:])
		out.String(string(in.RoomId))
	}
	if len(in.Properties) != 0 {
		const prefix string = ",\"properties\":"
		out.RawString(prefix)
		out.Raw((in.Properties).MarshalJSON())
	}
	if len(in.InCall) != 0 {
		const prefix string = ",\"incall\":"
		out.RawString(prefix)
		out.Raw((in.InCall).MarshalJSON())
	}
	if len(in.Changed) != 0 {
		const prefix string = ",\"changed\":"
		out.RawString(prefix)
		{
			out.RawByte('[')
			for v10, v11 := range in.Changed {
				if v10 > 0 {
					out.RawByte(',')
				}
				if v11 == nil && (out.Flags&jwriter.NilMapAsEmpty) == 0 {
					out.RawString(`null`)
				} else {
					out.RawByte('{')
					v12First := true
					for v12Name, v12Value := range v11 {
						if v12First {
							v12First = false
						} else {
							out.RawByte(',')
						}
						out.String(string(v12Name))
						out.RawByte(':')
						if m, ok := v12Value.(easyjson.Marshaler); ok {
							m.MarshalEasyJSON(out)
						} else if m, ok := v12Value.(json.Marshaler); ok {
							out.Raw(m.MarshalJSON())
						} else {
							out.Raw(json.Marshal(v12Value))
						}
					}
					out.RawByte('}')
				}
			}
			out.RawByte(']')
		}
	}
	if len(in.Users) != 0 {
		const prefix string = ",\"users\":"
		out.RawString(prefix)
		{
			out.RawByte('[')
			for v13, v14 := range in.Users {
				if v13 > 0 {
					out.RawByte(',')
				}
				if v14 == nil && (out.Flags&jwriter.NilMapAsEmpty) == 0 {
					out.RawString(`null`)
				} else {
					out.RawByte('{')
					v15First := true
					for v15Name, v15Value := range v14 {
						if v15First {
							v15First = false
						} else {
							out.RawByte(',')
						}
						out.String(string(v15Name))
						out.RawByte(':')
						if m, ok := v15Value.(easyjson.Marshaler); ok {
							m.MarshalEasyJSON(out)
						} else if m, ok := v15Value.(json.Marshaler); ok {
							out.Raw(m.MarshalJSON())
						} else {
							out.Raw(json.Marshal(v15Value))
						}
					}
					out.RawByte('}')
				}
			}
			out.RawByte(']')
		}
	}
	if in.All {
		const prefix string = ",\"all\":"
		out.RawString(prefix)
		out.Bool(bool(in.All))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v RoomEventServerMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling8(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v RoomEventServerMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling8(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *RoomEventServerMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling8(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *RoomEventServerMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling8(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling9(in *jlexer.Lexer, out *RoomEventMessageDataChat) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "comment":
			if in.IsNull() {
				in.Skip()
				out.Comment = nil
			} else {
				if out.Comment == nil {
					out.Comment = new(ChatComment)
				}
				if in.IsNull() {
					in.Skip()
				} else {
					in.Delim('{')
					if !in.IsDelim('}') {
						*out.Comment = make(ChatComment)
					} else {
						*out.Comment = nil
					}
					for !in.IsDelim('}') {
						key := string(in.String())
						in.WantColon()
						var v16 interface{}
						if m, ok := v16.(easyjson.Unmarshaler); ok {
							m.UnmarshalEasyJSON(in)
						} else if m, ok := v16.(json.Unmarshaler); ok {
							_ = m.UnmarshalJSON(in.Raw())
						} else {
							v16 = in.Interface()
						}
						(*out.Comment)[key] = v16
						in.WantComma()
					}
					in.Delim('}')
				}
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling9(out *jwriter.Writer, in RoomEventMessageDataChat) {
	out.RawByte('{')
	first := true
	_ = first
	if in.Comment != nil {
		const prefix string = ",\"comment\":"
		first = false
		out.RawString(prefix[1:])
		if *in.Comment == nil && (out.Flags&jwriter.NilMapAsEmpty) == 0 {
			out.RawString(`null`)
		} else {
			out.RawByte('{')
			v17First := true
			for v17Name, v17Value := range *in.Comment {
				if v17First {
					v17First = false
				} else {
					out.RawByte(',')
				}
				out.String(string(v17Name))
				out.RawByte(':')
				if m, ok := v17Value.(easyjson.Marshaler); ok {
					m.MarshalEasyJSON(out)
				} else if m, ok := v17Value.(json.Marshaler); ok {
					out.Raw(m.MarshalJSON())
				} else {
					out.Raw(json.Marshal(v17Value))
				}
			}
			out.RawByte('}')
		}
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v RoomEventMessageDataChat) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling9(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v RoomEventMessageDataChat) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling9(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *RoomEventMessageDataChat) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling9(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *RoomEventMessageDataChat) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling9(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling10(in *jlexer.Lexer, out *RoomEventMessageData) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "type":
			out.Type = string(in.String())
		case "chat":
			if in.IsNull() {
				in.Skip()
				out.Chat = nil
			} else {
				if out.Chat == nil {
					out.Chat = new(RoomEventMessageDataChat)
				}
				(*out.Chat).UnmarshalEasyJSON(in)
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling10(out *jwriter.Writer, in RoomEventMessageData) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"type\":"
		out.RawString(prefix[1:])
		out.String(string(in.Type))
	}
	if in.Chat != nil {
		const prefix string = ",\"chat\":"
		out.RawString(prefix)
		(*in.Chat).MarshalEasyJSON(out)
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v RoomEventMessageData) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling10(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v RoomEventMessageData) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling10(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *RoomEventMessageData) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling10(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *RoomEventMessageData) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling10(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling11(in *jlexer.Lexer, out *RoomEventMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "roomid":
			out.RoomId = string(in.String())
		case "data":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.Data).UnmarshalJSON(data))
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling11(out *jwriter.Writer, in RoomEventMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"roomid\":"
		out.RawString(prefix[1:])
		out.String(string(in.RoomId))
	}
	if len(in.Data) != 0 {
		const prefix string = ",\"data\":"
		out.RawString(prefix)
		out.Raw((in.Data).MarshalJSON())
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v RoomEventMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling11(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v RoomEventMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling11(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *RoomEventMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling11(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *RoomEventMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling11(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling12(in *jlexer.Lexer, out *RoomErrorDetails) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "room":
			if in.IsNull() {
				in.Skip()
				out.Room = nil
			} else {
				if out.Room == nil {
					out.Room = new(RoomServerMessage)
				}
				(*out.Room).UnmarshalEasyJSON(in)
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling12(out *jwriter.Writer, in RoomErrorDetails) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"room\":"
		out.RawString(prefix[1:])
		if in.Room == nil {
			out.RawString("null")
		} else {
			(*in.Room).MarshalEasyJSON(out)
		}
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v RoomErrorDetails) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling12(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v RoomErrorDetails) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling12(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *RoomErrorDetails) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling12(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *RoomErrorDetails) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling12(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling13(in *jlexer.Lexer, out *RoomDisinviteEventServerMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "reason":
			out.Reason = string(in.String())
		case "roomid":
			out.RoomId = string(in.String())
		case "properties":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.Properties).UnmarshalJSON(data))
			}
		case "incall":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.InCall).UnmarshalJSON(data))
			}
		case "changed":
			if in.IsNull() {
				in.Skip()
				out.Changed = nil
			} else {
				in.Delim('[')
				if out.Changed == nil {
					if !in.IsDelim(']') {
						out.Changed = make([]map[string]interface{}, 0, 8)
					} else {
						out.Changed = []map[string]interface{}{}
					}
				} else {
					out.Changed = (out.Changed)[:0]
				}
				for !in.IsDelim(']') {
					var v18 map[string]interface{}
					if in.IsNull() {
						in.Skip()
					} else {
						in.Delim('{')
						if !in.IsDelim('}') {
							v18 = make(map[string]interface{})
						} else {
							v18 = nil
						}
						for !in.IsDelim('}') {
							key := string(in.String())
							in.WantColon()
							var v19 interface{}
							if m, ok := v19.(easyjson.Unmarshaler); ok {
								m.UnmarshalEasyJSON(in)
							} else if m, ok := v19.(json.Unmarshaler); ok {
								_ = m.UnmarshalJSON(in.Raw())
							} else {
								v19 = in.Interface()
							}
							(v18)[key] = v19
							in.WantComma()
						}
						in.Delim('}')
					}
					out.Changed = append(out.Changed, v18)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "users":
			if in.IsNull() {
				in.Skip()
				out.Users = nil
			} else {
				in.Delim('[')
				if out.Users == nil {
					if !in.IsDelim(']') {
						out.Users = make([]map[string]interface{}, 0, 8)
					} else {
						out.Users = []map[string]interface{}{}
					}
				} else {
					out.Users = (out.Users)[:0]
				}
				for !in.IsDelim(']') {
					var v20 map[string]interface{}
					if in.IsNull() {
						in.Skip()
					} else {
						in.Delim('{')
						if !in.IsDelim('}') {
							v20 = make(map[string]interface{})
						} else {
							v20 = nil
						}
						for !in.IsDelim('}') {
							key := string(in.String())
							in.WantColon()
							var v21 interface{}
							if m, ok := v21.(easyjson.Unmarshaler); ok {
								m.UnmarshalEasyJSON(in)
							} else if m, ok := v21.(json.Unmarshaler); ok {
								_ = m.UnmarshalJSON(in.Raw())
							} else {
								v21 = in.Interface()
							}
							(v20)[key] = v21
							in.WantComma()
						}
						in.Delim('}')
					}
					out.Users = append(out.Users, v20)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "all":
			out.All = bool(in.Bool())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling13(out *jwriter.Writer, in RoomDisinviteEventServerMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"reason\":"
		out.RawString(prefix[1:])
		out.String(string(in.Reason))
	}
	{
		const prefix string = ",\"roomid\":"
		out.RawString(prefix)
		out.String(string(in.RoomId))
	}
	if len(in.Properties) != 0 {
		const prefix string = ",\"properties\":"
		out.RawString(prefix)
		out.Raw((in.Properties).MarshalJSON())
	}
	if len(in.InCall) != 0 {
		const prefix string = ",\"incall\":"
		out.RawString(prefix)
		out.Raw((in.InCall).MarshalJSON())
	}
	if len(in.Changed) != 0 {
		const prefix string = ",\"changed\":"
		out.RawString(prefix)
		{
			out.RawByte('[')
			for v22, v23 := range in.Changed {
				if v22 > 0 {
					out.RawByte(',')
				}
				if v23 == nil && (out.Flags&jwriter.NilMapAsEmpty) == 0 {
					out.RawString(`null`)
				} else {
					out.RawByte('{')
					v24First := true
					for v24Name, v24Value := range v23 {
						if v24First {
							v24First = false
						} else {
							out.RawByte(',')
						}
						out.String(string(v24Name))
						out.RawByte(':')
						if m, ok := v24Value.(easyjson.Marshaler); ok {
							m.MarshalEasyJSON(out)
						} else if m, ok := v24Value.(json.Marshaler); ok {
							out.Raw(m.MarshalJSON())
						} else {
							out.Raw(json.Marshal(v24Value))
						}
					}
					out.RawByte('}')
				}
			}
			out.RawByte(']')
		}
	}
	if len(in.Users) != 0 {
		const prefix string = ",\"users\":"
		out.RawString(prefix)
		{
			out.RawByte('[')
			for v25, v26 := range in.Users {
				if v25 > 0 {
					out.RawByte(',')
				}
				if v26 == nil && (out.Flags&jwriter.NilMapAsEmpty) == 0 {
					out.RawString(`null`)
				} else {
					out.RawByte('{')
					v27First := true
					for v27Name, v27Value := range v26 {
						if v27First {
							v27First = false
						} else {
							out.RawByte(',')
						}
						out.String(string(v27Name))
						out.RawByte(':')
						if m, ok := v27Value.(easyjson.Marshaler); ok {
							m.MarshalEasyJSON(out)
						} else if m, ok := v27Value.(json.Marshaler); ok {
							out.Raw(m.MarshalJSON())
						} else {
							out.Raw(json.Marshal(v27Value))
						}
					}
					out.RawByte('}')
				}
			}
			out.RawByte(']')
		}
	}
	if in.All {
		const prefix string = ",\"all\":"
		out.RawString(prefix)
		out.Bool(bool(in.All))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v RoomDisinviteEventServerMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling13(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v RoomDisinviteEventServerMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling13(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *RoomDisinviteEventServerMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling13(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *RoomDisinviteEventServerMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling13(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling14(in *jlexer.Lexer, out *RoomClientMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "roomid":
			out.RoomId = string(in.String())
		case "sessionid":
			out.SessionId = string(in.String())
		case "federation":
			if in.IsNull() {
				in.Skip()
				out.Federation = nil
			} else {
				if out.Federation == nil {
					out.Federation = new(RoomFederationMessage)
				}
				(*out.Federation).UnmarshalEasyJSON(in)
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling14(out *jwriter.Writer, in RoomClientMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"roomid\":"
		out.RawString(prefix[1:])
		out.String(string(in.RoomId))
	}
	if in.SessionId != "" {
		const prefix string = ",\"sessionid\":"
		out.RawString(prefix)
		out.String(string(in.SessionId))
	}
	if in.Federation != nil {
		const prefix string = ",\"federation\":"
		out.RawString(prefix)
		(*in.Federation).MarshalEasyJSON(out)
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v RoomClientMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling14(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v RoomClientMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling14(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *RoomClientMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling14(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *RoomClientMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling14(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling15(in *jlexer.Lexer, out *RemoveSessionInternalClientMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "userid":
			out.UserId = string(in.String())
		case "sessionid":
			out.SessionId = string(in.String())
		case "roomid":
			out.RoomId = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling15(out *jwriter.Writer, in RemoveSessionInternalClientMessage) {
	out.RawByte('{')
	first := true
	_ = first
	if in.UserId != "" {
		const prefix string = ",\"userid\":"
		first = false
		out.RawString(prefix[1:])
		out.String(string(in.UserId))
	}
	{
		const prefix string = ",\"sessionid\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.String(string(in.SessionId))
	}
	{
		const prefix string = ",\"roomid\":"
		out.RawString(prefix)
		out.String(string(in.RoomId))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v RemoveSessionInternalClientMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling15(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v RemoveSessionInternalClientMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling15(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *RemoveSessionInternalClientMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling15(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *RemoveSessionInternalClientMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling15(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling16(in *jlexer.Lexer, out *MessageServerMessageSender) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "type":
			out.Type = string(in.String())
		case "sessionid":
			out.SessionId = string(in.String())
		case "userid":
			out.UserId = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling16(out *jwriter.Writer, in MessageServerMessageSender) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"type\":"
		out.RawString(prefix[1:])
		out.String(string(in.Type))
	}
	if in.SessionId != "" {
		const prefix string = ",\"sessionid\":"
		out.RawString(prefix)
		out.String(string(in.SessionId))
	}
	if in.UserId != "" {
		const prefix string = ",\"userid\":"
		out.RawString(prefix)
		out.String(string(in.UserId))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v MessageServerMessageSender) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling16(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v MessageServerMessageSender) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling16(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *MessageServerMessageSender) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling16(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *MessageServerMessageSender) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling16(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling17(in *jlexer.Lexer, out *MessageServerMessageDataChat) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "refresh":
			out.Refresh = bool(in.Bool())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling17(out *jwriter.Writer, in MessageServerMessageDataChat) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"refresh\":"
		out.RawString(prefix[1:])
		out.Bool(bool(in.Refresh))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v MessageServerMessageDataChat) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling17(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v MessageServerMessageDataChat) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling17(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *MessageServerMessageDataChat) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling17(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *MessageServerMessageDataChat) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling17(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling18(in *jlexer.Lexer, out *MessageServerMessageData) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "type":
			out.Type = string(in.String())
		case "chat":
			if in.IsNull() {
				in.Skip()
				out.Chat = nil
			} else {
				if out.Chat == nil {
					out.Chat = new(MessageServerMessageDataChat)
				}
				(*out.Chat).UnmarshalEasyJSON(in)
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling18(out *jwriter.Writer, in MessageServerMessageData) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"type\":"
		out.RawString(prefix[1:])
		out.String(string(in.Type))
	}
	if in.Chat != nil {
		const prefix string = ",\"chat\":"
		out.RawString(prefix)
		(*in.Chat).MarshalEasyJSON(out)
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v MessageServerMessageData) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling18(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v MessageServerMessageData) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling18(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *MessageServerMessageData) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling18(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *MessageServerMessageData) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling18(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling19(in *jlexer.Lexer, out *MessageServerMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "sender":
			if in.IsNull() {
				in.Skip()
				out.Sender = nil
			} else {
				if out.Sender == nil {
					out.Sender = new(MessageServerMessageSender)
				}
				(*out.Sender).UnmarshalEasyJSON(in)
			}
		case "recipient":
			if in.IsNull() {
				in.Skip()
				out.Recipient = nil
			} else {
				if out.Recipient == nil {
					out.Recipient = new(MessageClientMessageRecipient)
				}
				(*out.Recipient).UnmarshalEasyJSON(in)
			}
		case "data":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.Data).UnmarshalJSON(data))
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling19(out *jwriter.Writer, in MessageServerMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"sender\":"
		out.RawString(prefix[1:])
		if in.Sender == nil {
			out.RawString("null")
		} else {
			(*in.Sender).MarshalEasyJSON(out)
		}
	}
	if in.Recipient != nil {
		const prefix string = ",\"recipient\":"
		out.RawString(prefix)
		(*in.Recipient).MarshalEasyJSON(out)
	}
	{
		const prefix string = ",\"data\":"
		out.RawString(prefix)
		out.Raw((in.Data).MarshalJSON())
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v MessageServerMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling19(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v MessageServerMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling19(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *MessageServerMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling19(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *MessageServerMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling19(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling20(in *jlexer.Lexer, out *MessageClientMessageRecipient) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "type":
			out.Type = string(in.String())
		case "sessionid":
			out.SessionId = string(in.String())
		case "userid":
			out.UserId = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling20(out *jwriter.Writer, in MessageClientMessageRecipient) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"type\":"
		out.RawString(prefix[1:])
		out.String(string(in.Type))
	}
	if in.SessionId != "" {
		const prefix string = ",\"sessionid\":"
		out.RawString(prefix)
		out.String(string(in.SessionId))
	}
	if in.UserId != "" {
		const prefix string = ",\"userid\":"
		out.RawString(prefix)
		out.String(string(in.UserId))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v MessageClientMessageRecipient) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling20(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v MessageClientMessageRecipient) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling20(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *MessageClientMessageRecipient) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling20(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *MessageClientMessageRecipient) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling20(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling21(in *jlexer.Lexer, out *MessageClientMessageData) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "type":
			out.Type = string(in.String())
		case "sid":
			out.Sid = string(in.String())
		case "roomType":
			out.RoomType = string(in.String())
		case "payload":
			if in.IsNull() {
				in.Skip()
			} else {
				in.Delim('{')
				out.Payload = make(map[string]interface{})
				for !in.IsDelim('}') {
					key := string(in.String())
					in.WantColon()
					var v28 interface{}
					if m, ok := v28.(easyjson.Unmarshaler); ok {
						m.UnmarshalEasyJSON(in)
					} else if m, ok := v28.(json.Unmarshaler); ok {
						_ = m.UnmarshalJSON(in.Raw())
					} else {
						v28 = in.Interface()
					}
					(out.Payload)[key] = v28
					in.WantComma()
				}
				in.Delim('}')
			}
		case "bitrate":
			out.Bitrate = int(in.Int())
		case "audiocodec":
			out.AudioCodec = string(in.String())
		case "videocodec":
			out.VideoCodec = string(in.String())
		case "vp9profile":
			out.VP9Profile = string(in.String())
		case "h264profile":
			out.H264Profile = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling21(out *jwriter.Writer, in MessageClientMessageData) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"type\":"
		out.RawString(prefix[1:])
		out.String(string(in.Type))
	}
	{
		const prefix string = ",\"sid\":"
		out.RawString(prefix)
		out.String(string(in.Sid))
	}
	{
		const prefix string = ",\"roomType\":"
		out.RawString(prefix)
		out.String(string(in.RoomType))
	}
	{
		const prefix string = ",\"payload\":"
		out.RawString(prefix)
		if in.Payload == nil && (out.Flags&jwriter.NilMapAsEmpty) == 0 {
			out.RawString(`null`)
		} else {
			out.RawByte('{')
			v29First := true
			for v29Name, v29Value := range in.Payload {
				if v29First {
					v29First = false
				} else {
					out.RawByte(',')
				}
				out.String(string(v29Name))
				out.RawByte(':')
				if m, ok := v29Value.(easyjson.Marshaler); ok {
					m.MarshalEasyJSON(out)
				} else if m, ok := v29Value.(json.Marshaler); ok {
					out.Raw(m.MarshalJSON())
				} else {
					out.Raw(json.Marshal(v29Value))
				}
			}
			out.RawByte('}')
		}
	}
	if in.Bitrate != 0 {
		const prefix string = ",\"bitrate\":"
		out.RawString(prefix)
		out.Int(int(in.Bitrate))
	}
	if in.AudioCodec != "" {
		const prefix string = ",\"audiocodec\":"
		out.RawString(prefix)
		out.String(string(in.AudioCodec))
	}
	if in.VideoCodec != "" {
		const prefix string = ",\"videocodec\":"
		out.RawString(prefix)
		out.String(string(in.VideoCodec))
	}
	if in.VP9Profile != "" {
		const prefix string = ",\"vp9profile\":"
		out.RawString(prefix)
		out.String(string(in.VP9Profile))
	}
	if in.H264Profile != "" {
		const prefix string = ",\"h264profile\":"
		out.RawString(prefix)
		out.String(string(in.H264Profile))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v MessageClientMessageData) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling21(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v MessageClientMessageData) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling21(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *MessageClientMessageData) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling21(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *MessageClientMessageData) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling21(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling22(in *jlexer.Lexer, out *MessageClientMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "recipient":
			(out.Recipient).UnmarshalEasyJSON(in)
		case "data":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.Data).UnmarshalJSON(data))
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling22(out *jwriter.Writer, in MessageClientMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"recipient\":"
		out.RawString(prefix[1:])
		(in.Recipient).MarshalEasyJSON(out)
	}
	{
		const prefix string = ",\"data\":"
		out.RawString(prefix)
		out.Raw((in.Data).MarshalJSON())
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v MessageClientMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling22(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v MessageClientMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling22(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *MessageClientMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling22(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *MessageClientMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling22(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling23(in *jlexer.Lexer, out *InternalServerMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "type":
			out.Type = string(in.String())
		case "dialout":
			if in.IsNull() {
				in.Skip()
				out.Dialout = nil
			} else {
				if out.Dialout == nil {
					out.Dialout = new(InternalServerDialoutRequest)
				}
				(*out.Dialout).UnmarshalEasyJSON(in)
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling23(out *jwriter.Writer, in InternalServerMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"type\":"
		out.RawString(prefix[1:])
		out.String(string(in.Type))
	}
	if in.Dialout != nil {
		const prefix string = ",\"dialout\":"
		out.RawString(prefix)
		(*in.Dialout).MarshalEasyJSON(out)
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v InternalServerMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling23(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v InternalServerMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling23(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *InternalServerMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling23(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *InternalServerMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling23(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling24(in *jlexer.Lexer, out *InternalServerDialoutRequest) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "roomid":
			out.RoomId = string(in.String())
		case "backend":
			out.Backend = string(in.String())
		case "request":
			if in.IsNull() {
				in.Skip()
				out.Request = nil
			} else {
				if out.Request == nil {
					out.Request = new(BackendRoomDialoutRequest)
				}
				(*out.Request).UnmarshalEasyJSON(in)
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling24(out *jwriter.Writer, in InternalServerDialoutRequest) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"roomid\":"
		out.RawString(prefix[1:])
		out.String(string(in.RoomId))
	}
	{
		const prefix string = ",\"backend\":"
		out.RawString(prefix)
		out.String(string(in.Backend))
	}
	{
		const prefix string = ",\"request\":"
		out.RawString(prefix)
		if in.Request == nil {
			out.RawString("null")
		} else {
			(*in.Request).MarshalEasyJSON(out)
		}
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v InternalServerDialoutRequest) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling24(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v InternalServerDialoutRequest) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling24(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *InternalServerDialoutRequest) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling24(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *InternalServerDialoutRequest) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling24(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling25(in *jlexer.Lexer, out *InternalClientMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "type":
			out.Type = string(in.String())
		case "addsession":
			if in.IsNull() {
				in.Skip()
				out.AddSession = nil
			} else {
				if out.AddSession == nil {
					out.AddSession = new(AddSessionInternalClientMessage)
				}
				(*out.AddSession).UnmarshalEasyJSON(in)
			}
		case "updatesession":
			if in.IsNull() {
				in.Skip()
				out.UpdateSession = nil
			} else {
				if out.UpdateSession == nil {
					out.UpdateSession = new(UpdateSessionInternalClientMessage)
				}
				(*out.UpdateSession).UnmarshalEasyJSON(in)
			}
		case "removesession":
			if in.IsNull() {
				in.Skip()
				out.RemoveSession = nil
			} else {
				if out.RemoveSession == nil {
					out.RemoveSession = new(RemoveSessionInternalClientMessage)
				}
				(*out.RemoveSession).UnmarshalEasyJSON(in)
			}
		case "incall":
			if in.IsNull() {
				in.Skip()
				out.InCall = nil
			} else {
				if out.InCall == nil {
					out.InCall = new(InCallInternalClientMessage)
				}
				(*out.InCall).UnmarshalEasyJSON(in)
			}
		case "dialout":
			if in.IsNull() {
				in.Skip()
				out.Dialout = nil
			} else {
				if out.Dialout == nil {
					out.Dialout = new(DialoutInternalClientMessage)
				}
				(*out.Dialout).UnmarshalEasyJSON(in)
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling25(out *jwriter.Writer, in InternalClientMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"type\":"
		out.RawString(prefix[1:])
		out.String(string(in.Type))
	}
	if in.AddSession != nil {
		const prefix string = ",\"addsession\":"
		out.RawString(prefix)
		(*in.AddSession).MarshalEasyJSON(out)
	}
	if in.UpdateSession != nil {
		const prefix string = ",\"updatesession\":"
		out.RawString(prefix)
		(*in.UpdateSession).MarshalEasyJSON(out)
	}
	if in.RemoveSession != nil {
		const prefix string = ",\"removesession\":"
		out.RawString(prefix)
		(*in.RemoveSession).MarshalEasyJSON(out)
	}
	if in.InCall != nil {
		const prefix string = ",\"incall\":"
		out.RawString(prefix)
		(*in.InCall).MarshalEasyJSON(out)
	}
	if in.Dialout != nil {
		const prefix string = ",\"dialout\":"
		out.RawString(prefix)
		(*in.Dialout).MarshalEasyJSON(out)
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v InternalClientMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling25(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v InternalClientMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling25(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *InternalClientMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling25(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *InternalClientMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling25(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling26(in *jlexer.Lexer, out *InCallInternalClientMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "incall":
			out.InCall = int(in.Int())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling26(out *jwriter.Writer, in InCallInternalClientMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"incall\":"
		out.RawString(prefix[1:])
		out.Int(int(in.InCall))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v InCallInternalClientMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling26(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v InCallInternalClientMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling26(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *InCallInternalClientMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling26(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *InCallInternalClientMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling26(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling27(in *jlexer.Lexer, out *HelloV2TokenClaims) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "userdata":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.UserData).UnmarshalJSON(data))
			}
		case "iss":
			out.Issuer = string(in.String())
		case "sub":
			out.Subject = string(in.String())
		case "aud":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.Audience).UnmarshalJSON(data))
			}
		case "exp":
			if in.IsNull() {
				in.Skip()
				out.ExpiresAt = nil
			} else {
				if out.ExpiresAt == nil {
					out.ExpiresAt = new(_v5.NumericDate)
				}
				if data := in.Raw(); in.Ok() {
					in.AddError((*out.ExpiresAt).UnmarshalJSON(data))
				}
			}
		case "nbf":
			if in.IsNull() {
				in.Skip()
				out.NotBefore = nil
			} else {
				if out.NotBefore == nil {
					out.NotBefore = new(_v5.NumericDate)
				}
				if data := in.Raw(); in.Ok() {
					in.AddError((*out.NotBefore).UnmarshalJSON(data))
				}
			}
		case "iat":
			if in.IsNull() {
				in.Skip()
				out.IssuedAt = nil
			} else {
				if out.IssuedAt == nil {
					out.IssuedAt = new(_v5.NumericDate)
				}
				if data := in.Raw(); in.Ok() {
					in.AddError((*out.IssuedAt).UnmarshalJSON(data))
				}
			}
		case "jti":
			out.ID = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling27(out *jwriter.Writer, in HelloV2TokenClaims) {
	out.RawByte('{')
	first := true
	_ = first
	if len(in.UserData) != 0 {
		const prefix string = ",\"userdata\":"
		first = false
		out.RawString(prefix[1:])
		out.Raw((in.UserData).MarshalJSON())
	}
	if in.Issuer != "" {
		const prefix string = ",\"iss\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.String(string(in.Issuer))
	}
	if in.Subject != "" {
		const prefix string = ",\"sub\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.String(string(in.Subject))
	}
	if len(in.Audience) != 0 {
		const prefix string = ",\"aud\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.Raw((in.Audience).MarshalJSON())
	}
	if in.ExpiresAt != nil {
		const prefix string = ",\"exp\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.Raw((*in.ExpiresAt).MarshalJSON())
	}
	if in.NotBefore != nil {
		const prefix string = ",\"nbf\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.Raw((*in.NotBefore).MarshalJSON())
	}
	if in.IssuedAt != nil {
		const prefix string = ",\"iat\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.Raw((*in.IssuedAt).MarshalJSON())
	}
	if in.ID != "" {
		const prefix string = ",\"jti\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.String(string(in.ID))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v HelloV2TokenClaims) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling27(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v HelloV2TokenClaims) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling27(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *HelloV2TokenClaims) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling27(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *HelloV2TokenClaims) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling27(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling28(in *jlexer.Lexer, out *HelloV2AuthParams) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "token":
			out.Token = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling28(out *jwriter.Writer, in HelloV2AuthParams) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"token\":"
		out.RawString(prefix[1:])
		out.String(string(in.Token))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v HelloV2AuthParams) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling28(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v HelloV2AuthParams) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling28(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *HelloV2AuthParams) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling28(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *HelloV2AuthParams) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling28(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling29(in *jlexer.Lexer, out *HelloServerMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "version":
			out.Version = string(in.String())
		case "sessionid":
			out.SessionId = string(in.String())
		case "resumeid":
			out.ResumeId = string(in.String())
		case "userid":
			out.UserId = string(in.String())
		case "server":
			if in.IsNull() {
				in.Skip()
				out.Server = nil
			} else {
				if out.Server == nil {
					out.Server = new(WelcomeServerMessage)
				}
				(*out.Server).UnmarshalEasyJSON(in)
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling29(out *jwriter.Writer, in HelloServerMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"version\":"
		out.RawString(prefix[1:])
		out.String(string(in.Version))
	}
	{
		const prefix string = ",\"sessionid\":"
		out.RawString(prefix)
		out.String(string(in.SessionId))
	}
	{
		const prefix string = ",\"resumeid\":"
		out.RawString(prefix)
		out.String(string(in.ResumeId))
	}
	{
		const prefix string = ",\"userid\":"
		out.RawString(prefix)
		out.String(string(in.UserId))
	}
	if in.Server != nil {
		const prefix string = ",\"server\":"
		out.RawString(prefix)
		(*in.Server).MarshalEasyJSON(out)
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v HelloServerMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling29(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v HelloServerMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling29(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *HelloServerMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling29(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *HelloServerMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling29(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling30(in *jlexer.Lexer, out *HelloClientMessageAuth) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "type":
			out.Type = string(in.String())
		case "params":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.Params).UnmarshalJSON(data))
			}
		case "url":
			out.Url = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling30(out *jwriter.Writer, in HelloClientMessageAuth) {
	out.RawByte('{')
	first := true
	_ = first
	if in.Type != "" {
		const prefix string = ",\"type\":"
		first = false
		out.RawString(prefix[1:])
		out.String(string(in.Type))
	}
	{
		const prefix string = ",\"params\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.Raw((in.Params).MarshalJSON())
	}
	{
		const prefix string = ",\"url\":"
		out.RawString(prefix)
		out.String(string(in.Url))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v HelloClientMessageAuth) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling30(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v HelloClientMessageAuth) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling30(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *HelloClientMessageAuth) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling30(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *HelloClientMessageAuth) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling30(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling31(in *jlexer.Lexer, out *HelloClientMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "version":
			out.Version = string(in.String())
		case "resumeid":
			out.ResumeId = string(in.String())
		case "features":
			if in.IsNull() {
				in.Skip()
				out.Features = nil
			} else {
				in.Delim('[')
				if out.Features == nil {
					if !in.IsDelim(']') {
						out.Features = make([]string, 0, 4)
					} else {
						out.Features = []string{}
					}
				} else {
					out.Features = (out.Features)[:0]
				}
				for !in.IsDelim(']') {
					var v30 string
					v30 = string(in.String())
					out.Features = append(out.Features, v30)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "auth":
			if in.IsNull() {
				in.Skip()
				out.Auth = nil
			} else {
				if out.Auth == nil {
					out.Auth = new(HelloClientMessageAuth)
				}
				(*out.Auth).UnmarshalEasyJSON(in)
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling31(out *jwriter.Writer, in HelloClientMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"version\":"
		out.RawString(prefix[1:])
		out.String(string(in.Version))
	}
	{
		const prefix string = ",\"resumeid\":"
		out.RawString(prefix)
		out.String(string(in.ResumeId))
	}
	if len(in.Features) != 0 {
		const prefix string = ",\"features\":"
		out.RawString(prefix)
		{
			out.RawByte('[')
			for v31, v32 := range in.Features {
				if v31 > 0 {
					out.RawByte(',')
				}
				out.String(string(v32))
			}
			out.RawByte(']')
		}
	}
	if in.Auth != nil {
		const prefix string = ",\"auth\":"
		out.RawString(prefix)
		(*in.Auth).MarshalEasyJSON(out)
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v HelloClientMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling31(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v HelloClientMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling31(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *HelloClientMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling31(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *HelloClientMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling31(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling32(in *jlexer.Lexer, out *FederationTokenClaims) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "userdata":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.UserData).UnmarshalJSON(data))
			}
		case "iss":
			out.Issuer = string(in.String())
		case "sub":
			out.Subject = string(in.String())
		case "aud":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.Audience).UnmarshalJSON(data))
			}
		case "exp":
			if in.IsNull() {
				in.Skip()
				out.ExpiresAt = nil
			} else {
				if out.ExpiresAt == nil {
					out.ExpiresAt = new(_v5.NumericDate)
				}
				if data := in.Raw(); in.Ok() {
					in.AddError((*out.ExpiresAt).UnmarshalJSON(data))
				}
			}
		case "nbf":
			if in.IsNull() {
				in.Skip()
				out.NotBefore = nil
			} else {
				if out.NotBefore == nil {
					out.NotBefore = new(_v5.NumericDate)
				}
				if data := in.Raw(); in.Ok() {
					in.AddError((*out.NotBefore).UnmarshalJSON(data))
				}
			}
		case "iat":
			if in.IsNull() {
				in.Skip()
				out.IssuedAt = nil
			} else {
				if out.IssuedAt == nil {
					out.IssuedAt = new(_v5.NumericDate)
				}
				if data := in.Raw(); in.Ok() {
					in.AddError((*out.IssuedAt).UnmarshalJSON(data))
				}
			}
		case "jti":
			out.ID = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling32(out *jwriter.Writer, in FederationTokenClaims) {
	out.RawByte('{')
	first := true
	_ = first
	if len(in.UserData) != 0 {
		const prefix string = ",\"userdata\":"
		first = false
		out.RawString(prefix[1:])
		out.Raw((in.UserData).MarshalJSON())
	}
	if in.Issuer != "" {
		const prefix string = ",\"iss\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.String(string(in.Issuer))
	}
	if in.Subject != "" {
		const prefix string = ",\"sub\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.String(string(in.Subject))
	}
	if len(in.Audience) != 0 {
		const prefix string = ",\"aud\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.Raw((in.Audience).MarshalJSON())
	}
	if in.ExpiresAt != nil {
		const prefix string = ",\"exp\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.Raw((*in.ExpiresAt).MarshalJSON())
	}
	if in.NotBefore != nil {
		const prefix string = ",\"nbf\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.Raw((*in.NotBefore).MarshalJSON())
	}
	if in.IssuedAt != nil {
		const prefix string = ",\"iat\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.Raw((*in.IssuedAt).MarshalJSON())
	}
	if in.ID != "" {
		const prefix string = ",\"jti\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.String(string(in.ID))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v FederationTokenClaims) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling32(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v FederationTokenClaims) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling32(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *FederationTokenClaims) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling32(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *FederationTokenClaims) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling32(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling33(in *jlexer.Lexer, out *FederationAuthParams) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "token":
			out.Token = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling33(out *jwriter.Writer, in FederationAuthParams) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"token\":"
		out.RawString(prefix[1:])
		out.String(string(in.Token))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v FederationAuthParams) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling33(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v FederationAuthParams) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling33(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *FederationAuthParams) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling33(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *FederationAuthParams) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling33(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling34(in *jlexer.Lexer, out *EventServerMessageSwitchTo) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "roomid":
			out.RoomId = string(in.String())
		case "details":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.Details).UnmarshalJSON(data))
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling34(out *jwriter.Writer, in EventServerMessageSwitchTo) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"roomid\":"
		out.RawString(prefix[1:])
		out.String(string(in.RoomId))
	}
	if len(in.Details) != 0 {
		const prefix string = ",\"details\":"
		out.RawString(prefix)
		out.Raw((in.Details).MarshalJSON())
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v EventServerMessageSwitchTo) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling34(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v EventServerMessageSwitchTo) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling34(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *EventServerMessageSwitchTo) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling34(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *EventServerMessageSwitchTo) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling34(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling35(in *jlexer.Lexer, out *EventServerMessageSessionEntry) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "sessionid":
			out.SessionId = string(in.String())
		case "userid":
			out.UserId = string(in.String())
		case "features":
			if in.IsNull() {
				in.Skip()
				out.Features = nil
			} else {
				in.Delim('[')
				if out.Features == nil {
					if !in.IsDelim(']') {
						out.Features = make([]string, 0, 4)
					} else {
						out.Features = []string{}
					}
				} else {
					out.Features = (out.Features)[:0]
				}
				for !in.IsDelim(']') {
					var v33 string
					v33 = string(in.String())
					out.Features = append(out.Features, v33)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "user":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.User).UnmarshalJSON(data))
			}
		case "roomsessionid":
			out.RoomSessionId = string(in.String())
		case "federated":
			out.Federated = bool(in.Bool())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling35(out *jwriter.Writer, in EventServerMessageSessionEntry) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"sessionid\":"
		out.RawString(prefix[1:])
		out.String(string(in.SessionId))
	}
	{
		const prefix string = ",\"userid\":"
		out.RawString(prefix)
		out.String(string(in.UserId))
	}
	if len(in.Features) != 0 {
		const prefix string = ",\"features\":"
		out.RawString(prefix)
		{
			out.RawByte('[')
			for v34, v35 := range in.Features {
				if v34 > 0 {
					out.RawByte(',')
				}
				out.String(string(v35))
			}
			out.RawByte(']')
		}
	}
	if len(in.User) != 0 {
		const prefix string = ",\"user\":"
		out.RawString(prefix)
		out.Raw((in.User).MarshalJSON())
	}
	if in.RoomSessionId != "" {
		const prefix string = ",\"roomsessionid\":"
		out.RawString(prefix)
		out.String(string(in.RoomSessionId))
	}
	if in.Federated {
		const prefix string = ",\"federated\":"
		out.RawString(prefix)
		out.Bool(bool(in.Federated))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v EventServerMessageSessionEntry) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling35(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v EventServerMessageSessionEntry) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling35(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *EventServerMessageSessionEntry) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling35(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *EventServerMessageSessionEntry) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling35(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling36(in *jlexer.Lexer, out *EventServerMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "target":
			out.Target = string(in.String())
		case "type":
			out.Type = string(in.String())
		case "join":
			if in.IsNull() {
				in.Skip()
				out.Join = nil
			} else {
				in.Delim('[')
				if out.Join == nil {
					if !in.IsDelim(']') {
						out.Join = make([]*EventServerMessageSessionEntry, 0, 8)
					} else {
						out.Join = []*EventServerMessageSessionEntry{}
					}
				} else {
					out.Join = (out.Join)[:0]
				}
				for !in.IsDelim(']') {
					var v36 *EventServerMessageSessionEntry
					if in.IsNull() {
						in.Skip()
						v36 = nil
					} else {
						if v36 == nil {
							v36 = new(EventServerMessageSessionEntry)
						}
						(*v36).UnmarshalEasyJSON(in)
					}
					out.Join = append(out.Join, v36)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "leave":
			if in.IsNull() {
				in.Skip()
				out.Leave = nil
			} else {
				in.Delim('[')
				if out.Leave == nil {
					if !in.IsDelim(']') {
						out.Leave = make([]string, 0, 4)
					} else {
						out.Leave = []string{}
					}
				} else {
					out.Leave = (out.Leave)[:0]
				}
				for !in.IsDelim(']') {
					var v37 string
					v37 = string(in.String())
					out.Leave = append(out.Leave, v37)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "change":
			if in.IsNull() {
				in.Skip()
				out.Change = nil
			} else {
				in.Delim('[')
				if out.Change == nil {
					if !in.IsDelim(']') {
						out.Change = make([]*EventServerMessageSessionEntry, 0, 8)
					} else {
						out.Change = []*EventServerMessageSessionEntry{}
					}
				} else {
					out.Change = (out.Change)[:0]
				}
				for !in.IsDelim(']') {
					var v38 *EventServerMessageSessionEntry
					if in.IsNull() {
						in.Skip()
						v38 = nil
					} else {
						if v38 == nil {
							v38 = new(EventServerMessageSessionEntry)
						}
						(*v38).UnmarshalEasyJSON(in)
					}
					out.Change = append(out.Change, v38)
					in.WantComma()
				}
				in.Delim(']')
			}
		case "switchto":
			if in.IsNull() {
				in.Skip()
				out.SwitchTo = nil
			} else {
				if out.SwitchTo == nil {
					out.SwitchTo = new(EventServerMessageSwitchTo)
				}
				(*out.SwitchTo).UnmarshalEasyJSON(in)
			}
		case "resumed":
			if in.IsNull() {
				in.Skip()
				out.Resumed = nil
			} else {
				if out.Resumed == nil {
					out.Resumed = new(bool)
				}
				*out.Resumed = bool(in.Bool())
			}
		case "invite":
			if in.IsNull() {
				in.Skip()
				out.Invite = nil
			} else {
				if out.Invite == nil {
					out.Invite = new(RoomEventServerMessage)
				}
				(*out.Invite).UnmarshalEasyJSON(in)
			}
		case "disinvite":
			if in.IsNull() {
				in.Skip()
				out.Disinvite = nil
			} else {
				if out.Disinvite == nil {
					out.Disinvite = new(RoomDisinviteEventServerMessage)
				}
				(*out.Disinvite).UnmarshalEasyJSON(in)
			}
		case "update":
			if in.IsNull() {
				in.Skip()
				out.Update = nil
			} else {
				if out.Update == nil {
					out.Update = new(RoomEventServerMessage)
				}
				(*out.Update).UnmarshalEasyJSON(in)
			}
		case "flags":
			if in.IsNull() {
				in.Skip()
				out.Flags = nil
			} else {
				if out.Flags == nil {
					out.Flags = new(RoomFlagsServerMessage)
				}
				(*out.Flags).UnmarshalEasyJSON(in)
			}
		case "message":
			if in.IsNull() {
				in.Skip()
				out.Message = nil
			} else {
				if out.Message == nil {
					out.Message = new(RoomEventMessage)
				}
				(*out.Message).UnmarshalEasyJSON(in)
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling36(out *jwriter.Writer, in EventServerMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"target\":"
		out.RawString(prefix[1:])
		out.String(string(in.Target))
	}
	{
		const prefix string = ",\"type\":"
		out.RawString(prefix)
		out.String(string(in.Type))
	}
	if len(in.Join) != 0 {
		const prefix string = ",\"join\":"
		out.RawString(prefix)
		{
			out.RawByte('[')
			for v39, v40 := range in.Join {
				if v39 > 0 {
					out.RawByte(',')
				}
				if v40 == nil {
					out.RawString("null")
				} else {
					(*v40).MarshalEasyJSON(out)
				}
			}
			out.RawByte(']')
		}
	}
	if len(in.Leave) != 0 {
		const prefix string = ",\"leave\":"
		out.RawString(prefix)
		{
			out.RawByte('[')
			for v41, v42 := range in.Leave {
				if v41 > 0 {
					out.RawByte(',')
				}
				out.String(string(v42))
			}
			out.RawByte(']')
		}
	}
	if len(in.Change) != 0 {
		const prefix string = ",\"change\":"
		out.RawString(prefix)
		{
			out.RawByte('[')
			for v43, v44 := range in.Change {
				if v43 > 0 {
					out.RawByte(',')
				}
				if v44 == nil {
					out.RawString("null")
				} else {
					(*v44).MarshalEasyJSON(out)
				}
			}
			out.RawByte(']')
		}
	}
	if in.SwitchTo != nil {
		const prefix string = ",\"switchto\":"
		out.RawString(prefix)
		(*in.SwitchTo).MarshalEasyJSON(out)
	}
	if in.Resumed != nil {
		const prefix string = ",\"resumed\":"
		out.RawString(prefix)
		out.Bool(bool(*in.Resumed))
	}
	if in.Invite != nil {
		const prefix string = ",\"invite\":"
		out.RawString(prefix)
		(*in.Invite).MarshalEasyJSON(out)
	}
	if in.Disinvite != nil {
		const prefix string = ",\"disinvite\":"
		out.RawString(prefix)
		(*in.Disinvite).MarshalEasyJSON(out)
	}
	if in.Update != nil {
		const prefix string = ",\"update\":"
		out.RawString(prefix)
		(*in.Update).MarshalEasyJSON(out)
	}
	if in.Flags != nil {
		const prefix string = ",\"flags\":"
		out.RawString(prefix)
		(*in.Flags).MarshalEasyJSON(out)
	}
	if in.Message != nil {
		const prefix string = ",\"message\":"
		out.RawString(prefix)
		(*in.Message).MarshalEasyJSON(out)
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v EventServerMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling36(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v EventServerMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling36(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *EventServerMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling36(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *EventServerMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling36(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling37(in *jlexer.Lexer, out *Error) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "code":
			out.Code = string(in.String())
		case "message":
			out.Message = string(in.String())
		case "details":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.Details).UnmarshalJSON(data))
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling37(out *jwriter.Writer, in Error) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"code\":"
		out.RawString(prefix[1:])
		out.String(string(in.Code))
	}
	{
		const prefix string = ",\"message\":"
		out.RawString(prefix)
		out.String(string(in.Message))
	}
	if len(in.Details) != 0 {
		const prefix string = ",\"details\":"
		out.RawString(prefix)
		out.Raw((in.Details).MarshalJSON())
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v Error) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling37(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v Error) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling37(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *Error) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling37(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *Error) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling37(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling38(in *jlexer.Lexer, out *DialoutStatusInternalClientMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "callid":
			out.CallId = string(in.String())
		case "status":
			out.Status = DialoutStatus(in.String())
		case "cause":
			out.Cause = string(in.String())
		case "code":
			out.Code = int(in.Int())
		case "message":
			out.Message = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling38(out *jwriter.Writer, in DialoutStatusInternalClientMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"callid\":"
		out.RawString(prefix[1:])
		out.String(string(in.CallId))
	}
	{
		const prefix string = ",\"status\":"
		out.RawString(prefix)
		out.String(string(in.Status))
	}
	if in.Cause != "" {
		const prefix string = ",\"cause\":"
		out.RawString(prefix)
		out.String(string(in.Cause))
	}
	if in.Code != 0 {
		const prefix string = ",\"code\":"
		out.RawString(prefix)
		out.Int(int(in.Code))
	}
	if in.Message != "" {
		const prefix string = ",\"message\":"
		out.RawString(prefix)
		out.String(string(in.Message))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v DialoutStatusInternalClientMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling38(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v DialoutStatusInternalClientMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling38(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *DialoutStatusInternalClientMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling38(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *DialoutStatusInternalClientMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling38(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling39(in *jlexer.Lexer, out *DialoutInternalClientMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "type":
			out.Type = string(in.String())
		case "roomid":
			out.RoomId = string(in.String())
		case "error":
			if in.IsNull() {
				in.Skip()
				out.Error = nil
			} else {
				if out.Error == nil {
					out.Error = new(Error)
				}
				(*out.Error).UnmarshalEasyJSON(in)
			}
		case "status":
			if in.IsNull() {
				in.Skip()
				out.Status = nil
			} else {
				if out.Status == nil {
					out.Status = new(DialoutStatusInternalClientMessage)
				}
				(*out.Status).UnmarshalEasyJSON(in)
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling39(out *jwriter.Writer, in DialoutInternalClientMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"type\":"
		out.RawString(prefix[1:])
		out.String(string(in.Type))
	}
	if in.RoomId != "" {
		const prefix string = ",\"roomid\":"
		out.RawString(prefix)
		out.String(string(in.RoomId))
	}
	if in.Error != nil {
		const prefix string = ",\"error\":"
		out.RawString(prefix)
		(*in.Error).MarshalEasyJSON(out)
	}
	if in.Status != nil {
		const prefix string = ",\"status\":"
		out.RawString(prefix)
		(*in.Status).MarshalEasyJSON(out)
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v DialoutInternalClientMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling39(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v DialoutInternalClientMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling39(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *DialoutInternalClientMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling39(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *DialoutInternalClientMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling39(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling40(in *jlexer.Lexer, out *ControlServerMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "sender":
			if in.IsNull() {
				in.Skip()
				out.Sender = nil
			} else {
				if out.Sender == nil {
					out.Sender = new(MessageServerMessageSender)
				}
				(*out.Sender).UnmarshalEasyJSON(in)
			}
		case "recipient":
			if in.IsNull() {
				in.Skip()
				out.Recipient = nil
			} else {
				if out.Recipient == nil {
					out.Recipient = new(MessageClientMessageRecipient)
				}
				(*out.Recipient).UnmarshalEasyJSON(in)
			}
		case "data":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.Data).UnmarshalJSON(data))
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling40(out *jwriter.Writer, in ControlServerMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"sender\":"
		out.RawString(prefix[1:])
		if in.Sender == nil {
			out.RawString("null")
		} else {
			(*in.Sender).MarshalEasyJSON(out)
		}
	}
	if in.Recipient != nil {
		const prefix string = ",\"recipient\":"
		out.RawString(prefix)
		(*in.Recipient).MarshalEasyJSON(out)
	}
	{
		const prefix string = ",\"data\":"
		out.RawString(prefix)
		out.Raw((in.Data).MarshalJSON())
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v ControlServerMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling40(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v ControlServerMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling40(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *ControlServerMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling40(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *ControlServerMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling40(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling41(in *jlexer.Lexer, out *ControlClientMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "recipient":
			(out.Recipient).UnmarshalEasyJSON(in)
		case "data":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.Data).UnmarshalJSON(data))
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling41(out *jwriter.Writer, in ControlClientMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"recipient\":"
		out.RawString(prefix[1:])
		(in.Recipient).MarshalEasyJSON(out)
	}
	{
		const prefix string = ",\"data\":"
		out.RawString(prefix)
		out.Raw((in.Data).MarshalJSON())
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v ControlClientMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling41(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v ControlClientMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling41(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *ControlClientMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling41(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *ControlClientMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling41(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling42(in *jlexer.Lexer, out *CommonSessionInternalClientMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "sessionid":
			out.SessionId = string(in.String())
		case "roomid":
			out.RoomId = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling42(out *jwriter.Writer, in CommonSessionInternalClientMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"sessionid\":"
		out.RawString(prefix[1:])
		out.String(string(in.SessionId))
	}
	{
		const prefix string = ",\"roomid\":"
		out.RawString(prefix)
		out.String(string(in.RoomId))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v CommonSessionInternalClientMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling42(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v CommonSessionInternalClientMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling42(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *CommonSessionInternalClientMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling42(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *CommonSessionInternalClientMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling42(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling43(in *jlexer.Lexer, out *ClientTypeInternalAuthParams) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "random":
			out.Random = string(in.String())
		case "token":
			out.Token = string(in.String())
		case "backend":
			out.Backend = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling43(out *jwriter.Writer, in ClientTypeInternalAuthParams) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"random\":"
		out.RawString(prefix[1:])
		out.String(string(in.Random))
	}
	{
		const prefix string = ",\"token\":"
		out.RawString(prefix)
		out.String(string(in.Token))
	}
	{
		const prefix string = ",\"backend\":"
		out.RawString(prefix)
		out.String(string(in.Backend))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v ClientTypeInternalAuthParams) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling43(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v ClientTypeInternalAuthParams) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling43(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *ClientTypeInternalAuthParams) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling43(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *ClientTypeInternalAuthParams) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling43(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling44(in *jlexer.Lexer, out *ClientMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "id":
			out.Id = string(in.String())
		case "type":
			out.Type = string(in.String())
		case "hello":
			if in.IsNull() {
				in.Skip()
				out.Hello = nil
			} else {
				if out.Hello == nil {
					out.Hello = new(HelloClientMessage)
				}
				(*out.Hello).UnmarshalEasyJSON(in)
			}
		case "bye":
			if in.IsNull() {
				in.Skip()
				out.Bye = nil
			} else {
				if out.Bye == nil {
					out.Bye = new(ByeClientMessage)
				}
				(*out.Bye).UnmarshalEasyJSON(in)
			}
		case "room":
			if in.IsNull() {
				in.Skip()
				out.Room = nil
			} else {
				if out.Room == nil {
					out.Room = new(RoomClientMessage)
				}
				(*out.Room).UnmarshalEasyJSON(in)
			}
		case "message":
			if in.IsNull() {
				in.Skip()
				out.Message = nil
			} else {
				if out.Message == nil {
					out.Message = new(MessageClientMessage)
				}
				(*out.Message).UnmarshalEasyJSON(in)
			}
		case "control":
			if in.IsNull() {
				in.Skip()
				out.Control = nil
			} else {
				if out.Control == nil {
					out.Control = new(ControlClientMessage)
				}
				(*out.Control).UnmarshalEasyJSON(in)
			}
		case "internal":
			if in.IsNull() {
				in.Skip()
				out.Internal = nil
			} else {
				if out.Internal == nil {
					out.Internal = new(InternalClientMessage)
				}
				(*out.Internal).UnmarshalEasyJSON(in)
			}
		case "transient":
			if in.IsNull() {
				in.Skip()
				out.TransientData = nil
			} else {
				if out.TransientData == nil {
					out.TransientData = new(TransientDataClientMessage)
				}
				(*out.TransientData).UnmarshalEasyJSON(in)
			}
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling44(out *jwriter.Writer, in ClientMessage) {
	out.RawByte('{')
	first := true
	_ = first
	if in.Id != "" {
		const prefix string = ",\"id\":"
		first = false
		out.RawString(prefix[1:])
		out.String(string(in.Id))
	}
	{
		const prefix string = ",\"type\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.String(string(in.Type))
	}
	if in.Hello != nil {
		const prefix string = ",\"hello\":"
		out.RawString(prefix)
		(*in.Hello).MarshalEasyJSON(out)
	}
	if in.Bye != nil {
		const prefix string = ",\"bye\":"
		out.RawString(prefix)
		(*in.Bye).MarshalEasyJSON(out)
	}
	if in.Room != nil {
		const prefix string = ",\"room\":"
		out.RawString(prefix)
		(*in.Room).MarshalEasyJSON(out)
	}
	if in.Message != nil {
		const prefix string = ",\"message\":"
		out.RawString(prefix)
		(*in.Message).MarshalEasyJSON(out)
	}
	if in.Control != nil {
		const prefix string = ",\"control\":"
		out.RawString(prefix)
		(*in.Control).MarshalEasyJSON(out)
	}
	if in.Internal != nil {
		const prefix string = ",\"internal\":"
		out.RawString(prefix)
		(*in.Internal).MarshalEasyJSON(out)
	}
	if in.TransientData != nil {
		const prefix string = ",\"transient\":"
		out.RawString(prefix)
		(*in.TransientData).MarshalEasyJSON(out)
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v ClientMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling44(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v ClientMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling44(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *ClientMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling44(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *ClientMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling44(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling45(in *jlexer.Lexer, out *ByeServerMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "reason":
			out.Reason = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling45(out *jwriter.Writer, in ByeServerMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"reason\":"
		out.RawString(prefix[1:])
		out.String(string(in.Reason))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v ByeServerMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling45(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v ByeServerMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling45(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *ByeServerMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling45(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *ByeServerMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling45(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling46(in *jlexer.Lexer, out *ByeClientMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling46(out *jwriter.Writer, in ByeClientMessage) {
	out.RawByte('{')
	first := true
	_ = first
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v ByeClientMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling46(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v ByeClientMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling46(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *ByeClientMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling46(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *ByeClientMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling46(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling47(in *jlexer.Lexer, out *AnswerOfferMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "to":
			out.To = string(in.String())
		case "from":
			out.From = string(in.String())
		case "type":
			out.Type = string(in.String())
		case "roomType":
			out.RoomType = string(in.String())
		case "payload":
			if in.IsNull() {
				in.Skip()
			} else {
				in.Delim('{')
				out.Payload = make(map[string]interface{})
				for !in.IsDelim('}') {
					key := string(in.String())
					in.WantColon()
					var v45 interface{}
					if m, ok := v45.(easyjson.Unmarshaler); ok {
						m.UnmarshalEasyJSON(in)
					} else if m, ok := v45.(json.Unmarshaler); ok {
						_ = m.UnmarshalJSON(in.Raw())
					} else {
						v45 = in.Interface()
					}
					(out.Payload)[key] = v45
					in.WantComma()
				}
				in.Delim('}')
			}
		case "sid":
			out.Sid = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling47(out *jwriter.Writer, in AnswerOfferMessage) {
	out.RawByte('{')
	first := true
	_ = first
	{
		const prefix string = ",\"to\":"
		out.RawString(prefix[1:])
		out.String(string(in.To))
	}
	{
		const prefix string = ",\"from\":"
		out.RawString(prefix)
		out.String(string(in.From))
	}
	{
		const prefix string = ",\"type\":"
		out.RawString(prefix)
		out.String(string(in.Type))
	}
	{
		const prefix string = ",\"roomType\":"
		out.RawString(prefix)
		out.String(string(in.RoomType))
	}
	{
		const prefix string = ",\"payload\":"
		out.RawString(prefix)
		if in.Payload == nil && (out.Flags&jwriter.NilMapAsEmpty) == 0 {
			out.RawString(`null`)
		} else {
			out.RawByte('{')
			v46First := true
			for v46Name, v46Value := range in.Payload {
				if v46First {
					v46First = false
				} else {
					out.RawByte(',')
				}
				out.String(string(v46Name))
				out.RawByte(':')
				if m, ok := v46Value.(easyjson.Marshaler); ok {
					m.MarshalEasyJSON(out)
				} else if m, ok := v46Value.(json.Marshaler); ok {
					out.Raw(m.MarshalJSON())
				} else {
					out.Raw(json.Marshal(v46Value))
				}
			}
			out.RawByte('}')
		}
	}
	if in.Sid != "" {
		const prefix string = ",\"sid\":"
		out.RawString(prefix)
		out.String(string(in.Sid))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v AnswerOfferMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling47(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v AnswerOfferMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling47(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *AnswerOfferMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling47(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *AnswerOfferMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling47(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling48(in *jlexer.Lexer, out *AddSessionOptions) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "actorId":
			out.ActorId = string(in.String())
		case "actorType":
			out.ActorType = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling48(out *jwriter.Writer, in AddSessionOptions) {
	out.RawByte('{')
	first := true
	_ = first
	if in.ActorId != "" {
		const prefix string = ",\"actorId\":"
		first = false
		out.RawString(prefix[1:])
		out.String(string(in.ActorId))
	}
	if in.ActorType != "" {
		const prefix string = ",\"actorType\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.String(string(in.ActorType))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v AddSessionOptions) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling48(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v AddSessionOptions) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling48(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *AddSessionOptions) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling48(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *AddSessionOptions) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling48(l, v)
}
func easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling49(in *jlexer.Lexer, out *AddSessionInternalClientMessage) {
	isTopLevel := in.IsStart()
	if in.IsNull() {
		if isTopLevel {
			in.Consumed()
		}
		in.Skip()
		return
	}
	in.Delim('{')
	for !in.IsDelim('}') {
		key := in.UnsafeFieldName(false)
		in.WantColon()
		if in.IsNull() {
			in.Skip()
			in.WantComma()
			continue
		}
		switch key {
		case "userid":
			out.UserId = string(in.String())
		case "user":
			if data := in.Raw(); in.Ok() {
				in.AddError((out.User).UnmarshalJSON(data))
			}
		case "flags":
			out.Flags = uint32(in.Uint32())
		case "incall":
			if in.IsNull() {
				in.Skip()
				out.InCall = nil
			} else {
				if out.InCall == nil {
					out.InCall = new(int)
				}
				*out.InCall = int(in.Int())
			}
		case "options":
			if in.IsNull() {
				in.Skip()
				out.Options = nil
			} else {
				if out.Options == nil {
					out.Options = new(AddSessionOptions)
				}
				(*out.Options).UnmarshalEasyJSON(in)
			}
		case "sessionid":
			out.SessionId = string(in.String())
		case "roomid":
			out.RoomId = string(in.String())
		default:
			in.SkipRecursive()
		}
		in.WantComma()
	}
	in.Delim('}')
	if isTopLevel {
		in.Consumed()
	}
}
func easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling49(out *jwriter.Writer, in AddSessionInternalClientMessage) {
	out.RawByte('{')
	first := true
	_ = first
	if in.UserId != "" {
		const prefix string = ",\"userid\":"
		first = false
		out.RawString(prefix[1:])
		out.String(string(in.UserId))
	}
	if len(in.User) != 0 {
		const prefix string = ",\"user\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.Raw((in.User).MarshalJSON())
	}
	if in.Flags != 0 {
		const prefix string = ",\"flags\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.Uint32(uint32(in.Flags))
	}
	if in.InCall != nil {
		const prefix string = ",\"incall\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.Int(int(*in.InCall))
	}
	if in.Options != nil {
		const prefix string = ",\"options\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		(*in.Options).MarshalEasyJSON(out)
	}
	{
		const prefix string = ",\"sessionid\":"
		if first {
			first = false
			out.RawString(prefix[1:])
		} else {
			out.RawString(prefix)
		}
		out.String(string(in.SessionId))
	}
	{
		const prefix string = ",\"roomid\":"
		out.RawString(prefix)
		out.String(string(in.RoomId))
	}
	out.RawByte('}')
}

// MarshalJSON supports json.Marshaler interface
func (v AddSessionInternalClientMessage) MarshalJSON() ([]byte, error) {
	w := jwriter.Writer{}
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling49(&w, v)
	return w.Buffer.BuildBytes(), w.Error
}

// MarshalEasyJSON supports easyjson.Marshaler interface
func (v AddSessionInternalClientMessage) MarshalEasyJSON(w *jwriter.Writer) {
	easyjson29f189fbEncodeGithubComStrukturagNextcloudSpreedSignaling49(w, v)
}

// UnmarshalJSON supports json.Unmarshaler interface
func (v *AddSessionInternalClientMessage) UnmarshalJSON(data []byte) error {
	r := jlexer.Lexer{Data: data}
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling49(&r, v)
	return r.Error()
}

// UnmarshalEasyJSON supports easyjson.Unmarshaler interface
func (v *AddSessionInternalClientMessage) UnmarshalEasyJSON(l *jlexer.Lexer) {
	easyjson29f189fbDecodeGithubComStrukturagNextcloudSpreedSignaling49(l, v)
}
