Commit 5786b4ff authored by Claes Sjofors's avatar Claes Sjofors

Event message object changed from objid to attrref. Object suffix removed from...

Event message object changed from objid to attrref. Object suffix removed from all alarmtexts for base components. Object name added to alarmtexts in operator window. Toolbar added to alarm and eventlist.
parent d392e945
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -17,3 +17,4 @@ ...@@ -17,3 +17,4 @@
080404 cs bcomp Connections replaced with lines in graphs to enable usage in subwindows. 080404 cs bcomp Connections replaced with lines in graphs to enable usage in subwindows.
080602 cs bcomp Objectgraph for CompMode: MinSet/MaxSet and MinOut/MaxOut used for slider limits and input limits. 080602 cs bcomp Objectgraph for CompMode: MinSet/MaxSet and MinOut/MaxOut used for slider limits and input limits.
081028 cs bcomp Components BaseActuatorIncrDecr and BaseValveIncrDecr added. 081028 cs bcomp Components BaseActuatorIncrDecr and BaseValveIncrDecr added.
100128 cs bcomp Adding of main object name to alarm texts removed. Comma removed from alarmtexts.
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -228,7 +228,7 @@ libxt-dev ...@@ -228,7 +228,7 @@ libxt-dev
libmotif-dev libmotif-dev
x11proto-print-dev x11proto-print-dev
libxmu-dev libxmu-dev
libxmp-dev libxpm-dev
libxp-dev libxp-dev
imlib11-dev imlib11-dev
......
...@@ -389,6 +389,7 @@ int check_conditions(sEvent *evp, HistQuery *query) ...@@ -389,6 +389,7 @@ int check_conditions(sEvent *evp, HistQuery *query)
mh_sMsgInfo *msgInfop = NULL; mh_sMsgInfo *msgInfop = NULL;
mh_sMessage *mp = NULL; mh_sMessage *mp = NULL;
mh_sReturn *rp = NULL; mh_sReturn *rp = NULL;
char *event_name_p;
switch (evp->EventType) switch (evp->EventType)
{ {
...@@ -396,13 +397,16 @@ int check_conditions(sEvent *evp, HistQuery *query) ...@@ -396,13 +397,16 @@ int check_conditions(sEvent *evp, HistQuery *query)
case mh_eEvent_Info: case mh_eEvent_Info:
msgInfop = &(evp->Mess.message.Info); msgInfop = &(evp->Mess.message.Info);
mp = &(evp->Mess.message); mp = &(evp->Mess.message);
event_name_p = evp->Mess.message.EventName;
break; break;
case mh_eEvent_Ack: case mh_eEvent_Ack:
msgInfop = &(evp->Mess.ack.Info); msgInfop = &(evp->Mess.ack.Info);
event_name_p = evp->Mess.ack.EventName;
break; break;
case mh_eEvent_Cancel: case mh_eEvent_Cancel:
case mh_eEvent_Return: case mh_eEvent_Return:
msgInfop = &(evp->Mess.ret.Info); msgInfop = &(evp->Mess.ret.Info);
event_name_p = evp->Mess.ret.EventName;
rp = &(evp->Mess.ret); rp = &(evp->Mess.ret);
break; break;
case mh_eEvent_Block: case mh_eEvent_Block:
...@@ -410,6 +414,7 @@ int check_conditions(sEvent *evp, HistQuery *query) ...@@ -410,6 +414,7 @@ int check_conditions(sEvent *evp, HistQuery *query)
case mh_eEvent_Reblock: case mh_eEvent_Reblock:
case mh_eEvent_CancelBlock: case mh_eEvent_CancelBlock:
msgInfop = &(evp->Mess.block.Info); msgInfop = &(evp->Mess.block.Info);
event_name_p = evp->Mess.block.EventName;
break; break;
default: default:
return 2; return 2;
...@@ -444,7 +449,7 @@ int check_conditions(sEvent *evp, HistQuery *query) ...@@ -444,7 +449,7 @@ int check_conditions(sEvent *evp, HistQuery *query)
//compare the EventName //compare the EventName
if(query->eventName_str != NULL && (strlen(query->eventName_str) != 0) ) if(query->eventName_str != NULL && (strlen(query->eventName_str) != 0) )
{ {
if( EVEN( compareStr(msgInfop->EventName, query->eventName_str) ) ) if( EVEN( compareStr(event_name_p, query->eventName_str) ) )
return 2; return 2;
} }
if(query->eventText_str != NULL && (strlen(query->eventText_str) != 0) ) if(query->eventText_str != NULL && (strlen(query->eventText_str) != 0) )
...@@ -529,7 +534,7 @@ jobject convertAlarmOrInfoToMhrEvent( mh_sMessage *MsgP) ...@@ -529,7 +534,7 @@ jobject convertAlarmOrInfoToMhrEvent( mh_sMessage *MsgP)
char birthTime_str[40]; char birthTime_str[40];
pwr_tObjid objid = MsgP->Info.Object; pwr_tObjid objid = MsgP->Object.Objid;
pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime); pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime);
pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime); pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime);
...@@ -552,7 +557,7 @@ jobject convertAlarmOrInfoToMhrEvent( mh_sMessage *MsgP) ...@@ -552,7 +557,7 @@ jobject convertAlarmOrInfoToMhrEvent( mh_sMessage *MsgP)
//gr om till Java-strngar //gr om till Java-strngar
jevText = env->NewStringUTF( MsgP->EventText); jevText = env->NewStringUTF( MsgP->EventText);
jevName = env->NewStringUTF( MsgP->Info.EventName); jevName = env->NewStringUTF( MsgP->EventName);
jevTime = env->NewStringUTF( time_str); jevTime = env->NewStringUTF( time_str);
jevBirthTime = env->NewStringUTF( birthTime_str); jevBirthTime = env->NewStringUTF( birthTime_str);
...@@ -617,7 +622,7 @@ jobject convertReturnToMhrEvent( mh_sReturn *MsgP) ...@@ -617,7 +622,7 @@ jobject convertReturnToMhrEvent( mh_sReturn *MsgP)
char birthTime_str[40]; char birthTime_str[40];
pwr_tObjid objid = MsgP->Info.Object; pwr_tObjid objid = MsgP->Object.Objid;
pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime); pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime);
pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime); pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime);
pwr_tTime targetBirthTime = net_NetTimeToTime( &MsgP->TargetId.BirthTime); pwr_tTime targetBirthTime = net_NetTimeToTime( &MsgP->TargetId.BirthTime);
...@@ -642,7 +647,7 @@ jobject convertReturnToMhrEvent( mh_sReturn *MsgP) ...@@ -642,7 +647,7 @@ jobject convertReturnToMhrEvent( mh_sReturn *MsgP)
//gr om till Java-strngar //gr om till Java-strngar
jevText = env->NewStringUTF( MsgP->EventText); jevText = env->NewStringUTF( MsgP->EventText);
jevName = env->NewStringUTF( MsgP->Info.EventName); jevName = env->NewStringUTF( MsgP->EventName);
jevTime = env->NewStringUTF( time_str); jevTime = env->NewStringUTF( time_str);
jevBirthTime = env->NewStringUTF( birthTime_str); jevBirthTime = env->NewStringUTF( birthTime_str);
jevTargetBirthTime = env->NewStringUTF( targetBirthTime_str); jevTargetBirthTime = env->NewStringUTF( targetBirthTime_str);
...@@ -708,7 +713,7 @@ jobject convertAckToMhrEvent( mh_sAck *MsgP) ...@@ -708,7 +713,7 @@ jobject convertAckToMhrEvent( mh_sAck *MsgP)
jint oix, vid; jint oix, vid;
char time_str[40]; char time_str[40];
char birthTime_str[40]; char birthTime_str[40];
pwr_tObjid objid = MsgP->Info.SupObject; pwr_tObjid objid = MsgP->SupObject.Objid;
pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime); pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime);
pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime); pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime);
...@@ -737,7 +742,7 @@ jobject convertAckToMhrEvent( mh_sAck *MsgP) ...@@ -737,7 +742,7 @@ jobject convertAckToMhrEvent( mh_sAck *MsgP)
//gr om till Java-strngar //gr om till Java-strngar
jevText = env->NewStringUTF( " "); //eventText anvnds inte vid ack jevText = env->NewStringUTF( " "); //eventText anvnds inte vid ack
jevName = env->NewStringUTF( MsgP->Info.EventName); jevName = env->NewStringUTF( MsgP->EventName);
jevTime = env->NewStringUTF( time_str); jevTime = env->NewStringUTF( time_str);
jevBirthTime = env->NewStringUTF( birthTime_str); jevBirthTime = env->NewStringUTF( birthTime_str);
jevTargetBirthTime = env->NewStringUTF( targetBirthTime_str); jevTargetBirthTime = env->NewStringUTF( targetBirthTime_str);
......
...@@ -319,7 +319,7 @@ pwr_tStatus ev_mh_ack_bc( mh_sAck *MsgP) ...@@ -319,7 +319,7 @@ pwr_tStatus ev_mh_ack_bc( mh_sAck *MsgP)
jint oix, vid; jint oix, vid;
char time_str[40]; char time_str[40];
char birthTime_str[40]; char birthTime_str[40];
pwr_tObjid objid = MsgP->Info.SupObject; pwr_tObjid objid = MsgP->SupObject.Objid;
pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime); pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime);
pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime); pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime);
...@@ -348,7 +348,7 @@ pwr_tStatus ev_mh_ack_bc( mh_sAck *MsgP) ...@@ -348,7 +348,7 @@ pwr_tStatus ev_mh_ack_bc( mh_sAck *MsgP)
//gr om till Java-strngar //gr om till Java-strngar
jevText = (*env)->NewStringUTF( env, " "); //eventText anvnds inte vid ack jevText = (*env)->NewStringUTF( env, " "); //eventText anvnds inte vid ack
jevName = (*env)->NewStringUTF( env, MsgP->Info.EventName); jevName = (*env)->NewStringUTF( env, MsgP->EventName);
jevTime = (*env)->NewStringUTF( env, time_str); jevTime = (*env)->NewStringUTF( env, time_str);
jevBirthTime = (*env)->NewStringUTF( env, birthTime_str); jevBirthTime = (*env)->NewStringUTF( env, birthTime_str);
jevTargetBirthTime = (*env)->NewStringUTF( env, targetBirthTime_str); jevTargetBirthTime = (*env)->NewStringUTF( env, targetBirthTime_str);
...@@ -407,7 +407,7 @@ pwr_tStatus ev_mh_return_bc( mh_sReturn *MsgP) ...@@ -407,7 +407,7 @@ pwr_tStatus ev_mh_return_bc( mh_sReturn *MsgP)
char birthTime_str[40]; char birthTime_str[40];
pwr_tObjid objid = MsgP->Info.Object; pwr_tObjid objid = MsgP->Object.Objid;
pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime); pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime);
pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime); pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime);
pwr_tTime targetBirthTime = net_NetTimeToTime( &MsgP->TargetId.BirthTime); pwr_tTime targetBirthTime = net_NetTimeToTime( &MsgP->TargetId.BirthTime);
...@@ -432,7 +432,7 @@ pwr_tStatus ev_mh_return_bc( mh_sReturn *MsgP) ...@@ -432,7 +432,7 @@ pwr_tStatus ev_mh_return_bc( mh_sReturn *MsgP)
//gr om till Java-strngar //gr om till Java-strngar
jevText = (*env)->NewStringUTF( env, MsgP->EventText); jevText = (*env)->NewStringUTF( env, MsgP->EventText);
jevName = (*env)->NewStringUTF( env, MsgP->Info.EventName); jevName = (*env)->NewStringUTF( env, MsgP->EventName);
jevTime = (*env)->NewStringUTF( env, time_str); jevTime = (*env)->NewStringUTF( env, time_str);
jevBirthTime = (*env)->NewStringUTF( env, birthTime_str); jevBirthTime = (*env)->NewStringUTF( env, birthTime_str);
jevTargetBirthTime = (*env)->NewStringUTF( env, targetBirthTime_str); jevTargetBirthTime = (*env)->NewStringUTF( env, targetBirthTime_str);
...@@ -492,7 +492,7 @@ pwr_tStatus ev_mh_alarm_bc( mh_sMessage *MsgP) ...@@ -492,7 +492,7 @@ pwr_tStatus ev_mh_alarm_bc( mh_sMessage *MsgP)
char birthTime_str[40]; char birthTime_str[40];
pwr_tObjid objid = MsgP->Info.Object; pwr_tObjid objid = MsgP->Object.Objid;
pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime); pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime);
pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime); pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime);
...@@ -515,7 +515,7 @@ pwr_tStatus ev_mh_alarm_bc( mh_sMessage *MsgP) ...@@ -515,7 +515,7 @@ pwr_tStatus ev_mh_alarm_bc( mh_sMessage *MsgP)
//gr om till Java-strngar //gr om till Java-strngar
jevText = (*env)->NewStringUTF( env, MsgP->EventText); jevText = (*env)->NewStringUTF( env, MsgP->EventText);
jevName = (*env)->NewStringUTF( env, MsgP->Info.EventName); jevName = (*env)->NewStringUTF( env, MsgP->EventName);
jevTime = (*env)->NewStringUTF( env, time_str); jevTime = (*env)->NewStringUTF( env, time_str);
jevBirthTime = (*env)->NewStringUTF( env, birthTime_str); jevBirthTime = (*env)->NewStringUTF( env, birthTime_str);
...@@ -570,7 +570,7 @@ pwr_tStatus ev_mh_info_bc( mh_sMessage *MsgP) ...@@ -570,7 +570,7 @@ pwr_tStatus ev_mh_info_bc( mh_sMessage *MsgP)
char birthTime_str[40]; char birthTime_str[40];
pwr_tObjid objid = MsgP->Info.Object; pwr_tObjid objid = MsgP->Object.Objid;
pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime); pwr_tTime time = net_NetTimeToTime( &MsgP->Info.EventTime);
pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime); pwr_tTime birthTime = net_NetTimeToTime( &MsgP->Info.Id.BirthTime);
...@@ -593,7 +593,7 @@ pwr_tStatus ev_mh_info_bc( mh_sMessage *MsgP) ...@@ -593,7 +593,7 @@ pwr_tStatus ev_mh_info_bc( mh_sMessage *MsgP)
//gr om till Java-strngar //gr om till Java-strngar
jevText = (*env)->NewStringUTF( env, MsgP->EventText); jevText = (*env)->NewStringUTF( env, MsgP->EventText);
jevName = (*env)->NewStringUTF( env, MsgP->Info.EventName); jevName = (*env)->NewStringUTF( env, MsgP->EventName);
jevTime = (*env)->NewStringUTF( env, time_str); jevTime = (*env)->NewStringUTF( env, time_str);
jevBirthTime = (*env)->NewStringUTF( env, birthTime_str); jevBirthTime = (*env)->NewStringUTF( env, birthTime_str);
......
...@@ -130,3 +130,4 @@ ...@@ -130,3 +130,4 @@
091211 cs pwre Format of pwre database changed. Delimiter character changed from : to ;. 091211 cs pwre Format of pwre database changed. Delimiter character changed from : to ;.
100111 cs pwrb Attribute (and method) Photo added to signal objects. 100111 cs pwrb Attribute (and method) Photo added to signal objects.
100111 cs co Set language is prepared for all languages and checks if language is installed. 100111 cs co Set language is prepared for all languages and checks if language is installed.
100129 cs emon Event object and sup object changed from objid to attrref. Increased size of eventname.
\ No newline at end of file
This diff is collapsed.
...@@ -2859,6 +2859,43 @@ cdh_NextObjectName ( ...@@ -2859,6 +2859,43 @@ cdh_NextObjectName (
return CDH__SUCCESS; return CDH__SUCCESS;
} }
//! Cut the leading segments of an object name.
/*!
Cut the leading segments of the name, and return the specified
number of segments.
\param outname Out string.
\param name In string.
*/
void cdh_CutNameSegments (
char *outname,
char *name,
int segments
)
{
char *s[20];
int i, j, last_i;
for( i = 0; i < segments; i++) {
s[i] = strrchr( name, '-');
if ( s[i] == 0) {
last_i = i;
break;
}
*s[i] = '+';
last_i = i;
}
for ( j = 0; j <= last_i; j++) {
if ( s[j] != 0)
*s[j] = '-';
}
if ( s[last_i] == 0)
strcpy( outname, name);
else
strcpy( outname, s[last_i] + 1);
}
/*@}*/ /*@}*/
......
...@@ -1041,6 +1041,8 @@ char *cdh_StringToObjectName( char *t, const char *s); ...@@ -1041,6 +1041,8 @@ char *cdh_StringToObjectName( char *t, const char *s);
pwr_tStatus cdh_NextObjectName( char *t, const char *s); pwr_tStatus cdh_NextObjectName( char *t, const char *s);
void cdh_CutNameSegments( char *outname, char *name, int segments);
/*@}*/ /*@}*/
#ifdef __cplusplus #ifdef __cplusplus
......
...@@ -491,6 +491,12 @@ xdr_pwr_tPathName(XDR *xdrs, pwr_tPathName *objp) ...@@ -491,6 +491,12 @@ xdr_pwr_tPathName(XDR *xdrs, pwr_tPathName *objp)
PWR_XDR_BYTES(xdrs, objp, sizeof(*objp)); PWR_XDR_BYTES(xdrs, objp, sizeof(*objp));
} }
bool_t
xdr_pwr_tAName(XDR *xdrs, pwr_tAName *objp)
{
PWR_XDR_BYTES(xdrs, objp, sizeof(*objp));
}
bool_t bool_t
xdr_pwr_tFullName(XDR *xdrs, pwr_tFullName *objp) xdr_pwr_tFullName(XDR *xdrs, pwr_tFullName *objp)
......
...@@ -195,6 +195,9 @@ xdr_pwr_tAttrName(XDR *xdrs, pwr_tAttrName *objp); ...@@ -195,6 +195,9 @@ xdr_pwr_tAttrName(XDR *xdrs, pwr_tAttrName *objp);
bool_t bool_t
xdr_pwr_tPathName(XDR *xdrs, pwr_tPathName *objp); xdr_pwr_tPathName(XDR *xdrs, pwr_tPathName *objp);
bool_t
xdr_pwr_tAName(XDR *xdrs, pwr_tAName *objp);
bool_t bool_t
xdr_pwr_tFullName(XDR *xdrs, pwr_tFullName *objp); xdr_pwr_tFullName(XDR *xdrs, pwr_tFullName *objp);
......
This diff is collapsed.
This diff is collapsed.
...@@ -1323,15 +1323,21 @@ static int rtt_menu_alarm_list_add( ...@@ -1323,15 +1323,21 @@ static int rtt_menu_alarm_list_add(
menu_ptr->arg3 = arg3; menu_ptr->arg3 = arg3;
menu_ptr->arg4 = arg4; menu_ptr->arg4 = arg4;
menu_ptr->time = net_NetTimeToTime( &EventP->Info.EventTime); menu_ptr->time = net_NetTimeToTime( &EventP->Info.EventTime);
strncpy( menu_ptr->eventname, EventP->Info.EventName, switch ( EventP->Info.EventType) {
case mh_eEvent_Alarm:
strncpy( menu_ptr->eventname, EventP->Msg.EventName,
sizeof( menu_ptr->eventname)); sizeof( menu_ptr->eventname));
menu_ptr->object = EventP->Msg.Object.Objid;
break;
default: ;
}
menu_ptr->eventname[sizeof(menu_ptr->eventname)-1] = 0;
strncpy( menu_ptr->eventtext, EventP->Msg.EventText, 80); strncpy( menu_ptr->eventtext, EventP->Msg.EventText, 80);
menu_ptr->eventflags = EventP->Info.EventFlags; menu_ptr->eventflags = EventP->Info.EventFlags;
menu_ptr->type = type; menu_ptr->type = type;
menu_ptr->eventprio = MsgP->Info.EventPrio; menu_ptr->eventprio = MsgP->Info.EventPrio;
memcpy ( &menu_ptr->eventid , &EventP->Info.Id, memcpy ( &menu_ptr->eventid , &EventP->Info.Id,
sizeof(EventP->Info.Id)); sizeof(EventP->Info.Id));
menu_ptr->object = EventP->Info.Object;
menu_ptr->status = MsgP->Status; menu_ptr->status = MsgP->Status;
(*index)++; (*index)++;
......
This diff is collapsed.
...@@ -1191,6 +1191,13 @@ SObject pwrs:Class ...@@ -1191,6 +1191,13 @@ SObject pwrs:Class
Attr FilterName = "$Object-OpenObjectFilter" Attr FilterName = "$Object-OpenObjectFilter"
EndBody EndBody
EndObject EndObject
Object OpenTrace $MenuButton
Body SysBody
Attr ButtonName = "Open Plc"
Attr MethodName = "$Object-OpenTrace"
Attr FilterName = "$Object-OpenTraceFilter"
EndBody
EndObject
Object RtNavigator $MenuButton Object RtNavigator $MenuButton
Body SysBody Body SysBody
Attr ButtonName = "RtNavigator" Attr ButtonName = "RtNavigator"
......
This diff is collapsed.
This diff is collapsed.
...@@ -154,3 +154,4 @@ ...@@ -154,3 +154,4 @@
100111 cs wb Mysql classvolume databases. 100111 cs wb Mysql classvolume databases.
100118 cs plc Toggle button in plc editor for feedback connections. 100118 cs plc Toggle button in plc editor for feedback connections.
100120 cs wb Functionality to view configuration status added. 100120 cs wb Functionality to view configuration status added.
100121 cs plc Toolbar buttons in plc editor to create texts and documents and to redraw.
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment