Browse Source

Update report

Arnaud Vergnet 3 years ago
parent
commit
8ceb6856e2

+ 1
- 46
README.md View File

@@ -2,7 +2,7 @@
2 2
 
3 3
 This project contains the source for the 4IR Java project.
4 4
 
5
-Full report available [here](report/report.pdf).
5
+### Full report with installation instructions available in [report/report.pdf](report/report.pdf).
6 6
 
7 7
 ## Group
8 8
 
@@ -15,54 +15,9 @@ Full report available [here](report/report.pdf).
15 15
 * JavaFX 11.0.2 (openfx)
16 16
 * Gradle 6.3
17 17
 
18
-## Installation
19
-
20
-#### Install Java 11
21
-
22
-Run this command
23
-```shell script
24
-sudo apt install openjdk-11-jdk
25
-```
26
-
27
-#### Optional: Install JavaFX Scene Builder 11
28
-
29
-Follow [this link](https://gluonhq.com/products/scene-builder/) to download and install it, then [this link](https://www.jetbrains.com/help/idea/opening-fxml-files-in-javafx-scene-builder.html) to set up Intellij
30
-
31
-#### Build and Run
32
-
33
-Run this command
34
-
35
-```shell script
36
-./gradlew runShadow
37
-```
38
-
39
-Or in Intellij, open the gradle window and click on `clavardator -> Tasks -> application -> runShadow`.
40
-
41
-#### Generate cross-platform jar
42
-
43
-Run this command
44
-
45
-```shell script
46
-./gradlew build
47
-```
48
-
49
-This will generate a jar file under `client/build/libs/client-{VERSION}-all.jar`.
50
-
51
-You can then copy this file and place it on any Linux/Windows/Mac environment with at least Java 11 installed.
52
-
53
-#### Running a JAR file
54
-
55
-You can run a jar file with this command:
56
-
57
-```shell script
58
-java -jar <JAR-NAME>.jar
59
-```
60
-
61 18
 ## Resources
62 19
 
63 20
 * [OpenJDK](https://adoptopenjdk.net/releases.html)
64 21
 * [JavaFX](https://gluonhq.com/products/javafx/)
65
-* [JavaFX Scene Builder](https://gluonhq.com/products/scene-builder/)
66 22
 * [Setting up JavaFX](https://openjfx.io/openjfx-docs/)
67
-* [Settings up Scene builder in Intellij](https://www.jetbrains.com/help/idea/opening-fxml-files-in-javafx-scene-builder.html#open-in-scene-builder)
68 23
 * [Intellij IDEA](https://www.jetbrains.com/idea/)

BIN
report/conception/changeUsername.png View File


BIN
report/conception/class diagram.png View File


+ 0
- 963
report/conception/modelisation_projet.xmi View File

@@ -1,963 +0,0 @@
1
-<?xml version="1.0" encoding="UTF-8"?>
2
-<XMI xmi.version="1.2" verified="false" xmlns:UML="http://schema.omg.org/spec/UML/1.4" timestamp="2020-11-23T07:32:27">
3
- <XMI.header>
4
-  <XMI.documentation>
5
-   <XMI.exporter>umbrello uml modeller http://umbrello.kde.org</XMI.exporter>
6
-   <XMI.exporterVersion>1.6.18</XMI.exporterVersion>
7
-   <XMI.exporterEncoding>UnicodeUTF8</XMI.exporterEncoding>
8
-  </XMI.documentation>
9
-  <XMI.metamodel xmi.version="1.4" xmi.name="UML" href="UML.xml"/>
10
- </XMI.header>
11
- <XMI.content>
12
-  <UML:Model name="UML Model" isAbstract="false" isSpecification="false" isLeaf="false" isRoot="false" xmi.id="m1">
13
-   <UML:Namespace.ownedElement>
14
-    <UML:Stereotype name="folder" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="m1" xmi.id="folder"/>
15
-    <UML:Stereotype name="interface" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="m1" xmi.id="interface"/>
16
-    <UML:Model name="Logical View" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="m1" xmi.id="Logical_View">
17
-     <UML:Namespace.ownedElement>
18
-      <UML:Package name="Datatypes" isAbstract="false" visibility="public" stereotype="folder" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="Datatypes">
19
-       <UML:Namespace.ownedElement>
20
-        <UML:DataType name="char" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uchsEHkyw0mhl"/>
21
-        <UML:DataType name="int" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uWQiowYe4nFaZ"/>
22
-        <UML:DataType name="float" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uBBNaShXZBKQT"/>
23
-        <UML:DataType name="double" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uYCPKCjlSdVhN"/>
24
-        <UML:DataType name="bool" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uuXBZMoYOYSaM"/>
25
-        <UML:DataType name="string" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="unPFzh6A5OwZ2"/>
26
-        <UML:DataType name="unsigned char" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="upB9uN8iNuj5J"/>
27
-        <UML:DataType name="signed char" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="ugBgYZ4m7Hzug"/>
28
-        <UML:DataType name="unsigned int" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="ukvcoZUurK4H4"/>
29
-        <UML:DataType name="signed int" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uEyGiyPL3pt24"/>
30
-        <UML:DataType name="short int" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uHGWk4b2dl7Ai"/>
31
-        <UML:DataType name="unsigned short int" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="ul1iiaDWY4Q8k"/>
32
-        <UML:DataType name="signed short int" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="usMRW6EYizS4L"/>
33
-        <UML:DataType name="long int" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="u5R4kCxRJFgvc"/>
34
-        <UML:DataType name="signed long int" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="ut0ufObD1Lxax"/>
35
-        <UML:DataType name="unsigned long int" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uvIVjxSQ633RP"/>
36
-        <UML:DataType name="long double" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uLpUkzAJOaLSx"/>
37
-        <UML:DataType name="wchar_t" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uEYLz1VvWjMoL"/>
38
-        <UML:DataType name="new_datatype" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uWara7WKgmI2M"/>
39
-        <UML:DataType name="boolean" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uNCMLbwou3joQ"/>
40
-        <UML:DataType name="byte" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uVu06m9mlUXrE"/>
41
-        <UML:DataType name="short" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uk0VwLxmv6yPv"/>
42
-        <UML:DataType name="long" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uX6Df51OAZt5R"/>
43
-        <UML:DataType name="String" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="urG82CYprwXM8"/>
44
-        <UML:DataType name="Integer" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uge2sGQAz2ASh"/>
45
-        <UML:DataType name="Character" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uyOiLtMiZ2jHc"/>
46
-        <UML:DataType name="Boolean" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uq7gti6DTLbuk"/>
47
-        <UML:DataType name="Float" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uC3FLBfLgDEhN"/>
48
-        <UML:DataType name="Double" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uKOoyaASEX8q0"/>
49
-        <UML:DataType name="Byte" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="ulREkeqZpp0ao"/>
50
-        <UML:DataType name="Short" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uAvbnwAb5DRkV"/>
51
-        <UML:DataType name="Long" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uLnJvHDyRVRio"/>
52
-        <UML:DataType name="StringBuffer" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uTVshVpYK1LCz"/>
53
-        <UML:DataType name="StringBuilder" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="u0i1FB6SsYSvy"/>
54
-        <UML:DataType name="undef" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="u0w2NtfM1frzy"/>
55
-        <UML:DataType name="DatabaseController*" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="uIpZjHlEoz0Vt"/>
56
-        <UML:DataType name="UIController*" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Datatypes" xmi.id="ux25YPKkHHPLY"/>
57
-       </UML:Namespace.ownedElement>
58
-      </UML:Package>
59
-      <UML:Class name="UIController" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" comment="singleton" namespace="Logical_View" xmi.id="uYKRrg6CmRJAW">
60
-       <UML:Classifier.feature>
61
-        <UML:Attribute name="users" visibility="private" isSpecification="false" type="ubdskIrDMId2M" xmi.id="ugAEYxEUffkRe"/>
62
-        <UML:Attribute name="currentUser" visibility="private" isSpecification="false" type="u2ydP9LaNavW9" xmi.id="uQhNOdhGIR0uG"/>
63
-       </UML:Classifier.feature>
64
-      </UML:Class>
65
-      <UML:Class name="User" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uXJ6llv1PM3IG">
66
-       <UML:GeneralizableElement.generalization>
67
-        <UML:Generalization xmi.idref="uCaKDoUGDAIOL"/>
68
-       </UML:GeneralizableElement.generalization>
69
-       <UML:Classifier.feature>
70
-        <UML:Attribute name="username" visibility="protected" isSpecification="false" type="urG82CYprwXM8" xmi.id="uz5hFEtLHsR2K"/>
71
-        <UML:Operation name="getUsername" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uEIjmpY0s7lyZ">
72
-         <UML:BehavioralFeature.parameter>
73
-          <UML:Parameter kind="return" type="urG82CYprwXM8" xmi.id="uHJVAvepXeNAJ"/>
74
-         </UML:BehavioralFeature.parameter>
75
-        </UML:Operation>
76
-       </UML:Classifier.feature>
77
-      </UML:Class>
78
-      <UML:Class name="NetworkConnection" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="u7lpPNe6in0pc">
79
-       <UML:GeneralizableElement.generalization>
80
-        <UML:Generalization xmi.idref="ussMpL6OBxvd0"/>
81
-        <UML:Generalization xmi.idref="unuIHAbXkulHD"/>
82
-       </UML:GeneralizableElement.generalization>
83
-       <UML:Classifier.feature>
84
-        <UML:Attribute name="socket" visibility="private" isSpecification="false" type="urj16oLJpHspa" xmi.id="umKIYFAMLtn8h"/>
85
-        <UML:Operation name="sendMessage" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="usL1ETu7nxBtZ">
86
-         <UML:BehavioralFeature.parameter>
87
-          <UML:Parameter name="message" visibility="private" isSpecification="false" type="uRfb8kwNLXiyz" value="" xmi.id="u7U5CNXeQn5Pa"/>
88
-          <UML:Parameter name="callback" visibility="private" isSpecification="false" type="uavPXrvQlWUv4" value="" xmi.id="uoMVDAViLKhuY"/>
89
-         </UML:BehavioralFeature.parameter>
90
-        </UML:Operation>
91
-        <UML:Operation name="sendBroadcast" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uaKA49CvAGdR2">
92
-         <UML:BehavioralFeature.parameter>
93
-          <UML:Parameter name="message" visibility="private" isSpecification="false" type="urG82CYprwXM8" value="" xmi.id="uWNT6T5BhOucT"/>
94
-          <UML:Parameter name="callback" visibility="private" isSpecification="false" type="uavPXrvQlWUv4" value="" xmi.id="uVYC47tVWSUQl"/>
95
-         </UML:BehavioralFeature.parameter>
96
-        </UML:Operation>
97
-       </UML:Classifier.feature>
98
-      </UML:Class>
99
-      <UML:Class name="UserList" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="ubdskIrDMId2M">
100
-       <UML:GeneralizableElement.generalization>
101
-        <UML:Generalization xmi.idref="uyIhhxgr199MC"/>
102
-       </UML:GeneralizableElement.generalization>
103
-       <UML:Classifier.feature>
104
-        <UML:Attribute name="activeUsers" visibility="public" isSpecification="false" type="uCZjTydUPQ1Jn" xmi.id="ube4u4nmINPfw"/>
105
-        <UML:Attribute name="inactiveUsers" visibility="private" isSpecification="false" type="ufU9jurmLpKD0" xmi.id="uCTmUvmY49sQm"/>
106
-        <UML:Attribute name="network" visibility="private" isSpecification="false" type="u7lpPNe6in0pc" xmi.id="u0pyt1q3GkiyH"/>
107
-        <UML:Attribute name="db" visibility="private" isSpecification="false" type="uJLzR6QLuEycw" xmi.id="u49H8SEmPmGzU"/>
108
-        <UML:Operation name="isUsernameAvailable" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uEMjmoujN5z4P">
109
-         <UML:BehavioralFeature.parameter>
110
-          <UML:Parameter kind="return" type="uNCMLbwou3joQ" xmi.id="uOZChCcdi30NP"/>
111
-          <UML:Parameter name="username" visibility="private" isSpecification="false" type="urG82CYprwXM8" value="" xmi.id="u3NAFF4HL9PZG"/>
112
-         </UML:BehavioralFeature.parameter>
113
-        </UML:Operation>
114
-        <UML:Operation name="propagateUsernameChange" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uBdWTTWRUgfvA">
115
-         <UML:BehavioralFeature.parameter>
116
-          <UML:Parameter name="username" visibility="private" isSpecification="false" type="urG82CYprwXM8" value="" xmi.id="uNCVRIWTj59Yq"/>
117
-         </UML:BehavioralFeature.parameter>
118
-        </UML:Operation>
119
-        <UML:Operation name="onUsernameChangePropagated" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uGNHIm92iwcLV"/>
120
-        <UML:Operation name="discoverActiveUsers" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uEB1ubPnfwbZn"/>
121
-        <UML:Operation name="onActiverUserDiscovered" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uzntm57etBGuh">
122
-         <UML:BehavioralFeature.parameter>
123
-          <UML:Parameter name="user" visibility="private" isSpecification="false" type="uCZjTydUPQ1Jn" value="" xmi.id="uHQi4yYUn5yzb"/>
124
-         </UML:BehavioralFeature.parameter>
125
-        </UML:Operation>
126
-       </UML:Classifier.feature>
127
-      </UML:Class>
128
-      <UML:Class name="ErrorHandler" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uB64HbD6AAD0Q">
129
-       <UML:GeneralizableElement.generalization>
130
-        <UML:Generalization xmi.idref="ur8tKxW0c77Qe"/>
131
-       </UML:GeneralizableElement.generalization>
132
-       <UML:Classifier.feature>
133
-        <UML:Operation name="notifyError" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="umV4CeNUtgQsF">
134
-         <UML:BehavioralFeature.parameter>
135
-          <UML:Parameter name="error" visibility="private" isSpecification="false" type="u9VFYVmCG9TOq" value="" xmi.id="ulC0DxCCZasTE"/>
136
-         </UML:BehavioralFeature.parameter>
137
-        </UML:Operation>
138
-       </UML:Classifier.feature>
139
-      </UML:Class>
140
-      <UML:Class name="Exception" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="u9VFYVmCG9TOq"/>
141
-      <UML:Class name="MainApp" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uL87NkWKxdeZu">
142
-       <UML:GeneralizableElement.generalization>
143
-        <UML:Generalization xmi.idref="uDDbAgSnisFrn"/>
144
-       </UML:GeneralizableElement.generalization>
145
-       <UML:Classifier.feature>
146
-        <UML:Attribute name="controller" visibility="private" isSpecification="false" type="uYKRrg6CmRJAW" xmi.id="uys11jr9acw2f"/>
147
-        <UML:Operation name="main" ownerScope="classifier" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uso8RS4GdgOL9">
148
-         <UML:BehavioralFeature.parameter>
149
-          <UML:Parameter name="args" visibility="private" isSpecification="false" type="uDrG4ROJHVasS" value="" xmi.id="uWsXkMrktAnPD"/>
150
-         </UML:BehavioralFeature.parameter>
151
-        </UML:Operation>
152
-       </UML:Classifier.feature>
153
-      </UML:Class>
154
-      <UML:Class name="DatabaseController" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uJLzR6QLuEycw">
155
-       <UML:GeneralizableElement.generalization>
156
-        <UML:Generalization xmi.idref="uWWNoRJHChTMZ"/>
157
-       </UML:GeneralizableElement.generalization>
158
-       <UML:Classifier.feature>
159
-        <UML:Operation name="getAllUsers" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="u3YiQSRK59Hi5">
160
-         <UML:BehavioralFeature.parameter>
161
-          <UML:Parameter name="callback" visibility="private" isSpecification="false" type="uXwcH2ETd0Xtm" value="" xmi.id="uM3CUhbiSQ3tL"/>
162
-         </UML:BehavioralFeature.parameter>
163
-        </UML:Operation>
164
-        <UML:Operation name="addMessage" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uSigkdDAzyCXE">
165
-         <UML:BehavioralFeature.parameter>
166
-          <UML:Parameter name="message" visibility="private" isSpecification="false" type="uRfb8kwNLXiyz" value="" xmi.id="u4Vkplwr9Hoff"/>
167
-          <UML:Parameter name="callback" visibility="private" isSpecification="false" type="uavPXrvQlWUv4" value="" xmi.id="uPdQD4xVzMae2"/>
168
-         </UML:BehavioralFeature.parameter>
169
-        </UML:Operation>
170
-        <UML:Operation name="getChatHistory" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="ushkUTs0K7LsU">
171
-         <UML:BehavioralFeature.parameter>
172
-          <UML:Parameter name="callback" visibility="private" isSpecification="false" type="uRzT6LGkcbsJm" value="" xmi.id="udnN2JHu9Xwy3"/>
173
-         </UML:BehavioralFeature.parameter>
174
-        </UML:Operation>
175
-       </UML:Classifier.feature>
176
-      </UML:Class>
177
-      <UML:Class name="ChatHistory" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uMvgLuEK3MyVc">
178
-       <UML:GeneralizableElement.generalization>
179
-        <UML:Generalization xmi.idref="ueuwF6PhlIVIb"/>
180
-        <UML:Generalization xmi.idref="uuA2mW6NMKAht"/>
181
-       </UML:GeneralizableElement.generalization>
182
-       <UML:Classifier.feature>
183
-        <UML:Attribute name="db" visibility="private" isSpecification="false" type="uJLzR6QLuEycw" xmi.id="unZPfZl7jhR6L"/>
184
-        <UML:Operation name="refreshHistory" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="ugbMpRixsT7LO"/>
185
-        <UML:Operation name="addMessage" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uZyd650tdtLjH">
186
-         <UML:BehavioralFeature.parameter>
187
-          <UML:Parameter name="message" visibility="private" isSpecification="false" type="uRfb8kwNLXiyz" value="" xmi.id="uQKFCPzSzENSP"/>
188
-         </UML:BehavioralFeature.parameter>
189
-        </UML:Operation>
190
-        <UML:Operation name="onMessageSaved" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uEYZepdrLKW3I">
191
-         <UML:BehavioralFeature.parameter>
192
-          <UML:Parameter name="message" visibility="private" isSpecification="false" type="uRfb8kwNLXiyz" value="" xmi.id="uFFTcLx1dp6An"/>
193
-         </UML:BehavioralFeature.parameter>
194
-        </UML:Operation>
195
-        <UML:Operation name="onMessagesFetched" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="utDwMOEL4fgkc"/>
196
-       </UML:Classifier.feature>
197
-      </UML:Class>
198
-      <UML:Class name="ArrayList&lt;User>" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uHHtYzLw61Ywa"/>
199
-      <UML:Class name="Message" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uRfb8kwNLXiyz"/>
200
-      <UML:Class name="DiscoverCallback" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uz0vg84Fk7MY0"/>
201
-      <UML:Class name="UsersCallback" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uXwcH2ETd0Xtm"/>
202
-      <UML:Class name="messageCallback" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uO3n9QAZIb9UW"/>
203
-      <UML:Class name="ArrayList&lt;Message>" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uGoMRG7f9P0cG"/>
204
-      <UML:Interface name="Observer" isAbstract="true" visibility="public" stereotype="interface" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uqtMdczmUK7dZ">
205
-       <UML:Classifier.feature>
206
-        <UML:Operation name="update" isAbstract="true" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="ud9sBsKvnymYY">
207
-         <UML:BehavioralFeature.parameter>
208
-          <UML:Parameter name="obs" visibility="private" isSpecification="false" type="u0w2NtfM1frzy" value="" xmi.id="uDCtfXhV3ynM7"/>
209
-          <UML:Parameter name="arg" visibility="private" isSpecification="false" type="uz1gW6vUowkjd" value="" xmi.id="uaRN6U5HCeYqz"/>
210
-         </UML:BehavioralFeature.parameter>
211
-        </UML:Operation>
212
-       </UML:Classifier.feature>
213
-      </UML:Interface>
214
-      <UML:Class name="Object" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uz1gW6vUowkjd"/>
215
-      <UML:Abstraction name="" visibility="public" client="uYKRrg6CmRJAW" supplier="uqtMdczmUK7dZ" isSpecification="false" namespace="Logical_View" xmi.id="uSziF8kYcYzyq"/>
216
-      <UML:Abstraction name="" visibility="public" client="uYKRrg6CmRJAW" supplier="uqtMdczmUK7dZ" isSpecification="false" namespace="Logical_View" xmi.id="uJJTFyagi4jzV"/>
217
-      <UML:Class name="Observable" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uMukxNtG4j8CL">
218
-       <UML:Classifier.feature>
219
-        <UML:Operation name="setChanged" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="u0R1WhCROUrcp"/>
220
-        <UML:Operation name="notifyObservers" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uiFfJ18j5Ut4c">
221
-         <UML:BehavioralFeature.parameter>
222
-          <UML:Parameter name="arg" visibility="private" isSpecification="false" type="uz1gW6vUowkjd" value="" xmi.id="u0t43A1a1BTlp"/>
223
-         </UML:BehavioralFeature.parameter>
224
-        </UML:Operation>
225
-        <UML:Operation name="addObserver" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uYrEqTzcOyWZm">
226
-         <UML:BehavioralFeature.parameter>
227
-          <UML:Parameter name="obs" visibility="private" isSpecification="false" type="uqtMdczmUK7dZ" value="" xmi.id="uvTRiJQFaSmfo"/>
228
-         </UML:BehavioralFeature.parameter>
229
-        </UML:Operation>
230
-       </UML:Classifier.feature>
231
-      </UML:Class>
232
-      <UML:Generalization name="" parent="uMukxNtG4j8CL" visibility="public" isSpecification="false" namespace="Logical_View" discriminator="" xmi.id="ussMpL6OBxvd0" child="u7lpPNe6in0pc"/>
233
-      <UML:Generalization name="" parent="uMukxNtG4j8CL" visibility="public" isSpecification="false" namespace="Logical_View" discriminator="" xmi.id="ur8tKxW0c77Qe" child="uB64HbD6AAD0Q"/>
234
-      <UML:Class name="Application" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="u04Qm3WZC4Dm7">
235
-       <UML:Classifier.feature>
236
-        <UML:Operation name="launch" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="usmiQ4UnkVvOa">
237
-         <UML:BehavioralFeature.parameter>
238
-          <UML:Parameter name="args" visibility="private" isSpecification="false" type="uDrG4ROJHVasS" value="" xmi.id="ultgJYVE2OrDk"/>
239
-         </UML:BehavioralFeature.parameter>
240
-        </UML:Operation>
241
-       </UML:Classifier.feature>
242
-      </UML:Class>
243
-      <UML:Class name="String[]" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uDrG4ROJHVasS"/>
244
-      <UML:Generalization name="" parent="u04Qm3WZC4Dm7" visibility="public" isSpecification="false" namespace="Logical_View" discriminator="" xmi.id="uDDbAgSnisFrn" child="uL87NkWKxdeZu"/>
245
-      <UML:Generalization name="" parent="uMukxNtG4j8CL" visibility="public" isSpecification="false" namespace="Logical_View" discriminator="" xmi.id="uyIhhxgr199MC" child="ubdskIrDMId2M"/>
246
-      <UML:Dependency name="" visibility="public" client="uXJ6llv1PM3IG" supplier="uRfb8kwNLXiyz" isSpecification="false" namespace="Logical_View" xmi.id="usIfYNakWL01P"/>
247
-      <UML:Generalization name="" parent="uMukxNtG4j8CL" visibility="public" isSpecification="false" namespace="Logical_View" discriminator="" xmi.id="ueuwF6PhlIVIb" child="uMvgLuEK3MyVc"/>
248
-      <UML:Class name="CurrentUser" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="u2ydP9LaNavW9">
249
-       <UML:GeneralizableElement.generalization>
250
-        <UML:Generalization xmi.idref="uz6iWtgv67vte"/>
251
-       </UML:GeneralizableElement.generalization>
252
-       <UML:Classifier.feature>
253
-        <UML:Operation name="changeUsername" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uACwUrs3R8BQS">
254
-         <UML:BehavioralFeature.parameter>
255
-          <UML:Parameter name="username" visibility="private" isSpecification="false" type="urG82CYprwXM8" value="" xmi.id="ueWHjyrwjmapi"/>
256
-         </UML:BehavioralFeature.parameter>
257
-        </UML:Operation>
258
-       </UML:Classifier.feature>
259
-      </UML:Class>
260
-      <UML:Generalization name="" parent="uXJ6llv1PM3IG" visibility="public" isSpecification="false" namespace="Logical_View" discriminator="" xmi.id="uz6iWtgv67vte" child="u2ydP9LaNavW9"/>
261
-      <UML:Class name="ActiveUser" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uCZjTydUPQ1Jn">
262
-       <UML:GeneralizableElement.generalization>
263
-        <UML:Generalization xmi.idref="unzOccU9iqM8m"/>
264
-        <UML:Generalization xmi.idref="uv7pw80GpGG60"/>
265
-       </UML:GeneralizableElement.generalization>
266
-       <UML:Classifier.feature>
267
-        <UML:Attribute name="networkController" visibility="private" isSpecification="false" type="u7lpPNe6in0pc" xmi.id="uyIBX9tSjiYsx"/>
268
-        <UML:Operation name="sendMessage" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uXXG5jiBZ5uah">
269
-         <UML:BehavioralFeature.parameter>
270
-          <UML:Parameter name="message" visibility="private" isSpecification="false" type="uRfb8kwNLXiyz" value="" xmi.id="uUt9ubJ3kN8hG"/>
271
-         </UML:BehavioralFeature.parameter>
272
-        </UML:Operation>
273
-        <UML:Operation name="onMessageSent" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uXDRTyUZxXDCv">
274
-         <UML:BehavioralFeature.parameter>
275
-          <UML:Parameter name="message" visibility="private" isSpecification="false" type="uRfb8kwNLXiyz" value="" xmi.id="uE0BSNpuPfYYh"/>
276
-         </UML:BehavioralFeature.parameter>
277
-        </UML:Operation>
278
-       </UML:Classifier.feature>
279
-      </UML:Class>
280
-      <UML:Generalization name="" parent="uXJ6llv1PM3IG" visibility="public" isSpecification="false" namespace="Logical_View" discriminator="" xmi.id="unzOccU9iqM8m" child="uCZjTydUPQ1Jn"/>
281
-      <UML:Generalization name="" parent="uMukxNtG4j8CL" visibility="public" isSpecification="false" namespace="Logical_View" discriminator="" xmi.id="uCaKDoUGDAIOL" child="uXJ6llv1PM3IG"/>
282
-      <UML:Dependency name="" visibility="public" client="uCZjTydUPQ1Jn" supplier="uRfb8kwNLXiyz" isSpecification="false" namespace="Logical_View" xmi.id="uS9qcNdJM9cXo"/>
283
-      <UML:Class name="Socket" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="urj16oLJpHspa"/>
284
-      <UML:Class name="HistoryCallback" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uRzT6LGkcbsJm"/>
285
-      <UML:Class name="PeerUser" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="ufU9jurmLpKD0">
286
-       <UML:GeneralizableElement.generalization>
287
-        <UML:Generalization xmi.idref="ub3CHeL9So6yr"/>
288
-       </UML:GeneralizableElement.generalization>
289
-       <UML:Classifier.feature>
290
-        <UML:Attribute name="history" visibility="protected" isSpecification="false" type="uMvgLuEK3MyVc" xmi.id="uEd3zgxXoF6Nw"/>
291
-        <UML:Operation name="getHistory" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uqcKJzzTIUZCd">
292
-         <UML:BehavioralFeature.parameter>
293
-          <UML:Parameter kind="return" type="uMvgLuEK3MyVc" xmi.id="uLylelsebXwrg"/>
294
-         </UML:BehavioralFeature.parameter>
295
-        </UML:Operation>
296
-       </UML:Classifier.feature>
297
-      </UML:Class>
298
-      <UML:Generalization name="" parent="uXJ6llv1PM3IG" visibility="public" isSpecification="false" namespace="Logical_View" discriminator="" xmi.id="ub3CHeL9So6yr" child="ufU9jurmLpKD0"/>
299
-      <UML:Generalization name="" parent="ufU9jurmLpKD0" visibility="public" isSpecification="false" namespace="Logical_View" discriminator="" xmi.id="uv7pw80GpGG60" child="uCZjTydUPQ1Jn"/>
300
-      <UML:Generalization name="" parent="uMukxNtG4j8CL" visibility="public" isSpecification="false" namespace="Logical_View" discriminator="" xmi.id="uuA2mW6NMKAht" child="uMvgLuEK3MyVc"/>
301
-      <UML:Class name="Callback" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="uavPXrvQlWUv4"/>
302
-      <UML:Class name="Thread" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Logical_View" xmi.id="ubVqOwF4sMNEQ">
303
-       <UML:Classifier.feature>
304
-        <UML:Operation name="run" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uwXNbdS0ts0u3"/>
305
-        <UML:Operation name="start" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="uxqF92VezXaZe"/>
306
-        <UML:Operation name="stop" isAbstract="false" visibility="public" isVirtual="false" isSpecification="false" isLeaf="false" isRoot="false" isInline="false" isOverride="false" isQuery="false" xmi.id="u9eF6qFWLCQ1m"/>
307
-       </UML:Classifier.feature>
308
-      </UML:Class>
309
-      <UML:Generalization name="" parent="ubVqOwF4sMNEQ" visibility="public" isSpecification="false" namespace="Logical_View" discriminator="" xmi.id="uWWNoRJHChTMZ" child="uJLzR6QLuEycw"/>
310
-      <UML:Generalization name="" parent="ubVqOwF4sMNEQ" visibility="public" isSpecification="false" namespace="Logical_View" discriminator="" xmi.id="unuIHAbXkulHD" child="u7lpPNe6in0pc"/>
311
-      <UML:Association name="" visibility="public" isSpecification="false" namespace="Logical_View" xmi.id="u1MtGY3acWRbb">
312
-       <UML:Association.connection>
313
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="false" visibility="public" isSpecification="false" changeability="changeable" type="uXJ6llv1PM3IG" xmi.id="uZiBsUKchtZ09"/>
314
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="true" visibility="public" isSpecification="false" changeability="changeable" type="uXJ6llv1PM3IG" xmi.id="u49Z5gm6mYWCE"/>
315
-       </UML:Association.connection>
316
-      </UML:Association>
317
-     </UML:Namespace.ownedElement>
318
-     <XMI.extension xmi.extender="umbrello">
319
-      <diagrams resolution="96">
320
-       <diagram showopsig="1" type="1" showscope="1" canvasheight="1660" linewidth="0" showops="1" showattribassocs="1" showpackage="1" showstereotype="1" snapgrid="1" canvaswidth="2615" xmi.id="uVu7uqEenPeYW" snapy="25" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" isopen="1" usefillcolor="1" fillcolor="#ffffff" snapx="25" documentation="" showattsig="1" localid="-1" name="class diagram" backgroundcolor="#ffffff" linecolor="#000000" showpubliconly="0" snapcsgrid="0" showatts="1" textcolor="#000000" showgrid="0" zoom="85.583248328124967" griddotcolor="#36383e">
321
-        <widgets>
322
-         <classwidget showoperations="1" isinstance="0" showscope="1" showattributes="1" linewidth="0" showstereotype="1" showpackage="1" x="750" xmi.id="uYKRrg6CmRJAW" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="66" usefillcolor="1" fillcolor="#ffffff" localid="uqKxL8c5HPKwC" showopsigs="601" showattsigs="601" linecolor="#000000" showpubliconly="0" textcolor="#000000" width="253" autoresize="1" usesdiagramfillcolor="0" y="-1325"/>
323
-         <classwidget showoperations="1" isinstance="0" showscope="1" showattributes="1" linewidth="0" showstereotype="1" showpackage="1" x="1050" xmi.id="u04Qm3WZC4Dm7" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="47" usefillcolor="1" fillcolor="#ffffff" localid="uUXnW1ru1B04z" showopsigs="601" showattsigs="601" linecolor="#000000" showpubliconly="0" textcolor="#000000" width="235" autoresize="1" usesdiagramfillcolor="0" y="-1500"/>
324
-         <classwidget showoperations="1" isinstance="0" showscope="1" showattributes="1" linewidth="0" showstereotype="1" showpackage="1" x="450" xmi.id="uB64HbD6AAD0Q" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="47" usefillcolor="1" fillcolor="#ffffff" localid="uThSIWqmvEBj6" showopsigs="601" showattsigs="601" linecolor="#000000" showpubliconly="0" textcolor="#000000" width="298" autoresize="1" usesdiagramfillcolor="0" y="-850"/>
325
-         <interfacewidget showoperations="1" isinstance="0" showscope="1" showattributes="0" linewidth="0" showstereotype="1" showpackage="1" x="700" xmi.id="uqtMdczmUK7dZ" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="57" usefillcolor="1" drawascircle="0" fillcolor="#ffffff" localid="ukuGqxddUqGEm" showopsigs="601" showattsigs="601" linecolor="#000000" showpubliconly="0" textcolor="#000000" width="327" autoresize="1" usesdiagramfillcolor="0" y="-1500"/>
326
-         <classwidget showoperations="1" isinstance="0" showscope="1" showattributes="1" linewidth="0" showstereotype="1" showpackage="1" x="-775" xmi.id="uXJ6llv1PM3IG" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="57" usefillcolor="1" fillcolor="#ffffff" localid="u0OOMt13Lai7A" showopsigs="601" showattsigs="601" linecolor="#000000" showpubliconly="0" textcolor="#000000" width="226" autoresize="1" usesdiagramfillcolor="0" y="-900"/>
327
-         <classwidget showoperations="1" isinstance="0" showscope="1" showattributes="1" linewidth="0" showstereotype="1" showpackage="1" x="-750" xmi.id="uJLzR6QLuEycw" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="85" usefillcolor="1" fillcolor="#ffffff" localid="u1ZsdzQnbk1oA" showopsigs="601" showattsigs="601" linecolor="#000000" showpubliconly="0" textcolor="#000000" width="478" autoresize="1" usesdiagramfillcolor="0" y="75"/>
328
-         <classwidget showoperations="1" isinstance="0" showscope="1" showattributes="1" linewidth="0" showstereotype="1" showpackage="1" x="-225" xmi.id="uCZjTydUPQ1Jn" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="76" usefillcolor="1" fillcolor="#ffffff" localid="udUY3tBCMXHOM" showopsigs="601" showattsigs="601" linecolor="#000000" showpubliconly="0" textcolor="#000000" width="361" autoresize="1" usesdiagramfillcolor="0" y="-400"/>
329
-         <classwidget showoperations="1" isinstance="0" showscope="1" showattributes="1" linewidth="0" showstereotype="1" showpackage="1" x="-375" xmi.id="u7lpPNe6in0pc" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="76" usefillcolor="1" fillcolor="#ffffff" localid="u6LZmWhJ4lSkN" showopsigs="601" showattsigs="601" linecolor="#000000" showpubliconly="0" textcolor="#000000" width="496" autoresize="1" usesdiagramfillcolor="0" y="-225"/>
330
-         <classwidget showoperations="1" isinstance="0" showscope="1" showattributes="1" linewidth="0" showstereotype="1" showpackage="1" x="-700" xmi.id="ufU9jurmLpKD0" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="57" usefillcolor="1" fillcolor="#ffffff" localid="uJpPDbCJSqSrO" showopsigs="601" showattsigs="601" linecolor="#000000" showpubliconly="0" textcolor="#000000" width="262" autoresize="1" usesdiagramfillcolor="0" y="-725"/>
331
-         <classwidget showoperations="1" isinstance="0" showscope="1" showattributes="1" linewidth="0" showstereotype="1" showpackage="1" x="-725" xmi.id="ubVqOwF4sMNEQ" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="85" usefillcolor="1" fillcolor="#ffffff" localid="ukspuX3JFjnGT" showopsigs="601" showattsigs="601" linecolor="#000000" showpubliconly="0" textcolor="#000000" width="91" autoresize="1" usesdiagramfillcolor="0" y="-225"/>
332
-         <classwidget showoperations="1" isinstance="0" showscope="1" showattributes="1" linewidth="0" showstereotype="1" showpackage="1" x="25" xmi.id="uMukxNtG4j8CL" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="85" usefillcolor="1" fillcolor="#ffffff" localid="uOEPbyh3q12vP" showopsigs="601" showattsigs="601" linecolor="#000000" showpubliconly="0" textcolor="#000000" width="289" autoresize="1" usesdiagramfillcolor="0" y="-1050"/>
333
-         <classwidget showoperations="1" isinstance="0" showscope="1" showattributes="1" linewidth="0" showstereotype="1" showpackage="1" x="475" xmi.id="ubdskIrDMId2M" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="190" usefillcolor="1" fillcolor="#ffffff" localid="uq2vzhfOndliM" showopsigs="601" showattsigs="601" linecolor="#000000" showpubliconly="0" textcolor="#000000" width="460" autoresize="1" usesdiagramfillcolor="0" y="-350"/>
334
-         <classwidget showoperations="1" isinstance="0" showscope="1" showattributes="1" linewidth="0" showstereotype="1" showpackage="1" x="1050" xmi.id="uL87NkWKxdeZu" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="57" usefillcolor="1" fillcolor="#ffffff" localid="uh4AmHvyHCejl" showopsigs="601" showattsigs="601" linecolor="#000000" showpubliconly="0" textcolor="#000000" width="253" autoresize="1" usesdiagramfillcolor="0" y="-1350"/>
335
-         <classwidget showoperations="1" isinstance="0" showscope="1" showattributes="1" linewidth="0" showstereotype="1" showpackage="1" x="-1175" xmi.id="u2ydP9LaNavW9" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="47" usefillcolor="1" fillcolor="#ffffff" localid="uvJl24uk9HpLa" showopsigs="601" showattsigs="601" linecolor="#000000" showpubliconly="0" textcolor="#000000" width="325" autoresize="1" usesdiagramfillcolor="0" y="-775"/>
336
-         <classwidget showoperations="1" isinstance="0" showscope="1" showattributes="1" linewidth="0" showstereotype="1" showpackage="1" x="-775" xmi.id="uMvgLuEK3MyVc" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="114" usefillcolor="1" fillcolor="#ffffff" localid="ulS8SVpzhLZWf" showopsigs="601" showattsigs="601" linecolor="#000000" showpubliconly="0" textcolor="#000000" width="325" autoresize="1" usesdiagramfillcolor="0" y="-475"/>
337
-        </widgets>
338
-        <messages/>
339
-        <associations>
340
-         <assocwidget seqnum="" type="510" widgetaid="ubdskIrDMId2M" changeabilityB="900" linewidth="0" visibilityB="0" totalcounta="2" visibilityA="0" indexa="1" xmi.id="ube4u4nmINPfw" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="uqhYNy2L1OOty" linecolor="#000000" widgetbid="uCZjTydUPQ1Jn" textcolor="#000000" indexb="1" autoresize="1" usesdiagramfillcolor="1" changeabilityA="900">
341
-          <linepath layout="Direct">
342
-           <startpoint startx="475" starty="-350"/>
343
-           <endpoint endy="-350" endx="136"/>
344
-          </linepath>
345
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="1" x="450" xmi.id="uzD6rs0z6Gfwc" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" posttext="" fillcolor="none" localid="uTCYLOXHCXrbt" linecolor="#000000" textcolor="none" width="17" role="701" pretext="" autoresize="1" usesdiagramfillcolor="1" y="-324"/>
346
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="*" x="176" xmi.id="uOg3hNCrEmntD" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" posttext="" fillcolor="none" localid="u1Qonqm4sbOuH" linecolor="#000000" textcolor="none" width="17" role="702" pretext="" autoresize="1" usesdiagramfillcolor="1" y="-322"/>
347
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="activeUsers" x="176" xmi.id="uyuZtzt2Lqbxj" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" posttext="" fillcolor="none" localid="u2VsRs9c6nSKE" linecolor="#000000" textcolor="none" width="116" role="710" pretext="+" autoresize="1" usesdiagramfillcolor="1" y="-223"/>
348
-         </assocwidget>
349
-         <assocwidget seqnum="" type="510" widgetaid="uCZjTydUPQ1Jn" changeabilityB="900" linewidth="0" visibilityB="1" totalcounta="2" visibilityA="1" indexa="1" xmi.id="uyIBX9tSjiYsx" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="uJhKpAX7ex7HJ" linecolor="#000000" widgetbid="u7lpPNe6in0pc" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1" changeabilityA="900">
350
-          <linepath layout="Direct">
351
-           <startpoint startx="-100" starty="-324"/>
352
-           <endpoint endy="-225" endx="-100"/>
353
-          </linepath>
354
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="networkController" x="-200" xmi.id="uKmsNdiJouvtd" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" posttext="" fillcolor="none" localid="uwiWBwVS1324x" linecolor="#000000" textcolor="none" width="170" role="710" pretext="-" autoresize="1" usesdiagramfillcolor="1" y="-225"/>
355
-         </assocwidget>
356
-         <assocwidget seqnum="" type="510" widgetaid="uL87NkWKxdeZu" changeabilityB="900" linewidth="0" visibilityB="1" totalcounta="2" visibilityA="1" indexa="1" xmi.id="uys11jr9acw2f" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="u2HJXiRhZUPZD" linecolor="#000000" widgetbid="uYKRrg6CmRJAW" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1" changeabilityA="900">
357
-          <linepath layout="Direct">
358
-           <startpoint startx="1050" starty="-1325"/>
359
-           <endpoint endy="-1325" endx="1003"/>
360
-          </linepath>
361
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="controller" x="1006" xmi.id="umrNzeuDIw024" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" posttext="" fillcolor="none" localid="uEvzYEFJq1gDh" linecolor="#000000" textcolor="none" width="107" role="710" pretext="-" autoresize="1" usesdiagramfillcolor="1" y="-1350"/>
362
-         </assocwidget>
363
-         <assocwidget seqnum="" type="500" widgetaid="u2ydP9LaNavW9" linewidth="0" totalcounta="2" indexa="1" xmi.id="uz6iWtgv67vte" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="3" usefillcolor="1" fillcolor="none" localid="uUrJdnjcuTWkw" linecolor="#000000" widgetbid="uXJ6llv1PM3IG" textcolor="none" indexb="2" autoresize="1" usesdiagramfillcolor="1">
364
-          <linepath layout="Direct">
365
-           <startpoint startx="-850" starty="-775"/>
366
-           <endpoint endy="-843" endx="-775"/>
367
-          </linepath>
368
-         </assocwidget>
369
-         <assocwidget seqnum="" type="510" widgetaid="uMvgLuEK3MyVc" changeabilityB="900" linewidth="0" visibilityB="1" totalcounta="2" visibilityA="1" indexa="1" xmi.id="unZPfZl7jhR6L" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="uvqL3j7XbNJpr" linecolor="#000000" widgetbid="uJLzR6QLuEycw" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1" changeabilityA="900">
370
-          <linepath layout="Direct">
371
-           <startpoint startx="-570.875" starty="-361"/>
372
-           <endpoint endy="75" endx="-570.875"/>
373
-          </linepath>
374
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="db" x="-425" xmi.id="uZG1rQtyi46qM" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" posttext="" fillcolor="none" localid="ugggLu4FmAzm9" linecolor="#000000" textcolor="none" width="35" role="710" pretext="-" autoresize="1" usesdiagramfillcolor="1" y="133"/>
375
-         </assocwidget>
376
-         <assocwidget seqnum="" type="500" widgetaid="ubdskIrDMId2M" linewidth="0" totalcounta="2" indexa="1" xmi.id="uyIhhxgr199MC" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="uosZXUThMMibZ" linecolor="#000000" widgetbid="uMukxNtG4j8CL" textcolor="#000000" indexb="1" autoresize="1" usesdiagramfillcolor="1">
377
-          <linepath layout="Direct">
378
-           <startpoint startx="475" starty="-350"/>
379
-           <endpoint endy="-965" endx="314"/>
380
-          </linepath>
381
-         </assocwidget>
382
-         <assocwidget seqnum="" type="500" widgetaid="ufU9jurmLpKD0" linewidth="0" totalcounta="2" indexa="1" xmi.id="ub3CHeL9So6yr" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="3" usefillcolor="1" fillcolor="none" localid="uf5AUMRZTG2oo" linecolor="#000000" widgetbid="uXJ6llv1PM3IG" textcolor="none" indexb="2" autoresize="1" usesdiagramfillcolor="1">
383
-          <linepath layout="Direct">
384
-           <startpoint startx="-549" starty="-725"/>
385
-           <endpoint endy="-843" endx="-549"/>
386
-          </linepath>
387
-         </assocwidget>
388
-         <assocwidget seqnum="" type="500" widgetaid="uB64HbD6AAD0Q" linewidth="0" totalcounta="2" indexa="1" xmi.id="ur8tKxW0c77Qe" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="uwPWR47jikfGC" linecolor="#000000" widgetbid="uMukxNtG4j8CL" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1">
389
-          <linepath layout="Direct">
390
-           <startpoint startx="475" starty="-850"/>
391
-           <endpoint endy="-965" endx="314"/>
392
-           <point x="475" y="-875"/>
393
-           <point x="457" y="-965"/>
394
-          </linepath>
395
-         </assocwidget>
396
-         <assocwidget seqnum="" type="500" widgetaid="uL87NkWKxdeZu" linewidth="0" totalcounta="2" indexa="1" xmi.id="uDDbAgSnisFrn" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="uMbuN0Lj2JehW" linecolor="#000000" widgetbid="u04Qm3WZC4Dm7" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1">
397
-          <linepath layout="Direct">
398
-           <startpoint startx="1060.16" starty="-1350"/>
399
-           <endpoint endy="-1453" endx="1060.16"/>
400
-          </linepath>
401
-         </assocwidget>
402
-         <assocwidget seqnum="" type="511" widgetaid="uYKRrg6CmRJAW" linewidth="0" totalcounta="2" indexa="1" xmi.id="uJJTFyagi4jzV" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="uUAbkIrArJCEp" linecolor="#000000" widgetbid="uqtMdczmUK7dZ" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1">
403
-          <linepath layout="Orthogonal">
404
-           <startpoint startx="760.164" starty="-1325"/>
405
-           <endpoint endy="-1443" endx="760.164"/>
406
-          </linepath>
407
-         </assocwidget>
408
-         <assocwidget seqnum="" type="500" widgetaid="uXJ6llv1PM3IG" linewidth="0" totalcounta="2" indexa="1" xmi.id="uCaKDoUGDAIOL" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="ukwJQqlFM55k8" linecolor="#000000" widgetbid="uMukxNtG4j8CL" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1">
409
-          <linepath layout="Direct">
410
-           <startpoint startx="-549" starty="-900"/>
411
-           <endpoint endy="-965" endx="25"/>
412
-          </linepath>
413
-         </assocwidget>
414
-         <assocwidget seqnum="" type="510" widgetaid="ubdskIrDMId2M" changeabilityB="900" linewidth="0" visibilityB="1" totalcounta="2" visibilityA="1" indexa="1" xmi.id="u49H8SEmPmGzU" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="u8FGCoFktKdDF" linecolor="#000000" widgetbid="uJLzR6QLuEycw" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1" changeabilityA="900">
415
-          <linepath layout="Direct">
416
-           <startpoint startx="475" starty="-160"/>
417
-           <endpoint endy="75" endx="-272"/>
418
-          </linepath>
419
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="db" x="-179" xmi.id="ugHRJ9lG91AQ3" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="u6zRHY98xNsHN" linecolor="#000000" textcolor="none" width="28" role="710" pretext="-" autoresize="1" usesdiagramfillcolor="1" y="29"/>
420
-         </assocwidget>
421
-         <assocwidget seqnum="" type="500" widgetaid="u7lpPNe6in0pc" linewidth="0" totalcounta="2" indexa="1" xmi.id="unuIHAbXkulHD" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="u9XJ6Xg3jjmFs" linecolor="#000000" widgetbid="ubVqOwF4sMNEQ" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1">
422
-          <linepath layout="Direct">
423
-           <startpoint startx="-375" starty="-178.25"/>
424
-           <endpoint endy="-178.25" endx="-634"/>
425
-          </linepath>
426
-         </assocwidget>
427
-         <assocwidget seqnum="" type="510" widgetaid="uYKRrg6CmRJAW" changeabilityB="900" linewidth="0" visibilityB="1" totalcounta="2" visibilityA="1" indexa="1" xmi.id="ugAEYxEUffkRe" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="u7Xp3AcgIf7Qj" linecolor="#000000" widgetbid="ubdskIrDMId2M" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1" changeabilityA="900">
428
-          <linepath layout="Direct">
429
-           <startpoint startx="821.67" starty="-1259"/>
430
-           <endpoint endy="-350" endx="821.67"/>
431
-          </linepath>
432
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="users" x="811" xmi.id="unJzZzvaLqKFi" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uvQqlpH3nsNjX" linecolor="#000000" textcolor="none" width="45" role="710" pretext="-" autoresize="1" usesdiagramfillcolor="1" y="-350"/>
433
-         </assocwidget>
434
-         <assocwidget seqnum="" type="510" widgetaid="uYKRrg6CmRJAW" changeabilityB="900" linewidth="0" visibilityB="1" totalcounta="2" visibilityA="1" indexa="1" xmi.id="uQhNOdhGIR0uG" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="ukhm4Zadbz4j2" linecolor="#000000" widgetbid="u2ydP9LaNavW9" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1" changeabilityA="900">
435
-          <linepath layout="Orthogonal">
436
-           <startpoint startx="750" starty="-1259"/>
437
-           <endpoint endy="-775" endx="-1075"/>
438
-           <point x="725" y="-1225"/>
439
-           <point x="-1075" y="-1225"/>
440
-          </linepath>
441
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="currentUser" x="-1312" xmi.id="u1aNJTwib6iYG" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="usklF6RJT9aNh" linecolor="#000000" textcolor="none" width="85" role="710" pretext="-" autoresize="1" usesdiagramfillcolor="1" y="-771"/>
442
-         </assocwidget>
443
-         <assocwidget seqnum="" type="500" widgetaid="uJLzR6QLuEycw" linewidth="0" totalcounta="2" indexa="1" xmi.id="uWWNoRJHChTMZ" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="uhsqrgxly43Yb" linecolor="#000000" widgetbid="ubVqOwF4sMNEQ" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1">
444
-          <linepath layout="Direct">
445
-           <startpoint startx="-658.5" starty="75"/>
446
-           <endpoint endy="-140" endx="-658.5"/>
447
-          </linepath>
448
-         </assocwidget>
449
-         <assocwidget seqnum="" type="510" widgetaid="ubdskIrDMId2M" changeabilityB="900" linewidth="0" visibilityB="1" totalcounta="2" visibilityA="1" indexa="1" xmi.id="u0pyt1q3GkiyH" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="usdNzIA7YL2Fn" linecolor="#000000" widgetbid="u7lpPNe6in0pc" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1" changeabilityA="900">
450
-          <linepath layout="Direct">
451
-           <startpoint startx="475" starty="-225"/>
452
-           <endpoint endy="-225" endx="121"/>
453
-          </linepath>
454
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="network" x="134" xmi.id="ujG7t7FwK3TXm" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uJWuRjclk8Wjd" linecolor="#000000" textcolor="none" width="63" role="710" pretext="-" autoresize="1" usesdiagramfillcolor="1" y="-199"/>
455
-         </assocwidget>
456
-         <assocwidget seqnum="" type="500" widgetaid="uMvgLuEK3MyVc" linewidth="0" totalcounta="2" indexa="1" xmi.id="uuA2mW6NMKAht" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="u10VAQ1CDUJIE" linecolor="#000000" widgetbid="uMukxNtG4j8CL" textcolor="#000000" indexb="1" autoresize="1" usesdiagramfillcolor="1">
457
-          <linepath layout="Direct">
458
-           <startpoint startx="-450" starty="-475"/>
459
-           <endpoint endy="-965" endx="25"/>
460
-          </linepath>
461
-         </assocwidget>
462
-         <assocwidget seqnum="" type="510" widgetaid="ufU9jurmLpKD0" changeabilityB="900" linewidth="0" visibilityB="2" totalcounta="2" visibilityA="2" indexa="1" xmi.id="uEd3zgxXoF6Nw" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="u1fwKPQHZ4MO9" linecolor="#000000" widgetbid="uMvgLuEK3MyVc" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1" changeabilityA="900">
463
-          <linepath layout="Direct">
464
-           <startpoint startx="-547.375" starty="-668"/>
465
-           <endpoint endy="-475" endx="-547.375"/>
466
-          </linepath>
467
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="history" x="-620" xmi.id="uMwSB9u0QluYR" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" posttext="" fillcolor="none" localid="uDqak3GenpWUJ" linecolor="#000000" textcolor="none" width="80" role="710" pretext="#" autoresize="1" usesdiagramfillcolor="1" y="-475"/>
468
-         </assocwidget>
469
-         <assocwidget seqnum="" type="500" widgetaid="uCZjTydUPQ1Jn" linewidth="0" totalcounta="2" indexa="1" xmi.id="uv7pw80GpGG60" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="uxUjg6NUz7jtw" linecolor="#000000" widgetbid="ufU9jurmLpKD0" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1">
470
-          <linepath layout="Direct">
471
-           <startpoint startx="-225" starty="-400"/>
472
-           <endpoint endy="-668" endx="-438"/>
473
-          </linepath>
474
-         </assocwidget>
475
-         <assocwidget seqnum="" type="510" widgetaid="ubdskIrDMId2M" changeabilityB="900" linewidth="0" visibilityB="1" totalcounta="2" visibilityA="1" indexa="1" xmi.id="uCTmUvmY49sQm" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="uf2HQAJtQKwOI" linecolor="#000000" widgetbid="ufU9jurmLpKD0" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1" changeabilityA="900">
476
-          <linepath layout="Direct">
477
-           <startpoint startx="475" starty="-350"/>
478
-           <endpoint endy="-668" endx="-438"/>
479
-          </linepath>
480
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="inactiveUsers" x="-426" xmi.id="uZxcVzihuu9fW" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" posttext="" fillcolor="none" localid="uFLlnH4mPEyhQ" linecolor="#000000" textcolor="none" width="134" role="710" pretext="-" autoresize="1" usesdiagramfillcolor="1" y="-646"/>
481
-         </assocwidget>
482
-        </associations>
483
-       </diagram>
484
-       <diagram showopsig="1" type="3" showscope="1" canvasheight="878.639" linewidth="0" showops="1" showattribassocs="1" showpackage="1" showstereotype="1" snapgrid="1" canvaswidth="1022.5" xmi.id="uGaCUFgq8XYbv" snapy="25" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" isopen="0" usefillcolor="1" fillcolor="#ffffff" snapx="25" documentation="" showattsig="1" localid="-1" name="changeUsername" backgroundcolor="#ffffff" linecolor="#000000" showpubliconly="0" snapcsgrid="0" showatts="1" textcolor="#000000" showgrid="0" autoincrementsequence="0" zoom="69" griddotcolor="#36383e">
485
-        <widgets>
486
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="-225" drawasactor="0" xmi.id="u2ydP9LaNavW9" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uD0Ja13OB0Dsj" decon="0" linecolor="#000000" textcolor="#000000" width="136" autoresize="1" usesdiagramfillcolor="1" y="75"/>
487
-         <combinedFragmentwidget isinstance="0" linewidth="0" showstereotype="1" CombinedFragmenttype="7" x="-925" xmi.id="ur8pWcIbOVaa2" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="701.139" usefillcolor="1" fillcolor="#ffffff" localid="uKhhOMmCfOyQ9" documentation="" linecolor="#000000" combinedFragmentname="usernameAvailable" textcolor="#000000" width="1000" autoresize="0" usesdiagramfillcolor="0" y="250">
488
-          <floatingdashlinewidget minY="250" isinstance="0" linewidth="0" showstereotype="1" text="else" x="-925" xmi.id="u6zvqQh0Obmjf" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="20" usefillcolor="1" maxY="951.1392822265625" fillcolor="none" localid="uKttmy5ARTPeW" linecolor="#000000" textcolor="none" width="1000" autoresize="1" usesdiagramfillcolor="1" y="850"/>
489
-         </combinedFragmentwidget>
490
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="-475" drawasactor="0" xmi.id="u7lpPNe6in0pc" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uN7sPaVzqcbWp" decon="0" linecolor="#000000" textcolor="#000000" width="190" autoresize="1" usesdiagramfillcolor="1" y="75"/>
491
-         <combinedFragmentwidget isinstance="0" linewidth="0" showstereotype="1" CombinedFragmenttype="7" x="-900" xmi.id="u0y6jSVl9ipqS" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="397.42" usefillcolor="1" fillcolor="#ffffff" localid="uaJNrCQ8fYUfP" documentation="" linecolor="#000000" combinedFragmentname="requestSuccess" textcolor="#000000" width="962.099" autoresize="0" usesdiagramfillcolor="0" y="425">
492
-          <floatingdashlinewidget minY="425" isinstance="0" linewidth="0" showstereotype="1" text="else" x="-900" xmi.id="udCLmSHshu57F" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="20" usefillcolor="1" maxY="822.42034912109375" fillcolor="none" localid="uCL07lHVo6zUW" linecolor="#000000" textcolor="none" width="962" autoresize="1" usesdiagramfillcolor="1" y="625"/>
493
-         </combinedFragmentwidget>
494
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="-925" drawasactor="0" xmi.id="uYKRrg6CmRJAW" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uMPfriSHgkcRL" decon="0" linecolor="#000000" textcolor="#000000" width="145" autoresize="1" usesdiagramfillcolor="1" y="75"/>
495
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="-50" drawasactor="0" xmi.id="uB64HbD6AAD0Q" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uF2y5mXg5j2Ys" decon="0" linecolor="#000000" textcolor="#000000" width="145" autoresize="1" usesdiagramfillcolor="1" y="75"/>
496
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="-650" drawasactor="0" xmi.id="ubdskIrDMId2M" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uVb0eCBnqdgPc" decon="0" linecolor="#000000" textcolor="#000000" width="109" autoresize="1" usesdiagramfillcolor="1" y="75"/>
497
-        </widgets>
498
-        <messages>
499
-         <messagewidget seqnum="" widgetaid="uMPfriSHgkcRL" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-852" xmi.id="uEMjmoujN5z4P" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="20" usefillcolor="1" fillcolor="none" localid="u5fzUaHsEtXQf" linecolor="#000000" widgetbid="uVb0eCBnqdgPc" textcolor="none" width="265" operation="uEMjmoujN5z4P" autoresize="1" usesdiagramfillcolor="1" y="149" textid="usGDKHKmagCJ3">
500
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="isUsernameAvailable(username : String) : boolean" x="-847" xmi.id="usGDKHKmagCJ3" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="u37fJdypeY0Ov" linecolor="#000000" textcolor="none" width="312" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="127"/>
501
-         </messagewidget>
502
-         <messagewidget seqnum="" widgetaid="uMPfriSHgkcRL" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-852" xmi.id="uBdWTTWRUgfvA" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="80" usefillcolor="1" fillcolor="none" localid="u2oQVrkDKr4lZ" linecolor="#000000" widgetbid="uVb0eCBnqdgPc" textcolor="none" width="265" operation="uBdWTTWRUgfvA" autoresize="0" usesdiagramfillcolor="1" y="301" textid="uBNzoWdF8HKDW">
503
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="propagateUsernameChange(username : String)" x="-847" xmi.id="uBNzoWdF8HKDW" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="u2OqnvDbold4t" linecolor="#000000" textcolor="none" width="298" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="279"/>
504
-         </messagewidget>
505
-         <messagewidget seqnum="" widgetaid="uVb0eCBnqdgPc" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-860" xmi.id="ud9sBsKvnymYY" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" fillcolor="none" localid="uPbOWs4dRTZCK" linecolor="#000000" widgetbid="uMPfriSHgkcRL" textcolor="none" width="265" operation="ud9sBsKvnymYY" autoresize="1" usesdiagramfillcolor="1" y="492.13" textid="uXePpBFmscJih">
506
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="update(obs : undef, arg : Object)" x="-804" xmi.id="uXePpBFmscJih" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uMFOzIniuF5zA" linecolor="#000000" textcolor="none" width="204" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="470"/>
507
-         </messagewidget>
508
-         <messagewidget seqnum="" widgetaid="uVb0eCBnqdgPc" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1001" x="-594" xmi.id="uaKA49CvAGdR2" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="8" usefillcolor="1" fillcolor="none" localid="uDwyDSinR5bMt" linecolor="#000000" widgetbid="uN7sPaVzqcbWp" textcolor="none" width="213" operation="uaKA49CvAGdR2" autoresize="1" usesdiagramfillcolor="1" y="337" textid="u8fDzkv0gKwDe">
509
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="sendBroadcast(message : String, callback : Callback)" x="-589" xmi.id="u8fDzkv0gKwDe" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="ufMGNpxfXTj5J" linecolor="#000000" textcolor="none" width="324" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="315"/>
510
-         </messagewidget>
511
-         <messagewidget seqnum="" widgetaid="uN7sPaVzqcbWp" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-603" xmi.id="uGNHIm92iwcLV" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="81" usefillcolor="1" fillcolor="none" localid="uFKPS1Nc8F6Os" linecolor="#000000" widgetbid="uVb0eCBnqdgPc" textcolor="none" width="223" operation="uGNHIm92iwcLV" autoresize="0" usesdiagramfillcolor="1" y="452.899" textid="uCeBy7qxNy9Cd">
512
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="onUsernameChangePropagated()" x="-598" xmi.id="uCeBy7qxNy9Cd" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uddNOBz68YRjC" linecolor="#000000" textcolor="none" width="213" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="430"/>
513
-         </messagewidget>
514
-         <messagewidget seqnum="" widgetaid="uN7sPaVzqcbWp" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-380" xmi.id="umV4CeNUtgQsF" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="101" usefillcolor="1" fillcolor="none" localid="uGEA9g4x57DJn" linecolor="#000000" widgetbid="uF2y5mXg5j2Ys" textcolor="none" width="410" operation="umV4CeNUtgQsF" autoresize="0" usesdiagramfillcolor="1" y="675" textid="uc7YJLMZXwPtx">
515
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="notifyError(error : Exception)" x="-200" xmi.id="uc7YJLMZXwPtx" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="u57MCQyisikci" linecolor="#000000" textcolor="none" width="182" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="653"/>
516
-         </messagewidget>
517
-         <messagewidget seqnum="" widgetaid="uF2y5mXg5j2Ys" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-860" xmi.id="ud9sBsKvnymYY" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" fillcolor="none" localid="uxr1iFREwFu5q" linecolor="#000000" widgetbid="uMPfriSHgkcRL" textcolor="none" width="882" operation="ud9sBsKvnymYY" autoresize="1" usesdiagramfillcolor="1" y="733.159" textid="uZNdXGqxOXDaw">
518
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="update(obs : undef, arg : Object)" x="-187" xmi.id="uZNdXGqxOXDaw" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="u3s9VSms3d0F8" linecolor="#000000" textcolor="none" width="204" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="711"/>
519
-         </messagewidget>
520
-         <messagewidget seqnum="" widgetaid="uMPfriSHgkcRL" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-852" xmi.id="uACwUrs3R8BQS" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="20" usefillcolor="1" fillcolor="none" localid="uM1B1ClAOXBbu" linecolor="#000000" widgetbid="uD0Ja13OB0Dsj" textcolor="none" width="703" operation="uACwUrs3R8BQS" autoresize="0" usesdiagramfillcolor="1" y="576.185" textid="uf99NKxyiEcvD">
521
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="changeUsername(username : String)" x="-575" xmi.id="uf99NKxyiEcvD" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="umjzYbrIKdhCf" linecolor="#000000" textcolor="none" width="232" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="554"/>
522
-         </messagewidget>
523
-        </messages>
524
-        <associations/>
525
-       </diagram>
526
-       <diagram showopsig="1" type="3" showscope="1" canvasheight="442.5" linewidth="0" showops="1" showattribassocs="1" showpackage="1" showstereotype="1" snapgrid="1" canvaswidth="970" xmi.id="ukSNp3b4DiBx2" snapy="25" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" isopen="0" usefillcolor="1" fillcolor="#ffffff" snapx="25" documentation="" showattsig="1" localid="-1" name="viewActiveUsers" backgroundcolor="#ffffff" linecolor="#000000" showpubliconly="0" snapcsgrid="0" showatts="1" textcolor="#000000" showgrid="0" autoincrementsequence="0" zoom="92" griddotcolor="#36383e">
527
-        <widgets>
528
-         <combinedFragmentwidget isinstance="0" linewidth="0" showstereotype="1" CombinedFragmenttype="7" x="-350" xmi.id="ukBpSKemjPwkY" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="315" usefillcolor="1" fillcolor="#ffffff" localid="uX46cR2E9TFmh" documentation="" linecolor="#000000" combinedFragmentname="requestSuccess" textcolor="#000000" width="926" autoresize="0" usesdiagramfillcolor="0" y="200">
529
-          <floatingdashlinewidget minY="200" isinstance="0" linewidth="0" showstereotype="1" text="else" x="-350" xmi.id="uP5Ys3wP9IEZy" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="20" usefillcolor="1" maxY="515" fillcolor="none" localid="uXlS5Wf70DF2w" linecolor="#000000" textcolor="none" width="926" autoresize="1" usesdiagramfillcolor="1" y="325"/>
530
-         </combinedFragmentwidget>
531
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="450" drawasactor="0" xmi.id="uB64HbD6AAD0Q" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uQLdez58JQZRi" decon="0" linecolor="#000000" textcolor="#000000" width="145" autoresize="1" usesdiagramfillcolor="1" y="75"/>
532
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="0" drawasactor="0" xmi.id="ubdskIrDMId2M" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uzto3aHoluaA5" decon="0" linecolor="#000000" textcolor="#000000" width="109" autoresize="1" usesdiagramfillcolor="1" y="75"/>
533
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="-375" drawasactor="0" xmi.id="uYKRrg6CmRJAW" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uCliBVTjsDFw1" decon="0" linecolor="#000000" textcolor="#000000" width="145" autoresize="1" usesdiagramfillcolor="1" y="75"/>
534
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="200" drawasactor="0" xmi.id="u7lpPNe6in0pc" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uvHvgdJ8vUOE3" decon="0" linecolor="#000000" textcolor="#000000" width="190" autoresize="1" usesdiagramfillcolor="1" y="75"/>
535
-        </widgets>
536
-        <messages>
537
-         <messagewidget seqnum="" widgetaid="uvHvgdJ8vUOE3" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="46" xmi.id="uzntm57etBGuh" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="54" usefillcolor="1" fillcolor="none" localid="ujzlmUjG5YTfe" linecolor="#000000" widgetbid="uzto3aHoluaA5" textcolor="none" width="249" operation="uzntm57etBGuh" autoresize="0" usesdiagramfillcolor="1" y="239" textid="uAbKz3WUUdoBe">
538
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="onActiverUserDiscovered(user : ActiveUser)" x="51" xmi.id="uAbKz3WUUdoBe" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uv26LCG3M0tcN" linecolor="#000000" textcolor="none" width="271" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="217"/>
539
-         </messagewidget>
540
-         <messagewidget seqnum="" widgetaid="uzto3aHoluaA5" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-310" xmi.id="ud9sBsKvnymYY" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" fillcolor="none" localid="ub4T7mYgveM8x" linecolor="#000000" widgetbid="uCliBVTjsDFw1" textcolor="none" width="364" operation="ud9sBsKvnymYY" autoresize="1" usesdiagramfillcolor="1" y="252.75" textid="ue2ZGreXqAmsd">
541
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="update(obs : undef, arg : Object)" x="-175" xmi.id="ue2ZGreXqAmsd" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uAzViSYFdfIUV" linecolor="#000000" textcolor="none" width="204" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="230"/>
542
-         </messagewidget>
543
-         <messagewidget seqnum="" widgetaid="uvHvgdJ8vUOE3" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="295" xmi.id="umV4CeNUtgQsF" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="95" usefillcolor="1" fillcolor="none" localid="ulCKsyLxfUyAQ" linecolor="#000000" widgetbid="uQLdez58JQZRi" textcolor="none" width="235" operation="umV4CeNUtgQsF" autoresize="0" usesdiagramfillcolor="1" y="351" textid="uMl7dMIDJKLyM">
544
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="notifyError(error : Exception)" x="300" xmi.id="uMl7dMIDJKLyM" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="ugltt3uecg7BR" linecolor="#000000" textcolor="none" width="182" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="329"/>
545
-         </messagewidget>
546
-         <messagewidget seqnum="" widgetaid="uCliBVTjsDFw1" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-302" xmi.id="uEB1ubPnfwbZn" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="20" usefillcolor="1" fillcolor="none" localid="uOpZt25jWts81" linecolor="#000000" widgetbid="uzto3aHoluaA5" textcolor="none" width="364" operation="uEB1ubPnfwbZn" autoresize="1" usesdiagramfillcolor="1" y="131" textid="umgC7MkDjGgO1">
547
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="discoverActiveUsers()" x="-89" xmi.id="umgC7MkDjGgO1" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uNBcmrRpyOH7j" linecolor="#000000" textcolor="none" width="138" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="109"/>
548
-         </messagewidget>
549
-         <messagewidget seqnum="" widgetaid="uQLdez58JQZRi" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-310" xmi.id="ud9sBsKvnymYY" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" fillcolor="none" localid="u0HbVfAeOofJh" linecolor="#000000" widgetbid="uCliBVTjsDFw1" textcolor="none" width="832" operation="ud9sBsKvnymYY" autoresize="1" usesdiagramfillcolor="1" y="395.2" textid="uhyqxrFWyPADT">
550
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="update(obs : undef, arg : Object)" x="0" xmi.id="uhyqxrFWyPADT" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="u622JEswQUXtd" linecolor="#000000" textcolor="none" width="204" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="373"/>
551
-         </messagewidget>
552
-         <messagewidget seqnum="" widgetaid="uzto3aHoluaA5" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1001" x="55" xmi.id="uaKA49CvAGdR2" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="8" usefillcolor="1" fillcolor="none" localid="ug8OTC2k5DJLz" linecolor="#000000" widgetbid="uvHvgdJ8vUOE3" textcolor="none" width="239" operation="uaKA49CvAGdR2" autoresize="1" usesdiagramfillcolor="1" y="145" textid="uLm6taw1wLaMw">
553
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="sendBroadcast(message : String, callback : Callback)" x="60" xmi.id="uLm6taw1wLaMw" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uIN5THwfpV4jz" linecolor="#000000" textcolor="none" width="324" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="123"/>
554
-         </messagewidget>
555
-        </messages>
556
-        <associations/>
557
-       </diagram>
558
-       <diagram showopsig="1" type="3" showscope="1" canvasheight="551.5" linewidth="0" showops="1" showattribassocs="1" showpackage="1" showstereotype="1" snapgrid="1" canvaswidth="961" xmi.id="uMqzZUmyIqTmj" snapy="25" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" isopen="1" usefillcolor="1" fillcolor="#ffffff" snapx="25" documentation="" showattsig="1" localid="-1" name="viewMessageHistory" backgroundcolor="#ffffff" linecolor="#000000" showpubliconly="0" snapcsgrid="0" showatts="1" textcolor="#000000" showgrid="0" autoincrementsequence="0" zoom="86" griddotcolor="#36383e">
559
-        <widgets>
560
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="-100" drawasactor="0" xmi.id="uMvgLuEK3MyVc" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uDfFsVgVAyNl8" decon="0" linecolor="#000000" textcolor="#000000" width="136" autoresize="1" usesdiagramfillcolor="1" y="75"/>
561
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="-350" drawasactor="0" xmi.id="uYKRrg6CmRJAW" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uKXjmZHs2njEB" decon="0" linecolor="#000000" textcolor="#000000" width="145" autoresize="1" usesdiagramfillcolor="1" y="75"/>
562
-         <combinedFragmentwidget isinstance="0" linewidth="0" showstereotype="1" CombinedFragmenttype="7" x="-350" xmi.id="uI1TsUtyP8lXY" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="374" usefillcolor="1" fillcolor="#ffffff" localid="u5DY4Tzbr4IBh" documentation="" linecolor="#000000" combinedFragmentname="fetchSuccess" textcolor="#000000" width="956" autoresize="0" usesdiagramfillcolor="0" y="250">
563
-          <floatingdashlinewidget minY="250" isinstance="0" linewidth="0" showstereotype="1" text="else" x="-350" xmi.id="uxPMSXR2PUI3Q" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="20" usefillcolor="1" maxY="624" fillcolor="none" localid="uEay7M3SLxT4K" linecolor="#000000" textcolor="none" width="956" autoresize="1" usesdiagramfillcolor="1" y="450"/>
564
-         </combinedFragmentwidget>
565
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="150" drawasactor="0" xmi.id="uJLzR6QLuEycw" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uWwVNq8ObGHJA" decon="0" linecolor="#000000" textcolor="#000000" width="199" autoresize="1" usesdiagramfillcolor="1" y="75"/>
566
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="400" drawasactor="0" xmi.id="uB64HbD6AAD0Q" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uTRTK0EDUgzj4" decon="0" linecolor="#000000" textcolor="#000000" width="145" autoresize="1" usesdiagramfillcolor="1" y="75"/>
567
-        </widgets>
568
-        <messages>
569
-         <messagewidget seqnum="" widgetaid="uKXjmZHs2njEB" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-277" xmi.id="ugbMpRixsT7LO" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="96" usefillcolor="1" fillcolor="none" localid="ubf5uY8TJMDhz" linecolor="#000000" widgetbid="uDfFsVgVAyNl8" textcolor="none" width="253" operation="ugbMpRixsT7LO" autoresize="0" usesdiagramfillcolor="1" y="143" textid="uVbQ6YMABZ6d7">
570
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="refreshHistory()" x="-175" xmi.id="uVbQ6YMABZ6d7" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uiBUInv1jBAEi" linecolor="#000000" textcolor="none" width="103" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="121"/>
571
-         </messagewidget>
572
-         <messagewidget seqnum="" widgetaid="uTRTK0EDUgzj4" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-285" xmi.id="ud9sBsKvnymYY" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" fillcolor="none" localid="ugnHL9hjjfVM4" linecolor="#000000" widgetbid="uKXjmZHs2njEB" textcolor="none" width="757" operation="ud9sBsKvnymYY" autoresize="1" usesdiagramfillcolor="1" y="529" textid="ut1ZT2e5du38B">
573
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="update(obs : undef, arg : Object)" x="0" xmi.id="ut1ZT2e5du38B" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="u3B3QDUevU47g" linecolor="#000000" textcolor="none" width="204" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="507"/>
574
-         </messagewidget>
575
-         <messagewidget seqnum="" widgetaid="uDfFsVgVAyNl8" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1001" x="-31" xmi.id="ushkUTs0K7LsU" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" fillcolor="none" localid="uOk9bS1EO0QWr" linecolor="#000000" widgetbid="uWwVNq8ObGHJA" textcolor="none" width="279" operation="ushkUTs0K7LsU" autoresize="1" usesdiagramfillcolor="1" y="192" textid="uH7Ta47WiFIAZ">
576
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="getChatHistory(callback : HistoryCallback)" x="-17" xmi.id="uH7Ta47WiFIAZ" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uipy6GJCTApiC" linecolor="#000000" textcolor="none" width="261" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="170"/>
577
-         </messagewidget>
578
-         <messagewidget seqnum="" widgetaid="uWwVNq8ObGHJA" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="249" xmi.id="umV4CeNUtgQsF" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="82" usefillcolor="1" fillcolor="none" localid="u8Al2t8c2TVgs" linecolor="#000000" widgetbid="uTRTK0EDUgzj4" textcolor="none" width="231" operation="umV4CeNUtgQsF" autoresize="0" usesdiagramfillcolor="1" y="495" textid="uDrj21wMpgw3F">
579
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="notifyError(error : Exception)" x="275" xmi.id="uDrj21wMpgw3F" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uDy3GB9ldrHcn" linecolor="#000000" textcolor="none" width="182" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="473"/>
580
-         </messagewidget>
581
-         <messagewidget seqnum="" widgetaid="uDfFsVgVAyNl8" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-285" xmi.id="ud9sBsKvnymYY" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" fillcolor="none" localid="uhYOpoJREfED4" linecolor="#000000" widgetbid="uKXjmZHs2njEB" textcolor="none" width="253" operation="ud9sBsKvnymYY" autoresize="1" usesdiagramfillcolor="1" y="324" textid="um1FkAdkzHFYv">
582
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="update(obs : undef, arg : Object)" x="-241" xmi.id="um1FkAdkzHFYv" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uZm8H5HdehBHm" linecolor="#000000" textcolor="none" width="204" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="302"/>
583
-         </messagewidget>
584
-         <messagewidget seqnum="" widgetaid="uWwVNq8ObGHJA" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-40" xmi.id="utDwMOEL4fgkc" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="60" usefillcolor="1" fillcolor="none" localid="ufvWy0Z8vNNjW" linecolor="#000000" widgetbid="uDfFsVgVAyNl8" textcolor="none" width="289" operation="utDwMOEL4fgkc" autoresize="0" usesdiagramfillcolor="1" y="299" textid="uB7kCBf3nDyy1">
585
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="onMessagesFetched()" x="75" xmi.id="uB7kCBf3nDyy1" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uLgQiORHyu1zf" linecolor="#000000" textcolor="none" width="140" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="277"/>
586
-         </messagewidget>
587
-        </messages>
588
-        <associations/>
589
-       </diagram>
590
-       <diagram showopsig="1" type="3" showscope="1" canvasheight="857.29" linewidth="0" showops="1" showattribassocs="1" showpackage="1" showstereotype="1" snapgrid="1" canvaswidth="1145" xmi.id="uQns1Cc1D8H8z" snapy="25" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" isopen="1" usefillcolor="1" fillcolor="#ffffff" snapx="25" documentation="" showattsig="1" localid="-1" name="sendMessage" backgroundcolor="#ffffff" linecolor="#000000" showpubliconly="0" snapcsgrid="0" showatts="1" textcolor="#000000" showgrid="0" autoincrementsequence="0" zoom="62" griddotcolor="#36383e">
591
-        <widgets>
592
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="-300" drawasactor="0" xmi.id="uCZjTydUPQ1Jn" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uMJJiFtN5KWUD" decon="0" linecolor="#000000" textcolor="#000000" width="127" autoresize="1" usesdiagramfillcolor="1" y="75"/>
593
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="500" drawasactor="0" xmi.id="uB64HbD6AAD0Q" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uHhtGT77c8jfR" decon="0" linecolor="#000000" textcolor="#000000" width="145" autoresize="1" usesdiagramfillcolor="1" y="75"/>
594
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="-125" drawasactor="0" xmi.id="u7lpPNe6in0pc" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="u9Mp3QlPUScZQ" decon="0" linecolor="#000000" textcolor="#000000" width="190" autoresize="1" usesdiagramfillcolor="1" y="75"/>
595
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="-500" drawasactor="0" xmi.id="uYKRrg6CmRJAW" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uH5v1fN59O1Xy" decon="0" linecolor="#000000" textcolor="#000000" width="145" autoresize="1" usesdiagramfillcolor="1" y="75"/>
596
-         <combinedFragmentwidget isinstance="0" linewidth="0" showstereotype="1" CombinedFragmenttype="7" x="-475" xmi.id="ueMhzU7K9KzSZ" usesdiagramusefillcolor="0" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="629.79" usefillcolor="1" fillcolor="#ffffff" localid="uAWtWiBmdkUmy" documentation="" linecolor="#000000" combinedFragmentname="requestSuccess" textcolor="#000000" width="1000" autoresize="0" usesdiagramfillcolor="0" y="300">
597
-          <floatingdashlinewidget minY="300" isinstance="0" linewidth="0" showstereotype="1" text="else" x="-475" xmi.id="ucDDgToNwS7JY" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="20" usefillcolor="1" maxY="929.79022216796875" fillcolor="none" localid="ukHZlDNjgI742" linecolor="#000000" textcolor="none" width="1000" autoresize="1" usesdiagramfillcolor="1" y="700"/>
598
-         </combinedFragmentwidget>
599
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="275" drawasactor="0" xmi.id="uJLzR6QLuEycw" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="uh0RWpvrmBzJX" decon="0" linecolor="#000000" textcolor="#000000" width="199" autoresize="1" usesdiagramfillcolor="1" y="75"/>
600
-         <objectwidget isinstance="0" linewidth="0" showstereotype="1" multipleinstance="0" x="100" drawasactor="0" xmi.id="uMvgLuEK3MyVc" usesdiagramusefillcolor="1" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" height="29" usefillcolor="1" fillcolor="none" localid="usPliqjI191i4" decon="0" linecolor="#000000" textcolor="#000000" width="136" autoresize="1" usesdiagramfillcolor="1" y="75"/>
601
-        </widgets>
602
-        <messages>
603
-         <messagewidget seqnum="" widgetaid="u9Mp3QlPUScZQ" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-244" xmi.id="uXDRTyUZxXDCv" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="136" usefillcolor="1" fillcolor="none" localid="unlDk2hqVrgra" linecolor="#000000" widgetbid="uMJJiFtN5KWUD" textcolor="none" width="214" operation="uXDRTyUZxXDCv" autoresize="0" usesdiagramfillcolor="1" y="349.056" textid="uHaMpaPs1Vg9n">
604
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="onMessageSent(message : Message)" x="-239" xmi.id="uHaMpaPs1Vg9n" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uNqMEEi2yegBu" linecolor="#000000" textcolor="none" width="232" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="327"/>
605
-         </messagewidget>
606
-         <messagewidget seqnum="" widgetaid="usPliqjI191i4" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-435" xmi.id="ud9sBsKvnymYY" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" fillcolor="none" localid="u1rmPCIzQFt54" linecolor="#000000" widgetbid="uH5v1fN59O1Xy" textcolor="none" width="603" operation="ud9sBsKvnymYY" autoresize="1" usesdiagramfillcolor="1" y="559.931" textid="ulq5oPC0ueqWG">
607
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="update(obs : undef, arg : Object)" x="-41" xmi.id="ulq5oPC0ueqWG" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="ulUBsO19q0pvz" linecolor="#000000" textcolor="none" width="204" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="537"/>
608
-         </messagewidget>
609
-         <messagewidget seqnum="" widgetaid="u9Mp3QlPUScZQ" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-30" xmi.id="uZyd650tdtLjH" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="59" usefillcolor="1" fillcolor="none" localid="u5KtYU8QlNMUo" linecolor="#000000" widgetbid="usPliqjI191i4" textcolor="none" width="206" operation="uZyd650tdtLjH" autoresize="0" usesdiagramfillcolor="1" y="395.667" textid="ualKvMmUBq37d">
610
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="addMessage(message : Message)" x="-25" xmi.id="ualKvMmUBq37d" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="umJszqR6YvE9b" linecolor="#000000" textcolor="none" width="212" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="373"/>
611
-         </messagewidget>
612
-         <messagewidget seqnum="" widgetaid="uh0RWpvrmBzJX" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="160" xmi.id="uEYZepdrLKW3I" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="109" usefillcolor="1" fillcolor="none" localid="uXB1ye0UQy5Hz" linecolor="#000000" widgetbid="usPliqjI191i4" textcolor="none" width="214" operation="uEYZepdrLKW3I" autoresize="0" usesdiagramfillcolor="1" y="501.833" textid="uZrbejyA8kES3">
613
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="onMessageSaved(message : Message)" x="165" xmi.id="uZrbejyA8kES3" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uckbEvAfFZnwZ" linecolor="#000000" textcolor="none" width="241" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="479"/>
614
-         </messagewidget>
615
-         <messagewidget seqnum="" widgetaid="uHhtGT77c8jfR" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-435" xmi.id="ud9sBsKvnymYY" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="20" usefillcolor="1" fillcolor="none" localid="uXeMUahoJdDbG" linecolor="#000000" widgetbid="uH5v1fN59O1Xy" textcolor="none" width="1007" operation="ud9sBsKvnymYY" autoresize="0" usesdiagramfillcolor="1" y="812.734" textid="us2rqGbUgUv9E">
616
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="update(obs : undef, arg : Object)" x="0" xmi.id="us2rqGbUgUv9E" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uWfW5Rt9uRt44" linecolor="#000000" textcolor="none" width="204" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="790"/>
617
-         </messagewidget>
618
-         <messagewidget seqnum="" widgetaid="u9Mp3QlPUScZQ" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-30" xmi.id="umV4CeNUtgQsF" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="89" usefillcolor="1" fillcolor="none" localid="upHCGdehO37HS" linecolor="#000000" widgetbid="uHhtGT77c8jfR" textcolor="none" width="610" operation="umV4CeNUtgQsF" autoresize="0" usesdiagramfillcolor="1" y="753.949" textid="u5Hv7SSZyhv1A">
619
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="notifyError(error : Exception)" x="275" xmi.id="u5Hv7SSZyhv1A" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uMG3tI3jLl1xm" linecolor="#000000" textcolor="none" width="182" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="731"/>
620
-         </messagewidget>
621
-         <messagewidget seqnum="" widgetaid="uMJJiFtN5KWUD" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1001" x="-235" xmi.id="usL1ETu7nxBtZ" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" fillcolor="none" localid="uWybO66fKTJuu" linecolor="#000000" widgetbid="u9Mp3QlPUScZQ" textcolor="none" width="204" operation="usL1ETu7nxBtZ" autoresize="1" usesdiagramfillcolor="1" y="267.333" textid="uXTv3pMOzetvK">
622
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="sendMessage(message : Message, callback : Callback)" x="-230" xmi.id="uXTv3pMOzetvK" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uajIfc19pc9wK" linecolor="#000000" textcolor="none" width="335" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="245"/>
623
-         </messagewidget>
624
-         <messagewidget seqnum="" widgetaid="uH5v1fN59O1Xy" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1000" x="-427" xmi.id="uXXG5jiBZ5uah" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="63" usefillcolor="1" fillcolor="none" localid="uWSAWvH8OA1sr" linecolor="#000000" widgetbid="uMJJiFtN5KWUD" textcolor="none" width="199" operation="uXXG5jiBZ5uah" autoresize="0" usesdiagramfillcolor="1" y="227" textid="urtFZA3FfOeyg">
625
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="sendMessage(message : Message)" x="-422" xmi.id="urtFZA3FfOeyg" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uP8Ugod0EVzv3" linecolor="#000000" textcolor="none" width="218" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="205"/>
626
-         </messagewidget>
627
-         <messagewidget seqnum="" widgetaid="usPliqjI191i4" isinstance="0" linewidth="0" showstereotype="1" sequencemessagetype="1001" x="169" xmi.id="uSigkdDAzyCXE" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="23" usefillcolor="1" fillcolor="none" localid="upvZrkKsp0411" linecolor="#000000" widgetbid="uh0RWpvrmBzJX" textcolor="none" width="204" operation="uSigkdDAzyCXE" autoresize="1" usesdiagramfillcolor="1" y="427.389" textid="uY8R5zNnBogpV">
628
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="addMessage(message : Message, callback : Callback)" x="174" xmi.id="uY8R5zNnBogpV" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uXcxCP7Bb0Bar" linecolor="#000000" textcolor="none" width="328" role="704" pretext="" autoresize="1" usesdiagramfillcolor="1" y="405"/>
629
-         </messagewidget>
630
-        </messages>
631
-        <associations/>
632
-       </diagram>
633
-      </diagrams>
634
-     </XMI.extension>
635
-    </UML:Model>
636
-    <UML:Model name="Use Case View" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="m1" xmi.id="Use_Case_View">
637
-     <UML:Namespace.ownedElement>
638
-      <UML:Actor name="user" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Use_Case_View" xmi.id="uPSuMIiWs9jIU"/>
639
-      <UML:UseCase name="sendMessage" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Use_Case_View" xmi.id="uj5GeNcPHC9zx"/>
640
-      <UML:UseCase name="receiveMessages" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Use_Case_View" xmi.id="uSmlf4XkA0Tsr"/>
641
-      <UML:UseCase name="viewMessageHistory" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Use_Case_View" xmi.id="u7ki3DxahYlI6"/>
642
-      <UML:UseCase name="changeUsername" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Use_Case_View" xmi.id="uPmNmbygHuiXm"/>
643
-      <UML:UseCase name="viewActiveUsers" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Use_Case_View" xmi.id="umB1eZfkvjWFc"/>
644
-      <UML:Association name="" visibility="public" isSpecification="false" namespace="Use_Case_View" xmi.id="u2k4HBG5v4g8q">
645
-       <UML:Association.connection>
646
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="true" visibility="public" isSpecification="false" changeability="changeable" type="uPSuMIiWs9jIU" xmi.id="u63oPtE0Lafka"/>
647
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="true" visibility="public" isSpecification="false" changeability="changeable" type="uPmNmbygHuiXm" xmi.id="uslLbJG4tT3tZ"/>
648
-       </UML:Association.connection>
649
-      </UML:Association>
650
-      <UML:Association name="" visibility="public" isSpecification="false" namespace="Use_Case_View" xmi.id="uHQfz6vgPc7gu">
651
-       <UML:Association.connection>
652
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="true" visibility="public" isSpecification="false" changeability="changeable" type="uPSuMIiWs9jIU" xmi.id="uFPp9ojHVGy2X"/>
653
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="true" visibility="public" isSpecification="false" changeability="changeable" type="uj5GeNcPHC9zx" xmi.id="u8BNQO95LqGT4"/>
654
-       </UML:Association.connection>
655
-      </UML:Association>
656
-      <UML:Association name="" visibility="public" isSpecification="false" namespace="Use_Case_View" xmi.id="ua5GjcIQNy3VO">
657
-       <UML:Association.connection>
658
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="true" visibility="public" isSpecification="false" changeability="changeable" type="uPSuMIiWs9jIU" xmi.id="utHZ2kBDMLXyZ"/>
659
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="true" visibility="public" isSpecification="false" changeability="changeable" type="uSmlf4XkA0Tsr" xmi.id="u9eW5I1K8e5vR"/>
660
-       </UML:Association.connection>
661
-      </UML:Association>
662
-      <UML:Association name="" visibility="public" isSpecification="false" namespace="Use_Case_View" xmi.id="u9gFY2nWA2tjn">
663
-       <UML:Association.connection>
664
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="true" visibility="public" isSpecification="false" changeability="changeable" type="uPSuMIiWs9jIU" xmi.id="u5Xjzn2pdDKjy"/>
665
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="true" visibility="public" isSpecification="false" changeability="changeable" type="u7ki3DxahYlI6" xmi.id="uDChN8FFpWPuJ"/>
666
-       </UML:Association.connection>
667
-      </UML:Association>
668
-      <UML:Association name="" visibility="public" isSpecification="false" namespace="Use_Case_View" xmi.id="un7jbdHJAdjbs">
669
-       <UML:Association.connection>
670
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="true" visibility="public" isSpecification="false" changeability="changeable" type="uPSuMIiWs9jIU" xmi.id="uearmN2ROlnKg"/>
671
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="true" visibility="public" isSpecification="false" changeability="changeable" type="umB1eZfkvjWFc" xmi.id="uPkkMxTYSfAqX"/>
672
-       </UML:Association.connection>
673
-      </UML:Association>
674
-      <UML:UseCase name="checkUsernameAvailability" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Use_Case_View" xmi.id="uJrPCFgp9ZKpk"/>
675
-      <UML:UseCase name="connectUser" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Use_Case_View" xmi.id="uRPwu0FLBcUPK"/>
676
-      <UML:Dependency name="" visibility="public" client="uj5GeNcPHC9zx" supplier="uRPwu0FLBcUPK" isSpecification="false" namespace="Use_Case_View" xmi.id="u0S05PQ3Cl0TI"/>
677
-      <UML:Dependency name="" visibility="public" client="uSmlf4XkA0Tsr" supplier="uRPwu0FLBcUPK" isSpecification="false" namespace="Use_Case_View" xmi.id="unQDWZWtGFOL6"/>
678
-      <UML:Association name="include" visibility="public" isSpecification="false" namespace="Use_Case_View" xmi.id="uWTkjnO0pEPHS">
679
-       <UML:Association.connection>
680
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="false" visibility="public" isSpecification="false" changeability="changeable" type="uPmNmbygHuiXm" xmi.id="ustTWDUimOw5T"/>
681
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="true" visibility="public" isSpecification="false" changeability="changeable" type="uJrPCFgp9ZKpk" xmi.id="uJrYnFjznjE4y"/>
682
-       </UML:Association.connection>
683
-      </UML:Association>
684
-      <UML:Association name="« include »" visibility="public" isSpecification="false" namespace="Use_Case_View" xmi.id="uDMA4JNfxQj1T">
685
-       <UML:Association.connection>
686
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="false" visibility="public" isSpecification="false" changeability="changeable" type="uPmNmbygHuiXm" xmi.id="uYfwwPzC70mrW"/>
687
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="true" visibility="public" isSpecification="false" changeability="changeable" type="uJrPCFgp9ZKpk" xmi.id="usDvBlZrO9HkA"/>
688
-       </UML:Association.connection>
689
-      </UML:Association>
690
-      <UML:Dependency name="" visibility="public" client="uSmlf4XkA0Tsr" supplier="uRPwu0FLBcUPK" isSpecification="false" namespace="Use_Case_View" xmi.id="uprMUgi8HFKkF"/>
691
-      <UML:Association name="« include »" visibility="public" isSpecification="false" namespace="Use_Case_View" xmi.id="ue7l1TnA4F6S8">
692
-       <UML:Association.connection>
693
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="false" visibility="public" isSpecification="false" changeability="changeable" type="uj5GeNcPHC9zx" xmi.id="ubbT0r4W2tyUH"/>
694
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="true" visibility="public" isSpecification="false" changeability="changeable" type="uRPwu0FLBcUPK" xmi.id="uf7laCu2GaFX7"/>
695
-       </UML:Association.connection>
696
-      </UML:Association>
697
-      <UML:Association name="« include »" visibility="public" isSpecification="false" namespace="Use_Case_View" xmi.id="unbciXgVmVCIK">
698
-       <UML:Association.connection>
699
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="false" visibility="public" isSpecification="false" changeability="changeable" type="uSmlf4XkA0Tsr" xmi.id="ugl5IxZCVarwJ"/>
700
-        <UML:AssociationEnd name="" aggregation="none" isNavigable="true" visibility="public" isSpecification="false" changeability="changeable" type="uRPwu0FLBcUPK" xmi.id="uCrgb1P6cjRJT"/>
701
-       </UML:Association.connection>
702
-      </UML:Association>
703
-      <UML:UseCase name="sendText" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Use_Case_View" xmi.id="uzeM2B6YEkfL0"/>
704
-      <UML:UseCase name="sendImage" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Use_Case_View" xmi.id="uwztC8xg9yTsa"/>
705
-      <UML:UseCase name="sendFile" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Use_Case_View" xmi.id="uDTktcuCOB1PC"/>
706
-      <UML:Generalization name="" parent="uj5GeNcPHC9zx" visibility="public" isSpecification="false" namespace="Use_Case_View" discriminator="" xmi.id="uHjFsI6qP4AYY" child="uzeM2B6YEkfL0"/>
707
-      <UML:Generalization name="" parent="uj5GeNcPHC9zx" visibility="public" isSpecification="false" namespace="Use_Case_View" discriminator="" xmi.id="uqmLeLuQ6YPgC" child="uwztC8xg9yTsa"/>
708
-      <UML:Generalization name="" parent="uj5GeNcPHC9zx" visibility="public" isSpecification="false" namespace="Use_Case_View" discriminator="" xmi.id="uN3usxOkgNa2m" child="uDTktcuCOB1PC"/>
709
-      <UML:UseCase name="receiveText" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Use_Case_View" xmi.id="u2aJU0CMghED6"/>
710
-      <UML:UseCase name="receiveImage" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Use_Case_View" xmi.id="uHAwwLrm4munZ"/>
711
-      <UML:UseCase name="receiveFile" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Use_Case_View" xmi.id="u45tOlitmo7xr"/>
712
-      <UML:Generalization name="" parent="u2aJU0CMghED6" visibility="public" isSpecification="false" namespace="Use_Case_View" discriminator="" xmi.id="uNkTl1NlsTkj8" child="uSmlf4XkA0Tsr"/>
713
-      <UML:Generalization name="" parent="uHAwwLrm4munZ" visibility="public" isSpecification="false" namespace="Use_Case_View" discriminator="" xmi.id="uniiETH3SqQEI" child="uSmlf4XkA0Tsr"/>
714
-      <UML:Generalization name="" parent="uSmlf4XkA0Tsr" visibility="public" isSpecification="false" namespace="Use_Case_View" discriminator="" xmi.id="ukf15Qvn57PMB" child="u2aJU0CMghED6"/>
715
-      <UML:Generalization name="" parent="uSmlf4XkA0Tsr" visibility="public" isSpecification="false" namespace="Use_Case_View" discriminator="" xmi.id="u7c0OqjyRxCkL" child="uHAwwLrm4munZ"/>
716
-      <UML:Generalization name="" parent="uSmlf4XkA0Tsr" visibility="public" isSpecification="false" namespace="Use_Case_View" discriminator="" xmi.id="uepZqycjBUi9z" child="u45tOlitmo7xr"/>
717
-      <UML:Actor name="other users*" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="Use_Case_View" xmi.id="uV1yXcArN3UEJ"/>
718
-     </UML:Namespace.ownedElement>
719
-     <XMI.extension xmi.extender="umbrello">
720
-      <diagrams resolution="96">
721
-       <diagram showopsig="1" type="2" showscope="1" canvasheight="622.122" linewidth="0" showops="1" showattribassocs="1" showpackage="1" showstereotype="1" snapgrid="0" canvaswidth="837.781" xmi.id="uKSxQosg9FbWz" snapy="25" font="JetBrains Mono,11,-1,5,50,0,0,0,0,0,Regular" isopen="0" usefillcolor="1" fillcolor="#ffffff" snapx="25" documentation="" showattsig="1" localid="-1" name="use case" backgroundcolor="#ffffff" linecolor="#000000" showpubliconly="0" snapcsgrid="0" showatts="1" textcolor="#000000" showgrid="0" zoom="81" griddotcolor="#36383e">
722
-        <widgets>
723
-         <actorwidget x="-887.115" showstereotype="1" width="117.32" localid="uuFIFrvU380GD" autoresize="0" usesdiagramfillcolor="0" height="117.32" linecolor="#000000" usesdiagramusefillcolor="0" fillcolor="#ffffff" isinstance="0" linewidth="0" usefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" y="-56.9256" xmi.id="uPSuMIiWs9jIU" textcolor="#000000"/>
724
-         <boxwidget x="-711.712" showstereotype="1" width="662.378" localid="ujiIBpdNO0SWg" autoresize="0" usesdiagramfillcolor="0" height="622.122" linecolor="#000000" usesdiagramusefillcolor="0" fillcolor="#ffffff" isinstance="0" linewidth="0" usefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" y="-265.257" xmi.id="udzFBpgmt9Rar" textcolor="#000000"/>
725
-         <usecasewidget x="-301.809" showstereotype="1" width="87" localid="uNDLgZwTL81nZ" autoresize="1" usesdiagramfillcolor="0" height="53" linecolor="#000000" usesdiagramusefillcolor="0" fillcolor="#ffffff" isinstance="0" linewidth="0" usefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" y="85.4308" xmi.id="uRPwu0FLBcUPK" textcolor="#000000"/>
726
-         <usecasewidget x="-180.655" showstereotype="1" width="70" localid="uyox5IivZNSDf" autoresize="1" usesdiagramfillcolor="0" height="53" linecolor="#000000" usesdiagramusefillcolor="0" fillcolor="#ffffff" isinstance="0" linewidth="0" usefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" y="-122.901" xmi.id="uzeM2B6YEkfL0" textcolor="#000000"/>
727
-         <usecasewidget x="-190.856" showstereotype="1" width="70" localid="uyVS48740zL03" autoresize="1" usesdiagramfillcolor="0" height="53" linecolor="#000000" usesdiagramusefillcolor="0" fillcolor="#ffffff" isinstance="0" linewidth="0" usefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" y="26.0536" xmi.id="uDTktcuCOB1PC" textcolor="#000000"/>
728
-         <usecasewidget x="-479.603" showstereotype="1" width="98.9293" localid="u2i2swex4N2Tl" autoresize="0" usesdiagramfillcolor="0" height="53" linecolor="#000000" usesdiagramusefillcolor="0" fillcolor="#ffffff" isinstance="0" linewidth="0" usefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" y="-54.8367" xmi.id="uj5GeNcPHC9zx" textcolor="#000000"/>
729
-         <usecasewidget x="-175.985" showstereotype="1" width="79" localid="uJm4A27YPsvP7" autoresize="1" usesdiagramfillcolor="0" height="53" linecolor="#000000" usesdiagramusefillcolor="0" fillcolor="#ffffff" isinstance="0" linewidth="0" usefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" y="-48.9734" xmi.id="uwztC8xg9yTsa" textcolor="#000000"/>
730
-         <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="Clavardator-3000 PRO Lite" x="-700.34" xmi.id="uGZ1kgrsMbtJQ" usesdiagramusefillcolor="0" font="Comfortaa,16,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="#ffffff" localid="uXkjpUzM3v3pf" linecolor="#000000" textcolor="#000000" width="168" role="700" pretext="" autoresize="1" usesdiagramfillcolor="0" y="-258.526"/>
731
-         <usecasewidget x="-492.507" showstereotype="1" width="119" localid="ucDbXTtbgfaEh" autoresize="1" usesdiagramfillcolor="0" height="53" linecolor="#000000" usesdiagramusefillcolor="0" fillcolor="#ffffff" isinstance="0" linewidth="0" usefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" y="-223.022" xmi.id="uPmNmbygHuiXm" textcolor="#000000"/>
732
-         <usecasewidget x="-521.705" showstereotype="1" width="109" localid="u2ZQiET8JNrC1" autoresize="1" usesdiagramfillcolor="0" height="53" linecolor="#000000" usesdiagramusefillcolor="0" fillcolor="#ffffff" isinstance="0" linewidth="0" usefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" y="222.259" xmi.id="umB1eZfkvjWFc" textcolor="#000000"/>
733
-         <usecasewidget x="-529.569" showstereotype="1" width="137" localid="uqXa4Riwvx7os" autoresize="1" usesdiagramfillcolor="0" height="53" linecolor="#000000" usesdiagramusefillcolor="0" fillcolor="#ffffff" isinstance="0" linewidth="0" usefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" y="121.949" xmi.id="u7ki3DxahYlI6" textcolor="#000000"/>
734
-        </widgets>
735
-        <messages/>
736
-        <associations>
737
-         <assocwidget seqnum="" type="500" widgetaid="uwztC8xg9yTsa" linewidth="0" totalcounta="2" indexa="1" xmi.id="uqmLeLuQ6YPgC" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="upUCtFlShSIpA" linecolor="#000000" widgetbid="uj5GeNcPHC9zx" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1">
738
-          <linepath layout="Direct">
739
-           <startpoint startx="-175.985" starty="-17.9684"/>
740
-           <endpoint endy="-17.9684" endx="-380.674"/>
741
-          </linepath>
742
-         </assocwidget>
743
-         <assocwidget seqnum="" type="500" widgetaid="uDTktcuCOB1PC" linewidth="0" totalcounta="2" indexa="1" xmi.id="uN3usxOkgNa2m" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="utX4GzrhOylOX" linecolor="#000000" widgetbid="uj5GeNcPHC9zx" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1">
744
-          <linepath layout="Direct">
745
-           <startpoint startx="-190.856" starty="26.0536"/>
746
-           <endpoint endy="-1.8367" endx="-380.674"/>
747
-          </linepath>
748
-         </assocwidget>
749
-         <assocwidget seqnum="" type="500" widgetaid="uzeM2B6YEkfL0" linewidth="0" totalcounta="2" indexa="1" xmi.id="uHjFsI6qP4AYY" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="uaJfwzZurCbcg" linecolor="#000000" widgetbid="uj5GeNcPHC9zx" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1">
750
-          <linepath layout="Direct">
751
-           <startpoint startx="-180.655" starty="-69.901"/>
752
-           <endpoint endy="-54.8367" endx="-380.674"/>
753
-          </linepath>
754
-         </assocwidget>
755
-         <assocwidget seqnum="" type="503" widgetaid="uPSuMIiWs9jIU" linewidth="0" totalcounta="2" indexa="1" xmi.id="un7jbdHJAdjbs" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="uTr8zMyGJaPU3" linecolor="#000000" widgetbid="umB1eZfkvjWFc" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1">
756
-          <linepath layout="Direct">
757
-           <startpoint startx="-769.795" starty="60.3944"/>
758
-           <endpoint endy="222.259" endx="-521.705"/>
759
-          </linepath>
760
-         </assocwidget>
761
-         <assocwidget seqnum="" type="512" widgetaid="uj5GeNcPHC9zx" linewidth="0" totalcounta="2" indexa="1" xmi.id="ue7l1TnA4F6S8" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="uJs1AJfz1AI6r" linecolor="#000000" widgetbid="uRPwu0FLBcUPK" textcolor="#000000" indexb="1" autoresize="1" usesdiagramfillcolor="1">
762
-          <linepath layout="Direct">
763
-           <startpoint startx="-380.674" starty="-1.8367"/>
764
-           <endpoint endy="85.4308" endx="-301.809"/>
765
-          </linepath>
766
-          <floatingtext isinstance="0" linewidth="0" showstereotype="1" text="« include »" x="-409.901" xmi.id="uqxmPhVH1NTou" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" height="22" usefillcolor="1" posttext="" fillcolor="none" localid="uipuWYvPFGJZb" linecolor="#000000" textcolor="none" width="72" role="703" pretext="" autoresize="1" usesdiagramfillcolor="1" y="44.0706"/>
767
-         </assocwidget>
768
-         <assocwidget seqnum="" type="503" widgetaid="uPSuMIiWs9jIU" linewidth="0" totalcounta="2" indexa="1" xmi.id="uHQfz6vgPc7gu" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="u6xwaNdEovRPH" linecolor="#000000" widgetbid="uj5GeNcPHC9zx" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1">
769
-          <linepath layout="Direct">
770
-           <startpoint startx="-769.795" starty="-17.9684"/>
771
-           <endpoint endy="-17.9684" endx="-479.603"/>
772
-          </linepath>
773
-         </assocwidget>
774
-         <assocwidget seqnum="" type="503" widgetaid="uPSuMIiWs9jIU" linewidth="0" totalcounta="2" indexa="1" xmi.id="u9gFY2nWA2tjn" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="umazzOmogJLbG" linecolor="#000000" widgetbid="u7ki3DxahYlI6" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1">
775
-          <linepath layout="Direct">
776
-           <startpoint startx="-769.795" starty="60.3944"/>
777
-           <endpoint endy="121.949" endx="-529.569"/>
778
-          </linepath>
779
-         </assocwidget>
780
-         <assocwidget seqnum="" type="503" widgetaid="uPSuMIiWs9jIU" linewidth="0" totalcounta="2" indexa="1" xmi.id="u2k4HBG5v4g8q" usesdiagramusefillcolor="1" font="Noto Sans,10,-1,0,50,0,0,0,0,0,Regular" totalcountb="2" usefillcolor="1" fillcolor="none" localid="uCxVpSzXx4TgN" linecolor="#000000" widgetbid="uPmNmbygHuiXm" textcolor="none" indexb="1" autoresize="1" usesdiagramfillcolor="1">
781
-          <linepath layout="Direct">
782
-           <startpoint startx="-769.795" starty="-56.9256"/>
783
-           <endpoint endy="-170.022" endx="-492.507"/>
784
-          </linepath>
785
-         </assocwidget>
786
-        </associations>
787
-       </diagram>
788
-      </diagrams>
789
-     </XMI.extension>
790
-    </UML:Model>
791
-    <UML:Model name="Component View" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="m1" xmi.id="Component_View">
792
-     <UML:Namespace.ownedElement/>
793
-    </UML:Model>
794
-    <UML:Model name="Deployment View" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="m1" xmi.id="Deployment_View">
795
-     <UML:Namespace.ownedElement/>
796
-    </UML:Model>
797
-    <UML:Model name="Entity Relationship Model" isAbstract="false" visibility="public" isSpecification="false" isLeaf="false" isRoot="false" namespace="m1" xmi.id="Entity_Relationship_Model">
798
-     <UML:Namespace.ownedElement/>
799
-    </UML:Model>
800
-   </UML:Namespace.ownedElement>
801
-  </UML:Model>
802
- </XMI.content>
803
- <XMI.extensions xmi.extender="umbrello">
804
-  <docsettings documentation="" uniqueid="u49Z5gm6mYWCE" viewid="uVu7uqEenPeYW"/>
805
-  <listview>
806
-   <listitem open="1" type="800" id="Views">
807
-    <listitem open="1" type="821" id="Component_View"/>
808
-    <listitem open="1" type="827" id="Deployment_View"/>
809
-    <listitem open="1" type="836" id="Entity_Relationship_Model"/>
810
-    <listitem open="1" type="801" id="Logical_View">
811
-     <listitem open="1" type="813" id="uCZjTydUPQ1Jn">
812
-      <listitem open="0" type="814" id="uyIBX9tSjiYsx"/>
813
-      <listitem open="0" type="815" id="uXDRTyUZxXDCv"/>
814
-      <listitem open="0" type="815" id="uXXG5jiBZ5uah"/>
815
-     </listitem>
816
-     <listitem open="1" type="813" id="u04Qm3WZC4Dm7">
817
-      <listitem open="0" type="815" id="usmiQ4UnkVvOa"/>
818
-     </listitem>
819
-     <listitem open="1" type="813" id="uGoMRG7f9P0cG"/>
820
-     <listitem open="1" type="813" id="uHHtYzLw61Ywa"/>
821
-     <listitem open="1" type="813" id="uavPXrvQlWUv4"/>
822
-     <listitem open="0" label="changeUsername" type="810" id="uGaCUFgq8XYbv"/>
823
-     <listitem open="1" type="813" id="uMvgLuEK3MyVc">
824
-      <listitem open="0" type="815" id="uZyd650tdtLjH"/>
825
-      <listitem open="0" type="814" id="unZPfZl7jhR6L"/>
826
-      <listitem open="0" type="815" id="uEYZepdrLKW3I"/>
827
-      <listitem open="0" type="815" id="utDwMOEL4fgkc"/>
828
-      <listitem open="0" type="815" id="ugbMpRixsT7LO"/>
829
-     </listitem>
830
-     <listitem open="0" label="class diagram" type="807" id="uVu7uqEenPeYW"/>
831
-     <listitem open="1" type="813" id="u2ydP9LaNavW9">
832
-      <listitem open="0" type="815" id="uACwUrs3R8BQS"/>
833
-     </listitem>
834
-     <listitem open="1" type="813" id="uJLzR6QLuEycw">
835
-      <listitem open="0" type="815" id="uSigkdDAzyCXE"/>
836
-      <listitem open="0" type="815" id="u3YiQSRK59Hi5"/>
837
-      <listitem open="0" type="815" id="ushkUTs0K7LsU"/>
838
-     </listitem>
839
-     <listitem open="0" type="830" id="Datatypes">
840
-      <listitem open="0" type="829" id="uuXBZMoYOYSaM"/>
841
-      <listitem open="1" type="829" id="uNCMLbwou3joQ"/>
842
-      <listitem open="1" type="829" id="uq7gti6DTLbuk"/>
843
-      <listitem open="1" type="829" id="uVu06m9mlUXrE"/>
844
-      <listitem open="1" type="829" id="ulREkeqZpp0ao"/>
845
-      <listitem open="0" type="829" id="uchsEHkyw0mhl"/>
846
-      <listitem open="1" type="829" id="uyOiLtMiZ2jHc"/>
847
-      <listitem open="1" type="829" id="uIpZjHlEoz0Vt"/>
848
-      <listitem open="0" type="829" id="uYCPKCjlSdVhN"/>
849
-      <listitem open="1" type="829" id="uKOoyaASEX8q0"/>
850
-      <listitem open="0" type="829" id="uBBNaShXZBKQT"/>
851
-      <listitem open="1" type="829" id="uC3FLBfLgDEhN"/>
852
-      <listitem open="0" type="829" id="uWQiowYe4nFaZ"/>
853
-      <listitem open="1" type="829" id="uge2sGQAz2ASh"/>
854
-      <listitem open="1" type="829" id="uX6Df51OAZt5R"/>
855
-      <listitem open="1" type="829" id="uLnJvHDyRVRio"/>
856
-      <listitem open="0" type="829" id="uLpUkzAJOaLSx"/>
857
-      <listitem open="0" type="829" id="u5R4kCxRJFgvc"/>
858
-      <listitem open="1" type="829" id="uWara7WKgmI2M"/>
859
-      <listitem open="1" type="829" id="uk0VwLxmv6yPv"/>
860
-      <listitem open="1" type="829" id="uAvbnwAb5DRkV"/>
861
-      <listitem open="0" type="829" id="uHGWk4b2dl7Ai"/>
862
-      <listitem open="0" type="829" id="ugBgYZ4m7Hzug"/>
863
-      <listitem open="0" type="829" id="uEyGiyPL3pt24"/>
864
-      <listitem open="0" type="829" id="ut0ufObD1Lxax"/>
865
-      <listitem open="0" type="829" id="usMRW6EYizS4L"/>
866
-      <listitem open="0" type="829" id="unPFzh6A5OwZ2"/>
867
-      <listitem open="1" type="829" id="urG82CYprwXM8"/>
868
-      <listitem open="1" type="829" id="uTVshVpYK1LCz"/>
869
-      <listitem open="1" type="829" id="u0i1FB6SsYSvy"/>
870
-      <listitem open="1" type="829" id="ux25YPKkHHPLY"/>
871
-      <listitem open="0" type="829" id="u0w2NtfM1frzy"/>
872
-      <listitem open="0" type="829" id="upB9uN8iNuj5J"/>
873
-      <listitem open="0" type="829" id="ukvcoZUurK4H4"/>
874
-      <listitem open="0" type="829" id="uvIVjxSQ633RP"/>
875
-      <listitem open="0" type="829" id="ul1iiaDWY4Q8k"/>
876
-      <listitem open="0" type="829" id="uEYLz1VvWjMoL"/>
877
-     </listitem>
878
-     <listitem open="1" type="813" id="uz0vg84Fk7MY0"/>
879
-     <listitem open="1" type="813" id="uB64HbD6AAD0Q">
880
-      <listitem open="0" type="815" id="umV4CeNUtgQsF"/>
881
-     </listitem>
882
-     <listitem open="1" type="813" id="u9VFYVmCG9TOq"/>
883
-     <listitem open="1" type="813" id="uRzT6LGkcbsJm"/>
884
-     <listitem open="1" type="813" id="uL87NkWKxdeZu">
885
-      <listitem open="0" type="814" id="uys11jr9acw2f"/>
886
-      <listitem open="0" type="815" id="uso8RS4GdgOL9"/>
887
-     </listitem>
888
-     <listitem open="1" type="813" id="uRfb8kwNLXiyz"/>
889
-     <listitem open="1" type="813" id="uO3n9QAZIb9UW"/>
890
-     <listitem open="1" type="813" id="u7lpPNe6in0pc">
891
-      <listitem open="0" type="815" id="uaKA49CvAGdR2"/>
892
-      <listitem open="0" type="815" id="usL1ETu7nxBtZ"/>
893
-      <listitem open="0" type="814" id="umKIYFAMLtn8h"/>
894
-     </listitem>
895
-     <listitem open="1" type="813" id="uz1gW6vUowkjd"/>
896
-     <listitem open="1" type="813" id="uMukxNtG4j8CL">
897
-      <listitem open="0" type="815" id="uYrEqTzcOyWZm"/>
898
-      <listitem open="0" type="815" id="uiFfJ18j5Ut4c"/>
899
-      <listitem open="0" type="815" id="u0R1WhCROUrcp"/>
900
-     </listitem>
901
-     <listitem open="1" type="817" id="uqtMdczmUK7dZ">
902
-      <listitem open="0" type="815" id="ud9sBsKvnymYY"/>
903
-     </listitem>
904
-     <listitem open="1" type="813" id="ufU9jurmLpKD0">
905
-      <listitem open="0" type="815" id="uqcKJzzTIUZCd"/>
906
-      <listitem open="0" type="814" id="uEd3zgxXoF6Nw"/>
907
-     </listitem>
908
-     <listitem open="0" label="sendMessage" type="810" id="uQns1Cc1D8H8z"/>
909
-     <listitem open="1" type="813" id="urj16oLJpHspa"/>
910
-     <listitem open="1" type="813" id="uDrG4ROJHVasS"/>
911
-     <listitem open="1" type="813" id="ubVqOwF4sMNEQ">
912
-      <listitem open="0" type="815" id="uwXNbdS0ts0u3"/>
913
-      <listitem open="0" type="815" id="uxqF92VezXaZe"/>
914
-      <listitem open="0" type="815" id="u9eF6qFWLCQ1m"/>
915
-     </listitem>
916
-     <listitem open="1" type="813" id="uYKRrg6CmRJAW">
917
-      <listitem open="0" type="814" id="uQhNOdhGIR0uG"/>
918
-      <listitem open="0" type="814" id="ugAEYxEUffkRe"/>
919
-     </listitem>
920
-     <listitem open="1" type="813" id="uXJ6llv1PM3IG">
921
-      <listitem open="0" type="815" id="uEIjmpY0s7lyZ"/>
922
-      <listitem open="0" type="814" id="uz5hFEtLHsR2K"/>
923
-     </listitem>
924
-     <listitem open="1" type="813" id="ubdskIrDMId2M">
925
-      <listitem open="0" type="814" id="ube4u4nmINPfw"/>
926
-      <listitem open="0" type="814" id="u49H8SEmPmGzU"/>
927
-      <listitem open="0" type="815" id="uEB1ubPnfwbZn"/>
928
-      <listitem open="0" type="814" id="uCTmUvmY49sQm"/>
929
-      <listitem open="0" type="815" id="uEMjmoujN5z4P"/>
930
-      <listitem open="0" type="814" id="u0pyt1q3GkiyH"/>
931
-      <listitem open="0" type="815" id="uzntm57etBGuh"/>
932
-      <listitem open="0" type="815" id="uGNHIm92iwcLV"/>
933
-      <listitem open="0" type="815" id="uBdWTTWRUgfvA"/>
934
-     </listitem>
935
-     <listitem open="1" type="813" id="uXwcH2ETd0Xtm"/>
936
-     <listitem open="0" label="viewActiveUsers" type="810" id="ukSNp3b4DiBx2"/>
937
-     <listitem open="0" label="viewMessageHistory" type="810" id="uMqzZUmyIqTmj"/>
938
-    </listitem>
939
-    <listitem open="1" type="802" id="Use_Case_View">
940
-     <listitem open="1" type="812" id="uPmNmbygHuiXm"/>
941
-     <listitem open="1" type="812" id="uJrPCFgp9ZKpk"/>
942
-     <listitem open="1" type="812" id="uRPwu0FLBcUPK"/>
943
-     <listitem open="1" type="811" id="uV1yXcArN3UEJ"/>
944
-     <listitem open="1" type="812" id="u45tOlitmo7xr"/>
945
-     <listitem open="1" type="812" id="uHAwwLrm4munZ"/>
946
-     <listitem open="1" type="812" id="uSmlf4XkA0Tsr"/>
947
-     <listitem open="1" type="812" id="u2aJU0CMghED6"/>
948
-     <listitem open="1" type="812" id="uDTktcuCOB1PC"/>
949
-     <listitem open="1" type="812" id="uwztC8xg9yTsa"/>
950
-     <listitem open="1" type="812" id="uj5GeNcPHC9zx"/>
951
-     <listitem open="1" type="812" id="uzeM2B6YEkfL0"/>
952
-     <listitem open="0" label="use case" type="805" id="uKSxQosg9FbWz"/>
953
-     <listitem open="1" type="811" id="uPSuMIiWs9jIU"/>
954
-     <listitem open="1" type="812" id="umB1eZfkvjWFc"/>
955
-     <listitem open="1" type="812" id="u7ki3DxahYlI6"/>
956
-    </listitem>
957
-   </listitem>
958
-  </listview>
959
-  <codegeneration>
960
-   <codegenerator language="Java"/>
961
-  </codegeneration>
962
- </XMI.extensions>
963
-</XMI>

BIN
report/conception/sendMessage.png View File


BIN
report/conception/use case.png View File


BIN
report/conception/viewActiveUsers.png View File


BIN
report/conception/viewMessageHistory.png View File


BIN
report/report.pdf View File


Loading…
Cancel
Save