From a1c06e0414a4c3e363dcae997fc8720e78ecbe28 Mon Sep 17 00:00:00 2001 From: Eilert Tunheim <emtunhei@stud.ntnu.no> Date: Wed, 30 Mar 2022 19:07:42 +0200 Subject: [PATCH] minor updates to the priority and the linechart --- .../java/com/application/DB/Constants.java | 14 ++- src/main/java/com/application/DB/DB.java | 109 ++++++++++++++---- .../com/application/GUI/InputPopUpWindow.java | 12 +- .../GUI/LineChartFunctionality.java | 47 ++++++-- .../com/application/DB/Constants.class | Bin 1679 -> 1725 bytes target/classes/com/application/DB/DB.class | Bin 11236 -> 13089 bytes .../application/GUI/InputPopUpWindow.class | Bin 4521 -> 4608 bytes .../GUI/LineChartFunctionality.class | Bin 4132 -> 4486 bytes 8 files changed, 140 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/application/DB/Constants.java b/src/main/java/com/application/DB/Constants.java index 1cb72d1..69d7d92 100644 --- a/src/main/java/com/application/DB/Constants.java +++ b/src/main/java/com/application/DB/Constants.java @@ -25,6 +25,10 @@ public final class Constants { public static String SAWSET = ""; public static String MOISTURE_GOAL = ""; + // Number of wanted drying periods + + public static int NUMBER_OF_PERIODS = 2; + // Database ID/name public static final String PROJECT_ID = "sf-drying-optimization"; @@ -44,6 +48,7 @@ public final class Constants { public static final String KILIN_NAME = "KilnName"; public static int KILIN_ID = 5; // Kammer 5 //public static int KILIN_ID = 6; // Kammer 6 + public static final int LIMIT = 1000; // Winccsensordata public static final String KWH_NAME = "VariantValue"; @@ -51,7 +56,9 @@ public final class Constants { public static final String VALUE_ID_NAME = "ValueID"; public static final int VALUE_ID = 51; // Kammer 5 //public static final int VALUE_ID = 56; // Kammer 6 - public static final int LIMIT = 1000; + + + @@ -73,13 +80,13 @@ public final class Constants { public static final String KILIN_NAME = "KilinId"; public static int KILIN_ID = 18; //public static int KILIN_ID = 18554; + public static final int LIMIT = 1000; // Swappconsensordata public static final String KWH_NAME = "RealValue"; public static final String TIMESTAMP_NAME = "Timestamp"; public static final String VALUE_ID_NAME = "ValueID"; public static final int VALUE_ID = 19; - public static final int LIMIT = 1000; */ @@ -91,4 +98,7 @@ public final class Constants { + + + } diff --git a/src/main/java/com/application/DB/DB.java b/src/main/java/com/application/DB/DB.java index f33f407..7e976b1 100644 --- a/src/main/java/com/application/DB/DB.java +++ b/src/main/java/com/application/DB/DB.java @@ -57,7 +57,7 @@ public class DB { * @throws Exception throws exception in case of error */ public static void main(String[] args) throws Exception { - getKwh(); + //getKwh(); //getName(); //getZeroPointDate(); } @@ -125,6 +125,78 @@ public class DB { } + public static Map<Integer, Map<String, Number>> setInputParameters() throws Exception { + + String extraInputParameter = ""; + String treeSpecies = "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ TREE_SPECIES +"%"+'"'+" "; + String width = "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ WIDTH_DIMENTION +"%"+'"'+" "; + String height = "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ HEIGHT_DIMENTION +"%"+'"'+" "; + String widthXHeight = "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ WIDTH_DIMENTION+"x"+HEIGHT_DIMENTION +"%"+'"'+" "; + String sawset = "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ SAWSET +"%"+'"'+" "; + String moistureGoal = "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ MOISTURE_GOAL+'%' +"%"+'"'+" "; + + System.out.printf("Tree species: \t%s\n",TREE_SPECIES); + System.out.printf("Width: \t\t\t%s\n",WIDTH_DIMENTION); + System.out.printf("Height: \t\t%s\n",HEIGHT_DIMENTION); + System.out.printf("Sawset: \t\t%s\n",SAWSET); + System.out.printf("Moisture: \t\t%s\n",MOISTURE_GOAL); + + // Input parameters + if(!TREE_SPECIES.isEmpty()){ + extraInputParameter += treeSpecies; + } + if(!WIDTH_DIMENTION.isEmpty() && !HEIGHT_DIMENTION.isEmpty()){ + extraInputParameter += widthXHeight; + } + else if(!WIDTH_DIMENTION.isEmpty()){ + extraInputParameter += width; + } + else if(!HEIGHT_DIMENTION.isEmpty()){ + extraInputParameter += height; + } + if(!SAWSET.isEmpty()){ + extraInputParameter += sawset; + } + if(!MOISTURE_GOAL.isEmpty()){ + extraInputParameter += moistureGoal; + } + + + + Map<String, String> results = new HashMap<>(); + while(true){ + System.out.printf("\nExtra parameters:\n %s\n\n",extraInputParameter); + // Retrieves the dates + results = getZeroPointDate(extraInputParameter); + + // Checks if any dates where found, if not parameters are removed until dates are found + if(results.size()<NUMBER_OF_PERIODS){ + if(extraInputParameter.contains(width)) { + extraInputParameter = extraInputParameter.replace(width,""); + System.out.println("Width is removed"); + } else if(extraInputParameter.contains(sawset)) { + extraInputParameter = extraInputParameter.replace(sawset,""); + System.out.println("Sawset is removed"); + } else if(extraInputParameter.contains(treeSpecies)) { + extraInputParameter = extraInputParameter.replace(treeSpecies,""); + System.out.println("Tree species is removed"); + } else if(extraInputParameter.contains(height)) { + extraInputParameter = extraInputParameter.replace(height,""); + System.out.println("Height is removed"); + } else if(extraInputParameter.contains(widthXHeight)) { + extraInputParameter = extraInputParameter.replace(widthXHeight,""); + System.out.println("widthXHeight is removed"); + } else if(extraInputParameter.contains(moistureGoal)) { + extraInputParameter = extraInputParameter.replace(moistureGoal,""); + System.out.println("Moisture goal is removed"); + } else break; + } + else break; + } + + return getKwh(results); + } + /** * Retrieves information about kWh and the corresponding date @@ -132,14 +204,14 @@ public class DB { * @return the results * @throws Exception returns potential error */ - public static Map<Integer, Map<String, Number>> getKwh() throws Exception { + public static Map<Integer, Map<String, Number>> getKwh(Map<String, String> dates) throws Exception { // Initializing the data map to store the results Map<Integer, Map<String, Number>> finalResults = new HashMap<>(); int index = 0; - for (Map.Entry<String, String> entry : getZeroPointDate().entrySet()) { + for (Map.Entry<String, String> entry : dates.entrySet()) { //System.out.printf("Intid: \t%s\t\t\tOuttid: \t%s\n",entry.getKey(),entry.getValue()); // Initializing the data map to store the results @@ -224,7 +296,7 @@ public class DB { * @return Returns a treemap that sorts the Start- and End time for each drying period incrementally * @throws Exception Throws exception if an error occurs */ - private static Map<String, String> getZeroPointDate() throws Exception{ + private static Map<String, String> getZeroPointDate(String extraUserInput) throws Exception{ // Initializing the dates map to store the results Map<String, String> dates = new HashMap<>(); @@ -240,6 +312,7 @@ public class DB { // Defining extra parameters if required String extraInputParameter = ""; + extraInputParameter += extraUserInput; if(LOCATION_ID == 124){ extraInputParameter += "AND CalculatedStart BETWEEN \"1990-01-01 00:00:00\" AND \"" + TODAYS_DATE + "\" "; } @@ -247,24 +320,6 @@ public class DB { // KILIN_ID starts at 0 not 1 in the database. KILIN_ID -= 1; } - // Input parameters - if(!TREE_SPECIES.isEmpty()){ - extraInputParameter += "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ TREE_SPECIES +"%"+'"'+" "; - } - if(!WIDTH_DIMENTION.isEmpty()){ - extraInputParameter += "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ WIDTH_DIMENTION +"%"+'"'+" "; - } - if(!HEIGHT_DIMENTION.isEmpty()){ - extraInputParameter += "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ HEIGHT_DIMENTION +"%"+'"'+" "; - } - if(!SAWSET.isEmpty()){ - extraInputParameter += "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ SAWSET +"%"+'"'+" "; - } - if(!MOISTURE_GOAL.isEmpty()){ - extraInputParameter += "AND " +NAME_PARAMATERS+ " LIKE "+'"'+"%"+ MOISTURE_GOAL +"%"+'"'+" "; - } - - // Sqlstatement for Valåsen(124) final String sqlStatement = @@ -305,6 +360,9 @@ public class DB { String formatedInTidTork = ""; String formatedUtTidTork = ""; + System.out.println(row.get("DryingSchedule").getStringValue()); + + //System.out.println("Start: "+row.get("DryingStarted").getTimestampValue()); //System.out.println("Stop: "+row.get("DryingCompleted").getTimestampValue()); @@ -372,12 +430,13 @@ public class DB { // Defining a treemap to sort the data incrementally NavigableMap<String, String> sortedFinalResults = new TreeMap<>(dates); + System.out.println("\n"); + for (Map.Entry<String, String> entry : sortedFinalResults.entrySet()) { - System.out.printf("Timestamp: \t%s\t\t\tkWh: \t%s\n",entry.getKey(),entry.getValue()); + System.out.printf("Intid: \t%s\t\t\tUttid: \t%s\n",entry.getKey(),entry.getValue()); } - System.out.printf("Size of dates: %s\n\n", dates.size()); - + System.out.printf("Size of dates: %s\n\n", sortedFinalResults.size()); // Returns a treemap that sorts the dates incrementally diff --git a/src/main/java/com/application/GUI/InputPopUpWindow.java b/src/main/java/com/application/GUI/InputPopUpWindow.java index 806619f..730687c 100644 --- a/src/main/java/com/application/GUI/InputPopUpWindow.java +++ b/src/main/java/com/application/GUI/InputPopUpWindow.java @@ -7,9 +7,6 @@ import javafx.scene.layout.*; import javafx.stage.*; import static com.application.DB.Constants.*; -import com.application.Main; - -import javax.sound.sampled.Line; /** * This class handles the popup input window @@ -74,19 +71,22 @@ public class InputPopUpWindow { startButton.setOnAction(e -> { TREE_SPECIES = treeSpeciesInputText.getText(); - WIDTH_DIMENTION = treeSpeciesInputText.getText(); + WIDTH_DIMENTION = widthInputText.getText(); HEIGHT_DIMENTION = heightInputText.getText(); SAWSET = sawsetInputText.getText(); MOISTURE_GOAL = moistureGoalInputText.getText(); + window.close(); + // Call på getKwh() try { - LineChartFunctionality.loadData(); + //LineChartFunctionality.loadSingleSeries(); + LineChartFunctionality.loadMultipleSeries(); //Main.createLineChart(); } catch (Exception ex) { ex.printStackTrace(); } - window.close(); + }); VBox layout = new VBox(10); diff --git a/src/main/java/com/application/GUI/LineChartFunctionality.java b/src/main/java/com/application/GUI/LineChartFunctionality.java index 3339bc6..446a8f2 100644 --- a/src/main/java/com/application/GUI/LineChartFunctionality.java +++ b/src/main/java/com/application/GUI/LineChartFunctionality.java @@ -1,8 +1,6 @@ package com.application.GUI; import com.application.DB.DB; -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; import javafx.scene.chart.CategoryAxis; import javafx.scene.chart.LineChart; import javafx.scene.chart.NumberAxis; @@ -34,19 +32,52 @@ public class LineChartFunctionality { return lineChart; } - public static XYChart.Series<String, Number> getSeries() { return series; } - public static void updateLineChart(XYChart.Series<String, Number> series){ lineChart.getData().add(series); } - public static void loadData() throws Exception { + public static void clearLineChart(){ + lineChart.getData().clear(); + } + + + public static void loadSingleSeries() throws Exception { + clearLineChart(); + + Map<Integer, Map<String, Number>> kWh = DB.setInputParameters(); + //System.out.println(kWh.size()); + + for (Map.Entry<Integer, Map<String, Number>> entryKwh : kWh.entrySet()) { + Map data = entryKwh.getValue(); + //System.out.println(data.size()); + + XYChart.Series<String, Number> newSeries = new XYChart.Series<String, Number>(); + int index = 0; + for (Object entryData : data.entrySet()) { + //System.out.println("data: \t"+entryData); + String entryString = entryData.toString(); + String[] arr = entryString.split("="); + String date = arr[0]; + int kwhValue = Integer.parseInt(arr[1]); + + //System.out.printf("Date: \t%s\t\t\tkWh: \t%s\n",date,kwhValue); + + + // Connect the data to a series + newSeries.getData().add(new XYChart.Data<String, Number>(String.valueOf(index), kwhValue)); + index += 1; + } + updateLineChart(newSeries); + } + } + + public static void loadMultipleSeries() throws Exception { - Map<Integer, Map<String, Number>> kWh = DB.getKwh(); + Map<Integer, Map<String, Number>> kWh = DB.setInputParameters(); //System.out.println(kWh.size()); for (Map.Entry<Integer, Map<String, Number>> entryKwh : kWh.entrySet()) { @@ -71,6 +102,7 @@ public class LineChartFunctionality { updateLineChart(newSeries); } + /* for (Map.Entry<Integer, Map> entryKwh : kWh.entrySet()) { System.out.printf("Index: \t%s\t\t\tkWh: \t%s\n",entryKwh.getKey(),entryKwh.getValue()); @@ -78,7 +110,4 @@ public class LineChartFunctionality { */ } - - - } diff --git a/target/classes/com/application/DB/Constants.class b/target/classes/com/application/DB/Constants.class index a8b1e2286f71cef22fb37dcab7357266091bf176..e9f7b13a7cc2894e84287aeae17f80c67373d3ee 100644 GIT binary patch delta 943 zcmeC@-OHPD>ff$?3=9k=4C!19f(*_a3@%&@t_*IR3<3=9Tnruzo*=Fli0jS4-~*z4 zL4+TO@COkAAR-V%1c8WPc7_mkhEPTZwzT}B+{6+_1{I&l7nzkNHWt?l`i1&Bxdz4i zyTu2%26_6s1T!))dNML_1qAtfxjKi$d%7?(@H*$`6_+IDm4qecl%{epgfTL3`}jLM zhIsn>#e2FiGcYjJFfxdQI6C>b#``(?y2gh&`uIAAcsd7jFoZKQ@FB@~hkI}^L@+Y& zgVogsI0iZTI)=Cg1#>V&GBOAThd2g>#JdDVdiuG8jpAU4Vq_2q4)G5_6^&+O;PUqL z@$`eLieY5nfbc;sX7%y(^$cNVU|@a$5)b!)s)_|U#?#j|IK<I6Al}bW!`GFAA&!xO zH_Xu|)HUAI1*$Hdk%0py1oEEoWHzP=ah42Lj10n+m6esczP`FCDGDAQR=K%W#l`Fl z2|Nsm3`sl;LJY#}49PqUDGaF~P8tt`2!kji0|O6(7=tJegE)wg01=WPLJCAkGsy5T z=rPD_e$RA*v0i{dkb!|gjDZ7W6axc;B**{;1_n-$0bp93K@?0&Kxs)REd`~e8Dzlv zWEn&m7#ZXk7#Nrs<QXIx6c}XSd_@LH1|=kUWd=zG6%fB3szH@Ol0gk50OhMQNHS<3 z@iiGF8MKi2+6<BmI!Jt722PNlzz)$zve<w@lEDy3oe_g1gE11n-h@Gt!4yfrj6ssY z9LWF+1||k321^Dj21W*J1_lOW21W)(1_lOJt?dkq8^NBnVPIh3VqjumVBlk5VGv-j zWdMagSP_FAgFOQS0|$cx+<-i=N(KfqA*LM+%#(H4G(=f9Gw^Y2X5a@I$H)LOPK|+c Vaw?lVzZ`=hgCPSWgCp1?CjkB@fAjzV delta 791 zcmdnX+s_+x>ff$?3=9k=3@Ka;0t}8E3{G4O&I~S`4EzkPTnugu?jWuQi0jG0;02<+ zL4*&8@C6ZmAi^I+1h6v%vNHrt3|}-^kWp4Rn2~|o$KTm8#M9p|-qVGVfzflaEu)-h z2qObuh@+E_YrLPMuWP(_xCaMA=;Q)Mk@_%32EpJE$DojSm!L>bKX<SK4u)_>27%xZ z{{U3c2u21jZ%-djKd7omMg|TDA7mGYcen>sA_`=mr>|>ph@)=+R4kg2fj7+2C)73G z(*-IN!zjbR0TW|pU|=w2WMK92^z{s3W?*1`F<G8zLZmr^1tWuSWo2chuCK3dN{WJq zhgEK_RdF#pLo5$N978-0gCK(tJ3|5wLn1>Gh?C62Aj}}b$iTqEAj%-Z!ypDC#6g4v zh>!#kIt+4~d6`cz*7Gw6FfcHPGH`%QVPIg81nFg9VBiGl1=C^-B4An^N=ra#NiZ$R zAjKfUz{nuYz`(%7Aj2TZAj=>J=gTulGAJO)D>6tjC?WBc>lq{&RFDKz86+9hkof8h zk_;M1d`$*P1}!AMHUlSv4uc%n;kroTdJK{b`bc~O21y1(B)$=YB!e-79D^#%<t7Z0 z45mmfH)CL8U}7+5uwY<hu$;suW^Tp6z`(`8#K6G7$H2lMz+lY)3SdSC1_o9J8wOhj z1_llWJBV@y28J}SN(Kg_$-Zp5f*hL}_%<>yFfcNJOi^OsnB31M&#lYA$Y2i+HU|Kr Cu3t?6 diff --git a/target/classes/com/application/DB/DB.class b/target/classes/com/application/DB/DB.class index cb01b5595c382de6d3477bfe571dcdbc0b056354..f6de3c037d0b46daa2274512d5f7e0109cf16b89 100644 GIT binary patch delta 6383 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 GAPE4Ho&*R0 delta 4772 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 diff --git a/target/classes/com/application/GUI/InputPopUpWindow.class b/target/classes/com/application/GUI/InputPopUpWindow.class index 7a6978ec5f538cf200aa2739309e0191862ecb56..97f734cb6427535c2b5d47da833e92a806a0fc53 100644 GIT binary patch delta 793 zcmZ3f+@P{Sl#!2#VGS3<T84G(4C}cVoHr{oIxsO^)R=spQEYNGbMfSJ%+ndyZ%$+B zW>V&1c+B9=&hUhX;VFYVBZF{OVp*boPGVlVzH3EtYC%b6e%@vgc2h=F?b@5~b4+96 zWKGV=FHU7-(3)JpC^ET=TS7%BCqFU8w=}0DvmhrmIJGD<wV08Czn~~HuOzr6F*!S= zC^32S5$?5&nt}{o3=9lB42%p646F>^3_c7D44e$U4DJk!3?2*&%xnzo4EziXjB7T} z;^kmuWSzW_Z&SS}0|$dR13!ZVgD8VEgFJ%_gDQgpgFb^IgDHa&gDrzHgENB)gC~P3 zgCBziLnMPHLjr>qLnebZLji*hLpg&!Llc7mLnnhF!z2bHhM5e;3=0^{7*;cwGi+k8 zVA#!I$#96lis2-KEyEQCJBHf~_6$!L92j0RI5K=<aAo*g&)~+$!r;Lu!4Si!!Vt?? z%n;95&5+30!;r+dkRh3IIYSELYKBy>&t@?2GjK32Ven({XJBBEXY6GNU<hPjWYA}< zWe8#jWME>jWz1&?W(Z+mW{6}AW(Z{nWME;)WOQZ-V+dhjWoTm5VhCplWME^M#3;oO z!4Sg0&QQOak&z*iA&`NCVK>7^hA4&*22O@63^y2}83Gx&7@jbkV2EJ|Vc=%?%dnmy zmLZOThf#&0gCU+Ffq|E?he3fMks*nJPk@UdnIQ!d%nVN$7#TPi7#Pg8wlRoqX0Xu) zQ?@!_%1#$d*-Ns3X@`1A)@=-qI~bgnGjLh4OR{fcaM{Sf$e_uf!=TUL%)rdx$-uy% z$H2|Nz~ITi&fvws$KcH%%HYEw!{E!H!r;%K$q>Sz!w|us&k)97$Pmt8#t;P#tRMys z215o`hE#?$26m8ZzyZSmW`TkOlt|1OB1{=V7?{9<Ag?onSs)LyfLWlBW(Bj-88R5y S7%~|c7}yz@@+Vgc8UO&1u$D9c delta 715 zcmZorS*g51l#y=@!&-KRbzBTi4C}cVm^LdjIxsP9)R=spQEc*T=2wjCHn*{KGqJHV zJmz6|GFgUQiuoyn`(_h%Q$~cUy3O*O)0h~wCKoV@Ouob|p~R7spP1s3Sdz%dz+X_5 znO72Al9-$wQk0mS%E-W)oReR?nU7~JBcsUVJ-qUqEDY=n{0t0?t2RI3<zSrrj&EbV z1Oo?y6aznlG=nIE9D_WAJcBBOGJ`&Y3WF(wDuXS98iO-~I)f*J27@1iHbW$X4nqQi zE<+}R9zy|xK0`T!5knJ$F+(SV3Bx1?Q-+xgW(*4$EE!faSTSs3ux8lJV8d{T!It49 zg9F1A21kb53{DJB7@QeiGq^B(V(?)2ThHLh$im>wD8>-OsKgM<SjZ61Sjmvc*u{{< zIG-VzaVbLz<4T591}_E%h8Ya}3>=J$82lLg85kJk8M_$*7y=m>8T1*e8G;xB8JHMs z8FLwe8A2GC86p`28A2HX8CV!H866qI7(y6W8JZY17{VC>8Q2&mF-kB*FoZC$Gt{qU z_|Fi@5Xiv6u$$pMLli>@11G~3hHDJb41o+>3{M!2F~l&0FmN;cWmwA)%Mi!F!>Gj2 z!4S`oz`)Dc#h}2D$dJUqC&0y!%#gys$l$@iz;Kg+k%66ofx%2`8-wU(1{(-vs}1Ja z>3}JFT`=Xaqn^QWIRlp!n<U#d24_i@Z453O85kLq8Ppgw8JrlH89W&n81xvp85kIR z7}yzn8Tc6d7(^NT8Dtm&7?c@87}OXd7&IBe7_=F}84MUA8B7_Xz+vUVz|Nq}z{-%y zkjB6Uatt_J7{Dx$&l$n2C<d(%1|~2Q<V$8S3lzL8U{*Rq1_LWYCIbTlI|EbZ<O_lZ E0Hp1QZvX%Q diff --git a/target/classes/com/application/GUI/LineChartFunctionality.class b/target/classes/com/application/GUI/LineChartFunctionality.class index 9e9130093a4a0bdcbb9ee3a1afb06ff2defcd05e..b77b52c27533ea481f924a8716e9cf5e13ea0918 100644 GIT binary patch delta 1983 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 RB@7k}k_-wAN(>2XoB&G@SqT6D delta 1722 zcmZouUZPNc>ff$?3=9k=4ClBQG#T>P8S=Rpm>BXn8T1(n*cl4B7+4{kB6fxnE(Q(= zr<9$cjEjLA!YOBGsNiDYW2gk_sp4R$1{qMp!B7j*Tf@On2a>D@5e?i7jSNj(49yHJ zoD8iDZQKmXQ4H-|3>^%e+ziSLUEB=a3_aWoy$pRIqMw~%0yl#q!$fw5Ng%gP=3tn@ z#W0m&8W+QKh8Y|TGuattfta&F2FwAutpVhwxm*nT4D;9-=5M_CpP7>*CqFU8C9x!N z@+X$Llc%%(mzu=Ruz;Om0y{$qBLkOfMRICENoIatF+0P;$w%3A*&G?17#ZXz7c$9n z@G#gi*fBE5PJAdlc>@y{HxGk7g9AImB1Q&9kkEQYJ`NrR69#ie26+gdg9l_24}&Fx zH6w$}#D_9sJPeKui+LCf7z`O1SX>fIQh6AbFf5&Xl3m(;8N*T@hUE+^*cn#xFsx!& z&CalfhhZ(lI(CNjJPaEcHu5lRV%W^iu!V<VE5kM(hV2YH*co>6FzjO3&CalZhhY!H zULJ;h4ErZ5a7ff2VA#*dz?+p=mZ)D^l9{9Ln^?fZaFF2;BLkx?JHuffh9e9|*%^-U zFdSz%!N?#Aa)^}zr)n`LCueqe2AIjk$RGeVASW>|UEe<`D>b=<hv6i{DISK?3}-<8 zILpJ}$KcP%pp~4TtDjg<kdv952nsrV_sKmR(wld2C^5>5qRY8B>AN^FGO(qmmUx$E zOy=hjt4FdXxU#q;HJ6crIlr`okwMf4?10RC{eYs(yprIOqSVA(Yeoi^;>@a4Mh0dL zO;1J!VJvDG8Q2RzI&$(D8CWztHNzMgI8yUUiYkLsOBfjhH8ddxgM%h`vpts-<K#ka zNmn+orZh$d8x4p8u-Ai2iZb)kt)r2IAfaImH3rpvliRuVg7q0R85kH?8Mr_(&A`ZD z#K6G7#9++81xg-pz6AppC~3g?HVj;#6vn{7zy(TKU=tV_92uM#7#W-=bMU0qyD%^? zXfbdxFffQQurP=-@G(d*NH9n;C^1Me=rBk#*f7X2xG=~v_%O&ZgfPf6xH2#>@Gvkk zFffENxG}ghFfcGOcrbV}FflkYFfiybFoNY+HZcfn0J{)mJ{wp}2}v&tRIiZ}SdkY4 zCxbVG57ZDDuyO_lmQ4&?AVU}#5QeBjJ?_iE2}&v;9h3EW<-y(n6$%UtIt;uFx=2>> zfdhzvApq`hkcb5X1JtBI22O?`1}Bh73=E8q8Q2)O85kJO>|l`e-ozlKwUa@bkzpHy zjMh#DSw@DP404PNKH57O<QW-eGOX0z$)Lc<aDYLv-dATQgA$0T?6-+QN*AVUHv>oH zb_Px>7F~pPD^^KXr~!!}mI5P#6`Lg6HU<?dc1d<2)ol!FRveNX%tlt6k{m2XI~df> zxHd6J32CtIWzdXdmgEeMWD(`s!JrkqjX^tHl4To%&hB~!?np^au;_LM-JJ{)Obp@6 z|Ie0W*}<T<{C~(s1_lNea45Pl2r@7*7&5Rh7%>Pim@w!wm@-&0m@&9ASTOi8STf`> zSTmF|*f7*F*fO***fI1nI4~?{aA7#W;Kp#6!JXj*g9pQD27hq)#xQU)lrnfT1T%!x zGq5w%F*q@VGK4X3Ftjk(FoZLNFmN*TG8i*NFhnwNG2}4>F+?#$Gq5pOGW0XVFvK!2 zGx#x7F~l*LGq5n|Gt6X&XGmmVVqjr7!H~od%K(Wm1-L2;xT<8hsuTtWhE%Y3cv=23 z$gne{u`{IqXRw>BFDPN3{-1%Jfsvgdje&t73+#VJhHM5Vh8%E;%VjWQU|^79U}oT8 aC}uEakYwOyC}yx?kYrF~P-aMA;{*VpNliuo -- GitLab