From 0c0d10f72a652f4fa72a0b8d34eab376cb09d8f4 Mon Sep 17 00:00:00 2001 From: Ivan Olexyn Date: Sun, 19 Apr 2020 16:04:58 +0200 Subject: [PATCH] + bridge waits for user request. --- mispbridge/src/BridgeServlet.java | 15 +- mispclient/src/ClientServlet.java | 59 +++--- misphelper/src/Ride.java | 35 +++- misphelper/src/RideMapHelper.java | 54 +++++ misphelper/src/State.java | 3 + mispmock/src/ActorRunnable.java | 8 +- mispmock/src/AppMock.java | 4 +- mispmock/src/BridgeMock.java | 39 ++-- mispmock/src/ClientMock.java | 30 ++- mispmock/src/Main.java | 2 +- mispmock/src/MockSet.java | 2 +- .../src/{PublicMock.java => UserMock.java} | 4 +- mispmock/src/exchange/RequestMock.java | 73 ++++++- mispmock/src/exchange/ResponseMock.java | 193 +++++++++++++++++- overview.png | Bin 35301 -> 35261 bytes overview.uxf | 2 +- 16 files changed, 438 insertions(+), 85 deletions(-) create mode 100644 misphelper/src/RideMapHelper.java create mode 100644 misphelper/src/State.java rename mispmock/src/{PublicMock.java => UserMock.java} (82%) diff --git a/mispbridge/src/BridgeServlet.java b/mispbridge/src/BridgeServlet.java index cbba038..2875a52 100644 --- a/mispbridge/src/BridgeServlet.java +++ b/mispbridge/src/BridgeServlet.java @@ -6,15 +6,16 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; public class BridgeServlet extends HttpServlet { protected static final String MISP_CLIENT_URL = "http://localhost:9090/mispclient/core"; - public List availableRides = new ArrayList<>(); - public List bookedRides = new ArrayList<>(); - protected List loadedRides = new ArrayList<>(); + public Map rideMap = new HashMap<>(); + protected RideMapHelper mapHelper = new RideMapHelper(rideMap); // ####### // @@ -40,7 +41,13 @@ public class BridgeServlet extends HttpServlet { boolean hasData = ridePayload.getData() != null; if (hasReqeust && hasData) { - Thread handleGetRideRequestDataThread = new Thread(() -> handleGetRideRequestData(request, response)); + Thread handleGetRideRequestDataThread = new Thread(() -> { + try { + handleGetRideRequestData(request, response); + } catch (IOException | InterruptedException e) { + e.printStackTrace(); + } + }); handleGetRideRequestDataThread.start(); } } diff --git a/mispclient/src/ClientServlet.java b/mispclient/src/ClientServlet.java index e2bdf17..b37c336 100644 --- a/mispclient/src/ClientServlet.java +++ b/mispclient/src/ClientServlet.java @@ -1,7 +1,3 @@ -// -// Source code recreated from a .class file by IntelliJ IDEA -// (powered by Fernflower decompiler) -// import javax.servlet.ServletException; @@ -9,8 +5,10 @@ import javax.servlet.http.HttpServlet; import java.io.DataOutputStream; import java.io.IOException; import java.net.HttpURLConnection; -import java.util.ArrayList; -import java.util.List; +import java.util.HashMap; +import java.util.Map; + + public class ClientServlet extends HttpServlet { @@ -20,9 +18,10 @@ public class ClientServlet extends HttpServlet { public static final int AVAILABLE_RIDES_OVERHEAD = 1; - public List availableRides = new ArrayList<>(); - public List bookedRides = new ArrayList<>(); - public List loadedRides = new ArrayList<>(); + + + public Map rideMap = new HashMap<>(); + protected RideMapHelper mapHelper = new RideMapHelper(rideMap); public ClientServlet() { @@ -37,15 +36,16 @@ public class ClientServlet extends HttpServlet { * # send POST (Ride) * Generated by Loop */ - void sendPostRide(Ride oldRide) throws IOException, ServletException, InterruptedException { + void sendPostRide(Ride ride) throws IOException, ServletException, InterruptedException { HttpURLConnection connection = ConnectionHelper.make("POST", MISP_BRIDGE_URL); // send POST (Ride) - availableRides.add(oldRide); + + rideMap.put(ride.getID(), ride.setState(State.AVAILABLE)); connection.setDoOutput(true); DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); - outputStream.writeBytes(oldRide.json()); + outputStream.writeBytes(ride.json()); outputStream.flush(); outputStream.close(); @@ -54,9 +54,8 @@ public class ClientServlet extends HttpServlet { // add Ride to ReservedRides if (connection.getResponseCode() == 200) { Ride parsedRide = ConnectionHelper.parseRide(connection); - if (parsedRide.equals(oldRide)) { - availableRides.remove(oldRide); - bookedRides.add(parsedRide); + if (parsedRide.equals(ride)) { + ride.setState(State.BOOKED); } } } @@ -66,7 +65,7 @@ public class ClientServlet extends HttpServlet { /** * # send GET (Request) to App */ - void sendGetRequest(Ride oldRide) throws IOException { + void sendGetRequest(Ride ride) throws IOException { // send FOO // TODO make sure as many as possible tyes of requests can be forwarded. @@ -76,11 +75,9 @@ public class ClientServlet extends HttpServlet { // add Ride to PendingData // send GET (Ride)(Data) String data = "DATA"; - bookedRides.remove(oldRide); - Ride newRide = oldRide; - newRide.setData(data); - loadedRides.add(newRide); - sendGetRideRequestData(newRide); + ride.setData(data); + ride.setState(State.LOADED); + sendGetRideRequestData(ride); } @@ -99,13 +96,11 @@ public class ClientServlet extends HttpServlet { outputStream.flush(); outputStream.close(); - // handle OK (EOL) - // remove Ride from PendingData - // add Ride to EOl + // handle OK (RIDE) if (connection.getResponseCode() == 200) { Ride shellIdRide = ConnectionHelper.parseRide(connection); - if (shellIdRide.getRideID() != null) { - loadedRides.remove(oldRide); + if (shellIdRide.getID() != null) { + rideMap.remove(oldRide.getID()); } } } @@ -130,7 +125,17 @@ class PostRideRunnable implements Runnable { @Override public void run() { while (true) { - if (clientServlet.availableRides.size() < ClientServlet.AVAILABLE_RIDES_OVERHEAD) { + + long availableRides = 0L; + for (Map.Entry entry : clientServlet.rideMap.entrySet()){ + if (entry.getValue().getState() == State.AVAILABLE){ + availableRides++; + } + } + + + + if (availableRides< ClientServlet.AVAILABLE_RIDES_OVERHEAD) { try {clientServlet.sendPostRide(new Ride());} catch (IOException | ServletException | InterruptedException e) { e.printStackTrace(); } } try {Thread.sleep(500);} catch (InterruptedException e) { e.printStackTrace(); } diff --git a/misphelper/src/Ride.java b/misphelper/src/Ride.java index d1e30d1..4b7bb45 100644 --- a/misphelper/src/Ride.java +++ b/misphelper/src/Ride.java @@ -4,9 +4,10 @@ public class Ride { private static long count = 0L; - private String rideID; + private Long id; private String request; private String data; + private State state; // FUTURE it might be possible to use a ride for many requests. // private List requests = new ArrayList<>(); @@ -14,15 +15,16 @@ public class Ride { public Ride() { - rideID = "" + count++; + id = count++; } public Ride(String json) { json = json.replace("{", "").replace("}", ""); String[] split = json.split(","); - rideID = split[0].split(":")[1]; - request = split[1].split(":")[1]; - data = split[2].split(":")[1]; + String idString = unbrace(split[0].split(":")[1]); + id = Long.parseLong(idString); + request = unbrace(split[1].split(":")[1]); + data = unbrace(split[2].split(":")[1]); } @@ -34,6 +36,9 @@ public class Ride { this.data = data; } + + public Ride setState(State state){ this.state = state; return this;} + public String getRequest() { return this.request; } @@ -42,19 +47,23 @@ public class Ride { return this.data; } - public String getRideID() { - return this.rideID; + public Long getID() { + return this.id; } + public State getState(){return this.state;} + private String brace(String foo) { return "\"" + foo + "\""; } + private String unbrace(String foo){ return foo.replace("\"",""); } + public String json() { String[] keys = {"rideID", "request", "data"}; - String[] values = {rideID, + String[] values = {"" + id, request, data}; StringBuilder sb = new StringBuilder(); @@ -77,11 +86,17 @@ public class Ride { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Ride ride = (Ride) o; - return Objects.equals(rideID, ride.rideID) && Objects.equals(request, ride.request) && Objects.equals(data, ride.data); + return Objects.equals(id, ride.id) && Objects.equals(request, ride.request) && Objects.equals(data, ride.data); } @Override public int hashCode() { - return Objects.hash(rideID, request, data); + return Objects.hash(id, request, data); } + + + + } + + diff --git a/misphelper/src/RideMapHelper.java b/misphelper/src/RideMapHelper.java new file mode 100644 index 0000000..8d5d142 --- /dev/null +++ b/misphelper/src/RideMapHelper.java @@ -0,0 +1,54 @@ +import java.util.List; +import java.util.Map; + +public class RideMapHelper { + + public Map rideMap; + + + RideMapHelper(Map rideMap){ + this.rideMap = rideMap; + } + + + + public boolean containsMore(int i, State state){ + long availableRides = 0L; + for (Map.Entry entry : rideMap.entrySet()){ + if (entry.getValue().getState() == state){ + availableRides++; + } + if (availableRides > i){ + return true; + } + } + return false; + } + + + public boolean containsLess(int i, State state){ + long availableRides = 0L; + for (Map.Entry entry : rideMap.entrySet()){ + if (entry.getValue().getState() == state){ + availableRides++; + } + if (availableRides < i){ + return true; + } + } + return false; + } + + + public Ride pickAvailable(){ + for (Map.Entry entry : rideMap.entrySet()){ + if (entry.getValue().getState() == State.AVAILABLE){ + return entry.getValue(); + } + + } + return null; + } + + +} diff --git a/misphelper/src/State.java b/misphelper/src/State.java new file mode 100644 index 0000000..5a49087 --- /dev/null +++ b/misphelper/src/State.java @@ -0,0 +1,3 @@ +public enum State { + AVAILABLE, BOOKED, LOADED +} diff --git a/mispmock/src/ActorRunnable.java b/mispmock/src/ActorRunnable.java index 4ad9462..4b28c1e 100644 --- a/mispmock/src/ActorRunnable.java +++ b/mispmock/src/ActorRunnable.java @@ -1,4 +1,4 @@ -import org.mockito.Mockito; + import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -49,12 +49,12 @@ public abstract class ActorRunnable implements Runnable { public void processRequests(HttpServletRequest request) throws IOException, ServletException { - HttpServletResponse response = Mockito.mock(HttpServletResponse.class); + if (request.getMethod().equalsIgnoreCase("GET")) { - doGet(request, response); + doGet(request, null); } else if (request.getMethod().equalsIgnoreCase("POST")) { - doPost(request, response); + doPost(request, null); } } diff --git a/mispmock/src/AppMock.java b/mispmock/src/AppMock.java index 9424bbe..e94d5aa 100644 --- a/mispmock/src/AppMock.java +++ b/mispmock/src/AppMock.java @@ -1,4 +1,4 @@ -import org.mockito.Mockito; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -20,7 +20,7 @@ public class AppMock extends ActorRunnable { void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { - HttpServletResponse mockResponse = Mockito.mock(HttpServletResponse.class); + //Main.clientRunnable.responses.add(mockResponse); } diff --git a/mispmock/src/BridgeMock.java b/mispmock/src/BridgeMock.java index 7879ac7..3bd5d46 100644 --- a/mispmock/src/BridgeMock.java +++ b/mispmock/src/BridgeMock.java @@ -1,12 +1,14 @@ import exchange.ExchangeMock; import exchange.RequestMock; import org.apache.commons.io.IOUtils; +import org.springframework.mock.web.MockHttpServletRequest; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; +import java.util.Map; public class BridgeMock extends BridgeServlet { @@ -44,13 +46,16 @@ public class BridgeMock extends BridgeServlet { synchronized (exchange) { String parsedRequest = IOUtils.toString(request.getReader()); - while (!(availableRides.size() > 0)) { Thread.sleep(100); } - Ride ride = availableRides.remove(0); + + + while (mapHelper.containsLess(1, State.AVAILABLE)) { Thread.sleep(100); } + + Ride ride = mapHelper.pickAvailable(); synchronized (ride) { ride.setRequest(parsedRequest); - bookedRides.add(ride); + ride.setState(State.BOOKED); while (ride.getData()==null) { @@ -62,8 +67,7 @@ public class BridgeMock extends BridgeServlet { exchange.response.setStatus(200); PrintWriter writer = exchange.response.getWriter(); writer.print(ride.getData()); - loadedRides.remove(ride); - + ride.setState(State.LOADED); ride.notify(); } exchange.notify(); @@ -98,21 +102,18 @@ public class BridgeMock extends BridgeServlet { Ride ride = new Ride(jsonPayload); synchronized (ride) { - bookedRides.remove(ride); + ride.setState(State.LOADED); - while (!bookedRides.contains(ride)) { - ride.notify(); - Thread.sleep(100); - ride.wait(); - } exchange.response.setStatus(200); PrintWriter writer = response.getWriter(); writer.print(ride.json()); - exchange.notify(); - } + rideMap.remove(ride.getID()); + ride.notify(); + } + exchange.notify(); } } @@ -124,6 +125,13 @@ public class BridgeMock extends BridgeServlet { @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { super.doPost(request, response); + + // RequestMock mockRequest = (RequestMock) request; + // ExchangeMock exchange = mockRequest.exchange; + // synchronized (exchange) { + // super.doPost(request, response); + // } + } @@ -144,8 +152,9 @@ public class BridgeMock extends BridgeServlet { synchronized (ride) { - availableRides.add(ride); - while (!bookedRides.contains(ride)) { + rideMap.put(ride.getID(), ride.setState(State.AVAILABLE)); + + while (ride.getState()==State.AVAILABLE) { ride.notify(); Thread.sleep(100); ride.wait(); diff --git a/mispmock/src/ClientMock.java b/mispmock/src/ClientMock.java index b70b6b4..9538f7b 100644 --- a/mispmock/src/ClientMock.java +++ b/mispmock/src/ClientMock.java @@ -21,7 +21,8 @@ public class ClientMock extends ClientServlet { @Override void sendPostRide(Ride ride) throws IOException, ServletException, InterruptedException { - availableRides.add(ride); + rideMap.put(ride.getID(), ride.setState(State.AVAILABLE)); + // Mock Exchange ExchangeMock exchange = new ExchangeMock(); @@ -32,15 +33,14 @@ public class ClientMock extends ClientServlet { synchronized (exchange){ // Mock POST (Ride) - mockSet.bridgeMock.doPost(exchange.request,exchange.response); exchange.notify(); + mockSet.bridgeMock.doPost(exchange.request,exchange.response); exchange.wait(); // handle OK (Ride)(Request) Ride parsedRide = new Ride(exchange.response.getContentAsString()); ride.setRequest(parsedRide.getRequest()); - int i = availableRides.indexOf(ride); - bookedRides.add(availableRides.remove(i)); + ride.setState(State.BOOKED); sendGetRequest(ride); } @@ -53,15 +53,14 @@ public class ClientMock extends ClientServlet { * # send GET (Request) to App */ @Override - void sendGetRequest(Ride oldRide) throws IOException { + void sendGetRequest(Ride ride) throws IOException { HttpURLConnection connection = ConnectionHelper.make("GET", APP_URL); // send GET (Request) - availableRides.add(oldRide); connection.setDoOutput(true); DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); - outputStream.writeBytes(oldRide.getRequest()); + outputStream.writeBytes(ride.getRequest()); outputStream.flush(); outputStream.close(); @@ -71,12 +70,11 @@ public class ClientMock extends ClientServlet { // send GET (Ride)(Data) if (connection.getResponseCode() == 200) { String parsedData = ConnectionHelper.parseString(connection); - oldRide.setData(parsedData); - int i = bookedRides.indexOf(oldRide); - loadedRides.add(bookedRides.remove(i)); + ride.setData(parsedData); + ride.setState(State.LOADED); } - sendGetRideRequestData(oldRide); + sendGetRideRequestData(ride); @@ -88,23 +86,23 @@ public class ClientMock extends ClientServlet { * # send GET (Ride)(Request)(Data) */ @Override - void sendGetRideRequestData(Ride oldRide) throws IOException { + void sendGetRideRequestData(Ride ride) throws IOException { HttpURLConnection connection = ConnectionHelper.make("GET", MISP_BRIDGE_URL); // send GET (Ride)(Request)(Data) connection.setDoOutput(true); DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); - outputStream.writeBytes(oldRide.json()); + outputStream.writeBytes(ride.json()); outputStream.flush(); outputStream.close(); - // handle OK (EOL) + // handle OK (Ride) // remove Ride from LoadedRides if (connection.getResponseCode() == 200) { Ride shellIdRide = ConnectionHelper.parseRide(connection); - if (shellIdRide.getRideID() != null) { - loadedRides.remove(oldRide); + if (shellIdRide.getID() != null) { + rideMap.remove(ride.getID()); } } } diff --git a/mispmock/src/Main.java b/mispmock/src/Main.java index 055a0dd..5343dff 100644 --- a/mispmock/src/Main.java +++ b/mispmock/src/Main.java @@ -8,7 +8,7 @@ public class Main { MockSet mockSet = new MockSet(); - Runnable publicRunnable = new PublicMock(mockSet); + Runnable publicRunnable = new UserMock(mockSet); Runnable bridgeRunable = new BridgeRunnable(mockSet); Runnable clientRunnable = new ClientRunnable(mockSet); Runnable appRunnable = new AppMock(mockSet); diff --git a/mispmock/src/MockSet.java b/mispmock/src/MockSet.java index cea798d..bf38ad1 100644 --- a/mispmock/src/MockSet.java +++ b/mispmock/src/MockSet.java @@ -1,5 +1,5 @@ public class MockSet { - PublicMock publicMock; + UserMock userMock; BridgeMock bridgeMock; ClientMock clientMock; AppMock appMock; diff --git a/mispmock/src/PublicMock.java b/mispmock/src/UserMock.java similarity index 82% rename from mispmock/src/PublicMock.java rename to mispmock/src/UserMock.java index f9696f7..b0ff300 100644 --- a/mispmock/src/PublicMock.java +++ b/mispmock/src/UserMock.java @@ -2,10 +2,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -public class PublicMock extends ActorRunnable { +public class UserMock extends ActorRunnable { - public PublicMock(MockSet mockSet){ + public UserMock(MockSet mockSet){ super(mockSet); } diff --git a/mispmock/src/exchange/RequestMock.java b/mispmock/src/exchange/RequestMock.java index 41efbdf..4a70ad9 100644 --- a/mispmock/src/exchange/RequestMock.java +++ b/mispmock/src/exchange/RequestMock.java @@ -2,7 +2,18 @@ package exchange; import org.springframework.mock.web.MockHttpServletRequest; -public class RequestMock extends MockHttpServletRequest { +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.Part; +import java.io.IOException; +import java.util.Collection; + +/** + * - Contains reference to ExchangeMock + * - Rest is dummy code. + */ +public class RequestMock extends MockHttpServletRequest implements HttpServletRequest { public ExchangeMock exchange; @@ -10,4 +21,64 @@ public class RequestMock extends MockHttpServletRequest { super(); this.exchange = exchange; } + + @Override + public boolean authenticate(HttpServletResponse httpServletResponse) throws IOException, ServletException { + return false; + } + + @Override + public void login(String s, String s1) throws ServletException { + + } + + @Override + public void logout() throws ServletException { + + } + + @Override + public Collection getParts() throws IOException, ServletException { + return null; + } + + @Override + public Part getPart(String s) throws IOException, ServletException { + return null; + } + + @Override + public ServletContext getServletContext() { + return null; + } + + @Override + public AsyncContext startAsync() throws IllegalStateException { + return null; + } + + @Override + public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException { + return null; + } + + @Override + public boolean isAsyncStarted() { + return false; + } + + @Override + public boolean isAsyncSupported() { + return false; + } + + @Override + public AsyncContext getAsyncContext() { + return null; + } + + @Override + public DispatcherType getDispatcherType() { + return null; + } } \ No newline at end of file diff --git a/mispmock/src/exchange/ResponseMock.java b/mispmock/src/exchange/ResponseMock.java index 3864862..501c80c 100644 --- a/mispmock/src/exchange/ResponseMock.java +++ b/mispmock/src/exchange/ResponseMock.java @@ -3,7 +3,20 @@ package exchange; import org.springframework.mock.web.MockHttpServletResponse; -public class ResponseMock extends MockHttpServletResponse { +import javax.servlet.ServletOutputStream; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.List; +import java.util.Locale; +import java.util.Set; + +/** + * - Contains reference to ExchangeMock + * - Rest is dummy code. + */ +public class ResponseMock extends MockHttpServletResponse implements HttpServletResponse { public ExchangeMock exchange; @@ -13,5 +26,183 @@ public class ResponseMock extends MockHttpServletResponse { } + @Override + public void addCookie(Cookie cookie) { + + } + + @Override + public boolean containsHeader(String s) { + return false; + } + + @Override + public String encodeURL(String s) { + return null; + } + + @Override + public String encodeRedirectURL(String s) { + return null; + } + + @Override + public String encodeUrl(String s) { + return null; + } + + @Override + public String encodeRedirectUrl(String s) { + return null; + } + + @Override + public void sendError(int i, String s) throws IOException { + + } + + @Override + public void sendError(int i) throws IOException { + + } + + @Override + public void sendRedirect(String s) throws IOException { + + } + + @Override + public void setDateHeader(String s, long l) { + + } + + @Override + public void addDateHeader(String s, long l) { + + } + + @Override + public void setHeader(String s, String s1) { + + } + + @Override + public void addHeader(String s, String s1) { + + } + + @Override + public void setIntHeader(String s, int i) { + + } + + @Override + public void addIntHeader(String s, int i) { + + } + + @Override + public void setStatus(int i) { + + } + + @Override + public void setStatus(int i, String s) { + + } + @Override + public int getStatus() { + return 0; + } + + @Override + public String getHeader(String s) { + return null; + } + + @Override + public List getHeaders(String s) { + return null; + } + + @Override + public Set getHeaderNames() { + return null; + } + + @Override + public String getCharacterEncoding() { + return null; + } + + @Override + public String getContentType() { + return null; + } + + @Override + public ServletOutputStream getOutputStream() { + return null; + } + + @Override + public PrintWriter getWriter() { + return null; + } + + @Override + public void setCharacterEncoding(String s) { + + } + + @Override + public void setContentLength(int i) { + + } + + @Override + public void setContentType(String s) { + + } + + @Override + public void setBufferSize(int i) { + + } + + @Override + public int getBufferSize() { + return 0; + } + + @Override + public void flushBuffer() { + + } + + @Override + public void resetBuffer() { + + } + + @Override + public boolean isCommitted() { + return false; + } + + @Override + public void reset() { + + } + + @Override + public void setLocale(Locale locale) { + + } + + @Override + public Locale getLocale() { + return null; + } } diff --git a/overview.png b/overview.png index b1be16b05ff49506c52471367369b67a889a6eb0..c90860bd97ca60c079cd88816d7340a1138bc6da 100644 GIT binary patch literal 35261 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 90 30 - public + user bg=#90CAF9