From 8e9a69fb668d8bd30fed299d28d40cba3434d47d Mon Sep 17 00:00:00 2001 From: Robin Strand Prestmo Date: Thu, 19 Feb 2026 11:07:15 +0100 Subject: [PATCH 01/13] Added User class --- helpmehelpapplication/.idea/.gitignore | 10 ++++ .../.idea/checkstyle-idea.xml | 15 ++++++ helpmehelpapplication/.idea/compiler.xml | 13 +++++ .../.idea/dictionaries/project.xml | 7 +++ .../inspectionProfiles/Project_Default.xml | 8 +++ .../.idea/jarRepositories.xml | 20 ++++++++ helpmehelpapplication/.idea/misc.xml | 12 +++++ helpmehelpapplication/.idea/vcs.xml | 6 +++ .../sytemutvikling/team6/models/User.java | 51 +++++++++++++++++++ 9 files changed, 142 insertions(+) create mode 100644 helpmehelpapplication/.idea/.gitignore create mode 100644 helpmehelpapplication/.idea/checkstyle-idea.xml create mode 100644 helpmehelpapplication/.idea/compiler.xml create mode 100644 helpmehelpapplication/.idea/dictionaries/project.xml create mode 100644 helpmehelpapplication/.idea/inspectionProfiles/Project_Default.xml create mode 100644 helpmehelpapplication/.idea/jarRepositories.xml create mode 100644 helpmehelpapplication/.idea/misc.xml create mode 100644 helpmehelpapplication/.idea/vcs.xml diff --git a/helpmehelpapplication/.idea/.gitignore b/helpmehelpapplication/.idea/.gitignore new file mode 100644 index 0000000..ab1f416 --- /dev/null +++ b/helpmehelpapplication/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/helpmehelpapplication/.idea/checkstyle-idea.xml b/helpmehelpapplication/.idea/checkstyle-idea.xml new file mode 100644 index 0000000..db90706 --- /dev/null +++ b/helpmehelpapplication/.idea/checkstyle-idea.xml @@ -0,0 +1,15 @@ + + + + 13.2.0 + JavaOnly + + + \ No newline at end of file diff --git a/helpmehelpapplication/.idea/compiler.xml b/helpmehelpapplication/.idea/compiler.xml new file mode 100644 index 0000000..5c8171b --- /dev/null +++ b/helpmehelpapplication/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/helpmehelpapplication/.idea/dictionaries/project.xml b/helpmehelpapplication/.idea/dictionaries/project.xml new file mode 100644 index 0000000..e01d6da --- /dev/null +++ b/helpmehelpapplication/.idea/dictionaries/project.xml @@ -0,0 +1,7 @@ + + + + Prestmo + + + \ No newline at end of file diff --git a/helpmehelpapplication/.idea/inspectionProfiles/Project_Default.xml b/helpmehelpapplication/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..769a78f --- /dev/null +++ b/helpmehelpapplication/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/helpmehelpapplication/.idea/jarRepositories.xml b/helpmehelpapplication/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/helpmehelpapplication/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/helpmehelpapplication/.idea/misc.xml b/helpmehelpapplication/.idea/misc.xml new file mode 100644 index 0000000..5e4e294 --- /dev/null +++ b/helpmehelpapplication/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/helpmehelpapplication/.idea/vcs.xml b/helpmehelpapplication/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/helpmehelpapplication/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java index c51d84b..09e8c0d 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java @@ -1,4 +1,55 @@ package ntnu.sytemutvikling.team6.models; +import java.util.UUID; + +// Passord må hashes!!! + +/** + * Represents a user. + * + * @Author Robin Strand Prestmo + */ public class User { + private UUID id; + private String name; + private String email; + private String password; + private String role; + private Settings settings; + private Inbox inbox; + + /** + * Creates a new user + * + * @param id gives the user a unique identifier with UUID + * @param name the name of the user + * @param email the email of the user + * @param password the password for the user + * @param role users role + * @param settings the user´s settings + * @param inbox the user´s inbox + * + * @Author Robin Strand Prestmo + */ + public User(UUID id, + String name, + String email, + String password, + String role, + Settings settings, + Inbox inbox) { + + this.id = id; + this.name = name; + this.email = email; + this.password = password; + this.role = role; + this.settings = settings; + this.inbox = inbox; + } + + // Add Getters + + // Add Setters + } From d3ce9d4517a41404e884973e9564d72ece1715fb Mon Sep 17 00:00:00 2001 From: Robin Strand Prestmo Date: Thu, 19 Feb 2026 11:30:32 +0100 Subject: [PATCH 02/13] Added Settings class --- .../sytemutvikling/team6/models/Settings.java | 39 ++++++++++++++++++- .../sytemutvikling/team6/models/User.java | 2 + 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Settings.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Settings.java index 71e218a..1752bc3 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Settings.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Settings.java @@ -1,5 +1,42 @@ package ntnu.sytemutvikling.team6.models; +// Mangler unntakshåndtering +// Mangler Enhetstesting + +/** + * Represents the settings for a user + * + * @Author Robin Strand Prestmo + */ public class Settings { - + private boolean lightMode; + private String language; + private boolean anonymous; + + /** + * Creates settings for a user + * + * @param lightMode choose between light or dark mode + * @param language choose language + * @param anonymous choose if user is anonymous + * + * @Author Robin Strand Prestmo + */ + public Settings(boolean lightMode, String language, boolean anonymous) { + this.lightMode = lightMode; + this.language = language; + this.anonymous = anonymous; + } + + public boolean getLightmode() { + return lightMode; + } + + public String getLanguage() { + return language; + } + + public boolean getAnonymous() { + return anonymous; + } } diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java index 09e8c0d..a84984b 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java @@ -3,6 +3,8 @@ import java.util.UUID; // Passord må hashes!!! +// Unntakshåndtering mangler +// Enhetstesting mangler /** * Represents a user. From 6e4393dbee1aec9868c20d04cfdfd61d5068ccc5 Mon Sep 17 00:00:00 2001 From: Robin Strand Prestmo Date: Thu, 19 Feb 2026 12:01:24 +0100 Subject: [PATCH 03/13] Added Inbox class --- .../sytemutvikling/team6/models/Inbox.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java index 75fed79..d26df39 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java @@ -1,5 +1,29 @@ package ntnu.sytemutvikling.team6.models; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +// Unntakshåndtering mangler +// Enhetstester mangler +// Message får kanskje en UUID, da er det mer fornuftig å bruke denne, vertfall for removeMessage + public class Inbox { - + private final List messages; + + public Inbox(){ + this.messages = new ArrayList<>(); + } + + public List getMessages() { + return Collections.unmodifiableList(messages); + } + + public void addMessage(Message message) { + messages.add(message); + } + + public boolean removeMessage(Message message) { + return messages.remove(message); + } } From 806dbbc2dd99311fa56299ffbc113b3cc28a23d2 Mon Sep 17 00:00:00 2001 From: Robin Strand Prestmo Date: Thu, 19 Feb 2026 14:37:31 +0100 Subject: [PATCH 04/13] Added javadoc to Inbox --- .../sytemutvikling/team6/models/Inbox.java | 20 +++++++++++++++++++ .../sytemutvikling/team6/models/Settings.java | 1 - .../sytemutvikling/team6/models/User.java | 1 - 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java index d26df39..1cbc64c 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java @@ -8,13 +8,27 @@ // Enhetstester mangler // Message får kanskje en UUID, da er det mer fornuftig å bruke denne, vertfall for removeMessage +/** + * Represents a users inbox that contains messages. + * Provides methods to add, remove and get messages. + * + * @Author Robin Strand Prestmo + */ public class Inbox { private final List messages; + /** + * Creates an empty inbox with no messages. + */ public Inbox(){ this.messages = new ArrayList<>(); } + /** + * Returns an unmodifiable view of the messages in this inbox. + * + * @return an unmodifiable list of messages. + */ public List getMessages() { return Collections.unmodifiableList(messages); } @@ -23,6 +37,12 @@ public void addMessage(Message message) { messages.add(message); } + /** + * Removes a message from the inbox list. + * + * @param message the message to be removed + * @return true if the message was removed, false if not found. + */ public boolean removeMessage(Message message) { return messages.remove(message); } diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Settings.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Settings.java index 1752bc3..7fbf333 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Settings.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Settings.java @@ -20,7 +20,6 @@ public class Settings { * @param language choose language * @param anonymous choose if user is anonymous * - * @Author Robin Strand Prestmo */ public Settings(boolean lightMode, String language, boolean anonymous) { this.lightMode = lightMode; diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java index a84984b..72346e7 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java @@ -31,7 +31,6 @@ public class User { * @param settings the user´s settings * @param inbox the user´s inbox * - * @Author Robin Strand Prestmo */ public User(UUID id, String name, From 9cd4106582d8cba21397afc11b4223aed7d64ba7 Mon Sep 17 00:00:00 2001 From: Robin Strand Prestmo Date: Thu, 19 Feb 2026 14:51:23 +0100 Subject: [PATCH 05/13] Added Message class --- .../sytemutvikling/team6/models/Message.java | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Message.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Message.java index e69de29..6a1d53e 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Message.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Message.java @@ -0,0 +1,64 @@ +package ntnu.sytemutvikling.team6.models; + +import java.time.LocalDateTime; +import java.util.UUID; + +// Unntakshåndtering mangler +// Enhetstester mangler + +/** + * Represents a message + * + * @Author Robin Strand Prestmo + */ +public class Message { + private UUID id; + private String title; + private String from; + private String content; + private LocalDateTime timeAndDate; + + /** + * Creates a message with an unique identifier. + * The message includes a title, a string who its from, + * content and the time and date. + * + * @param id an unique identifier using UUID + * @param title the title of the message + * @param from who the message is from + * @param content the content of the message + * @param timeAndDate when the message was sent. + */ + public Message(UUID id, + String title, + String from, + String content, + LocalDateTime timeAndDate) { + this.id = id; + this.title = title; + this.from = from; + this.content = content; + this.timeAndDate = timeAndDate; + } + + public UUID getId() { + return id; + } + + public String getTitle() { + return title; + } + + public String getFrom() { + return from; + } + + public String getContent() { + return content; + } + + public LocalDateTime getTimeAndDate() { + return timeAndDate; + } + +} \ No newline at end of file From 9b827848cf8301ef05681b230db37b911685110b Mon Sep 17 00:00:00 2001 From: Robin Strand Prestmo Date: Fri, 20 Feb 2026 12:03:40 +0100 Subject: [PATCH 06/13] Added exeption handling for Message class --- .../sytemutvikling/team6/models/Message.java | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Message.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Message.java index 6a1d53e..7d0f951 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Message.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Message.java @@ -3,42 +3,51 @@ import java.time.LocalDateTime; import java.util.UUID; -// Unntakshåndtering mangler // Enhetstester mangler /** * Represents a message * - * @Author Robin Strand Prestmo + * @author Robin Strand Prestmo */ public class Message { - private UUID id; - private String title; - private String from; - private String content; - private LocalDateTime timeAndDate; + private final UUID id; + private final String title; + private final String from; + private final String content; + private final LocalDateTime timeAndDate; /** - * Creates a message with an unique identifier. - * The message includes a title, a string who its from, + * Creates a message with a unique identifier. + * The message includes a title, a string who it's from, * content and the time and date. * - * @param id an unique identifier using UUID * @param title the title of the message * @param from who the message is from * @param content the content of the message - * @param timeAndDate when the message was sent. + * @throws IllegalArgumentException if title, from or content is null or blank. */ - public Message(UUID id, - String title, + public Message(String title, String from, - String content, - LocalDateTime timeAndDate) { - this.id = id; + String content) { + + if (title == null || title.isBlank()) { + throw new IllegalArgumentException("Title cannot be null or blank."); + } + + if (from == null || from.isBlank()) { + throw new IllegalArgumentException("From cannot be null or blank."); + } + + if (content == null || content.isBlank()) { + throw new IllegalArgumentException("Content cannot be null or blank."); + } + + this.id = UUID.randomUUID(); this.title = title; this.from = from; this.content = content; - this.timeAndDate = timeAndDate; + this.timeAndDate = LocalDateTime.now(); } public UUID getId() { From 73fdb9e6c917211a6a873e948985dce9fe32cbbf Mon Sep 17 00:00:00 2001 From: Robin Strand Prestmo Date: Fri, 20 Feb 2026 12:52:50 +0100 Subject: [PATCH 07/13] Added findMessageById in inbox --- .../sytemutvikling/team6/models/Inbox.java | 33 ++++++++++++++----- .../sytemutvikling/team6/models/Message.java | 3 +- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java index 1cbc64c..37b7013 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java @@ -1,18 +1,15 @@ package ntnu.sytemutvikling.team6.models; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import java.util.*; // Unntakshåndtering mangler // Enhetstester mangler -// Message får kanskje en UUID, da er det mer fornuftig å bruke denne, vertfall for removeMessage /** * Represents a users inbox that contains messages. * Provides methods to add, remove and get messages. * - * @Author Robin Strand Prestmo + * @author Robin Strand Prestmo */ public class Inbox { private final List messages; @@ -20,7 +17,7 @@ public class Inbox { /** * Creates an empty inbox with no messages. */ - public Inbox(){ + public Inbox() { this.messages = new ArrayList<>(); } @@ -33,6 +30,24 @@ public List getMessages() { return Collections.unmodifiableList(messages); } + /** + * Finds a specific message by id. + * + * @param messageId is the ID to the message that is searching after. + * @return message with matching id if the id exists. + */ + public Optional findMessageById(UUID messageId) { + if (messageId == null) { + throw new IllegalArgumentException("MessageId cannot be null."); + } + return messages.stream().filter(message -> messageId.equals(message.getId())).findFirst(); + } + + /** + * Add´s message to the messages list. + * + * @param message to be added + */ public void addMessage(Message message) { messages.add(message); } @@ -40,10 +55,10 @@ public void addMessage(Message message) { /** * Removes a message from the inbox list. * - * @param message the message to be removed + * @param messageId the id to the message to be removed * @return true if the message was removed, false if not found. */ - public boolean removeMessage(Message message) { - return messages.remove(message); + public boolean removeMessage(UUID messageId) { + return messages.removeIf(message -> messageId.equals(message.getId())); } } diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Message.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Message.java index 7d0f951..10ea569 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Message.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Message.java @@ -6,7 +6,7 @@ // Enhetstester mangler /** - * Represents a message + * Represents a message. * * @author Robin Strand Prestmo */ @@ -69,5 +69,4 @@ public String getContent() { public LocalDateTime getTimeAndDate() { return timeAndDate; } - } \ No newline at end of file From b143d6ab407f787d85c989466dc4aa2455338f25 Mon Sep 17 00:00:00 2001 From: Robin Strand Prestmo Date: Fri, 20 Feb 2026 13:08:18 +0100 Subject: [PATCH 08/13] Added exeption handling to Inbox --- .../sytemutvikling/team6/models/Inbox.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java index 37b7013..17f495d 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java @@ -6,7 +6,7 @@ // Enhetstester mangler /** - * Represents a users inbox that contains messages. + * Represents a user's inbox that contains messages. * Provides methods to add, remove and get messages. * * @author Robin Strand Prestmo @@ -24,7 +24,7 @@ public Inbox() { /** * Returns an unmodifiable view of the messages in this inbox. * - * @return an unmodifiable list of messages. + * @return an unmodifiable list of messages */ public List getMessages() { return Collections.unmodifiableList(messages); @@ -33,8 +33,9 @@ public List getMessages() { /** * Finds a specific message by id. * - * @param messageId is the ID to the message that is searching after. - * @return message with matching id if the id exists. + * @param messageId the id of the message to search for + * @return messageId the id of the message to remove + * @throws IllegalArgumentException if messageId is null */ public Optional findMessageById(UUID messageId) { if (messageId == null) { @@ -47,8 +48,12 @@ public Optional findMessageById(UUID messageId) { * Add´s message to the messages list. * * @param message to be added + * @throws IllegalArgumentException if message is null */ public void addMessage(Message message) { + if (message == null) { + throw new IllegalArgumentException("Message cannot be null"); + } messages.add(message); } @@ -56,9 +61,13 @@ public void addMessage(Message message) { * Removes a message from the inbox list. * * @param messageId the id to the message to be removed - * @return true if the message was removed, false if not found. + * @return true if the message was removed, false if not found + * @throws IllegalArgumentException if messageId is null */ public boolean removeMessage(UUID messageId) { + if (messageId == null) { + throw new IllegalArgumentException("MessageId cannot be null"); + } return messages.removeIf(message -> messageId.equals(message.getId())); } } From 80c40a82cfeae252fc3e6c8f9de546040d71f3fb Mon Sep 17 00:00:00 2001 From: Robin Strand Prestmo Date: Fri, 20 Feb 2026 15:09:40 +0100 Subject: [PATCH 09/13] Added methods to Setting. Created Language enum. --- .../sytemutvikling/team6/models/Inbox.java | 1 - .../sytemutvikling/team6/models/Language.java | 11 ++++ .../sytemutvikling/team6/models/Settings.java | 54 +++++++++++++++---- 3 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Language.java diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java index 17f495d..00c8f52 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Inbox.java @@ -2,7 +2,6 @@ import java.util.*; -// Unntakshåndtering mangler // Enhetstester mangler /** diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Language.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Language.java new file mode 100644 index 0000000..3b95ea1 --- /dev/null +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Language.java @@ -0,0 +1,11 @@ +package ntnu.sytemutvikling.team6.models; + +/** + * Supported application languages. + * + * @author Robin Strand Prestmo + */ +public enum Language { + ENGLISH, + NORSK +} \ No newline at end of file diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Settings.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Settings.java index 7fbf333..cd70f0a 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Settings.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Settings.java @@ -1,41 +1,77 @@ package ntnu.sytemutvikling.team6.models; -// Mangler unntakshåndtering // Mangler Enhetstesting /** - * Represents the settings for a user + * Represents the settings for a user. * - * @Author Robin Strand Prestmo + * @author Robin Strand Prestmo */ public class Settings { private boolean lightMode; - private String language; + private Language language; private boolean anonymous; /** - * Creates settings for a user + * Sets standard settings. + * LightMode enabled, language set to English, + * Anonymous disabled + */ + public Settings() { + this(true, Language.ENGLISH, false); + } + /** + * Creates settings for a user. * * @param lightMode choose between light or dark mode * @param language choose language * @param anonymous choose if user is anonymous * */ - public Settings(boolean lightMode, String language, boolean anonymous) { + public Settings(boolean lightMode, Language language, boolean anonymous) { + if (language == null) { + throw new IllegalArgumentException("Language cannot be null"); + } this.lightMode = lightMode; this.language = language; this.anonymous = anonymous; } - public boolean getLightmode() { + /** + * Toggles between light and dark mode + */ + public void toggleLightMode() { + lightMode = !lightMode; + } + + /** + * Toggles anonymous mode on and off + */ + public void toggleAnonymousMode() { + anonymous = !anonymous; + } + + /** + * Change language to the chosen language. + * + * @param newLanguage the language to change to. + */ + public void changeLanguage(Language newLanguage) { + if (newLanguage == null) { + throw new IllegalArgumentException("Language cannot be null"); + } + language = newLanguage; + } + + public boolean isLightMode() { return lightMode; } - public String getLanguage() { + public Language getLanguage() { return language; } - public boolean getAnonymous() { + public boolean isAnonymous() { return anonymous; } } From f0b81dd46dedd8edf4cbeb2cf7226434c1add6cc Mon Sep 17 00:00:00 2001 From: Robin Strand Prestmo Date: Tue, 24 Feb 2026 12:40:40 +0100 Subject: [PATCH 10/13] Added Role enum --- .../ntnu/sytemutvikling/team6/models/Language.java | 3 +-- .../java/ntnu/sytemutvikling/team6/models/Role.java | 11 +++++++++++ .../java/ntnu/sytemutvikling/team6/models/User.java | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Role.java diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Language.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Language.java index 3b95ea1..d4ab0ae 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Language.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Language.java @@ -6,6 +6,5 @@ * @author Robin Strand Prestmo */ public enum Language { - ENGLISH, - NORSK + ENGLISH } \ No newline at end of file diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Role.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Role.java new file mode 100644 index 0000000..cde9117 --- /dev/null +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Role.java @@ -0,0 +1,11 @@ +package ntnu.sytemutvikling.team6.models; + +/** + * Available users + * + * @author Robin Strand Prestmo + */ +public enum Role { + NORMAL_USER, + CHARITY_USER, +} diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java index 72346e7..b520449 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java @@ -9,7 +9,7 @@ /** * Represents a user. * - * @Author Robin Strand Prestmo + * @author Robin Strand Prestmo */ public class User { private UUID id; From 6cc3bbba7e25da471f4a691f3adcdc25f5575c0e Mon Sep 17 00:00:00 2001 From: Robin Strand Prestmo Date: Wed, 25 Feb 2026 12:36:03 +0100 Subject: [PATCH 11/13] Added getters and setters to User --- .../sytemutvikling/team6/models/User.java | 44 +++++++++++++++++-- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java index b520449..283bfa1 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/User.java @@ -12,13 +12,13 @@ * @author Robin Strand Prestmo */ public class User { - private UUID id; + private final UUID id; private String name; private String email; private String password; - private String role; - private Settings settings; - private Inbox inbox; + private final String role; + private final Settings settings; + private final Inbox inbox; /** * Creates a new user @@ -51,6 +51,42 @@ public User(UUID id, // Add Getters + public UUID getId() { + return id; + } + + public String getName() { + return name; + } + + public String getEmail() { + return email; + } + + public String getRole() { + return role; + } + + public Settings getSettings() { + return settings; + } + + public Inbox getInbox() { + return inbox; + } + // Add Setters + + public void setName(String name) { + this.name = name; + } + + public void setPassword(String password) { + this.password = password; + } + + public void setEmail(String email) { + this.email = email; + } } From 7cfde3b4d44e3117994f3ea8eb5d8f007c3c5dab Mon Sep 17 00:00:00 2001 From: meenakshijay1005-netizen Date: Tue, 3 Mar 2026 12:12:06 +0100 Subject: [PATCH 12/13] Modifications: Registry classes implemented --- .../sytemutvikling/team6/models/Inbox.class | Bin 306 -> 2879 bytes .../sytemutvikling/team6/models/Language.class | Bin 0 -> 1040 bytes .../sytemutvikling/team6/models/Message.class | Bin 0 -> 1549 bytes .../sytemutvikling/team6/models/Role.class | Bin 0 -> 1075 bytes .../sytemutvikling/team6/models/Settings.class | Bin 315 -> 1589 bytes .../sytemutvikling/team6/models/User.class | Bin 303 -> 1787 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 helpmehelpapplication/target/classes/ntnu/sytemutvikling/team6/models/Language.class create mode 100644 helpmehelpapplication/target/classes/ntnu/sytemutvikling/team6/models/Message.class create mode 100644 helpmehelpapplication/target/classes/ntnu/sytemutvikling/team6/models/Role.class diff --git a/helpmehelpapplication/target/classes/ntnu/sytemutvikling/team6/models/Inbox.class b/helpmehelpapplication/target/classes/ntnu/sytemutvikling/team6/models/Inbox.class index 7b4a30611879cd3c018533f5a84546ad7e661ab6..72613e7b9d3b93e13c31cabfb4cd0b77c2d6076c 100644 GIT binary patch literal 2879 zcmb7FYf~Fl7=BKmY*>~{gT+EE(w5c)EP+aV0XehN@DtJ9fPQt=wm+l3@%Rll% zozWt6Mn5{^_?sNxv%4gllqv9KH~XIVJkRr9^Ur_Be*&1t&kAA;cTCsx($0Y^DxSNi z?-;sSPP>9v#?uw6C=4f^HS^ZKf@X%UZNA6T1}Bf@{I)2#4DpI^99|XnSc zTcn>J64+K2ZYY>8CX%U!c*$kz72}1HpyC>?D|n0HN-fe^%P^=Cx@9^V`tdf^!856H zddUw*=78a5vQf+_>N-ohSqvkXImi~NH=@_p*0OV%=(Xit$;u51?8&(tFBGhTLDF4o zxGaTP=Ek&L_A0`3=l2W3=a1tKLvJWMTO25G)3n@yycjS&!x&L<3rX1`Dau-?(r@4u z*QQR-q}JOojJpcnW$377Ri;hD2-4Jej%(96FkGvvUSLfV3>{_?G*M$3?%_VQrYmI5 zM_-$hl4trwOFy>;WZLjPK2R{u@McX&9gT(um>@+Z-Ef7?FcGCV1uS?x~A0QsLH0FpIJ+qJ!>t1w;Fa%L_Y8d^a2)l^0K1iQ(=!rYI~R z)gz8M(h+_)lvCDfLBl6lq&+|s4K)pxQYN*@poDrEhRz=06LN~f78Pqxga%qE(F_L@ zuo=fAhO42=D;<}hT{9+iey-sOR%k;8kl7N$jVRh_^&;VMgIDrJJ~+zoFzW7;pFfn; zri!Q7Q1AsUvGXok4V(Cq;Sy~!S?Bs4<_l2qHNI8wP2I4_6Ajw^B1P{2S)XpYiZ!0KUl0q9L5YoMr8JyP04iMpr?^Qg?CnU{^%l&wm(D zzW#1Fqfx!H+%Q&j+6bL35M5YQsijN}t5_ogEuss}(`FZTLk!wz+{bXp#-L?QQ`oZx zcO2m;IAFM4Teo#V)~8Ovj|}~^&;m+06yMAz@Q{HyQXP0tP=ryI?91D&`+Pe2Rq&{q$A(dNWe!VVaEecXFw zmALVt-*EX4^gXBFF-SbA1-Kr;iC1w3NcRcOO&_O1>@o6B4*!kzm$8mGBtL zGR(&@{8A+iBAg}CIU-$%5cXFI`x_$cQe{Jjg!d^OGP$io!!NM@0$)k&XqAGj1=Vg1 vq!R#j^LYURQFQ>6vAj=HK#|_EBs*j?VBwkn%Z7(Nd{1YxN%!#senRj6*qz`8 delta 135 zcmdllwuy=B)W2Q(7#J8_83ZPBxk$3vWaed-*fBCNYiNcsGO#%3r=)T*Ff(vY{E;xZ zkWC_(L6HF{3Dm#?Ej#E@$wDV3TzQEi1jIjrw%?E>YN zRm>nKcDGc>$TQ5Fj%T-`LD%-*@vduAjyddcx6OS=oa3MZ33F66{Nw~wXvE#frp-o8 zo5qKN72KC`kD-*(Hx8&3Djwh=LxKA~ANPh|#teGe#ZmXf?uGUJl(Fj&Iis$`l8!zy z?4)6dd2Ncv7FJhPJi=3k7iq3Nmj^*TCE$j9Vn&Pz^;)rpk>9glJK{Nu*YmU?^2np* z^gSL%KHa@c(Fts03ZdKe-A(GFM6;dQT@q~tO3R|D6v@(BfS8V1I_=O|eAORdow6#O zqj-je>`yvLr&zGgu=tIxGq_EwLVpmrNEDSgDsE`P60%JyDT>Pa+R8cZOn^B`Kmt6e{`&~YeLFHl|oN;g+BuGrX(gaWnXal)Zfj;N)S WnSOyMzrg;D%ivke`5d+Qul)ru81$b2 literal 0 HcmV?d00001 diff --git a/helpmehelpapplication/target/classes/ntnu/sytemutvikling/team6/models/Message.class b/helpmehelpapplication/target/classes/ntnu/sytemutvikling/team6/models/Message.class new file mode 100644 index 0000000000000000000000000000000000000000..12c1cec780b114eaf18df46e8009a8bff591b4a3 GIT binary patch literal 1549 zcma)5+fEZv6kUh5Oc@5j3L+p_Etg2r~Iqbn~V@{DriHDA(TkwWpv`UgsyXK1|=)##vQ8HtgKKY2mbw+ z5_%biP8Hd-ETgPj%U-!^Q&a2jipC)~T_=jW3XR6hzQ0ym18*qQcV@v;^Ly0vS;m5AaCBLxyfY&*f<9}th z`c5)kzPBL4&naky!qA>I9pgpSE*M@;F9aJVRwS=`ra0HZFn?oK7}V@__nTI$ZHMc{ zgDw5A9wSmV_$F<4l&n8KhR%~J&+oHDH^gX2J@V=kAc1}2nZ=fO+^SbJHcU~sQvb3t zLLLlKk0JUnBZvuY$%_ePeM`FfmQ?jE2|>1*7;U&g&vrWfA$FLot{$T!^$T+93vPWt z+jsQr#rlrX|1(Ws`V1Hs;5dQfXTTu=s$VfugQ})#NUP}@GU|8@6NFCHF#Cy;gfLIf zX-W?aP}(6XVVG8U6eAcz1}f%|!YX;spn$YBzDn8GXCiUne+L9tlGV>(gUezVN? zM7vGCCmIf6iTqwP|Dz;f2~0v~@CRCC`jG%nkgUs~krh!Q>Sw4Q$!YRS6Mt$tw-XnTzD5hUC?Ty?O literal 0 HcmV?d00001 diff --git a/helpmehelpapplication/target/classes/ntnu/sytemutvikling/team6/models/Role.class b/helpmehelpapplication/target/classes/ntnu/sytemutvikling/team6/models/Role.class new file mode 100644 index 0000000000000000000000000000000000000000..f19f0d329763812b4a709a4241f91f6d46660b20 GIT binary patch literal 1075 zcma)4U2hUm5IvU#mX9q(wA6n1-CEdINFQusAWaFuNL(Oc3kmVTTyU*hm&Gi*B>XF- z4{bCyKKrALbGMtqgC^|5-kCdd&YZb3zyEx{22evmMu=h8c5SaXp1Q`+b0_9!%e2pm zuEB>##o_3KVU3IJk!8pTGo;S>gcmJN2{qdrG9;U=cB7)b@94EQ!=APjRf$2VzNxh9 zr@a7}tTj80oo+?z)O3d2yQO(zK?KnlWZ`5L$cPH-zJeIyM5URw(e#FW!#U-B%V5Z8qXDI%rRA+aLY5uP;>cZ8%p3Yp2~Q_kX{fv9n)wOJi`t{oI4Jm4n|+5f_R~w zR{z`>xTX3(uBb%@*_YG$$WU5@1+S1_^2J4qIR(4OGrU~nsakwIE-e(lC7w4TR)%Ju z&_|v#FkYMD8RKHN3L=MW-8{3o>p67)YJp1N%1a77E}b0G+$7p>>10F96rhvF38Xj0 zFewtIGl3-KDdcs@7hmBASTD08T_SaXjPKkF`_5YACxxULGI}pO!2g-VT1lD zzgiqC#3?Fl`VkSO?F(ugQjX9htNYuR*qVc*lz;%F__mB~A(n(bz{3E3M2!e|c82xd zTS>j{m4%{)v~`6?2VW_2BjtvT-Aahlq@D*HD&>e;i40S(u=fk>|F{rTpK~7v{`ulB D2n_Uq literal 0 HcmV?d00001 diff --git a/helpmehelpapplication/target/classes/ntnu/sytemutvikling/team6/models/Settings.class b/helpmehelpapplication/target/classes/ntnu/sytemutvikling/team6/models/Settings.class index 38f482a7c2f492c9fd741d148ed84251af43033e..9420861a9951a8429b08d5a232a8ced6cafaf647 100644 GIT binary patch literal 1589 zcmb7ET~8B16g|^jy8VWh0xDmnKy9~$s-Q6ezd{g+1s`fiAn{>aH_O6ym$XxqpTaNj z#RoMK5>52c#2+Qz*|uyYO{8hEGjn_IIrp49yTAW@`vG7b_Z9dUayGY{#l{KOYfXM^ z9$Kbt6uGX|9u#ZNTit3D%R1*2Y$%W!h7Po2t!QbK^r~{8S2;t_GL3z{Mac|ok0Bub zZE6M`^QHfym)glI1fKm-cSOXf78oION9hO3cQY}D8*~yV$u`O<@yQfRtLL~`_=V_q zjPE8U&oTW|9Y3RR;S6)?)Nt!i(Yj7QTYzD2V{G|PR`=(Cm6<4mvPh`Zt~LFBncK*Lr9dsVzgaEu}vjbVcdZ5?IUe`?g;&E maIH(hKpT%fRk+)uc<$4c;*Flg_j)pCt}?&uS-j*@EdK@YgDD;W delta 132 zcmdnWvzv+Q)W2Q(7#J8_83ZPBxy!NHWaed-*fBCNYiNcsGO#%3r=)T*Ff(xSFt9SP zO}1i;nasQUY_1?{swUqi?o4{;~Dewwy!V zH;vYc-fAD1wx{oTrmG+=FmPlX8@g>!!L#O(x$g_4tOGi)$%~F}+4|nz_Tx2yv}3eP zfkJpAA$8v+YP!pqEyJ<}a_zpD$jYQ?^BT{uu!|SuXl$O(Me-J2L zj@sr*f@B|Bj^(cld@9A;Ki~9!o^(G#w|$ozw5$!%C668qsTjbpKu@XM=!L*_6&YkX zE2>bC`)1p0Bq%?!LKY@mhO% zF^l};V4C*dL%*bg0t-l4ish4$#FLSvqgY_!WF*;SB+)45iD3ZO=vkn*AB5+siuMhI z+CqR4trB2Vs|Fa;is=C3S}_w~LMvtiOld_Wz|0q_PvI6lZG~t@dPQE@eDj)g$+o&obenPneik%Gk>X{=BB?G z@ZzRhJASVb!VX sS?N|*>RvL}c$}+2TrV%+VvjJ_{ba7OIM*xUdVK*GJCC_mq;*#R01lHzzW@LL delta 132 zcmey(yPk>b)W2Q(7#J8_83ZPBIm@xxWaed-*fBCNYiNcsGO#%3r=)T*Ff(xSFt9SP zO_pJbnq0-K;Kjhe2!ucpAjuBYtq Date: Tue, 3 Mar 2026 13:14:49 +0100 Subject: [PATCH 13/13] Merge Conflict: Models are correct --- .../sytemutvikling/team6/models/Donation.java | 2 +- .../sytemutvikling/team6/models/Feedback.java | 2 +- .../team6/models/Donation.class | Bin 1464 -> 1787 bytes .../team6/models/Feedback.class | Bin 1256 -> 1537 bytes 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Donation.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Donation.java index 78569b2..16e44cb 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Donation.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Donation.java @@ -44,7 +44,7 @@ public Donation(double amount, LocalDateTime date, Charity charity, User donor) // ASSUMES that this is the way to get the anonymous setting from the user's settings. - if (donor.getSettings().getAnonymous() == false) { + if (donor.getSettings().isAnonymous() == false) { this.isAnonymous = true; } else { this.isAnonymous = false; diff --git a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Feedback.java b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Feedback.java index 891dce1..2a0657e 100644 --- a/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Feedback.java +++ b/helpmehelpapplication/src/main/java/ntnu/sytemutvikling/team6/models/Feedback.java @@ -35,7 +35,7 @@ public Feedback(User user, String comment) { this.date = LocalDateTime.now(); // ASSUMES that this is the way to get the anonymous setting from the user's settings. - if (user.getSettings().getAnonymous() == false) { + if (user.getSettings().isAnonymous() == false) { this.isAnonymous = true; } else { this.isAnonymous = false; diff --git a/helpmehelpapplication/target/classes/ntnu/sytemutvikling/team6/models/Donation.class b/helpmehelpapplication/target/classes/ntnu/sytemutvikling/team6/models/Donation.class index 1fcbaeaed12951a1c0b56efbe9b3701e109d2047..78d4151279bc36ed5048bab5866c45dfc5189e08 100644 GIT binary patch literal 1787 zcma)7+fEZv6kVscp=G!#Vg*D*Xggd65K+oSD+MJf`oQIZx1pWDKs#gFDG9&g5BOrD zCKinket>WOkh;#a1uZotlg!@d%wBu1z0W%Bk6+)u16apP1wMgC%bmp3cvU_Ts zcT?%dmC+I;qx?9+Si#=d#9G zN8m@FiXPk&@W&H-5!}Wd1yO;{f2XQq0D}UNqG9Kpf}FEJZ#>aB`!EFVst6(^y?ZJY zv`O#2iZCM5d!V8ns`SQHbf7bWI5Y(bfw7jOm)uoMV3LzOG~I2}btxTAa*9k^qU+&H z5lmx7fqoq&)>_IQzH@N!AEE1j6zTl?z75xjCg*6#Qt+Gh9J)Kr23u>P+_nwZ=V;b@{B?mCG7f@p$u!2GE$l3f29{Sh-UTF$m z#nTJ0ubP;Zhd(rcQ%%9okh%b0(jIB7yxtW29BWO$qmAIrrrtimwrxr#H)w%wEnxKovN*RRm$T{@9}z7vjNu{yN2&30M7aVqC-iaSDAa3)uw40Xg~Q`_iyH2kRATSZTsCRedCV{r`vcyJ zA{mY0GQ-DO81Y#8r`)sZGB^=_@*>trBoBNZys(VIZi8C^R}JY|M_lz9E8CWct!C)) zLlF{vC?iXet7@HaYlkaE&m9{ErZH<`3Rf9s%I(&ZH{MYZIjrjvi&YBnt{EKgXxF8z z45j4h_UQ5Tx$|*UH3W@wX?XKpUC~pFlsrdMc>&b@)#pE(VZ3-!(2B=it03R-$VfhgVE2;uuRaoMW~}ZG%*g7VNB<3 zE7Cqsj6?}Kz!MV_xIks>$YxaMZ-k!oM0ZvzS{;}tzY+R}bI9lk&@Q99O)T}0SgIni z6fChcSF(8`r%dfuZ=}MDSn9$3vX=)l jZ>7R3G>i7s&i4FZ5Z+FOAK`HdygCTKO@-Hz=AQloYllD> diff --git a/helpmehelpapplication/target/classes/ntnu/sytemutvikling/team6/models/Feedback.class b/helpmehelpapplication/target/classes/ntnu/sytemutvikling/team6/models/Feedback.class index d6674b242ad806194d74b1bf4885d845fc2579ab..28853eca2459be072730105ee9d9b4a9cda23bf8 100644 GIT binary patch literal 1537 zcma)5+fEZv6kVq+3=G3XE+RL%32mpqs33~1AaY4asy-BW;BDHDIMA7zc8cLw`~hD~ z)Wo9k!4L4G)ODtvMA{}alg!!Y%vyWxz0aE8e}4V~u!lVbA%VE-xfP>)=~+(2yRgp- zwtH%Lmg%e;PBCv4%ErEB<+En)TtP%&;LN-*je<$g>+G48^90m4b-+QM-_t&z;@Jh` z=;&ZKDG;fYt&%`AeWTJ5fg~uoqT^UDQxDd%`EnVr#L{HGyy;m2W3_Ld?N~;-m@^Bz zJU--(kRH3d?H1ijr&uWqh!cU%lVS#Wgeyrj) z?kE@)=)2y%hB1tDLM7A97achd_7saZ&Zrv#lNvhEDWkg@6m-dGMngAL6?3?!U|wL< z&)(dzh6OCL6u0smA{V}*k~wY-ewdAtb@c9~K) zvIBTh#eF=PzZ2MYIJkoA##M-sCZ)p} zNwael?ToPgU#OX4rIfSwZP{>dpuQqafmu!`%-^~LA?YJVA?YH2rHA~L*Y2+zA=gea z`Z2)wE$%)OFZpZwcMR%3FjB>Yo~U9OidF{u)!VG{hEaz$*Mzm%6JH& zzodl~2nD)=Bq$*84CD3U4X%>Zp?|}~7X~4}8rdPJC6%-qpspmai7lSU&i^M*H04LxtQB=7jB-GAn2M)Cjv literal 1256 zcma)*+iwy<6vn@yTnb&JVyo7w-FhqAYS&wus6=CWNtzIS0Gikrv#>*%b}wXimW2Pw z2OmsKG|_keDC3z03c*d<7tYMi_dDmCbA~^EfBXWlkLNk07z|H(kr@socO%&sXO8er zOvx>G$8>$0JE3{Nx!tnbXE~%97Ei6dWjYp#KDJJITQU?nBf+6f=e1Z6N#U5y=HcEO zhIAD2fMKI{VWlPs3COj5*X16iE)TQC5_%1aihieR_NhkJ$zz^oJ%<#GC1w8bf zKDTwcMNc@E6uzhT0>9;O_qATgH@aMRx$OG3e!}Is&5EImP>(#DcZ5fD#}9N#QaR{x zz0Rei%ZG&m%DADSgqsY@m1K*h8YTD;xh)MO-1jbw3K){6MI#6~`CdR+Gj$>E`H< zlR-*dj#ep^B#vZ1j$|s1l#F7Qh!Pg*_bTmP60P{cPn18Em%iir?^wGsQUZ@~i`E+H zNrhG1rpRyycSjjais~%0`3-AdX_3MNelZ1S&f#_3OMvgs!aIrZLvl3qK3#cZ7Jiio d8`w;Mw`SpLB3#6i1bF+)%$?sQ!cSw>vwu#-3}gTR