From 6ceded81d5123509400c15f157cee1040b1c4838 Mon Sep 17 00:00:00 2001 From: NANDINIWANI08 <105547901+NANDINIWANI08@users.noreply.github.com> Date: Sun, 30 Apr 2023 14:35:40 +0530 Subject: [PATCH 01/10] Create README.md --- The Mavericks_SY_59/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 The Mavericks_SY_59/README.md diff --git a/The Mavericks_SY_59/README.md b/The Mavericks_SY_59/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/The Mavericks_SY_59/README.md @@ -0,0 +1 @@ + From 36b2aa83cdfd886d942562d3e7999ac6af2ba980 Mon Sep 17 00:00:00 2001 From: NANDINIWANI08 <105547901+NANDINIWANI08@users.noreply.github.com> Date: Sun, 30 Apr 2023 14:49:01 +0530 Subject: [PATCH 02/10] Add files via upload --- .../src/main/java/com/buffer/DataImport.java | 129 +++++++++ .../src/main/java/com/buffer/ExitServlet.java | 50 ++++ .../src/main/java/com/buffer/Hashtable.java | 249 ++++++++++++++++++ .../src/main/java/com/buffer/Heap.java | 181 +++++++++++++ .../main/java/com/buffer/Level1Servlet.java | 46 ++++ .../main/java/com/buffer/Level2Servlet.java | 46 ++++ .../main/java/com/buffer/Level3Servlet.java | 43 +++ .../src/main/java/com/buffer/MainServlet.java | 38 +++ .../src/main/java/com/buffer/Parking.java | 52 ++++ .../main/java/com/buffer/ParkingServlet.java | 74 ++++++ .../src/main/java/com/buffer/Vehicle.java | 58 ++++ .../main/java/com/buffer/VehicleServlet.java | 36 +++ .../src/main/webapp/META-INF/MANIFEST.MF | 3 + .../WEB-INF/lib/mysql-connector-j-8.0.33.jar | Bin 0 -> 2481560 bytes The Mavericks_SY_59/src/main/webapp/admin.css | 80 ++++++ The Mavericks_SY_59/src/main/webapp/admin.jsp | 26 ++ The Mavericks_SY_59/src/main/webapp/bill.jsp | 22 ++ The Mavericks_SY_59/src/main/webapp/entry.css | 86 ++++++ The Mavericks_SY_59/src/main/webapp/entry.jsp | 24 ++ The Mavericks_SY_59/src/main/webapp/index.jsp | 22 ++ .../src/main/webapp/level1.jsp | 86 ++++++ .../src/main/webapp/level2.jsp | 86 ++++++ .../src/main/webapp/level3.jsp | 86 ++++++ The Mavericks_SY_59/src/main/webapp/login.css | 63 +++++ The Mavericks_SY_59/src/main/webapp/main.jsp | 26 ++ .../src/main/webapp/parking.jsp | 84 ++++++ .../src/main/webapp/parkno.jsp | 22 ++ 27 files changed, 1718 insertions(+) create mode 100644 The Mavericks_SY_59/src/main/java/com/buffer/DataImport.java create mode 100644 The Mavericks_SY_59/src/main/java/com/buffer/ExitServlet.java create mode 100644 The Mavericks_SY_59/src/main/java/com/buffer/Hashtable.java create mode 100644 The Mavericks_SY_59/src/main/java/com/buffer/Heap.java create mode 100644 The Mavericks_SY_59/src/main/java/com/buffer/Level1Servlet.java create mode 100644 The Mavericks_SY_59/src/main/java/com/buffer/Level2Servlet.java create mode 100644 The Mavericks_SY_59/src/main/java/com/buffer/Level3Servlet.java create mode 100644 The Mavericks_SY_59/src/main/java/com/buffer/MainServlet.java create mode 100644 The Mavericks_SY_59/src/main/java/com/buffer/Parking.java create mode 100644 The Mavericks_SY_59/src/main/java/com/buffer/ParkingServlet.java create mode 100644 The Mavericks_SY_59/src/main/java/com/buffer/Vehicle.java create mode 100644 The Mavericks_SY_59/src/main/java/com/buffer/VehicleServlet.java create mode 100644 The Mavericks_SY_59/src/main/webapp/META-INF/MANIFEST.MF create mode 100644 The Mavericks_SY_59/src/main/webapp/WEB-INF/lib/mysql-connector-j-8.0.33.jar create mode 100644 The Mavericks_SY_59/src/main/webapp/admin.css create mode 100644 The Mavericks_SY_59/src/main/webapp/admin.jsp create mode 100644 The Mavericks_SY_59/src/main/webapp/bill.jsp create mode 100644 The Mavericks_SY_59/src/main/webapp/entry.css create mode 100644 The Mavericks_SY_59/src/main/webapp/entry.jsp create mode 100644 The Mavericks_SY_59/src/main/webapp/index.jsp create mode 100644 The Mavericks_SY_59/src/main/webapp/level1.jsp create mode 100644 The Mavericks_SY_59/src/main/webapp/level2.jsp create mode 100644 The Mavericks_SY_59/src/main/webapp/level3.jsp create mode 100644 The Mavericks_SY_59/src/main/webapp/login.css create mode 100644 The Mavericks_SY_59/src/main/webapp/main.jsp create mode 100644 The Mavericks_SY_59/src/main/webapp/parking.jsp create mode 100644 The Mavericks_SY_59/src/main/webapp/parkno.jsp diff --git a/The Mavericks_SY_59/src/main/java/com/buffer/DataImport.java b/The Mavericks_SY_59/src/main/java/com/buffer/DataImport.java new file mode 100644 index 0000000..a5e9bc1 --- /dev/null +++ b/The Mavericks_SY_59/src/main/java/com/buffer/DataImport.java @@ -0,0 +1,129 @@ +package com.buffer; + +import java.beans.Statement; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.time.LocalDate; +import java.time.LocalTime; +import java.util.Arrays; +import java.util.Scanner; + +class DataImport { +//inserting data + static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; + static final String DB_URL="jdbc:mysql://localhost/vozilopark"; + static final String user="root"; + static final String pass="DarkLord@05"; + public Connection con; + DataImport(){ + try { + System.out.println("Checking for driver"); + Class.forName(JDBC_DRIVER); + System.out.println("Driver ok"); + System.out.println("Connecting database"); + con=DriverManager.getConnection(DB_URL,user,pass); + System.out.println("Connected"); + } + catch(ClassNotFoundException e) { + System.out.println("Class Not Found"); + } + catch(SQLException se) { + System.out.println("SQL Exception"); + } + } + + public void insertdata(Connection xyz,Method abc,Heap bcd) throws SQLException { + PreparedStatement pstmt=null; + String query,query1; + query="select * from parking"; + pstmt=xyz.prepareStatement(query); + ResultSet rs1=pstmt.executeQuery(query); + while(rs1.next()) { + String no=rs1.getString("parkingno"); + int f=rs1.getInt("fill"); + Parking newnode=abc.search(no); + if(f==1) { + newnode.fill=true; + abc.Put(no,newnode); + query1="select * from vehicle where parkingno = '"+no+"'"; + PreparedStatement x=xyz.prepareStatement(query1); + ResultSet rs2=x.executeQuery(query1); + Vehicle newnode1=new Vehicle(); + while(rs2.next()) { + newnode1.Vehicle_No=rs2.getString("Vehicleno"); + newnode1.Phone_No=rs2.getString("phoneno"); + newnode1.ParkingNo=rs2.getString("parkingno"); + LocalDate localDate = rs2.getDate("EntryDate").toLocalDate(); + newnode1.Date=localDate; + CharSequence s1=rs2.getString("Entrytime"); + LocalTime localtime=LocalTime.parse(s1); + newnode1.Entry=localtime; + abc.entry(no, newnode1); + } + } + else { + bcd.insert(newnode); + + } + } + + } + + public long delete(Connection xyz,Method abc,Heap bcd,String number) throws SQLException { + System.out.println("Delete Executed"); + PreparedStatement pstmt=null; + String query,query1; + bcd.insert(abc.search(number)); + Vehicle car=abc.exit(number); + car.exit(); + long a=car.payment(); + query="delete from vehicle where parkingno=?"; + pstmt=xyz.prepareStatement(query); + pstmt.setString(1,number); + pstmt.executeUpdate(); + query1="update parking set fill=0 where parkingno=?"; + pstmt=xyz.prepareStatement(query1); + pstmt.setString(1,number); + pstmt.executeUpdate(); + for(int i = 0; i < 48; i ++) { + if(MainServlet.h.heap[i] != null)System.out.println(MainServlet.h.heap[i].parkingNo); + } + return a; + } + + public String getnearest(Connection xyz,Method abc,Heap bcd,String vehno,String phnum) throws SQLException { + + //heap + Parking allocted=bcd.heap[1]; + String s2=allocted.parkingNo; + + + Vehicle cust=new Vehicle(); + cust.userdetails(allocted.parkingNo,vehno,phnum); + abc.Put(allocted.parkingNo, allocted); + abc.entry(allocted.parkingNo,cust); + bcd.delete(); + + PreparedStatement pstmt=null; + String query; + query="insert into vehicle values( '"+cust.Vehicle_No+"','"+cust.ParkingNo+"','" + +cust.Phone_No+"','"+cust.Date.toString()+"','"+cust.Entry.toString()+"')"; + pstmt=xyz.prepareStatement(query); + pstmt.executeUpdate(); + + String query1="update parking set fill=1 where parkingno= '"+s2+"'"; + pstmt=xyz.prepareStatement(query1); + pstmt.executeUpdate(); + + return s2; + } + +} + + + + + diff --git a/The Mavericks_SY_59/src/main/java/com/buffer/ExitServlet.java b/The Mavericks_SY_59/src/main/java/com/buffer/ExitServlet.java new file mode 100644 index 0000000..e9f52f7 --- /dev/null +++ b/The Mavericks_SY_59/src/main/java/com/buffer/ExitServlet.java @@ -0,0 +1,50 @@ +package com.buffer; + +import java.io.IOException; +import java.sql.SQLException; + +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +/** + * Servlet implementation class ExitServlet + */ +@WebServlet("/ExitServlet") +public class ExitServlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + /** + * Default constructor. + */ +public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + +// DataImport dm = new DataImport(); +// Method vozilopark=new Method(); +// Heap h=new Heap(48); + long amount = 0; + String vehicleNo = request.getParameter("exitvehicle"); + System.out.println(vehicleNo); +// try { +// MainServlet.dm.insertdata(MainServlet.dm.con,MainServlet.vozilopark,MainServlet.h); +// } catch (SQLException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } + try { + amount = MainServlet.dm.delete(MainServlet.dm.con,MainServlet.vozilopark ,MainServlet.h,vehicleNo); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + request.setAttribute("amount", amount); + RequestDispatcher rd = request.getRequestDispatcher("/bill.jsp"); + rd.forward(request, response); + + } +} diff --git a/The Mavericks_SY_59/src/main/java/com/buffer/Hashtable.java b/The Mavericks_SY_59/src/main/java/com/buffer/Hashtable.java new file mode 100644 index 0000000..1076419 --- /dev/null +++ b/The Mavericks_SY_59/src/main/java/com/buffer/Hashtable.java @@ -0,0 +1,249 @@ +package com.buffer; + +import java.util.Scanner; + + + +public class Hashtable { + + Parking[] Floor1=new Parking[16]; + + Parking[] Floor2=new Parking[16]; + + Parking[] Floor3=new Parking[16]; + + Parking[] Parking_Lot[]= {Floor1,Floor2,Floor3}; + + + + long generateHeapKey(String parkingID) { + + + + long ans = 0; + + ans += Integer.parseInt(parkingID.substring(0, 1)); + + String c = parkingID.substring(1,2); + + ans *= 10; + + + + if(c.equals("B")){ + + ans += 2; + + } + + + + else if(c.equals("R" )||c.equals("L" )) { + + ans += 1; + + } + + + + String s = parkingID.substring(2); + + ans *= Math.pow(10, s.length()); + + ans += Integer.parseInt(s); + + + + return ans; + + + + } + + + + Hashtable() + + { + + + + for(int i=0;i<3;i++) + + { + + for(int j=0;j<16;j++) + + { + + + + if(j<6) { + + Parking newnode=new Parking(Integer.toString(i+1)+"R"+Integer.toString(j+1)); + + Parking_Lot[i][j]=newnode; + + Parking_Lot[i][j].heapKey=generateHeapKey(Integer.toString(i+1)+"R"+Integer.toString(j+1)); + + } + + else if(j<=10 && j>=6) { + + Parking newnode=new Parking(Integer.toString(i+1)+"L"+Integer.toString(j-5)); + + Parking_Lot[i][j]=newnode; + + Parking_Lot[i][j].heapKey=generateHeapKey(Integer.toString(i+1)+"L"+Integer.toString(j-5)); + + } + + else { + + + + Parking newnode=new Parking(Integer.toString(i+1)+"B"+Integer.toString(j-10)); + + Parking_Lot[i][j]=newnode; + + Parking_Lot[i][j].heapKey=generateHeapKey(Integer.toString(i+1)+"B"+Integer.toString(j-10)); + + } + + } + + } + + + + }} + + + +class Method{ + + Scanner input=new Scanner(System.in); + + + + Hashtable node=new Hashtable(); + + + + int outerHashkey(String key){ + + int key1; + + String Str=key.substring(0,1); + + key1=Integer.parseInt(Str); + + return key1-1; + + } + + + + int Innerhashkey(String Key) { + + int key1; + + String str =Key.substring(1,2); + + String Str1=Key.substring(2,3); + + int a=Integer.parseInt(Str1); + + if(str.equals("R")) { + + return a-1; + + } + + else if(str.equals("L")) { + + return a+5; + + } + + else { + + return a+10; + + } + + } + + + + void Put(String Key,Parking Node){ + + int i=outerHashkey(Key); + + int j=Innerhashkey(Key); + + node.Parking_Lot[i][j]=Node; + + } + + + + Parking search(String Key){ + + int i=outerHashkey(Key); + + int j=Innerhashkey(Key); + + return node.Parking_Lot[i][j]; + + } + + + + Vehicle exit(String Key){ + + int i=outerHashkey(Key); + int j=Innerhashkey(Key); + Vehicle newnode=new Vehicle(); + Vehicle x=node.Parking_Lot[i][j].User; + node.Parking_Lot[i][j].User=newnode; + node.Parking_Lot[i][j].fill=false; + return x; + + } + + + + void entry(String Key,Vehicle newnode){ + + int i=outerHashkey(Key); + + int j=Innerhashkey(Key); + + node.Parking_Lot[i][j].User=newnode; + + node.Parking_Lot[i][j].fill=true; + + } + + + + boolean notfill(Parking newnode) { + + if(newnode.fill==false) { + + return true; + + } + + else { + + return false; + + } + + }} + + + + diff --git a/The Mavericks_SY_59/src/main/java/com/buffer/Heap.java b/The Mavericks_SY_59/src/main/java/com/buffer/Heap.java new file mode 100644 index 0000000..80734f9 --- /dev/null +++ b/The Mavericks_SY_59/src/main/java/com/buffer/Heap.java @@ -0,0 +1,181 @@ +package com.buffer; + +public class Heap { + + + +Parking heap[]; + +int lastIndexEntered; + + + +Heap(int size){ + +heap = new Parking[size+1]; + +lastIndexEntered = 0; + +heap[0] = new Parking("00"); + +heap[0].heapKey =Integer.MIN_VALUE; + +} + + + +boolean isFull() { + + + +if(lastIndexEntered == heap.length-1) return true; + +return false; + + + +} + + + +boolean isEmpty() { + + + +if(lastIndexEntered == 0) return true; + +return false; + + + +} + + + +void heapifyBottomToTop(int index) { + + + + if(heap[index].heapKey < heap[index/2].heapKey) { + + Parking temp = heap[index]; + + heap[index] = heap[index/2]; + + heap[index/2] = temp; + + heapifyBottomToTop(index/2); + + } + + + +} + + + +void heapifyTopToBottom(int index) { + + + + int left = index * 2, right = index * 2 + 1; + + + + if(left > lastIndexEntered) { + + + + return; + + + + } + + + + if(heap[left].heapKey < heap[right].heapKey && heap[left].heapKey < heap[index].heapKey) { + + + + Parking temp = heap[left]; + + heap[left]=heap[index]; + + heap[index]=temp; + + heapifyTopToBottom(left); + + + + } + + else{ + + + + Parking temp=heap[right]; + + heap[right]=heap[index]; + + heap[index]=temp; + + heapifyTopToBottom(right); + + + + } + + + +} + + + + + +void insert(Parking val) { + + + +if(!isFull()) { + +heap[++lastIndexEntered]=val; + +heapifyBottomToTop(lastIndexEntered); + +} + +System.out.println("Insert done"); +System.out.println(heap[1].heapKey); +System.out.println(heap[1].parkingNo); + + +} + + + +void delete() { + + + +if(!isEmpty()) { + + + +heap[1]=heap[lastIndexEntered]; + +lastIndexEntered--; + +heapifyTopToBottom(1); + + + +} + + + +} +} + + diff --git a/The Mavericks_SY_59/src/main/java/com/buffer/Level1Servlet.java b/The Mavericks_SY_59/src/main/java/com/buffer/Level1Servlet.java new file mode 100644 index 0000000..326fa06 --- /dev/null +++ b/The Mavericks_SY_59/src/main/java/com/buffer/Level1Servlet.java @@ -0,0 +1,46 @@ +package com.buffer; + +import java.io.IOException; + +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +/** + * Servlet implementation class Level1Servlet + */ +@WebServlet("/Level1Servlet") +public class Level1Servlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + /** + * Default constructor. + */ + public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + Hashtable hash = MainServlet.vozilopark.node; + + String s = ""; + + for(int i = 0; i<16; i++) { + if(hash.Floor1[i].fill) { + s += "1"; + } + else { + s += "0"; + } + } + + int name = 3; + //String s = "1110010000110101"; + + request.setAttribute("label", name); + request.setAttribute("ele", s); + RequestDispatcher rd = request.getRequestDispatcher("/level1.jsp"); + rd.forward(request, response); + + } +} diff --git a/The Mavericks_SY_59/src/main/java/com/buffer/Level2Servlet.java b/The Mavericks_SY_59/src/main/java/com/buffer/Level2Servlet.java new file mode 100644 index 0000000..ba5eb1a --- /dev/null +++ b/The Mavericks_SY_59/src/main/java/com/buffer/Level2Servlet.java @@ -0,0 +1,46 @@ +package com.buffer; + +import java.io.IOException; + +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +/** + * Servlet implementation class Level2Servlet + */ +@WebServlet("/Level2Servlet") +public class Level2Servlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + /** + * Default constructor. + */ + public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + +Hashtable hash = MainServlet.vozilopark.node; + + String s = ""; + + for(int i = 0; i<16; i++) { + if(hash.Floor2[i].fill) { + s += "1"; + } + else { + s += "0"; + } + } + + int name = 3; + //String s = "1110010110110101"; + + request.setAttribute("label", name); + request.setAttribute("ele", s); + RequestDispatcher rd = request.getRequestDispatcher("/level2.jsp"); + rd.forward(request, response); + + } +} diff --git a/The Mavericks_SY_59/src/main/java/com/buffer/Level3Servlet.java b/The Mavericks_SY_59/src/main/java/com/buffer/Level3Servlet.java new file mode 100644 index 0000000..ab74bd6 --- /dev/null +++ b/The Mavericks_SY_59/src/main/java/com/buffer/Level3Servlet.java @@ -0,0 +1,43 @@ +package com.buffer; + +import java.io.IOException; + +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +/** + * Servlet implementation class Level3Servlet + */ +@WebServlet("/Level3Servlet") +public class Level3Servlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + + Hashtable hash = MainServlet.vozilopark.node; + + String s = ""; + + for(int i = 0; i<16; i++) { + if(hash.Floor3[i].fill) { + s += "1"; + } + else { + s += "0"; + } + } + + int name = 3; + //String s = "1110000000110101"; + + request.setAttribute("label", name); + request.setAttribute("ele", s); + RequestDispatcher rd = request.getRequestDispatcher("/level3.jsp"); + rd.forward(request, response); + + } +} diff --git a/The Mavericks_SY_59/src/main/java/com/buffer/MainServlet.java b/The Mavericks_SY_59/src/main/java/com/buffer/MainServlet.java new file mode 100644 index 0000000..3593a54 --- /dev/null +++ b/The Mavericks_SY_59/src/main/java/com/buffer/MainServlet.java @@ -0,0 +1,38 @@ +package com.buffer; + +import java.io.IOException; +import java.sql.SQLException; + +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +/** + * Servlet implementation class MainServlet + */ +@WebServlet("/MainServlet") +public class MainServlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + public static DataImport dm = new DataImport(); + public static Heap h = new Heap(48); + public static Method vozilopark = new Method(); + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + //DataImport dm = new DataImport(); + //Method vozilopark=new Method(); + //Heap h=new Heap(48); + try { + dm.insertdata(dm.con,vozilopark,h); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + RequestDispatcher rd = request.getRequestDispatcher("main.jsp"); + rd.forward(request, response); + } + +} diff --git a/The Mavericks_SY_59/src/main/java/com/buffer/Parking.java b/The Mavericks_SY_59/src/main/java/com/buffer/Parking.java new file mode 100644 index 0000000..86f1db1 --- /dev/null +++ b/The Mavericks_SY_59/src/main/java/com/buffer/Parking.java @@ -0,0 +1,52 @@ +package com.buffer; + +public class Parking { + + + + String parkingNo; + + + + boolean fill; + + + + long heapKey; + + + + Vehicle User; + + + + public Parking(String parkingNo){ + + + + this.parkingNo = parkingNo; + + + + fill = false; + + + + heapKey = -1; + + + + User=null; + + + + } + + + + + + + +} + diff --git a/The Mavericks_SY_59/src/main/java/com/buffer/ParkingServlet.java b/The Mavericks_SY_59/src/main/java/com/buffer/ParkingServlet.java new file mode 100644 index 0000000..2d6a874 --- /dev/null +++ b/The Mavericks_SY_59/src/main/java/com/buffer/ParkingServlet.java @@ -0,0 +1,74 @@ +package com.buffer; + +import java.io.IOException; +import java.sql.SQLException; + +import org.apache.catalina.Globals; + +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +@SuppressWarnings("serial") +@WebServlet("/ParkingServlet") +public class ParkingServlet extends HttpServlet{ + + public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + +// DataImport dm = new DataImport(); +// Method vozilopark=new Method(); +// Heap h=new Heap(48); +// try { +// MainServlet.dm.insertdata(MainServlet.dm.con,MainServlet.vozilopark,MainServlet.h); +// } catch (SQLException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } + + String vehicleNo = (String) request.getAttribute("vehicleNo"); + String phoneNo = (String) request.getAttribute("phoneNo"); + + String s1 = null; + + try { + s1 = MainServlet.dm.getnearest(MainServlet.dm.con,MainServlet.vozilopark,MainServlet.h, vehicleNo, phoneNo); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + System.out.println(s1); + + int floor = Integer.parseInt(s1.substring(0,1)); + String s = s1.substring(1); + if(s.charAt(0) != 'B') { + int width = 100 - (6 - Integer.parseInt(s.substring(1))) * 15; + String road = "
"; + request.setAttribute("road", road); + String empBox = ""; + request.setAttribute("emp-park", empBox); + String bottom_road = ""; + request.setAttribute("bottom-road", bottom_road); + } + else { + int width = 15 * (Integer.parseInt(s.substring(1)) + 1); + String road = ""; + request.setAttribute("road", road); + String empBox = ""; + request.setAttribute("emp-park", empBox); + String bottom_road = ""; + request.setAttribute("bottom-road", bottom_road); + } + + + request.setAttribute("label", floor); + request.setAttribute("ele", s); + RequestDispatcher rd = request.getRequestDispatcher("parking.jsp"); + rd.forward(request, response); + + } + +} diff --git a/The Mavericks_SY_59/src/main/java/com/buffer/Vehicle.java b/The Mavericks_SY_59/src/main/java/com/buffer/Vehicle.java new file mode 100644 index 0000000..af9911b --- /dev/null +++ b/The Mavericks_SY_59/src/main/java/com/buffer/Vehicle.java @@ -0,0 +1,58 @@ +package com.buffer; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.util.Scanner; +import java.time.temporal.ChronoUnit; +public class Vehicle { + + String Vehicle_No; + String Phone_No; + LocalTime Entry; + LocalTime Exit; + LocalDate Date; + String ParkingNo; + +Vehicle(){ +Vehicle_No=null; +Phone_No=null; +Entry=null; +Exit=null; +Date=null; +ParkingNo=null; + +} + +void userdetails(String number,String vno,String pno) { + +Vehicle_No=vno; + +Phone_No=pno; + +Entry=LocalTime.now(); + +Date=LocalDate.now(); + +ParkingNo=number; + +} + +void exit() { +Exit=LocalTime.now(); +} + +long payment() { + long hours = ChronoUnit.HOURS.between(Entry, Exit); + System.out.println(hours); + if(hours<=2) { + return 30; + } + else { + long cal=hours-2; + return 30+cal*20; + } +} + + +} + diff --git a/The Mavericks_SY_59/src/main/java/com/buffer/VehicleServlet.java b/The Mavericks_SY_59/src/main/java/com/buffer/VehicleServlet.java new file mode 100644 index 0000000..dd792ec --- /dev/null +++ b/The Mavericks_SY_59/src/main/java/com/buffer/VehicleServlet.java @@ -0,0 +1,36 @@ +package com.buffer; + +import java.io.IOException; + +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +/** + * Servlet implementation class VehicleServlet + */ +@WebServlet("/VehicleServlet") +public class VehicleServlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + + protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + // TODO Auto-generated method stub + + String vehicleNo = request.getParameter("vehicle"); + String phoneNo = request.getParameter("phone"); + +// System.out.println(vehicleNo); +// System.out.println(phoneNo); + + request.setAttribute("vehicleNo", vehicleNo); + request.setAttribute("phoneNo", phoneNo); + + RequestDispatcher rd = request.getRequestDispatcher("/ParkingServlet"); + rd.forward(request, response); + } + +} diff --git a/The Mavericks_SY_59/src/main/webapp/META-INF/MANIFEST.MF b/The Mavericks_SY_59/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000..5e94951 --- /dev/null +++ b/The Mavericks_SY_59/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/The Mavericks_SY_59/src/main/webapp/WEB-INF/lib/mysql-connector-j-8.0.33.jar b/The Mavericks_SY_59/src/main/webapp/WEB-INF/lib/mysql-connector-j-8.0.33.jar new file mode 100644 index 0000000000000000000000000000000000000000..3f741f59f33bc34c944397480ed996b8b3e50ea0 GIT binary patch literal 2481560 zcma&N18`?g*De}6lZnk=Y}>ZYN%D(rCzFY7+qONiZQHgpXa48?aK884y7%s?uG*{X z>F%nh*V?_->a`VRz#-s3Kwv;XUj5C~LH>^i76bxBPE1vZPD);!;cE;8MDahMFd#2~ zp)@4Mk(%HjAkpw3AZUMw{TEbDNM1@@OhuJmPCQC|+b)CgyRXEapP32&S9-CfRJzNA1Q@b{-yx;UvpjTNZfMu zF4)G?>G@luy0U@dMOyWNUr)U9_a!c w@XW<=O=O8qKu#%{q|Qm+O|Yrz{;aZi3LQ{Ai-ItUANO zz*kLr_;y)K 19sEa%kjItDN zVG(vakE%PDsawKXvg#^2$owW);x0 sOkk}%VH|jd#pje$Zh6ESc-dWhoB4Ce1 zOPR9Q^xY$x`@^ckhfa4K`=rwH@?=fWGlAAU_`9-v=M62d1W5KVN)V=Gw8y8vz;P-E z8K >ppZ&Xzn{2x4!@KwJ573r qig?hr_Fk*pt&Mjac^dVGX(mXiAUL!JzJ!dYnw_ zM;3{O!>gAV!Q>$!ng>aWpX$M_?w3@YOxs5T3DWKzLpX21cn|d*E&ZS35vSIV4ibg^ zJAN_!fkOc_52} (#ASps|8EvxY9#|=9 zBpQxdDhDEMnYklYZ5N6MO1iGpjua_MaUE@$r6cEU7s?0f^b}NgIP@LpZCT@^yB@+S zt(oN`1oS0T_40Etsn2;YW>6IUus42zq-fWq_AQE|2RYwBC1z;9PLttSGd$%+J7-8~ z`mOs~$%&8c$Qs>g40%GEGic&NLJM3+2pku7C?wauH)n9l1+Gi&VWhGEIUGRCW;%7* zU`GxMhrAsF%9P@E VL@|p} zAD0}@Vvfy~5{&`Q0Dvt_SDoQapU#0wKyUmhkjAkxT@u6#CCdAl-_;g?;7EHZ^6vQj z*q}=; Z6n?xESkNIhO=Q<}zf QBn;7+Bz}if-sg zHB%*8D +sr6?@{?!>FPlk-ZJtYkh5Y3?hN6?4H?f))m znx8TANgDMo*(#|^c46U>jh|&czAT~1KUMF|JdH$+W6=nfRmEOkI5bgpN!nB57jxv{ zf-qV*Ow~Ktye3CXZ`g`JkFuh`+_rnSIMFcspjl+{0W jjsq5-xOY*>QRAmR<4jHS zbP1ai`1zJYtX|&i=?ME>cmeFlSzG4A%yBBnLJdVDk3z?rlY93a5?7Ctt7311jjzd} z8#ISCY}x3I PR8$8Ev{>* z6xKsqT1m2`vxVUwK60YVrhnnhAT+u~=sjM~T1d-U& xtmWwS-V%z|BGu~NXyoqvW;LH~#~&tl{uA!_M-5A1_v>$ct^Jh~ zoJY$jV*TT9j(FST8o8J`M7&5b$IY3F{++)gOhxor*H`7_4 wQ+ z;fr7r^9?4PbAps1r571sb*_;|3Jk^`xG?4*=N`vXeM^H7{1HAKixnCb+XYYG&}D1t z6oUn^-;$aICW8VBWIw5k8Cn#R1-0J%`dm%m6RQj+AC%!eAn(qW8GVw293jSLYZf1% z;1A&vD-1BNm=tn(eG-b1>J+;LU*8^OpLI$FbHP5L uE$rKqr$%_?Q z6z%*ybs`Q-o#Hy% pGMFv803Dv z;iq?x2!li5 ir zVZL^p*wT>Hi`Vnks^p4kzJ8ikiGl?W(5aVUj{akh&}?1v!Ud2xRew@e%_9YkA3|8W z)`g8BaVi8VPvtPmzn2R8k!CXQL*SGMl&_k13hqA+v-)%ek;AYG`DLz}=L@1f@=aVh z#0w_8^wqd&n%4^^JW}+vv5VzWy(R3H38>|ky{YWNsKKe02~1j_m%y^h`30}Os*x!s zeN}cfdKAO6>iN<04w}NSiumz&;!L2K7k>%6dsJYQYWu~lwsFhkYQ4$qqT4kKHaw>E ztMrKH;#l2v8p&sCoTu`6Sc*AReQCS1Pa~U0e{nY)pX&M_o!JGdcw`ISKX7Q7r#<13 z%n-lnOk`u+L#EgC;Opz2LzFilcn-6k_=O8S=C|tmr37tZWkZ6|&1}Qh1j0jVmtG^* z=tn?k7xqkFh?&<3Mm!?*(LA8|C!Y`oW3Cl}(JcxXJsH)>=9;_>?=Jeb364K1r1JL* zhrl_Pepz7Qlg}8wneCn~5h(_IwH2pmp4j_;TkiS6eg}In-?Q+)*m|evOu}eeyJOq7 z)v=R~^ToDp+Z`KUY&+@Lww;b`yJP&> dYt47gXFbeeTA`OI zenqa90rDt6&K+o9A@0t%gG<+?eyg2rhblJwntF9NY?R7VeSI=SN2bpELKd%t(5n8z z7Pki1D*QqhX8>(F5e!qT{8jzRWVlGFkojqi-2}Jz=L=Ju0MzxQCu~mZ_tM#0KQ*<2 z!WUUI55(Ex7knY(@Aiie!$kmQQu;YBY=NPj~EUEQ>Bb;^ VpfI61rDtkvVpJ z#VjiY|H6+r;ThlqJ=i?DS96g$ULM^8K46BqSK*`$m}C8`U3ez(fe(xY-K)Fk7%#qj z7LL5DH-J7wkNPwO(uD4T6u`vNTR9s=(X|qQAEHNkN&$I5`=A71Vkef*UzYTW0eOM# zQk%C%psv;Tv^?Me)Uf6$ ^gbZRDcj{m+t&J0=3!+0dUK( z*C1qz<}@1;Uhza1xMkX_5Mr0$5(P4V?$uJ{j`ve1Uz=jnsuw!MF3}|ugbbrycm5JG ziTZ&MaLt^jlFv)NY4|H$*j=i9AwUt A7Q?G)LNGY93 ;;^^m>%PD}F8A%9O y*ntf*eN>{&IrOUcw; z(zIB?QcZO$mG&C1c3dE`I01?Lqc MOHac2l|=*Di!WYd9Vg+ zM}Lhe+Qy!(p0%g=SPF23{g9i#hS#W>y{7os3Lry&4Js1Et`*7`lzJ@$k)VB`0{FA+ zP=|cdpUyzySI_E`e+&f}qrX-b_24>G3Hv8LaDv4upIie!?RsxB1O!B%0PQmYXc}ps zB&S4>S!J_eK*FCp (g;L!B@J00E3q(IT`62U4eERtCU| z&?=L!2{glTXcKOrnBv%h4e_G*hwD%*>`Xqzyh9suB$Z*^>yMs6Wtjt_PRFJ{?*sNn z(c*Uz1f)*otS|r$p;a!wi~Q2GmonrrrLhHMnXWOe$QQm {Cx@n``#|tY~oXJuq)*gQ2-UL zLys^OfM+ZK3Y|xDehiYYY?cNn$Gp=6n@xMF0!FB0QCyS^$!DW@8#NeUOa3O{VKOG? z(MU@2umjD{C4yw}!KR#0mfXRjvllvyrN=O!s+4dbyC$-=B2~|-vsH9?gH2a{PifNX zmf% ?$w!dkSg`D|sr{ zZ$mF^xeG5R@4yMT?|Nr`4myGeG^FKki+CDTO~RC6P(-J+^Swm$ID?(f6m*R&rT<)H z$N|1AczwEX-+G{#vhG1;C+cp*M;kc@Bc*g`dOC?ag?gh|-cg#8r>YcrC{OC=?^qJ6 z$6MKfV4;aLGn6}Al9(!qyq_hV$u{}9(*De?($D7W%osTba@YynY>ka|j#PHS?4=gU z)QI@t>7j4y*%v(1lryPVxQE#(Q?T_LeQp#NC-OG(Ih8KOZ4@JrxLY5ZRB}YvESM!+ zYT>m>tp9SekVw>BYcgqZ!)sGt7rt6>OMGjR7!6vxKOnhexT}36@l<&WUjB&W`|~0B zXz})}7 $ z^WL#4-NBi~>(_<9hwhJFbA?@q5WRqPjOKdKuEwdy_uL@faSDhc?$G_ZQU0+3#WsgP zUx(Z{h$<;r1uC&; SDeeGef%sTFM_LSDpauOlA#%wN=w?V*z%e}oI( zZq0}Nr!D@ lIX(nAp8BXqu7M~NF)pZ0WkIV7RBXJpQ>XY$ORj@6T-V8g^^s9|6J_)5!$BS z2mPe@bKVy*skJ6Z>B)`SSrDXf!(OEA4G%k8#sJ>`D^8a12gaDOp^g(mw7gva%$QJG znh&guR5v^&)i$IukSMr(j7iA!j_N0aCy`1q`M^Wc)=x51bd}P{P)! >qGS=LUvWKQN04p`w(TLMh5y`sNqI z3^mX2YWe=*aV-w){EWlG e``0`1+3R!g{(K|1@qPmgzz>z4(P7(*o-j- zR |a_s)JN-!pj)xWH5 r~Vzq%*y&UvT# zZe}Oa?t16;ZpS @ za0%vyC_lvd&UN4>Tf>fNhUyLL6ys#kR=)sSX|3QCJ-!SathA-!F4tORE%1>sOZE+O zI{#x3qx4CVQePs`g26{L%Ljr$_IS1%{KbnWc^bn8wGE(CDm5FL_;$+Y5o-a_My{$u zA;VBcj3-*o`(=BF$sasT1$dc>w-3pw{P~^YoX80zlEkSlBnz+HF;${sv?{hZZ99rt z_Ub-3K1`W~a3KMy*0*EU9n3A`Aa6m^g}+8g3E*BhMQu;A*f4IHH@$%c?D%!WG9Jq# zUUf~J o>NBh)=vNm*y}%iOzLX}F1vl)^u1vkyga6^b{RUt zS}q8;>b;)>o_+=(mr Jt2fr|Wjp`ST0w%ItW{HZf{eY81pQMElIIVH$ zSFHB?l=!1t(!fP8xik0q 2f|BvNW+0@15+w$uCpPpBhb*1mf`XxwkIOhQ(X&@=NUO2VDE%>=o@Oa3$IH3ms zA(N8c&dtOu@Wxu;8N@Hibfz_asy^j#BIoRCf&X~&Vsb`*+y6%|r4Rn^J?Kv3pQjhL z%PrZV+V);{g{Mi ZIu$43KH`+lRbzX<0Ked$9sr_^4}Hn z2MyZQF{Mh+!r(ErK>rGj{)>pumLHj>NriO{vHn8G2 (GQ$ bcMoHs3_cHE_bG8OPdg&084&}7MF#jszIfvQ;8GI zbo>@Qq|Nm&7Fdr1_Mu`t0fzqd>XIxdm)sT06z`jv`n5S1TQVu&MuqxhT8SPcz9<#d z#W>Mrw#zubv6G9bdWKCKGFYcaV<;`iIEM~2(L1K+s7D{uxe^Xbe5U@E*2Dy^Pa2R7 z2(4me8;wLWy_$<59YTzYBt?d byDKu$0~G+g4umvC;*V z@@O{|phh03HZ3OK6He4(yb9=iHxPu`u-=h2MXDq6mSo{JI|U$U5QFNrcGhljUK`hn z{C$NoMQvXV15k?1l`T=kM5)M*AWrG#Hc8>eW!eSuz O zme;VcG_`Y4a58l;bTT#hujDsPO9LHMjL)mdOwX|cQ~46W0)?e!Nn-PFB~(c(c9?Q< z6S`Aj?ZNKJ&LU+qfcaJuxR|1rkSGd${isqT^6!cOHd)xD`ld)cXj(gH=(5(ra1{&w z<0)YJSZ2}P{ -|k8&u`x(P}o|h2yLP)=YO!SchX=v?7$$4FZ(ha2Mi6*qiCaR39h7 zGiLWxD3QaC5MNTz^{B_nZ|;?mc4N<#I7cW-hX6q$#~nq!;Q=8`Po3d>zSbL2!kj^6 zmYnH6)=tkf&bZpS>!V$7kEPHRf5hh755D&wf(N@2RgcDmIs3bwZue+QUVXo@Zk2OB z=#d0Rq*?q(_ETB>DB?R9DncaIg1|_AN6N`lD_~(q*xWCBHZN7nU9iC%;2AM==PhI5 zM?+6CqsU$WJ@lwA@E#yk{kJ)KegTfvTsyRm)q{dueZA65B#R6r5h_7sm;0;pEflbj zFF}VsDy~-Nabdw1^IG^%{)R$~|1Bf5`WHs3WuHqpI~Gs^3EkiC0-dAakay)%e*kCE zwL2S+xg;?vYnN;Pv+QiHmeOHq5|>UXuQ^!QPZoirnw(X2E*$fIqZ|V2A49^UfxQNv z(J%0!?tZL?Q#y#Fj(J^|%69vXrBX4{ZiQOQIUbO5_5%v)knHZfB?5#8>s@xM9{qjd z5WWikY~06NcOS+1mgmvWK$psDzg*14)gIiXPVozv0(25iWtPO)U%k7#lDIseYFHvl zknFzy$l=U7FinqtqXH7EolMb82OvyZsgj{hP1d4e6X4sNmQ|QJG-M#XSuI4&4faG! zt|b4ssnJT|+XK7qW#ZEMw+lwmvnLlzDr*Z_oEBM *8Jz4t1@o?b}i{m-+;@|&L zZ a`FIG+7zA zfco#HODhdD)mX %#h1XbM^vXl+Z^j*DlmpuyeM!LIAG z`X)SAE1`Y3ucc(D#F63@iSAM$-6t_yl?PD`tCla@XJ0EmJOS$$rEbz$u~X )UCa@iXQ$*VODW#$ls*1bcgzrZr>MzXeTXj-y*sE2P_Fap9TgA3?4Jj zLK5kPaEcfrSzG+L rPE0+bJBwv~J2)ab1R1vbXo+*Y9ONv8``v4LT z*+;NsBv(Gf3x#j9lg^bq`=qwo9Nb*!_sq$s96Q^Q*`3EUqi0oOrnZb5QhhLKD6Xlt zAAZh=82(;hNz8ESnqnJGvlf3*6`e+IsF@Y1PXAM!6uPT2TJ6VLGthv9Gpxq$PSy z^Ot4@lYIm8A-GcN*K}48apsqa#PGema zJh-ox_6)8(;aVkfDt$prpA(rviJM8~LVF7E)$-u&xxcM bMNKew3iTdkGrU80YwX3#|BrM!a zv-FW2U~=Je3&c1^<~+m6nTHtlp=mIL6VxmJ(B7PcMi|p`9VAlfdY9N`v!j;#;43T< z{1m=&o0^>~wx@btPXG98oAC#Xt;2ocO#&gK7Ibk;ICSs>|5wi<7H-cX?)R~W(^I+E zvj_*2 ZiYJ_ELvwjk39TL#+sBLF>BW~M78sLC@6N#sa zH|`TSkYnWDllDZy4fVFjlKA;sd_@5cDy0B |?%in`bFnG#L(`0lI2Lh(d!lI#jej18SnmM=D?wv+fnD_OkWRS~;w+ z(zK$rT(41KUCWK5IR_pIftYU+{mDjx7?VHQ;k;a3t9t2bvi=7qy6~M=0QmO@dnW#m z)LAa!A56v8F97;JQ}o{x2=NnrUp}je;Hx4~2JvpB9Yi2JfkE9t& i8nr(Y53WKICH?1h*AR`rhCe6w^S>{jzY3*m1{60r2Dfrr-xm;~J~+tsuaG9M~$> z>99Xcax3EBRzh uEy`EddFMTuw8z;l{*MaX*98|_vZzlxdctl2CWvzvrW;}Er%wnQ_M-k2V)vl! zi0d>*I#>3@eocxSH2t^H2RrQWX#3zVJ|P-UFypCk@~BUYWI9>J6N)z=6{bE?!=-`& zBEyG!q^~@3CAKUAXzM$w8qqK2+ao%-(o)`*7i{DaMV7$E1Y`l&bH$Y 7yl~qp#sQ_KwhT4-%-++*?(xhhr}z1zY^#Q* zEj>GVyNf=hoYZxy+Q~riwly_?{V@*c;L{YZXLlBD (lRTlVU1BhMo T85k>jth;U3f)jTY&Z|5$>2b8r}V*HL!<3L1BsmMOv)5 zxkEw8nWcRdAW G3yx$SzfX@Z4C{tZuizG=Gkh6v#qesh29J!> zuJAki8_3aV%C(*sL$GYb*hFgE=naFBRT&=0vfBA0cjWJA@%;T*D}FJR=k9h)Dh=Eg zvlK97w%ay|W-L#g-zm;8ojjtD>)cnPOi2|DuKQQ6Gl%5JSd~l`a^p;8t>nBnHN|lJ zkagLCMznBqijPxzdBknLA-wsJnfZO(dTTVAMI+fgg*SJx_+N68Wd#Cjxksbr`HP9+ zi}tVof;0LLSdT)ci95@8COrDPP5vKDHxYXq8$%aMd%OSBAjf<&-4+zkKN&e^*+kVK zq$22Pi}DpfI7L;;%KipQ>xMdJF&Cwymat(5lFfXQWE C- zZ*xCM`+a=Ag7so_#u`WoF_mCE7*a~DVL0kwjIcv2JBnB|plqlh4@F0Flh}`?Vcj)H z^TJ*k2@M;eTW%!Q6~%Wl?f(uJj3!3wBMUVvO==Njsf8EGJj9GDxo$1Sa9-FlJMl~0 z{3)1LUZ6=^ ivwzJ}mf5j>9d+uuu-@z&>apa+sr;MC)V3(aI#6ZV zX@Z9P(>63XhuhB{Onna{D9P=fL&STDW|fXN)4KVoUxyA@N_VbhcAI?4-OtEN;lD|; z;rowkKDiEhFufgTh#i5_rb&3#Ff!j9_hJ{kv;I01b3l`S&cXM{je^XLzPoiF{k~bk zQfhkhmj11q?C6Zq-f?wft)L2^I6Ql6-xNuLz2{Ly8tRAP2wyfkOC+Q=#GH9{ QX7k zu)y$iOrA5(Tn;X5|MFRmxoOAqh!Mq2rp8o*%Owa?1)mp%ncrH-W}sz><{wHjV=_G_ zQI*+44`mwJ(Zl>UWc(}*w5V3;jskI0y(~QGSRb`_+B8Z%tc6fRIIiO+UH_QDd4* zcnQ;iO+N$=25`sG -*=>rb-E{s524J%m*Iv+^D z2B8HJuLdEi!wB{YKuIw57jgNAEalc&`R~Ws`RyOp-#;ITzaxVekCB@`!LdJ!8}@)t zvl#8|m5goy4f)qP#E7%^Z9FS%D!4ZAEX#A#XeYankS|=~o~R2xpbb8#(tIKGJ<+NH zA?`jr*sWCH+JqXz+A;<}@qBxV*0;O=CP^tLOa!!kue0`V*8Bgm*6f^J4DDS0Q;c#| z*Y?2si}K0Y+!(2WIuZ^pLSre?8#?HOe*x`eX{w!Kss@}JCv`$q(cD^LsZWxuj}YmF zM1}4u!m>C`PI;?_KwSU|OTi(`3QKE`XJcASi0D6i?AM)6u9A7%(!C1I2(o@nW;q|} zaCjd2&+tL*u=rev!*6RxRyw4@ZM*M7J(J)G8r>RW3Mx9bzzMqUo41Btdh52v-TGk> z8u-kHgkcl8?V=1zY 8nqOkk6S`*s1)FmeZcT=mr(z2cHF{{8W6RSL9@tiHlZr}3 zADL9|;yZ9~Ka!8Y79+Z>>ift43nY@s*qFa$Wbq{RY;Y>HQ}5-05@7Z$YEB8@R^y z#J+ mMQyzEZF;=*s* zKNLl`3Z}5UzGtiSB8R|3U}+#mHS}YOwtA!Os*oa|Mh;uBO@!m*Q^%Bu$EXYvA!=j@ zF0G2}7EM98JdOvj^1{6+ac478&9^x&ge+rNh`K$Uw}(6IUaMsD)%_wJ9AoSh8X6^u zYP+Fi|9w&0!-<=D-%Zh#AHMn4oLm{k1BMb5*(0JzkZ(YX9sw2jTf>SNIf_=p($$(? zm+;ojBuwO`p4$eq+<4-$ZVr0t3%`R375a5QU$nPix=EQ0$vO_zugf3hbXy>f&)%?P z4lQP=vLT5lj^E$VPON5J`4QA_uIir!xyPF3I$&<}&o6W8i{(nr`iV)Ck@+?$GP*kF zm@1D7wt8Vz+XH&d>V(J1p_s-}M!O>Z7A>;N)xWrwGy02?-u2n<8^ZN;YuouVj8>Pz zUd`I~` iLw8%Nag?XacWhq6Xo?^|HUm5#8RyO7Fs54#B z{!o#6PSMeJ?BL*sUExo?$+S()X&nx{#mO+4fp3f}0_5I9U~og5PP2&_>`Oi{(w)6C z?1}w>EPvN(klp6Etm!_qXk~M&+sH6ZlV08}y~A^qKIT^qQmTE<&wG)Of=GXhXDTe| zz@-X6g+_q_0@#HzT=9{Q*W_Ytp;1XxItl{ss!Jj_UJo1$29d=xGLa=Vm?td#BeDEM zrgtqb<%EhYld@Pz%KFw_f^c0`{-92J8-{b1PcvIID{oz1ncgUpb!%+7?`Y*Smi+!U zE@hqmz(0D#+ScDgG4v%GG7YT}LsRs2hK|T@r*|`|SG3U!OHOTH7F>fUEl$C 9BP zIW8!?8AR0-7gzt~ToG7VOR;=HXl_C@BozsUSI5Eim zvvc8@2$xx` (uIL}gk@ zEkDljeSs
4VB`pJW_vD6*9xp3Xr{@9(>0Th-l@_{?$}jNbCS;2; zVF-{R2rL~3tS8@X Eaw@g<8mw_FYI2cPVB+9X9fQ0 zzL>k0S|0(_K?%o11x~1!wqin}foc*T{Fbqe%YHxM6?xb<8pCVkGr9aL)HA#ME0i<6 zd_)-6T!kk%cG5*K629;Okm#k|eB#)hh59?37e4%cGA`Oh^TYeH+PJY}XA-_xDq#=Q z+|&@J;Mvep&}SopZuG&_+vFcPm YHTD$+1#zlXPq@B&(Eqb4!21zN;z^jb}`|0(XTa`PL${&xT?(8p{i*O z)H_AgLCnolP-_!$Dr*jmtxFArS~j<|$kvmTIB}B|FI7<(7?!dJA`Khbmq zm6_4ncgQWw8XOQ*s(be19;M!9GIV50p&8i?|7<|~8k%t&ao}1`+fPQOFvCA-dW_oU z#nH3M9p`am?NA@EMB7gdg-^58V(4hbT{T%lh*)!DwdS#Aud>ZKt1lVrNy)~w;;AAh z^LAUDthjuU>8W?e{;-@5E>!E6yk@ge_OP!X#z_j`&c|;Zs6S;`<~YNQ$K5&dk55gJ zE$_|}eR-KeyEdX^{R8yGBIR>btzYfn0s;n@Ut{nwY-MOlI~p;w7dKdJ*|mO=^ne!b zMoXQZO3w#wm>8II5aFeG 0Lrl`TnQj2S^ z8)NDG)E!I5E%ud|oa*OR$%{A9yZH%5OA)nVibvyv&&`>h Ee1$@bfb;MxxkBSmS`qg>*CxIHJF%L6moK=SV#BGeYqo4EIPLpK^-0orO46fEY z<6q8yo8oU^ud!Bxg_%y#?kP7ys `GY$(>m06Oj z8Nsm$GT%_i!uoN ?&tBi42<3@U{w4Ab < 2i$DJIyuA!ndluvEvVa!XvE1PrE}Lf=t gpN%)= zrPZwRnB<*inuuWlzfmXfAJ}Hk;wfC5y+vaF1}%Js_@8?ae(hq&`}Sm~=QnQ5!twk; z!(zyAn0@r&k>xA~|1^46AJNjGz77Jk6OkG4eYU?owaN#3`t44S;%<*wnOrh0W~AU8 zi?3?l8p@d+q$jo5+R^%MGNgBYql-dI{feCjGH6gXws6gW9&t@|o(Om!dX&YjewUVe znTqWyB#9&W)(cn3wdL|r3LY@%KiqInJMTJ7w{Fb385lCx&*5U0LhN(r5>4m*eD)Rv zF`un+gevzJqH$fZMZ|m3IS7=;uf{FgO-}93=J*!6d^#vpr|YVBrAT_Hq~=T;(C#vY zlTGfLl}6e&jl6o2lOst}lCDX%b5>O-v)w0MisEvG{jVqMS hbuGW8{t+bGgQ)C*)2FFnr zo0|m!dPx>z3c6v*puK!7(A#ei2)9qFXC9xq2?dw;2MGPMMrQ7xUkJAkZsGX+@}mSJ z_cgJw2!{7i=-ZarPf-0h4G?>}*qr#@OexN9G`?W-p4_e7IxuWP>>84+z+}0W?sl zcWZjFL9Ouabrkwi!KM(L4v!cC(qpccjIKCfd68_H?tQi=$DZu?0}v9MacJvmIp3yS zcI@S *Ww%1?tYQRKURS^faHGr2NXt=xG8RdIX(n6Z(^agYsIXp zeALqn)FJ~#gzjs;U;!o@TyVp=J&HoEVn}zDfX+&CCEUnQo4nk&jen5%#Hxo%14ZOY z&nEP3OsniQWe3zL6UQnD?rK>swW6DzVy^lzbWvxRwHe_}doV{#VTxHLLRN#Y5g}Gs z3>RmwLf{Vk4Y!b!BQX@CvV?cm8y{;va(e_4bmTGJ&q`pN9FU&EL8T(?lpJE0Ln zG6xvK=Dg6S;#9cy9)ZY+7`lZ0=eLkg(=}$%=)JK@!t?DC=)S1h+U{aR4DseIq3h(l zNQQ?VUGr>XZ3A2%)M*0WW%S@DwVG=FW!<_0mbJIdAsLG=5)x9K6rggYAG5C5;uUs@ z{pJd^N|i*d@aKRX^ZBGy?C}n=_0|XdJyKF@Vd)@2gW?A$2l!1%3`pmTr Mr)~W zjJKe`j!@R+5tV{Jc!I7?y}8O#w7Jxev#1}-7_MbyJmzv$JTtE<**qot8nM}D;`9?k zC|ON(ohL$BzC>!<=Y*_?^`Y_09le~jpfK^F?l&M0(`&E)UBMjaoU!Qst}WTVk>lk5 zy~Y$ZbTL%^#?qV0nz|U8e4qTMk{R0(+y4t*tj05>v=Jex@z(&GOA;R}xG<@T%fL_A z2w=1%JY0`>AJmPa1(jqtXr${d-Ndm*x8NVnA7E_wi};H$|5Pqr$*If*50hpurolXc zq)ByDI&$wTc#j;xxD&Qz`YOk8|2E%l*=kr_P5mT}u T+iav7iBba?2#UO)D>j4J`ap?Tnvf;Z2Kx| zT19kt4^hRcYWhqFHO>yh29#4@qDQ++)9VF7o`vZ~TAqc|ne0#Ik1kfZTz7X(G@aP; z0h1^GoF{I9>wAIgyX9 Escc6Y-$03G)42Eim~}_uCQWiZ!fkUVN`4ocNG0y2hgFTh_FTE;5L6o>1TX&)cL` zfX-Tx>uItHONF5@ja ?72GDiJfcL|WSBU2SV(d`RBF`yPB$!~hUjW;nEY zOY#7nR>ovj(eg0>weCVv^Pk0d 8 z4=6BnN`jv}Sm*f*8Vd2JxFGzTLxHw!U dIZ@8{!+EY`>#zliUIc YW6uMpay0WS%!bm~{lw6YO z5$&^-K1T$|i}{4koPtm3ghO9#-XI}lQTSu0$o9nMyJd(>BS+t_oobJHNndamCMA>r z7sxeN3ljv_&D{Inr3~7VCTP4u^H*mclR}sSnQkZsGWNs}BY|R93c+@*HQ3{$DICM` z(K96*oRbQ+SkJmb@b_gNF3J+PN}XUWd|L`ubt(a=b`xpD9mH2~6>hi?CawW3^JKVx z)uhL0JFjf-D6|SF&2dvm@YaI6mw u;d+K6sHqpIoDD=O0P{-b*kUPVV~6o-JcZ){qz=ip9={9 zPM3emDsnleX(Ez*8*b4!PEHEn1iV|QcFf2BBpGJW9h|^bDlcQOmIFLr_l%x9(uyl* z+SCvg@=KKTj_Dt0c$66qwgtcJ=b5=b) NsjMw1hln3loMA#q!bJ zP3p5uz1P04YFK5uVSgWVM7j`hk!E@4J;18!PTj%%iuHc{d&rXBzW;?LtPusvMkd!K z7R!b^3%ycJIWNVDH^$b%^CgD!0di*x{#KBWM}4lhj?NGVyNuEu8;NFJc=-O;BTB8X z^p+F+*&aW+=zwR?aS|qgeS2`jQ6+g-Ud0|s%u2Y=aS~2}$&28gNjDU^Jy79>HXUYl zno)?Ge>rhHMk88QBa{LCK+Pq8$jzr=A9&mv?J5~RfbuX`fq=eb)i}2%i|&GDCFuue zxpfwLG1=tdyl!ztl2IwXgZM>d-tl9tji7@&Je%A)$e?nR^2urvvM%7)0~^*i8iTP> z-&%T@a)%zYIZWz=&D+IFc*tX%l--ndM>FClzc$TAc5rFT%|$`>x~x!>F)#3BL=R6n zbH6ssa&l-;yQ2()7$FpaUh>>+wO6=t4Mgn-#Q8|8v(1+67zB?2q8ZP7WAbGLV#yv% z`{GAO1l0FzP(=C``QVhv90i&@YZEdHXHD^Akdvaa_Mb#h0Mp33wy+iaf-eUoEauav zv hv0Vs4BHVz7o-C>{C@oy zQpLuLadYpEumASI<=U$aYm$e?zW&=3i&-reKE>}M!Rgx-O!eOj1)1-Oz;@22BKCG> zmgcTb|7F)RJ3&^y{}*!T_8kod#O<48XC9RI4Vh>>TtsOF6!ep+?u60mUNgn6xhKo* z4$_STjyaq-o~(=w3var+c~1IicUMm*DA!O<41IId3XRdSaB>{DzXJspE&9icibfgx z26HAeRcz6 d!qrXeZn2bmLjcD4}9 zl8|f{k|sUO++yYRs9E!IXRm~maqABi9&q}9MWq_()<$f2Ux8_|aJJ 6-QB(p`j0Y~lAr^yYB1)RJZmgyxiRGmUyj4!T zA;Bu1>OfZR^ThM_6uCww-)zwq*7mHYO!nhrsJ zF#eCHVsC6{W9emTBIe{|? i)Z^4O_PN?Yf 8ll7@Jvy^OG=E4FLe%Q)yL3w?Qq$ZJDMW{Xs1|(~0Ao{~pQn|B zPj^v+C-z9DEQD%uUj4h^2@B{0Ap!v+(yb!3Lc1oY#uOTd5b(6qmWGCm4O}nu)|QyC z97vU>KTqgCL4AEA0!P^1vhJOB|D@wg=WJ|T-tAW0s0l(Kk*GA^=e@E?Zsp3~T%)U{ zEn%ke%H%{sy&Gpywo-NKtn9N*6}+Jfu y@xLhQ(gnH<+16%$!7NY@WP12uJ4 zvCjL3IPSisucHV58CrThFtpRYe!Y*-aSD;W)4cGlaBk|ldG%fDUO$#>+d_U&d(B~l z4ws0c??lUxu56_vr}y;XOc|y%z~rXV<4V*Tpf%l`zx}?H-JRVrIo)ad_pXdAe+xRG zIA+wD(D~2Rq!2}ie4jG*p%o&e|A2KPE)VIi;Gi;B2a%a&27BO>rJliVrChE5tkvap z6XKJ$ki+tIX8}xh@x5n8Z|=LqJtK@ngGKxnMVw}<#l4^-z4R-{*X!|TP0gPH@+mT| z*Tl~3gPK1ExyJX`o{X|H{rIuy@0-89ks65!7e)mK6CdE+IB4w5C*HU$^>zv5uV(sJ zZO~%{{h?aCFikHJv-Cb8mNNVT3*+}uAznyvN0hnnWjh64oYZEuKu&SZnX}a!(2Tov zpW&)lk 0^X-vS~4@m5hjpC9WXHznc7FZe+{h>F;3eX5bGOs?7Flft$c8e zd%l+(9pH5Nz?k2PCQCKk*Fvw?TgdpA%ly&}Yd85}PT^xm zm@;a)$lX#++*JMsXnCft5njDj(a58pK-$u^!q-D z$1r~e&mzh%dNNI0e30|V=>0*M?D70U gAKn#{LtVLHu k$po8b?WKG>79{2*9|=E21fY(N z?9?~{v2LKN<_{tfH)<_!ZKyEz-F*8Y?QQUy%`33L@S5WYt`M7O$R5MZU7wgTqI9P0 zluYE$OV|Kp_t7Zla1w6b-mvV2HVH$3K6Oj)H|GboLD-vX==BXg&x74Uq5>-WPqWxruP>C*uZ0el*NQ>Eo^bAY>Q{kP( zuPFK_83@|8Yqq%rxHiN+cV>&3?bmSs9{?~w&%Xg2q@SbY!^(k`ufQzA=khi9?Hgy> zA5#0zTrqFRgEV~~-?xSFsTy!Iz-a-;^AA{^Q3|YnYd`qm{fkb@$|_YIn5xD49TuZB z&Rc#Uv*!D7avn`X;FwDVX#DMqIlpyy9+pwC1yp>CsJ(guC-wDLx50M2rq_!cj?X1< z%F(1P#mX gz=Q C#*~gu zv7z6(30BRj7ZJ;q_xqRaK5{0GpUU{tgpY{YBaq7;A`sj_q=h4zux5k{;N(h$PCD zhtQ7TE{VRvgIAPSxU)beFPybqf%4o!Dbfr&YfjH3o(T0r-Zt2pz!}*J;O#FW(of{V zeuAjU4WcH^V -wML)o>XU~yb+@LZ$Yccr4HAWn!%3|a%Le@jrW%~?_v3aS(Mxt z57NMqH1My%7XR+r%3s{raT^=iH0F~vrJmKzsU_7&g?Llp|HiWv)p=Nj%ZaqwFMz_% zFR6t#9^Z(rd`>@0%SaafdGIS9Nz^*Qzp@ZGm_~3PqXG)IMVH+Fm6VNeOfuR(Si;!o z8UES&wOP^sZJM`lO|k85r~x;?Umv`?f7X3TJ8# 7hd~t z{ZLzj6YS%y#S;Y$IaO5_6 fH`C!1%iYVu+Zt|aD8`q zi5v9~5a##H5LTNwMAgQ^Yh_~Opo-$hr5 Pc#E(hILFMAezo16Ff&>x||Y7)`mcs?okMJVuw;Lb0QN+Iy zUm5YcSlD*#eg&g+5=WJDI5I~NR)$u2{gjVQaa=yQ;J~~V(fhC%KkV!xMPI4Hiw%2! ztG7P~60rFNKI0d7W08Y)e}%03behW@Lb;6i_LQbuq7hu^=$VZjKc_Lc;7F3`)mh)% zX=TZOtsu#NR?iyN;regd7qeM(4+LcOi9_;{M`1R8XgGpKYr9`DSyvhl^df}Sj!@U4 zdxN`r#sXoHEfdrY(?={MgOhRx?Vri?XGbi*AGYxoNM|$Q$j;O8#pEi^=XjLh$tNmE z=f@Z#nW0O9VLY+MP{%D>_JbOLn_#MOH_Leff=Qgv4B^yi%CuO_fX|et2b%!W5)@Ah z5 eC=15_GVI!f7cgWiOocx?zg`Z()OEH<^G&52|g?=sA%!CXFW--SPaT2{I zMw`sL*g*Cq$6ob~?1^dFRAcLywbjDks(I{tb*@wc702A=PTT}Ro_HCMQXWaWw+qq% zT3F{RGt!(t-xVN^bQ_F47z^#~<)7olUJ?~(Xr|Y77T(h$=> d-h7Zd`WS*SO25d@oW!h@A-Uv_4rUBDMuQ|&RbZJc+z@{_5PH%J= zIQt6UBD1t!!*8?^78cSJdPjy>Rq!nyxgwrN|3Cr2@P4c(nvz0RNVg&b` oy{6vibtX5Baa=%sk;j4K zJkMgfd&*yeh?#1I3Io?i<0U5^IM;N_$#V;d(h@FX&R!VNbPAooVTNu ~(6I%$z z7=A9T+*>`!Sv-yKYT%pvZ$a}o5N8D*;hbE~&`%`+!j8Oen8i3BW0Qj^WX0Z$Xp6fj zIjaPCdLa5oc@f_eh0%8@oyl_t?fX;l#(S{uQT;3x*N07XAEbz95Ps9#3rYV0u*M+H zEYcVVrn%A9eh_^HImIh}_+L4eqxN78O}M_f?y_%)J;ZPh>6Uq|9D8={byTK;_8pwG zyCkz9Rd+0PvYdGr#5mE&PwEQOiSiDJ;?S%gLw!@|hSno8kiWFm;OAGJ0)(nXK^6$Z zHQ`f*Hv_K1$M_5G&vH>3fziWQw==DSwH{*hFf9`nTxF~OzKpV`QfutX;~G1sqWyLh$&dJCT_jAze}pTHOP5>Kp?%R>c#2s}q4vH=QC~CCfO9*e zyG!>F#k4SS`uudNxq3Sc9CI{@Chn(8AwBI|ajBuv2*GE2&?p**__QlYd|W}hOxs?E zqi}*fjGx9cm^-XKu34HXrh!yvrS_;e&@5ZNyq0!**0kyNr>-HOXvH}Q?Bn7Rl~d+E zxOOHe&Cik9kEhP#LutZTsbyIEQTo*`7HohW06MPbOH$Ot1!|AsR(J!sPOn54c$4%~ ze1$)R=yUnhK67iH(+AiT`r_yuzHlr|a#hn*!_ojZ4ItNK(2=8MW-xo&lN}&stQjoS z-O|InOz-1l0DGM-3;leBd~xjwz*9&rrv;bw1i_D43RigFNO)pe!o_Vk{jfS}_$5FZ z_{EbExtUfQ9b}BK>uNFgsfyn+Qw)TuxfGgp0WvN#0`8;QdlG@+F8l*76_qlKH57vz zPi3k*h|r*Nofci86z%Vp4}YmHI(dQ<6_3wIXHAAiVdL88{6*B+a-Tf~EEn|FmUT9; zxF}Ru3VYYPR0eK*4VtTUTJ5WF22=-0jIP-*RDjiXA}Y<%uL9f6h1aNP@!&-*Vq@%p zjZ9r0-P4J7YT$C~hsIj%wStG`9SI1FFwWLgKYG#N6nV;7EtW*#y5=pbkABl;@%d>% zGpODfwEv au1rxIzVZwe>=tLrRcBjD7_t}mPgajaeRrh1xvu5~` z5t2W&hn3ALD~+@&9=@t}EHk?l@8(IA%}6nIabw@UiuMoedi&c*L{t%w$&%E9#D*>l zyVP2Ez{i8=v79s{%X%@RaQslZZ&k~7STmyU>PI9_B_L6Z=oO(;OWp**j*+_lA2g6- zg?#tFdIm=|GZ4=*p1~ZLu6U1@SrH3%-?MHAbpFVE2me9`0MwgeGaymbUCq|<@7R4v z&jxaNiE=&R^+h#P7;G)Fm`Lyz-@>X9oqYR WO0>b*Av**n|6n<2=RA%&5#d2zwQV9-j8r$)6dI=aS_o+t*Xtp?LLv3C!Qdz z2C!+a7qQco+AhECtB>kFh ?m(;U9kuVs5t&K;B3^v+ zmL3zkW}Uw)2H6ZQF?MVoCgDA^`eeLuq)s| nyGoOSa;8vo>P;;1{ zvT(5=uL@;Yb^0G{2Yw~JB-%lM0{_%;wJREGRag_)*jlQKVo5rVLp!@LxSypX!&-!O z9UN3Du6{!ouh>Wa0(JXjA )!q);1J;3f;Z>{U@K(YiSmBu59h~EV9fErlwUnR3Tf&a);#uI_ zQi!59gNtcE5x|}=8U=`= wx`F=nZ2jTSh>;u=NqK`M<-iJBa;uJ&HgYE79cQ>DcvtG9|=mxjFo3rlu zU9Y>nUC}j*8DbPBIfE?faDAssqL1`X;)T7Fi-!m(%p|73WN~(=y0r%qP-A9;M*R3b zVc)rlwfr~CV~aiyq~t Hs@NY9wPb*EYIJUI0{xWma71V`~(l~S0Nq5 zcH_M-Rklika{YtV`h$zBZhz3Zx~*%ZxzftvYAeqjz>!~dCGu|jpW9QC6X2Z!iM-it z28{szcX#{OZ4MJ@1cub6izpG23tR9I _~YMk1jtc_&*<~y_v~|)<}aW1 zsb~7*o)}z0YxFoiX=Qk_xzq)4cOT+tHbG+VHECT+tdop61FycHjK+6GJaddaYf1|8 zNwM4#X~&>+o+h`b55ybd8?Z12USg=omk49F?37i#maPYKDWZH4j (pdU!wB z^`HD|R12rprD*lu{`~Xmz}~b!WvQE_b9m(Whm0~vW)#Rft3EY{_SoDdF?nRr|9CC{aQ-jTaPmH! zp{B27GP)ueI`iBSjY~7BWcNl~PfOdQC=@>a`>UV4)|Dj{Zt~Zs6~h*-Rmq&yT-(A( zOvNA4Ol;|$+3XyR&+o&D@A%}$zHMb*@vUcfql&!;Hs~`xs>aN>sn1z`-ESHI>V &id-nuq_uR->r z`{?US)~v3L4Fg&xO9}yWzmqCUtDy716f!}zOk)ZbpUB{o;bnUw9Y-p q8hn(e(i949=+K-2C+x@k3JKBfZ=#pL_td;SYuwPs7^*Yt@ zKyqb(?OEcnCQrWPsV1rjZ3)P&kRBjTXr{ v@1m=lu(yBVQ-E_2xrLLc4x$< zIB_<8`i_roK~7rK0EO !FM (g*w9ZR**zcH+rHKw8jl z;W*9U2I;)|Ss*F!QaQ^CyJHhei*F;jj$I^J^a9w_;z24zdJ9e+R~U-_zc$HB&pb6{ zOv6j}O+6Ft7zV5>8azwW1^Eg}a0t`0Dau_t+uPJPcD=p5s|NmNb>RQo$9%f)qA^HI z L_XPo7=!^w}lfJa?FHpIPv&6QMl~N^H)BrJT-L7C(-Fc4tp}q$45YxOsyV oIOGz>!L@ zox;`Is(Px#MvG(coKlcqBIbVm3ujg_MVaZZ7<914ZJmM=w99%~aI#XRarE{iO>2sz z`}hTRidr{rIn1qFA)v0sO0WXOJPMLXv#$QZhWhv9#UN2>&eG_N-42o1F{IL2n$EN) z0%!m5l*h=1C`l5zVLF=}2E=u3v=CHskwbNe8YGyPE4JFi_ORDaZhkJYJ!Y)^zh3@y zb%~wP9~Z{?(1IIaEZNTP#4Bw*Vt^8oOKN5zVjR2->u2vx#3o1(4lsd*D>zS#)C+Br zQO@h+pp8GXB){S{eC@k_=z51#k2~E|k1J{io96z$)B9s!a)UJ@C`=Bnu5UhEc0TqA zG77~(b^sMPohcOP4?4X;uYcCLCMk4q)xAFFe^z#N;9*B%OcBr%ytzMJoJ$~L@2VMm z9P}>EsloSuy#xAzJNZbOXvBiaE1SmG-5TE~Vlxu;xm9y3x~C529=tIafXTq%2L5G? zyf5r=GJbmX>KYH%ZM=xQSP=GPQXVi*{z X@UrAA-VOYb~UrPrpE_D)p>8uA~|&-<%aH-`Q&kEMhd})0p2RVvBS3DEh?tipon+{kJ>*c`~$MN z@C#~zyb{OlEP|cwBn08epGbFPl}29ilXmu;VyC3Ex V{l zZ~DJG(M(HZji4+D{Q=jHb-Z@<+^6yiw)Qtje6KJh9>_NHR{Y!sf?wnOXbHE*FWIUt zDU{8W)hhkXEo-mLmz1txnLJdeiYkY&4Sx Kkj!%BCjt`Gs)bZi*@7D3DWh6-VZ-B1u7SI~0<1_OUQ3d-ui8^IKF?ii4 z%W *k1Wjg1f{ >*TDjv402XSP1ehaZlC*fUHDRlOTg6Jb81!UWabW98}mb?Z-p%sYJ?yG_3p6?PUix50`;eAGlW-b^T|@WHnvw zBQ|EGc#ABC11Z6TWZBS-Q8?iv-yrsSdt17aHP_j5=paf5$D2D~`$Up{OY s#+gt_gkJugE^Nx+x$3=!c zZ=f|T6anFYe%gh<4u4e*(MG%G1`d==c_O0Z%Y7h0gcXvgPK#sa7IYqFsN37hp~ Xx!^}2{LT>wq=t(SB zn_Dtm9J^R^V8>9me 01h_HNDTy@xqA%qe3%DGbf2OdX>1Wi zYMMta{5Z`r6a}lBGRfampd3exR~I)65L2)%qZY!t;cgFsXNu}}?#S}VaGRE%Q?Ba< z8*r-G%63dd0*YPcYOst>VRe;tPK-m1QAjTrWe5U23T;cPY4P-BEs8B*ZIf@jgP;T_ z(X2BC&YzO;16;UtnX@g1;})HMr>6Cb)aar1SJTh<5&iOJ#mSVy=J_3i2TZwXaE_@B z9krg>(In!I;zVA`=XJ!6JGq;Wmy^SD{n*fg9jFPRSZ#qJ8Pve!wT4GrY!B14dA*#? z`hTCTkx*atfF(}n;`-OeJYmuO6GcRbBcAhWg~H_R`t8ndJ*VVZ B z` Ax#@8kP(M(L$f!e8ikxGxpn5tKJzU888kgsD|D zDql7?%7DW|ilrXHnHZ+iAxWk~xGrt}8eFW%tqr2bl)>RSZ6O5arpEqEL({8B*KQc+ zUR&06!b*sqJpCWUNdy1 ry0>r#erD~6V>XuIzLe=kd4wYz|x9p&|>XtS4Y zC$CPqDO?x}!{b^4@n8oegWWalvG$ 5O^6I;pZjY zU{jcO+EMM&`!_VP)f3o;;S?jKavHNOH#|NiUE7ll!$$X(fQ!;ZY|)BA6BVWgr%^F} z7*67hDbDc3LCH8<9Tf^}A=Mxdj4|3SkZjbq+Wz1-K%3@6T#%oxOT}T#wyvka-)_6Z z4>!F}o! ^&%|*dh)PC+Vwhj-!VI5t4Acx3g5ASY~%ruABDbk>D*lHb1 zsB98`iSOy9bM^Hd6zzpN&~P$70OMM~8QL4d|2uh8iYdflxkAAn>PR*;2rrOn?)0d- zIV$q3#xB$3-nRC(x-~BItmeGQ9_*JRDA&&xs>I2V$tKpuNIOMHU$8C*`zJ40m~y|T zFY8w?;X$kQk~J*#+&Xw!&t%GVU7uEWEu}W~{if8nWch7O6s*F|D=aU%LID@rc(c6ezpdHvn%OHSj-hpo9Gc)^ zY_L^w^{5On)?>6dgTuStCAXlV7&%U8efiUul|O2&mS5!>u_Qsqi({~V2JEgjhv+N{ zXTWZ$N86sUV28)gSg@D1_~vC>ASZwmdw^JpMgw~+#4}+Bn223=8bnS3P4X)Zd?3EA z+<@ZtxGK8(Sf-hb8m^^l;s 3sJUJZm`sNt=Q<<0`&7MKzju0JV& zjLqMH$}o+fb!JPC2c%cgA}@NWJ>x^**EXgmwwmdtNb|~S3OZSKSQP1P?Rf@iN3;ky z%GEQ94(oKL+8(Z`Ib9_G^SPphX2?U%1Ti2yej>8DLR|_2Ow_VB##m=Ey%2NDW #4N6bCSgLIMNl z{3ZyPJSH?C+J1616!&|wc{f*A>ffU*C211>2uKL!o)%g95RYQa!}sbBul^9+k>xL( ze2H^3bFpr*#5(3svYLIg*%%DhJ$f24
$e+ NS81G_+PxVTtnLBUBkC5zKDr(0NK0RD;!nWtr9q@Myn#**zO5 z94+=zCs!D=M(pK5RjC^V0`#s#*9K`iB!?A|cZTqzoGLcGqg7dS`80EcKUWzbf8NSW zTYV^Mqw;^=(wor?It!<@lNegDh1sZ7a?7DcnO^g1x(K%{(wk(hqP{vSheNEMF?T 3rcI0mhS&Z>dyX3npK{Nk6gkS!7^eY}U%B{q< zE0;Hn#=#!?#{?6?M30^;{qY1%WY`M3oslJ&5T0=9 AOcRwfp zJpFae@-QwUskqrXZQO*I4AAnjC4EJ=flSotq2)c?cZVu?VmQN9ADU)KT=4aU!~fW8 z9h^4c|Nkd+a@4NU8QK!-^?WqWH~TB }Z@I~V)Z8i-6h1J8u@@7+$>m<~}qgv^>q8C0S z*wxWdRablv*7bLET-zV>ZT8fCF?a3Y=xv!b{IYWOupd%1*`AK~u_wCBt9=c3Y3IzT zXhLxmo_A>*?61Ga6*)fr-*ZJyTK`M0$jQ-v*A+QAeeo4JDJyZFc|}g&eA^W{ef#n& z^5*bcuE?9C7hRDzClyyj)o{?vG6uG-h}5yOy^Z_=8cNv#Qq?@5wC0SjTjEu;YqG0w zSd#po8`SJtIBFwvp?pBg39wwzW9|Cr!)9x>g{pD#^5NmxP%WH(TMHa)?V4G81UDGf zYN@Wc3#em5Ibv%lXKTN`+Lg-HVKg=?>KaK&!^?Z%4UH4-GFmlKQy>P{XErS*xxS$L z`2%5(0CR~sl*XK;6S|}`dN=s6_eM8)P|@Tp9lf}n!%f;X|EQ=G-L_xWhrGDw6=dc; zeUadlKco{E=W5&stwupNb>a_dNmk}(EwKuQuNmfPb=!4oy}7|Rl?|?0#F{2mn;+8b zG0Y|yx?5x8qv$)0tMm*jsiv0wF=-7{V0UxBot3^4rkb^nI{zsSKd`C4gMBxxd~Fw& zL@)jPY#DX5CjP#;w%LO=(}qc$oAntzA?6OIcYoDOA5kij3{@}&Sdi;?!HX0hl~7g> z0)0TjIq5?TAj1Ec0t9<;f;V+9Vr5voBRW}L4ij~(^mZ6}oK4;Z3K691g=1QWdJ4~{ zcCq7Y9!$SL1e^h48KM|`@N2ot!@9sm1)ETU(|YyFC6g`3q18tv)zvxtw$P-y=8!L0 zT5l-~vJk5mzK_Cwte)-uUoSO;R9)kz?d#PgqOyDRZb^jDM1=@7Ya4rm-jE8S--R{_ zHkGtyYjAXx{CWlpv9nv-cx^P$2n|p9n*C@A6dZFH?1iDsex$=`5zVP@qSZFAfEK`H zPa+^H)=1#v6#wPIp(umhx~>k|#C(M6s1oVrcyPFuu#|Z`7Ok4eDT9k)^jl*%cbQ$S z9P{?Z8N#5{_IcQLky|PRt+xCTtSH?ra%ZS5c3dB1G0(jiix&Q}iznKwCIw#Ly=RF? z9V^;!(q3UeMt$#ZtmFFS&GknHMG=IC`uqM2km&l#M >E*>0LR#$I2 zw@}}}iI4F_rw|V62;)w?R1f5_JqnBQgLiEG2t ^HXWqya=n3^?EelQUSR=q24iKkP%#D&i(O z&?6Fv=aQ=+2r%$d3={=g2MUv$?N$FFJUBivxDB_n U zR~QYSQ6$`JjJ;`z%LZq!k*^f)oJXa6?oNG3@ai`IDtmLT4(V{?kbt+#;>q*-r7-h+ zIocD|X=zSmiYSkQp&U3W!ltV+t^EVt&`2lCpT0yk(M-9W g6vzGZBub CpjPZ^~=!_uo)cu^&{lsR?}NJCe{RXy96cn~G79K(Rx<{U2sZ2ht* z`**&)L3dO02)OI2fZCTec$c8+_dY>~ef;s?( XgQ2LNdJ*070#(kRXHGqve*d) z*NBb_*0gQ#n?O7N^DCE&G>VG{1M|)>g!9+X;Y${c{JBVbv2;!qwh8NZ#51MU~dkHFCz6$fE2 #nLft`i zW36W{;^vkP+TL^ovsc`IiFda8bKVgm0capwWbqu8tEedw)q3^WIcnQqwUNz3Ph*!_ zR_;tZwwUvlQCa?8YDZLX-nFJ?Uh}TL=3yIygG=earD)m>?^1AL8LZ3yW&?L#eVU!P zzIluVWtbwBhe IBK@4$8l6;tFAxgujJuERsJ9U z7`*R(ytodoyM18LgYHjf-P^&%&2<1@$Wv7wrJs|lZol98*ae=HembQ3{XysKhe5A% z)_vznADO1R*XLCYyOPJ&PRUX&$u<`VC&QX(>5CAPFnWc!=g{T&B41$hT-o52*p#Hb zcG)`Y+enQf4Mze`;c HZ)3X zr;pkMT(1wEi_7l$J6AQRuZQ`S=;F!+65gwLfQ?TYWIE=*>zg>J=o(eXuP`;+G7(in zt}Bq4Zw6cBv9^4Cl|O)0h}JfRQEiW5Tnt6*0>-VbD0-RE&T_t{XVf@uqn|v6i@<*p zlQdmHz`Iei5!T3lwJn~scgUfL85quiU=->qEB1p57*cFdZL_B c3F|bZQ{F25K z_IQHQu>JG;H65hsRhT@nr9wmZ4C>C2yewWyJJC`Qp<%#t@+(0fywNPqAB1|*QXoeg zGj@F_Dt3;7kd$)Ee90C7gzF{`n=l|L4qpvy$3bv%?HtLgiHE`hqRm5f$5UQlj2X4f zjp!cCK}9r3dRst?Sjj;l0N3u!?=paS(>NQBKRRmAAwZDP~PK9 z-GPN2!zQ)fo*bOEf}OweAG`ItPqrL3kcdSEGmV(^7$$3_mU667_~)(JO68xo9DgR7 zrm!MM)oKn7ylS#}-~V`3KVE`E)}LTg6E+UP#jCBxr~6ZwTmP!Ij#heP|Cw@nLSd5h zITxTl6|oe?bYYcg4dy$f6cd_SYFb`DJu&@~Aq8YJQfN$5M5G#jq0N{fR=gNmDDE;} zjuByUy2SGg%dO}U&Wao?;u%~)lHBtkyiXY#P_8y^7b{Q&K^)Dz3xO3Un*HtLULCO> ztnIPX%Z72kcm-M&Ep4KP9WUPiTbZvNULz34G-W7cKQjT`R4l5o9nnDU$m$0mop4a~ zCDSaHd@fxO%9{aXYZB)Sxhd3BJrJ*6necU&meyd?xgd5_47e--xqSB$=>VH=b;4)Z z%B;i%D!gg)*-(F>@1l#B) $AHa1I={aUv?V`JeK-m0nQ{Nk2q|xVV43atpR(^ouXQ5p|GYT zX-fhSqn2OEzPy8^C_8Ajg3j$l&=(Dt@JG2&%j4$B3g~asU)mn fpkHIYbHej1+9>dEs)XpjlCriR=%s@gnV)25ZG)q0lB?XJyT0+jlFe6PumBomoh zWNi!#0D4X_&jj(osCT<8Yv9FUg^~su@E&xXD2@5Ss>FIW@m{lLXs!RAp<&*pufq)^ zeD#xY4|^$ODf$~zBIv{8_IaEe4>AhXP#;eyhmgyrqCR1SYy1Tmt@}u}`AhoQE8&o^ zR`Tuy7MEI;e=ACzm=uZb1E*ggZ+B7lamqx}EUIFy_LWB|P#d|n!a r}GPV-bAWci;!f<5W;>- zXu+M%^cgrlfMfcFV>02gpb=AjJZzsw;e=342-irYg6v5=UeFH`zy68Ra$=Z7DDW~> z%c4_00OOcuf*xy4L}97?al8MN6yaBsN-aYK6ZBU55~s6r;gdE=flMXQ-WW%Z4v|R} zJgq7ivQG@-?5IO}{6?3qY7RFM9fa#zIN6s16_wF@g*UjiwuPUns*YI`5Pmwux57a= zs1irwFET5Wpp)bFRRkQslb1QQd_+%96s_T5(4AH#PHXabs3LDn)Bvl*7r2({^V_zt z$*jUMm@=2?y+x8i E&p9#_?q<*s046-ZfbuF#IAU1 zn?E)bxBgyE*2&jbS#kHyZ7QAMxotSOAH_UvsAJq>+vbn;#oy1;QQm%kdGr4D8T^k* zaIwCgp~AVN#|43&Jhy@GI_>Y``-ecpX4WvG^l~;^N{YP=3(Q$V$v&d~4!Slo#D*C} zqvbuw_V@5@8qWx%%>4A){ +UtoxOr{AB$^ho1p30yvms$xBj%nrV!QzBak|#_8@K>eOZO4A>Rw@ z8pqn>lr3GBWQNlzv1`Oshm*;B l8>1M;mh=)KB-ia}C{HTz|majA#>4<{v5$T!+{A#{cW @#L^f$UX3w z$vIpE@l=*fm#@M24>ANn$xwBW!k!<)T_NmLBS1Z;G#-_gMx7UW200AJI8 zUA}=Q!wfV6FGc2F_!yQFgvTJa;B&8;ZxcV`0)`dzzDZ_|wh*hF3kw6{uNp@+N#TI( ztjWfDUh>}Lt2UCVwk}{?DW^ULQHa8`m`f2Ibq+Uw{2&aej2L#f88yq&Uk&8Hgy@i$ zH=ldfwJKB7x;zPRQpF%Qia7a@1uR=EGqlXC+sT@|6~FUF`bic3C-$*HvEm^;6C{Qh zWwkkDeCYEAXL2uX$Lbl#m!lkYqic@C2m_>zN?b3%%g@GZPMXc5S+kpW+3X^*`QB@Z z(p~S86H8TRsmCm7Tgq*|mJ&UNPkBE|Ca_HxxkyBnonk>U&ap@;=sE^`gZx}*@wT^> zFE=dDz=?6T1ES^_^h4fBe?b6C<5oQlXL+>M(0$YKWVfNs-TU!oN`{2~r1yX<0aMa^ z70yk79u;z1LXRHI`N*Rndx;>H8hta47JVC^J6TFS?wkf}J1!BhHo8=p%_vQrxgVSZ zvXFMRfMBo{l6iN|Pr{drZ+1#Jrp9-B6oEt&qad7P`k2ZCV0Iyk?!#;{ix{2n0nQz~ z)Rk3uL&;mN`lMADgmO}GgnP!vSmh5xHywlMSMT}*=b=g3xaRnmrpX50tg<~xJ}-=i z N>xpjJWrpo2Or`|ia-HK t-4;SY*H5Ni37U`%6 zWtmhNR41aM4mXXnx}mPkI0#smgUY5^mU1?lNjhFy_cS(6SI-X@)87m;*^0D{_1lwD zK-Fzt%*9zQucF0JZXRMk?Bszcap+gUxIHjJjyYnZIa}rP*BPa}h8H-b)LjVkE2@@U zC>h+{KWa9+?#Y1OL6|Ve85_sPxS@h2yl3lK1Y}8{3j2scu_TOG)3=FT8UQ&2)+y?f zSW__!&NYr`uz$T2v{aTT;M9@_(rjs<@7G~;P-xTOyxZ%o8It;ojoy@63Vd&9c!d5+@&E})^QoB`BK{@Bw(WK2!~%Q`(y*Q^`4~-Bzi_$s?LfX zT{Gy+2-6E)32Cqh