package Ġcom . d zen . camp fire . server . controllers Ċ Ċ import Ġcom . d zen . camp fire . api . API Ċ import Ġcom . d zen . camp fire . api . models . account . Account Ċ import Ġcom . d zen . camp fire . api . models . chat . Chat Tag Ċ import Ġcom . d zen . camp fire . api . models . chat . Chat Member Ċ import Ġcom . d zen . camp fire . api . models . chat . Chat Params Conf Ċ import Ġcom . d zen . camp fire . api . models . notifications . chat . Notification Chat Answer Ċ import Ġcom . d zen . camp fire . api . models . notifications . chat . Notification ChatMessage Ċ import Ġcom . d zen . camp fire . api . models . notifications . chat . Notification Chat Read Ċ import Ġcom . d zen . camp fire . api . models . publications . chat . Chat Ċ import Ġcom . d zen . camp fire . api . models . publications . chat . Publication ChatMessage Ċ import Ġcom . d zen . camp fire . api . models . publications . history . History Create Ċ import Ġcom . d zen . camp fire . server . tables . T Ch ats Ċ import Ġcom . d zen . camp fire . server . tables . T Ch ats Subscriptions Ċ import Ġcom . d zen . camp fire . server . tables . TP ublic ations Ċ import Ġcom . sup . dev . java . classes . collections . Any Array Ċ import Ġcom . sup . dev . java . classes . items . Item 2 Ċ import Ġcom . d zen . camp fire . api . tools . Api Account Ċ import Ġcom . sup . dev . java . libs . debug . Debug Ċ import Ġcom . sup . dev . java . libs . json . Json Ċ import Ġcom . sup . dev . java . tools . Tools Date Ċ import Ġcom . sup . dev . java _ pc . sql .* Ċ Ċ object ĠController Ch ats Ġ{ ĊĊĠĠĠ Ġfun Ġremove Subscription ( subscriptionId : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDatabase . remove (" Controller Ch ats Ġremove Subscription ", ĠSql Query Remove ( T Ch ats Subscriptions . NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where Value ( T Ch ats Subscriptions . id , Ġ"=", Ġsubscription Id )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Chat Params ( id : ĠLong ) Ġ= ĠChat Params Conf ( Json ( get Chat ( id , ĠT Ch ats . chat _ params ). next < String > ())) ĊĊĠĠĠ Ġfun Ġinstance Select _ Chat ( accountId : ĠLong , Ġany Account Last Message : ĠBoolean Ġ= Ġfalse ) Ġ= ĠSql Query Select ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats . NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats . type , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats . id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats . name , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats . image _ id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats . background _ id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats . chat _ params , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats . SUB SCR IB ED ( accountId ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats . MEMBER _ STATUS ( accountId ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats . READ _ DATE ( accountId ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats . EXIT _ DATE ( accountId ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( any Account Last Message ) ĠT Ch ats . LAST _ MESSAGE _ ID _ ANY _ ACCOUNT () Ġelse ĠT Ch ats . LAST _ MESSAGE _ ID ( accountId ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats . MEMBER S _ COUNT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats . NEW _ MESSAGES ( accountId ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġinstance Select _ Subscriptions () Ġ= ĠSql Query Select ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . chat _ type , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . target _ id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . target _ sub _ id , ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . subscribed , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . member _ status , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . read _ date , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . exit _ date , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . CHAT _ IMAGE _ MAY _ NULL , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . CHAT _ NAME _ MAY _ NULL , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . CHAT _ PARAMS _ MAY _ NULL , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . last _ message _ id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . AN OTHER _ ACCOUNT _ READ _ DATE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . BACKGROUND _ IMAGE _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . MEMBER S _ COUNT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . new _ messages , ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . AN OTHER _ ACCOUNT _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . AN OTHER _ ACCOUNT _ L VL , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . AN OTHER _ ACCOUNT _ LAST _ ON LINE _ TIME , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . AN OTHER _ ACCOUNT _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . AN OTHER _ ACCOUNT _ IMAGE _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . AN OTHER _ ACCOUNT _ SE X , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . AN OTHER _ ACCOUNT _ K AR MA _ 3 0 ĊĠĠĠ Ġ). where ( T Ch ats Subscriptions . CHAT _ EXIST , Ġ"=", Ġ 1 ) ĊĊĠĠĠ Ġfun Ġparse Select _ Chat ( accountId : ĠLong , Ġv : ĠResult Rows ): ĠArray < Chat > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠArray ( v . rows Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġu Ġ= ĠChat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . tag Ġ= ĠChat Tag ( v . next (), Ġv . next (), Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . tag . set My AccountId ( accountId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . custom Name Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . custom Image Id Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . background Image Id Ġ= Ġv . next Long Or Zero () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . params Ġ= ĠJson ( v . next May Null () Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . subscribed Ġ= Ġv . next < Long >() Ġ> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . member Status Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . read Date Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . exit Date Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . chat Message . id Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . members Count Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . unread Count Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( u . unread Count Ġ< Ġ 0 ) Ġu . unread Count Ġ= Ġ 0 Ġ// ĠÐļ Ð¾ÑģÑĤ Ñĭ Ð»ÑĮ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( u . tag . chat Type Ġ== ĠAPI . CHAT _ TYPE _ F AN DOM _ ROOT ) Ġu . members Count Ġ= ĠController Optimizer . get Chat Sub scribers Count ( u . tag ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġu ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġparse Select _ Sun scriptions ( accountId : ĠLong , Ġv : ĠResult Rows ): ĠArray < Chat > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Chat >() ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( v . hasNext ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġu Ġ= ĠChat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . subscriptionId Ġ= Ġv . next Long Or Zero () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . tag Ġ= ĠChat Tag ( v . next (), Ġv . next (), Ġv . next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . tag . set My AccountId ( accountId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . subscribed Ġ= Ġv . next < Long >() Ġ> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . member Status Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . read Date Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . exit Date Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . custom Image Id Ġ= Ġv . next Long Or Zero () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . custom Name Ġ= Ġv . next May Null () Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . params Ġ= ĠJson ( v . next May Null () Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . chat Message . id Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . another Account Read Date Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . background Image Id Ġ= Ġv . next Long Or Zero () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . members Count Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . unread Count Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( u . unread Count Ġ< Ġ 0 ) Ġu . unread Count Ġ= Ġ 0 Ġ// ĠÐļ Ð¾ÑģÑĤ Ñĭ Ð»ÑĮ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġu . another Account Ġ= ĠController Accounts . instance ( v ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( u . tag . chat Type Ġ== ĠAPI . CHAT _ TYPE _ F AN DOM _ ROOT ) Ġu . members Count Ġ= ĠController Optimizer . get Chat Sub scribers Count ( u . tag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( u . tag . chat Type Ġ== ĠAPI . CHAT _ TYPE _ PRIVATE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġu . custom Image Id Ġ= Ġu . another Account . image Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġu . custom Name Ġ= Ġu . another Account . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( u ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġreturn Ġlist . to Typed Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ ĠPut Ġmessage ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġfun Ġput Message ( api Account : ĠApi Account , Ġmessage : ĠPublic ation ChatMessage , Ġtag : ĠChat Tag , Ġin Sub : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtag . set My AccountId ( api Account . id ) ĊĠĠĠĠĠĠĠ Ġmessage . date Create Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġmessage . chat Type Ġ= Ġtag . chat Type ĊĠĠĠĠĠĠĠ Ġmessage . status Ġ= ĠAPI . STATUS _ PUBLIC ĊĠĠĠĠĠĠĠ Ġmessage . f andom . id Ġ= Ġtag . target Id ĊĠĠĠĠĠĠĠ Ġmessage . f andom . language Id Ġ= Ġtag . target Sub Id ĊĠĠĠĠĠĠĠ Ġmessage . tag _ 1 Ġ= Ġtag . chat Type ĊĠĠĠĠĠĠĠ Ġmessage . tag _ s _ 1 Ġ= Ġtag . as Tag () ĊĠĠĠĠĠĠĠ Ġmessage . json DB Ġ= Ġmessage . json DB ( true , ĠJson ()) ĊĊĠĠĠĠĠĠĠ Ġmessage . id Ġ= ĠDatabase . insert (" Controller Ch ats Ġput Message ", ĠT Public ations . NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Public ations . publication _ type , Ġmessage . publication Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Public ations . f andom _ id , Ġmessage . f andom . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Public ations . language _ id , Ġmessage . f andom . language Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Public ations . date _ create , Ġmessage . date Create , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Public ations . creator _ id , Ġmessage . creator . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Public ations . parent _ publication _ id , Ġmessage . parent Publication Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Public ations . publication _ json , Ġmessage . json DB , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Public ations . publication _ category , Ġmessage . category , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Public ations . status , Ġmessage . status , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Public ations . tag _ 1 , Ġmessage . tag _ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Public ations . tag _ s _ 1 , Ġmessage . tag _ s _ 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( in Sub ) ĠController Sub Thread . in Sub (" E ChatMessage Create ") Ġ{ Ġput Message Sub ( api Account , Ġmessage , Ġtag ) Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġput Message Sub ( api Account , Ġmessage , Ġtag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġput Message Sub ( api Account : ĠApi Account , Ġmessage : ĠPublic ation ChatMessage , Ġtag : ĠChat Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġchange New Messages Count ( tag , Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠController Public ations History . put ( message . id , ĠHistory Create ( api Account . id , Ġmessage . creator . image Id , Ġmessage . creator . name )) ĊĊĠĠĠĠĠĠĠ Ġupdate Read Or Subscribe If NotExist Or Removed ( api Account . id , Ġtag , Ġif Ġ( tag . chat Type Ġ== ĠAPI . CHAT _ TYPE _ F AN DOM _ ROOT ) Ġ 0 Ġelse Ġ 1 , ĠAPI . CHAT _ MEMBER _ L VL _ USER , Ġ 0 , Ġif Ġ( tag . chat Type Ġ== ĠAPI . CHAT _ TYPE _ PRIVATE ) Ġ 0 Ġelse ĠSystem . currentTimeMillis ()) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . chat Type Ġ== ĠAPI . CHAT _ TYPE _ F AN DOM _ ROOT Ġ-> Ġparse F andom ( api Account , Ġmessage , Ġtag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . chat Type Ġ== ĠAPI . CHAT _ TYPE _ CON FER ENCE Ġ-> Ġparse Conf ( api Account , Ġmessage , Ġtag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġparse Private ( api Account , Ġmessage , Ġtag ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġupdate Last Message ( message . chat Tag (), Ġmessage ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( message . chat Type Ġ== ĠAPI . CHAT _ TYPE _ F AN DOM _ ROOT ) Ġmark Read ( api Account . id , Ġtag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Conf ( api Account : ĠApi Account , Ġmessage : ĠPublic ation ChatMessage , Ġtag : ĠChat Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġparent Creator Id Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġif Ġ( message . parent Publication Id Ġ!= Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Creator Id Ġ= ĠController Public ations . get Creator Id ( message . parent Publication Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubscribed Ġ= Ġif Ġ( message . chat Type Ġ!= ĠAPI . CHAT _ TYPE _ F AN DOM _ ROOT ) Ġtrue Ġelse Ġis Sub scribed ( parent Creator Id , Ġtag ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠController Notifications . push ( parent Creator Id , ĠNotification Chat Answer ( message , Ġtag , Ġsubscribed )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠController Notifications . push ( Notification ChatMessage ( message , Ġtag , Ġtrue ), Ġget Conf Chat Sub scribers Ids With Tokens Sub scribed ( tag . target Id , Ġtag . target Sub Id , Ġmessage . creator . id , Ġparent Creator Id )) ĊĠĠĠĠĠĠĠ ĠController Notifications . push ( Notification ChatMessage ( message , Ġtag , Ġfalse ), Ġget Conf Chat Sub scribers Ids With Tokens Not Sub scribed ( tag . target Id , Ġtag . target Sub Id , Ġmessage . creator . id , Ġparent Creator Id )) ĊĊĠĠĠĠĠĠĠ ĠController Public ations . parse Ment ions ( message . text , Ġmessage . id , Ġmessage . publication Type , Ġmessage . chat Type , Ġmessage . f andom . id , Ġmessage . f andom . language Id , Ġapi Account , ĠarrayOf ( parent Creator Id )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse F andom ( api Account : ĠApi Account , Ġmessage : ĠPublic ation ChatMessage , Ġtag : ĠChat Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġparent Creator Id Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġif Ġ( message . parent Publication Id Ġ!= Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Creator Id Ġ= ĠController Public ations . get Creator Id ( message . parent Publication Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubscribed Ġ= Ġif Ġ( message . chat Type Ġ!= ĠAPI . CHAT _ TYPE _ F AN DOM _ ROOT ) Ġtrue Ġelse Ġis Sub scribed ( parent Creator Id , Ġtag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parent Creator Id Ġ!= Ġapi Account . id ) ĠController Notifications . push ( parent Creator Id , ĠNotification Chat Answer ( message , Ġtag , Ġsubscribed )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠController Notifications . push ( Notification ChatMessage ( message , Ġtag , Ġtrue ), Ġget F andom Chat Sub scribers Ids With Tokens Sub scribed ( tag . target Id , Ġtag . target Sub Id , Ġmessage . creator . id , Ġparent Creator Id )) ĊĠĠĠĠĠĠĠ ĠController Notifications . push ( Notification ChatMessage ( message , Ġtag , Ġfalse ), Ġget F andom Chat Sub scribers Ids With Tokens Not Sub scribed ( tag . target Id , Ġtag . target Sub Id , Ġmessage . creator . id , Ġparent Creator Id )) ĊĊĠĠĠĠĠĠĠ ĠController Optimizer . put Collision With Check ( api Account . id , ĠAPI . COLL ISION _ ACH IE VE MENT _ CHAT ) ĊĠĠĠĠĠĠĠ ĠController Ach ievements . add Ach ievement With Check ( api Account . id , ĠAPI . ACH I _ CHAT ) ĊĠĠĠĠĠĠĠ Ġif Ġ( tag . chat Type Ġ== ĠAPI . CHAT _ TYPE _ F AN DOM _ ROOT ) ĠController Quest s . add Quest Progress ( api Account , ĠAPI . QUEST _ CHAT , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ ĠController Public ations . parse Ment ions ( message . text , Ġmessage . id , Ġmessage . publication Type , Ġmessage . chat Type , Ġmessage . f andom . id , Ġmessage . f andom . language Id , Ġapi Account , ĠarrayOf ( parent Creator Id )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Private ( api Account : ĠApi Account , Ġmessage : ĠPublic ation ChatMessage , Ġtag : ĠChat Tag ) Ġ{ ĊĠĠĠĠĠĠĠ ĠController Notifications . push ( tag . get Another Id (), ĠNotification ChatMessage ( message , Ġtag , Ġtrue )) ĊĠĠĠĠĠĠĠ Ġcreate Subscription If NotExist Or Removed ( tag . get Another Id (), Ġtag , Ġ 1 , ĠAPI . CHAT _ MEMBER _ L VL _ USER , Ġ 0 , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ ĠSubscribe ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġfun Ġcreate Subscription If NotExist Or Removed ( accountId : ĠLong , Ġtag : ĠChat Tag , Ġis Subscribe Value : ĠLong , Ġmember L vl : ĠLong , Ġmember Owner : ĠLong , Ġenter Date : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġget Subscription Value ( accountId , Ġtag ) ĊĠĠĠĠĠĠĠ Ġif Ġ( v Ġ== Ġnull ) Ġcreate Subscription ( accountId , Ġtag , Ġis Subscribe Value , Ġmember L vl , Ġmember Owner , Ġenter Date ) ĊĠĠĠĠĠĠĠ Ġif Ġ( v Ġ== Ġ- 1 L ) Ġupdate Subscription ( accountId , Ġtag , Ġis Subscribe Value , Ġmember L vl , Ġmember Owner , Ġenter Date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Subscription If NotExist ( accountId : ĠLong , Ġtag : ĠChat Tag , Ġis Subscribe Value : ĠLong , Ġmember L vl : ĠLong , Ġmember Owner : ĠLong , Ġenter Date : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Subscribe Exists ( accountId , Ġtag )) Ġcreate Subscription ( accountId , Ġtag , Ġis Subscribe Value , Ġmember L vl , Ġmember Owner , Ġenter Date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Read Or Subscribe If NotExist Or Removed ( accountId : ĠLong , Ġtag : ĠChat Tag , Ġis Subscribe Value : ĠLong , Ġmember L vl : ĠLong , Ġmember Owner : ĠLong , Ġenter Date : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( get Subscription Value ( accountId , Ġtag )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġcreate Subscription ( accountId , Ġtag , Ġis Subscribe Value , Ġmember L vl , Ġmember Owner , Ġenter Date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 L Ġ-> Ġupdate Subscription ( accountId , Ġtag , Ġis Subscribe Value Ġ= Ġis Subscribe Value , Ġread Date Ġ= ĠSystem . currentTimeMillis (), Ġnew Messages Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġupdate Read Date ( accountId , Ġtag , ĠSystem . currentTimeMillis ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Read Or Subscribe ( accountId : ĠLong , Ġtag : ĠChat Tag , Ġis Subscribe Value : ĠLong , Ġmember L vl : ĠLong , Ġmember Owner : ĠLong , Ġenter Date : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Subscribe Exists ( accountId , Ġtag )) Ġcreate Subscription ( accountId , Ġtag , Ġis Subscribe Value , Ġmember L vl , Ġmember Owner , Ġenter Date ) ĊĠĠĠĠĠĠĠ Ġelse Ġupdate Read Date ( accountId , Ġtag , ĠSystem . currentTimeMillis ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Read Date ( accountId : ĠLong , Ġtag : ĠChat Tag , Ġread Date : ĠLong Ġ= ĠSystem . currentTimeMillis ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠDatabase . update (" Controller Ch ats Ġupdate Or Subscribe ", ĠSql Query Update ( T Ch ats Subscriptions . NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . account _ id , Ġ"=", ĠaccountId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . chat _ type , Ġ"=", Ġtag . chat Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ id , Ġ"=", Ġtag . target Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ sub _ id , Ġ"=", Ġtag . target Sub Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. update ( T Ch ats Subscriptions . read _ date , Ġread Date ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. update ( T Ch ats Subscriptions . new _ messages , Ġ 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Subscription ( accountId : ĠLong , Ġtag : ĠChat Tag , Ġis Subscribe Value : ĠLong , Ġmember L vl : ĠLong , Ġmember Owner : ĠLong , Ġenter Date : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDatabase . insert (" Controller Ch ats Ġcreate Subscription ", ĠT Ch ats Subscriptions . NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . account _ id , ĠaccountId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . chat _ type , Ġtag . chat Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . subscribed , Ġis Subscribe Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . target _ id , Ġtag . target Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . target _ sub _ id , Ġtag . target Sub Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . member _ status , ĠAPI . CHAT _ MEMBER _ STATUS _ ACTIVE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . member _ level , Ġmember L vl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . member _ owner , Ġmember Owner , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . read _ date , Ġif Ġ( tag . chat Type Ġ== ĠAPI . CHAT _ TYPE _ PRIVATE ) Ġ 0 Ġelse ĠSystem . currentTimeMillis (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . enter _ date , Ġenter Date ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Subscription ( accountId : ĠLong , Ġtag : ĠChat Tag , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Subscribe Value : ĠLong ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmember L vl : ĠLong ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmember Owner : ĠLong ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenter Date : ĠLong ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread Date : ĠLong ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Messages : ĠLong ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġupdate Ġ= ĠSql Query Update ( T Ch ats Subscriptions . NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . account _ id , Ġ"=", ĠaccountId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . chat _ type , Ġ"=", Ġtag . chat Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ id , Ġ"=", Ġtag . target Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ sub _ id , Ġ"=", Ġtag . target Sub Id ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Subscribe Value Ġ!= Ġnull ) Ġupdate . update ( T Ch ats Subscriptions . subscribed , Ġis Subscribe Value ) ĊĠĠĠĠĠĠĠ Ġif Ġ( member L vl Ġ!= Ġnull ) Ġupdate . update ( T Ch ats Subscriptions . member _ level , Ġmember L vl ) ĊĠĠĠĠĠĠĠ Ġif Ġ( member Owner Ġ!= Ġnull ) Ġupdate . update ( T Ch ats Subscriptions . member _ owner , Ġmember Owner ) ĊĠĠĠĠĠĠĠ Ġif Ġ( enter Date Ġ!= Ġnull ) Ġupdate . update ( T Ch ats Subscriptions . enter _ date , Ġenter Date ) ĊĠĠĠĠĠĠĠ Ġif Ġ( read Date Ġ!= Ġnull ) Ġupdate . update ( T Ch ats Subscriptions . read _ date , Ġread Date ) ĊĠĠĠĠĠĠĠ Ġif Ġ( new Messages Ġ!= Ġnull ) Ġupdate . update ( T Ch ats Subscriptions . new _ messages , Ġnew Messages ) ĊĊĠĠĠĠĠĠĠ ĠDatabase . update (" Controller Ch ats Ġupdate Subscription ", Ġupdate ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġsubscribe ( accountId : ĠLong , Ġtag : ĠChat Tag , Ġsubscribe : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDatabase . update (" Controller Ch ats Ġsubscribe ", ĠSql Query Update ( T Ch ats Subscriptions . NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . account _ id , Ġ"=", ĠaccountId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . chat _ type , Ġ"=", Ġtag . chat Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ id , Ġ"=", Ġtag . target Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ sub _ id , Ġ"=", Ġtag . target Sub Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. update ( T Ch ats Subscriptions . subscribed , Ġif Ġ( subscribe ) Ġ 1 Ġelse Ġ 0 )) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Messages Removed ( tag : ĠChat Tag , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Last Message ( tag ) ĊĠĠĠĠĠĠĠ Ġchange New Messages Count ( tag , Ġ- count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġchange New Messages Count ( tag : ĠChat Tag , Ġchange Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDatabase . update (" put Message Sub Ġupdate ", ĠSql Query Update ( T Ch ats Subscriptions . NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . chat _ type , Ġ"=", Ġtag . chat Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ id , Ġ"=", Ġtag . target Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ sub _ id , Ġ"=", Ġtag . target Sub Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . enter _ date , Ġ"< ", ĠSystem . currentTimeMillis ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . exit _ date , Ġ"=", Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. update ( T Ch ats Subscriptions . new _ messages , Ġ( T Ch ats Subscriptions . new _ messages Ġ+ Ġ"+ $ change Count ")) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Last Message ( tag : ĠChat Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Last Message ( tag , ĠgetLast Message ( tag , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Last Message ( tag : ĠChat Tag , Ġu : ĠPublic ation ChatMessage ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠDatabase . update (" Controller Ch ats Ġupdate Last Message ", ĠSql Query Update ( T Ch ats Subscriptions . NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . chat _ type , Ġ"=", Ġtag . chat Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ id , Ġ"=", Ġtag . target Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ sub _ id , Ġ"=", Ġtag . target Sub Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . member _ status , Ġ"=", ĠAPI . CHAT _ MEMBER _ STATUS _ ACTIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. update ( T Ch ats Subscriptions . last _ message _ date , Ġu ?. date Create Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. update ( T Ch ats Subscriptions . last _ message _ id , Ġu ?. id Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmark Read ( accountId : ĠLong , Ġtag : ĠChat Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġupdate Read Date ( accountId , Ġtag ) ĊĠĠĠĠĠĠĠ Ġif Ġ( tag . chat Type Ġ== ĠAPI . CHAT _ TYPE _ PRIVATE ) ĠController Notifications . push ( tag . get Another Id (), ĠNotification Chat Read ( tag , Ġdate )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Subscription Value ( accountId : ĠLong , Ġtag : ĠChat Tag ): ĠLong ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDatabase . select (" Controller Ch ats Ġis Sub scribed ", ĠSql Query Select ( T Ch ats Subscriptions . NAME , ĠT Ch ats Subscriptions . subscribed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . account _ id , Ġ"=", ĠaccountId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . chat _ type , Ġ"=", Ġtag . chat Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ id , Ġ"=", Ġtag . target Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ sub _ id , Ġ"=", Ġtag . target Sub Id ) ĊĠĠĠĠĠĠĠ Ġ). next May Null OrNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Sub scribed ( accountId : ĠLong , Ġtag : ĠChat Tag ) Ġ= Ġget Subscription Value ( accountId , Ġtag ) Ġ== Ġ 1 L ĊĊĠĠĠ Ġfun Ġis Subscribe Exists ( accountId : ĠLong , Ġtag : ĠChat Tag ) Ġ= Ġget Subscription Value ( accountId , Ġtag ) Ġ!= Ġnull ĊĊĠĠĠ Ġfun Ġget Read Date ( accountId : ĠLong , Ġtag : ĠChat Tag ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDatabase . select (" Controller Ch ats Ġis Sub scribed ", ĠSql Query Select ( T Ch ats Subscriptions . NAME , ĠT Ch ats Subscriptions . read _ date ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . account _ id , Ġ"=", ĠaccountId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . chat _ type , Ġ"=", Ġtag . chat Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ id , Ġ"=", Ġtag . target Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ sub _ id , Ġ"=", Ġtag . target Sub Id ) ĊĠĠĠĠĠĠĠ Ġ). next Long Or Zero () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetLast Message ( tag : ĠChat Tag , Ġcheck Subscriptions : ĠBoolean Ġ= Ġtrue ): ĠPublic ation ChatMessage ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( check Subscriptions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠDatabase . select (" Controller Ch ats . getLast Message Ġ 1 ", ĠSql Query Select ( T Ch ats Subscriptions . NAME , ĠSql . MAX ( T Ch ats Subscriptions . last _ message _ id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ id , Ġ"=", Ġtag . target Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ sub _ id , Ġ"=", Ġtag . target Sub Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . chat _ type , Ġ"=", Ġtag . chat Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . rows Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvv Ġ= ĠController Public ations . parse Select ( Database . select (" Controller Ch ats . getLast Message Ġ 2 ", ĠController Public ations . instance Select ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( TP ublic ations . id , Ġ"=", Ġv . next Long Or Zero ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( TP ublic ations . status , Ġ"=", ĠAPI . STATUS _ PUBLIC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( vv . isNotEmpty ()) Ġreturn Ġvv . get ( 0 ) Ġas ĠPublic ation ChatMessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= ĠController Public ations . parse Select ( Database . select (" Controller Ch ats . getLast Message Ġ 3 ", ĠController Public ations . instance Select ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( TP ublic ations . tag _ 1 , Ġ"=", Ġtag . chat Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( TP ublic ations . f andom _ id , Ġ"=", Ġtag . target Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( TP ublic ations . language _ id , Ġ"=", Ġtag . target Sub Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( TP ublic ations . status , Ġ"=", ĠAPI . STATUS _ PUBLIC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( TP ublic ations . publication _ type , Ġ"=", ĠAPI . PUBLIC ATION _ TYPE _ CHAT _ MESSAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sort ( TP ublic ations . date _ create , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. count ( 1 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġif Ġ( array . isEmpty ()) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġelse Ġreturn Ġarray [ 0 ] Ġas ĠPublic ation ChatMessage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Chat ( id : ĠLong , Ġvar arg Ġcolumns : ĠString ): ĠAny Array Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDatabase . select (" Controller Accounts . get Chat ", ĠSql Query Select ( T Ch ats . NAME , Ġ* columns ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats . id , Ġ"=", Ġid )). values ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Subscription ( accountId : ĠLong , Ġtag : ĠChat Tag , Ġvar arg Ġcolumns : ĠString ): ĠResult Rows Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDatabase . select (" Controller Accounts . get Subscription ", ĠSql Query Select ( T Ch ats Subscriptions . NAME , Ġ* columns ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . account _ id , Ġ"=", ĠaccountId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . chat _ type , Ġ"=", Ġtag . chat Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ id , Ġ"=", Ġtag . target Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ sub _ id , Ġ"=", Ġtag . target Sub Id ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Members Count ( tag : ĠChat Tag ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠDatabase . select (" Controller F andom . getSub scribers Count _ Last Two Days ", ĠSql Query Select ( T Ch ats Subscriptions . NAME , ĠSql . COUNT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . chat _ type , Ġ"=", Ġtag . chat Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ id , Ġ"=", Ġtag . target Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ sub _ id , Ġ"=", Ġtag . target Sub Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . member _ status , Ġ"=", ĠAPI . CHAT _ MEMBER _ STATUS _ ACTIVE ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġv . next Long Or Zero () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Access To Conf _ Edit ( accountId : ĠLong , Ġchat Id : ĠLong ) Ġ= Ġget Member Level And Status ( accountId , Ġchat Id )?. a 2 Ġ== ĠAPI . CHAT _ MEMBER _ STATUS _ ACTIVE ĊĊĠĠĠ Ġfun Ġget Member Status ( accountId : ĠLong , Ġchat Id : ĠLong ) Ġ= Ġget Member Level And Status ( accountId , Ġchat Id )?. a 2 ĊĊĠĠĠ Ġfun Ġget Member Level ( accountId : ĠLong , Ġchat Id : ĠLong ) Ġ= Ġget Member Level And Status ( accountId , Ġchat Id )?. a 1 ĊĊĠĠĠ Ġfun Ġget Member Level And Status ( accountId : ĠLong , Ġchat Id : ĠLong ): ĠItem 2 < Long , ĠLong >? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠDatabase . select (" Controller F andom . has Access To Conf ", ĠSql Query Select ( T Ch ats Subscriptions . NAME , ĠT Ch ats Subscriptions . member _ level , ĠT Ch ats Subscriptions . member _ status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . account _ id , Ġ"=", ĠaccountId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . chat _ type , Ġ"=", ĠAPI . CHAT _ TYPE _ CON FER ENCE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ id , Ġ"=", Ġchat Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ sub _ id , Ġ"=", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( v . isEmpty ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn ĠItem 2 ( v . next (), Ġv . next ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Access To Conf _ Write ( accountId : ĠLong , Ġchat Id : ĠLong ) Ġ= Ġget Member Status ( accountId , Ġchat Id ) Ġ== ĠAPI . CHAT _ MEMBER _ STATUS _ ACTIVE ĊĊĠĠĠ Ġfun Ġhas Access To Conf ( accountId : ĠLong , Ġchat Id : ĠLong ) Ġ= Ġget Member Status ( accountId , Ġchat Id ) Ġ!= Ġnull ĊĊĠĠĠ Ġfun Ġget Members ( chat Id : ĠLong , Ġinclude Deleted : ĠBoolean Ġ= Ġfalse ): ĠArray < Chat Member > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselect Ġ= ĠSql Query Select ( T Ch ats Subscriptions . NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . account _ id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . ACCOUNT _ LEVEL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . ACCOUNT _ LAST _ ON LINE _ DATE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . ACCOUNT _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . ACCOUNT _ IMAGE _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . ACCOUNT _ SE X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . ACCOUNT _ K AR MA _ 3 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . member _ status , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . member _ level , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT Ch ats Subscriptions . member _ owner ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . chat _ type , Ġ"=", ĠAPI . CHAT _ TYPE _ CON FER ENCE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ id , Ġ"=", Ġchat Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ sub _ id , Ġ"=", Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! include Deleted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect . where ( T Ch ats Subscriptions . member _ status , Ġ"< >", ĠAPI . CHAT _ MEMBER _ STATUS _ DELETE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect . where ( T Ch ats Subscriptions . member _ status , Ġ"< >", ĠAPI . CHAT _ MEMBER _ STATUS _ DELETE _ AND _ LEAVE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠDatabase . select (" Controller F andom . getSub scribers Count _ Last Two Days ", Ġselect ) ĊĊĊĊĠĠĠĠĠĠĠ Ġreturn ĠArray ( v . rows Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Ġ= ĠChat Member () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm . account Ġ= ĠController Accounts . instance ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm . member Status Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm . member L vl Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm . member Owner Ġ= Ġv . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġenter ( api Account : ĠApi Account , Ġtag : ĠChat Tag ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDatabase . update (" E Chat Enter ", ĠSql Query Update ( T Ch ats Subscriptions . NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . account _ id , Ġ"=", Ġapi Account . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . chat _ type , Ġ"=", Ġtag . chat Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ id , Ġ"=", Ġtag . target Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ sub _ id , Ġ"=", Ġtag . target Sub Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. update ( T Ch ats Subscriptions . exit _ date , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. update ( T Ch ats Subscriptions . enter _ date , ĠSystem . currentTimeMillis ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. update ( T Ch ats Subscriptions . member _ status , ĠAPI . CHAT _ MEMBER _ STATUS _ ACTIVE ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget New Messages Tags ( accountId : ĠLong ): ĠArray < Chat Tag > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvv Ġ= ĠDatabase . select (" E Accounts Get Info Ġselect _ 3 ", ĠSql Query Select ( T Ch ats Subscriptions . NAME , ĠT Ch ats Subscriptions . chat _ type , ĠT Ch ats Subscriptions . target _ id , ĠT Ch ats Subscriptions . target _ sub _ id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . account _ id , Ġ"=", ĠaccountId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . new _ messages , Ġ"> ", Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . subscribed , Ġ"< >", Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( Sql Where . Where String ("( (${ T Ch ats Subscriptions . chat _ type } <> ${ API . CHAT _ TYPE _ F AN DOM _ ROOT } ĠAND Ġ${ T Ch ats Subscriptions . chat _ type } <> ${ API . CHAT _ TYPE _ CON FER ENCE }) ĠOR Ġ${ T Ch ats Subscriptions . subscribed } =${ 1 }) ")) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġchat Messages Count Tags Ġ= ĠArray ( vv . rows Count ) Ġ{ ĠChat Tag ( vv . next (), Ġvv . next (), Ġvv . next ()) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġchat Messages Count Tags ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ ĠGet ĠSub scri bes ĊĠĠĠ Ġ// ĊĊĊĠĠĠ Ġfun Ġget F andom Chat Sub scribers Ids With Tokens Not Deleted ( f andom Id : ĠLong , Ġlanguage Id : ĠLong , Ġvar arg Ġexclude : ĠLong ): ĠArray < Item 2 < Long , ĠString ? >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Chat Sub scribers Ids With Tokens Not Deleted ( Chat Tag ( API . CHAT _ TYPE _ F AN DOM _ ROOT , Ġf andom Id , Ġlanguage Id ), Ġ* exclude ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget F andom Chat Sub scribers Ids With Tokens Sub scribed ( f andom Id : ĠLong , Ġlanguage Id : ĠLong , Ġvar arg Ġexclude : ĠLong ): ĠArray < Item 2 < Long , ĠString ? >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Chat Sub scribers Ids With Tokens Sub scribed ( Chat Tag ( API . CHAT _ TYPE _ F AN DOM _ ROOT , Ġf andom Id , Ġlanguage Id ), Ġ* exclude ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget F andom Chat Sub scribers Ids With Tokens Not Sub scribed ( f andom Id : ĠLong , Ġlanguage Id : ĠLong , Ġvar arg Ġexclude : ĠLong ): ĠArray < Item 2 < Long , ĠString ? >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Chat Sub scribers Ids With Tokens Not Sub scribed ( Chat Tag ( API . CHAT _ TYPE _ F AN DOM _ ROOT , Ġf andom Id , Ġlanguage Id ), Ġ* exclude ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Conf Chat Sub scribers Ids With Tokens Not Deleted ( chat Id : ĠLong , Ġvar arg Ġexclude : ĠLong ): ĠArray < Item 2 < Long , ĠString ? >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Chat Sub scribers Ids With Tokens Not Deleted ( Chat Tag ( API . CHAT _ TYPE _ CON FER ENCE , Ġchat Id , Ġ 0 ), Ġ- 2 L , Ġ* exclude ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Conf Chat Sub scribers Ids With Tokens Sub scribed ( chat Id : ĠLong , Ġvar arg Ġexclude : ĠLong ): ĠArray < Item 2 < Long , ĠString ? >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Chat Sub scribers Ids With Tokens Sub scribed ( Chat Tag ( API . CHAT _ TYPE _ CON FER ENCE , Ġchat Id , Ġ 0 ), Ġ* exclude ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Conf Chat Sub scribers Ids With Tokens Not Sub scribed ( chat Id : ĠLong , Ġvar arg Ġexclude : ĠLong ): ĠArray < Item 2 < Long , ĠString ? >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Chat Sub scribers Ids With Tokens Not Sub scribed ( Chat Tag ( API . CHAT _ TYPE _ CON FER ENCE , Ġchat Id , Ġ 0 ), Ġ* exclude ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Chat Sub scribers Ids With Tokens Not Deleted ( tag : ĠChat Tag , Ġvar arg Ġexclude : ĠLong ): ĠArray < Item 2 < Long , ĠString ? >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Chat Sub scribers Ids With Tokens ( tag , Ġ- 2 L , Ġ* exclude ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Chat Sub scribers Ids With Tokens Sub scribed ( tag : ĠChat Tag , Ġvar arg Ġexclude : ĠLong ): ĠArray < Item 2 < Long , ĠString ? >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Chat Sub scribers Ids With Tokens ( tag , Ġ 1 L , Ġ* exclude ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Chat Sub scribers Ids With Tokens Not Sub scribed ( tag : ĠChat Tag , Ġvar arg Ġexclude : ĠLong ): ĠArray < Item 2 < Long , ĠString ? >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Chat Sub scribers Ids With Tokens ( tag , Ġ 0 L , Ġ* exclude ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Chat Sub scribers Ids With Tokens ( tag : ĠChat Tag , Ġsubscribed : ĠLong , Ġvar arg Ġexclude : ĠLong ): ĠArray < Item 2 < Long , ĠString ? >> Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠDatabase . select (" Controller Ch ats . ge that Sub scribers Ids With Tokens ", ĠSql Query Select ( T Ch ats Subscriptions . NAME , ĠT Ch ats Subscriptions . account _ id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . chat _ type , Ġ"=", Ġtag . chat Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ id , Ġ"=", Ġtag . target Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . target _ sub _ id , Ġ"=", Ġtag . target Sub Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . member _ status , Ġ"=", ĠAPI . CHAT _ MEMBER _ STATUS _ ACTIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . subscribed , Ġif Ġ( subscribed Ġ== Ġ- 2 L ) Ġ"< >" Ġelse Ġ"=", Ġif Ġ( subscribed Ġ== Ġ- 2 L ) Ġ- 1 L Ġelse Ġsubscribed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( T Ch ats Subscriptions . read _ date , Ġ"> ", ĠSystem . currentTimeMillis () Ġ- Ġ 1 0 0 0 L Ġ* Ġ 6 0 Ġ* Ġ 6 0 Ġ* Ġ 2 4 Ġ* Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠController Notifications . parse Accounts Ids With Tokens ( v , Ġ* exclude ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ ĠEvents ĊĠĠĠ Ġ// ĊĊĊĠĠĠ Ġfun Ġput Creation Event ( api Account : ĠApi Account , Ġtag : ĠChat Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠPublic ation ChatMessage () ĊĠĠĠĠĠĠĠ Ġmessage . type Ġ= ĠPublic ation ChatMessage . TYPE _ SYSTEM ĊĠĠĠĠĠĠĠ Ġmessage . system Type Ġ= ĠPublic ation ChatMessage . SYSTEM _ TYPE _ CREATE ĊĠĠĠĠĠĠĠ Ġmessage . system OwnerId Ġ= Ġapi Account . id ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Name Ġ= Ġapi Account . name ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Sex Ġ= Ġapi Account . sex ĊĠĠĠĠĠĠĠ Ġput Message ( api Account , Ġmessage , Ġtag , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġput Add Account Event ( api Account : ĠApi Account , Ġname : ĠString , Ġtag : ĠChat Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠPublic ation ChatMessage () ĊĠĠĠĠĠĠĠ Ġmessage . type Ġ= ĠPublic ation ChatMessage . TYPE _ SYSTEM ĊĠĠĠĠĠĠĠ Ġmessage . system Type Ġ= ĠPublic ation ChatMessage . SYSTEM _ TYPE _ ADD _ USER ĊĠĠĠĠĠĠĠ Ġmessage . system OwnerId Ġ= Ġapi Account . id ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Name Ġ= Ġapi Account . name ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Sex Ġ= Ġapi Account . sex ĊĠĠĠĠĠĠĠ Ġmessage . system Target Name Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġput Message ( api Account , Ġmessage , Ġtag , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġput Remove Account Event ( api Account : ĠApi Account , Ġname : ĠString , Ġtag : ĠChat Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠPublic ation ChatMessage () ĊĠĠĠĠĠĠĠ Ġmessage . type Ġ= ĠPublic ation ChatMessage . TYPE _ SYSTEM ĊĠĠĠĠĠĠĠ Ġmessage . system Type Ġ= ĠPublic ation ChatMessage . SYSTEM _ TYPE _ REMOVE _ USER ĊĠĠĠĠĠĠĠ Ġmessage . system OwnerId Ġ= Ġapi Account . id ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Name Ġ= Ġapi Account . name ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Sex Ġ= Ġapi Account . sex ĊĠĠĠĠĠĠĠ Ġmessage . system Target Name Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġput Message ( api Account , Ġmessage , Ġtag , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġput Change Image ( api Account : ĠApi Account , Ġtag : ĠChat Tag , Ġimage Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠPublic ation ChatMessage () ĊĠĠĠĠĠĠĠ Ġmessage . type Ġ= ĠPublic ation ChatMessage . TYPE _ SYSTEM ĊĠĠĠĠĠĠĠ Ġmessage . system Type Ġ= ĠPublic ation ChatMessage . SYSTEM _ TYPE _ CHANGE _ IMAGE ĊĠĠĠĠĠĠĠ Ġmessage . system OwnerId Ġ= Ġapi Account . id ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Name Ġ= Ġapi Account . name ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Sex Ġ= Ġapi Account . sex ĊĠĠĠĠĠĠĠ Ġmessage . system Target Id Ġ= Ġimage Id ĊĠĠĠĠĠĠĠ Ġput Message ( api Account , Ġmessage , Ġtag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġput Change Background ( api Account : ĠApi Account , Ġtag : ĠChat Tag , Ġimage Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠPublic ation ChatMessage () ĊĠĠĠĠĠĠĠ Ġmessage . type Ġ= ĠPublic ation ChatMessage . TYPE _ SYSTEM ĊĠĠĠĠĠĠĠ Ġmessage . system Type Ġ= ĠPublic ation ChatMessage . SYSTEM _ TYPE _ CHANGE _ BACKGROUND ĊĠĠĠĠĠĠĠ Ġmessage . system OwnerId Ġ= Ġapi Account . id ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Name Ġ= Ġapi Account . name ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Sex Ġ= Ġapi Account . sex ĊĠĠĠĠĠĠĠ Ġmessage . system Target Id Ġ= Ġimage Id ĊĠĠĠĠĠĠĠ Ġput Message ( api Account , Ġmessage , Ġtag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġput Change Name ( api Account : ĠApi Account , Ġtag : ĠChat Tag , ĠnewName : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠPublic ation ChatMessage () ĊĠĠĠĠĠĠĠ Ġmessage . type Ġ= ĠPublic ation ChatMessage . TYPE _ SYSTEM ĊĠĠĠĠĠĠĠ Ġmessage . system Type Ġ= ĠPublic ation ChatMessage . SYSTEM _ TYPE _ CHANGE _ NAME ĊĠĠĠĠĠĠĠ Ġmessage . system OwnerId Ġ= Ġapi Account . id ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Name Ġ= Ġapi Account . name ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Sex Ġ= Ġapi Account . sex ĊĠĠĠĠĠĠĠ Ġmessage . system Target Name Ġ= ĠnewName ĊĠĠĠĠĠĠĠ Ġput Message ( api Account , Ġmessage , Ġtag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġput Change Params ( api Account : ĠApi Account , Ġtag : ĠChat Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠPublic ation ChatMessage () ĊĠĠĠĠĠĠĠ Ġmessage . type Ġ= ĠPublic ation ChatMessage . TYPE _ SYSTEM ĊĠĠĠĠĠĠĠ Ġmessage . system Type Ġ= ĠPublic ation ChatMessage . SYSTEM _ TYPE _ PARAMS ĊĠĠĠĠĠĠĠ Ġmessage . system OwnerId Ġ= Ġapi Account . id ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Name Ġ= Ġapi Account . name ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Sex Ġ= Ġapi Account . sex ĊĠĠĠĠĠĠĠ Ġput Message ( api Account , Ġmessage , Ġtag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġput Leave ( api Account : ĠApi Account , Ġtag : ĠChat Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠPublic ation ChatMessage () ĊĠĠĠĠĠĠĠ Ġmessage . type Ġ= ĠPublic ation ChatMessage . TYPE _ SYSTEM ĊĠĠĠĠĠĠĠ Ġmessage . system Type Ġ= ĠPublic ation ChatMessage . SYSTEM _ TYPE _ LEAVE ĊĠĠĠĠĠĠĠ Ġmessage . system OwnerId Ġ= Ġapi Account . id ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Name Ġ= Ġapi Account . name ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Sex Ġ= Ġapi Account . sex ĊĠĠĠĠĠĠĠ Ġput Message ( api Account , Ġmessage , Ġtag , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġput Enter ( api Account : ĠApi Account , Ġtag : ĠChat Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠPublic ation ChatMessage () ĊĠĠĠĠĠĠĠ Ġmessage . type Ġ= ĠPublic ation ChatMessage . TYPE _ SYSTEM ĊĠĠĠĠĠĠĠ Ġmessage . system Type Ġ= ĠPublic ation ChatMessage . SYSTEM _ TYPE _ ENTER ĊĠĠĠĠĠĠĠ Ġmessage . system OwnerId Ġ= Ġapi Account . id ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Name Ġ= Ġapi Account . name ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Sex Ġ= Ġapi Account . sex ĊĠĠĠĠĠĠĠ Ġput Message ( api Account , Ġmessage , Ġtag , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġput Change Level ( api Account : ĠApi Account , Ġtag : ĠChat Tag , Ġimage Id : ĠLong , Ġname : ĠString , Ġnew Level : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠPublic ation ChatMessage () ĊĠĠĠĠĠĠĠ Ġmessage . type Ġ= ĠPublic ation ChatMessage . TYPE _ SYSTEM ĊĠĠĠĠĠĠĠ Ġmessage . system Type Ġ= ĠPublic ation ChatMessage . SYSTEM _ TYPE _ LEVEL ĊĠĠĠĠĠĠĠ Ġmessage . system OwnerId Ġ= Ġapi Account . id ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Name Ġ= Ġapi Account . name ĊĠĠĠĠĠĠĠ Ġmessage . system Owner Sex Ġ= Ġapi Account . sex ĊĠĠĠĠĠĠĠ Ġmessage . system Target Id Ġ= Ġimage Id ĊĠĠĠĠĠĠĠ Ġmessage . system Target Name Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġmessage . system Tag Ġ= Ġnew Level ĊĠĠĠĠĠĠĠ Ġput Message ( api Account , Ġmessage , Ġtag , Ġfalse ) ĊĠĠĠ Ġ} Ċ Ċ }