diff --git a/DelayQueue/pom.xml b/DelayQueue/pom.xml index 2d7fdee..2a70d6f 100644 --- a/DelayQueue/pom.xml +++ b/DelayQueue/pom.xml @@ -20,6 +20,18 @@ org.redisson redisson + + com.aivfo + aivfo-element-base + 1.0.0-SNAPSHOT + compile + + + commons-codec + commons-codec + 1.14 + compile + \ No newline at end of file diff --git a/DelayQueue/src/main/java/com/wyl/delayqueue/sms/SmsDto.java b/DelayQueue/src/main/java/com/wyl/delayqueue/sms/SmsDto.java new file mode 100644 index 0000000..d37cfdc --- /dev/null +++ b/DelayQueue/src/main/java/com/wyl/delayqueue/sms/SmsDto.java @@ -0,0 +1,42 @@ +package com.wyl.delayqueue.sms; + +import lombok.Data; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +/** + * @Auther humingbo + * @Date 2022-09-14 11:19 + * @desc 短信参数dto + */ +@Data +public class SmsDto implements Serializable { + + /** + * 短信模板编码 + */ + private String smsCode; + + /** + * 发送短信号码 + */ + private String tel; + + + /** + * 发送方式 0为短信,1为电话语音 + * 默认为短信 + */ + private String sendWay; + + private Map maps = new HashMap<>(); + + /** + * 发送的加密内容 + */ + private String sendMsg; + + +} diff --git a/DelayQueue/src/main/java/com/wyl/delayqueue/sms/Test.java b/DelayQueue/src/main/java/com/wyl/delayqueue/sms/Test.java new file mode 100644 index 0000000..ab3fe80 --- /dev/null +++ b/DelayQueue/src/main/java/com/wyl/delayqueue/sms/Test.java @@ -0,0 +1,67 @@ +package com.wyl.delayqueue.sms; + +import com.aivfo.el.starter.base.utils.JsonUtils; +import org.apache.commons.codec.binary.Base64; + +import javax.crypto.Cipher; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import java.util.HashMap; +import java.util.Map; + +public class Test { + /** + * 加解密key + */ + private static String key = "deiloplowsdcjiue"; + + /** + * 加解密偏移量 + */ + private static String iv = "seiloplowsdcjiue"; + + public static void main(String[] args) throws Exception { + SmsDto smsDto = new SmsDto(); + smsDto.setSmsCode("123"); + smsDto.setTel("17793132945"); + smsDto.setSendWay("0"); + Map objectObjectHashMap = new HashMap<>(); + objectObjectHashMap.put("1", "123"); + smsDto.setMaps(objectObjectHashMap); + String s = encryptAES(JsonUtils.toJson(smsDto), key, iv); + System.out.println(s); + } + + public static String encryptAES(String data, String key, String iv) throws Exception { + try { + Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); + int blockSize = cipher.getBlockSize(); + byte[] dataBytes = data.getBytes(); + int plaintextLength = dataBytes.length; + if (plaintextLength % blockSize != 0) { + plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize)); + } + byte[] plaintext = new byte[plaintextLength]; + System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length); + SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES"); + IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes()); + cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec); + byte[] encrypted = cipher.doFinal(plaintext); + return encode(encrypted).trim(); + + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 编码 + * + * @param byteArray + * @return + */ + public static String encode(byte[] byteArray) { + return new String(new Base64().encode(byteArray)); + } +} diff --git a/DelayQueue/src/test/java/com/wyl/delayqueue/system/Test.java b/DelayQueue/src/test/java/com/wyl/delayqueue/system/Test.java new file mode 100644 index 0000000..a9aee5b --- /dev/null +++ b/DelayQueue/src/test/java/com/wyl/delayqueue/system/Test.java @@ -0,0 +1,9 @@ +package com.wyl.delayqueue.system; + +import java.time.LocalDate; + +public class Test { + public static void main(String[] args) { + System.out.println(LocalDate.now().getYear()); + } +} diff --git a/Socket/pom.xml b/Socket/pom.xml index be92b00..2bcd603 100644 --- a/Socket/pom.xml +++ b/Socket/pom.xml @@ -17,6 +17,10 @@ 2.6.2 compile + + cn.hutool + hutool-core + diff --git a/Socket/src/main/java/com/wyl/socket/client/SocketReceiveTimeoutExample.java b/Socket/src/main/java/com/wyl/socket/client/SocketReceiveTimeoutExample.java new file mode 100644 index 0000000..4bbb743 --- /dev/null +++ b/Socket/src/main/java/com/wyl/socket/client/SocketReceiveTimeoutExample.java @@ -0,0 +1,36 @@ +package com.wyl.socket.client; + +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; + +public class SocketReceiveTimeoutExample { + public static void main(String[] args) { + String serverAddress = "127.0.0.1"; + int serverPort = 9999; + int timeoutMillis = 5000; // 设置接收数据的超时时间为5秒 + + try { + Socket socket = new Socket(serverAddress, serverPort); + socket.setSoTimeout(timeoutMillis); + OutputStream dout = socket.getOutputStream(); + String str = "数据传输------"; + dout.write(str.getBytes()); + + // 获取输入流 + InputStream inputStream = socket.getInputStream(); + byte[] outPut = new byte[4096]; + while (inputStream.read(outPut) > 0) { + String result = new String(outPut); + System.out.println("服务端反回的的消息是:" + result); + } + // 设置接收数据的超时时间 + + // 进行数据接收操作,例如使用 inputStream.read() + + } catch (Exception e) { + System.err.println("接收数据超时"); + e.printStackTrace(); + } + } +} diff --git a/Socket/src/main/java/com/wyl/socket/client/clienttextnet.java b/Socket/src/main/java/com/wyl/socket/client/clienttextnet.java index 0dc773c..60e98f5 100644 --- a/Socket/src/main/java/com/wyl/socket/client/clienttextnet.java +++ b/Socket/src/main/java/com/wyl/socket/client/clienttextnet.java @@ -1,47 +1,39 @@ package com.wyl.socket.client; -import java.io.InputStream; +import cn.hutool.core.thread.ThreadUtil; + import java.io.OutputStream; +import java.net.InetSocketAddress; import java.net.Socket; import java.text.SimpleDateFormat; /** * 客户端 - * - * @author 刘正 * + * @author 刘正 */ public class clienttextnet { public static String _pattern = "yyyy-MM-dd HH:mm:ss SSS"; public static SimpleDateFormat format = new SimpleDateFormat(_pattern); public static void main(String[] args) { - try { - while (true) { - // 与服务端建立连接 - Socket socket = new Socket("127.0.0.1", 9999); + ThreadUtil.execute(() -> { + try { + Socket sock = new Socket(); + sock.setSoTimeout(2000); + sock.setReuseAddress(true); + sock.connect(new InetSocketAddress("127.0.0.1", 9999), 10000); // 获得输出流,给服务端发送信息 - OutputStream dout = socket.getOutputStream(); + OutputStream dout = sock.getOutputStream(); String str = "数据传输------"; - dout.write(str.getBytes()); - // 通过shutdownOutput高速服务器已经发送完数据,后续只能接受数据 - socket.shutdownOutput(); - - // 接收服务端发送的消息 - InputStream din = socket.getInputStream(); - byte[] outPut = new byte[4096]; - while (din.read(outPut) > 0) { - String result = new String(outPut); - System.out.println("服务端反回的的消息是:" + result); + while (true) { + dout.write(str.getBytes()); } - din.close(); - dout.close(); - socket.close(); - Thread.sleep(3000); + } catch (Exception e) { + e.printStackTrace(); } - } catch (Exception e) { - e.printStackTrace(); - } - + // 与服务端建立连接 +// Socket sock = new Socket("127.0.0.1", 9999); + }); } } \ No newline at end of file diff --git a/Socket/src/main/java/com/wyl/socket/service/servernettext.java b/Socket/src/main/java/com/wyl/socket/service/servernettext.java index f394e96..99fb79d 100644 --- a/Socket/src/main/java/com/wyl/socket/service/servernettext.java +++ b/Socket/src/main/java/com/wyl/socket/service/servernettext.java @@ -2,50 +2,58 @@ package com.wyl.socket.service; import java.io.IOException; import java.io.InputStream; -import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.concurrent.ThreadPoolExecutor; /** * 服务端 - * @author 刘正 * + * @author 刘正 */ public class servernettext { public static String _pattern = "yyyy-MM-dd HH:mm:ss SSS"; public static SimpleDateFormat format = new SimpleDateFormat(_pattern); // 设置超时间 public static int _sec = 0; + public static void main(String[] args) { try { + + //监听指定的端口 - ServerSocket server=new ServerSocket(9999); + ServerSocket server = new ServerSocket(9999); while (true) { //建立连接 - Socket soket=server.accept(); - System.out.println(format.format(new Date())); - System.out.println("建立了链接\n"); - //接收客户端消息(从socket中获取输入流,并建立缓冲区进行读取) - InputStream din=soket.getInputStream(); - System.out.println("客户端ip地址是:"+soket.getInetAddress()); - System.out.println("客户端端口号是:"+soket.getPort()); - System.out.println("本地端口号是:"+soket.getLocalPort()); - byte[] outPut=new byte[4096]; - while (din.read(outPut)>0) { - //注意指定编码格式,发送方和接收方一定要统一,建议使用UTF-8 - String result=new String(outPut); - System.out.println("客户端的消息是:"+result); + try { + Socket soket = server.accept(); + System.out.println(format.format(new Date())); + System.out.println("建立了链接\n"); + //接收客户端消息(从socket中获取输入流,并建立缓冲区进行读取) + InputStream din = soket.getInputStream(); + System.out.println("客户端ip地址是:" + soket.getInetAddress()); + System.out.println("客户端端口号是:" + soket.getPort()); + System.out.println("本地端口号是:" + soket.getLocalPort()); + byte[] outPut = new byte[4096]; + while (din.read(outPut) > 0) { + //注意指定编码格式,发送方和接收方一定要统一,建议使用UTF-8 + String result = new String(outPut); + System.out.println("客户端的消息是:" + result); + } + Thread.sleep(1000000L); + } catch (Exception e) { + System.out.println(e); } //给客户端发送消息 - OutputStream dout=soket.getOutputStream(); - dout.write("已收到你发来的消息!!".getBytes()); +// OutputStream dout = soket.getOutputStream(); +// dout.write("已收到你发来的消息!!".getBytes()); - din.close(); - dout.close(); - soket.close(); +// din.close(); +// dout.close(); +// soket.close(); } } catch (IOException e) { e.printStackTrace(); diff --git a/cache/pom.xml b/cache/pom.xml new file mode 100644 index 0000000..c645bdb --- /dev/null +++ b/cache/pom.xml @@ -0,0 +1,37 @@ + + + + JavaBasiceDemo + com.wyl.example + 1.0-SNAPSHOT + + 4.0.0 + + cache + + + 11 + 11 + + + + + com.github.ben-manes.caffeine + caffeine + 3.1.1 + + + io.jsonwebtoken + jjwt + 0.9.1 + + + org.jasypt + jasypt + 1.9.3 + + + + \ No newline at end of file diff --git a/cache/src/main/java/com/wyl/cache/CaffeineTest.java b/cache/src/main/java/com/wyl/cache/CaffeineTest.java new file mode 100644 index 0000000..69231de --- /dev/null +++ b/cache/src/main/java/com/wyl/cache/CaffeineTest.java @@ -0,0 +1,17 @@ +package com.wyl.cache; + +import com.github.benmanes.caffeine.cache.Cache; +import com.github.benmanes.caffeine.cache.Caffeine; + +import java.util.concurrent.TimeUnit; + +public class CaffeineTest { + public static void main(String[] args) { + Cache cache = Caffeine.newBuilder().maximumSize(1000).expireAfterAccess(1, TimeUnit.HOURS).build(); + cache.get("k", o -> CaffeineTest.buildLoader(o)); + } + + private static String buildLoader(String k) { + return k + "+default"; + } +} diff --git a/cache/src/main/java/com/wyl/cache/Solution.java b/cache/src/main/java/com/wyl/cache/Solution.java new file mode 100644 index 0000000..441c9b6 --- /dev/null +++ b/cache/src/main/java/com/wyl/cache/Solution.java @@ -0,0 +1,87 @@ +package com.wyl.cache; + +import java.util.*; +import java.util.stream.Collectors; + +class Solution { + public static List commonChars(String[] words) { + List res = new ArrayList<>(); + Map collect = Arrays.asList(words[0].split("")).stream().collect(Collectors.groupingBy(s -> s, Collectors.counting())); + for (int i = 1; i < words.length; i++) { + Map tmp1 = new HashMap<>(); + Map tmp = Arrays.asList(words[i].split("")).stream().collect(Collectors.groupingBy(s -> s, Collectors.counting())); + Map finalCollect = collect; + tmp.entrySet().stream().forEach(entry -> { + if (finalCollect.containsKey(entry.getKey())) { + tmp1.put(entry.getKey(), Math.min(finalCollect.get(entry.getKey()), entry.getValue())); + } + }); + collect = tmp1; + } + collect.entrySet().stream().forEach(o -> { + for (Long i = 0L; i < o.getValue(); i++) { + res.add(o.getKey()); + } + }); + return res; + } + + + public static int largestSumAfterKNegations(int[] nums, int k) { + int sum = 0; + int minIndex = -1; + Map map = new HashMap<>(); + for (int i = 0; i < k; i++) { + int min = Integer.MAX_VALUE; + for (int j = 0; j < nums.length; j++) { + if (min > nums[j]) { + minIndex = j; + min = nums[j]; + } + } + nums[minIndex] = -nums[minIndex]; + } + for (int i = 0; i < nums.length; i++) { + sum += nums[i]; + } + return sum; + } + + + public static boolean canThreePartsEqualSum(int[] arr) { + int sum = Arrays.stream(arr).sum(); + if (sum % 3 != 0) { + return false; + } + int avg = sum / 3; + for (int i = 0; i < arr.length; i++) { + int tmp = avg - arr[i]; + if (tmp > 0) { + } else if (tmp == 0) { + + for (int j = i + 1; j < arr.length; j++) { + tmp = avg - arr[i + 1]; + tmp = tmp - arr[j]; + if (tmp > 0) { + + } + if (tmp == 0) { + return true; + } + if (tmp < 0) { + return false; + } + } + } else { + return false; + } + + } + return false; + } + + public static void main(String[] args) { + int[] a = new int[]{3, 3, 6, 5, -2, 2, 5, 1, -9, 4}; + System.out.println(canThreePartsEqualSum(a)); + } +} \ No newline at end of file diff --git a/cache/src/main/java/com/wyl/cache/Test.java b/cache/src/main/java/com/wyl/cache/Test.java new file mode 100644 index 0000000..ab2ad46 --- /dev/null +++ b/cache/src/main/java/com/wyl/cache/Test.java @@ -0,0 +1,1111 @@ +package com.wyl.cache; + +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; + +import java.util.Base64; +import java.util.UUID; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class Test { + public static void main1(String[] args) { + String test = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCK6+MHk4J3Xu1Ris4GWRrS6bhA+EfcYutsv1duaQ0lEWGmZs0zEWNrkiRZb1lv0MF/cvijkVegNldXlNUaIy2RBzcK9PlOT6Wj2t1PyvCb++466QLPjSsSaiuPiAB7QlGHDo0Zz3xgauRLWkw16Fh6ajuqqaBWRlimsKK9EHnS2Oq5HkLg2/rj5S0LuGIiFqZTVknd6LJf79LzCrptwmBB4Aeif/d3p6+ZPuG3CYODKvOMN/Jo7ei8NQZFIaycp0E+ORyMuxQoZMZ1IljH4Jgxd/hEfwHPsHB9/a2OMcB06ngIs1BKMBQMKmniU72LLFMGZmo8Rbd2sTySIO/yF5CFAgMBAAECggEBAIrSYdJmU4+Z6qj7fhnV3Po62AcElDrlFsFbC7GnhJ0wG1a/j/qiO6l5Jp3Aqa0U/OexKkm5qcjNxMYeUj2GPbiZbyWh26en66wrv9BGyd32CQARbN+fABWsxs7tZx3FDddacSIDtxRafLvYBiQwhIn/spQ+YZ0VOu2HwXgRCMvqunrR16vitGX5IGtMLLSA3K9S2E+/mpfeBYF5MzEolQaVmxd/SroWWgBoFylCSb0fTYY2AEXPA4ooBAGAAutpvIS2vvC2MMDgTrT1VNhmbZf5t0n1ZyhZq1FbRrvkySgZQaCBTafpbKvz7c5pDNEMD5tQvL3Mam8LFjjzxRiq9pkCgYEA6PT6CLtYVylhdEmJBU/lPR7fUVTR5INb8F8UzjobIX7XnMGYGTuLfFC1dtpSeSrrDEDtqYUuU1sktvwh/NP7csYoMDwz/pdRNVNtym6xpeKxe9afFhwqSpZp6Lh83B8CFzJiiw3zlaQl5w4jjVrKNBBR/vcBcDYYDff0bp95wkcCgYEAmKm1J7J4l3Wh0cZBgBPZpD7jUF5HMjcjiwS7ewj1zLFenLDA1P8SJ2OkMhsq0CZh5sGuCFRWhydWYbbLZff7puKAyMKudy2Mn0z8S29tq5Wp6gfk53sDKrNpzTQKUqLXyiF5WF11YguLS0neekeZaj47CidHu6QNiD49/mqoENMCgYA1IHlNOHyDFDrXbFXFUl0zPTEsuS1M8fArt2NlTLcXQngllbj8OCotZbKcslmQrIsCNmR8/pR8ChMrcADISgfUOwC7T1+ENjoc8TPesLPu4u4bEe0h+7ZhYEAzBK/k+2VcqO70S3A7tj22nfDZsdTfXsF0Zhx73LpLpTqnZ9M6zQKBgQCTYdOYXX56ioAM61+07HUDUgtWPY5ydjUEMy9kWoQid2Il16Zye0XlbRbJoNy2UzfU9Uq0k+dtV5bXgwfei4gR1z4Jk5mnSPwnlsVDdnHkYvrFC5X7vBCUmt0b1I/as4eshqCFpMR8QTTbHJeCabk8jpOk+8MO7hR6Ycyr4AAdLQKBgQCzRwmMg+qVIMs8z/trJlff7lzKC8tsz4INgAoa/2xkW49ToUB2Z23uwPcmbtWi4o9ysc61URQHevQSEls7bWSE9Sbzs0ivcd0gUFF4WVo28mAaexpfFBt7Bx5LQ6+kz2XN/sJbSXgJNCIrKLdhDJnuNBH+iJcZPyu/VvVotUQx9g=="; + String aivfo = Jwts.builder() + .claim("123", "123") + .setId(UUID.randomUUID().toString()) + .signWith(SignatureAlgorithm.HS512, Base64.getDecoder().decode(test)) + .compact(); + System.out.println(aivfo); + } + +// public static void main1(String[] args) { +//// BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); +//// // 加密密钥 +//// textEncryptor.setPassword("ADUMDFUOV7834*"); +//// // 要加密的数据(如数据库的用户名或密码) +//// String username = textEncryptor.encrypt("root"); +//// String password = textEncryptor.encrypt("123"); +//// System.out.println(textEncryptor.decrypt("Qv3tCMcBiLsQwt8WznxKpg==")); +//// System.out.println("username:" + username); +//// System.out.println("password:" + password); +// String line = "AIVFO[asdasdasd]"; +// String pattern = "(?<=AIVFO\\[).+(?=\\])"; +// +// // 创建 Pattern 对象 +// Pattern r = Pattern.compile(pattern); +// +// // 现在创建 matcher 对象 +// Matcher m = r.matcher(line); +// if (m.find()) { +// System.out.println(m.group()); +// } else { +// System.out.println("NO MATCH"); +// } +// } + + public static void main(String[] args) { + String text = "using ivf_tl_Entity.DebugEntitys;\n" + + "using ivf_tl_Entity.DTO;\n" + + "using ivf_tl_Entity.GlobalEntitys;\n" + + "using ivf_tl_Entity.GlobalEnums;\n" + + "using Newtonsoft.Json;\n" + + "using System;\n" + + "using System.Collections.Generic;\n" + + "using System.Collections.ObjectModel;\n" + + "using System.IO;\n" + + "using System.Net;\n" + + "using System.Net.Http;\n" + + "using System.Net.Http.Headers;\n" + + "using System.Security.Principal;\n" + + "using System.Windows.Documents;\n" + + "using System.Xml.Linq;\n" + + "\n" + + "namespace ivf_tl_Services\n" + + "{\n" + + " public class HttpHelper\n" + + " {\n" + + " private HttpClient client;\n" + + "\n" + + " private LogHelper logHelper = null;\n" + + "\n" + + " private string token = null;\n" + + "\n" + + " private string Account = null;\n" + + "\n" + + " private string PassWord = null;\n" + + "\n" + + " public HttpHelper(string account, string passWord, LogHelper logHelper)\n" + + " {\n" + + " // client.DefaultRequestHeaders.Add(\"token\", Token);\n" + + " //BaseAddress = new Uri(baseAddress),\n" + + " Account = account;\n" + + " PassWord = passWord;\n" + + " this.logHelper = logHelper;\n" + + " //client.DefaultRequestHeaders.Connection.Add(\"keep-alive\");\n" + + " }\n" + + "\n" + + " public ExUserInfo Init(string baseAddress)\n" + + " {\n" + + " client = new HttpClient()\n" + + " {\n" + + " BaseAddress = new Uri(baseAddress),\n" + + " Timeout = new TimeSpan(0, 0, 10)// 10ÊÇÃëÊý£¬ÓÃÓÚÉèÖó¬Ê±Ê±³¤\n" + + " };\n" + + " client.DefaultRequestHeaders.ExpectContinue = false;\n" + + " return Login();\n" + + " }\n" + + "\n" + + " private void ExLog(Exception ex, string name)\n" + + " {\n" + + " logHelper.ExceptionLog(ex, $\"HttpHelper.{name}\", LogEnum.RunException);\n" + + " }\n" + + "\n" + + " private void ErrorLog(string message, LogEnum logType)\n" + + " {\n" + + " logHelper.TLLog($\"HttpHelper.{message}\", logType);\n" + + " }\n" + + "\n" + + " public void GetMp4()\n" + + " {\n" + + " try\n" + + " {\n" + + " string newFile = @\"C:\\Users\\20552\\Desktop\\123\\1.mp4\";\n" + + " string url = \"http://gateway.aivfo.com:36000/group1/M00/01/26/wKgfWWTDS1OAJAeCAABDxrBoDoo005.mp4?token=token\";\n" + + " HttpResponseMessage res = client.GetAsync(url).Result;\n" + + " using (var fs = File.Create(newFile))\n" + + " {\n" + + " var resultStream = res.Content.ReadAsStreamAsync().Result;\n" + + " resultStream.CopyTo(fs);\n" + + " fs.Close();\n" + + " }\n" + + " string sss = \"\";\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + "\n" + + " }\n" + + " }\n" + + "\n" + + " #region ²ÖÊÒÆ½ºâ½Ó¿Ú\n" + + " public bool StartBalanceApi(int houseSn, string tlSn)\n" + + " {\n" + + " string funcName = \"StartBalanceApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/businessManage/surface/balance/startBalance\";\n" + + "\n" + + " string body = JsonConvert.SerializeObject(new { houseSn = houseSn, tlSn = tlSn });\n" + + "\n" + + " HttpContent content = new StringContent(body);\n" + + " content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(\"application/json\");\n" + + "\n" + + " HttpResponseMessage response = client.PostAsync(url, content).Result;\n" + + " if (!response.IsSuccessStatusCode)\n" + + " {\n" + + " logHelper.TLLog($\"{funcName}·ÃÎÊʧ°Ü\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + "\n" + + " var resultString = response.Content.ReadAsStringAsync().Result;\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " logHelper.TLLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + "\n" + + " HttpResult rs = JsonConvert.DeserializeObject>(resultString);\n" + + " return rs.success;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " logHelper.ExceptionLog(ex, funcName, LogEnum.RunException);\n" + + " return false;\n" + + " }\n" + + " }\n" + + "\n" + + " public bool StopBalanceApi(long id)\n" + + " {\n" + + " try\n" + + " {\n" + + " string url = \"/api/businessManage/surface/balance/stopBalance\";\n" + + "\n" + + " string body = JsonConvert.SerializeObject(new { id = id });\n" + + "\n" + + " HttpContent content = new StringContent(body);\n" + + " content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(\"application/json\");\n" + + "\n" + + " HttpResponseMessage response = client.PostAsync(url, content).Result;\n" + + " if (!response.IsSuccessStatusCode)\n" + + " {\n" + + " logHelper.TLLog(\"StopBalanceApi·ÃÎÊʧ°Ü\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + "\n" + + " var resultString = response.Content.ReadAsStringAsync().Result;\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " logHelper.TLLog(\"StopBalanceApi½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + "\n" + + " HttpResult rs = JsonConvert.DeserializeObject>(resultString);\n" + + " return rs.success;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " logHelper.ExceptionLog(ex, \"StopBalanceApi\", LogEnum.RunException);\n" + + " return false;\n" + + " }\n" + + " }\n" + + " #endregion\n" + + "\n" + + " #region »¼ÕßÅàÑø½Ó¿Ú\n" + + " /// \n" + + " /// »¼Õß¹ÜÀí - ²ÖÊÒÁбí\n" + + " /// \n" + + " /// \n" + + " /// \n" + + " public GetHouseStateData GetHouseCultureListApi(string tlsn)\n" + + " {\n" + + " try\n" + + " {\n" + + " string url = \"/api/businessManage/surface/embryoCultureRecord/getHouseCultureList\";\n" + + " Dictionary keyValuePairs = new Dictionary();\n" + + " keyValuePairs.Add(\"tlSn\", tlsn);\n" + + "\n" + + " var resultString = callWebService(url, keyValuePairs);\n" + + "\n" + + " //var response = client.PostAsync(url, new FormUrlEncodedContent(keyValuePairs)).Result;\n" + + " //if (!response.IsSuccessStatusCode)\n" + + " //{\n" + + " // logHelper.TLLog(\"GetHouseCultureListApi·ÃÎÊʧ°Ü\", LogEnum.RunError);\n" + + " // return new GetHouseStateData();\n" + + " //}\n" + + " //var resultString = response.Content.ReadAsStringAsync().Result;\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " logHelper.TLLog(\"GetHouseCultureListApi½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return new GetHouseStateData();\n" + + " }\n" + + " HttpResult rs = JsonConvert.DeserializeObject>(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " logHelper.TLLog($\"GetHouseCultureListApi½Ó¿Ú·µ»ØÊ§°Ü£º{resultString}\", LogEnum.RunError);\n" + + " return new GetHouseStateData();\n" + + " }\n" + + " return rs.data;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " logHelper.ExceptionLog(ex, \"GetHouseCultureListApi\", LogEnum.RunException);\n" + + " return new GetHouseStateData();\n" + + " }\n" + + " }\n" + + "\n" + + " /// \n" + + " /// ¿ªÊ¼ÅàÑø - Ìí¼Ó»¼ÕßÐÅÏ¢\n" + + " /// \n" + + " /// \n" + + " /// \n" + + "\n" + + " public bool AddCultureRecordApi(ExDish exDish)\n" + + " {\n" + + " try\n" + + " {\n" + + " string url = \"/api/businessManage/surface/embryoCultureRecord/addCultureRecord\";\n" + + "\n" + + " string body = JsonConvert.SerializeObject(exDish);\n" + + "\n" + + " HttpContent content = new StringContent(body);\n" + + " content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(\"application/json\");\n" + + "\n" + + " HttpResponseMessage response = client.PostAsync(url, content).Result;\n" + + " if (!response.IsSuccessStatusCode)\n" + + " {\n" + + " logHelper.TLLog(\"AddCultureRecordApi·ÃÎÊʧ°Ü\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + "\n" + + " var resultString = response.Content.ReadAsStringAsync().Result;\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " logHelper.TLLog(\"GetHouseCultureListApi½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + "\n" + + " HttpResult rs = JsonConvert.DeserializeObject>(resultString);\n" + + " return rs.success;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " logHelper.ExceptionLog(ex, \"AddCultureRecordApi\", LogEnum.RunException);\n" + + " return false;\n" + + " }\n" + + " }\n" + + "\n" + + " /// \n" + + " /// ½áÊøÅàÑø\n" + + " /// \n" + + " /// \n" + + " /// \n" + + " public bool EndCultureRecordApi(long id)\n" + + " {\n" + + " string funcName = \"EndCultureRecordApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/businessManage/surface/embryoCultureRecord/endCultureRecord\";\n" + + " Dictionary keyValuePairs = new Dictionary();\n" + + " keyValuePairs.Add(\"id\", id.ToString());\n" + + " string resultString = callWebService(url, keyValuePairs);\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + " HttpResult rs = JsonConvert.DeserializeObject(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»ØÊ§°Ü£º{resultString}\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + " return true;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, funcName);\n" + + " return false;\n" + + " }\n" + + " }\n" + + " #endregion\n" + + "\n" + + " #region É豸Êý¾Ý½Ó¿Ú\n" + + " /// \n" + + " /// »ñȡͼƬÊÓÆµ\n" + + " /// \n" + + " /// \n" + + " /// \n" + + " /// \n" + + " /// \n" + + " public List GetPicturesByRecordIdApi(string tlsn, int housesn, long dishId, List wellList)\n" + + " {\n" + + " string funcName = \"GetPicturesByRecordIdApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/businessManage/surface/resource/getPicturesByRecordId\";\n" + + "\n" + + " string body = JsonConvert.SerializeObject(new { tlSn = tlsn, houseSn = housesn, id = dishId, wellSnList = wellList });\n" + + "\n" + + " string resultString = callWebService(url, body);\n" + + "\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return new List();\n" + + " }\n" + + "\n" + + " HttpResult> rs = JsonConvert.DeserializeObject>>(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»ØÊ§°Ü\", LogEnum.RunError);\n" + + " return new List();\n" + + " }\n" + + " return rs.data;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, funcName);\n" + + " return new List();\n" + + " }\n" + + " }\n" + + "\n" + + " /// \n" + + " /// »ñȡָ¶¨wellÖ¸¶¨Í¼²ãµÄͼƬ\n" + + " /// \n" + + " /// \n" + + " /// \n" + + " /// \n" + + " /// \n" + + " /// \n" + + " public List SwitchVideoPictureLayersApi(string tlsn, int housesn, long dishId, List wellList, List layerList)\n" + + " {\n" + + " string funcName = \"SwitchVideoPictureLayersApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/businessManage/surface/resource/switchVideoPictureLayers\";\n" + + " string body = JsonConvert.SerializeObject(new { tlSn = tlsn, houseSn = housesn, id = dishId, wellSnList = wellList, pictureLayer = layerList });\n" + + " string resultString = callWebService(url, body);\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return new List();\n" + + " }\n" + + "\n" + + " HttpResult> rs = JsonConvert.DeserializeObject>>(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»ØÊ§°Ü\", LogEnum.RunError);\n" + + " return new List();\n" + + " }\n" + + " return rs.data;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, funcName);\n" + + " return new List();\n" + + " }\n" + + " }\n" + + " #endregion\n" + + "\n" + + " #region ¿ØÖÆÈí¼þ TLÏÂλ»úͨѶ½»»¥½Ó¿Ú\n" + + "\n" + + " /// \n" + + " /// »ñÈ¡ËùÓÐÉèÖÃ\n" + + " /// \n" + + " public SettingDataApiData GetSettingDataApi(TLInitData tLInitData)\n" + + " {\n" + + " string funcName = \"GetSettingDataApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/tl/control/time-lapse-equipment/setting/data\";\n" + + "\n" + + " string body = JsonConvert.SerializeObject(tLInitData);\n" + + "\n" + + " HttpContent content = new StringContent(body);\n" + + " content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(\"application/json\");\n" + + "\n" + + " HttpResponseMessage response = client.PostAsync(url, content).Result;\n" + + " if (!response.IsSuccessStatusCode)\n" + + " {\n" + + " logHelper.TLLog($\"{funcName}·ÃÎÊʧ°Ü\", LogEnum.RunError);\n" + + " return null;\n" + + " }\n" + + "\n" + + " var resultString = response.Content.ReadAsStringAsync().Result;\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " logHelper.TLLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return null;\n" + + " }\n" + + "\n" + + " HttpResult rs = JsonConvert.DeserializeObject>(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " logHelper.TLLog($\"{funcName}½Ó¿Ú·µ»ØÊ§°Ü\", LogEnum.RunError);\n" + + " return null;\n" + + " }\n" + + " return rs.data;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " logHelper.ExceptionLog(ex, funcName, LogEnum.RunException);\n" + + " return null;\n" + + " }\n" + + " }\n" + + "\n" + + " #endregion\n" + + "\n" + + " #region ÏÂλ»ú¿ØÖÆÈí¼þ TLÏà¹ØÉèÖÃÊý¾Ý½Ó¿Ú\n" + + " /// \n" + + " /// »ñȡָ¶¨tlSnµÄϵͳÉèÖÃ\n" + + " /// \n" + + " /// \n" + + " /// \n" + + " public TLSettingModel SettingSystemApi(string tlsn)\n" + + " {\n" + + " string funcName = \"SettingSystemApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/tl/control/setting/system\";\n" + + "\n" + + " Dictionary keyValuePairs = new Dictionary();\n" + + " keyValuePairs.Add(\"tlSn\", tlsn);\n" + + "\n" + + " var response = client.PostAsync(url, new FormUrlEncodedContent(keyValuePairs)).Result;\n" + + "\n" + + " if (!response.IsSuccessStatusCode)\n" + + " {\n" + + " logHelper.TLLog($\"{funcName}·ÃÎÊʧ°Ü\", LogEnum.RunError);\n" + + " return new TLSettingModel();\n" + + " }\n" + + "\n" + + " var resultString = response.Content.ReadAsStringAsync().Result;\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " logHelper.TLLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return new TLSettingModel();\n" + + " }\n" + + "\n" + + " HttpResult rs = JsonConvert.DeserializeObject>(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " logHelper.TLLog($\"{funcName}½Ó¿Ú·µ»ØÊ§°Ü£º{resultString}\", LogEnum.RunError);\n" + + " return new TLSettingModel();\n" + + " }\n" + + " return rs.data;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " logHelper.ExceptionLog(ex, funcName, LogEnum.RunException);\n" + + " return new TLSettingModel();\n" + + " }\n" + + " }\n" + + "\n" + + " /// \n" + + " /// ¸üÐÂÖ¸¶¨tlSnϵͳÉèÖÃ\n" + + " /// \n" + + " /// \n" + + " /// \n" + + " public bool SystemUpdateApi(TLSettingModel tLSettingModel)\n" + + " {\n" + + " string funcName = \"SystemUpdateApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/tl/control/setting/system/update\";\n" + + " string body = JsonConvert.SerializeObject(tLSettingModel);\n" + + " string resultString = callWebService(url, body);\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + " HttpResult rs = JsonConvert.DeserializeObject(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»ØÊ§°Ü\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + " return true;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, funcName);\n" + + " return false;\n" + + " }\n" + + " }\n" + + "\n" + + " /// \n" + + " /// »ñȡָ¶¨tlSnµÄ²ÖÊÒÅäÖÃ\n" + + " /// \n" + + " /// \n" + + " /// \n" + + " public List GetSettingHouseApi(string tlSn)\n" + + " {\n" + + " string funcName = \"GetSettingHouseApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/tl/control/setting/house\";\n" + + " string body = JsonConvert.SerializeObject(new { tlSn = tlSn, size = 100, current = 1 });\n" + + " string resultString = callWebService(url, body);\n" + + "\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return new List();\n" + + " }\n" + + "\n" + + " HttpResult rs = JsonConvert.DeserializeObject>(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»ØÊ§°Ü\", LogEnum.RunError);\n" + + " return new List();\n" + + " }\n" + + " return rs.data.records;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, funcName);\n" + + " return new List();\n" + + " }\n" + + " }\n" + + "\n" + + " /// \n" + + " /// ¸üÐÂÖ¸¶¨tlSn²ÖÊÒÅäÖÃ\n" + + " /// \n" + + " /// \n" + + " public bool HouseUpdateApi(ObservableCollection houseList)\n" + + " {\n" + + " string funcName = \"HouseUpdateApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/tl/control/setting/house/update\";\n" + + "\n" + + "\n" + + " List list = new List();\n" + + "\n" + + " foreach (var item in houseList)\n" + + " {\n" + + " list.Add(new\n" + + " {\n" + + " id = item.id,\n" + + " openCcd = item.openCcd,\n" + + " openPort = item.openPort,\n" + + " });\n" + + " }\n" + + " //autoFocus = item.autoFocus,\n" + + " // autoFocusNumber = item.autoFocusNumber,\n" + + " // photographPictureNumber = item.photographPictureNumber,\n" + + " // updateClearestNumber = item.updateClearestNumber,\n" + + " // updateFocusNumber = item.updateFocusNumber,\n" + + " string body = JsonConvert.SerializeObject(list);\n" + + "\n" + + " string resultString = callWebService(url, body);\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + " HttpResult rs = JsonConvert.DeserializeObject(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»ØÊ§°Ü\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + " return true;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, funcName);\n" + + " return false;\n" + + " }\n" + + " }\n" + + "\n" + + "\n" + + " /// \n" + + " /// »ñȡָ¶¨tlSnµÄtlͨÓÃÉèÖÃ\n" + + " /// \n" + + " /// \n" + + " public TLSettingCommon SettingCommonApi(string tlsn)\n" + + " {\n" + + " string funcName = \"SettingCommonApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/tl/control/setting/common\";\n" + + " Dictionary body = new Dictionary();\n" + + " body.Add(\"tlSn\", tlsn);\n" + + " string resultString = callWebService(url, body);\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return new TLSettingCommon();\n" + + " }\n" + + " HttpResult rs = JsonConvert.DeserializeObject>(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»ØÊ§°Ü\", LogEnum.RunError);\n" + + " return new TLSettingCommon();\n" + + " }\n" + + " return rs.data;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, funcName);\n" + + " return new TLSettingCommon();\n" + + " }\n" + + " }\n" + + "\n" + + " /// \n" + + " /// ¸üÐÂÖ¸¶¨tlSnµÄtlͨÓÃÉèÖÃ\n" + + " /// \n" + + " /// \n" + + " /// \n" + + " public bool CommonUpdateApi(TLSettingCommon tLSettingCommon)\n" + + " {\n" + + " string funcName = \"CommonUpdateApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/tl/control/setting/common/update\";\n" + + " string body = JsonConvert.SerializeObject(tLSettingCommon);\n" + + " string resultString = callWebService(url, body);\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + "\n" + + " HttpResult rs = JsonConvert.DeserializeObject(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»ØÊ§°Ü\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + " return true;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, funcName);\n" + + " return false;\n" + + " }\n" + + " }\n" + + "\n" + + " /// \n" + + " /// ¸üвÖÊÒµ÷ÊÔµÄÅäÖÃÐÅÏ¢\n" + + " /// \n" + + " /// \n" + + " /// \n" + + " public bool HouseDebuggingApi(string body)\n" + + " {\n" + + " string funcName = \"HouseDebuggingApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/tl/control/setting/house/debugging\";\n" + + " string resultString = callWebService(url, body);\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + "\n" + + " HttpResult rs = JsonConvert.DeserializeObject(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»ØÊ§°Ü\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + " return true;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, funcName);\n" + + " return false;\n" + + " }\n" + + " }\n" + + "\n" + + " /// \n" + + " /// ¸üÐÂwellµÄλÖÃÐÅÏ¢\n" + + " /// \n" + + " /// \n" + + " /// \n" + + " public bool WellUpdateApi(string body)\n" + + " {\n" + + " string funcName = \"HouseDebuggingApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/tl/control/setting/house/well/update\";\n" + + " string resultString = callWebService(url, body);\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + "\n" + + " HttpResult rs = JsonConvert.DeserializeObject(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»ØÊ§°Ü\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + " return true;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, funcName);\n" + + " return false;\n" + + " }\n" + + " }\n" + + "\n" + + " /// \n" + + " /// »ñÈ¡¶Ô½¹²ÎÊýÉèÖÃ\n" + + " /// \n" + + " /// \n" + + " public List FocusSettingApi(string tlsn)\n" + + " {\n" + + " string funcName = \"FocusSettingApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/tl/control/setting/house/focus/setting\";\n" + + " Dictionary body = new Dictionary();\n" + + " body.Add(\"tlSn\", tlsn);\n" + + " string resultString = callWebService(url, body);\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return new List();\n" + + " }\n" + + "\n" + + " HttpResult> rs = JsonConvert.DeserializeObject>>(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»ØÊ§°Ü\", LogEnum.RunError);\n" + + " return new List();\n" + + " }\n" + + " return rs.data;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, funcName);\n" + + " return new List();\n" + + " }\n" + + " }\n" + + "\n" + + " /// \n" + + " /// ¶Ô½¹²ÎÊýÁ¢¼´¶Ô½¹\n" + + " /// \n" + + " /// \n" + + " public bool HouseImmediatelyAPi(List list)\n" + + " {\n" + + " string funcName = \"HouseImmediatelyAPi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/tl/control/setting/house/immediately\";\n" + + " string body = JsonConvert.SerializeObject(list);\n" + + " string resultString = callWebService(url, body);\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + "\n" + + " HttpResult rs = JsonConvert.DeserializeObject(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»ØÊ§°Ü\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + " return true;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, funcName);\n" + + " return false;\n" + + " }\n" + + " }\n" + + "\n" + + " /// \n" + + " /// ¸üÐÂÖ¸¶¨tlSnµÆ¹âÇ¿¶ÈÒÔ¼°»º³åÆ¿½øÆø·§´ò¿ªÊ±¼ä\n" + + " /// \n" + + " /// \n" + + " public bool LightsUpdateApi(string _tlsn,int _dayLighting, int _inletValveOpeningTime)\n" + + " {\n" + + " string funcName = \"LightsUpdateApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/tl/control/setting/lights/update\";\n" + + " string body = JsonConvert.SerializeObject(new\n" + + " {\n" + + " dayLighting= _dayLighting,\n" + + " inletValveOpeningTime= _inletValveOpeningTime,\n" + + " tlSn= _tlsn,\n" + + " });\n" + + " string resultString = callWebService(url, body);\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + " HttpResult rs = JsonConvert.DeserializeObject(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»ØÊ§°Ü\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + " return true;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, funcName);\n" + + " return false;\n" + + " }\n" + + " }\n" + + " #endregion\n" + + "\n" + + " #region Êý¾Ý×Öµä½Ó¿Ú\n" + + " /// \n" + + " /// ¸ù¾Ý×ÖµäType²éѯ - ²»º¬¸ù½Úµã\n" + + " /// \n" + + " /// \n" + + " public List QueryDictionaryByTypeApi(string queryType)\n" + + " {\n" + + " string funcName = \"QueryDictionaryByTypeApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/businessManage/surface/dictionary/queryDictionaryByType\";\n" + + " string resultString = callWebService(url, JsonConvert.SerializeObject(new { type = queryType }));\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return new List();\n" + + " }\n" + + "\n" + + " HttpResult> rs = JsonConvert.DeserializeObject>>(resultString);\n" + + " if (!rs.success)\n" + + " {\n" + + " ErrorLog($\"{funcName}½Ó¿Ú·µ»ØÊ§°Ü\", LogEnum.RunError);\n" + + " return new List();\n" + + " }\n" + + " return rs.data;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, funcName);\n" + + " return new List();\n" + + " }\n" + + " }\n" + + " #endregion\n" + + "\n" + + " #region »ù´¡·ÃÎÊʵÏÖ\n" + + " public ExUserInfo Login()\n" + + " {\n" + + " try\n" + + " {\n" + + " string json = callWebServiceNoToken(\"/api/gateway/auth/login\", JsonConvert.SerializeObject(new { account = Account, password = PassWord }));\n" + + " if (string.IsNullOrEmpty(json))\n" + + " {\n" + + " ErrorLog($\"Login½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return null;\n" + + " }\n" + + " var result = JsonConvert.DeserializeObject>(json);\n" + + " if (!result.success)\n" + + " {\n" + + " ErrorLog($\"Login·þÎñÆ÷·µ»ØÊ§°Ü£º{json}\", LogEnum.RunError);\n" + + " return null;\n" + + " }\n" + + " token = result.data.token;\n" + + " return result.data.userInfo;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, \"Login\");\n" + + " return null;\n" + + " }\n" + + " }\n" + + "\n" + + " public string GetToken()\n" + + " {\n" + + " try\n" + + " {\n" + + " if (!string.IsNullOrEmpty(token)) return token;\n" + + "\n" + + " string json = callWebServiceNoToken(\"/api/gateway/auth/login\", JsonConvert.SerializeObject(new { account = Account, password = PassWord }));\n" + + " if (string.IsNullOrEmpty(json))\n" + + " {\n" + + " ErrorLog($\"GetToken½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return null;\n" + + " }\n" + + "\n" + + " var result = JsonConvert.DeserializeObject>(json);\n" + + " if (!result.success)\n" + + " {\n" + + " ErrorLog($\"GetToken·þÎñÆ÷·µ»ØÊ§°Ü£º{json}\", LogEnum.RunError);\n" + + " return null;\n" + + " }\n" + + " token = result.data.token;\n" + + " return token;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, \"GetToken\");\n" + + " return null;\n" + + " }\n" + + " }\n" + + "\n" + + " public string callWebService(string url)\n" + + " {\n" + + " string name = \"callWebService\";\n" + + " try\n" + + " {\n" + + " if (string.IsNullOrEmpty(GetToken())) return null;\n" + + " if (client.DefaultRequestHeaders.Contains(\"token\"))\n" + + " {\n" + + " client.DefaultRequestHeaders.Remove(\"token\");\n" + + " }\n" + + " client.DefaultRequestHeaders.Add(\"token\", token);\n" + + " HttpContent httpContent = new StringContent(\"\");\n" + + " httpContent.Headers.ContentType = new MediaTypeHeaderValue(\"application/json\");\n" + + " httpContent.Headers.ContentType.CharSet = \"utf-8\";\n" + + " HttpResponseMessage responseMessage = client.PostAsync(url, httpContent).Result;\n" + + "\n" + + " if (responseMessage.StatusCode != HttpStatusCode.OK)\n" + + " {\n" + + " ErrorLog($\"{name}·ÃÎÊ·þÎñÆ÷ʧ°Ü£º[url:{url}][RequestMessage:{responseMessage.RequestMessage}]\", LogEnum.RunError);\n" + + " return null;\n" + + " }\n" + + " return responseMessage.Content.ReadAsStringAsync().Result;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, $\"callWebService:{url}\");\n" + + " return null;\n" + + " }\n" + + " }\n" + + "\n" + + " public string callWebService(string url, string body)\n" + + " {\n" + + " string name = \"callWebService\";\n" + + " try\n" + + " {\n" + + " if (string.IsNullOrEmpty(GetToken())) return null;\n" + + " if (client.DefaultRequestHeaders.Contains(\"token\"))\n" + + " {\n" + + " client.DefaultRequestHeaders.Remove(\"token\");\n" + + " }\n" + + " client.DefaultRequestHeaders.Add(\"token\", token);\n" + + "\n" + + " HttpContent httpContent = new StringContent(body);\n" + + " httpContent.Headers.ContentType = new MediaTypeHeaderValue(\"application/json\");\n" + + " httpContent.Headers.ContentType.CharSet = \"utf-8\";\n" + + "\n" + + " HttpResponseMessage responseMessage = client.PostAsync(url, httpContent).Result;\n" + + " if (responseMessage.StatusCode != HttpStatusCode.OK)\n" + + " {\n" + + " ErrorLog($\"{name}·ÃÎÊ·þÎñÆ÷ʧ°Ü£º[url:{url}][body:{body}][RequestMessage:{responseMessage.RequestMessage}]\", LogEnum.RunError);\n" + + " return null;\n" + + " }\n" + + " return responseMessage.Content.ReadAsStringAsync().Result;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, $\"callWebService:[url:{url}][body:{body}]\");\n" + + " return null;\n" + + " }\n" + + " }\n" + + "\n" + + " public string callWebService(string url, Dictionary body)\n" + + " {\n" + + " string name = \"callWebService\";\n" + + " try\n" + + " {\n" + + " if (string.IsNullOrEmpty(GetToken())) return null;\n" + + " if (client.DefaultRequestHeaders.Contains(\"token\"))\n" + + " {\n" + + " client.DefaultRequestHeaders.Remove(\"token\");\n" + + " }\n" + + " client.DefaultRequestHeaders.Add(\"token\", token);\n" + + " var responseMessage = client.PostAsync(url, new FormUrlEncodedContent(body)).Result;\n" + + " if (responseMessage.StatusCode != HttpStatusCode.OK)\n" + + " {\n" + + " ErrorLog($\"{name}·ÃÎÊ·þÎñÆ÷ʧ°Ü£º[url:{url}][body:{JsonConvert.SerializeObject(body)}][RequestMessage:{responseMessage.RequestMessage}]\", LogEnum.RunError);\n" + + " return null;\n" + + " }\n" + + " return responseMessage.Content.ReadAsStringAsync().Result;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, $\"callWebService:[url:{url}][body:{JsonConvert.SerializeObject(body)}]\");\n" + + " return null;\n" + + " }\n" + + " }\n" + + "\n" + + " public string callWebServiceNoToken(string url, string body)\n" + + " {\n" + + " string name = \"callWebService\";\n" + + " try\n" + + " {\n" + + " if (client.DefaultRequestHeaders.Contains(\"token\"))\n" + + " {\n" + + " client.DefaultRequestHeaders.Remove(\"token\");\n" + + " }\n" + + "\n" + + " HttpContent httpContent = new StringContent(body);\n" + + " httpContent.Headers.ContentType = new MediaTypeHeaderValue(\"application/json\");\n" + + " httpContent.Headers.ContentType.CharSet = \"utf-8\";\n" + + " HttpResponseMessage responseMessage = client.PostAsync(url, httpContent).Result;\n" + + " if (responseMessage.StatusCode != HttpStatusCode.OK)\n" + + " {\n" + + " ErrorLog($\"{name}·ÃÎÊ·þÎñÆ÷ʧ°Ü£º[url:{url}][body:{body}][RequestMessage:{responseMessage.RequestMessage}]\", LogEnum.RunError);\n" + + " return null;\n" + + " }\n" + + " return responseMessage.Content.ReadAsStringAsync().Result;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " ExLog(ex, $\"callWebService:[url:{url}][body:{body}]\");\n" + + " return null;\n" + + " }\n" + + " }\n" + + "\n" + + " #endregion\n" + + "\n" + + " #region ÆúÓÃ\n" + + " public bool MarkEmbryoDestinationApi(long embryoId, int embryoState)\n" + + " {\n" + + " logHelper.TLLog($\"{embryoId}_{embryoState}\", LogEnum.RunError);\n" + + " string funcName = \"MarkEmbryoDestinationApi\";\n" + + " try\n" + + " {\n" + + " string url = \"/api/businessManage/surface/embryoMark/markEmbryoDestination\";\n" + + "\n" + + " string body = JsonConvert.SerializeObject(new { id = embryoId, state = embryoState });\n" + + "\n" + + " HttpContent content = new StringContent(body);\n" + + " content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(\"application/json\");\n" + + "\n" + + " HttpResponseMessage response = client.PostAsync(url, content).Result;\n" + + " if (!response.IsSuccessStatusCode)\n" + + " {\n" + + " logHelper.TLLog($\"{funcName}·ÃÎÊʧ°Ü\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + "\n" + + " var resultString = response.Content.ReadAsStringAsync().Result;\n" + + " if (string.IsNullOrEmpty(resultString))\n" + + " {\n" + + " logHelper.TLLog($\"{funcName}½Ó¿Ú·µ»Ø¿Õ\", LogEnum.RunError);\n" + + " return false;\n" + + " }\n" + + "\n" + + " HttpResult rs = JsonConvert.DeserializeObject(resultString);\n" + + " return rs.success;\n" + + " }\n" + + " catch (Exception ex)\n" + + " {\n" + + " logHelper.ExceptionLog(ex, funcName, LogEnum.RunException);\n" + + " return false;\n" + + " }\n" + + " }\n" + + " #endregion\n" + + " }\n" + + "}\n"; + String pattern = "\"/api/tl/control/.*\""; // 正则表达式模式匹配电子邮件地址 + + Pattern p = Pattern.compile(pattern); + Matcher m = p.matcher(text); + + while (m.find()) { + String emailAddress = m.group(); + System.out.println(emailAddress); + } + + } +} + diff --git a/cache/src/main/java/com/wyl/cache/leetCode.java b/cache/src/main/java/com/wyl/cache/leetCode.java new file mode 100644 index 0000000..357faaa --- /dev/null +++ b/cache/src/main/java/com/wyl/cache/leetCode.java @@ -0,0 +1,29 @@ +package com.wyl.cache; + +public class leetCode { + public static int maxRepeating(String sequence, String word) { + byte[] bytes = sequence.getBytes(); + byte[] bytes1 = word.getBytes(); + int a = 0; + int num = 0; + for (int i = 0; i < bytes.length; i++) { + byte aByte = bytes[i]; + byte b = bytes1[a]; + if (aByte == b) { + if (a == (bytes1.length - 1)) { + a = 0; + num++; + } else { + a++; + } + } else { + a = 0; + } + } + return num; + } + + public static void main(String[] args) { + System.out.println(maxRepeating("aaabaaaabaaabaaaabaaaabaaaabaaaaba", "aaaba")); + } +} diff --git a/concurrent/src/main/java/concurrent/pool/MyThreadFactory.java b/concurrent/src/main/java/concurrent/pool/MyThreadFactory.java new file mode 100644 index 0000000..0c6e19f --- /dev/null +++ b/concurrent/src/main/java/concurrent/pool/MyThreadFactory.java @@ -0,0 +1,55 @@ +package concurrent.pool; + +import cn.hutool.core.thread.NamedThreadFactory; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class MyThreadFactory extends NamedThreadFactory { + private final List threads = Collections.synchronizedList(new ArrayList<>()); + + /** + * 构造 + * + * @param prefix 线程名前缀 + * @param isDaemon 是否守护线程 + */ + public MyThreadFactory(String prefix, boolean isDaemon) { + super(prefix, isDaemon); + } + + /** + * 构造 + * + * @param prefix 线程名前缀 + * @param threadGroup 线程组,可以为null + * @param isDaemon 是否守护线程 + */ + public MyThreadFactory(String prefix, ThreadGroup threadGroup, boolean isDaemon) { + super(prefix, threadGroup, isDaemon); + } + + /** + * 构造 + * + * @param prefix 线程名前缀 + * @param threadGroup 线程组,可以为null + * @param isDaemon 是否守护线程 + * @param handler 未捕获异常处理 + */ + public MyThreadFactory(String prefix, ThreadGroup threadGroup, boolean isDaemon, Thread.UncaughtExceptionHandler handler) { + super(prefix, threadGroup, isDaemon, handler); + } + + @Override + public Thread newThread(Runnable r) { + Thread thread = new Thread(r); + threads.add(thread); + return thread; + } + + public List getThreads() { + return threads; + } +} diff --git a/concurrent/src/main/java/concurrent/pool/Pool.java b/concurrent/src/main/java/concurrent/pool/Pool.java new file mode 100644 index 0000000..987bb20 --- /dev/null +++ b/concurrent/src/main/java/concurrent/pool/Pool.java @@ -0,0 +1,41 @@ +package concurrent.pool; + +import cn.hutool.core.thread.ThreadUtil; + +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +public class Pool { + public static void main(String[] args) throws InterruptedException { + // 使用自定义线程工厂创建线程池 + MyThreadFactory threadFactory = new MyThreadFactory("123", false); + ExecutorService executorService = Executors.newFixedThreadPool(10, threadFactory); + for (int i = 0; i < 10; i++) { + int finalI = i; + executorService.execute(() -> { + try { + boolean a = finalI / 2 > 0 ? true : false; + while (a) { + System.out.println(1); + } + } catch (Exception e) { + e.printStackTrace(); + } + + }); + } + ThreadUtil.sleep(1000L); + List runnables = executorService.shutdownNow(); + boolean b = executorService.awaitTermination(10, TimeUnit.SECONDS); + System.out.println(b); + List threads = threadFactory.getThreads(); + for (Thread thread : threads) { + if (thread.isAlive()) { + thread.stop(); + } + } +// ThreadUtil.sleep(100000000000L); + } +} diff --git a/concurrent/src/test/java/concurrent/ttl/TransmittableThreadLocalTest.java b/concurrent/src/test/java/concurrent/ttl/TransmittableThreadLocalTest.java index e6c297a..e39d1ba 100644 --- a/concurrent/src/test/java/concurrent/ttl/TransmittableThreadLocalTest.java +++ b/concurrent/src/test/java/concurrent/ttl/TransmittableThreadLocalTest.java @@ -1,139 +1,135 @@ -package concurrent.ttl; - -import cn.hutool.core.thread.ThreadUtil; -import com.alibaba.ttl.TtlCallable; -import com.alibaba.ttl.TtlRunnable; -import concurrent.ttl.context.ContextUtil; -import concurrent.ttl.task.CallableTask; -import concurrent.ttl.task.RunnableTask; -import lombok.extern.slf4j.Slf4j; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; - -import java.util.concurrent.ExecutorService; -import java.util.concurrent.atomic.AtomicInteger; - - -@Slf4j -public class TransmittableThreadLocalTest { - - static ExecutorService executorService; - static AtomicInteger atomicInteger; - - @BeforeAll - public static void before() { - ContextUtil.setThreadLocal("wyl-01"); - ContextUtil.setTransmittableThreadLocal("wyl-02"); - executorService = ThreadUtil.newExecutor(3); - atomicInteger = new AtomicInteger(0); - } - - /** - * 不修改值 - * - * @param - * @return void - * @Date 2022/8/7 - * @Author wangyl - */ - @Test - public void runnableTest() throws InterruptedException { - for (int i = 0; i < 1000; i++) { - RunnableTask runnableTask = new RunnableTask(); - executorService.execute(runnableTask); - } - Thread.sleep(10000L); - } - - /** - * 修改值 线程池里值用的旧值 - * - * @param - * @return void - * @Date 2022/8/7 - * @Author wangyl - */ - @Test - public void runnableChangeErrorTest() throws InterruptedException { - for (int i = 0; i < 1000; i++) { - RunnableTask runnableTask = new RunnableTask(); - ContextUtil.setTransmittableThreadLocal("wyl-02-" + atomicInteger.incrementAndGet()); - executorService.execute(runnableTask); - } - Thread.sleep(10000L); - } - - /** - * 修改值线程池用的新值 - * - * @param - * @return void - * @Date 2022/8/7 - * @Author wangyl - */ - @Test - public void runnableChangeRightTest() throws InterruptedException { - for (int i = 0; i < 1000; i++) { - RunnableTask runnableTask = new RunnableTask(); - ContextUtil.setTransmittableThreadLocal("wyl-02-" + atomicInteger.incrementAndGet()); - TtlRunnable ttlRunnable = TtlRunnable.get(runnableTask); - executorService.execute(ttlRunnable); - } - Thread.sleep(10000L); - } - - /** - * 不修改值 - * - * @param - * @return void - * @Date 2022/8/7 - * @Author wangyl - */ - @Test - public void callableTest() throws InterruptedException { - for (int i = 0; i < 1000; i++) { - CallableTask runnableTask = new CallableTask(); - executorService.submit(runnableTask); - } - Thread.sleep(10000L); - } - - /** - * 修改值线程池用的旧值 - * - * @param - * @return void - * @Date 2022/8/7 - * @Author wangyl - */ - @Test - public void callableChangeErrorTest() throws InterruptedException { - for (int i = 0; i < 1000; i++) { - CallableTask runnableTask = new CallableTask(); - ContextUtil.setTransmittableThreadLocal("wyl-02-" + atomicInteger.incrementAndGet()); - executorService.submit(runnableTask); - } - Thread.sleep(10000L); - } - - /** - * 修改值线程池里用的新值 - * - * @param - * @return void - * @Date 2022/8/7 - * @Author wangyl - */ - @Test - public void callableChangeRightTest() throws InterruptedException { - for (int i = 0; i < 1000; i++) { - CallableTask runnableTask = new CallableTask(); - ContextUtil.setTransmittableThreadLocal("wyl-02-" + atomicInteger.incrementAndGet()); - TtlCallable stringTtlCallable = TtlCallable.get(runnableTask); - executorService.submit(stringTtlCallable); - } - Thread.sleep(10000L); - } - -} +//package concurrent.ttl; +// +//import cn.hutool.core.thread.ThreadUtil; +//import com.alibaba.ttl.TtlCallable; +//import com.alibaba.ttl.TtlRunnable; +//import concurrent.ttl.task.CallableTask; +//import concurrent.ttl.task.RunnableTask; +//import lombok.extern.slf4j.Slf4j; +//import org.junit.jupiter.api.BeforeAll; +//import org.junit.jupiter.api.Test; +// +//import java.util.concurrent.ExecutorService; +//import java.util.concurrent.atomic.AtomicInteger; +// +// +//@Slf4j +//public class TransmittableThreadLocalTest { +// +// static ExecutorService executorService; +// static AtomicInteger atomicInteger; +// +// @BeforeAll +// public static void before() { +// executorService = ThreadUtil.newExecutor(3); +// atomicInteger = new AtomicInteger(0); +// } +// +// /** +// * 不修改值 +// * +// * @param +// * @return void +// * @Date 2022/8/7 +// * @Author wangyl +// */ +// @Test +// public void runnableTest() throws InterruptedException { +// for (int i = 0; i < 1000; i++) { +// RunnableTask runnableTask = new RunnableTask(); +// executorService.execute(runnableTask); +// } +// Thread.sleep(10000L); +// } +// +// /** +// * 修改值 线程池里值用的旧值 +// * +// * @param +// * @return void +// * @Date 2022/8/7 +// * @Author wangyl +// */ +// @Test +// public void runnableChangeErrorTest() throws InterruptedException { +// for (int i = 0; i < 1000; i++) { +// RunnableTask runnableTask = new RunnableTask(); +// executorService.execute(runnableTask); +// } +// Thread.sleep(10000L); +// } +// +// /** +// * 修改值线程池用的新值 +// * +// * @param +// * @return void +// * @Date 2022/8/7 +// * @Author wangyl +// */ +// @Test +// public void runnableChangeRightTest() throws InterruptedException { +// for (int i = 0; i < 1000; i++) { +// RunnableTask runnableTask = new RunnableTask(); +// ContextUtil.setTransmittableThreadLocal("wyl-02-" + atomicInteger.incrementAndGet()); +// TtlRunnable ttlRunnable = TtlRunnable.get(runnableTask); +// executorService.execute(ttlRunnable); +// } +// Thread.sleep(10000L); +// } +// +// /** +// * 不修改值 +// * +// * @param +// * @return void +// * @Date 2022/8/7 +// * @Author wangyl +// */ +// @Test +// public void callableTest() throws InterruptedException { +// for (int i = 0; i < 1000; i++) { +// CallableTask runnableTask = new CallableTask(); +// executorService.submit(runnableTask); +// } +// Thread.sleep(10000L); +// } +// +// /** +// * 修改值线程池用的旧值 +// * +// * @param +// * @return void +// * @Date 2022/8/7 +// * @Author wangyl +// */ +// @Test +// public void callableChangeErrorTest() throws InterruptedException { +// for (int i = 0; i < 1000; i++) { +// CallableTask runnableTask = new CallableTask(); +// ContextUtil.setTransmittableThreadLocal("wyl-02-" + atomicInteger.incrementAndGet()); +// executorService.submit(runnableTask); +// } +// Thread.sleep(10000L); +// } +// +// /** +// * 修改值线程池里用的新值 +// * +// * @param +// * @return void +// * @Date 2022/8/7 +// * @Author wangyl +// */ +// @Test +// public void callableChangeRightTest() throws InterruptedException { +// for (int i = 0; i < 1000; i++) { +// CallableTask runnableTask = new CallableTask(); +// ContextUtil.setTransmittableThreadLocal("wyl-02-" + atomicInteger.incrementAndGet()); +// TtlCallable stringTtlCallable = TtlCallable.get(runnableTask); +// executorService.submit(stringTtlCallable); +// } +// Thread.sleep(10000L); +// } +// +//} diff --git a/file-read/pom.xml b/file-read/pom.xml index 91922e4..ae67323 100644 --- a/file-read/pom.xml +++ b/file-read/pom.xml @@ -21,6 +21,12 @@ minio 8.4.3 + + + commons-io + commons-io + 2.13.0 + \ No newline at end of file diff --git a/file-read/src/main/java/com/wyl/file/sequence/FileListener.java b/file-read/src/main/java/com/wyl/file/sequence/FileListener.java new file mode 100644 index 0000000..8f11729 --- /dev/null +++ b/file-read/src/main/java/com/wyl/file/sequence/FileListener.java @@ -0,0 +1,34 @@ +package com.wyl.file.sequence; + + +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; + +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Paths; + +/** + * @author Tastill + * @version 2019/1/24 14:55 + * @description FileListener + */ +@Slf4j +public class FileListener extends FileAlterationListenerAdaptor { + + /** + * @param + * @return + * @description 文件创建 + * @version 2.0, 2019/1/24 14:59 + * @author Tastill + */ + @SneakyThrows + @Override + public void onFileCreate(File file) { +// String s = Files.readString(Paths.get(file.getAbsolutePath())); +// log.info("有新文件生成:" + s); + } + +} \ No newline at end of file diff --git a/file-read/src/main/java/com/wyl/file/sequence/FileRead.java b/file-read/src/main/java/com/wyl/file/sequence/FileRead.java new file mode 100644 index 0000000..0445a9c --- /dev/null +++ b/file-read/src/main/java/com/wyl/file/sequence/FileRead.java @@ -0,0 +1,22 @@ +package com.wyl.file.sequence; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; + +public class FileRead { + public static void main(String[] args) throws FileNotFoundException { + File file = new File("C:\\Users\\95981\\Desktop\\2\\视频11.mp4"); + InputStream inStream = new FileInputStream(file); + byte[] bs = new byte[1024]; + int i = 0; + try { + while ((i = inStream.read(bs)) != -1) { + System.out.println(i); + } + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/file-read/src/main/java/com/wyl/file/sequence/FolderWatcher.java b/file-read/src/main/java/com/wyl/file/sequence/FolderWatcher.java new file mode 100644 index 0000000..a27b13b --- /dev/null +++ b/file-read/src/main/java/com/wyl/file/sequence/FolderWatcher.java @@ -0,0 +1,52 @@ +package com.wyl.file.sequence; + +import java.io.IOException; +import java.nio.file.*; + +public class FolderWatcher { + + public static void main(String[] args) throws IOException { + // 指定要监控的文件夹路径 + Path folderToWatch = Paths.get("C:\\Users\\95981\\Desktop\\ai\\result"); + + // 创建WatchService + WatchService watchService = FileSystems.getDefault().newWatchService(); + + // 注册要监控的文件夹以及子文件夹 + folderToWatch.register(watchService, StandardWatchEventKinds.ENTRY_CREATE); + + System.out.println("Watching folder: " + folderToWatch); + + // 启动无限循环以监控文件夹事件 + while (true) { + WatchKey key; + try { + // 获取下一个文件系统事件 + key = watchService.take(); + } catch (InterruptedException e) { + return; + } + + // 处理文件系统事件 + for (WatchEvent event : key.pollEvents()) { + WatchEvent.Kind kind = event.kind(); + + // 获取事件发生的文件路径 + Path eventPath = (Path) event.context(); + Path fullPath = folderToWatch.resolve(eventPath); + + if (kind == StandardWatchEventKinds.ENTRY_CREATE) { + // 处理文件新增事件 + System.out.println("File created: " + fullPath); + } + } + + // 重置WatchKey以便继续监控 + boolean valid = key.reset(); + if (!valid) { + // 如果WatchKey不再有效,退出循环 + break; + } + } + } +} diff --git a/file-read/src/main/java/com/wyl/file/sequence/IOtest.java b/file-read/src/main/java/com/wyl/file/sequence/IOtest.java new file mode 100644 index 0000000..3e39f7b --- /dev/null +++ b/file-read/src/main/java/com/wyl/file/sequence/IOtest.java @@ -0,0 +1,34 @@ +package com.wyl.file.sequence; + +import org.apache.commons.io.filefilter.FileFilterUtils; +import org.apache.commons.io.monitor.FileAlterationMonitor; +import org.apache.commons.io.monitor.FileAlterationObserver; + +import java.util.concurrent.TimeUnit; + +public class IOtest { + public static void main(String[] args) { + String rootDir = "C:\\Users\\95981\\Desktop\\ai\\result"; + // 轮询间隔 5 秒 + Integer time = 1; + long interval = TimeUnit.SECONDS.toMillis(time); + // 创建一个文件观察器用于处理文件的格式, + // FileFilterUtils.suffixFileFilter(".txt") +// FileAlterationObserver _observer = new FileAlterationObserver( +// rootDir, +// FileFilterUtils.and( +// FileFilterUtils.fileFileFilter()), //过滤文件格式 +// null); + FileAlterationObserver observer = new FileAlterationObserver(rootDir); + observer.addListener(new FileListener()); //设置文件变化监听器 + //创建文件变化监听器 + FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer); + // 开始监控 + try { + monitor.start(); + } catch (Exception e) { + e.printStackTrace(); + } + + } +} diff --git a/file-read/src/main/java/generator/domain/AbtestExperimentAlgorithm.java b/file-read/src/main/java/generator/domain/AbtestExperimentAlgorithm.java deleted file mode 100644 index 756ebc1..0000000 --- a/file-read/src/main/java/generator/domain/AbtestExperimentAlgorithm.java +++ /dev/null @@ -1,359 +0,0 @@ -package generator.domain; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * 算法实验记录表 - * @TableName abtest_experiment_algorithm - */ -@TableName(value ="abtest_experiment_algorithm") -public class AbtestExperimentAlgorithm implements Serializable { - /** - * - */ - @TableId(type = IdType.AUTO) - private Integer id; - - /** - * 参数列表,json格式的字符串,如[{key:value},] - */ - private String parametersList; - - /** - * 分流模式 - */ - private String shuntType; - - /** - * 版本号 - */ - private Integer version; - - /** - * abtest_experiment_group表中的id,关联实验状态信息 - */ - private Integer abtestExperimentGroupId; - - /** - * 实验细节描述 - */ - private String detailsDescription; - - /** - * 分流字段 - */ - private String shuntKey; - - /** - * 分流比例 - */ - private Integer shuntProportion; - - /** - * 更新时间 - */ - private LocalDateTime updateTime; - - /** - * 创建时间 - */ - private LocalDateTime createTime; - - /** - * 名字 - */ - private String employeeName; - - /** - * 工号 - */ - private String employeeWorkCode; - - /** - * 已删除 1 未删除 0 - */ - private Integer deleted; - - /** - * etl更新时间 - */ - private LocalDateTime beidouEtlTime; - - @TableField(exist = false) - private static final long serialVersionUID = 1L; - - /** - * - */ - public Integer getId() { - return id; - } - - /** - * - */ - public void setId(Integer id) { - this.id = id; - } - - /** - * 参数列表,json格式的字符串,如[{key:value},] - */ - public String getParametersList() { - return parametersList; - } - - /** - * 参数列表,json格式的字符串,如[{key:value},] - */ - public void setParametersList(String parametersList) { - this.parametersList = parametersList; - } - - /** - * 分流模式 - */ - public String getShuntType() { - return shuntType; - } - - /** - * 分流模式 - */ - public void setShuntType(String shuntType) { - this.shuntType = shuntType; - } - - /** - * 版本号 - */ - public Integer getVersion() { - return version; - } - - /** - * 版本号 - */ - public void setVersion(Integer version) { - this.version = version; - } - - /** - * abtest_experiment_group表中的id,关联实验状态信息 - */ - public Integer getAbtestExperimentGroupId() { - return abtestExperimentGroupId; - } - - /** - * abtest_experiment_group表中的id,关联实验状态信息 - */ - public void setAbtestExperimentGroupId(Integer abtestExperimentGroupId) { - this.abtestExperimentGroupId = abtestExperimentGroupId; - } - - /** - * 实验细节描述 - */ - public String getDetailsDescription() { - return detailsDescription; - } - - /** - * 实验细节描述 - */ - public void setDetailsDescription(String detailsDescription) { - this.detailsDescription = detailsDescription; - } - - /** - * 分流字段 - */ - public String getShuntKey() { - return shuntKey; - } - - /** - * 分流字段 - */ - public void setShuntKey(String shuntKey) { - this.shuntKey = shuntKey; - } - - /** - * 分流比例 - */ - public Integer getShuntProportion() { - return shuntProportion; - } - - /** - * 分流比例 - */ - public void setShuntProportion(Integer shuntProportion) { - this.shuntProportion = shuntProportion; - } - - /** - * 更新时间 - */ - public LocalDateTime getUpdateTime() { - return updateTime; - } - - /** - * 更新时间 - */ - public void setUpdateTime(LocalDateTime updateTime) { - this.updateTime = updateTime; - } - - /** - * 创建时间 - */ - public LocalDateTime getCreateTime() { - return createTime; - } - - /** - * 创建时间 - */ - public void setCreateTime(LocalDateTime createTime) { - this.createTime = createTime; - } - - /** - * 名字 - */ - public String getEmployeeName() { - return employeeName; - } - - /** - * 名字 - */ - public void setEmployeeName(String employeeName) { - this.employeeName = employeeName; - } - - /** - * 工号 - */ - public String getEmployeeWorkCode() { - return employeeWorkCode; - } - - /** - * 工号 - */ - public void setEmployeeWorkCode(String employeeWorkCode) { - this.employeeWorkCode = employeeWorkCode; - } - - /** - * 已删除 1 未删除 0 - */ - public Integer getDeleted() { - return deleted; - } - - /** - * 已删除 1 未删除 0 - */ - public void setDeleted(Integer deleted) { - this.deleted = deleted; - } - - /** - * etl更新时间 - */ - public LocalDateTime getBeidouEtlTime() { - return beidouEtlTime; - } - - /** - * etl更新时间 - */ - public void setBeidouEtlTime(LocalDateTime beidouEtlTime) { - this.beidouEtlTime = beidouEtlTime; - } - - @Override - public boolean equals(Object that) { - if (this == that) { - return true; - } - if (that == null) { - return false; - } - if (getClass() != that.getClass()) { - return false; - } - AbtestExperimentAlgorithm other = (AbtestExperimentAlgorithm) that; - return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId())) - && (this.getParametersList() == null ? other.getParametersList() == null : this.getParametersList().equals(other.getParametersList())) - && (this.getShuntType() == null ? other.getShuntType() == null : this.getShuntType().equals(other.getShuntType())) - && (this.getVersion() == null ? other.getVersion() == null : this.getVersion().equals(other.getVersion())) - && (this.getAbtestExperimentGroupId() == null ? other.getAbtestExperimentGroupId() == null : this.getAbtestExperimentGroupId().equals(other.getAbtestExperimentGroupId())) - && (this.getDetailsDescription() == null ? other.getDetailsDescription() == null : this.getDetailsDescription().equals(other.getDetailsDescription())) - && (this.getShuntKey() == null ? other.getShuntKey() == null : this.getShuntKey().equals(other.getShuntKey())) - && (this.getShuntProportion() == null ? other.getShuntProportion() == null : this.getShuntProportion().equals(other.getShuntProportion())) - && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime())) - && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime())) - && (this.getEmployeeName() == null ? other.getEmployeeName() == null : this.getEmployeeName().equals(other.getEmployeeName())) - && (this.getEmployeeWorkCode() == null ? other.getEmployeeWorkCode() == null : this.getEmployeeWorkCode().equals(other.getEmployeeWorkCode())) - && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted())) - && (this.getBeidouEtlTime() == null ? other.getBeidouEtlTime() == null : this.getBeidouEtlTime().equals(other.getBeidouEtlTime())); - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((getId() == null) ? 0 : getId().hashCode()); - result = prime * result + ((getParametersList() == null) ? 0 : getParametersList().hashCode()); - result = prime * result + ((getShuntType() == null) ? 0 : getShuntType().hashCode()); - result = prime * result + ((getVersion() == null) ? 0 : getVersion().hashCode()); - result = prime * result + ((getAbtestExperimentGroupId() == null) ? 0 : getAbtestExperimentGroupId().hashCode()); - result = prime * result + ((getDetailsDescription() == null) ? 0 : getDetailsDescription().hashCode()); - result = prime * result + ((getShuntKey() == null) ? 0 : getShuntKey().hashCode()); - result = prime * result + ((getShuntProportion() == null) ? 0 : getShuntProportion().hashCode()); - result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode()); - result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode()); - result = prime * result + ((getEmployeeName() == null) ? 0 : getEmployeeName().hashCode()); - result = prime * result + ((getEmployeeWorkCode() == null) ? 0 : getEmployeeWorkCode().hashCode()); - result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode()); - result = prime * result + ((getBeidouEtlTime() == null) ? 0 : getBeidouEtlTime().hashCode()); - return result; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append(getClass().getSimpleName()); - sb.append(" ["); - sb.append("Hash = ").append(hashCode()); - sb.append(", id=").append(id); - sb.append(", parametersList=").append(parametersList); - sb.append(", shuntType=").append(shuntType); - sb.append(", version=").append(version); - sb.append(", abtestExperimentGroupId=").append(abtestExperimentGroupId); - sb.append(", detailsDescription=").append(detailsDescription); - sb.append(", shuntKey=").append(shuntKey); - sb.append(", shuntProportion=").append(shuntProportion); - sb.append(", updateTime=").append(updateTime); - sb.append(", createTime=").append(createTime); - sb.append(", employeeName=").append(employeeName); - sb.append(", employeeWorkCode=").append(employeeWorkCode); - sb.append(", deleted=").append(deleted); - sb.append(", beidouEtlTime=").append(beidouEtlTime); - sb.append(", serialVersionUID=").append(serialVersionUID); - sb.append("]"); - return sb.toString(); - } -} \ No newline at end of file diff --git a/file-read/src/main/java/generator/mapper/AbtestExperimentAlgorithmMapper.java b/file-read/src/main/java/generator/mapper/AbtestExperimentAlgorithmMapper.java deleted file mode 100644 index 5721c87..0000000 --- a/file-read/src/main/java/generator/mapper/AbtestExperimentAlgorithmMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package generator.mapper; - -import generator.domain.AbtestExperimentAlgorithm; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** -* @author wyl -* @description 针对表【abtest_experiment_algorithm(算法实验记录表)】的数据库操作Mapper -* @createDate 2023-05-26 10:46:15 -* @Entity generator.domain.AbtestExperimentAlgorithm -*/ -public interface AbtestExperimentAlgorithmMapper extends BaseMapper { - -} - - - - diff --git a/file-read/src/main/java/generator/service/AbtestExperimentAlgorithmService.java b/file-read/src/main/java/generator/service/AbtestExperimentAlgorithmService.java deleted file mode 100644 index 2b3e4a3..0000000 --- a/file-read/src/main/java/generator/service/AbtestExperimentAlgorithmService.java +++ /dev/null @@ -1,13 +0,0 @@ -package generator.service; - -import generator.domain.AbtestExperimentAlgorithm; -import com.baomidou.mybatisplus.extension.service.IService; - -/** -* @author wyl -* @description 针对表【abtest_experiment_algorithm(算法实验记录表)】的数据库操作Service -* @createDate 2023-05-26 10:46:15 -*/ -public interface AbtestExperimentAlgorithmService extends IService { - -} diff --git a/file-read/src/main/java/generator/service/impl/AbtestExperimentAlgorithmServiceImpl.java b/file-read/src/main/java/generator/service/impl/AbtestExperimentAlgorithmServiceImpl.java deleted file mode 100644 index bf7290f..0000000 --- a/file-read/src/main/java/generator/service/impl/AbtestExperimentAlgorithmServiceImpl.java +++ /dev/null @@ -1,22 +0,0 @@ -package generator.service.impl; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import generator.domain.AbtestExperimentAlgorithm; -import generator.service.AbtestExperimentAlgorithmService; -import generator.mapper.AbtestExperimentAlgorithmMapper; -import org.springframework.stereotype.Service; - -/** -* @author wyl -* @description 针对表【abtest_experiment_algorithm(算法实验记录表)】的数据库操作Service实现 -* @createDate 2023-05-26 10:46:15 -*/ -@Service -public class AbtestExperimentAlgorithmServiceImpl extends ServiceImpl - implements AbtestExperimentAlgorithmService{ - -} - - - - diff --git a/javacv/pom.xml b/javacv/pom.xml index 14f579a..e094c50 100644 --- a/javacv/pom.xml +++ b/javacv/pom.xml @@ -17,18 +17,17 @@ linux-x86_64 - - - - - - - - - - - + + org.bytedeco + javacv-platform + 1.5.9 + + + org.bytedeco + opencv-platform + 4.7.0-${javacv.version} + org.bytedeco javacv @@ -39,19 +38,19 @@ javacpp-platform ${javacv.version} - - - org.bytedeco - ffmpeg - 6.0-${javacv.version} - ${system.windowsx64} - - - org.bytedeco - ffmpeg - 6.0-${javacv.version} - ${system.linuxx64} - + + + + + + + + + + + + + commons-io commons-io diff --git a/javacv/src/main/java/com/wyl/javacv/AssemblyImageTest.java b/javacv/src/main/java/com/wyl/javacv/AssemblyImageTest.java new file mode 100644 index 0000000..6ea005c --- /dev/null +++ b/javacv/src/main/java/com/wyl/javacv/AssemblyImageTest.java @@ -0,0 +1,25 @@ +package com.wyl.javacv; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.geom.AffineTransform; +import java.awt.image.AffineTransformOp; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.net.URL; + +public class AssemblyImageTest { + public static void main(String[] args) { + BufferedImage result = new BufferedImage(1548, 1032, BufferedImage.TYPE_INT_RGB); + Graphics2D graphics = result.createGraphics(); + for (int i = 0; i < 10; i++) { + try { + BufferedImage read = ImageIO.read(new File("")); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + +} diff --git a/javacv/src/main/java/com/wyl/javacv/DemoApplicationTests.java b/javacv/src/main/java/com/wyl/javacv/DemoApplicationTests.java index 9ef0a53..5e155f5 100644 --- a/javacv/src/main/java/com/wyl/javacv/DemoApplicationTests.java +++ b/javacv/src/main/java/com/wyl/javacv/DemoApplicationTests.java @@ -1,50 +1,46 @@ -//package com.wyl.javacv; -// -// -//import org.opencv.core.CvType; -//import org.opencv.core.Mat; -//import org.opencv.core.MatOfByte; -//import org.opencv.highgui.HighGui; -//import org.opencv.imgcodecs.Imgcodecs; -//import org.opencv.imgproc.Imgproc; -//import org.opencv.videoio.VideoWriter; -// -//import java.io.File; -//import java.io.FileInputStream; -//import java.io.InputStream; -//import java.net.URL; -// -// -//public class DemoApplicationTests { -// /** -// * @return -// * @Description -// * @Param -// * @Author zhangsan -// * @Date 2020.09.05 9:43 -// **/ -// public static void main(String[] args) throws Exception { -// // 解决awt报错问题 -// // 加载动态库 -// URL url = ClassLoader.getSystemResource("opencv_java480.dll"); -// System.load(url.getPath()); -// // 读取图像 -//// Mat image = Imgcodecs.imread("D:\\1.jpg"); -// File file = new File("C:\\Users\\95981\\Desktop\\Mattingfailure.jpg"); -// InputStream fos = new FileInputStream(file); -// Mat image = Imgcodecs.imdecode(new MatOfByte(fos.readAllBytes()), Imgcodecs.IMREAD_COLOR); -// if (image.empty()) { -// throw new Exception("image is empty"); -// } -// HighGui.imshow("Original Image", image); -// -// // 创建输出单通道图像 -// Mat grayImage = new Mat(image.rows(), image.cols(), CvType.CV_8SC1); -// // 进行图像色彩空间转换 -// Imgproc.cvtColor(image, grayImage, Imgproc.COLOR_RGB2GRAY); -// -// HighGui.imshow("Processed Image", grayImage); -// Imgcodecs.imwrite("D:/hello.jpg", grayImage); -// HighGui.waitKey(); -// } -//} \ No newline at end of file +package com.wyl.javacv; + + +import org.apache.commons.io.IOUtils; +import org.opencv.core.Core; +import org.opencv.core.CvType; +import org.opencv.core.Mat; +import org.opencv.core.MatOfByte; +import org.opencv.highgui.HighGui; +import org.opencv.imgcodecs.Imgcodecs; +import org.opencv.imgproc.Imgproc; + +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; + + +public class DemoApplicationTests { + /** + * @return + * @Description + * @Param + * @Author zhangsan + * @Date 2020.09.05 9:43 + **/ + public static void main(String[] args) throws Exception { + System.loadLibrary(Core.NATIVE_LIBRARY_NAME); + // 读取图像 + File file = new File("C:\\Users\\95981\\Desktop\\Mattingfailure.jpg"); + InputStream fos = new FileInputStream(file); + Mat image = Imgcodecs.imdecode(new MatOfByte(IOUtils.toByteArray(fos)), Imgcodecs.IMREAD_COLOR); + if (image.empty()) { + throw new Exception("image is empty"); + } + HighGui.imshow("Original Image", image); + + // 创建输出单通道图像 + Mat grayImage = new Mat(image.rows(), image.cols(), CvType.CV_8SC1); + // 进行图像色彩空间转换 + Imgproc.cvtColor(image, grayImage, Imgproc.COLOR_RGB2GRAY); + + HighGui.imshow("Processed Image", grayImage); + Imgcodecs.imwrite("D:/hello.jpg", grayImage); + HighGui.waitKey(); + } +} \ No newline at end of file diff --git a/javacv/src/main/java/com/wyl/javacv/ImageProcessing.java b/javacv/src/main/java/com/wyl/javacv/ImageProcessing.java new file mode 100644 index 0000000..0938f92 --- /dev/null +++ b/javacv/src/main/java/com/wyl/javacv/ImageProcessing.java @@ -0,0 +1,98 @@ +package com.wyl.javacv; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +public class ImageProcessing { + + public static void main(String[] args) throws IOException { + File inputFile1 = new File("D:\\AIVFO\\doc\\vidoe\\10_211_2488\\10_2024-03-14-11-07-11_1号图层\\10_211\\2488_1"); // 原始图片路径 + File inputFile2 = new File("D:\\AIVFO\\doc\\vidoe\\10_211_2488\\10_2024-03-14-11-07-11_2号图层\\10_211\\2488_1"); // 原始图片路径 + File inputFile3 = new File("D:\\AIVFO\\doc\\vidoe\\10_211_2488\\10_2024-03-14-11-07-11_3号图层\\10_211\\2488_1"); // 原始图片路径 + File inputFile4 = new File("D:\\AIVFO\\doc\\vidoe\\10_211_2488\\10_2024-03-14-11-07-11_4号图层\\10_211\\2488_1"); // 原始图片路径 + File inputFile5 = new File("D:\\AIVFO\\doc\\vidoe\\10_211_2488\\10_2024-03-14-11-07-11_5号图层\\10_211\\2488_1"); // 原始图片路径 + File inputFile6 = new File("D:\\AIVFO\\doc\\vidoe\\10_211_2488\\10_2024-03-14-11-07-11_-1号图层\\10_211\\2488_1"); // 原始图片路径 + File inputFile7 = new File("D:\\AIVFO\\doc\\vidoe\\10_211_2488\\10_2024-03-14-11-07-11_-2号图层\\10_211\\2488_1"); // 原始图片路径 + File inputFile8 = new File("D:\\AIVFO\\doc\\vidoe\\10_211_2488\\10_2024-03-14-11-07-11_-3号图层\\10_211\\2488_1"); // 原始图片路径 + File inputFile9 = new File("D:\\AIVFO\\doc\\vidoe\\10_211_2488\\10_2024-03-14-11-07-11_-4号图层\\10_211\\2488_1"); // 原始图片路径 + File inputFile10 = new File("D:\\AIVFO\\doc\\vidoe\\10_211_2488\\10_2024-03-14-11-07-11_-5号图层\\10_211\\2488_1"); // 原始图片路径 + File inputFile11 = new File("D:\\AIVFO\\doc\\vidoe\\10_211_2488\\10_2024-03-14-11-07-11_0号图层\\10_211\\2488_1"); // 原始图片路径 + List pictureList1 = Arrays.asList(inputFile1.listFiles()).stream().sorted(Comparator.comparing(File::getName)).collect(Collectors.toList()); + List pictureList2 = Arrays.asList(inputFile2.listFiles()).stream().sorted(Comparator.comparing(File::getName)).collect(Collectors.toList()); + List pictureList3 = Arrays.asList(inputFile3.listFiles()).stream().sorted(Comparator.comparing(File::getName)).collect(Collectors.toList()); + List pictureList4 = Arrays.asList(inputFile4.listFiles()).stream().sorted(Comparator.comparing(File::getName)).collect(Collectors.toList()); + List pictureList5 = Arrays.asList(inputFile5.listFiles()).stream().sorted(Comparator.comparing(File::getName)).collect(Collectors.toList()); + List pictureList6 = Arrays.asList(inputFile6.listFiles()).stream().sorted(Comparator.comparing(File::getName)).collect(Collectors.toList()); + List pictureList7 = Arrays.asList(inputFile7.listFiles()).stream().sorted(Comparator.comparing(File::getName)).collect(Collectors.toList()); + List pictureList8 = Arrays.asList(inputFile8.listFiles()).stream().sorted(Comparator.comparing(File::getName)).collect(Collectors.toList()); + List pictureList9 = Arrays.asList(inputFile9.listFiles()).stream().sorted(Comparator.comparing(File::getName)).collect(Collectors.toList()); + List pictureList10 = Arrays.asList(inputFile10.listFiles()).stream().sorted(Comparator.comparing(File::getName)).collect(Collectors.toList()); + List pictureList11 = Arrays.asList(inputFile11.listFiles()).stream().sorted(Comparator.comparing(File::getName)).collect(Collectors.toList()); + + List> res = new ArrayList<>(); + res.add(pictureList1); + res.add(pictureList2); + res.add(pictureList3); + res.add(pictureList4); + res.add(pictureList5); + res.add(pictureList6); + res.add(pictureList7); + res.add(pictureList8); + res.add(pictureList9); + res.add(pictureList10); + res.add(pictureList11); + + for (int i = 0; i < pictureList1.size(); i++) { + // 创建9宫格图片 + int scaledWidth = 430; + int scaledHeight = 430; + int gridWidth = scaledWidth * 3; + int gridHeight = scaledHeight * 3; + BufferedImage gridImage = new BufferedImage(gridWidth, gridHeight, BufferedImage.TYPE_INT_RGB); + Graphics2D g2dGrid = gridImage.createGraphics(); + // 绘制9宫格 + int wyl = 0; + for (int x = 0; x < 3; x++) { + for (int y = 0; y < 3; y++) { + g2dGrid.drawImage(zoom(res.get(wyl).get(i)), x * scaledWidth, y * scaledHeight, null); + wyl++; + } + } + g2dGrid.dispose(); + // 保存9宫格图片 + File outputFile = new File("C:\\Users\\95981\\Desktop\\test\\outputImage_" + String.format("%04d", i) + ".jpg"); + ImageIO.write(gridImage, "jpg", outputFile); + } + } + + /** + * 构建缩放图片 + * + * @param file + * @return java.awt.image.BufferedImage + * @Date 2024/3/14 + * @Author wangyl + */ + public static BufferedImage zoom(File file) throws IOException { + BufferedImage originalImage = ImageIO.read(file); + /** + * 缩放图片 缩放到一半宽度 + */ + int scaledWidth = originalImage.getWidth() / 2; + int scaledHeight = originalImage.getHeight() / 2; + BufferedImage scaledImage = new BufferedImage(scaledWidth, scaledHeight, originalImage.getType()); + Graphics2D g2d = scaledImage.createGraphics(); + g2d.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null); + g2d.dispose(); + return scaledImage; + } + +} diff --git a/javacv/src/main/java/com/wyl/javacv/JavaCvRead.java b/javacv/src/main/java/com/wyl/javacv/JavaCvRead.java new file mode 100644 index 0000000..07de09e --- /dev/null +++ b/javacv/src/main/java/com/wyl/javacv/JavaCvRead.java @@ -0,0 +1,101 @@ +package com.wyl.javacv; + +import org.apache.commons.io.IOUtils; +import org.bytedeco.javacpp.BytePointer; +import org.bytedeco.leptonica.PIX; +import org.bytedeco.leptonica.global.leptonica; +import org.bytedeco.opencv.global.opencv_imgcodecs; +import org.bytedeco.opencv.opencv_core.Mat; +import org.bytedeco.opencv.opencv_core.Rect; +import org.bytedeco.tesseract.TessBaseAPI; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; + +public class JavaCvRead { + public static void main(String[] args) throws IOException { + // Load the input image +// Mat inputImage = opencv_imgcodecs.imread("D:\\AIVFO\\doc\\embryo_picture\\picture\\img_0018-79920-942-942.jpg"); + File file = new File("D:\\AIVFO\\doc\\embryo_picture\\picture\\img_0018-79920-942-942.jpg"); + InputStream fos = new FileInputStream(file); + byte[] bytes = IOUtils.toByteArray(fos); + BytePointer bytePointer = new BytePointer(bytes); + Mat inputImage = opencv_imgcodecs.imdecode(new Mat(bytePointer), opencv_imgcodecs.IMREAD_COLOR); + System.out.println(inputImage.cols()); + int cropWidth = 780; + int cropHeight = 830; + Rect roi = new Rect(cropWidth, cropHeight, inputImage.cols() - cropWidth - 10, inputImage.rows() - cropHeight - 50); + /** + * 裁剪为新的图片 + */ + Mat croppedImage = new Mat(inputImage, roi); + int cols = croppedImage.cols(); + int rows = croppedImage.rows(); + PIX pixS = leptonica.pixCreate(cols, rows, 8); + + + for (int i = 0; i < rows; i++) { + for (int j = 0; j < cols; j++) { + int anInt = croppedImage.ptr(i, j).getInt(); + leptonica.pixSetPixel(pixS, j, i, anInt); + } + } + + + TessBaseAPI api = new TessBaseAPI(); + if (api.Init("C:\\Users\\95981\\Desktop", "eng") != 0) { + System.out.println("error"); + System.out.println(api.GetInitLanguagesAsString()); + } + api.SetImage(pixS); + BytePointer outText = api.GetUTF8Text(); + String result = outText.getString(); + System.out.println(result); + api.End(); + outText.deallocate(); + leptonica.pixDestroy(pixS); + + // Release resources + inputImage.release(); + croppedImage.release(); + } + + + public static void main2(String[] args) { +// Mat inputImage = opencv_imgcodecs.imread("D:\\AIVFO\\doc\\embryo_picture\\picture\\img_0001-79920-944-944.jpg"); +// int cropWidth = 780; +// int cropHeight = 830; +// Rect roi = new Rect(cropWidth, cropHeight, inputImage.cols() - cropWidth - 10, inputImage.rows() - cropHeight - 50); +// // Crop the bottom right corner of the image using the ROI +// Mat croppedImage = new Mat(inputImage, roi); +// +// // Display the cropped image +// opencv_imgcodecs.imwrite("D:\\AIVFO\\doc\\embryo_picture\\picture\\cropped.jpg", croppedImage); +// +// // Release resources +// inputImage.release(); +// croppedImage.release(); + } + + + public static void main1(String[] args) { + // Load the input image + PIX pixS = leptonica.pixRead("D:\\AIVFO\\doc\\embryo_picture\\picture\\cropped.jpg"); + + TessBaseAPI api = new TessBaseAPI(); + if (api.Init("C:\\Users\\95981\\Desktop", "eng") != 0) { + System.out.println("error"); + System.out.println(api.GetInitLanguagesAsString()); + } + api.SetImage(pixS); + BytePointer outText = api.GetUTF8Text(); + String result = outText.getString(); + System.out.println(result); + api.End(); + outText.deallocate(); + leptonica.pixDestroy(pixS); + } + +} \ No newline at end of file diff --git a/javacv/src/main/java/com/wyl/javacv/JavaCvTest.java b/javacv/src/main/java/com/wyl/javacv/JavaCvTest.java index 7b7cbe2..52b1615 100644 --- a/javacv/src/main/java/com/wyl/javacv/JavaCvTest.java +++ b/javacv/src/main/java/com/wyl/javacv/JavaCvTest.java @@ -1,6 +1,5 @@ package com.wyl.javacv; -import org.apache.commons.io.IOUtils; import org.bytedeco.ffmpeg.global.avcodec; import org.bytedeco.ffmpeg.global.avutil; import org.bytedeco.javacv.FFmpegFrameRecorder; @@ -18,11 +17,9 @@ public class JavaCvTest { public static void main(String[] args) throws Exception { //合成的MP4 存放的地址路径 这里的路径并不会自动创建,需要手动提前创建好,否则会报错:Could not open 'null' - String mp4SavePath = "E:\\桌面\\vidoe\\img2.mp4"; -// String img = "/home/wyl/project/aos/opencv/picture"; -// String mp4SavePath = "/home/wyl/project/aos/opencv/video/video14.mp4"; // 输出视频文件路径 + String mp4SavePath = "C:\\Users\\95981\\Desktop\\vidoe\\img2.mp4"; //图片存放的地址路径 - String img = "E:\\桌面\\picture"; + String img = "D:\\AIVFO\\doc\\视频\\0\\"; int width = 910; int height = 910; //读取所有图片 @@ -34,7 +31,12 @@ public class JavaCvTest { imgMap.put(num, imgFile); num++; } +// while (true) { + long s = System.currentTimeMillis(); createMp4(mp4SavePath, imgMap, width, height); + System.out.println(System.currentTimeMillis() - s); +// Thread.sleep(10000); +// } } private static void createMp4(String mp4SavePath, Map imgMap, int width, int height) throws FrameRecorder.Exception { diff --git a/jna/pom.xml b/jna/pom.xml index 52f135f..8f59489 100644 --- a/jna/pom.xml +++ b/jna/pom.xml @@ -16,16 +16,18 @@ 11 + net.java.dev.jna jna - 5.2.0 + 5.13.0 + net.java.dev.jna jna-platform - 5.2.0 + 5.13.0 \ No newline at end of file diff --git a/jna/src/main/java/com/wyl/jna/CropPictureInfo.java b/jna/src/main/java/com/wyl/jna/CropPictureInfo.java new file mode 100644 index 0000000..96c5d1f --- /dev/null +++ b/jna/src/main/java/com/wyl/jna/CropPictureInfo.java @@ -0,0 +1,52 @@ +package com.wyl.jna; + +import com.sun.jna.Structure; +import lombok.Data; + +import java.util.Arrays; +import java.util.List; + +/** + * @description: 图片剪裁结果 + * @author: wangyl + * @date: 2023/6/2 + */ +@Data +public class CropPictureInfo extends Structure implements Structure.ByValue { + + /** + * 剪裁成功 1 成功 0 失败 + */ + public int success; + /** + * 图片分数 + */ + public double score; + /** + * 图片名称 + */ + public String fileName; + /** + * 半径 + */ + public int radius; + + + /** + * 类型转换 + * + * @param + * @return com.aivfo.jna.picture.entity.CropPictureInfo + * @Date 2023/9/6 + * @Author wangyl + */ + public CropPictureInfo toCropPictureInfo() { + return this; + } + + @Override + protected List getFieldOrder() { + return Arrays.asList(new String[]{"success", "score", "fileName", "radius"}); + } + +} diff --git a/jna/src/main/java/com/wyl/jna/Location2.java b/jna/src/main/java/com/wyl/jna/Location2.java new file mode 100644 index 0000000..bcd2cc5 --- /dev/null +++ b/jna/src/main/java/com/wyl/jna/Location2.java @@ -0,0 +1,20 @@ +package com.wyl.jna; + +import com.sun.jna.Structure; + +import java.util.Arrays; +import java.util.List; + +public class Location2 extends Structure { + + public int x; + public int y; + + public static class ByValue extends Point implements Structure.ByValue { + } + + @Override + protected List getFieldOrder() { + return Arrays.asList(new String[]{"x", "y"}); + } +} \ No newline at end of file diff --git a/jna/src/main/java/com/wyl/jna/Main.java b/jna/src/main/java/com/wyl/jna/Main.java index 2929b2d..445bb18 100644 --- a/jna/src/main/java/com/wyl/jna/Main.java +++ b/jna/src/main/java/com/wyl/jna/Main.java @@ -1,112 +1,109 @@ -package com.wyl.jna; - -import com.sun.jna.Library; -import com.sun.jna.Native; -import com.sun.jna.Pointer; - -import java.io.FileOutputStream; -import java.io.IOException; -import java.time.LocalDateTime; -import java.time.temporal.ChronoUnit; - -public class Main { - public interface CLibrary extends Library { - CLibrary INSTANCE = (CLibrary) - Native.load("JavaImageDLL", CLibrary.class); - - int getValue1(); - - BmpData getStruct1(String imagePath); - } - - public static void main1(String[] args) { - System.setProperty("jna.debug_load", "true"); - System.setProperty("jna.debug_load.jna", "true"); - System.setProperty("jna.platform.library.path", "C:\\Users\\95981\\Desktop\\dll"); -// int value1 = CLibrary.INSTANCE.getValue1(); -// System.out.println(value1); - BmpData struct1 = CLibrary.INSTANCE.getStruct1("C:\\Users\\95981\\Desktop\\wangyongliang.jpg"); - int datasize = struct1.size; - Pointer data = struct1.data; - byte[] byteArray = data.getByteArray(0, datasize); - String filePath = "C:\\Users\\95981\\Desktop\\wyl001.jpg"; // 替换为您要写入的文件路径 - try (FileOutputStream fos = new FileOutputStream(filePath)) { - fos.write(byteArray); - System.out.println("字节数组成功写入文件。"); - } catch (IOException e) { - System.out.println("写入文件时发生错误:" + e.getMessage()); - } - // 将内存块转换为byte[]数组 - } - - public static void main123(String[] args) { - LocalDateTime fromDateTime = LocalDateTime.now(); - LocalDateTime toDateTime = fromDateTime.plusDays(1).plusHours(6).plusMinutes(12); - LocalDateTime tempDateTime = LocalDateTime.from(fromDateTime); - ChronoUnit a = ChronoUnit.MINUTES; - long days = 0; - long hours = 0; - long minutes = 0; - long seconds = 0; - switch (a) { - case DAYS: - days = tempDateTime.until(toDateTime, ChronoUnit.DAYS); - tempDateTime = tempDateTime.plusDays(days); - case HOURS: - hours = tempDateTime.until(toDateTime, ChronoUnit.HOURS); - tempDateTime = tempDateTime.plusHours(hours); - case MINUTES: - minutes = tempDateTime.until(toDateTime, ChronoUnit.MINUTES); - tempDateTime = tempDateTime.plusMinutes(minutes); - case SECONDS: - seconds = tempDateTime.until(toDateTime, ChronoUnit.SECONDS); - - } - - System.out.println( - days + " 天 " + - hours + " 小时 " + - minutes + " 分 " + - seconds + " 秒."); - } - - public static void main(String[] args) { - long minutes = 62; - String result = convertMinutesToUnits(minutes, ChronoUnit.DAYS); - System.out.println(result); - } - - - public static String convertMinutesToUnits(long minutes1, ChronoUnit maxUnit) { - long min = minutes1; - long days = 0; - long hours = 0; - long minutes = 0; - long secound = 0; - long millis = 0; - switch (maxUnit) { - case DAYS: - days = min / 1440; - min = min % 1440; - case HOURS: - hours = min / 60; - min = min % 60; - case MINUTES: - minutes = min / 1; - break; - case SECONDS: - secound = min * 60; - break; - case MILLIS: - millis = min * 6000; - } - String reult = days + " 天 " + - hours + " 小时 " + - minutes + " 分 " + - secound + " 秒 " + - millis + " 毫秒 "; - return reult; - } - - -} +//package com.wyl.jna; +// +//import com.sun.jna.Library; +//import com.sun.jna.Native; +//import com.sun.jna.Pointer; +// +//import java.io.FileOutputStream; +//import java.io.IOException; +//import java.time.LocalDateTime; +//import java.time.temporal.ChronoUnit; +// +//public class Main { +// public interface CLibrary extends Library { +// CLibrary INSTANCE = (CLibrary) +// Native.load("JavaImageDLL", CLibrary.class); +// +// int getValue1(); +// +// +// } +// +// public static void main1(String[] args) { +// System.setProperty("jna.debug_load", "true"); +// System.setProperty("jna.debug_load.jna", "true"); +// System.setProperty("jna.platform.library.path", "C:\\Users\\95981\\Desktop\\dll"); +//// int value1 = CLibrary.INSTANCE.getValue1(); +//// System.out.println(value1); +// BmpData struct1 = CLibrary.INSTANCE.findcircles("C:\\Users\\95981\\Desktop\\wangyongliang.jpg"); +// String filePath = "C:\\Users\\95981\\Desktop\\wyl001.jpg"; // 替换为您要写入的文件路径 +// try (FileOutputStream fos = new FileOutputStream(filePath)) { +// fos.write(byteArray); +// System.out.println("字节数组成功写入文件。"); +// } catch (IOException e) { +// System.out.println("写入文件时发生错误:" + e.getMessage()); +// } +// // 将内存块转换为byte[]数组 +// } +// +// public static void main123(String[] args) { +// LocalDateTime fromDateTime = LocalDateTime.now(); +// LocalDateTime toDateTime = fromDateTime.plusDays(1).plusHours(6).plusMinutes(12); +// LocalDateTime tempDateTime = LocalDateTime.from(fromDateTime); +// ChronoUnit a = ChronoUnit.MINUTES; +// long days = 0; +// long hours = 0; +// long minutes = 0; +// long seconds = 0; +// switch (a) { +// case DAYS: +// days = tempDateTime.until(toDateTime, ChronoUnit.DAYS); +// tempDateTime = tempDateTime.plusDays(days); +// case HOURS: +// hours = tempDateTime.until(toDateTime, ChronoUnit.HOURS); +// tempDateTime = tempDateTime.plusHours(hours); +// case MINUTES: +// minutes = tempDateTime.until(toDateTime, ChronoUnit.MINUTES); +// tempDateTime = tempDateTime.plusMinutes(minutes); +// case SECONDS: +// seconds = tempDateTime.until(toDateTime, ChronoUnit.SECONDS); +// +// } +// +// System.out.println( +// days + " 天 " + +// hours + " 小时 " + +// minutes + " 分 " + +// seconds + " 秒."); +// } +// +// public static void main(String[] args) { +// long minutes = 62; +// String result = convertMinutesToUnits(minutes, ChronoUnit.DAYS); +// System.out.println(result); +// } +// +// +// public static String convertMinutesToUnits(long minutes1, ChronoUnit maxUnit) { +// long min = minutes1; +// long days = 0; +// long hours = 0; +// long minutes = 0; +// long secound = 0; +// long millis = 0; +// switch (maxUnit) { +// case DAYS: +// days = min / 1440; +// min = min % 1440; +// case HOURS: +// hours = min / 60; +// min = min % 60; +// case MINUTES: +// minutes = min / 1; +// break; +// case SECONDS: +// secound = min * 60; +// break; +// case MILLIS: +// millis = min * 6000; +// } +// String reult = days + " 天 " + +// hours + " 小时 " + +// minutes + " 分 " + +// secound + " 秒 " + +// millis + " 毫秒 "; +// return reult; +// } +// +// +//} diff --git a/jna/src/main/java/com/wyl/jna/Point.java b/jna/src/main/java/com/wyl/jna/Point.java new file mode 100644 index 0000000..4cc1f1f --- /dev/null +++ b/jna/src/main/java/com/wyl/jna/Point.java @@ -0,0 +1,20 @@ +package com.wyl.jna; + +import com.sun.jna.Structure; + +import java.util.Arrays; +import java.util.List; + +// 映射C的Point结构体 +public class Point extends Structure { + public int x; + + // 定义结构体中字段的顺序 + @Override + protected List getFieldOrder() { + return Arrays.asList("x"); + } + + public static class ByValue extends Point implements Structure.ByValue { + } +} diff --git a/jna/src/main/java/com/wyl/jna/Structure2Test.java b/jna/src/main/java/com/wyl/jna/Structure2Test.java new file mode 100644 index 0000000..dd238ea --- /dev/null +++ b/jna/src/main/java/com/wyl/jna/Structure2Test.java @@ -0,0 +1,37 @@ +package com.wyl.jna; + +import com.sun.jna.FunctionMapper; +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.NativeLibrary; +import com.sun.jna.win32.StdCallFunctionMapper; + +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Method; +import java.util.Collections; + +public class Structure2Test { + public interface StructureLib1 extends Library { + StructureLib1 INSTANCE = Native.load("wyltest123", StructureLib1.class); + + Point.ByValue getStructTest11(); + } + + public static void main(String[] args) throws UnsupportedEncodingException { + System.setProperty("jna.debug_load", "true"); + System.setProperty("jna.debug_load.jna", "true"); + System.setProperty("jna.library.path", "D:\\wyl\\JavaBasiceDemo\\jna\\src\\main\\resources"); + System.setProperty("jna.encoding", "UTF-8"); + for (int i = 0; i < 1000; i++) { + Point.ByValue asd = StructureLib1.INSTANCE.getStructTest11(); + System.out.println(i); + } + } + class MyFunctionMapper extends StdCallFunctionMapper { // 这里可能需要根据平台选择不同的 FunctionMapper 类 + @Override + public String getFunctionName(NativeLibrary library, Method method) { + // 使用默认的映射 + return super.getFunctionName(library, method); + } + } +} diff --git a/jna/src/main/java/com/wyl/jna/StructureTest.java b/jna/src/main/java/com/wyl/jna/StructureTest.java new file mode 100644 index 0000000..8d2b63d --- /dev/null +++ b/jna/src/main/java/com/wyl/jna/StructureTest.java @@ -0,0 +1,95 @@ +package com.wyl.jna; + +import com.sun.jna.Library; +import com.sun.jna.Native; + +public class StructureTest { + public interface StructureLib extends Library { + /** + * 图片裁剪 + * + * @param sourcepath 原图路径 + * @param w 原图宽度 + * @param h 原图高度 + * @param soucepath 目标路径 + * @param issave 是否存储原图 1 存 0 不存 + * @param wellName well编号 + * @param timeString 培养时间 + * @param leftOffset 左边裁剪距离 默认0 + * @param bottomOffset 下边裁剪距离默认0 + * @return java.lang.String null为失败 + * @Date 2023/8/31 + * @Author wangyl + */ + CropPictureInfo findcircles(String sourcepath, int w, int h, String path, String soucepath, int issave, String wellName, String timeString, int leftOffset, int bottomOffset, int imageSize); + + /** + * 图片打分 + * + * @param sourcepath 原图路径 + * @param w 原图宽度 + * @param h 原图高度 + * @param path 评分图片存储的路径 + * @param id 图片ID(垂直电机脉冲) + * @param leftOffset 左边裁剪距离(可不传,默认为0) + * @param bottomOffset 下边裁剪距离(可不传,默认为0) + * @return com.wyl.jna.CropPictureInfo.ByValue + * @Date 2023/9/5 + * @Author wangyl + */ + CropPictureInfo getscore(String sourcepath, int w, int h, String path, int id, int leftOffset, int bottomOffset); + + } + + public static void main(String[] args) { + StructureLib instance = Native.load("JavaImageDLL", StructureLib.class); +// System.setProperty("jna.debug_load", "true"); +// System.setProperty("jna.debug_load.jna", "true"); + System.setProperty("jna.library.path", "D:\\wyl\\JavaBasiceDemo\\jna\\src\\main\\resources"); + long l = System.currentTimeMillis(); + for (int i = 1; i < 4; i++) { + System.out.println("-----"); + String picturePant = "C:\\Users\\95981\\Desktop\\1\\" + i + ".jpg"; + String tagPath = "C:\\Users\\95981\\Desktop\\1\\test\\" + i + ".jpg"; + findcircles(picturePant, tagPath, instance); +// getscore(picturePant, tagPath,instance); + System.out.println("-----"); + } + System.out.println(System.currentTimeMillis() - l); + } + + public static void getscore(String picturePant, String tagPath, StructureLib instance) { + CropPictureInfo well1 = instance.getscore(picturePant, 2392, 1744, tagPath, 123, 0, 0); + double score = well1.score; + String fileName = well1.fileName; + int radius = well1.radius; + int success = well1.success; + System.out.println("名字" + fileName); + System.out.println("分数" + score); + System.out.println("半径" + radius); + System.out.println("成功" + success); + } + + public static void findcircles(String picturePant, String tagPath, StructureLib instance) { + CropPictureInfo well1 = instance.findcircles(picturePant, 2392, 1744, tagPath, "", 0, "well1", "2H22M", 0, 0, 455); + double score = well1.score; + String fileName = well1.fileName; + int radius = well1.radius; + int success = well1.success; + System.out.println("名字" + fileName); + System.out.println("分数" + score); + System.out.println("半径" + radius); + System.out.println("成功" + success); + } + +} + + +// System.setProperty("file.encoding", "UTF-16"); +// String encoding = Charset.defaultCharset().name(); +// System.out.println("当前字符编码是:" + encoding); +// String fileEncoding = System.getProperty("file.encoding"); +// System.out.println("默认文件编码是:" + fileEncoding); +// System.setProperty("jna.debug_load", "true"); +// System.setProperty("jna.debug_load.jna", "true"); +// System.out.println("长度:" + length); \ No newline at end of file diff --git a/jna/src/main/java/com/wyl/jna/UsageSystem.java b/jna/src/main/java/com/wyl/jna/UsageSystem.java index 7f2b833..2aedd81 100644 --- a/jna/src/main/java/com/wyl/jna/UsageSystem.java +++ b/jna/src/main/java/com/wyl/jna/UsageSystem.java @@ -20,7 +20,10 @@ public class UsageSystem { } public static void main(String[] args) { - CLibrary.INSTANCE.printf("Hello, World\n"); + CLibrary.INSTANCE.printf("你好\n"); + args = new String[2]; + args[0] = "不好"; + args[1] = "好不好"; for (int i = 0; i < args.length; i++) { CLibrary.INSTANCE.printf("Argument %d: %s\n", i, args[i]); } diff --git a/jna/src/main/java/com/wyl/jna/bmp_data.java b/jna/src/main/java/com/wyl/jna/bmp_data.java new file mode 100644 index 0000000..ee731e0 --- /dev/null +++ b/jna/src/main/java/com/wyl/jna/bmp_data.java @@ -0,0 +1,20 @@ +package com.wyl.jna; + +import com.sun.jna.Structure; + +import java.util.Arrays; +import java.util.List; + +public class bmp_data extends Structure { + public int diam; + public int width; + public String message; + public static class ByValue extends bmp_data implements Structure.ByValue { + } + + + @Override + protected List getFieldOrder() { + return Arrays.asList(new String[]{"diam", "width", "message"}); + } +} \ No newline at end of file diff --git a/jna/src/main/java/com/wyl/jna/intData.java b/jna/src/main/java/com/wyl/jna/intData.java new file mode 100644 index 0000000..a3877e2 --- /dev/null +++ b/jna/src/main/java/com/wyl/jna/intData.java @@ -0,0 +1,19 @@ +package com.wyl.jna; + +import com.sun.jna.Structure; + +import java.util.Arrays; +import java.util.List; + +public class intData extends Structure { + public Integer x; + public Integer y; + + public static class ByValue extends intData implements Structure.ByValue { + } + + @Override + protected List getFieldOrder() { + return Arrays.asList(new String[]{"x", "y"}); + } +} \ No newline at end of file diff --git a/jna/src/main/resources/libwyltest123.dll b/jna/src/main/resources/libwyltest123.dll new file mode 100644 index 0000000..8953666 Binary files /dev/null and b/jna/src/main/resources/libwyltest123.dll differ diff --git a/jni/pom.xml b/jni/pom.xml new file mode 100644 index 0000000..1f4ddba --- /dev/null +++ b/jni/pom.xml @@ -0,0 +1,19 @@ + + + + JavaBasiceDemo + com.wyl.example + 1.0-SNAPSHOT + + 4.0.0 + + jni + + + 11 + 11 + + + \ No newline at end of file diff --git a/jni/src/main/java/com/wyl/jni/JniTest.java b/jni/src/main/java/com/wyl/jni/JniTest.java new file mode 100644 index 0000000..946cf70 --- /dev/null +++ b/jni/src/main/java/com/wyl/jni/JniTest.java @@ -0,0 +1,15 @@ +package com.wyl.jni; + +import com.wyl.jni.entity.CropPictureInfoC; + +public class JniTest { + static { + System.loadLibrary("hello"); // Load native library at runtime + // hello.dll (Windows) or libhello.so (Unixes) + } + + public static native CropPictureInfoC findcircles(String sourcepath, int w, int h, String path, String soucepath, int issave, String wellName, String timeString, int leftOffset, int bottomOffset, int imageSize, String logpath); + + public static native CropPictureInfoC getscore(String sourcepath, int w, int h, String path, int id, int leftOffset, int bottomOffset); + +} diff --git a/jni/src/main/java/com/wyl/jni/entity/CropPictureInfoC.java b/jni/src/main/java/com/wyl/jni/entity/CropPictureInfoC.java new file mode 100644 index 0000000..6b80608 --- /dev/null +++ b/jni/src/main/java/com/wyl/jni/entity/CropPictureInfoC.java @@ -0,0 +1,58 @@ +package com.wyl.jni.entity; + +/** + * @description: 图片剪裁结果 C对应 + * @author: wangyl + * @date: 2023/6/2 + */ +public class CropPictureInfoC { + + /** + * 剪裁成功 1 成功 0 失败 + */ + public int success; + /** + * 图片分数 -1为null + */ + public double score; + /** + * 图片名称 + */ + public String fileName; + /** + * 半径 -1 为null + */ + public int radius; + + public int getSuccess() { + return success; + } + + public void setSuccess(int success) { + this.success = success; + } + + public double getScore() { + return score; + } + + public void setScore(double score) { + this.score = score; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public int getRadius() { + return radius; + } + + public void setRadius(int radius) { + this.radius = radius; + } +} diff --git a/jnr/pom.xml b/jnr/pom.xml new file mode 100644 index 0000000..e106925 --- /dev/null +++ b/jnr/pom.xml @@ -0,0 +1,26 @@ + + + + JavaBasiceDemo + com.wyl.example + 1.0-SNAPSHOT + + 4.0.0 + + jnr + + + 11 + 11 + + + + com.github.jnr + jnr-ffi + 2.2.15 + + + + \ No newline at end of file diff --git a/jnr/src/main/java/com/wyl/jnr/CropPictureInfo.java b/jnr/src/main/java/com/wyl/jnr/CropPictureInfo.java new file mode 100644 index 0000000..6e06424 --- /dev/null +++ b/jnr/src/main/java/com/wyl/jnr/CropPictureInfo.java @@ -0,0 +1,39 @@ +package com.wyl.jnr; + +import jnr.ffi.Runtime; +import jnr.ffi.Struct; + +/** + * @description: 图片剪裁结果 + * @author: wangyl + * @date: 2023/6/2 + */ +public class CropPictureInfo extends Struct { + + /** + * 剪裁成功 1 成功 0 失败 + */ + public Struct.Signed32 success; + /** + * 图片分数 + */ + public Struct.Double score; + /** + * 图片名称 + */ + public Struct.Pointer fileName; + + /** + * 半径 + */ + public Struct.Signed32 radius; + + /** + * Creates a new {@code Struct}. + * + * @param runtime The current runtime. + */ + public CropPictureInfo(Runtime runtime) { + super(runtime); + } +} diff --git a/jnr/src/main/java/com/wyl/jnr/UsageSystem.java b/jnr/src/main/java/com/wyl/jnr/UsageSystem.java new file mode 100644 index 0000000..aa72be6 --- /dev/null +++ b/jnr/src/main/java/com/wyl/jnr/UsageSystem.java @@ -0,0 +1,60 @@ +package com.wyl.jnr; + +import jnr.ffi.LibraryLoader; + +/** + * @description: 调用系统库 + * @author: wangyl + * @date: 2023/6/27 + */ +public class UsageSystem { + + public interface StructureLib { + /** + * 图片裁剪 + * + * @param sourcepath 原图路径 + * @param w 原图宽度 + * @param h 原图高度 + * @param soucepath 目标路径 + * @param issave 是否存储原图 1 存 0 不存 + * @param wellName well编号 + * @param timeString 培养时间 + * @param leftOffset 左边裁剪距离 默认0 + * @param bottomOffset 下边裁剪距离默认0 + * @return java.lang.String null为失败 + * @Date 2023/8/31 + * @Author wangyl + */ + CropPictureInfo findcircles(String sourcepath, int w, int h, String path, String soucepath, int issave, String wellName, String timeString, int leftOffset, int bottomOffset, int imageSize); + + /** + * 图片打分 + * + * @param sourcepath 原图路径 + * @param w 原图宽度 + * @param h 原图高度 + * @param path 评分图片存储的路径 + * @param id 图片ID(垂直电机脉冲) + * @param leftOffset 左边裁剪距离(可不传,默认为0) + * @param bottomOffset 下边裁剪距离(可不传,默认为0) + * @return com.wyl.jna.CropPictureInfo.ByValue + * @Date 2023/9/5 + * @Author wangyl + */ + CropPictureInfo getscore(String sourcepath, int w, int h, String path, int id, int leftOffset, int bottomOffset); + + } + + public static void main(String[] args) { + try { + System.setProperty("jnr.ffi.library.path", "D:\\wyl\\JavaBasiceDemo\\jnr\\src\\main\\resources"); + StructureLib libc = LibraryLoader.create(StructureLib.class).load("JavaImageDLL"); + CropPictureInfo well1 = libc.findcircles("C:\\Users\\95981\\Desktop\\1\\1.jpg", 2592, 1944, "C:\\Users\\95981\\Desktop\\1\\test\\1.jpg", "C:\\Users\\95981\\Desktop\\1\\1.jpg", 0, "well1", "2H22M", 0, 0, 455); + System.out.println(well1); + } catch (Exception e) { + e.printStackTrace(); + } + + } +} \ No newline at end of file diff --git a/jnr/src/main/resources/JavaImageDLL.dll b/jnr/src/main/resources/JavaImageDLL.dll new file mode 100644 index 0000000..a9917f6 Binary files /dev/null and b/jnr/src/main/resources/JavaImageDLL.dll differ diff --git a/jnr/src/main/resources/opencv_world3416.dll b/jnr/src/main/resources/opencv_world3416.dll new file mode 100644 index 0000000..dd96802 Binary files /dev/null and b/jnr/src/main/resources/opencv_world3416.dll differ diff --git a/kafka/src/main/java/com/wyl/kafka/producers/KafkaProducerSend.java b/kafka/src/main/java/com/wyl/kafka/producers/KafkaProducerSend.java index 922d123..ea68070 100644 --- a/kafka/src/main/java/com/wyl/kafka/producers/KafkaProducerSend.java +++ b/kafka/src/main/java/com/wyl/kafka/producers/KafkaProducerSend.java @@ -1,79 +1,81 @@ -package com.wyl.kafka.producers; - -import lombok.extern.slf4j.Slf4j; -import org.apache.kafka.clients.producer.Producer; -import org.apache.kafka.clients.producer.ProducerRecord; - -/** - * kafka发送消息测试 - * @ClassName: KafkaProducerSend - * @Date: 2022/4/12 15:18 - * @author wangyl - * @version V1.0 - */ -@Slf4j -public class KafkaProducerSend { - /** - * 生产者发送回调消息 - * @param kafkaProducerNormal - * @param topic - * @param message - * @return void - * @Date 2022/4/12 17:43 - * @Author wangyl - * @Version V1.0 - */ - public static void sendMessageAndCallback(Producer kafkaProducerNormal, String topic, String message) { - ProducerRecord messageObj = new ProducerRecord<>(topic, message); - kafkaProducerNormal.send(messageObj, (metadata, exception) -> { - if (null != exception) { - log.error("kafka 信息推送失败[" + messageObj + "]", exception); - } - log.info("消息发送成功[{}]", messageObj); - }); - kafkaProducerNormal.close(); - } - - /** - * 发送事务消息 - * @param kafkaProducerTransactional - * @param topic - * @param message - * @return void - * @Date 2022/4/12 17:42 - * @Author wangyl - * @Version V1.0 - */ - public static void sendMessageTransactional(Producer kafkaProducerTransactional, String topic, String message) { - /** - * 初始化事务 - */ - kafkaProducerTransactional.initTransactions(); - /** - * 开启事务 - */ - kafkaProducerTransactional.beginTransaction(); - log.info("开始发送事务消息"); - try { - for (int i = 0; i < 10; i++){ - ProducerRecord messageObj = new ProducerRecord<>(topic, message + i); - kafkaProducerTransactional.send(messageObj, (metadata, exception) -> { - if (null != exception) { - log.error("kafka 信息推送失败[" + messageObj + "]", exception); - } - }); - } - log.info("消息发送成功"); - kafkaProducerTransactional.commitTransaction(); - } - catch (Exception e) { - log.error("kafka 事务消息推送失败", e); - kafkaProducerTransactional.abortTransaction(); - } - finally { - kafkaProducerTransactional.close(); - } - - } - -} +package com.wyl.kafka.producers; + +import lombok.extern.slf4j.Slf4j; +import org.apache.kafka.clients.producer.Producer; +import org.apache.kafka.clients.producer.ProducerRecord; + +import java.util.Arrays; + +/** + * kafka发送消息测试 + * @ClassName: KafkaProducerSend + * @Date: 2022/4/12 15:18 + * @author wangyl + * @version V1.0 + */ +@Slf4j +public class KafkaProducerSend { + /** + * 生产者发送回调消息 + * @param kafkaProducerNormal + * @param topic + * @param message + * @return void + * @Date 2022/4/12 17:43 + * @Author wangyl + * @Version V1.0 + */ + public static void sendMessageAndCallback(Producer kafkaProducerNormal, String topic, String message) { + ProducerRecord messageObj = new ProducerRecord<>(topic, message); + kafkaProducerNormal.send(messageObj, (metadata, exception) -> { + if (null != exception) { + log.error("kafka 信息推送失败[" + messageObj + "]", exception); + } + log.info("消息发送成功[{}]", messageObj); + }); + kafkaProducerNormal.close(); + } + + /** + * 发送事务消息 + * @param kafkaProducerTransactional + * @param topic + * @param message + * @return void + * @Date 2022/4/12 17:42 + * @Author wangyl + * @Version V1.0 + */ + public static void sendMessageTransactional(Producer kafkaProducerTransactional, String topic, String message) { + /** + * 初始化事务 + */ + kafkaProducerTransactional.initTransactions(); + /** + * 开启事务 + */ + kafkaProducerTransactional.beginTransaction(); + log.info("开始发送事务消息"); + try { + for (int i = 0; i < 10; i++){ + ProducerRecord messageObj = new ProducerRecord<>(topic, message + i); + kafkaProducerTransactional.send(messageObj, (metadata, exception) -> { + if (null != exception) { + log.error("kafka 信息推送失败[" + messageObj + "]", exception); + } + }); + } + log.info("消息发送成功"); + kafkaProducerTransactional.commitTransaction(); + } + catch (Exception e) { + log.error("kafka 事务消息推送失败", e); + kafkaProducerTransactional.abortTransaction(); + } + finally { + kafkaProducerTransactional.close(); + } + + } + +} diff --git a/kafka/src/test/java/com/wyl/kafka/test/ImageDataDTO.java b/kafka/src/test/java/com/wyl/kafka/test/ImageDataDTO.java new file mode 100644 index 0000000..94d6cc5 --- /dev/null +++ b/kafka/src/test/java/com/wyl/kafka/test/ImageDataDTO.java @@ -0,0 +1,3234 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: ImageDTO.proto + +package com.wyl.kafka.test; + +public final class ImageDataDTO { + private ImageDataDTO() { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + + public interface ImageDTOOrBuilder extends + // @@protoc_insertion_point(interface_extends:ivf_tl_Entity.DTO.ImageDTO) + com.google.protobuf.MessageOrBuilder { + + /** + *
+         * *
+         * tl设备编号
+         * 
+ * + * string tlSn = 1; + * + * @return The tlSn. + */ + String getTlSn(); + + /** + *
+         * *
+         * tl设备编号
+         * 
+ * + * string tlSn = 1; + * + * @return The bytes for tlSn. + */ + com.google.protobuf.ByteString + getTlSnBytes(); + + /** + *
+         * *
+         * 仓室编号:1-10
+         * 
+ * + * int32 houseSn = 2; + * + * @return The houseSn. + */ + int getHouseSn(); + + /** + *
+         * *
+         * well编号 1-16
+         * 
+ * + * int32 wellSn = 3; + * + * @return The wellSn. + */ + int getWellSn(); + + /** + *
+         * *
+         * ccd编号
+         * 
+ * + * string ccdSn = 4; + * + * @return The ccdSn. + */ + String getCcdSn(); + + /** + *
+         * *
+         * ccd编号
+         * 
+ * + * string ccdSn = 4; + * + * @return The bytes for ccdSn. + */ + com.google.protobuf.ByteString + getCcdSnBytes(); + + /** + *
+         * *
+         * 原图名字
+         * 
+ * + * string sourceImageName = 5; + * + * @return The sourceImageName. + */ + String getSourceImageName(); + + /** + *
+         * *
+         * 原图名字
+         * 
+ * + * string sourceImageName = 5; + * + * @return The bytes for sourceImageName. + */ + com.google.protobuf.ByteString + getSourceImageNameBytes(); + + /** + *
+         * *
+         * 原图的本地路径(不是上传后的保存路径)
+         * 
+ * + * string sourceImagePath = 6; + * + * @return The sourceImagePath. + */ + String getSourceImagePath(); + + /** + *
+         * *
+         * 原图的本地路径(不是上传后的保存路径)
+         * 
+ * + * string sourceImagePath = 6; + * + * @return The bytes for sourceImagePath. + */ + com.google.protobuf.ByteString + getSourceImagePathBytes(); + + /** + *
+         * *
+         * 原图宽
+         * 
+ * + * int32 sourceImageWidth = 7; + * + * @return The sourceImageWidth. + */ + int getSourceImageWidth(); + + /** + *
+         * *
+         * 原图高
+         * 
+ * + * int32 sourceImageHeight = 8; + * + * @return The sourceImageHeight. + */ + int getSourceImageHeight(); + + /** + *
+         * *
+         * 设备拍摄时间 格式2020-10-10 00:00:00
+         * 
+ * + * string imageTime = 9; + * + * @return The imageTime. + */ + String getImageTime(); + + /** + *
+         * *
+         * 设备拍摄时间 格式2020-10-10 00:00:00
+         * 
+ * + * string imageTime = 9; + * + * @return The bytes for imageTime. + */ + com.google.protobuf.ByteString + getImageTimeBytes(); + + /** + *
+         * *
+         * 受精时间 格式2020-10-10 00:00:00
+         * 
+ * + * string fertilizationTime = 10; + * + * @return The fertilizationTime. + */ + String getFertilizationTime(); + + /** + *
+         * *
+         * 受精时间 格式2020-10-10 00:00:00
+         * 
+ * + * string fertilizationTime = 10; + * + * @return The bytes for fertilizationTime. + */ + com.google.protobuf.ByteString + getFertilizationTimeBytes(); + + /** + *
+         * *
+         * 对焦还是ccd拍照 1 自动对焦 0 CCD拍照
+         * 
+ * + * int32 photographType = 11; + * + * @return The photographType. + */ + int getPhotographType(); + + /** + *
+         * *
+         * 拍照总层数
+         * 
+ * + * int32 totalLayer = 12; + * + * @return The totalLayer. + */ + int getTotalLayer(); + + /** + *
+         * *
+         * 图片层
+         * 
+ * + * int32 pictureLayer = 13; + * + * @return The pictureLayer. + */ + int getPictureLayer(); + + /** + *
+         * *
+         * 垂直电机位置
+         * 
+ * + * int32 shootingPosition = 14; + * + * @return The shootingPosition. + */ + int getShootingPosition(); + + /** + *
+         * *
+         * 是否是最清晰的(CCD拍照才有)0不是 1最清晰
+         * 
+ * + * int32 clearest = 15; + * + * @return The clearest. + */ + int getClearest(); + + /** + *
+         * *
+         * 拍照结束标记 1 结束 0 未结束 (结束后开始更新对焦起点,ccd拍照结束开始合成视频)
+         * 
+ * + * int32 end = 16; + * + * @return The end. + */ + int getEnd(); + + /** + *
+         * *
+         * 培养记录id
+         * 
+ * + * uint64 embryoCultureRecordId = 17; + * + * @return The embryoCultureRecordId. + */ + long getEmbryoCultureRecordId(); + + /** + *
+         * *
+         * 胚胎id
+         * 
+ * + * uint64 embryoId = 18; + * + * @return The embryoId. + */ + long getEmbryoId(); + + /** + *
+         * *
+         * 图片数据
+         * 
+ * + * bytes imageData = 19; + * + * @return The imageData. + */ + com.google.protobuf.ByteString getImageData(); + + /** + *
+         * *
+         * 水平电机位置
+         * 
+ * + * int32 horizontalPosition = 20; + * + * @return The horizontalPosition. + */ + int getHorizontalPosition(); + } + + /** + * Protobuf type {@code ivf_tl_Entity.DTO.ImageDTO} + */ + public static final class ImageDTO extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:ivf_tl_Entity.DTO.ImageDTO) + ImageDTOOrBuilder { + private static final long serialVersionUID = 0L; + + // Use ImageDTO.newBuilder() to construct. + private ImageDTO(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ImageDTO() { + tlSn_ = ""; + ccdSn_ = ""; + sourceImageName_ = ""; + sourceImagePath_ = ""; + imageTime_ = ""; + fertilizationTime_ = ""; + imageData_ = com.google.protobuf.ByteString.EMPTY; + } + + @Override + @SuppressWarnings({"unused"}) + protected Object newInstance( + UnusedPrivateParameter unused) { + return new ImageDTO(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return ImageDataDTO.internal_static_ivf_tl_Entity_DTO_ImageDTO_descriptor; + } + + @Override + protected FieldAccessorTable + internalGetFieldAccessorTable() { + return ImageDataDTO.internal_static_ivf_tl_Entity_DTO_ImageDTO_fieldAccessorTable + .ensureFieldAccessorsInitialized( + ImageDTO.class, Builder.class); + } + + public static final int TLSN_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private volatile Object tlSn_ = ""; + + /** + *
+         * *
+         * tl设备编号
+         * 
+ * + * string tlSn = 1; + * + * @return The tlSn. + */ + @Override + public String getTlSn() { + Object ref = tlSn_; + if (ref instanceof String) { + return (String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + tlSn_ = s; + return s; + } + } + + /** + *
+         * *
+         * tl设备编号
+         * 
+ * + * string tlSn = 1; + * + * @return The bytes for tlSn. + */ + @Override + public com.google.protobuf.ByteString + getTlSnBytes() { + Object ref = tlSn_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (String) ref); + tlSn_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int HOUSESN_FIELD_NUMBER = 2; + private int houseSn_ = 0; + + /** + *
+         * *
+         * 仓室编号:1-10
+         * 
+ * + * int32 houseSn = 2; + * + * @return The houseSn. + */ + @Override + public int getHouseSn() { + return houseSn_; + } + + public static final int WELLSN_FIELD_NUMBER = 3; + private int wellSn_ = 0; + + /** + *
+         * *
+         * well编号 1-16
+         * 
+ * + * int32 wellSn = 3; + * + * @return The wellSn. + */ + @Override + public int getWellSn() { + return wellSn_; + } + + public static final int CCDSN_FIELD_NUMBER = 4; + @SuppressWarnings("serial") + private volatile Object ccdSn_ = ""; + + /** + *
+         * *
+         * ccd编号
+         * 
+ * + * string ccdSn = 4; + * + * @return The ccdSn. + */ + @Override + public String getCcdSn() { + Object ref = ccdSn_; + if (ref instanceof String) { + return (String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + ccdSn_ = s; + return s; + } + } + + /** + *
+         * *
+         * ccd编号
+         * 
+ * + * string ccdSn = 4; + * + * @return The bytes for ccdSn. + */ + @Override + public com.google.protobuf.ByteString + getCcdSnBytes() { + Object ref = ccdSn_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (String) ref); + ccdSn_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SOURCEIMAGENAME_FIELD_NUMBER = 5; + @SuppressWarnings("serial") + private volatile Object sourceImageName_ = ""; + + /** + *
+         * *
+         * 原图名字
+         * 
+ * + * string sourceImageName = 5; + * + * @return The sourceImageName. + */ + @Override + public String getSourceImageName() { + Object ref = sourceImageName_; + if (ref instanceof String) { + return (String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + sourceImageName_ = s; + return s; + } + } + + /** + *
+         * *
+         * 原图名字
+         * 
+ * + * string sourceImageName = 5; + * + * @return The bytes for sourceImageName. + */ + @Override + public com.google.protobuf.ByteString + getSourceImageNameBytes() { + Object ref = sourceImageName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (String) ref); + sourceImageName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SOURCEIMAGEPATH_FIELD_NUMBER = 6; + @SuppressWarnings("serial") + private volatile Object sourceImagePath_ = ""; + + /** + *
+         * *
+         * 原图的本地路径(不是上传后的保存路径)
+         * 
+ * + * string sourceImagePath = 6; + * + * @return The sourceImagePath. + */ + @Override + public String getSourceImagePath() { + Object ref = sourceImagePath_; + if (ref instanceof String) { + return (String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + sourceImagePath_ = s; + return s; + } + } + + /** + *
+         * *
+         * 原图的本地路径(不是上传后的保存路径)
+         * 
+ * + * string sourceImagePath = 6; + * + * @return The bytes for sourceImagePath. + */ + @Override + public com.google.protobuf.ByteString + getSourceImagePathBytes() { + Object ref = sourceImagePath_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (String) ref); + sourceImagePath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SOURCEIMAGEWIDTH_FIELD_NUMBER = 7; + private int sourceImageWidth_ = 0; + + /** + *
+         * *
+         * 原图宽
+         * 
+ * + * int32 sourceImageWidth = 7; + * + * @return The sourceImageWidth. + */ + @Override + public int getSourceImageWidth() { + return sourceImageWidth_; + } + + public static final int SOURCEIMAGEHEIGHT_FIELD_NUMBER = 8; + private int sourceImageHeight_ = 0; + + /** + *
+         * *
+         * 原图高
+         * 
+ * + * int32 sourceImageHeight = 8; + * + * @return The sourceImageHeight. + */ + @Override + public int getSourceImageHeight() { + return sourceImageHeight_; + } + + public static final int IMAGETIME_FIELD_NUMBER = 9; + @SuppressWarnings("serial") + private volatile Object imageTime_ = ""; + + /** + *
+         * *
+         * 设备拍摄时间 格式2020-10-10 00:00:00
+         * 
+ * + * string imageTime = 9; + * + * @return The imageTime. + */ + @Override + public String getImageTime() { + Object ref = imageTime_; + if (ref instanceof String) { + return (String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + imageTime_ = s; + return s; + } + } + + /** + *
+         * *
+         * 设备拍摄时间 格式2020-10-10 00:00:00
+         * 
+ * + * string imageTime = 9; + * + * @return The bytes for imageTime. + */ + @Override + public com.google.protobuf.ByteString + getImageTimeBytes() { + Object ref = imageTime_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (String) ref); + imageTime_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int FERTILIZATIONTIME_FIELD_NUMBER = 10; + @SuppressWarnings("serial") + private volatile Object fertilizationTime_ = ""; + + /** + *
+         * *
+         * 受精时间 格式2020-10-10 00:00:00
+         * 
+ * + * string fertilizationTime = 10; + * + * @return The fertilizationTime. + */ + @Override + public String getFertilizationTime() { + Object ref = fertilizationTime_; + if (ref instanceof String) { + return (String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + fertilizationTime_ = s; + return s; + } + } + + /** + *
+         * *
+         * 受精时间 格式2020-10-10 00:00:00
+         * 
+ * + * string fertilizationTime = 10; + * + * @return The bytes for fertilizationTime. + */ + @Override + public com.google.protobuf.ByteString + getFertilizationTimeBytes() { + Object ref = fertilizationTime_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (String) ref); + fertilizationTime_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int PHOTOGRAPHTYPE_FIELD_NUMBER = 11; + private int photographType_ = 0; + + /** + *
+         * *
+         * 对焦还是ccd拍照 1 自动对焦 0 CCD拍照
+         * 
+ * + * int32 photographType = 11; + * + * @return The photographType. + */ + @Override + public int getPhotographType() { + return photographType_; + } + + public static final int TOTALLAYER_FIELD_NUMBER = 12; + private int totalLayer_ = 0; + + /** + *
+         * *
+         * 拍照总层数
+         * 
+ * + * int32 totalLayer = 12; + * + * @return The totalLayer. + */ + @Override + public int getTotalLayer() { + return totalLayer_; + } + + public static final int PICTURELAYER_FIELD_NUMBER = 13; + private int pictureLayer_ = 0; + + /** + *
+         * *
+         * 图片层
+         * 
+ * + * int32 pictureLayer = 13; + * + * @return The pictureLayer. + */ + @Override + public int getPictureLayer() { + return pictureLayer_; + } + + public static final int SHOOTINGPOSITION_FIELD_NUMBER = 14; + private int shootingPosition_ = 0; + + /** + *
+         * *
+         * 垂直电机位置
+         * 
+ * + * int32 shootingPosition = 14; + * + * @return The shootingPosition. + */ + @Override + public int getShootingPosition() { + return shootingPosition_; + } + + public static final int CLEAREST_FIELD_NUMBER = 15; + private int clearest_ = 0; + + /** + *
+         * *
+         * 是否是最清晰的(CCD拍照才有)0不是 1最清晰
+         * 
+ * + * int32 clearest = 15; + * + * @return The clearest. + */ + @Override + public int getClearest() { + return clearest_; + } + + public static final int END_FIELD_NUMBER = 16; + private int end_ = 0; + + /** + *
+         * *
+         * 拍照结束标记 1 结束 0 未结束 (结束后开始更新对焦起点,ccd拍照结束开始合成视频)
+         * 
+ * + * int32 end = 16; + * + * @return The end. + */ + @Override + public int getEnd() { + return end_; + } + + public static final int EMBRYOCULTURERECORDID_FIELD_NUMBER = 17; + private long embryoCultureRecordId_ = 0L; + + /** + *
+         * *
+         * 培养记录id
+         * 
+ * + * uint64 embryoCultureRecordId = 17; + * + * @return The embryoCultureRecordId. + */ + @Override + public long getEmbryoCultureRecordId() { + return embryoCultureRecordId_; + } + + public static final int EMBRYOID_FIELD_NUMBER = 18; + private long embryoId_ = 0L; + + /** + *
+         * *
+         * 胚胎id
+         * 
+ * + * uint64 embryoId = 18; + * + * @return The embryoId. + */ + @Override + public long getEmbryoId() { + return embryoId_; + } + + public static final int IMAGEDATA_FIELD_NUMBER = 19; + private com.google.protobuf.ByteString imageData_ = com.google.protobuf.ByteString.EMPTY; + + /** + *
+         * *
+         * 图片数据
+         * 
+ * + * bytes imageData = 19; + * + * @return The imageData. + */ + @Override + public com.google.protobuf.ByteString getImageData() { + return imageData_; + } + + public static final int HORIZONTALPOSITION_FIELD_NUMBER = 20; + private int horizontalPosition_ = 0; + + /** + *
+         * *
+         * 水平电机位置
+         * 
+ * + * int32 horizontalPosition = 20; + * + * @return The horizontalPosition. + */ + @Override + public int getHorizontalPosition() { + return horizontalPosition_; + } + + private byte memoizedIsInitialized = -1; + + @Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tlSn_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, tlSn_); + } + if (houseSn_ != 0) { + output.writeInt32(2, houseSn_); + } + if (wellSn_ != 0) { + output.writeInt32(3, wellSn_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ccdSn_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, ccdSn_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceImageName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, sourceImageName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceImagePath_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 6, sourceImagePath_); + } + if (sourceImageWidth_ != 0) { + output.writeInt32(7, sourceImageWidth_); + } + if (sourceImageHeight_ != 0) { + output.writeInt32(8, sourceImageHeight_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(imageTime_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 9, imageTime_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fertilizationTime_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 10, fertilizationTime_); + } + if (photographType_ != 0) { + output.writeInt32(11, photographType_); + } + if (totalLayer_ != 0) { + output.writeInt32(12, totalLayer_); + } + if (pictureLayer_ != 0) { + output.writeInt32(13, pictureLayer_); + } + if (shootingPosition_ != 0) { + output.writeInt32(14, shootingPosition_); + } + if (clearest_ != 0) { + output.writeInt32(15, clearest_); + } + if (end_ != 0) { + output.writeInt32(16, end_); + } + if (embryoCultureRecordId_ != 0L) { + output.writeUInt64(17, embryoCultureRecordId_); + } + if (embryoId_ != 0L) { + output.writeUInt64(18, embryoId_); + } + if (!imageData_.isEmpty()) { + output.writeBytes(19, imageData_); + } + if (horizontalPosition_ != 0) { + output.writeInt32(20, horizontalPosition_); + } + getUnknownFields().writeTo(output); + } + + @Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tlSn_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, tlSn_); + } + if (houseSn_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(2, houseSn_); + } + if (wellSn_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(3, wellSn_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ccdSn_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, ccdSn_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceImageName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, sourceImageName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceImagePath_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, sourceImagePath_); + } + if (sourceImageWidth_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(7, sourceImageWidth_); + } + if (sourceImageHeight_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(8, sourceImageHeight_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(imageTime_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, imageTime_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fertilizationTime_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, fertilizationTime_); + } + if (photographType_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(11, photographType_); + } + if (totalLayer_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(12, totalLayer_); + } + if (pictureLayer_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(13, pictureLayer_); + } + if (shootingPosition_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(14, shootingPosition_); + } + if (clearest_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(15, clearest_); + } + if (end_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(16, end_); + } + if (embryoCultureRecordId_ != 0L) { + size += com.google.protobuf.CodedOutputStream + .computeUInt64Size(17, embryoCultureRecordId_); + } + if (embryoId_ != 0L) { + size += com.google.protobuf.CodedOutputStream + .computeUInt64Size(18, embryoId_); + } + if (!imageData_.isEmpty()) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(19, imageData_); + } + if (horizontalPosition_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(20, horizontalPosition_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @Override + public boolean equals(final Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof ImageDTO)) { + return super.equals(obj); + } + ImageDTO other = (ImageDTO) obj; + + if (!getTlSn() + .equals(other.getTlSn())) return false; + if (getHouseSn() + != other.getHouseSn()) return false; + if (getWellSn() + != other.getWellSn()) return false; + if (!getCcdSn() + .equals(other.getCcdSn())) return false; + if (!getSourceImageName() + .equals(other.getSourceImageName())) return false; + if (!getSourceImagePath() + .equals(other.getSourceImagePath())) return false; + if (getSourceImageWidth() + != other.getSourceImageWidth()) return false; + if (getSourceImageHeight() + != other.getSourceImageHeight()) return false; + if (!getImageTime() + .equals(other.getImageTime())) return false; + if (!getFertilizationTime() + .equals(other.getFertilizationTime())) return false; + if (getPhotographType() + != other.getPhotographType()) return false; + if (getTotalLayer() + != other.getTotalLayer()) return false; + if (getPictureLayer() + != other.getPictureLayer()) return false; + if (getShootingPosition() + != other.getShootingPosition()) return false; + if (getClearest() + != other.getClearest()) return false; + if (getEnd() + != other.getEnd()) return false; + if (getEmbryoCultureRecordId() + != other.getEmbryoCultureRecordId()) return false; + if (getEmbryoId() + != other.getEmbryoId()) return false; + if (!getImageData() + .equals(other.getImageData())) return false; + if (getHorizontalPosition() + != other.getHorizontalPosition()) return false; + return getUnknownFields().equals(other.getUnknownFields()); + } + + @Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + TLSN_FIELD_NUMBER; + hash = (53 * hash) + getTlSn().hashCode(); + hash = (37 * hash) + HOUSESN_FIELD_NUMBER; + hash = (53 * hash) + getHouseSn(); + hash = (37 * hash) + WELLSN_FIELD_NUMBER; + hash = (53 * hash) + getWellSn(); + hash = (37 * hash) + CCDSN_FIELD_NUMBER; + hash = (53 * hash) + getCcdSn().hashCode(); + hash = (37 * hash) + SOURCEIMAGENAME_FIELD_NUMBER; + hash = (53 * hash) + getSourceImageName().hashCode(); + hash = (37 * hash) + SOURCEIMAGEPATH_FIELD_NUMBER; + hash = (53 * hash) + getSourceImagePath().hashCode(); + hash = (37 * hash) + SOURCEIMAGEWIDTH_FIELD_NUMBER; + hash = (53 * hash) + getSourceImageWidth(); + hash = (37 * hash) + SOURCEIMAGEHEIGHT_FIELD_NUMBER; + hash = (53 * hash) + getSourceImageHeight(); + hash = (37 * hash) + IMAGETIME_FIELD_NUMBER; + hash = (53 * hash) + getImageTime().hashCode(); + hash = (37 * hash) + FERTILIZATIONTIME_FIELD_NUMBER; + hash = (53 * hash) + getFertilizationTime().hashCode(); + hash = (37 * hash) + PHOTOGRAPHTYPE_FIELD_NUMBER; + hash = (53 * hash) + getPhotographType(); + hash = (37 * hash) + TOTALLAYER_FIELD_NUMBER; + hash = (53 * hash) + getTotalLayer(); + hash = (37 * hash) + PICTURELAYER_FIELD_NUMBER; + hash = (53 * hash) + getPictureLayer(); + hash = (37 * hash) + SHOOTINGPOSITION_FIELD_NUMBER; + hash = (53 * hash) + getShootingPosition(); + hash = (37 * hash) + CLEAREST_FIELD_NUMBER; + hash = (53 * hash) + getClearest(); + hash = (37 * hash) + END_FIELD_NUMBER; + hash = (53 * hash) + getEnd(); + hash = (37 * hash) + EMBRYOCULTURERECORDID_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getEmbryoCultureRecordId()); + hash = (37 * hash) + EMBRYOID_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getEmbryoId()); + hash = (37 * hash) + IMAGEDATA_FIELD_NUMBER; + hash = (53 * hash) + getImageData().hashCode(); + hash = (37 * hash) + HORIZONTALPOSITION_FIELD_NUMBER; + hash = (53 * hash) + getHorizontalPosition(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static ImageDTO parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static ImageDTO parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static ImageDTO parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static ImageDTO parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static ImageDTO parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static ImageDTO parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static ImageDTO parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + + public static ImageDTO parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static ImageDTO parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + + public static ImageDTO parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + + public static ImageDTO parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + + public static ImageDTO parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(ImageDTO prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @Override + protected Builder newBuilderForType( + BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + + /** + * Protobuf type {@code ivf_tl_Entity.DTO.ImageDTO} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:ivf_tl_Entity.DTO.ImageDTO) + ImageDTOOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return ImageDataDTO.internal_static_ivf_tl_Entity_DTO_ImageDTO_descriptor; + } + + @Override + protected FieldAccessorTable + internalGetFieldAccessorTable() { + return ImageDataDTO.internal_static_ivf_tl_Entity_DTO_ImageDTO_fieldAccessorTable + .ensureFieldAccessorsInitialized( + ImageDTO.class, Builder.class); + } + + // Construct using com.aivfo.data.transmission.entity.dto.ImageDataDTO.ImageDTO.newBuilder() + private Builder() { + + } + + private Builder( + BuilderParent parent) { + super(parent); + + } + + @Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + tlSn_ = ""; + houseSn_ = 0; + wellSn_ = 0; + ccdSn_ = ""; + sourceImageName_ = ""; + sourceImagePath_ = ""; + sourceImageWidth_ = 0; + sourceImageHeight_ = 0; + imageTime_ = ""; + fertilizationTime_ = ""; + photographType_ = 0; + totalLayer_ = 0; + pictureLayer_ = 0; + shootingPosition_ = 0; + clearest_ = 0; + end_ = 0; + embryoCultureRecordId_ = 0L; + embryoId_ = 0L; + imageData_ = com.google.protobuf.ByteString.EMPTY; + horizontalPosition_ = 0; + return this; + } + + @Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return ImageDataDTO.internal_static_ivf_tl_Entity_DTO_ImageDTO_descriptor; + } + + @Override + public ImageDTO getDefaultInstanceForType() { + return ImageDTO.getDefaultInstance(); + } + + @Override + public ImageDTO build() { + ImageDTO result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @Override + public ImageDTO buildPartial() { + ImageDTO result = new ImageDTO(this); + if (bitField0_ != 0) { + buildPartial0(result); + } + onBuilt(); + return result; + } + + private void buildPartial0(ImageDTO result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.tlSn_ = tlSn_; + } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.houseSn_ = houseSn_; + } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.wellSn_ = wellSn_; + } + if (((from_bitField0_ & 0x00000008) != 0)) { + result.ccdSn_ = ccdSn_; + } + if (((from_bitField0_ & 0x00000010) != 0)) { + result.sourceImageName_ = sourceImageName_; + } + if (((from_bitField0_ & 0x00000020) != 0)) { + result.sourceImagePath_ = sourceImagePath_; + } + if (((from_bitField0_ & 0x00000040) != 0)) { + result.sourceImageWidth_ = sourceImageWidth_; + } + if (((from_bitField0_ & 0x00000080) != 0)) { + result.sourceImageHeight_ = sourceImageHeight_; + } + if (((from_bitField0_ & 0x00000100) != 0)) { + result.imageTime_ = imageTime_; + } + if (((from_bitField0_ & 0x00000200) != 0)) { + result.fertilizationTime_ = fertilizationTime_; + } + if (((from_bitField0_ & 0x00000400) != 0)) { + result.photographType_ = photographType_; + } + if (((from_bitField0_ & 0x00000800) != 0)) { + result.totalLayer_ = totalLayer_; + } + if (((from_bitField0_ & 0x00001000) != 0)) { + result.pictureLayer_ = pictureLayer_; + } + if (((from_bitField0_ & 0x00002000) != 0)) { + result.shootingPosition_ = shootingPosition_; + } + if (((from_bitField0_ & 0x00004000) != 0)) { + result.clearest_ = clearest_; + } + if (((from_bitField0_ & 0x00008000) != 0)) { + result.end_ = end_; + } + if (((from_bitField0_ & 0x00010000) != 0)) { + result.embryoCultureRecordId_ = embryoCultureRecordId_; + } + if (((from_bitField0_ & 0x00020000) != 0)) { + result.embryoId_ = embryoId_; + } + if (((from_bitField0_ & 0x00040000) != 0)) { + result.imageData_ = imageData_; + } + if (((from_bitField0_ & 0x00080000) != 0)) { + result.horizontalPosition_ = horizontalPosition_; + } + } + + @Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof ImageDTO) { + return mergeFrom((ImageDTO) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(ImageDTO other) { + if (other == ImageDTO.getDefaultInstance()) + return this; + if (!other.getTlSn().isEmpty()) { + tlSn_ = other.tlSn_; + bitField0_ |= 0x00000001; + onChanged(); + } + if (other.getHouseSn() != 0) { + setHouseSn(other.getHouseSn()); + } + if (other.getWellSn() != 0) { + setWellSn(other.getWellSn()); + } + if (!other.getCcdSn().isEmpty()) { + ccdSn_ = other.ccdSn_; + bitField0_ |= 0x00000008; + onChanged(); + } + if (!other.getSourceImageName().isEmpty()) { + sourceImageName_ = other.sourceImageName_; + bitField0_ |= 0x00000010; + onChanged(); + } + if (!other.getSourceImagePath().isEmpty()) { + sourceImagePath_ = other.sourceImagePath_; + bitField0_ |= 0x00000020; + onChanged(); + } + if (other.getSourceImageWidth() != 0) { + setSourceImageWidth(other.getSourceImageWidth()); + } + if (other.getSourceImageHeight() != 0) { + setSourceImageHeight(other.getSourceImageHeight()); + } + if (!other.getImageTime().isEmpty()) { + imageTime_ = other.imageTime_; + bitField0_ |= 0x00000100; + onChanged(); + } + if (!other.getFertilizationTime().isEmpty()) { + fertilizationTime_ = other.fertilizationTime_; + bitField0_ |= 0x00000200; + onChanged(); + } + if (other.getPhotographType() != 0) { + setPhotographType(other.getPhotographType()); + } + if (other.getTotalLayer() != 0) { + setTotalLayer(other.getTotalLayer()); + } + if (other.getPictureLayer() != 0) { + setPictureLayer(other.getPictureLayer()); + } + if (other.getShootingPosition() != 0) { + setShootingPosition(other.getShootingPosition()); + } + if (other.getClearest() != 0) { + setClearest(other.getClearest()); + } + if (other.getEnd() != 0) { + setEnd(other.getEnd()); + } + if (other.getEmbryoCultureRecordId() != 0L) { + setEmbryoCultureRecordId(other.getEmbryoCultureRecordId()); + } + if (other.getEmbryoId() != 0L) { + setEmbryoId(other.getEmbryoId()); + } + if (other.getImageData() != com.google.protobuf.ByteString.EMPTY) { + setImageData(other.getImageData()); + } + if (other.getHorizontalPosition() != 0) { + setHorizontalPosition(other.getHorizontalPosition()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @Override + public final boolean isInitialized() { + return true; + } + + @Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + tlSn_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + case 16: { + houseSn_ = input.readInt32(); + bitField0_ |= 0x00000002; + break; + } // case 16 + case 24: { + wellSn_ = input.readInt32(); + bitField0_ |= 0x00000004; + break; + } // case 24 + case 34: { + ccdSn_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000008; + break; + } // case 34 + case 42: { + sourceImageName_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000010; + break; + } // case 42 + case 50: { + sourceImagePath_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000020; + break; + } // case 50 + case 56: { + sourceImageWidth_ = input.readInt32(); + bitField0_ |= 0x00000040; + break; + } // case 56 + case 64: { + sourceImageHeight_ = input.readInt32(); + bitField0_ |= 0x00000080; + break; + } // case 64 + case 74: { + imageTime_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000100; + break; + } // case 74 + case 82: { + fertilizationTime_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000200; + break; + } // case 82 + case 88: { + photographType_ = input.readInt32(); + bitField0_ |= 0x00000400; + break; + } // case 88 + case 96: { + totalLayer_ = input.readInt32(); + bitField0_ |= 0x00000800; + break; + } // case 96 + case 104: { + pictureLayer_ = input.readInt32(); + bitField0_ |= 0x00001000; + break; + } // case 104 + case 112: { + shootingPosition_ = input.readInt32(); + bitField0_ |= 0x00002000; + break; + } // case 112 + case 120: { + clearest_ = input.readInt32(); + bitField0_ |= 0x00004000; + break; + } // case 120 + case 128: { + end_ = input.readInt32(); + bitField0_ |= 0x00008000; + break; + } // case 128 + case 136: { + embryoCultureRecordId_ = input.readUInt64(); + bitField0_ |= 0x00010000; + break; + } // case 136 + case 144: { + embryoId_ = input.readUInt64(); + bitField0_ |= 0x00020000; + break; + } // case 144 + case 154: { + imageData_ = input.readBytes(); + bitField0_ |= 0x00040000; + break; + } // case 154 + case 160: { + horizontalPosition_ = input.readInt32(); + bitField0_ |= 0x00080000; + break; + } // case 160 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + + private int bitField0_; + + private Object tlSn_ = ""; + + /** + *
+             * *
+             * tl设备编号
+             * 
+ * + * string tlSn = 1; + * + * @return The tlSn. + */ + public String getTlSn() { + Object ref = tlSn_; + if (!(ref instanceof String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + tlSn_ = s; + return s; + } else { + return (String) ref; + } + } + + /** + *
+             * *
+             * tl设备编号
+             * 
+ * + * string tlSn = 1; + * + * @return The bytes for tlSn. + */ + public com.google.protobuf.ByteString + getTlSnBytes() { + Object ref = tlSn_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (String) ref); + tlSn_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + *
+             * *
+             * tl设备编号
+             * 
+ * + * string tlSn = 1; + * + * @param value The tlSn to set. + * @return This builder for chaining. + */ + public Builder setTlSn( + String value) { + if (value == null) { + throw new NullPointerException(); + } + tlSn_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + /** + *
+             * *
+             * tl设备编号
+             * 
+ * + * string tlSn = 1; + * + * @return This builder for chaining. + */ + public Builder clearTlSn() { + tlSn_ = getDefaultInstance().getTlSn(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + + /** + *
+             * *
+             * tl设备编号
+             * 
+ * + * string tlSn = 1; + * + * @param value The bytes for tlSn to set. + * @return This builder for chaining. + */ + public Builder setTlSnBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + tlSn_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + + private int houseSn_; + + /** + *
+             * *
+             * 仓室编号:1-10
+             * 
+ * + * int32 houseSn = 2; + * + * @return The houseSn. + */ + @Override + public int getHouseSn() { + return houseSn_; + } + + /** + *
+             * *
+             * 仓室编号:1-10
+             * 
+ * + * int32 houseSn = 2; + * + * @param value The houseSn to set. + * @return This builder for chaining. + */ + public Builder setHouseSn(int value) { + + houseSn_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 仓室编号:1-10
+             * 
+ * + * int32 houseSn = 2; + * + * @return This builder for chaining. + */ + public Builder clearHouseSn() { + bitField0_ = (bitField0_ & ~0x00000002); + houseSn_ = 0; + onChanged(); + return this; + } + + private int wellSn_; + + /** + *
+             * *
+             * well编号 1-16
+             * 
+ * + * int32 wellSn = 3; + * + * @return The wellSn. + */ + @Override + public int getWellSn() { + return wellSn_; + } + + /** + *
+             * *
+             * well编号 1-16
+             * 
+ * + * int32 wellSn = 3; + * + * @param value The wellSn to set. + * @return This builder for chaining. + */ + public Builder setWellSn(int value) { + + wellSn_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + + /** + *
+             * *
+             * well编号 1-16
+             * 
+ * + * int32 wellSn = 3; + * + * @return This builder for chaining. + */ + public Builder clearWellSn() { + bitField0_ = (bitField0_ & ~0x00000004); + wellSn_ = 0; + onChanged(); + return this; + } + + private Object ccdSn_ = ""; + + /** + *
+             * *
+             * ccd编号
+             * 
+ * + * string ccdSn = 4; + * + * @return The ccdSn. + */ + public String getCcdSn() { + Object ref = ccdSn_; + if (!(ref instanceof String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + ccdSn_ = s; + return s; + } else { + return (String) ref; + } + } + + /** + *
+             * *
+             * ccd编号
+             * 
+ * + * string ccdSn = 4; + * + * @return The bytes for ccdSn. + */ + public com.google.protobuf.ByteString + getCcdSnBytes() { + Object ref = ccdSn_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (String) ref); + ccdSn_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + *
+             * *
+             * ccd编号
+             * 
+ * + * string ccdSn = 4; + * + * @param value The ccdSn to set. + * @return This builder for chaining. + */ + public Builder setCcdSn( + String value) { + if (value == null) { + throw new NullPointerException(); + } + ccdSn_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + + /** + *
+             * *
+             * ccd编号
+             * 
+ * + * string ccdSn = 4; + * + * @return This builder for chaining. + */ + public Builder clearCcdSn() { + ccdSn_ = getDefaultInstance().getCcdSn(); + bitField0_ = (bitField0_ & ~0x00000008); + onChanged(); + return this; + } + + /** + *
+             * *
+             * ccd编号
+             * 
+ * + * string ccdSn = 4; + * + * @param value The bytes for ccdSn to set. + * @return This builder for chaining. + */ + public Builder setCcdSnBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ccdSn_ = value; + bitField0_ |= 0x00000008; + onChanged(); + return this; + } + + private Object sourceImageName_ = ""; + + /** + *
+             * *
+             * 原图名字
+             * 
+ * + * string sourceImageName = 5; + * + * @return The sourceImageName. + */ + public String getSourceImageName() { + Object ref = sourceImageName_; + if (!(ref instanceof String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + sourceImageName_ = s; + return s; + } else { + return (String) ref; + } + } + + /** + *
+             * *
+             * 原图名字
+             * 
+ * + * string sourceImageName = 5; + * + * @return The bytes for sourceImageName. + */ + public com.google.protobuf.ByteString + getSourceImageNameBytes() { + Object ref = sourceImageName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (String) ref); + sourceImageName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + *
+             * *
+             * 原图名字
+             * 
+ * + * string sourceImageName = 5; + * + * @param value The sourceImageName to set. + * @return This builder for chaining. + */ + public Builder setSourceImageName( + String value) { + if (value == null) { + throw new NullPointerException(); + } + sourceImageName_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 原图名字
+             * 
+ * + * string sourceImageName = 5; + * + * @return This builder for chaining. + */ + public Builder clearSourceImageName() { + sourceImageName_ = getDefaultInstance().getSourceImageName(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + return this; + } + + /** + *
+             * *
+             * 原图名字
+             * 
+ * + * string sourceImageName = 5; + * + * @param value The bytes for sourceImageName to set. + * @return This builder for chaining. + */ + public Builder setSourceImageNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + sourceImageName_ = value; + bitField0_ |= 0x00000010; + onChanged(); + return this; + } + + private Object sourceImagePath_ = ""; + + /** + *
+             * *
+             * 原图的本地路径(不是上传后的保存路径)
+             * 
+ * + * string sourceImagePath = 6; + * + * @return The sourceImagePath. + */ + public String getSourceImagePath() { + Object ref = sourceImagePath_; + if (!(ref instanceof String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + sourceImagePath_ = s; + return s; + } else { + return (String) ref; + } + } + + /** + *
+             * *
+             * 原图的本地路径(不是上传后的保存路径)
+             * 
+ * + * string sourceImagePath = 6; + * + * @return The bytes for sourceImagePath. + */ + public com.google.protobuf.ByteString + getSourceImagePathBytes() { + Object ref = sourceImagePath_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (String) ref); + sourceImagePath_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + *
+             * *
+             * 原图的本地路径(不是上传后的保存路径)
+             * 
+ * + * string sourceImagePath = 6; + * + * @param value The sourceImagePath to set. + * @return This builder for chaining. + */ + public Builder setSourceImagePath( + String value) { + if (value == null) { + throw new NullPointerException(); + } + sourceImagePath_ = value; + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 原图的本地路径(不是上传后的保存路径)
+             * 
+ * + * string sourceImagePath = 6; + * + * @return This builder for chaining. + */ + public Builder clearSourceImagePath() { + sourceImagePath_ = getDefaultInstance().getSourceImagePath(); + bitField0_ = (bitField0_ & ~0x00000020); + onChanged(); + return this; + } + + /** + *
+             * *
+             * 原图的本地路径(不是上传后的保存路径)
+             * 
+ * + * string sourceImagePath = 6; + * + * @param value The bytes for sourceImagePath to set. + * @return This builder for chaining. + */ + public Builder setSourceImagePathBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + sourceImagePath_ = value; + bitField0_ |= 0x00000020; + onChanged(); + return this; + } + + private int sourceImageWidth_; + + /** + *
+             * *
+             * 原图宽
+             * 
+ * + * int32 sourceImageWidth = 7; + * + * @return The sourceImageWidth. + */ + @Override + public int getSourceImageWidth() { + return sourceImageWidth_; + } + + /** + *
+             * *
+             * 原图宽
+             * 
+ * + * int32 sourceImageWidth = 7; + * + * @param value The sourceImageWidth to set. + * @return This builder for chaining. + */ + public Builder setSourceImageWidth(int value) { + + sourceImageWidth_ = value; + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 原图宽
+             * 
+ * + * int32 sourceImageWidth = 7; + * + * @return This builder for chaining. + */ + public Builder clearSourceImageWidth() { + bitField0_ = (bitField0_ & ~0x00000040); + sourceImageWidth_ = 0; + onChanged(); + return this; + } + + private int sourceImageHeight_; + + /** + *
+             * *
+             * 原图高
+             * 
+ * + * int32 sourceImageHeight = 8; + * + * @return The sourceImageHeight. + */ + @Override + public int getSourceImageHeight() { + return sourceImageHeight_; + } + + /** + *
+             * *
+             * 原图高
+             * 
+ * + * int32 sourceImageHeight = 8; + * + * @param value The sourceImageHeight to set. + * @return This builder for chaining. + */ + public Builder setSourceImageHeight(int value) { + + sourceImageHeight_ = value; + bitField0_ |= 0x00000080; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 原图高
+             * 
+ * + * int32 sourceImageHeight = 8; + * + * @return This builder for chaining. + */ + public Builder clearSourceImageHeight() { + bitField0_ = (bitField0_ & ~0x00000080); + sourceImageHeight_ = 0; + onChanged(); + return this; + } + + private Object imageTime_ = ""; + + /** + *
+             * *
+             * 设备拍摄时间 格式2020-10-10 00:00:00
+             * 
+ * + * string imageTime = 9; + * + * @return The imageTime. + */ + public String getImageTime() { + Object ref = imageTime_; + if (!(ref instanceof String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + imageTime_ = s; + return s; + } else { + return (String) ref; + } + } + + /** + *
+             * *
+             * 设备拍摄时间 格式2020-10-10 00:00:00
+             * 
+ * + * string imageTime = 9; + * + * @return The bytes for imageTime. + */ + public com.google.protobuf.ByteString + getImageTimeBytes() { + Object ref = imageTime_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (String) ref); + imageTime_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + *
+             * *
+             * 设备拍摄时间 格式2020-10-10 00:00:00
+             * 
+ * + * string imageTime = 9; + * + * @param value The imageTime to set. + * @return This builder for chaining. + */ + public Builder setImageTime( + String value) { + if (value == null) { + throw new NullPointerException(); + } + imageTime_ = value; + bitField0_ |= 0x00000100; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 设备拍摄时间 格式2020-10-10 00:00:00
+             * 
+ * + * string imageTime = 9; + * + * @return This builder for chaining. + */ + public Builder clearImageTime() { + imageTime_ = getDefaultInstance().getImageTime(); + bitField0_ = (bitField0_ & ~0x00000100); + onChanged(); + return this; + } + + /** + *
+             * *
+             * 设备拍摄时间 格式2020-10-10 00:00:00
+             * 
+ * + * string imageTime = 9; + * + * @param value The bytes for imageTime to set. + * @return This builder for chaining. + */ + public Builder setImageTimeBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + imageTime_ = value; + bitField0_ |= 0x00000100; + onChanged(); + return this; + } + + private Object fertilizationTime_ = ""; + + /** + *
+             * *
+             * 受精时间 格式2020-10-10 00:00:00
+             * 
+ * + * string fertilizationTime = 10; + * + * @return The fertilizationTime. + */ + public String getFertilizationTime() { + Object ref = fertilizationTime_; + if (!(ref instanceof String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + String s = bs.toStringUtf8(); + fertilizationTime_ = s; + return s; + } else { + return (String) ref; + } + } + + /** + *
+             * *
+             * 受精时间 格式2020-10-10 00:00:00
+             * 
+ * + * string fertilizationTime = 10; + * + * @return The bytes for fertilizationTime. + */ + public com.google.protobuf.ByteString + getFertilizationTimeBytes() { + Object ref = fertilizationTime_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (String) ref); + fertilizationTime_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + /** + *
+             * *
+             * 受精时间 格式2020-10-10 00:00:00
+             * 
+ * + * string fertilizationTime = 10; + * + * @param value The fertilizationTime to set. + * @return This builder for chaining. + */ + public Builder setFertilizationTime( + String value) { + if (value == null) { + throw new NullPointerException(); + } + fertilizationTime_ = value; + bitField0_ |= 0x00000200; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 受精时间 格式2020-10-10 00:00:00
+             * 
+ * + * string fertilizationTime = 10; + * + * @return This builder for chaining. + */ + public Builder clearFertilizationTime() { + fertilizationTime_ = getDefaultInstance().getFertilizationTime(); + bitField0_ = (bitField0_ & ~0x00000200); + onChanged(); + return this; + } + + /** + *
+             * *
+             * 受精时间 格式2020-10-10 00:00:00
+             * 
+ * + * string fertilizationTime = 10; + * + * @param value The bytes for fertilizationTime to set. + * @return This builder for chaining. + */ + public Builder setFertilizationTimeBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + fertilizationTime_ = value; + bitField0_ |= 0x00000200; + onChanged(); + return this; + } + + private int photographType_; + + /** + *
+             * *
+             * 对焦还是ccd拍照 1 自动对焦 0 CCD拍照
+             * 
+ * + * int32 photographType = 11; + * + * @return The photographType. + */ + @Override + public int getPhotographType() { + return photographType_; + } + + /** + *
+             * *
+             * 对焦还是ccd拍照 1 自动对焦 0 CCD拍照
+             * 
+ * + * int32 photographType = 11; + * + * @param value The photographType to set. + * @return This builder for chaining. + */ + public Builder setPhotographType(int value) { + + photographType_ = value; + bitField0_ |= 0x00000400; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 对焦还是ccd拍照 1 自动对焦 0 CCD拍照
+             * 
+ * + * int32 photographType = 11; + * + * @return This builder for chaining. + */ + public Builder clearPhotographType() { + bitField0_ = (bitField0_ & ~0x00000400); + photographType_ = 0; + onChanged(); + return this; + } + + private int totalLayer_; + + /** + *
+             * *
+             * 拍照总层数
+             * 
+ * + * int32 totalLayer = 12; + * + * @return The totalLayer. + */ + @Override + public int getTotalLayer() { + return totalLayer_; + } + + /** + *
+             * *
+             * 拍照总层数
+             * 
+ * + * int32 totalLayer = 12; + * + * @param value The totalLayer to set. + * @return This builder for chaining. + */ + public Builder setTotalLayer(int value) { + + totalLayer_ = value; + bitField0_ |= 0x00000800; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 拍照总层数
+             * 
+ * + * int32 totalLayer = 12; + * + * @return This builder for chaining. + */ + public Builder clearTotalLayer() { + bitField0_ = (bitField0_ & ~0x00000800); + totalLayer_ = 0; + onChanged(); + return this; + } + + private int pictureLayer_; + + /** + *
+             * *
+             * 图片层
+             * 
+ * + * int32 pictureLayer = 13; + * + * @return The pictureLayer. + */ + @Override + public int getPictureLayer() { + return pictureLayer_; + } + + /** + *
+             * *
+             * 图片层
+             * 
+ * + * int32 pictureLayer = 13; + * + * @param value The pictureLayer to set. + * @return This builder for chaining. + */ + public Builder setPictureLayer(int value) { + + pictureLayer_ = value; + bitField0_ |= 0x00001000; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 图片层
+             * 
+ * + * int32 pictureLayer = 13; + * + * @return This builder for chaining. + */ + public Builder clearPictureLayer() { + bitField0_ = (bitField0_ & ~0x00001000); + pictureLayer_ = 0; + onChanged(); + return this; + } + + private int shootingPosition_; + + /** + *
+             * *
+             * 垂直电机位置
+             * 
+ * + * int32 shootingPosition = 14; + * + * @return The shootingPosition. + */ + @Override + public int getShootingPosition() { + return shootingPosition_; + } + + /** + *
+             * *
+             * 垂直电机位置
+             * 
+ * + * int32 shootingPosition = 14; + * + * @param value The shootingPosition to set. + * @return This builder for chaining. + */ + public Builder setShootingPosition(int value) { + + shootingPosition_ = value; + bitField0_ |= 0x00002000; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 垂直电机位置
+             * 
+ * + * int32 shootingPosition = 14; + * + * @return This builder for chaining. + */ + public Builder clearShootingPosition() { + bitField0_ = (bitField0_ & ~0x00002000); + shootingPosition_ = 0; + onChanged(); + return this; + } + + private int clearest_; + + /** + *
+             * *
+             * 是否是最清晰的(CCD拍照才有)0不是 1最清晰
+             * 
+ * + * int32 clearest = 15; + * + * @return The clearest. + */ + @Override + public int getClearest() { + return clearest_; + } + + /** + *
+             * *
+             * 是否是最清晰的(CCD拍照才有)0不是 1最清晰
+             * 
+ * + * int32 clearest = 15; + * + * @param value The clearest to set. + * @return This builder for chaining. + */ + public Builder setClearest(int value) { + + clearest_ = value; + bitField0_ |= 0x00004000; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 是否是最清晰的(CCD拍照才有)0不是 1最清晰
+             * 
+ * + * int32 clearest = 15; + * + * @return This builder for chaining. + */ + public Builder clearClearest() { + bitField0_ = (bitField0_ & ~0x00004000); + clearest_ = 0; + onChanged(); + return this; + } + + private int end_; + + /** + *
+             * *
+             * 拍照结束标记 1 结束 0 未结束 (结束后开始更新对焦起点,ccd拍照结束开始合成视频)
+             * 
+ * + * int32 end = 16; + * + * @return The end. + */ + @Override + public int getEnd() { + return end_; + } + + /** + *
+             * *
+             * 拍照结束标记 1 结束 0 未结束 (结束后开始更新对焦起点,ccd拍照结束开始合成视频)
+             * 
+ * + * int32 end = 16; + * + * @param value The end to set. + * @return This builder for chaining. + */ + public Builder setEnd(int value) { + + end_ = value; + bitField0_ |= 0x00008000; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 拍照结束标记 1 结束 0 未结束 (结束后开始更新对焦起点,ccd拍照结束开始合成视频)
+             * 
+ * + * int32 end = 16; + * + * @return This builder for chaining. + */ + public Builder clearEnd() { + bitField0_ = (bitField0_ & ~0x00008000); + end_ = 0; + onChanged(); + return this; + } + + private long embryoCultureRecordId_; + + /** + *
+             * *
+             * 培养记录id
+             * 
+ * + * uint64 embryoCultureRecordId = 17; + * + * @return The embryoCultureRecordId. + */ + @Override + public long getEmbryoCultureRecordId() { + return embryoCultureRecordId_; + } + + /** + *
+             * *
+             * 培养记录id
+             * 
+ * + * uint64 embryoCultureRecordId = 17; + * + * @param value The embryoCultureRecordId to set. + * @return This builder for chaining. + */ + public Builder setEmbryoCultureRecordId(long value) { + + embryoCultureRecordId_ = value; + bitField0_ |= 0x00010000; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 培养记录id
+             * 
+ * + * uint64 embryoCultureRecordId = 17; + * + * @return This builder for chaining. + */ + public Builder clearEmbryoCultureRecordId() { + bitField0_ = (bitField0_ & ~0x00010000); + embryoCultureRecordId_ = 0L; + onChanged(); + return this; + } + + private long embryoId_; + + /** + *
+             * *
+             * 胚胎id
+             * 
+ * + * uint64 embryoId = 18; + * + * @return The embryoId. + */ + @Override + public long getEmbryoId() { + return embryoId_; + } + + /** + *
+             * *
+             * 胚胎id
+             * 
+ * + * uint64 embryoId = 18; + * + * @param value The embryoId to set. + * @return This builder for chaining. + */ + public Builder setEmbryoId(long value) { + + embryoId_ = value; + bitField0_ |= 0x00020000; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 胚胎id
+             * 
+ * + * uint64 embryoId = 18; + * + * @return This builder for chaining. + */ + public Builder clearEmbryoId() { + bitField0_ = (bitField0_ & ~0x00020000); + embryoId_ = 0L; + onChanged(); + return this; + } + + private com.google.protobuf.ByteString imageData_ = com.google.protobuf.ByteString.EMPTY; + + /** + *
+             * *
+             * 图片数据
+             * 
+ * + * bytes imageData = 19; + * + * @return The imageData. + */ + @Override + public com.google.protobuf.ByteString getImageData() { + return imageData_; + } + + /** + *
+             * *
+             * 图片数据
+             * 
+ * + * bytes imageData = 19; + * + * @param value The imageData to set. + * @return This builder for chaining. + */ + public Builder setImageData(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + imageData_ = value; + bitField0_ |= 0x00040000; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 图片数据
+             * 
+ * + * bytes imageData = 19; + * + * @return This builder for chaining. + */ + public Builder clearImageData() { + bitField0_ = (bitField0_ & ~0x00040000); + imageData_ = getDefaultInstance().getImageData(); + onChanged(); + return this; + } + + private int horizontalPosition_; + + /** + *
+             * *
+             * 水平电机位置
+             * 
+ * + * int32 horizontalPosition = 20; + * + * @return The horizontalPosition. + */ + @Override + public int getHorizontalPosition() { + return horizontalPosition_; + } + + /** + *
+             * *
+             * 水平电机位置
+             * 
+ * + * int32 horizontalPosition = 20; + * + * @param value The horizontalPosition to set. + * @return This builder for chaining. + */ + public Builder setHorizontalPosition(int value) { + + horizontalPosition_ = value; + bitField0_ |= 0x00080000; + onChanged(); + return this; + } + + /** + *
+             * *
+             * 水平电机位置
+             * 
+ * + * int32 horizontalPosition = 20; + * + * @return This builder for chaining. + */ + public Builder clearHorizontalPosition() { + bitField0_ = (bitField0_ & ~0x00080000); + horizontalPosition_ = 0; + onChanged(); + return this; + } + + @Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:ivf_tl_Entity.DTO.ImageDTO) + } + + // @@protoc_insertion_point(class_scope:ivf_tl_Entity.DTO.ImageDTO) + private static final ImageDTO DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new ImageDTO(); + } + + public static ImageDTO getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @Override + public ImageDTO parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @Override + public ImageDTO getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_ivf_tl_Entity_DTO_ImageDTO_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_ivf_tl_Entity_DTO_ImageDTO_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + + private static final com.google.protobuf.Descriptors.FileDescriptor + descriptor; + + static { + String[] descriptorData = { + "\n\016ImageDTO.proto\022\021ivf_tl_Entity.DTO\"\270\003\n\010" + + "ImageDTO\022\014\n\004tlSn\030\001 \001(\t\022\017\n\007houseSn\030\002 \001(\005\022" + + "\016\n\006wellSn\030\003 \001(\005\022\r\n\005ccdSn\030\004 \001(\t\022\027\n\017source" + + "ImageName\030\005 \001(\t\022\027\n\017sourceImagePath\030\006 \001(\t" + + "\022\030\n\020sourceImageWidth\030\007 \001(\005\022\031\n\021sourceImag" + + "eHeight\030\010 \001(\005\022\021\n\timageTime\030\t \001(\t\022\031\n\021fert" + + "ilizationTime\030\n \001(\t\022\026\n\016photographType\030\013 " + + "\001(\005\022\022\n\ntotalLayer\030\014 \001(\005\022\024\n\014pictureLayer\030" + + "\r \001(\005\022\030\n\020shootingPosition\030\016 \001(\005\022\020\n\010clear" + + "est\030\017 \001(\005\022\013\n\003end\030\020 \001(\005\022\035\n\025embryoCultureR" + + "ecordId\030\021 \001(\004\022\020\n\010embryoId\030\022 \001(\004\022\021\n\timage" + + "Data\030\023 \001(\014\022\032\n\022horizontalPosition\030\024 \001(\005B6" + + "\n&com.aivfo.data.transmission.entity.dto" + + "B\014ImageDataDTOb\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[]{ + }); + internal_static_ivf_tl_Entity_DTO_ImageDTO_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_ivf_tl_Entity_DTO_ImageDTO_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_ivf_tl_Entity_DTO_ImageDTO_descriptor, + new String[]{"TlSn", "HouseSn", "WellSn", "CcdSn", "SourceImageName", "SourceImagePath", "SourceImageWidth", "SourceImageHeight", "ImageTime", "FertilizationTime", "PhotographType", "TotalLayer", "PictureLayer", "ShootingPosition", "Clearest", "End", "EmbryoCultureRecordId", "EmbryoId", "ImageData", "HorizontalPosition",}); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/kafka/src/test/java/com/wyl/kafka/test/TlPictureProducerTest.java b/kafka/src/test/java/com/wyl/kafka/test/TlPictureProducerTest.java index 29e9569..b8fbbff 100644 --- a/kafka/src/test/java/com/wyl/kafka/test/TlPictureProducerTest.java +++ b/kafka/src/test/java/com/wyl/kafka/test/TlPictureProducerTest.java @@ -25,7 +25,7 @@ public class TlPictureProducerTest { * 构建kafka 生产者 */ KafkaProducer kafkaProducer = buildProducer(); - String topic = "CCD-PICTURE-NEO-1-wyltest"; + String topic = "CCD-PICTURE-NEO-1-20230101"; AtomicReference partition = new AtomicReference<>(0); LocalDateTime now = LocalDateTime.now(); String format = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); @@ -38,7 +38,8 @@ public class TlPictureProducerTest { if (i == 80) { end = 1; } - ImageDataDTO.ImageDTO image = makeSendData(null, embryo.getHouseSn(), id.getKey(), 1, format, embryo.getFertilizationTime(), i, shootingPosition * (125 + i), end, id.getValue(), embryo.getId()); + ImageDataDTO.ImageDTO image = makeSendData(null, embryo.getHouseSn(), id.getKey(), 1, format, embryo.getFertilizationTime(), i, shootingPosition * (125 + i), end, embryo.getId(), id.getValue()); + System.out.println(image.getImageData().size()); partition.set(image.getHouseSn() % 3); ProducerRecord record = new ProducerRecord<>(topic, partition.get(), null, image.toByteArray()); /** @@ -87,7 +88,7 @@ public class TlPictureProducerTest { } ImageDataDTO.ImageDTO image = makeSendData(c, embryo.getHouseSn(), id.getKey(), 0, format, embryo.getFertilizationTime(), i, shootingPosition * (125 + i), - end, id.getValue(), embryo.getId()); + end, embryo.getId(), id.getValue()); partition.set(image.getHouseSn() % 3); ProducerRecord record = new ProducerRecord<>(topic, partition.get(), null, image.toByteArray()); /** @@ -134,8 +135,8 @@ public class TlPictureProducerTest { * @Date 2023/7/18 * @Author wangyl */ - public static byte[] getImageData() throws IOException { - File file = new File("C:\\Users\\95981\\Desktop\\wangyongliang.jpg"); + private static byte[] getImageData() throws IOException { + File file = new File("C:\\Users\\95981\\Desktop\\picControlBreak1\\1_1_1_1_2023-09-25-17-37-08_66400_80200.jpg"); InputStream inputStream = new FileInputStream(file); byte[] bytes = inputStream.readAllBytes(); return bytes; diff --git a/mqtt/pom.xml b/mqtt/pom.xml index da399f6..6ddb4cd 100644 --- a/mqtt/pom.xml +++ b/mqtt/pom.xml @@ -28,6 +28,11 @@ org.eclipse.paho.mqttv5.client 1.2.5
+ + com.aivfo + aivfo-element-common + 1.0.0-SNAPSHOT +
\ No newline at end of file diff --git a/mqtt/src/main/java/com/wyl/mqtt/MqttCollectDTO.java b/mqtt/src/main/java/com/wyl/mqtt/MqttCollectDTO.java new file mode 100644 index 0000000..b384ac0 --- /dev/null +++ b/mqtt/src/main/java/com/wyl/mqtt/MqttCollectDTO.java @@ -0,0 +1,50 @@ +package com.wyl.mqtt; + +import lombok.Builder; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * @description: tl上报的mqtt采集数据 + * @author: wangyl + * @date: 2023/7/11 + */ +@Data +public class MqttCollectDTO { + /** + * tlSn + */ + String tlSn; + /** + * 仓室的Sn + */ + Integer houseSn; + /** + * 气压 + */ + BigDecimal pressure; + /** + * 温度 + */ + BigDecimal temperature; + /** + * 仓门状态 + */ + Integer houseDoorState; + /** + * 气压状态 + */ + String pressureDesc; + + /** + * 仓室状态 + */ + String houseDesc; + /** + * 采集时间 + */ + String collectTime; + +} diff --git a/mqtt/src/main/java/com/wyl/mqtt/SimpleMqttClient.java b/mqtt/src/main/java/com/wyl/mqtt/SimpleMqttClient.java index a5d85a1..2e72c4c 100644 --- a/mqtt/src/main/java/com/wyl/mqtt/SimpleMqttClient.java +++ b/mqtt/src/main/java/com/wyl/mqtt/SimpleMqttClient.java @@ -1,21 +1,31 @@ package com.wyl.mqtt; +import com.aivfo.el.start.core.util.RandomUtils; +import com.aivfo.el.starter.base.utils.JsonUtils; import lombok.extern.slf4j.Slf4j; import org.eclipse.paho.client.mqttv3.*; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; +import java.math.BigDecimal; import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; @Slf4j public class SimpleMqttClient { + static List operationDesc = Arrays.asList("握手中", "CCP拍照", "自动对焦", "平衡中", "温压检测", "补气中", "换气中"); + //全局唯一 单例 private static IMqttAsyncClient client; private static IMqttAsyncClient getClient() { return client; } + private static void setClient(IMqttAsyncClient client) { SimpleMqttClient.client = client; } @@ -58,7 +68,7 @@ public class SimpleMqttClient { log.info("接收消息主题 : " + topic); log.info("接收消息Qos : " + mqttMessage.getQos()); } - + @Override public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { @@ -82,14 +92,14 @@ public class SimpleMqttClient { /** * 发布 * - * @param qos 连接方式 - * @param retained 是否保留 - * @param topic 主题 + * @param qos 连接方式 + * @param retained 是否保留 + * @param topic 主题 * @param pushMessage 消息体 */ public void publish(String topic, byte[] message, int qos, boolean retained) { - - if(client != null && client.isConnected()) { + + if (client != null && client.isConnected()) { try { IMqttDeliveryToken token = client.publish(topic, message, qos, retained); token.waitForCompletion(); @@ -104,10 +114,10 @@ public class SimpleMqttClient { * 订阅某个主题 * * @param topic 主题 - * @param qos 连接方式 + * @param qos 连接方式 */ public void subscribe(String topic, int qos) { - log.info("开始订阅主题: {}" , topic); + log.info("开始订阅主题: {}", topic); if (client != null && client.isConnected()) { try { IMqttToken token = client.subscribe(topic, qos); @@ -118,11 +128,12 @@ public class SimpleMqttClient { } } } + /** * 订阅多主题 * * @param topic 主题 - * @param qos 连接方式 + * @param qos 连接方式 */ public void subscribe(String[] topics, int[] qos) { log.info("开始订阅主题集合:{}", Arrays.asList(topics)); @@ -137,10 +148,35 @@ public class SimpleMqttClient { } } - public static void main(String[] args) { - SimpleMqttClient simpleMqttClient = new SimpleMqttClient(); - simpleMqttClient.connect("tcp://127.0.0.1:1883", "123", "wyl","wyl"); - simpleMqttClient.publish("wyl001", "123".getBytes(StandardCharsets.UTF_8), 0, false); + public static List buildData() { + List res = new ArrayList<>(); + for (int i = 1; i < 11; i++) { + MqttCollectDTO mqttCollectDTO = new MqttCollectDTO(); + mqttCollectDTO.setTlSn("NEO-1-wyltest"); + mqttCollectDTO.setHouseSn(i); + mqttCollectDTO.setPressure(new BigDecimal(RandomUtils.nextDouble(40, 50))); + mqttCollectDTO.setTemperature(new BigDecimal(RandomUtils.nextDouble(36, 38))); + mqttCollectDTO.setHouseDoorState(RandomUtils.nextInt(0, 1)); + mqttCollectDTO.setPressureDesc(operationDesc.get(RandomUtils.nextInt(0, 7))); + mqttCollectDTO.setHouseDesc(operationDesc.get(RandomUtils.nextInt(0, 7))); + mqttCollectDTO.setCollectTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + res.add(mqttCollectDTO); + } + return res; } + + + public static void main(String[] args) throws InterruptedException { + SimpleMqttClient simpleMqttClient = new SimpleMqttClient(); + List mqttCollectDTOS = buildData(); + simpleMqttClient.connect("tcp://192.168.31.89:1883", "test", "aivfo", "aivfo"); + while (true) { + Thread.sleep(1000); + simpleMqttClient.publish("TL/House/collecting-data", JsonUtils.toJson(mqttCollectDTOS).getBytes(StandardCharsets.UTF_8), 2, false); + } + } + + + } diff --git a/pom.xml b/pom.xml index c8fa6fd..5cbb6fd 100644 --- a/pom.xml +++ b/pom.xml @@ -22,6 +22,9 @@ Socket jna mapsturct + cache + jnr + jni pom diff --git a/spring-boot/spring-boot-common/src/main/java/com/wyl/spring/boot/common/SpringBootCommonApplication.java b/spring-boot/spring-boot-common/src/main/java/com/wyl/spring/boot/common/SpringBootCommonApplication.java index caa1fd2..0c63bec 100644 --- a/spring-boot/spring-boot-common/src/main/java/com/wyl/spring/boot/common/SpringBootCommonApplication.java +++ b/spring-boot/spring-boot-common/src/main/java/com/wyl/spring/boot/common/SpringBootCommonApplication.java @@ -5,12 +5,19 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.EnableAspectJAutoProxy; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication +@EnableScheduling @EnableAspectJAutoProxy(exposeProxy = true) +@EnableAsync public class SpringBootCommonApplication { public static void main(String[] args) { +// SpringApplication springApplication = new SpringApplication(SpringBootCommonApplication.class); +// springApplication.setBannerMode(Banner.Mode.OFF); +// ConfigurableApplicationContext run = springApplication.run(args); SpringApplication.run(SpringBootCommonApplication.class, args); } diff --git a/spring-boot/spring-boot-common/src/main/java/com/wyl/spring/boot/common/service/impl/LogTestServiceImpl.java b/spring-boot/spring-boot-common/src/main/java/com/wyl/spring/boot/common/service/impl/LogTestServiceImpl.java index 27c6ddf..e9a3b5a 100644 --- a/spring-boot/spring-boot-common/src/main/java/com/wyl/spring/boot/common/service/impl/LogTestServiceImpl.java +++ b/spring-boot/spring-boot-common/src/main/java/com/wyl/spring/boot/common/service/impl/LogTestServiceImpl.java @@ -3,23 +3,24 @@ package com.wyl.spring.boot.common.service.impl; import com.wyl.spring.boot.common.service.LogTestService; import com.wyl.spring.boot.common.spel.annotation.SpelTest; import com.wyl.spring.boot.common.spel.bean.Order; -import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service public class LogTestServiceImpl implements LogTestService { +// @Override +//// @LogTest +// @Transactional +// public void test() { +// System.out.println("testLog"); +// } + + @Override -// @LogTest - @Transactional - public void test() { - System.out.println("testLog"); - } - - @SpelTest(spel = "123{#order?'真':'假'}") public void testSPEL(Boolean order) { System.out.println(123); @@ -37,4 +38,14 @@ public class LogTestServiceImpl implements LogTestService { String abc = "123"; return abc; } + + @Scheduled(cron = "*/5 * * * * ?") + @Override + @Async + public void test() { + System.out.println(1); + while (true) { + int a = 0; + } + } } diff --git a/spring-boot/spring-boot-drools/src/main/java/com/wyl/spring/drools/controller/PersonRuleController.java b/spring-boot/spring-boot-drools/src/main/java/com/wyl/spring/drools/controller/PersonRuleController.java index 28b6e4b..9458694 100644 --- a/spring-boot/spring-boot-drools/src/main/java/com/wyl/spring/drools/controller/PersonRuleController.java +++ b/spring-boot/spring-boot-drools/src/main/java/com/wyl/spring/drools/controller/PersonRuleController.java @@ -8,6 +8,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + @RestController @RequestMapping("rule/person") @@ -17,8 +19,9 @@ public class PersonRuleController { private RuleExecutor ruleExecutor; @PostMapping("one") - public void fireAllRules4One(@RequestBody Person person) { - ruleExecutor.execute(person); + public void fireAllRules4One(@RequestBody List person) { + System.out.println(person); +// ruleExecutor.execute(person); } } \ No newline at end of file diff --git a/spring-boot/spring-boot-mybatis/src/main/java/com/wyl/springbootmybatis/SpringBootMybatisApplication.java b/spring-boot/spring-boot-mybatis/src/main/java/com/wyl/springbootmybatis/SpringBootMybatisApplication.java index b40e460..642bc14 100644 --- a/spring-boot/spring-boot-mybatis/src/main/java/com/wyl/springbootmybatis/SpringBootMybatisApplication.java +++ b/spring-boot/spring-boot-mybatis/src/main/java/com/wyl/springbootmybatis/SpringBootMybatisApplication.java @@ -2,8 +2,10 @@ package com.wyl.springbootmybatis; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication +@EnableScheduling public class SpringBootMybatisApplication { public static void main(String[] args) { diff --git a/spring-boot/spring-boot-mybatis/src/main/java/com/wyl/springbootmybatis/mybatis/service/impl/KeyTestServiceImpl.java b/spring-boot/spring-boot-mybatis/src/main/java/com/wyl/springbootmybatis/mybatis/service/impl/KeyTestServiceImpl.java index c5d5a11..db195b1 100644 --- a/spring-boot/spring-boot-mybatis/src/main/java/com/wyl/springbootmybatis/mybatis/service/impl/KeyTestServiceImpl.java +++ b/spring-boot/spring-boot-mybatis/src/main/java/com/wyl/springbootmybatis/mybatis/service/impl/KeyTestServiceImpl.java @@ -2,19 +2,21 @@ package com.wyl.springbootmybatis.mybatis.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.wyl.springbootmybatis.mybatis.domain.KeyTest; -import com.wyl.springbootmybatis.mybatis.service.KeyTestService; import com.wyl.springbootmybatis.mybatis.mapper.KeyTestMapper; +import com.wyl.springbootmybatis.mybatis.service.KeyTestService; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; /** -* @author wyl -* @description 针对表【key_test(联合唯一索引更新测试)】的数据库操作Service实现 -* @createDate 2022-05-18 22:54:18 -*/ + * @author wyl + * @description 针对表【key_test(联合唯一索引更新测试)】的数据库操作Service实现 + * @createDate 2022-05-18 22:54:18 + */ @Service public class KeyTestServiceImpl extends ServiceImpl - implements KeyTestService{ + implements KeyTestService { + } diff --git a/spring-boot/spring-boot-wxrobot/pom.xml b/spring-boot/spring-boot-wxrobot/pom.xml index a9ad723..9bfb20b 100644 --- a/spring-boot/spring-boot-wxrobot/pom.xml +++ b/spring-boot/spring-boot-wxrobot/pom.xml @@ -11,6 +11,18 @@ 4.0.0 spring-boot-wxrobot + + + + org.apache.maven.plugins + maven-compiler-plugin + + 9 + 9 + + + + 8 @@ -30,6 +42,11 @@ fastjson 1.2.83 + + com.aivfo + aivfo-dfs-client-spring-boot-starter + 1.1.0-SNAPSHOT + \ No newline at end of file diff --git a/spring-boot/spring-boot-wxrobot/src/main/java/com/wyl/spring/wxrobot/controller/Download.java b/spring-boot/spring-boot-wxrobot/src/main/java/com/wyl/spring/wxrobot/controller/Download.java new file mode 100644 index 0000000..ff0ea9c --- /dev/null +++ b/spring-boot/spring-boot-wxrobot/src/main/java/com/wyl/spring/wxrobot/controller/Download.java @@ -0,0 +1,51 @@ +package com.wyl.spring.wxrobot.controller; + +import com.aivfo.dfs.client.core.DFSClient; +import com.aivfo.el.start.core.util.ObjectUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.List; +import java.util.concurrent.atomic.AtomicReference; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +@Component +public class Download { + @Autowired + DFSClient dfsClient; + + public void test(HttpServletResponse response, List path) throws Exception { + ZipOutputStream zipOutputStream = build(response); + AtomicReference skip = new AtomicReference<>(false); + try (zipOutputStream) { + for (int i = 0; i < path.size(); i++) { + if (skip.get()) { + return; + } + zipOutputStream.putNextEntry(new ZipEntry(path.get(i))); + dfsClient.downloadFile(path.get(i), (data, dataSize) -> { + try { + if (ObjectUtils.isNotNull(zipOutputStream)) { + zipOutputStream.write(data, 0, dataSize); + } + } catch (Exception e) { + skip.set(true); + return 0; + } + return 0; + }); + zipOutputStream.flush(); + } + } catch (IOException e) { + e.printStackTrace(); + } + + } + + private ZipOutputStream build(HttpServletResponse response) throws IOException { + return new ZipOutputStream(response.getOutputStream()); + } +} diff --git a/spring-boot/spring-boot-wxrobot/src/main/java/com/wyl/spring/wxrobot/controller/FileController.java b/spring-boot/spring-boot-wxrobot/src/main/java/com/wyl/spring/wxrobot/controller/FileController.java new file mode 100644 index 0000000..feeec59 --- /dev/null +++ b/spring-boot/spring-boot-wxrobot/src/main/java/com/wyl/spring/wxrobot/controller/FileController.java @@ -0,0 +1,2477 @@ +package com.wyl.spring.wxrobot.controller; + +import com.wyl.spring.wxrobot.entity.param.PictureExportDTO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.InputStreamResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.List; + +@RestController +@RequestMapping("/api/files") +public class FileController { + static List path = new ArrayList<>(); + + static { + path.add("group1/M02/48/02/wKgfWWVErfWABNwqAACd0V4G0jE324.jpg"); + path.add("group1/M00/48/03/wKgfWWVErhqAa1CvAACd0V4G0jE320.jpg"); + path.add("group1/M00/48/04/wKgfWWVErj-AKgQ9AACd0V4G0jE241.jpg"); + path.add("group1/M01/48/13/wKgfWWVEsXmATf0zAACd0V4G0jE139.jpg"); + path.add("group2/M01/2E/53/wKgfWWVEsZ-ALCMPAACd0V4G0jE699.jpg"); + path.add("group1/M00/48/14/wKgfWWVEscWAYh52AACd0V4G0jE826.jpg"); + path.add("group1/M02/48/23/wKgfWWVEtPyAXVDRAACd0V4G0jE214.jpg"); + path.add("group1/M02/48/24/wKgfWWVEtSKAMDA7AACd0V4G0jE749.jpg"); + path.add("group1/M02/48/25/wKgfWWVEtUiADwiQAACd0V4G0jE132.jpg"); + path.add("group1/M02/48/34/wKgfWWVEuIiAUhaXAACd0V4G0jE588.jpg"); + path.add("group2/M01/2E/59/wKgfWWVEuK6Aa-gTAACd0V4G0jE842.jpg"); + path.add("group1/M01/48/35/wKgfWWVEuNOAGVdnAACd0V4G0jE503.jpg"); + path.add("group1/M02/48/44/wKgfWWVEvA-AZ378AACd0V4G0jE941.jpg"); + path.add("group1/M00/48/45/wKgfWWVEvDSARXEPAACd0V4G0jE333.jpg"); + path.add("group1/M02/48/46/wKgfWWVEvFuAK-UZAACd0V4G0jE309.jpg"); + path.add("group1/M02/48/55/wKgfWWVEv5OAWyygAACd0V4G0jE591.jpg"); + path.add("group2/M01/2E/5F/wKgfWWVEv72AHWPdAACd0V4G0jE140.jpg"); + path.add("group1/M01/48/56/wKgfWWVEv-KAfB6qAACd0V4G0jE119.jpg"); + path.add("group1/M01/48/66/wKgfWWVEwxmAO62mAACd0V4G0jE409.jpg"); + path.add("group1/M01/48/66/wKgfWWVEw0KAFqGnAACd0V4G0jE298.jpg"); + path.add("group1/M00/48/67/wKgfWWVEw2eAHadrAACd0V4G0jE558.jpg"); + path.add("group1/M01/48/76/wKgfWWVExqKAN1qDAACd0V4G0jE290.jpg"); + path.add("group1/M00/48/77/wKgfWWVExseAPdz1AACd0V4G0jE414.jpg"); + path.add("group1/M01/48/77/wKgfWWVExuuAY8EmAACd0V4G0jE943.jpg"); + path.add("group1/M02/48/87/wKgfWWVEyiaAW8sEAACd0V4G0jE362.jpg"); + path.add("group2/M00/2E/69/wKgfWWVEykqAZjvnAACd0V4G0jE974.jpg"); + path.add("group1/M00/48/88/wKgfWWVEynSAAwwDAACd0V4G0jE962.jpg"); + path.add("group1/M00/48/9A/wKgfWWVEza2AAO9dAACd0V4G0jE752.jpg"); + path.add("group1/M02/48/9B/wKgfWWVEzdWAYAYDAACd0V4G0jE926.jpg"); + path.add("group2/M01/2E/6D/wKgfWWVEzgKAPeSkAACd0V4G0jE793.jpg"); + path.add("group1/M00/48/B0/wKgfWWVE0TKAcdHBAACd0V4G0jE853.jpg"); + path.add("group1/M02/48/B1/wKgfWWVE0VqAVP_bAACd0V4G0jE215.jpg"); + path.add("group2/M02/2E/71/wKgfWWVE0YKAGWWOAACd0V4G0jE515.jpg"); + path.add("group1/M02/48/C5/wKgfWWVE1MCAfMopAACd0V4G0jE640.jpg"); + path.add("group1/M02/48/C6/wKgfWWVE1OeAK-pdAACd0V4G0jE028.jpg"); + path.add("group1/M00/48/C7/wKgfWWVE1Q2AcYI7AACd0V4G0jE241.jpg"); + path.add("group1/M02/48/DB/wKgfWWVE2ESAeWRlAACd0V4G0jE272.jpg"); + path.add("group1/M01/48/DC/wKgfWWVE2GyAY-gtAACd0V4G0jE751.jpg"); + path.add("group1/M01/48/DD/wKgfWWVE2JmAIM5ZAACd0V4G0jE075.jpg"); + path.add("group1/M01/48/F0/wKgfWWVE28WAG1QGAACd0V4G0jE889.jpg"); + path.add("group1/M01/48/F0/wKgfWWVE2-2AECDkAACd0V4G0jE267.jpg"); + path.add("group2/M00/2E/7D/wKgfWWVE3BeAI6ejAACd0V4G0jE033.jpg"); + path.add("group1/M02/49/02/wKgfWWVE302AECNPAACd0V4G0jE132.jpg"); + path.add("group1/M00/49/02/wKgfWWVE33SADwVYAACd0V4G0jE109.jpg"); + path.add("group1/M01/49/03/wKgfWWVE36GAf3ItAACd0V4G0jE227.jpg"); + path.add("group1/M00/49/14/wKgfWWVE4tKAIj5bAACd0V4G0jE739.jpg"); + path.add("group1/M01/49/15/wKgfWWVE4wCAXExwAACd0V4G0jE562.jpg"); + path.add("group1/M02/49/15/wKgfWWVE4yaAfY46AACd0V4G0jE280.jpg"); + path.add("group1/M00/49/27/wKgfWWVE5luACNiAAACd0V4G0jE630.jpg"); + path.add("group1/M01/49/28/wKgfWWVE5oOADYvQAACd0V4G0jE101.jpg"); + path.add("group1/M02/49/28/wKgfWWVE5quAdMX4AACd0V4G0jE847.jpg"); + path.add("group2/M00/2E/8C/wKgfWWVE6eKABmz4AACd0V4G0jE447.jpg"); + path.add("group1/M00/49/3C/wKgfWWVE6gqAPsfVAACd0V4G0jE189.jpg"); + path.add("group1/M02/49/3D/wKgfWWVE6i2AbwY9AACd0V4G0jE733.jpg"); + path.add("group2/M02/2E/90/wKgfWWVE7WSAORIwAACd0V4G0jE971.jpg"); + path.add("group1/M01/49/4F/wKgfWWVE7ZGAE8gyAACd0V4G0jE333.jpg"); + path.add("group1/M00/49/50/wKgfWWVE7bmABSH7AACd0V4G0jE635.jpg"); + path.add("group2/M00/2E/94/wKgfWWVE8O2AU019AACd0V4G0jE608.jpg"); + path.add("group1/M02/49/62/wKgfWWVE8RWAOuC3AACd0V4G0jE028.jpg"); + path.add("group1/M02/49/62/wKgfWWVE8TuAMDGRAACd0V4G0jE121.jpg"); + path.add("group2/M02/2E/98/wKgfWWVE9G6AGMs8AACd0V4G0jE045.jpg"); + path.add("group1/M02/49/73/wKgfWWVE9JWAG_5bAACd0V4G0jE845.jpg"); + path.add("group1/M01/49/74/wKgfWWVE9LyAeE6rAACd0V4G0jE307.jpg"); + path.add("group2/M00/2E/9B/wKgfWWVE9_WAX8zHAACd0V4G0jE553.jpg"); + path.add("group1/M01/49/85/wKgfWWVE-BuAeRPQAACd0V4G0jE045.jpg"); + path.add("group1/M02/49/86/wKgfWWVE-EOAO6RPAACd0V4G0jE966.jpg"); + path.add("group2/M01/2E/9F/wKgfWWVE-3mASly7AACd0V4G0jE522.jpg"); + path.add("group1/M01/49/96/wKgfWWVE-56AQ4oXAACd0V4G0jE751.jpg"); + path.add("group1/M01/49/97/wKgfWWVE-8iAeBxPAACd0V4G0jE184.jpg"); + path.add("group2/M00/2E/A3/wKgfWWVE_v-AKWsOAACd0V4G0jE944.jpg"); + path.add("group1/M01/49/A9/wKgfWWVE_yiAIDS9AACd0V4G0jE203.jpg"); + path.add("group1/M00/49/A9/wKgfWWVE_0yASV3hAACd0V4G0jE039.jpg"); + path.add("group1/M01/49/BB/wKgfWWVFAoaAGdlwAACd0V4G0jE028.jpg"); + path.add("group1/M01/49/BC/wKgfWWVFArCAG7I-AACd0V4G0jE691.jpg"); + path.add("group1/M02/49/BC/wKgfWWVFAtqAWUNhAACd0V4G0jE929.jpg"); + path.add("group1/M02/49/D0/wKgfWWVFBguAHr80AACd0V4G0jE321.jpg"); + path.add("group1/M01/49/D0/wKgfWWVFBjCAHJ9zAACd0V4G0jE810.jpg"); + path.add("group1/M01/49/D1/wKgfWWVFBlSAXmb8AACd0V4G0jE401.jpg"); + path.add("group2/M02/2E/B0/wKgfWWVFCZKADHAPAACd0V4G0jE977.jpg"); + path.add("group1/M02/49/E3/wKgfWWVFCbmAMDrkAACd0V4G0jE351.jpg"); + path.add("group1/M00/49/E4/wKgfWWVFCeWAc8AzAACd0V4G0jE414.jpg"); + path.add("group2/M00/2E/B4/wKgfWWVFDReAPl5AAACd0V4G0jE625.jpg"); + path.add("group1/M00/49/F7/wKgfWWVFDUSAMx_zAACd0V4G0jE898.jpg"); + path.add("group1/M01/49/F7/wKgfWWVFDWqADO6HAACd0V4G0jE464.jpg"); + path.add("group1/M00/4A/08/wKgfWWVFEJ6AKt9wAACd0V4G0jE840.jpg"); + path.add("group1/M00/4A/09/wKgfWWVFEMWAC2YdAACd0V4G0jE502.jpg"); + path.add("group1/M00/4A/0A/wKgfWWVFEO2ACT-pAACd0V4G0jE889.jpg"); + path.add("group1/M02/4A/1A/wKgfWWVFFCKAFS7_AACd0V4G0jE014.jpg"); + path.add("group1/M02/4A/1B/wKgfWWVFFEmAZ3flAACd0V4G0jE826.jpg"); + path.add("group1/M00/4A/1C/wKgfWWVFFHSAPLHxAACd0V4G0jE774.jpg"); + path.add("group1/M01/4A/2C/wKgfWWVFF6qAP05ZAACd0V4G0jE819.jpg"); + path.add("group2/M02/2E/BE/wKgfWWVFF9KAZhHlAACd0V4G0jE811.jpg"); + path.add("group1/M02/4A/2D/wKgfWWVFF_OAO-SAAACd0V4G0jE077.jpg"); + path.add("group1/M01/4A/BF/wKgfWWVFK9SAX32LAACd0V4G0jE757.jpg"); + path.add("group1/M01/4A/C1/wKgfWWVFLAKAHQt2AACd0V4G0jE767.jpg"); + path.add("group1/M00/4A/C2/wKgfWWVFLC6AFPvfAACd0V4G0jE326.jpg"); + path.add("group1/M02/4A/D6/wKgfWWVFL1uABUWDAACd0V4G0jE592.jpg"); + path.add("group2/M00/2E/E1/wKgfWWVFL4CAK81KAACd0V4G0jE045.jpg"); + path.add("group1/M00/4A/D7/wKgfWWVFL6iAQsPeAACd0V4G0jE747.jpg"); + path.add("group1/M02/4A/E7/wKgfWWVFMuSAFqe_AACd0V4G0jE018.jpg"); + path.add("group2/M00/2E/E4/wKgfWWVFMwiALeu8AACd0V4G0jE635.jpg"); + path.add("group1/M02/4A/E9/wKgfWWVFMy2ASaJyAACd0V4G0jE944.jpg"); + path.add("group1/M00/4A/FA/wKgfWWVFNmaAV-65AACd0V4G0jE536.jpg"); + path.add("group2/M01/2E/E7/wKgfWWVFNpCASswmAACd0V4G0jE704.jpg"); + path.add("group1/M02/4A/FB/wKgfWWVFNrWAdcZjAACd0V4G0jE904.jpg"); + path.add("group1/M01/4B/0D/wKgfWWVFOeyALNVbAACd0V4G0jE566.jpg"); + path.add("group2/M01/2E/EA/wKgfWWVFOg-AbHizAACd0V4G0jE796.jpg"); + path.add("group1/M01/4B/0E/wKgfWWVFOjSAccDuAACd0V4G0jE127.jpg"); + path.add("group1/M02/4B/23/wKgfWWVFPXaAcSETAACd0V4G0jE474.jpg"); + path.add("group2/M00/2E/EF/wKgfWWVFPZmAP9vnAACd0V4G0jE197.jpg"); + path.add("group1/M02/4B/24/wKgfWWVFPb2AMic5AACd0V4G0jE087.jpg"); + path.add("group1/M01/4B/36/wKgfWWVFQPmAWwplAACd0V4G0jE240.jpg"); + path.add("group2/M01/2E/F2/wKgfWWVFQR2Ab0mfAACd0V4G0jE004.jpg"); + path.add("group1/M00/4B/38/wKgfWWVFQUWAW9M4AACd0V4G0jE980.jpg"); + path.add("group1/M02/4B/4A/wKgfWWVFRHuACPvGAACd0V4G0jE512.jpg"); + path.add("group1/M02/4B/4A/wKgfWWVFRKWAF0EpAACd0V4G0jE264.jpg"); + path.add("group1/M00/4B/4B/wKgfWWVFRMmAQig_AACd0V4G0jE500.jpg"); + path.add("group1/M00/4B/5D/wKgfWWVFSAOAcD39AACd0V4G0jE410.jpg"); + path.add("group1/M01/4B/5E/wKgfWWVFSCyAVFZSAACd0V4G0jE792.jpg"); + path.add("group1/M02/4B/5F/wKgfWWVFSE6AfgIYAACd0V4G0jE181.jpg"); + path.add("group1/M02/4B/70/wKgfWWVFS4uARcUkAACd0V4G0jE207.jpg"); + path.add("group1/M02/4B/70/wKgfWWVFS7CAEpAiAACd0V4G0jE402.jpg"); + path.add("group1/M00/4B/71/wKgfWWVFS9mAWpL5AACd0V4G0jE230.jpg"); + path.add("group1/M02/4B/82/wKgfWWVFTw-Aer72AACd0V4G0jE361.jpg"); + path.add("group1/M01/4B/83/wKgfWWVFTziAK9fVAACd0V4G0jE666.jpg"); + path.add("group1/M02/4B/83/wKgfWWVFT1uASYQ2AACd0V4G0jE063.jpg"); + path.add("group1/M02/4B/95/wKgfWWVFUpWABV-4AACd0V4G0jE788.jpg"); + path.add("group1/M01/4B/96/wKgfWWVFUruAQmFSAACd0V4G0jE754.jpg"); + path.add("group2/M00/2F/01/wKgfWWVFUuOAdCoPAACd0V4G0jE137.jpg"); + path.add("group1/M02/4B/A8/wKgfWWVFVh-ACy54AACd0V4G0jE285.jpg"); + path.add("group1/M02/4B/A9/wKgfWWVFVkSAP_L3AACd0V4G0jE862.jpg"); + path.add("group1/M00/4B/A9/wKgfWWVFVmOAKzXaAACd0V4G0jE181.jpg"); + path.add("group1/M02/4B/BC/wKgfWWVFWaOAQ4H8AACd0V4G0jE971.jpg"); + path.add("group1/M00/4B/BD/wKgfWWVFWciAZ-7WAACd0V4G0jE771.jpg"); + path.add("group1/M02/4B/BF/wKgfWWVFWfGAXSSXAACd0V4G0jE976.jpg"); + path.add("group1/M01/4B/D3/wKgfWWVFXSyACVCQAACd0V4G0jE717.jpg"); + path.add("group1/M00/4B/D3/wKgfWWVFXVGAHgUyAACd0V4G0jE268.jpg"); + path.add("group2/M02/2F/0A/wKgfWWVFXXOAMziTAACd0V4G0jE981.jpg"); + path.add("group1/M02/4B/E5/wKgfWWVFYK6AZClUAACd0V4G0jE502.jpg"); + path.add("group1/M02/4B/E6/wKgfWWVFYNKAf9pwAACd0V4G0jE153.jpg"); + path.add("group2/M00/2F/0E/wKgfWWVFYPaAB4NKAACd0V4G0jE705.jpg"); + path.add("group1/M02/4B/F9/wKgfWWVFZDiAcUGvAACd0V4G0jE421.jpg"); + path.add("group1/M00/4B/F9/wKgfWWVFZF2AMCWZAACd0V4G0jE993.jpg"); + path.add("group1/M01/4B/FA/wKgfWWVFZIWAIjpNAACd0V4G0jE592.jpg"); + path.add("group1/M00/4C/0C/wKgfWWVFZ7qAZbPsAACd0V4G0jE261.jpg"); + path.add("group1/M01/4C/0C/wKgfWWVFZ-CAYfIyAACd0V4G0jE947.jpg"); + path.add("group1/M01/4C/0D/wKgfWWVFaAiAGQPVAACd0V4G0jE323.jpg"); + path.add("group2/M00/2F/17/wKgfWWVFa0SAIlTwAACd0V4G0jE062.jpg"); + path.add("group1/M00/4C/1E/wKgfWWVFa2mAFzRgAACd0V4G0jE310.jpg"); + path.add("group1/M01/4C/1F/wKgfWWVFa4uAKsxTAACd0V4G0jE332.jpg"); + path.add("group2/M02/2F/1A/wKgfWWVFbsqAdSv2AACd0V4G0jE347.jpg"); + path.add("group1/M00/4C/32/wKgfWWVFbu-AbapuAACd0V4G0jE138.jpg"); + path.add("group1/M02/4C/32/wKgfWWVFbxiADoNwAACd0V4G0jE344.jpg"); + path.add("group2/M01/2F/1D/wKgfWWVFck-AJy84AACd0V4G0jE886.jpg"); + path.add("group1/M02/4C/45/wKgfWWVFcnOAO2ogAACd0V4G0jE121.jpg"); + path.add("group1/M00/4C/45/wKgfWWVFcpaAe4G1AACd0V4G0jE880.jpg"); + path.add("group2/M00/2F/21/wKgfWWVFddaAIgCaAACd0V4G0jE905.jpg"); + path.add("group1/M02/4C/5A/wKgfWWVFdfiAEF0NAACd0V4G0jE535.jpg"); + path.add("group1/M02/4C/5B/wKgfWWVFdhuAI-irAACd0V4G0jE498.jpg"); + path.add("group2/M00/2F/25/wKgfWWVFeV2AJBzuAACd0V4G0jE539.jpg"); + path.add("group1/M02/4C/6D/wKgfWWVFeX-AfZ3vAACd0V4G0jE730.jpg"); + path.add("group1/M01/4C/6E/wKgfWWVFeaGAAxEuAACd0V4G0jE626.jpg"); + path.add("group2/M02/2F/28/wKgfWWVFfOOAIFMmAACd0V4G0jE597.jpg"); + path.add("group1/M00/4C/81/wKgfWWVFfQaATF8pAACd0V4G0jE844.jpg"); + path.add("group1/M01/4C/81/wKgfWWVFfSmAahYSAACd0V4G0jE187.jpg"); + path.add("group2/M01/2F/2B/wKgfWWVFgGeAFigrAACd0V4G0jE683.jpg"); + path.add("group1/M00/4C/94/wKgfWWVFgIqAXaJ-AACd0V4G0jE589.jpg"); + path.add("group1/M02/4C/95/wKgfWWVFgLGAZzMgAACd0V4G0jE751.jpg"); + path.add("group1/M00/4C/A7/wKgfWWVFg--ADStyAACd0V4G0jE670.jpg"); + path.add("group1/M00/4C/A7/wKgfWWVFhBKATby6AACd0V4G0jE006.jpg"); + path.add("group1/M01/4C/A8/wKgfWWVFhDSAfycZAACd0V4G0jE476.jpg"); + path.add("group1/M00/4C/B9/wKgfWWVFh3KAI2fDAACd0V4G0jE336.jpg"); + path.add("group1/M02/4C/BA/wKgfWWVFh5aAJ49hAACd0V4G0jE330.jpg"); + path.add("group1/M01/4C/BA/wKgfWWVFh7mALRTAAACd0V4G0jE863.jpg"); + path.add("group1/M00/4C/CC/wKgfWWVFivuABQI8AACd0V4G0jE409.jpg"); + path.add("group1/M00/4C/CD/wKgfWWVFixqAMrRBAACd0V4G0jE841.jpg"); + path.add("group1/M02/4C/CD/wKgfWWVFi0GAF0kdAACd0V4G0jE519.jpg"); + path.add("group1/M00/4C/DF/wKgfWWVFjoCAS4VSAACd0V4G0jE741.jpg"); + path.add("group1/M02/4C/E0/wKgfWWVFjqCAfkgkAACd0V4G0jE712.jpg"); + path.add("group1/M00/4C/E0/wKgfWWVFjsOAaInFAACd0V4G0jE564.jpg"); + path.add("group1/M01/4C/F4/wKgfWWVFkgiAT9cOAACd0V4G0jE393.jpg"); + path.add("group1/M00/4C/F4/wKgfWWVFkiqAXQhuAACd0V4G0jE972.jpg"); + path.add("group1/M01/4C/F5/wKgfWWVFkkyAHXR2AACd0V4G0jE061.jpg"); + path.add("group1/M00/4D/09/wKgfWWVFlY2AVJVyAACd0V4G0jE551.jpg"); + path.add("group1/M01/4D/0A/wKgfWWVFla-Abwn1AACd0V4G0jE502.jpg"); + path.add("group1/M02/4D/0A/wKgfWWVFldGAMazHAACd0V4G0jE603.jpg"); + path.add("group1/M01/4D/1D/wKgfWWVFmRKAQNoQAACd0V4G0jE215.jpg"); + path.add("group2/M02/2F/41/wKgfWWVFmTWAE-arAACd0V4G0jE011.jpg"); + path.add("group1/M00/4D/1E/wKgfWWVFmViAaXvHAACd0V4G0jE422.jpg"); + path.add("group1/M02/4D/30/wKgfWWVFnJqAMFd1AACd0V4G0jE187.jpg"); + path.add("group1/M02/4D/31/wKgfWWVFnL2Ae_eMAACd0V4G0jE458.jpg"); + path.add("group1/M00/4D/31/wKgfWWVFnN-AS0vGAACd0V4G0jE293.jpg"); + path.add("group1/M00/4D/42/wKgfWWVFoB2AAxNAAACd0V4G0jE074.jpg"); + path.add("group2/M00/2F/48/wKgfWWVFoEKARHYMAACd0V4G0jE074.jpg"); + path.add("group1/M00/4D/43/wKgfWWVFoGuAE_sIAACd0V4G0jE300.jpg"); + path.add("group1/M00/4D/54/wKgfWWVFo6KAdbrTAACd0V4G0jE458.jpg"); + path.add("group2/M00/2F/4B/wKgfWWVFo8eAVb0jAACd0V4G0jE386.jpg"); + path.add("group1/M00/4D/55/wKgfWWVFo-mATbwkAACd0V4G0jE431.jpg"); + path.add("group1/M02/4D/67/wKgfWWVFpyiAH9jxAACd0V4G0jE039.jpg"); + path.add("group1/M01/4D/68/wKgfWWVFp02APbB8AACd0V4G0jE690.jpg"); + path.add("group1/M02/4D/68/wKgfWWVFp3KAb_cwAACd0V4G0jE408.jpg"); + path.add("group1/M01/4D/7A/wKgfWWVFqqqAIvL_AACd0V4G0jE928.jpg"); + path.add("group2/M01/2F/52/wKgfWWVFqtGAXbfPAACd0V4G0jE398.jpg"); + path.add("group1/M00/4D/7B/wKgfWWVFqvSAcjK0AACd0V4G0jE237.jpg"); + path.add("group1/M01/4D/8E/wKgfWWVFrjSAH2xlAACd0V4G0jE618.jpg"); + path.add("group1/M02/4D/8F/wKgfWWVFrl6AAz53AACd0V4G0jE264.jpg"); + path.add("group1/M02/4D/90/wKgfWWVFroGAYZWBAACd0V4G0jE245.jpg"); + path.add("group1/M02/4D/A3/wKgfWWVFsbqARPUWAACd0V4G0jE691.jpg"); + path.add("group1/M01/4D/A3/wKgfWWVFsd-ADgamAACd0V4G0jE871.jpg"); + path.add("group1/M02/4D/A4/wKgfWWVFsgKAeGcRAACd0V4G0jE826.jpg"); + path.add("group1/M00/4D/B6/wKgfWWVFtUGACIVWAACd0V4G0jE241.jpg"); + path.add("group1/M02/4D/B6/wKgfWWVFtWWAaEXVAACd0V4G0jE654.jpg"); + path.add("group1/M02/4D/B7/wKgfWWVFtYiAb8hpAACd0V4G0jE427.jpg"); + path.add("group1/M00/4D/C9/wKgfWWVFuMaALLcoAACd0V4G0jE643.jpg"); + path.add("group1/M01/4D/CA/wKgfWWVFuO2AII_cAACd0V4G0jE659.jpg"); + path.add("group1/M01/4D/CA/wKgfWWVFuQ2AOtvWAACd0V4G0jE673.jpg"); + path.add("group1/M00/4D/DC/wKgfWWVFvEyAd7VyAACd0V4G0jE405.jpg"); + path.add("group1/M00/4D/DD/wKgfWWVFvHOABXB1AACd0V4G0jE674.jpg"); + path.add("group1/M01/4D/DD/wKgfWWVFvJWALhM7AACd0V4G0jE741.jpg"); + path.add("group1/M00/4D/EF/wKgfWWVFv9OAXje5AACd0V4G0jE400.jpg"); + path.add("group1/M00/4D/EF/wKgfWWVFv_WAd-gDAACd0V4G0jE158.jpg"); + path.add("group2/M01/2F/66/wKgfWWVFwByAJS_yAACd0V4G0jE826.jpg"); + path.add("group1/M00/4E/02/wKgfWWVFw1eAC7-QAACd0V4G0jE656.jpg"); + path.add("group1/M02/4E/02/wKgfWWVFw3qALILQAACd0V4G0jE791.jpg"); + path.add("group2/M01/2F/68/wKgfWWVFw6GAXHoSAACd0V4G0jE133.jpg"); + path.add("group1/M02/4E/15/wKgfWWVFxt2AWA8OAACd0V4G0jE011.jpg"); + path.add("group1/M02/4E/16/wKgfWWVFxwSAO-M9AACd0V4G0jE000.jpg"); + path.add("group2/M02/2F/6B/wKgfWWVFxyeAWvHIAACd0V4G0jE104.jpg"); + path.add("group1/M02/4E/29/wKgfWWVFymaAcOOmAACd0V4G0jE852.jpg"); + path.add("group1/M00/4E/2A/wKgfWWVFyomAYoBUAACd0V4G0jE565.jpg"); + path.add("group2/M00/2F/6F/wKgfWWVFyquAfcUeAACd0V4G0jE112.jpg"); + path.add("group2/M00/2F/71/wKgfWWVFzfGAKFt2AACd0V4G0jE589.jpg"); + path.add("group1/M01/4E/3F/wKgfWWVFzhaABOFfAACd0V4G0jE126.jpg"); + path.add("group1/M00/4E/40/wKgfWWVFzj-AHtX6AACd0V4G0jE961.jpg"); + path.add("group2/M01/2F/74/wKgfWWVF0XeAFPM_AACd0V4G0jE789.jpg"); + path.add("group1/M01/4E/52/wKgfWWVF0ZyAfRb5AACd0V4G0jE801.jpg"); + path.add("group1/M00/4E/53/wKgfWWVF0cWAT7fbAACd0V4G0jE947.jpg"); + path.add("group1/M01/4E/65/wKgfWWVF1PmAAkeMAACd0V4G0jE802.jpg"); + path.add("group1/M02/4E/66/wKgfWWVF1R2ABrZTAACd0V4G0jE028.jpg"); + path.add("group1/M00/4E/66/wKgfWWVF1UGABE2SAACd0V4G0jE526.jpg"); + path.add("group1/M01/4E/79/wKgfWWVF2ICAW4ehAACd0V4G0jE135.jpg"); + path.add("group1/M01/4E/79/wKgfWWVF2KSAWikrAACd0V4G0jE903.jpg"); + path.add("group1/M00/4E/7A/wKgfWWVF2MeAKRMvAACd0V4G0jE921.jpg"); + path.add("group2/M00/2F/7D/wKgfWWVF3ASAWUHMAACd0V4G0jE501.jpg"); + path.add("group1/M01/4E/8B/wKgfWWVF3DKADrwFAACd0V4G0jE783.jpg"); + path.add("group1/M00/4E/8C/wKgfWWVF3FWAfhIkAACd0V4G0jE939.jpg"); + path.add("group2/M02/2F/80/wKgfWWVF342ADxxLAACd0V4G0jE064.jpg"); + path.add("group1/M01/4E/9E/wKgfWWVF37GAR4_NAACd0V4G0jE550.jpg"); + path.add("group1/M02/4E/9F/wKgfWWVF39aAV_f8AACd0V4G0jE521.jpg"); + path.add("group1/M01/4E/B1/wKgfWWVF4w-ANa92AACd0V4G0jE322.jpg"); + path.add("group1/M02/4E/B1/wKgfWWVF4zmAaGTQAACd0V4G0jE322.jpg"); + path.add("group1/M01/4E/B2/wKgfWWVF42OARsrtAACd0V4G0jE672.jpg"); + path.add("group2/M01/2F/86/wKgfWWVF5piATjTwAACd0V4G0jE567.jpg"); + path.add("group1/M01/4E/C5/wKgfWWVF5r2AQSJIAACd0V4G0jE857.jpg"); + path.add("group1/M01/4E/C5/wKgfWWVF5uKAPj63AACd0V4G0jE495.jpg"); + path.add("group1/M02/4E/DA/wKgfWWVF6hyAKtBmAACd0V4G0jE202.jpg"); + path.add("group1/M01/4E/DB/wKgfWWVF6keATZftAACd0V4G0jE492.jpg"); + path.add("group1/M02/4E/DB/wKgfWWVF6muAOvwFAACd0V4G0jE334.jpg"); + path.add("group1/M02/4E/ED/wKgfWWVF7aGAIzYuAACd0V4G0jE872.jpg"); + path.add("group1/M00/4E/EE/wKgfWWVF7caAFWyHAACd0V4G0jE392.jpg"); + path.add("group1/M01/4E/EE/wKgfWWVF7fGAF5N3AACd0V4G0jE748.jpg"); + path.add("group1/M01/4F/01/wKgfWWVF8SuACzyhAACd0V4G0jE683.jpg"); + path.add("group1/M00/4F/02/wKgfWWVF8VGARXytAACd0V4G0jE708.jpg"); + path.add("group1/M01/4F/02/wKgfWWVF8XqAURnmAACd0V4G0jE205.jpg"); + path.add("group1/M02/4F/14/wKgfWWVF9LKAPIhxAACd0V4G0jE659.jpg"); + path.add("group2/M00/2F/93/wKgfWWVF9NyAFrFiAACd0V4G0jE187.jpg"); + path.add("group1/M02/4F/15/wKgfWWVF9QeAHXA_AACd0V4G0jE377.jpg"); + path.add("group1/M01/4F/26/wKgfWWVF-DSAc1s6AACd0V4G0jE610.jpg"); + path.add("group2/M01/2F/96/wKgfWWVF-F6AE2JKAACd0V4G0jE811.jpg"); + path.add("group1/M00/4F/26/wKgfWWVF-ICALPl5AACd0V4G0jE481.jpg"); + path.add("group1/M00/4F/38/wKgfWWVF-7uAAaABAACd0V4G0jE779.jpg"); + path.add("group1/M01/4F/39/wKgfWWVF-9-AC4ELAACd0V4G0jE981.jpg"); + path.add("group1/M02/4F/39/wKgfWWVF_AaAPMqpAACd0V4G0jE551.jpg"); + path.add("group1/M00/4F/4A/wKgfWWVF_0KABzC8AACd0V4G0jE386.jpg"); + path.add("group2/M00/2F/9D/wKgfWWVF_2qAJdGpAACd0V4G0jE953.jpg"); + path.add("group1/M01/4F/4B/wKgfWWVF_4yAO5JAAACd0V4G0jE941.jpg"); + path.add("group1/M01/4F/5D/wKgfWWVGAseAEaP7AACd0V4G0jE940.jpg"); + path.add("group2/M00/2F/A1/wKgfWWVGAu6AEnaiAACd0V4G0jE138.jpg"); + path.add("group1/M00/4F/5E/wKgfWWVGAxGABKqdAACd0V4G0jE214.jpg"); + path.add("group1/M01/4F/73/wKgfWWVGBlGAVTovAACd0V4G0jE581.jpg"); + path.add("group2/M00/2F/A5/wKgfWWVGBnSASYcGAACd0V4G0jE035.jpg"); + path.add("group1/M01/4F/73/wKgfWWVGBpaAPunxAACd0V4G0jE949.jpg"); + path.add("group1/M00/4F/85/wKgfWWVGCdmAXQ5MAACd0V4G0jE912.jpg"); + path.add("group2/M00/2F/A9/wKgfWWVGCfuAHJZZAACd0V4G0jE266.jpg"); + path.add("group1/M02/4F/86/wKgfWWVGCh2AP4v9AACd0V4G0jE472.jpg"); + path.add("group1/M00/4F/97/wKgfWWVGDV6AbLeOAACd0V4G0jE552.jpg"); + path.add("group1/M02/4F/98/wKgfWWVGDYiAemkPAACd0V4G0jE853.jpg"); + path.add("group1/M00/4F/99/wKgfWWVGDauAJbyQAACd0V4G0jE228.jpg"); + path.add("group1/M00/4F/AA/wKgfWWVGEOGAWGscAACd0V4G0jE402.jpg"); + path.add("group1/M00/4F/AA/wKgfWWVGEQuAKQmLAACd0V4G0jE579.jpg"); + path.add("group1/M00/4F/AB/wKgfWWVGETCAGJsWAACd0V4G0jE666.jpg"); + path.add("group1/M01/4F/BB/wKgfWWVGFGiAO-pFAACd0V4G0jE356.jpg"); + path.add("group1/M01/4F/BC/wKgfWWVGFI2AZsZ_AACd0V4G0jE546.jpg"); + path.add("group1/M02/4F/BD/wKgfWWVGFLGAVo8vAACd0V4G0jE320.jpg"); + path.add("group1/M02/4F/CD/wKgfWWVGF_KAG1Y1AACd0V4G0jE056.jpg"); + path.add("group1/M01/4F/CE/wKgfWWVGGBeAVYj9AACd0V4G0jE472.jpg"); + path.add("group1/M02/4F/CE/wKgfWWVGGDuAEd7tAACd0V4G0jE429.jpg"); + path.add("group1/M01/4F/E0/wKgfWWVGG3iAG1lZAACd0V4G0jE404.jpg"); + path.add("group1/M01/4F/E0/wKgfWWVGG6CAMy4QAACd0V4G0jE354.jpg"); + path.add("group1/M02/4F/E1/wKgfWWVGG8CAQslNAACd0V4G0jE002.jpg"); + path.add("group1/M02/4F/F2/wKgfWWVGHv6AJqhMAACd0V4G0jE533.jpg"); + path.add("group1/M02/4F/F3/wKgfWWVGHyWAGYkzAACd0V4G0jE399.jpg"); + path.add("group2/M02/2F/C0/wKgfWWVGH0uAd2H_AACd0V4G0jE817.jpg"); + path.add("group1/M01/50/07/wKgfWWVGIoKAAs1HAACd0V4G0jE406.jpg"); + path.add("group1/M00/50/07/wKgfWWVGIquAB0mFAACd0V4G0jE248.jpg"); + path.add("group1/M01/50/08/wKgfWWVGItSAF_aFAACd0V4G0jE113.jpg"); + path.add("group1/M00/50/19/wKgfWWVGJg2AI7Z-AACd0V4G0jE603.jpg"); + path.add("group1/M01/50/1A/wKgfWWVGJjGAebltAACd0V4G0jE069.jpg"); + path.add("group1/M00/50/1B/wKgfWWVGJlaAYFCSAACd0V4G0jE070.jpg"); + path.add("group1/M02/50/2D/wKgfWWVGKYyAMVs_AACd0V4G0jE681.jpg"); + path.add("group1/M02/50/2E/wKgfWWVGKbGAZQJqAACd0V4G0jE046.jpg"); + path.add("group2/M00/2F/CB/wKgfWWVGKdmALOyLAACd0V4G0jE001.jpg"); + path.add("group1/M02/50/40/wKgfWWVGLRSAbor3AACd0V4G0jE198.jpg"); + path.add("group1/M00/50/40/wKgfWWVGLT6AIIuPAACd0V4G0jE177.jpg"); + path.add("group1/M02/50/41/wKgfWWVGLWeAF1F8AACd0V4G0jE560.jpg"); + path.add("group1/M02/50/52/wKgfWWVGMJmABokeAACd0V4G0jE897.jpg"); + path.add("group1/M02/50/52/wKgfWWVGML2AYvk8AACd0V4G0jE601.jpg"); + path.add("group1/M01/50/53/wKgfWWVGMOGABiZUAACd0V4G0jE573.jpg"); + path.add("group1/M01/50/64/wKgfWWVGNCGAbI9pAACd0V4G0jE480.jpg"); + path.add("group1/M01/50/65/wKgfWWVGNEWAIMrsAACd0V4G0jE054.jpg"); + path.add("group2/M01/2F/D5/wKgfWWVGNGiAYK5kAACd0V4G0jE691.jpg"); + path.add("group1/M02/50/F7/wKgfWWVGRxGAZY-QAACd0V4G0jE120.jpg"); + path.add("group1/M02/50/F8/wKgfWWVGRzaADlpzAACd0V4G0jE386.jpg"); + path.add("group1/M00/50/FA/wKgfWWVGR1mALz4DAACd0V4G0jE938.jpg"); + path.add("group1/M02/51/0C/wKgfWWVGSpqAEtPOAACd0V4G0jE634.jpg"); + path.add("group1/M02/51/0D/wKgfWWVGSrqABq5AAACd0V4G0jE002.jpg"); + path.add("group2/M01/2F/F3/wKgfWWVGSuGAPY3sAACd0V4G0jE659.jpg"); + path.add("group1/M00/51/1F/wKgfWWVGTiOAAcvWAACd0V4G0jE330.jpg"); + path.add("group1/M00/51/20/wKgfWWVGTkSAfLzFAACd0V4G0jE071.jpg"); + path.add("group2/M00/2F/F7/wKgfWWVGTmWAKPeSAACd0V4G0jE154.jpg"); + path.add("group1/M01/51/31/wKgfWWVGUaaAYqq9AACd0V4G0jE571.jpg"); + path.add("group1/M00/51/33/wKgfWWVGUc6AOE-aAACd0V4G0jE041.jpg"); + path.add("group1/M02/51/33/wKgfWWVGUfmATWwvAACd0V4G0jE750.jpg"); + path.add("group2/M02/2F/FD/wKgfWWVGXSqAInVGAACd0V4G0jE950.jpg"); + path.add("group1/M01/51/48/wKgfWWVGXUyALFF4AACd0V4G0jE556.jpg"); + path.add("group1/M02/51/49/wKgfWWVGXWyAOISxAACd0V4G0jE367.jpg"); + path.add("group2/M02/30/01/wKgfWWVGYLCAdZbQAACd0V4G0jE043.jpg"); + path.add("group1/M00/51/5B/wKgfWWVGYNmAfvAcAACd0V4G0jE411.jpg"); + path.add("group1/M00/51/5C/wKgfWWVGYQyAThnDAACd0V4G0jE684.jpg"); + path.add("group1/M02/51/6D/wKgfWWVGZD6ASF4sAACd0V4G0jE741.jpg"); + path.add("group1/M01/51/6E/wKgfWWVGZFiAMMBMAACd0V4G0jE811.jpg"); + path.add("group1/M02/51/6F/wKgfWWVGZHuAMdmmAACd0V4G0jE496.jpg"); + path.add("group2/M02/30/08/wKgfWWVGZ72AdE1sAACd0V4G0jE264.jpg"); + path.add("group1/M02/51/81/wKgfWWVGZ-CAZcniAACd0V4G0jE335.jpg"); + path.add("group1/M00/51/82/wKgfWWVGaAGANtTnAACd0V4G0jE498.jpg"); + path.add("group1/M00/51/91/wKgfWWVGa0iAJtchAACd0V4G0jE396.jpg"); + path.add("group1/M02/51/92/wKgfWWVGa2SAUZgZAACd0V4G0jE745.jpg"); + path.add("group1/M01/51/94/wKgfWWVGa4aAGNhCAACd0V4G0jE926.jpg"); + path.add("group2/M00/30/25/wKgfWWVGeJeAYUTqAACd0V4G0jE447.jpg"); + path.add("group1/M00/52/21/wKgfWWVGeLaAY-omAACd0V4G0jE519.jpg"); + path.add("group1/M01/52/23/wKgfWWVGeNuANJg_AACd0V4G0jE133.jpg"); + path.add("group2/M00/30/2A/wKgfWWVGfBmAP8J5AACd0V4G0jE536.jpg"); + path.add("group1/M00/52/38/wKgfWWVGfDeACeRoAACd0V4G0jE427.jpg"); + path.add("group1/M01/52/39/wKgfWWVGfFuAWRc8AACd0V4G0jE330.jpg"); + path.add("group2/M01/30/2D/wKgfWWVGf6CAe5WwAACd0V4G0jE489.jpg"); + path.add("group1/M02/52/4B/wKgfWWVGf76AF35RAACd0V4G0jE554.jpg"); + path.add("group2/M00/30/2E/wKgfWWVGf-CAaUGOAACd0V4G0jE242.jpg"); + path.add("group2/M02/30/31/wKgfWWVGgyWAdgI9AACd0V4G0jE665.jpg"); + path.add("group1/M02/52/5E/wKgfWWVGg0OAb4lpAACd0V4G0jE309.jpg"); + path.add("group2/M02/30/31/wKgfWWVGg2aAQKHoAACd0V4G0jE394.jpg"); + path.add("group1/M00/52/6F/wKgfWWVGhq-AZgjHAACd0V4G0jE397.jpg"); + path.add("group1/M02/52/70/wKgfWWVGhs2AXOP2AACd0V4G0jE189.jpg"); + path.add("group1/M01/52/71/wKgfWWVGhu-AHPgsAACd0V4G0jE606.jpg"); + path.add("group2/M00/30/38/wKgfWWVGijKAVhK_AACd0V4G0jE188.jpg"); + path.add("group1/M01/52/83/wKgfWWVGilaAbW-wAACd0V4G0jE076.jpg"); + path.add("group1/M02/52/83/wKgfWWVGinSACT1ZAACd0V4G0jE945.jpg"); + path.add("group1/M00/52/94/wKgfWWVGjbqAPD_dAACd0V4G0jE592.jpg"); + path.add("group1/M02/52/96/wKgfWWVGjd6Aa7PZAACd0V4G0jE475.jpg"); + path.add("group1/M02/52/97/wKgfWWVGjfyAfCMTAACd0V4G0jE083.jpg"); + path.add("group1/M02/52/A9/wKgfWWVGkUSAIm8IAACd0V4G0jE256.jpg"); + path.add("group1/M01/52/AA/wKgfWWVGkYKAc7p3AACd0V4G0jE896.jpg"); + path.add("group2/M02/30/40/wKgfWWVGkaqAVWOAAACd0V4G0jE659.jpg"); + path.add("group1/M01/52/BD/wKgfWWVGlMiAHZWYAACd0V4G0jE490.jpg"); + path.add("group1/M01/52/BE/wKgfWWVGlOaAWOF_AACd0V4G0jE491.jpg"); + path.add("group1/M00/52/BF/wKgfWWVGlQmAK3PuAACd0V4G0jE599.jpg"); + path.add("group1/M00/52/CF/wKgfWWVGmEuAVPfmAACd0V4G0jE220.jpg"); + path.add("group1/M00/52/D1/wKgfWWVGmGmAR6yYAACd0V4G0jE622.jpg"); + path.add("group1/M02/52/D1/wKgfWWVGmIyAQt69AACd0V4G0jE225.jpg"); + path.add("group1/M00/52/E2/wKgfWWVGm9GAcglcAACd0V4G0jE403.jpg"); + path.add("group1/M02/52/E3/wKgfWWVGm_SAftxEAACd0V4G0jE069.jpg"); + path.add("group1/M01/52/E4/wKgfWWVGnBKAROG8AACd0V4G0jE957.jpg"); + path.add("group1/M02/52/F5/wKgfWWVGn1iAAiwtAACd0V4G0jE222.jpg"); + path.add("group1/M01/52/F6/wKgfWWVGn3yAW0bwAACd0V4G0jE338.jpg"); + path.add("group1/M01/52/F7/wKgfWWVGn5mAYpdgAACd0V4G0jE919.jpg"); + path.add("group1/M02/53/06/wKgfWWVGot-AH6fzAACd0V4G0jE901.jpg"); + path.add("group1/M02/53/07/wKgfWWVGov6AZyAfAACd0V4G0jE658.jpg"); + path.add("group1/M01/53/08/wKgfWWVGoyCAf_URAACd0V4G0jE205.jpg"); + path.add("group1/M01/53/19/wKgfWWVGpmiAP0ubAACd0V4G0jE630.jpg"); + path.add("group2/M00/30/56/wKgfWWVGpoWAESXoAACd0V4G0jE778.jpg"); + path.add("group1/M00/53/1B/wKgfWWVGpqiAUjWqAACd0V4G0jE650.jpg"); + path.add("group1/M01/53/2C/wKgfWWVGqeaAbb3EAACd0V4G0jE756.jpg"); + path.add("group1/M02/53/2D/wKgfWWVGqgqAIJo2AACd0V4G0jE695.jpg"); + path.add("group1/M01/53/2E/wKgfWWVGqiiAE16UAACd0V4G0jE867.jpg"); + path.add("group1/M01/53/40/wKgfWWVGrXWATUBAAACd0V4G0jE530.jpg"); + path.add("group1/M02/53/41/wKgfWWVGrZOAC0o_AACd0V4G0jE702.jpg"); + path.add("group1/M00/53/42/wKgfWWVGrbaAVdiAAACd0V4G0jE051.jpg"); + path.add("group1/M00/53/54/wKgfWWVGsPqAZHWyAACd0V4G0jE003.jpg"); + path.add("group2/M02/30/62/wKgfWWVGsRmARE3yAACd0V4G0jE887.jpg"); + path.add("group1/M01/53/55/wKgfWWVGsTyAG681AACd0V4G0jE502.jpg"); + path.add("group1/M02/53/66/wKgfWWVGtIGAOSPOAACd0V4G0jE743.jpg"); + path.add("group2/M02/30/66/wKgfWWVGtJ6ADzX8AACd0V4G0jE834.jpg"); + path.add("group1/M00/53/68/wKgfWWVGtMKALj-LAACd0V4G0jE624.jpg"); + path.add("group1/M01/53/79/wKgfWWVGuAKAYLNxAACd0V4G0jE640.jpg"); + path.add("group1/M02/53/7A/wKgfWWVGuCWADIynAACd0V4G0jE042.jpg"); + path.add("group1/M02/53/7B/wKgfWWVGuEiAUsIzAACd0V4G0jE703.jpg"); + path.add("group1/M00/53/8C/wKgfWWVGu46AEKZeAACd0V4G0jE751.jpg"); + path.add("group1/M00/53/8C/wKgfWWVGu6uAfFl4AACd0V4G0jE451.jpg"); + path.add("group1/M02/53/8E/wKgfWWVGu8-AFtuFAACd0V4G0jE194.jpg"); + path.add("group1/M02/53/9D/wKgfWWVGvxOAMNSyAACd0V4G0jE308.jpg"); + path.add("group1/M02/53/9E/wKgfWWVGvzCAaZyjAACd0V4G0jE960.jpg"); + path.add("group1/M00/53/9F/wKgfWWVGv1OAM7rOAACd0V4G0jE748.jpg"); + path.add("group1/M00/53/AF/wKgfWWVGwpSAUYv1AACd0V4G0jE857.jpg"); + path.add("group1/M01/53/B0/wKgfWWVGwreAOoiDAACd0V4G0jE056.jpg"); + path.add("group1/M02/53/B2/wKgfWWVGwtqAcaGnAACd0V4G0jE157.jpg"); + path.add("group1/M00/53/C2/wKgfWWVGxhmACJdFAACd0V4G0jE582.jpg"); + path.add("group1/M00/53/C3/wKgfWWVGxj2AQ-aZAACd0V4G0jE359.jpg"); + path.add("group1/M00/53/C4/wKgfWWVGxlmAJsslAACd0V4G0jE360.jpg"); + path.add("group1/M02/53/D5/wKgfWWVGyZ2AQXumAACd0V4G0jE840.jpg"); + path.add("group1/M02/53/D6/wKgfWWVGycCANh0ZAACd0V4G0jE400.jpg"); + path.add("group1/M02/53/D7/wKgfWWVGyd6AeYMfAACd0V4G0jE365.jpg"); + path.add("group1/M02/53/E9/wKgfWWVGzSSAb1HkAACd0V4G0jE905.jpg"); + path.add("group1/M00/53/EA/wKgfWWVGzUeACE3IAACd0V4G0jE050.jpg"); + path.add("group1/M02/53/EB/wKgfWWVGzWqAbMz_AACd0V4G0jE718.jpg"); + path.add("group1/M02/53/FB/wKgfWWVG0KmAHi1RAACd0V4G0jE494.jpg"); + path.add("group1/M01/53/FC/wKgfWWVG0M2ANg0gAACd0V4G0jE932.jpg"); + path.add("group1/M02/53/FD/wKgfWWVG0OyAKnwOAACd0V4G0jE043.jpg"); + path.add("group1/M02/54/0E/wKgfWWVG1DSAWUzzAACd0V4G0jE412.jpg"); + path.add("group1/M01/54/0F/wKgfWWVG1FKANuwEAACd0V4G0jE577.jpg"); + path.add("group1/M02/54/10/wKgfWWVG1HWADzKqAACd0V4G0jE485.jpg"); + path.add("group1/M00/54/20/wKgfWWVG17eAXR0PAACd0V4G0jE052.jpg"); + path.add("group1/M01/54/21/wKgfWWVG19WAIcarAACd0V4G0jE188.jpg"); + path.add("group1/M00/54/22/wKgfWWVG1_iAArY2AACd0V4G0jE890.jpg"); + path.add("group2/M02/30/91/wKgfWWVG20GAVYj6AACd0V4G0jE762.jpg"); + path.add("group1/M02/54/34/wKgfWWVG22SAXcAKAACd0V4G0jE911.jpg"); + path.add("group2/M01/30/92/wKgfWWVG24KAZjerAACd0V4G0jE493.jpg"); + path.add("group2/M02/30/95/wKgfWWVG3siAQxWXAACd0V4G0jE444.jpg"); + path.add("group1/M01/54/46/wKgfWWVG3uqASmAKAACd0V4G0jE097.jpg"); + path.add("group2/M00/30/96/wKgfWWVG3wmAFok_AACd0V4G0jE406.jpg"); + path.add("group2/M00/30/99/wKgfWWVG4kyAXTuwAACd0V4G0jE207.jpg"); + path.add("group1/M01/54/58/wKgfWWVG4nCATyFNAACd0V4G0jE295.jpg"); + path.add("group1/M00/54/59/wKgfWWVG4pKAe0zGAACd0V4G0jE205.jpg"); + path.add("group2/M02/30/9D/wKgfWWVG5dSATEXxAACd0V4G0jE692.jpg"); + path.add("group1/M02/54/6B/wKgfWWVG5feAR6JEAACd0V4G0jE548.jpg"); + path.add("group1/M01/54/6C/wKgfWWVG5hWAVWh7AACd0V4G0jE890.jpg"); + path.add("group1/M02/54/7E/wKgfWWVG6ViAMJyrAACd0V4G0jE488.jpg"); + path.add("group1/M00/54/7F/wKgfWWVG6XuAJM8kAACd0V4G0jE277.jpg"); + path.add("group1/M02/54/80/wKgfWWVG6Z6AE9NLAACd0V4G0jE532.jpg"); + path.add("group1/M01/54/90/wKgfWWVG7N-ACCPBAACd0V4G0jE659.jpg"); + path.add("group1/M02/54/91/wKgfWWVG7P2AF1JeAACd0V4G0jE611.jpg"); + path.add("group1/M01/54/92/wKgfWWVG7SCAPSYOAACd0V4G0jE422.jpg"); + path.add("group2/M01/30/AA/wKgfWWVG8GSAbhNdAACd0V4G0jE100.jpg"); + path.add("group1/M01/54/A4/wKgfWWVG8IKAcg1cAACd0V4G0jE477.jpg"); + path.add("group1/M02/54/A5/wKgfWWVG8KaAB_IUAACd0V4G0jE752.jpg"); + path.add("group1/M00/54/B5/wKgfWWVG8-2AHO9bAACd0V4G0jE981.jpg"); + path.add("group1/M02/54/B6/wKgfWWVG9AuAGDoqAACd0V4G0jE039.jpg"); + path.add("group1/M01/54/B7/wKgfWWVG9C6AT3QVAACd0V4G0jE073.jpg"); + path.add("group1/M01/54/C7/wKgfWWVG93KACW1lAACd0V4G0jE773.jpg"); + path.add("group1/M00/54/C8/wKgfWWVG95WAB2GWAACd0V4G0jE392.jpg"); + path.add("group1/M00/54/C9/wKgfWWVG97SAB3yuAACd0V4G0jE629.jpg"); + path.add("group1/M02/54/D9/wKgfWWVG-vWAY4SVAACd0V4G0jE366.jpg"); + path.add("group1/M00/54/DA/wKgfWWVG-xmAc80YAACd0V4G0jE403.jpg"); + path.add("group1/M01/54/DB/wKgfWWVG-zWAOqs7AACd0V4G0jE190.jpg"); + path.add("group1/M01/54/EB/wKgfWWVG_oCAZ3X9AACd0V4G0jE914.jpg"); + path.add("group1/M00/54/EC/wKgfWWVG_p2AEHp-AACd0V4G0jE187.jpg"); + path.add("group1/M01/54/ED/wKgfWWVG_sGAK88nAACd0V4G0jE796.jpg"); + path.add("group1/M00/54/FE/wKgfWWVHAgmATl2JAACd0V4G0jE813.jpg"); + path.add("group2/M01/30/BF/wKgfWWVHAiyARSb9AACd0V4G0jE583.jpg"); + path.add("group1/M02/55/00/wKgfWWVHAk-AOieCAACd0V4G0jE126.jpg"); + path.add("group1/M00/55/12/wKgfWWVHBY6AQo3MAACd0V4G0jE631.jpg"); + path.add("group2/M00/30/C4/wKgfWWVHBa2AEsaKAACd0V4G0jE284.jpg"); + path.add("group1/M02/55/14/wKgfWWVHBc-AHE9FAACd0V4G0jE887.jpg"); + path.add("group1/M01/55/23/wKgfWWVHCRCAIuu1AACd0V4G0jE622.jpg"); + path.add("group1/M00/55/25/wKgfWWVHCS-AP5mXAACd0V4G0jE742.jpg"); + path.add("group1/M00/55/25/wKgfWWVHCVKASY8cAACd0V4G0jE305.jpg"); + path.add("group1/M02/55/36/wKgfWWVHDJaAehkRAACd0V4G0jE479.jpg"); + path.add("group1/M00/55/37/wKgfWWVHDLSACE3NAACd0V4G0jE920.jpg"); + path.add("group1/M01/55/38/wKgfWWVHDNiAKfTQAACd0V4G0jE649.jpg"); + path.add("group1/M02/55/47/wKgfWWVHEBmACoWuAACd0V4G0jE400.jpg"); + path.add("group2/M01/30/D1/wKgfWWVHED2AKZ7IAACd0V4G0jE100.jpg"); + path.add("group1/M01/55/49/wKgfWWVHEFuABt5DAACd0V4G0jE431.jpg"); + path.add("group1/M00/55/58/wKgfWWVHE6SAYQCjAACd0V4G0jE313.jpg"); + path.add("group2/M02/30/D6/wKgfWWVHE8OAc60yAACd0V4G0jE542.jpg"); + path.add("group1/M01/55/5A/wKgfWWVHE-WAbwcOAACd0V4G0jE190.jpg"); + path.add("group1/M02/55/6A/wKgfWWVHFyiAEwXiAACd0V4G0jE462.jpg"); + path.add("group2/M02/30/DB/wKgfWWVHF0aADAs6AACd0V4G0jE255.jpg"); + path.add("group1/M02/55/6C/wKgfWWVHF2mAFscHAACd0V4G0jE706.jpg"); + path.add("group1/M00/55/7C/wKgfWWVHGqiAFripAACd0V4G0jE474.jpg"); + path.add("group1/M00/55/7D/wKgfWWVHGs2Aal98AACd0V4G0jE186.jpg"); + path.add("group1/M01/55/7E/wKgfWWVHGuuALRe9AACd0V4G0jE821.jpg"); + path.add("group1/M00/55/8E/wKgfWWVHHiyAOktvAACd0V4G0jE251.jpg"); + path.add("group1/M01/55/8F/wKgfWWVHHlGAOjFLAACd0V4G0jE347.jpg"); + path.add("group1/M02/55/90/wKgfWWVHHm-AcqfQAACd0V4G0jE754.jpg"); + path.add("group1/M01/55/A1/wKgfWWVHIbiAF6n-AACd0V4G0jE328.jpg"); + path.add("group2/M02/30/EA/wKgfWWVHIdeAC26uAACd0V4G0jE623.jpg"); + path.add("group1/M00/55/A3/wKgfWWVHIfqAZ6GOAACd0V4G0jE117.jpg"); + path.add("group1/M02/55/B3/wKgfWWVHJT-AW7RpAACd0V4G0jE492.jpg"); + path.add("group2/M00/30/EF/wKgfWWVHJV6AW3jnAACd0V4G0jE422.jpg"); + path.add("group1/M02/55/B4/wKgfWWVHJYOAdaAQAACd0V4G0jE757.jpg"); + path.add("group1/M02/55/C4/wKgfWWVHKMWATqxhAACd0V4G0jE154.jpg"); + path.add("group2/M02/30/F3/wKgfWWVHKOSAC-7vAACd0V4G0jE070.jpg"); + path.add("group1/M01/55/C6/wKgfWWVHKQaAZIqAAACd0V4G0jE016.jpg"); + path.add("group1/M02/55/D6/wKgfWWVHLEqAJeqOAACd0V4G0jE940.jpg"); + path.add("group1/M01/55/D7/wKgfWWVHLG6AVj7fAACd0V4G0jE468.jpg"); + path.add("group1/M00/55/D8/wKgfWWVHLI2AGvzYAACd0V4G0jE320.jpg"); + path.add("group1/M01/55/E8/wKgfWWVHL9GASdwiAACd0V4G0jE770.jpg"); + path.add("group1/M00/55/E9/wKgfWWVHL_CAOV9ZAACd0V4G0jE257.jpg"); + path.add("group1/M01/55/EA/wKgfWWVHMBOAY9MjAACd0V4G0jE871.jpg"); + path.add("group1/M02/55/FA/wKgfWWVHM1iAC_VUAACd0V4G0jE368.jpg"); + path.add("group1/M01/55/FA/wKgfWWVHM3eActhzAACd0V4G0jE240.jpg"); + path.add("group1/M01/55/FC/wKgfWWVHM5qAbOfvAACd0V4G0jE699.jpg"); + path.add("group1/M01/56/0C/wKgfWWVHNuKASUC5AACd0V4G0jE079.jpg"); + path.add("group1/M01/56/0D/wKgfWWVHNv-AcJpbAACd0V4G0jE712.jpg"); + path.add("group2/M00/31/05/wKgfWWVHNyKAUbAmAACd0V4G0jE039.jpg"); + path.add("group2/M02/31/09/wKgfWWVHOmiAIqZ1AACd0V4G0jE115.jpg"); + path.add("group1/M00/56/1F/wKgfWWVHOoaAAC-_AACd0V4G0jE689.jpg"); + path.add("group2/M01/31/0A/wKgfWWVHOqmABOHyAACd0V4G0jE982.jpg"); + path.add("group1/M02/56/32/wKgfWWVHPeyAc4YqAACd0V4G0jE790.jpg"); + path.add("group1/M00/56/32/wKgfWWVHPgqAUpjfAACd0V4G0jE277.jpg"); + path.add("group1/M00/56/33/wKgfWWVHPi2ARa3pAACd0V4G0jE845.jpg"); + path.add("group2/M02/31/12/wKgfWWVHQXGAJ-nNAACd0V4G0jE752.jpg"); + path.add("group1/M02/56/44/wKgfWWVHQY6AVBreAACd0V4G0jE526.jpg"); + path.add("group2/M00/31/13/wKgfWWVHQbKALiCkAACd0V4G0jE559.jpg"); + path.add("group1/M02/56/56/wKgfWWVHRPKANw_vAACd0V4G0jE274.jpg"); + path.add("group1/M01/56/57/wKgfWWVHRReAXYclAACd0V4G0jE114.jpg"); + path.add("group2/M00/31/17/wKgfWWVHRTSAefcAAACd0V4G0jE886.jpg"); + path.add("group1/M01/56/68/wKgfWWVHSHmAANe8AACd0V4G0jE074.jpg"); + path.add("group1/M00/56/69/wKgfWWVHSJ2AMZLYAACd0V4G0jE295.jpg"); + path.add("group1/M00/56/6A/wKgfWWVHSL-AXISTAACd0V4G0jE874.jpg"); + path.add("group1/M02/56/75/wKgfWWVHUM2AdSsnAACd0V4G0jE325.jpg"); + path.add("group2/M01/31/1E/wKgfWWVHUO2AaW66AACd0V4G0jE989.jpg"); + path.add("group1/M01/56/77/wKgfWWVHUQ2AZNakAACd0V4G0jE406.jpg"); + path.add("group1/M01/56/87/wKgfWWVHVFeAVzSnAACd0V4G0jE066.jpg"); + path.add("group1/M00/56/88/wKgfWWVHVHeAIiPiAACd0V4G0jE577.jpg"); + path.add("group1/M00/56/8A/wKgfWWVHVJiANfnmAACd0V4G0jE447.jpg"); + path.add("group1/M02/56/9B/wKgfWWVHV92AdF1AAACd0V4G0jE501.jpg"); + path.add("group1/M00/56/9C/wKgfWWVHV_6AT5aRAACd0V4G0jE910.jpg"); + path.add("group1/M02/56/9E/wKgfWWVHWCCAYPs5AACd0V4G0jE113.jpg"); + path.add("group1/M02/56/AE/wKgfWWVHW2aAKul0AACd0V4G0jE208.jpg"); + path.add("group2/M00/31/2A/wKgfWWVHW4aAY8DCAACd0V4G0jE909.jpg"); + path.add("group1/M02/56/B1/wKgfWWVHW6eAfK5-AACd0V4G0jE713.jpg"); + path.add("group2/M01/31/2E/wKgfWWVHXuuASkoXAACd0V4G0jE739.jpg"); + path.add("group1/M01/56/C1/wKgfWWVHXwuAH1jbAACd0V4G0jE929.jpg"); + path.add("group1/M00/56/C2/wKgfWWVHXy2AJX4UAACd0V4G0jE275.jpg"); + path.add("group1/M00/56/D3/wKgfWWVHYnKAMNVZAACd0V4G0jE689.jpg"); + path.add("group1/M00/56/D3/wKgfWWVHYpKAFaogAACd0V4G0jE024.jpg"); + path.add("group1/M02/56/D5/wKgfWWVHYrOAV_6PAACd0V4G0jE181.jpg"); + path.add("group1/M01/56/E5/wKgfWWVHZfSALlJ3AACd0V4G0jE730.jpg"); + path.add("group1/M01/56/E6/wKgfWWVHZhSAJJshAACd0V4G0jE975.jpg"); + path.add("group1/M02/56/E7/wKgfWWVHZjWAPA5CAACd0V4G0jE697.jpg"); + path.add("group1/M00/56/F7/wKgfWWVHaXyAaVcvAACd0V4G0jE829.jpg"); + path.add("group1/M02/56/F8/wKgfWWVHaZyARW5wAACd0V4G0jE010.jpg"); + path.add("group1/M00/56/F9/wKgfWWVHab2Aa1eBAACd0V4G0jE420.jpg"); + path.add("group1/M00/57/09/wKgfWWVHbQSAaPl-AACd0V4G0jE268.jpg"); + path.add("group1/M00/57/0A/wKgfWWVHbSWAcofxAACd0V4G0jE895.jpg"); + path.add("group2/M00/31/3F/wKgfWWVHbUWAcuApAACd0V4G0jE425.jpg"); + path.add("group1/M01/57/1B/wKgfWWVHcIuAPhJVAACd0V4G0jE023.jpg"); + path.add("group1/M02/57/1C/wKgfWWVHcKyAedKSAACd0V4G0jE865.jpg"); + path.add("group2/M00/31/43/wKgfWWVHcM6ALFOSAACd0V4G0jE849.jpg"); + path.add("group1/M00/57/2F/wKgfWWVHdAyAc97sAACd0V4G0jE229.jpg"); + path.add("group1/M02/57/30/wKgfWWVHdCyAXUWrAACd0V4G0jE061.jpg"); + path.add("group2/M00/31/48/wKgfWWVHdE6AGWTgAACd0V4G0jE482.jpg"); + path.add("group1/M02/57/36/wKgfWWVIZB6AAChTAACd0V4G0jE188.jpg"); + path.add("group1/M02/57/37/wKgfWWVIZEGAFX7FAACd0V4G0jE404.jpg"); + path.add("group1/M02/57/42/wKgfWWVIZ6qAOe33AACd0V4G0jE411.jpg"); + path.add("group1/M00/57/42/wKgfWWVIZ8mAIp9JAACd0V4G0jE022.jpg"); + path.add("group2/M00/31/4B/wKgfWWVIazGAQFp6AACd0V4G0jE470.jpg"); + path.add("group1/M01/57/4F/wKgfWWVIa0-ABsBcAACd0V4G0jE079.jpg"); + path.add("group2/M00/31/4C/wKgfWWVIbriAYfIlAACd0V4G0jE116.jpg"); + path.add("group1/M01/57/5C/wKgfWWVIbtaAL2uuAACd0V4G0jE747.jpg"); + path.add("group1/M01/57/68/wKgfWWVIcj6ATO4tAACd0V4G0jE192.jpg"); + path.add("group1/M02/57/69/wKgfWWVIclyAWKHmAACd0V4G0jE496.jpg"); + path.add("group2/M00/31/55/wKgfWWVIdcSAduVCAACd0V4G0jE269.jpg"); + path.add("group2/M00/31/55/wKgfWWVIdeKAASQbAACd0V4G0jE812.jpg"); + path.add("group1/M02/57/73/wKgfWWVIeUqAUT74AACd0V4G0jE149.jpg"); + path.add("group1/M02/57/74/wKgfWWVIeWuAD7cZAACd0V4G0jE252.jpg"); + path.add("group2/M01/31/6B/wKgfWWVIfNKAPy14AACd0V4G0jE309.jpg"); + path.add("group2/M02/31/6C/wKgfWWVIfPGAd2MkAACd0V4G0jE150.jpg"); + path.add("group1/M01/57/7A/wKgfWWVIgFWAHLfxAACd0V4G0jE824.jpg"); + path.add("group1/M00/57/7A/wKgfWWVIgHeAdXs4AACd0V4G0jE770.jpg"); + path.add("group1/M01/57/86/wKgfWWVIg92AVgpNAACd0V4G0jE710.jpg"); + path.add("group1/M02/57/87/wKgfWWVIg_-AexJuAACd0V4G0jE939.jpg"); + path.add("group1/M01/57/8E/wKgfWWVIh2OADRhoAACd0V4G0jE726.jpg"); + path.add("group1/M02/57/8F/wKgfWWVIh4SACFdkAACd0V4G0jE061.jpg"); + path.add("group2/M02/31/8A/wKgfWWVIiuuAdJOkAACd0V4G0jE485.jpg"); + path.add("group2/M02/31/8A/wKgfWWVIiweAfvwfAACd0V4G0jE425.jpg"); + path.add("group2/M00/31/91/wKgfWWVIjmqAARPEAACd0V4G0jE678.jpg"); + path.add("group2/M01/31/92/wKgfWWVIjpCAaT6hAACd0V4G0jE092.jpg"); + path.add("group2/M01/31/9D/wKgfWWVIkfSAA-PGAACd0V4G0jE825.jpg"); + path.add("group2/M00/31/9E/wKgfWWVIkhCAe6CgAACd0V4G0jE225.jpg"); + path.add("group1/M00/57/9B/wKgfWWVIlXWARNzaAACd0V4G0jE655.jpg"); + path.add("group1/M01/57/9C/wKgfWWVIlZaAVd_CAACd0V4G0jE017.jpg"); + path.add("group2/M02/31/AD/wKgfWWVImQCAAd5hAACd0V4G0jE702.jpg"); + path.add("group1/M00/57/A3/wKgfWWVImSGAdHDJAACd0V4G0jE319.jpg"); + path.add("group2/M01/31/B5/wKgfWWVInIGAYWWoAACd0V4G0jE626.jpg"); + path.add("group2/M01/31/B6/wKgfWWVInKKAP63GAACd0V4G0jE449.jpg"); + path.add("group2/M02/31/C1/wKgfWWVIoAeAXc1SAACd0V4G0jE368.jpg"); + path.add("group1/M02/57/A9/wKgfWWVIoCqAMRhuAACd0V4G0jE953.jpg"); + path.add("group1/M00/57/B0/wKgfWWVIr-WAAt8lAACd0V4G0jE939.jpg"); + path.add("group1/M00/57/B1/wKgfWWVIsASAAjV9AACd0V4G0jE652.jpg"); + path.add("group1/M01/57/BB/wKgfWWVIs22ATRjcAACd0V4G0jE836.jpg"); + path.add("group1/M01/57/BC/wKgfWWVIs4yAKF-EAACd0V4G0jE647.jpg"); + path.add("group1/M02/57/C6/wKgfWWVItvuAWUPrAACd0V4G0jE560.jpg"); + path.add("group1/M01/57/C7/wKgfWWVItxqAUy4yAACd0V4G0jE016.jpg"); + path.add("group1/M02/57/D1/wKgfWWVIuoKAETOAAACd0V4G0jE386.jpg"); + path.add("group1/M00/57/D2/wKgfWWVIuqCAWPTxAACd0V4G0jE214.jpg"); + path.add("group1/M01/57/DC/wKgfWWVIvgiAUFLuAACd0V4G0jE156.jpg"); + path.add("group2/M02/31/D4/wKgfWWVIviyAdMIgAACd0V4G0jE448.jpg"); + path.add("group1/M00/57/E6/wKgfWWVIwZSAW4IzAACd0V4G0jE189.jpg"); + path.add("group1/M00/57/E7/wKgfWWVIwbKADT6VAACd0V4G0jE976.jpg"); + path.add("group1/M02/57/F1/wKgfWWVIxRKAcXDYAACd0V4G0jE777.jpg"); + path.add("group1/M00/57/F1/wKgfWWVIxTeALfn4AACd0V4G0jE243.jpg"); + path.add("group1/M00/57/FC/wKgfWWVIyJqAND9gAACd0V4G0jE315.jpg"); + path.add("group1/M00/57/FC/wKgfWWVIyL-Ab1EJAACd0V4G0jE553.jpg"); + path.add("group1/M01/58/06/wKgfWWVIzB6AMGi_AACd0V4G0jE929.jpg"); + path.add("group1/M02/58/07/wKgfWWVIzEKAdmfUAACd0V4G0jE211.jpg"); + path.add("group1/M00/58/11/wKgfWWVIz6eAeZjtAACd0V4G0jE265.jpg"); + path.add("group1/M01/58/12/wKgfWWVIz8aAX3bZAACd0V4G0jE078.jpg"); + path.add("group1/M00/58/1C/wKgfWWVI0yqAZzPoAACd0V4G0jE011.jpg"); + path.add("group1/M02/58/1D/wKgfWWVI006AV60nAACd0V4G0jE357.jpg"); + path.add("group1/M02/58/75/wKgfWWVJ89yAHgtCAACd0V4G0jE151.jpg"); + path.add("group1/M02/58/76/wKgfWWVJ8-eADEKFAACd0V4G0jE444.jpg"); + path.add("group1/M01/58/81/wKgfWWVJ9EuAEbRcAACd0V4G0jE782.jpg"); + path.add("group1/M01/58/82/wKgfWWVJ9FaASSLgAACd0V4G0jE820.jpg"); + path.add("group1/M02/58/8A/wKgfWWVJ9K-AbQEjAACd0V4G0jE784.jpg"); + path.add("group1/M00/58/8A/wKgfWWVJ9LqAdPh2AACd0V4G0jE820.jpg"); + path.add("group1/M02/58/92/wKgfWWVJ9ROAAGzOAACd0V4G0jE464.jpg"); + path.add("group1/M00/58/93/wKgfWWVJ9R6AKxBDAACd0V4G0jE181.jpg"); + path.add("group1/M01/58/9A/wKgfWWVJ9X6AUNWVAACd0V4G0jE878.jpg"); + path.add("group1/M00/58/9B/wKgfWWVJ9YmAf9P0AACd0V4G0jE359.jpg"); + path.add("group2/M02/31/E7/wKgfWWVJ9eKAHpX1AACd0V4G0jE505.jpg"); + path.add("group1/M01/58/A3/wKgfWWVJ9e2AJY4QAACd0V4G0jE096.jpg"); + path.add("group1/M00/58/AB/wKgfWWVJ9kaAOBJKAACd0V4G0jE322.jpg"); + path.add("group1/M01/58/AC/wKgfWWVJ9lCAUtnyAACd0V4G0jE310.jpg"); + path.add("group1/M00/58/B3/wKgfWWVJ9qyAZXI8AACd0V4G0jE922.jpg"); + path.add("group1/M01/58/B4/wKgfWWVJ9reAXJzBAACd0V4G0jE891.jpg"); + path.add("group2/M02/31/E9/wKgfWWVJ9xGAKuJjAACd0V4G0jE095.jpg"); + path.add("group1/M02/58/BC/wKgfWWVJ9xuACcDYAACd0V4G0jE281.jpg"); + path.add("group1/M01/58/C3/wKgfWWVJ93WAcwdMAACd0V4G0jE110.jpg"); + path.add("group2/M02/31/E9/wKgfWWVJ94OAFU_PAACd0V4G0jE711.jpg"); + path.add("group1/M00/58/CC/wKgfWWVJ9-eARol5AACd0V4G0jE625.jpg"); + path.add("group1/M01/58/CD/wKgfWWVJ9_WASl3XAACd0V4G0jE410.jpg"); + path.add("group1/M02/58/D0/wKgfWWVJ-F-AdDwUAACd0V4G0jE118.jpg"); + path.add("group1/M02/58/D1/wKgfWWVJ-GuATiwwAACd0V4G0jE594.jpg"); + path.add("group1/M02/58/F5/wKgfWWVJ-6OAJKhOAACd0V4G0jE416.jpg"); + path.add("group1/M00/58/F6/wKgfWWVJ-8aAEYi2AACd0V4G0jE915.jpg"); + path.add("group1/M02/59/00/wKgfWWVJ_yuAYk4xAACd0V4G0jE440.jpg"); + path.add("group1/M01/59/01/wKgfWWVJ_0qAMu-dAACd0V4G0jE084.jpg"); + path.add("group1/M00/59/0F/wKgfWWVKCYGAGr89AACd0V4G0jE022.jpg"); + path.add("group1/M00/59/0F/wKgfWWVKCaOAWyuaAACd0V4G0jE919.jpg"); + path.add("group1/M02/59/16/wKgfWWVKGeWAUkD6AACd0V4G0jE758.jpg"); + path.add("group1/M00/59/17/wKgfWWVKGgaAPcuUAACd0V4G0jE490.jpg"); + path.add("group1/M00/59/22/wKgfWWVKHW-Af63BAACd0V4G0jE643.jpg"); + path.add("group1/M02/59/23/wKgfWWVKHZGAJo69AACd0V4G0jE057.jpg"); + path.add("group1/M01/59/2D/wKgfWWVKIPeAT6YLAACd0V4G0jE968.jpg"); + path.add("group1/M02/59/2E/wKgfWWVKIRmAWhnLAACd0V4G0jE487.jpg"); + path.add("group1/M01/59/39/wKgfWWVKJH-AFKC6AACd0V4G0jE220.jpg"); + path.add("group1/M00/59/3A/wKgfWWVKJKGAagAyAACd0V4G0jE844.jpg"); + path.add("group1/M00/59/45/wKgfWWVKKAOAQTqqAACd0V4G0jE465.jpg"); + path.add("group1/M01/59/46/wKgfWWVKKCaAHTWTAACd0V4G0jE394.jpg"); + path.add("group1/M02/59/9A/wKgfWWVKM_yAX5OZAACd0V4G0jE988.jpg"); + path.add("group1/M00/59/9A/wKgfWWVKNByAVQjiAACd0V4G0jE946.jpg"); + path.add("group1/M00/59/AC/wKgfWWVKN4CAM8SlAACd0V4G0jE853.jpg"); + path.add("group1/M01/59/AC/wKgfWWVKN6WAMrADAACd0V4G0jE349.jpg"); + path.add("group2/M02/32/01/wKgfWWVKOwWAauouAACd0V4G0jE956.jpg"); + path.add("group1/M02/59/B7/wKgfWWVKOymAfn7cAACd0V4G0jE545.jpg"); + path.add("group2/M01/32/02/wKgfWWVKPouAZp4AAACd0V4G0jE599.jpg"); + path.add("group1/M00/59/C3/wKgfWWVKPquAXjQMAACd0V4G0jE117.jpg"); + path.add("group1/M02/59/CE/wKgfWWVKQhOAOIo3AACd0V4G0jE159.jpg"); + path.add("group1/M02/59/CE/wKgfWWVKQjOAQCHkAACd0V4G0jE952.jpg"); + path.add("group1/M01/59/DB/wKgfWWVKRZiAezcBAACd0V4G0jE542.jpg"); + path.add("group1/M00/59/DC/wKgfWWVKRbiAK1MdAACd0V4G0jE628.jpg"); + path.add("group1/M00/59/E7/wKgfWWVKSR-AQkuhAACd0V4G0jE509.jpg"); + path.add("group1/M02/59/E7/wKgfWWVKST-ASksTAACd0V4G0jE866.jpg"); + path.add("group1/M01/59/F2/wKgfWWVKTKWAOU6wAACd0V4G0jE121.jpg"); + path.add("group1/M02/59/F2/wKgfWWVKTMWAdoC6AACd0V4G0jE240.jpg"); + path.add("group1/M00/59/FE/wKgfWWVKUCuAPbCQAACd0V4G0jE797.jpg"); + path.add("group1/M00/59/FE/wKgfWWVKUEuAVmVmAACd0V4G0jE673.jpg"); + path.add("group1/M01/5A/0B/wKgfWWVKU62AHGrnAACd0V4G0jE613.jpg"); + path.add("group1/M00/5A/0B/wKgfWWVKU9KAfkN7AACd0V4G0jE764.jpg"); + path.add("group1/M02/5A/16/wKgfWWVKVzeAaaeGAACd0V4G0jE518.jpg"); + path.add("group1/M01/5A/17/wKgfWWVKV1eANr4wAACd0V4G0jE249.jpg"); + path.add("group1/M01/5A/22/wKgfWWVKWr2AGNm0AACd0V4G0jE043.jpg"); + path.add("group1/M02/5A/22/wKgfWWVKWt6ACbQHAACd0V4G0jE790.jpg"); + path.add("group1/M00/5A/2E/wKgfWWVKXkSAboT2AACd0V4G0jE829.jpg"); + path.add("group1/M01/5A/2E/wKgfWWVKXmSAbX_jAACd0V4G0jE275.jpg"); + path.add("group1/M00/5A/3B/wKgfWWVKYcaAQToXAACd0V4G0jE675.jpg"); + path.add("group1/M01/5A/3C/wKgfWWVKYeaAWh2zAACd0V4G0jE392.jpg"); + path.add("group1/M01/5A/46/wKgfWWVKZUuAdLLtAACd0V4G0jE064.jpg"); + path.add("group1/M01/5A/46/wKgfWWVKZWuACGETAACd0V4G0jE051.jpg"); + path.add("group1/M00/5A/52/wKgfWWVKaNOAfFJRAACd0V4G0jE541.jpg"); + path.add("group1/M02/5A/52/wKgfWWVKaPOALYYTAACd0V4G0jE454.jpg"); + path.add("group1/M01/5A/5D/wKgfWWVKbFmAcLx7AACd0V4G0jE759.jpg"); + path.add("group2/M00/32/0E/wKgfWWVKbHqAAN5zAACd0V4G0jE106.jpg"); + path.add("group1/M00/5A/6B/wKgfWWVKb9-ATpXpAACd0V4G0jE836.jpg"); + path.add("group2/M01/32/0F/wKgfWWVKb_-AYqPzAACd0V4G0jE979.jpg"); + path.add("group1/M02/5A/75/wKgfWWVKc2OAIcY9AACd0V4G0jE768.jpg"); + path.add("group1/M02/5A/76/wKgfWWVKc4eAOU8iAACd0V4G0jE552.jpg"); + path.add("group1/M02/5A/81/wKgfWWVKduqAWv2oAACd0V4G0jE122.jpg"); + path.add("group2/M01/32/11/wKgfWWVKdwqATqn7AACd0V4G0jE191.jpg"); + path.add("group1/M02/5A/8D/wKgfWWVKenCAOvzWAACd0V4G0jE963.jpg"); + path.add("group1/M00/5A/8D/wKgfWWVKepGACxICAACd0V4G0jE096.jpg"); + path.add("group1/M01/5A/9A/wKgfWWVKffWAZ5o_AACd0V4G0jE781.jpg"); + path.add("group1/M01/5A/9A/wKgfWWVKfhWAHTVYAACd0V4G0jE644.jpg"); + path.add("group1/M00/5A/A5/wKgfWWVKgXyABUuoAACd0V4G0jE073.jpg"); + path.add("group1/M01/5A/A5/wKgfWWVKgZyAYythAACd0V4G0jE080.jpg"); + path.add("group1/M00/5A/B0/wKgfWWVKhP-AB3JgAACd0V4G0jE027.jpg"); + path.add("group1/M01/5A/B0/wKgfWWVKhR-AHqZxAACd0V4G0jE526.jpg"); + path.add("group1/M00/5A/BC/wKgfWWVKiIeADitCAACd0V4G0jE558.jpg"); + path.add("group1/M01/5A/BC/wKgfWWVKiKeAA9XuAACd0V4G0jE047.jpg"); + path.add("group1/M00/5A/C9/wKgfWWVKjBCATRiuAACd0V4G0jE575.jpg"); + path.add("group1/M02/5A/C9/wKgfWWVKjDGAJPxNAACd0V4G0jE283.jpg"); + path.add("group1/M01/5A/D3/wKgfWWVKj5SAUjH3AACd0V4G0jE883.jpg"); + path.add("group1/M00/5A/D3/wKgfWWVKj7SAOgZxAACd0V4G0jE459.jpg"); + path.add("group1/M00/5A/DE/wKgfWWVKkxuAJ1zaAACd0V4G0jE912.jpg"); + path.add("group1/M02/5A/DF/wKgfWWVKkzuAFjLnAACd0V4G0jE340.jpg"); + path.add("group1/M00/5A/E9/wKgfWWVKlqCAU_ZmAACd0V4G0jE537.jpg"); + path.add("group1/M02/5A/EA/wKgfWWVKlsCARvWHAACd0V4G0jE162.jpg"); + path.add("group1/M00/5A/F6/wKgfWWVKmj2AVuvNAACd0V4G0jE086.jpg"); + path.add("group1/M02/5A/F7/wKgfWWVKml2AKjrBAACd0V4G0jE269.jpg"); + path.add("group1/M00/5B/01/wKgfWWVKncGARnSbAACd0V4G0jE663.jpg"); + path.add("group1/M02/5B/01/wKgfWWVKneWAAKuIAACd0V4G0jE707.jpg"); + path.add("group1/M02/5B/0C/wKgfWWVKoUeAe9HlAACd0V4G0jE591.jpg"); + path.add("group1/M01/5B/0C/wKgfWWVKoWeAPStCAACd0V4G0jE043.jpg"); + path.add("group1/M00/5B/18/wKgfWWVKpM6ARFKeAACd0V4G0jE132.jpg"); + path.add("group1/M01/5B/18/wKgfWWVKpO6ATt1gAACd0V4G0jE409.jpg"); + path.add("group1/M01/5B/24/wKgfWWVKqFOATy8_AACd0V4G0jE432.jpg"); + path.add("group1/M01/5B/25/wKgfWWVKqHOAQG6WAACd0V4G0jE308.jpg"); + path.add("group1/M01/5B/2F/wKgfWWVKq9WASLQ7AACd0V4G0jE206.jpg"); + path.add("group1/M00/5B/2F/wKgfWWVKq_WALBlsAACd0V4G0jE552.jpg"); + path.add("group1/M00/5B/3A/wKgfWWVKr1yAcDMUAACd0V4G0jE843.jpg"); + path.add("group1/M00/5B/3B/wKgfWWVKr4CATUFFAACd0V4G0jE962.jpg"); + path.add("group1/M01/5B/46/wKgfWWVKsuWABM1zAACd0V4G0jE843.jpg"); + path.add("group1/M02/5B/46/wKgfWWVKswWAJ1ZrAACd0V4G0jE203.jpg"); + path.add("group1/M01/5B/53/wKgfWWVKtmeAHwvfAACd0V4G0jE667.jpg"); + path.add("group2/M01/32/28/wKgfWWVKtouAXNReAACd0V4G0jE000.jpg"); + path.add("group1/M02/5B/5E/wKgfWWVKue6AeDk7AACd0V4G0jE836.jpg"); + path.add("group2/M02/32/29/wKgfWWVKug6ANoWPAACd0V4G0jE649.jpg"); + path.add("group1/M01/5B/69/wKgfWWVKvXiAeb79AACd0V4G0jE557.jpg"); + path.add("group1/M01/5B/69/wKgfWWVKvZiAU_WiAACd0V4G0jE988.jpg"); + path.add("group1/M00/5B/74/wKgfWWVKwP2AWLB-AACd0V4G0jE471.jpg"); + path.add("group1/M02/5B/75/wKgfWWVKwR2AfrkvAACd0V4G0jE285.jpg"); + path.add("group1/M01/5B/81/wKgfWWVKxIKASfHGAACd0V4G0jE543.jpg"); + path.add("group1/M02/5B/81/wKgfWWVKxKKAIGP2AACd0V4G0jE977.jpg"); + path.add("group1/M01/5B/8C/wKgfWWVKyAiAcY_eAACd0V4G0jE643.jpg"); + path.add("group1/M01/5B/8C/wKgfWWVKyCmAb4tpAACd0V4G0jE810.jpg"); + path.add("group1/M02/5B/97/wKgfWWVKy5OAcMKWAACd0V4G0jE324.jpg"); + path.add("group1/M02/5B/97/wKgfWWVKy7OAZ4SCAACd0V4G0jE910.jpg"); + path.add("group2/M01/32/31/wKgfWWVKzxSAdg3jAACd0V4G0jE052.jpg"); + path.add("group1/M01/5B/A2/wKgfWWVKzziAKqeJAACd0V4G0jE693.jpg"); + path.add("group1/M00/5B/AF/wKgfWWVK0puAU6DwAACd0V4G0jE744.jpg"); + path.add("group1/M01/5B/AF/wKgfWWVK0ruAPUUmAACd0V4G0jE355.jpg"); + path.add("group1/M02/5B/BA/wKgfWWVK1iGAQK5lAACd0V4G0jE158.jpg"); + path.add("group1/M01/5B/BA/wKgfWWVK1kGAX28SAACd0V4G0jE702.jpg"); + path.add("group1/M02/5B/C5/wKgfWWVK2aiAZRQFAACd0V4G0jE459.jpg"); + path.add("group1/M00/5B/C5/wKgfWWVK2ceAac1tAACd0V4G0jE941.jpg"); + path.add("group1/M01/5B/D0/wKgfWWVK3SuAIf8AAACd0V4G0jE392.jpg"); + path.add("group1/M00/5B/D0/wKgfWWVK3UyAVStiAACd0V4G0jE973.jpg"); + path.add("group1/M01/5B/DC/wKgfWWVK4LKAZHLWAACd0V4G0jE496.jpg"); + path.add("group1/M02/5B/DC/wKgfWWVK4NKAYMvRAACd0V4G0jE168.jpg"); + path.add("group1/M02/5B/E8/wKgfWWVK5DmAHfQ3AACd0V4G0jE618.jpg"); + path.add("group1/M02/5B/E8/wKgfWWVK5FiAbHL7AACd0V4G0jE933.jpg"); + path.add("group1/M00/5B/F3/wKgfWWVK57uAHvtWAACd0V4G0jE559.jpg"); + path.add("group1/M01/5B/F3/wKgfWWVK59yAGmWUAACd0V4G0jE389.jpg"); + path.add("group1/M02/5B/FE/wKgfWWVK60CAJi1MAACd0V4G0jE212.jpg"); + path.add("group1/M02/5B/FF/wKgfWWVK62WAH-WdAACd0V4G0jE482.jpg"); + path.add("group1/M00/5C/0F/wKgfWWVK-7yAbtZKAACd0V4G0jE800.jpg"); + path.add("group1/M02/5C/10/wKgfWWVK-9yAKkSwAACd0V4G0jE580.jpg"); + path.add("group1/M02/5C/1C/wKgfWWVK_0qAGX2UAACd0V4G0jE196.jpg"); + path.add("group1/M01/5C/1D/wKgfWWVK_2uAeLMVAACd0V4G0jE201.jpg"); + path.add("group1/M01/5C/27/wKgfWWVLAtGAMGknAACd0V4G0jE458.jpg"); + path.add("group1/M00/5C/28/wKgfWWVLAvKAaY8dAACd0V4G0jE380.jpg"); + path.add("group1/M00/5C/39/wKgfWWVLIEmAftY2AACd0V4G0jE391.jpg"); + path.add("group1/M02/5C/39/wKgfWWVLIHSAHzf8AACd0V4G0jE017.jpg"); + path.add("group1/M00/5C/44/wKgfWWVLI5OAdn7HAACd0V4G0jE840.jpg"); + path.add("group1/M01/5C/45/wKgfWWVLI7SAPNT_AACd0V4G0jE318.jpg"); + path.add("group1/M02/5C/4F/wKgfWWVLJxqAHR4eAACd0V4G0jE965.jpg"); + path.add("group1/M00/5C/50/wKgfWWVLJzqAT_DnAACd0V4G0jE606.jpg"); + path.add("group1/M00/5C/5C/wKgfWWVLKp-ACz69AACd0V4G0jE956.jpg"); + path.add("group1/M02/5C/5C/wKgfWWVLKr-AbMOHAACd0V4G0jE794.jpg"); + path.add("group1/M00/5C/67/wKgfWWVLMWKAPwNNAACd0V4G0jE635.jpg"); + path.add("group1/M00/5C/67/wKgfWWVLMWmAdSTyAACd0V4G0jE691.jpg"); + path.add("group1/M02/5C/6F/wKgfWWVLMdeABg7UAACd0V4G0jE689.jpg"); + path.add("group1/M01/5C/70/wKgfWWVLMeiAbzBZAACd0V4G0jE227.jpg"); + path.add("group1/M01/5C/7C/wKgfWWVLNTSABKRZAACd0V4G0jE658.jpg"); + path.add("group1/M01/5C/7D/wKgfWWVLNVOARIzsAACd0V4G0jE688.jpg"); + path.add("group1/M02/5C/88/wKgfWWVLOLeAXKpKAACd0V4G0jE823.jpg"); + path.add("group1/M00/5C/88/wKgfWWVLONeADvTXAACd0V4G0jE873.jpg"); + path.add("group1/M01/5C/95/wKgfWWVLPEGAGJ9RAACd0V4G0jE879.jpg"); + path.add("group1/M00/5C/96/wKgfWWVLPGCAR09CAACd0V4G0jE401.jpg"); + path.add("group1/M02/5C/A1/wKgfWWVLP8iAQOD5AACd0V4G0jE942.jpg"); + path.add("group1/M01/5C/A1/wKgfWWVLP-eAJPZdAACd0V4G0jE984.jpg"); + path.add("group1/M01/5C/AC/wKgfWWVLQ0yAI5RuAACd0V4G0jE376.jpg"); + path.add("group1/M02/5C/AD/wKgfWWVLQ22AMEyCAACd0V4G0jE107.jpg"); + path.add("group1/M01/5C/B8/wKgfWWVLRtOALm3NAACd0V4G0jE685.jpg"); + path.add("group2/M00/32/4C/wKgfWWVLRvSAHL1nAACd0V4G0jE440.jpg"); + path.add("group1/M02/5C/C5/wKgfWWVLSl2AG0eGAACd0V4G0jE488.jpg"); + path.add("group1/M01/5C/C6/wKgfWWVLSn2AYgdsAACd0V4G0jE145.jpg"); + path.add("group1/M00/5C/D2/wKgfWWVLUrSAT9RFAACd0V4G0jE002.jpg"); + path.add("group1/M01/5C/D2/wKgfWWVLUruAWMdeAACd0V4G0jE620.jpg"); + path.add("group1/M01/5C/DB/wKgfWWVLU0iAd4IMAACd0V4G0jE152.jpg"); + path.add("group1/M02/5C/DC/wKgfWWVLU06Aa6DgAACd0V4G0jE243.jpg"); + path.add("group1/M01/5C/E9/wKgfWWVLVTmAPokaAACd0V4G0jE629.jpg"); + path.add("group1/M02/5C/EA/wKgfWWVLVV-AHA0xAACd0V4G0jE483.jpg"); + path.add("group1/M02/5C/F4/wKgfWWVLWMKAfmlXAACd0V4G0jE404.jpg"); + path.add("group1/M01/5C/F5/wKgfWWVLWOOALEP_AACd0V4G0jE029.jpg"); + path.add("group2/M02/32/50/wKgfWWVLXEeAW_UjAACd0V4G0jE639.jpg"); + path.add("group1/M00/5D/01/wKgfWWVLXGeAOjuAAACd0V4G0jE713.jpg"); + path.add("group1/M00/5D/0D/wKgfWWVLYeuAS-3rAACd0V4G0jE210.jpg"); + path.add("group1/M01/5D/0F/wKgfWWVLYg6ADHsgAACd0V4G0jE495.jpg"); + path.add("group2/M00/32/5D/wKgfWWVLhUyAFEieAACd0V4G0jE802.jpg"); + path.add("group1/M00/5E/1F/wKgfWWVLhXCAFIZaAACd0V4G0jE059.jpg"); + path.add("group2/M02/32/5E/wKgfWWVLiNGALGq-AACd0V4G0jE069.jpg"); + path.add("group1/M02/5E/30/wKgfWWVLiPGAaryxAACd0V4G0jE430.jpg"); + path.add("group1/M00/5E/3D/wKgfWWVLjFiAcA7kAACd0V4G0jE694.jpg"); + path.add("group1/M00/5E/3E/wKgfWWVLjHiALPrlAACd0V4G0jE624.jpg"); + path.add("group1/M01/5E/4A/wKgfWWVLj9qAaqTzAACd0V4G0jE804.jpg"); + path.add("group1/M00/5E/4B/wKgfWWVLj_uATb9RAACd0V4G0jE100.jpg"); + path.add("group1/M02/5E/57/wKgfWWVLk1-ANsPNAACd0V4G0jE992.jpg"); + path.add("group1/M01/5E/58/wKgfWWVLk3-AABDxAACd0V4G0jE159.jpg"); + path.add("group1/M02/5E/65/wKgfWWVLlueATWifAACd0V4G0jE616.jpg"); + path.add("group1/M00/5E/66/wKgfWWVLlweAIFiHAACd0V4G0jE664.jpg"); + path.add("group1/M00/5E/74/wKgfWWVLmnOAKzIMAACd0V4G0jE835.jpg"); + path.add("group1/M00/5E/75/wKgfWWVLmpSASBSmAACd0V4G0jE689.jpg"); + path.add("group1/M01/5E/81/wKgfWWVLnfmAHhmlAACd0V4G0jE388.jpg"); + path.add("group1/M00/5E/82/wKgfWWVLnhmAD-GiAACd0V4G0jE443.jpg"); + path.add("group1/M02/5E/8E/wKgfWWVLoXuAMFCPAACd0V4G0jE256.jpg"); + path.add("group1/M01/5E/8F/wKgfWWVLoZuAGFtmAACd0V4G0jE687.jpg"); + path.add("group1/M00/5E/9B/wKgfWWVLpQGAdPM2AACd0V4G0jE576.jpg"); + path.add("group1/M00/5E/9C/wKgfWWVLpSGAFzmXAACd0V4G0jE343.jpg"); + path.add("group1/M00/5E/AB/wKgfWWVLqImAOf3BAACd0V4G0jE126.jpg"); + path.add("group1/M01/5E/AC/wKgfWWVLqKmAGfVZAACd0V4G0jE224.jpg"); + path.add("group1/M01/5E/B8/wKgfWWVLrBOADj7bAACd0V4G0jE428.jpg"); + path.add("group2/M02/32/62/wKgfWWVLrDSAeQn6AACd0V4G0jE396.jpg"); + path.add("group1/M01/5E/C5/wKgfWWVLr5qAS7maAACd0V4G0jE629.jpg"); + path.add("group1/M00/5E/C6/wKgfWWVLr7WAT8BtAACd0V4G0jE487.jpg"); + path.add("group1/M00/5E/D2/wKgfWWVLsxuAMsHXAACd0V4G0jE420.jpg"); + path.add("group1/M01/5E/D3/wKgfWWVLszuABQAUAACd0V4G0jE011.jpg"); + path.add("group1/M01/5E/E1/wKgfWWVLtqKAJa3bAACd0V4G0jE338.jpg"); + path.add("group1/M02/5E/E2/wKgfWWVLtsKALbfsAACd0V4G0jE599.jpg"); + path.add("group1/M01/5E/EF/wKgfWWVLuiaATslbAACd0V4G0jE345.jpg"); + path.add("group1/M01/5E/F0/wKgfWWVLukeAfLd0AACd0V4G0jE436.jpg"); + path.add("group1/M00/5E/FC/wKgfWWVLvbGAZDBQAACd0V4G0jE631.jpg"); + path.add("group1/M02/5E/FD/wKgfWWVLvdKAKTiAAACd0V4G0jE737.jpg"); + path.add("group1/M01/5F/09/wKgfWWVLwTGADJpUAACd0V4G0jE435.jpg"); + path.add("group1/M01/5F/0A/wKgfWWVLwVKAVHXuAACd0V4G0jE256.jpg"); + path.add("group1/M02/5F/17/wKgfWWVLxLuAWrslAACd0V4G0jE652.jpg"); + path.add("group1/M01/5F/18/wKgfWWVLxNuABxVWAACd0V4G0jE062.jpg"); + path.add("group1/M02/5F/26/wKgfWWVLyECAfxBSAACd0V4G0jE569.jpg"); + path.add("group1/M01/5F/27/wKgfWWVLyGCAGCBeAACd0V4G0jE546.jpg"); + path.add("group1/M01/5F/33/wKgfWWVLy8qACjU7AACd0V4G0jE268.jpg"); + path.add("group1/M02/5F/34/wKgfWWVLy-qANkWOAACd0V4G0jE077.jpg"); + path.add("group1/M00/5F/40/wKgfWWVLz06AfLLSAACd0V4G0jE964.jpg"); + path.add("group1/M00/5F/41/wKgfWWVLz26AUKy8AACd0V4G0jE322.jpg"); + path.add("group1/M00/5F/4E/wKgfWWVL0tWALVTeAACd0V4G0jE947.jpg"); + path.add("group1/M01/5F/4F/wKgfWWVL0vWAOSHIAACd0V4G0jE094.jpg"); + path.add("group1/M00/5F/5D/wKgfWWVL1l-ARF1SAACd0V4G0jE342.jpg"); + path.add("group1/M00/5F/5E/wKgfWWVL1nuAByJoAACd0V4G0jE305.jpg"); + path.add("group1/M01/5F/6A/wKgfWWVL2eWAc_UmAACd0V4G0jE127.jpg"); + path.add("group1/M00/5F/6B/wKgfWWVL2gWAYFLrAACd0V4G0jE046.jpg"); + path.add("group1/M01/5F/78/wKgfWWVL3WqAJVJmAACd0V4G0jE480.jpg"); + path.add("group1/M02/5F/78/wKgfWWVL3YuAKPThAACd0V4G0jE316.jpg"); + path.add("group1/M02/5F/85/wKgfWWVL4OyAZ_6JAACd0V4G0jE840.jpg"); + path.add("group1/M01/5F/86/wKgfWWVL4Q2AT0yYAACd0V4G0jE887.jpg"); + path.add("group1/M02/5F/93/wKgfWWVL5HOAcoW1AACd0V4G0jE890.jpg"); + path.add("group1/M00/5F/94/wKgfWWVL5JOABYvuAACd0V4G0jE124.jpg"); + path.add("group1/M01/5F/A1/wKgfWWVL5_mAFn7NAACd0V4G0jE765.jpg"); + path.add("group1/M01/5F/A2/wKgfWWVL6BmAYbRIAACd0V4G0jE646.jpg"); + path.add("group1/M00/5F/AF/wKgfWWVL64CAPv47AACd0V4G0jE335.jpg"); + path.add("group1/M01/5F/B0/wKgfWWVL66CAG1siAACd0V4G0jE824.jpg"); + path.add("group1/M02/5F/BC/wKgfWWVL7wWAfBDkAACd0V4G0jE737.jpg"); + path.add("group1/M01/5F/BD/wKgfWWVL7yWAV4F3AACd0V4G0jE683.jpg"); + path.add("group1/M01/5F/CA/wKgfWWVL8oqAZcyHAACd0V4G0jE849.jpg"); + path.add("group1/M01/5F/CB/wKgfWWVL8qqARBDLAACd0V4G0jE670.jpg"); + path.add("group1/M02/5F/D9/wKgfWWVL9hCAAvIQAACd0V4G0jE426.jpg"); + path.add("group1/M00/5F/DA/wKgfWWVL9jCAcMFGAACd0V4G0jE283.jpg"); + path.add("group1/M01/5F/E5/wKgfWWVL-ZSATWMmAACd0V4G0jE476.jpg"); + path.add("group1/M00/5F/E6/wKgfWWVL-bWATU2BAACd0V4G0jE732.jpg"); + path.add("group1/M02/5F/F3/wKgfWWVL_RqATrQPAACd0V4G0jE723.jpg"); + path.add("group1/M00/5F/F4/wKgfWWVL_TqAPhQoAACd0V4G0jE393.jpg"); + path.add("group1/M00/60/01/wKgfWWVMAKCASTO9AACd0V4G0jE855.jpg"); + path.add("group1/M02/60/01/wKgfWWVMAMGAPvGVAACd0V4G0jE984.jpg"); + path.add("group1/M02/60/0F/wKgfWWVMBCeAfQRgAACd0V4G0jE008.jpg"); + path.add("group1/M02/60/10/wKgfWWVMBEiAYRr6AACd0V4G0jE422.jpg"); + path.add("group1/M00/60/1D/wKgfWWVMB66AFFTUAACd0V4G0jE006.jpg"); + path.add("group1/M00/60/1E/wKgfWWVMB86AOxDPAACd0V4G0jE203.jpg"); + path.add("group1/M01/60/2B/wKgfWWVMCzOAWj0MAACd0V4G0jE938.jpg"); + path.add("group1/M01/60/2C/wKgfWWVMC06AfDJxAACd0V4G0jE142.jpg"); + path.add("group1/M01/60/38/wKgfWWVMDraAZDxKAACd0V4G0jE672.jpg"); + path.add("group1/M00/60/39/wKgfWWVMDtaAApwJAACd0V4G0jE319.jpg"); + path.add("group1/M01/60/46/wKgfWWVMEkGAMHppAACd0V4G0jE479.jpg"); + path.add("group1/M02/60/47/wKgfWWVMEmGANs99AACd0V4G0jE157.jpg"); + path.add("group1/M02/60/54/wKgfWWVMFcOAUHHTAACd0V4G0jE037.jpg"); + path.add("group2/M00/32/6E/wKgfWWVMFemAYMW6AACd0V4G0jE016.jpg"); + path.add("group1/M01/60/62/wKgfWWVMGUyAOuFWAACd0V4G0jE415.jpg"); + path.add("group1/M00/60/62/wKgfWWVMGWyAY0NdAACd0V4G0jE576.jpg"); + path.add("group1/M01/60/6F/wKgfWWVMHNCAP-opAACd0V4G0jE755.jpg"); + path.add("group1/M02/60/70/wKgfWWVMHPaATXS3AACd0V4G0jE372.jpg"); + path.add("group1/M00/60/7D/wKgfWWVMIFqAWI9qAACd0V4G0jE282.jpg"); + path.add("group1/M01/60/7D/wKgfWWVMIHqAcwPFAACd0V4G0jE780.jpg"); + path.add("group1/M01/60/8A/wKgfWWVMI-GAG8UeAACd0V4G0jE790.jpg"); + path.add("group1/M00/60/8B/wKgfWWVMJAGANpvBAACd0V4G0jE058.jpg"); + path.add("group1/M01/60/99/wKgfWWVMJ2KAQTcpAACd0V4G0jE838.jpg"); + path.add("group1/M01/60/9A/wKgfWWVMJ4OAO2TiAACd0V4G0jE209.jpg"); + path.add("group1/M02/60/A7/wKgfWWVMKu6AHbidAACd0V4G0jE915.jpg"); + path.add("group1/M00/60/A7/wKgfWWVMKw-AcVQVAACd0V4G0jE428.jpg"); + path.add("group1/M00/60/B4/wKgfWWVMLnWALWbYAACd0V4G0jE128.jpg"); + path.add("group1/M01/60/B5/wKgfWWVMLpCAN_NnAACd0V4G0jE516.jpg"); + path.add("group1/M00/60/C2/wKgfWWVMMfuAVhsBAACd0V4G0jE633.jpg"); + path.add("group1/M00/60/C3/wKgfWWVMMheAbwvYAACd0V4G0jE158.jpg"); + path.add("group1/M02/60/D0/wKgfWWVMNX6AdWvtAACd0V4G0jE356.jpg"); + path.add("group1/M01/60/D1/wKgfWWVMNZ-APUSJAACd0V4G0jE625.jpg"); + path.add("group1/M02/61/95/wKgfWWVMmYOAJtP_AACd0V4G0jE822.jpg"); + path.add("group1/M00/61/97/wKgfWWVMmamAXV9PAACd0V4G0jE838.jpg"); + path.add("group1/M02/61/C9/wKgfWWVMnQuAXPPHAACd0V4G0jE834.jpg"); + path.add("group1/M02/61/CB/wKgfWWVMnS6ANXN6AACd0V4G0jE189.jpg"); + path.add("group1/M02/61/FB/wKgfWWVMoJOAFFZaAACd0V4G0jE399.jpg"); + path.add("group1/M02/61/FC/wKgfWWVMoLKAKwQnAACd0V4G0jE056.jpg"); + path.add("group1/M00/62/3C/wKgfWWVMrMCAMevIAACd0V4G0jE344.jpg"); + path.add("group1/M02/62/3E/wKgfWWVMrOmAY9qUAACd0V4G0jE769.jpg"); + path.add("group1/M01/62/50/wKgfWWVMsFaAKXH_AACd0V4G0jE680.jpg"); + path.add("group1/M02/62/51/wKgfWWVMsImACKrQAACd0V4G0jE918.jpg"); + path.add("group1/M00/62/64/wKgfWWVMs_SAMFuzAACd0V4G0jE998.jpg"); + path.add("group1/M02/62/66/wKgfWWVMtDCAXuxGAACd0V4G0jE686.jpg"); + path.add("group2/M02/32/7B/wKgfWWVMt3GAGpifAACd0V4G0jE576.jpg"); + path.add("group2/M02/32/7C/wKgfWWVMt5iAOB5lAACd0V4G0jE349.jpg"); + path.add("group1/M00/62/89/wKgfWWVMuu2ARYgvAACd0V4G0jE024.jpg"); + path.add("group1/M00/62/8B/wKgfWWVMuxCAM6ESAACd0V4G0jE449.jpg"); + path.add("group1/M00/62/99/wKgfWWVMvnqAH3LRAACd0V4G0jE888.jpg"); + path.add("group1/M02/62/9A/wKgfWWVMvqCAfvm5AACd0V4G0jE059.jpg"); + path.add("group1/M01/62/AB/wKgfWWVMwg-AFZbKAACd0V4G0jE421.jpg"); + path.add("group1/M01/62/AD/wKgfWWVMwjeAUQgFAACd0V4G0jE424.jpg"); + path.add("group1/M00/62/BD/wKgfWWVMxZiAHt6eAACd0V4G0jE248.jpg"); + path.add("group1/M00/62/BE/wKgfWWVMxbyAYhrgAACd0V4G0jE859.jpg"); + path.add("group2/M00/32/8B/wKgfWWVMyR2APvwPAACd0V4G0jE115.jpg"); + path.add("group1/M01/62/D0/wKgfWWVMyUGATV31AACd0V4G0jE236.jpg"); + path.add("group1/M02/63/45/wKgfWWVNyZeAWTB1AACd0V4G0jE765.jpg"); + path.add("group2/M02/32/C3/wKgfWWVNyb-AOJo5AACd0V4G0jE880.jpg"); + path.add("group2/M01/32/CF/wKgfWWVNzSuAK9UpAACd0V4G0jE339.jpg"); + path.add("group2/M00/32/D0/wKgfWWVNzUWASGJEAACd0V4G0jE047.jpg"); + path.add("group2/M01/32/DF/wKgfWWVN0K-AYl40AACd0V4G0jE489.jpg"); + path.add("group2/M00/32/E1/wKgfWWVN0NCACa9qAACd0V4G0jE135.jpg"); + path.add("group1/M02/63/53/wKgfWWVN1DmAOBUKAACd0V4G0jE612.jpg"); + path.add("group1/M01/63/54/wKgfWWVN1FqAFjcFAACd0V4G0jE975.jpg"); + path.add("group2/M00/33/00/wKgfWWVN17qAIIOYAACd0V4G0jE174.jpg"); + path.add("group2/M00/33/01/wKgfWWVN19mAYHm4AACd0V4G0jE456.jpg"); + path.add("group1/M01/63/62/wKgfWWVN20OACcaJAACd0V4G0jE454.jpg"); + path.add("group1/M00/63/64/wKgfWWVN22aAH4tHAACd0V4G0jE975.jpg"); + path.add("group2/M00/33/1C/wKgfWWVN3sqAUibxAACd0V4G0jE657.jpg"); + path.add("group2/M00/33/1D/wKgfWWVN3vaAGoJsAACd0V4G0jE956.jpg"); + path.add("group1/M00/63/6B/wKgfWWVN4kiATKXvAACd0V4G0jE683.jpg"); + path.add("group1/M02/63/6D/wKgfWWVN4myAKDH7AACd0V4G0jE418.jpg"); + path.add("group1/M01/63/76/wKgfWWVN5c6AAT0NAACd0V4G0jE864.jpg"); + path.add("group1/M01/63/78/wKgfWWVN5e6APSJMAACd0V4G0jE591.jpg"); + path.add("group1/M02/63/82/wKgfWWVN6VeALR1DAACd0V4G0jE589.jpg"); + path.add("group1/M01/63/83/wKgfWWVN6XeAHu26AACd0V4G0jE934.jpg"); + path.add("group2/M02/33/4A/wKgfWWVN7NiAWsVVAACd0V4G0jE578.jpg"); + path.add("group1/M00/63/8D/wKgfWWVN7QOAU2wmAACd0V4G0jE352.jpg"); + path.add("group1/M02/63/97/wKgfWWVN8GeAQHOSAACd0V4G0jE862.jpg"); + path.add("group1/M00/63/99/wKgfWWVN8IeAGR64AACd0V4G0jE966.jpg"); + path.add("group2/M00/33/5E/wKgfWWVN8-WASSHaAACd0V4G0jE723.jpg"); + path.add("group1/M01/63/A2/wKgfWWVN9A6AeWACAACd0V4G0jE314.jpg"); + path.add("group1/M02/63/AA/wKgfWWVN93OAFp9zAACd0V4G0jE926.jpg"); + path.add("group2/M00/33/6B/wKgfWWVN95eAHgoDAACd0V4G0jE637.jpg"); + path.add("group1/M02/63/C0/wKgfWWVOBA2AQEZbAACd0V4G0jE585.jpg"); + path.add("group1/M00/63/C2/wKgfWWVOBDOAbs0wAACd0V4G0jE710.jpg"); + path.add("group1/M02/63/D3/wKgfWWVOB5iAHaQJAACd0V4G0jE215.jpg"); + path.add("group2/M00/33/80/wKgfWWVOB7KAVdBEAACd0V4G0jE752.jpg"); + path.add("group1/M00/63/E5/wKgfWWVOCxeARWaaAACd0V4G0jE782.jpg"); + path.add("group1/M02/63/E7/wKgfWWVOCzqAD6GRAACd0V4G0jE808.jpg"); + path.add("group1/M00/63/F5/wKgfWWVODpuAIb5CAACd0V4G0jE885.jpg"); + path.add("group1/M02/63/F6/wKgfWWVODryAJ_23AACd0V4G0jE167.jpg"); + path.add("group1/M00/64/03/wKgfWWVOFMiAMMgxAACd0V4G0jE676.jpg"); + path.add("group2/M00/33/90/wKgfWWVOFOyAR8PDAACd0V4G0jE565.jpg"); + path.add("group1/M01/64/0F/wKgfWWVOGFaACj3MAACd0V4G0jE893.jpg"); + path.add("group2/M02/33/9D/wKgfWWVOGHiAYLTiAACd0V4G0jE116.jpg"); + path.add("group1/M02/64/17/wKgfWWVOG9WAFHkQAACd0V4G0jE675.jpg"); + path.add("group2/M01/33/A7/wKgfWWVOG_yASfr6AACd0V4G0jE785.jpg"); + path.add("group1/M00/64/24/wKgfWWVOH2uAC15SAACd0V4G0jE372.jpg"); + path.add("group1/M02/64/25/wKgfWWVOH4iATsvTAACd0V4G0jE557.jpg"); + path.add("group1/M01/64/2E/wKgfWWVOIuSAJxvSAACd0V4G0jE817.jpg"); + path.add("group2/M00/33/BA/wKgfWWVOIwuATfWEAACd0V4G0jE535.jpg"); + path.add("group1/M01/64/38/wKgfWWVOJm6AZeMfAACd0V4G0jE469.jpg"); + path.add("group1/M01/64/39/wKgfWWVOJo-ALxVTAACd0V4G0jE482.jpg"); + path.add("group1/M02/64/3D/wKgfWWVPP8iAAvtIAACd0V4G0jE809.jpg"); + path.add("group1/M01/64/3E/wKgfWWVPP9GAWgHRAACd0V4G0jE293.jpg"); + path.add("group1/M02/64/7A/wKgfWWVPQfmAJIxVAACd0V4G0jE803.jpg"); + path.add("group2/M02/33/C6/wKgfWWVPQgaAKVpYAACd0V4G0jE458.jpg"); + path.add("group1/M01/64/7C/wKgfWWVPQhiAfsuYAACd0V4G0jE482.jpg"); + path.add("group1/M02/64/7D/wKgfWWVPQi6AONGXAACd0V4G0jE398.jpg"); + path.add("group1/M00/64/7E/wKgfWWVPQj-ACF1gAACd0V4G0jE895.jpg"); + path.add("group1/M00/64/7F/wKgfWWVPQkyAe8k6AACd0V4G0jE311.jpg"); + path.add("group1/M01/64/81/wKgfWWVPQlyAd4xoAACd0V4G0jE317.jpg"); + path.add("group1/M01/64/82/wKgfWWVPQnCAW9rGAACd0V4G0jE502.jpg"); + path.add("group2/M01/33/C7/wKgfWWVPQoGAc55-AACd0V4G0jE384.jpg"); + path.add("group1/M02/64/84/wKgfWWVPQo2AO9hUAACd0V4G0jE376.jpg"); + path.add("group1/M01/64/85/wKgfWWVPQpqAIdoKAACd0V4G0jE515.jpg"); + path.add("group1/M00/64/87/wKgfWWVPQqaAPDRlAACd0V4G0jE183.jpg"); + path.add("group1/M02/64/88/wKgfWWVPQrGAYJYDAACd0V4G0jE731.jpg"); + path.add("group2/M01/33/C8/wKgfWWVPQryAb5AuAACd0V4G0jE150.jpg"); + path.add("group1/M01/64/8A/wKgfWWVPQsmACbQMAACd0V4G0jE154.jpg"); + path.add("group1/M02/64/8B/wKgfWWVPQteALt3MAACd0V4G0jE126.jpg"); + path.add("group1/M00/64/8C/wKgfWWVPQu2ABbgzAACd0V4G0jE048.jpg"); + path.add("group1/M01/64/8D/wKgfWWVPQwGADzUjAACd0V4G0jE240.jpg"); + path.add("group1/M00/64/8E/wKgfWWVPQw-AeOVeAACd0V4G0jE968.jpg"); + path.add("group1/M00/64/90/wKgfWWVPQxqAHxB8AACd0V4G0jE103.jpg"); + path.add("group1/M02/64/91/wKgfWWVPQyaAEcWSAACd0V4G0jE050.jpg"); + path.add("group1/M00/64/92/wKgfWWVPQzeAdvipAACd0V4G0jE855.jpg"); + path.add("group2/M02/33/FD/wKgfWWVPd3yAI5pLAACd0V4G0jE521.jpg"); + path.add("group1/M01/66/C2/wKgfWWVPd6WAPvn7AACd0V4G0jE836.jpg"); + path.add("group2/M02/34/00/wKgfWWVPewGAAxaSAACd0V4G0jE895.jpg"); + path.add("group1/M02/66/D6/wKgfWWVPeyOAbaXuAACd0V4G0jE649.jpg"); + path.add("group2/M00/34/02/wKgfWWVPfoiAfYdvAACd0V4G0jE236.jpg"); + path.add("group1/M02/66/E8/wKgfWWVPfqyATRd3AACd0V4G0jE864.jpg"); + path.add("group2/M00/34/04/wKgfWWVPggyAR1gjAACd0V4G0jE610.jpg"); + path.add("group1/M02/66/F8/wKgfWWVPgjGAFssSAACd0V4G0jE140.jpg"); + path.add("group1/M01/67/07/wKgfWWVPhZqAbBSoAACd0V4G0jE882.jpg"); + path.add("group1/M02/67/08/wKgfWWVPhbmAGpiMAACd0V4G0jE743.jpg"); + path.add("group1/M00/67/16/wKgfWWVPiSCAFofiAACd0V4G0jE558.jpg"); + path.add("group1/M02/67/17/wKgfWWVPiT-AMY5NAACd0V4G0jE263.jpg"); + path.add("group1/M01/67/27/wKgfWWVPjKqAKOiiAACd0V4G0jE180.jpg"); + path.add("group1/M00/67/27/wKgfWWVPjMmAbv84AACd0V4G0jE469.jpg"); + path.add("group1/M01/67/37/wKgfWWVPkC-Acyz4AACd0V4G0jE239.jpg"); + path.add("group1/M01/67/38/wKgfWWVPkE-ARtqjAACd0V4G0jE061.jpg"); + path.add("group1/M02/67/47/wKgfWWVPk7KAEzMuAACd0V4G0jE262.jpg"); + path.add("group1/M00/67/48/wKgfWWVPk9aAJvnqAACd0V4G0jE267.jpg"); + path.add("group1/M02/67/58/wKgfWWVPlzuANzvVAACd0V4G0jE541.jpg"); + path.add("group2/M02/34/0F/wKgfWWVPl1uAQyupAACd0V4G0jE678.jpg"); + path.add("group1/M00/67/67/wKgfWWVPmsWATYFIAACd0V4G0jE709.jpg"); + path.add("group2/M01/34/11/wKgfWWVPmuSAQ8m4AACd0V4G0jE296.jpg"); + path.add("group1/M01/67/78/wKgfWWVPnkiAIVrVAACd0V4G0jE458.jpg"); + path.add("group2/M00/34/13/wKgfWWVPnmeAXxfoAACd0V4G0jE813.jpg"); + path.add("group1/M01/67/88/wKgfWWVPocmAJzmGAACd0V4G0jE331.jpg"); + path.add("group2/M00/34/15/wKgfWWVPoemAH2woAACd0V4G0jE003.jpg"); + path.add("group1/M02/67/98/wKgfWWVPpVyAete3AACd0V4G0jE850.jpg"); + path.add("group1/M01/67/99/wKgfWWVPpX-ADxInAACd0V4G0jE099.jpg"); + path.add("group1/M02/68/05/wKgfWWVPsjWAYpY3AACd0V4G0jE550.jpg"); + path.add("group2/M01/34/24/wKgfWWVPslWAHQ2bAACd0V4G0jE259.jpg"); + path.add("group1/M01/68/1B/wKgfWWVPtb-AKd37AACd0V4G0jE224.jpg"); + path.add("group1/M02/68/1C/wKgfWWVPteCAArBvAACd0V4G0jE073.jpg"); + path.add("group1/M01/68/2D/wKgfWWVPuUeAe0VwAACd0V4G0jE922.jpg"); + path.add("group1/M02/68/2D/wKgfWWVPuWaAAU0OAACd0V4G0jE423.jpg"); + path.add("group1/M01/68/3C/wKgfWWVPvMuAfSo8AACd0V4G0jE577.jpg"); + path.add("group1/M00/68/3D/wKgfWWVPvOmAXLOZAACd0V4G0jE010.jpg"); + path.add("group1/M02/68/4C/wKgfWWVPwE2AX0UWAACd0V4G0jE460.jpg"); + path.add("group1/M00/68/4C/wKgfWWVPwHGARGynAACd0V4G0jE363.jpg"); + path.add("group1/M02/68/5B/wKgfWWVPw9aAb_zZAACd0V4G0jE199.jpg"); + path.add("group1/M01/68/5B/wKgfWWVPxACAGucaAACd0V4G0jE064.jpg"); + path.add("group1/M02/68/6B/wKgfWWVPx1iAaQHwAACd0V4G0jE199.jpg"); + path.add("group1/M00/68/6B/wKgfWWVPx3yAPvKOAACd0V4G0jE519.jpg"); + path.add("group1/M00/68/7B/wKgfWWVPyt-AEjGHAACd0V4G0jE582.jpg"); + path.add("group1/M00/68/7B/wKgfWWVPywOAaNpDAACd0V4G0jE249.jpg"); + path.add("group1/M02/68/8B/wKgfWWVPzmmAWv7hAACd0V4G0jE188.jpg"); + path.add("group1/M01/68/8B/wKgfWWVPzomAcCVHAACd0V4G0jE043.jpg"); + path.add("group1/M01/68/9A/wKgfWWVP0eqATaCtAACd0V4G0jE387.jpg"); + path.add("group1/M00/68/9B/wKgfWWVP0g6AAYabAACd0V4G0jE394.jpg"); + path.add("group1/M01/68/AA/wKgfWWVP1XKAYSzTAACd0V4G0jE088.jpg"); + path.add("group1/M00/68/AB/wKgfWWVP1ZCANYYcAACd0V4G0jE655.jpg"); + path.add("group1/M01/68/B8/wKgfWWVP2PSAfMlOAACd0V4G0jE110.jpg"); + path.add("group1/M02/68/B9/wKgfWWVP2ReAQvKMAACd0V4G0jE309.jpg"); + path.add("group1/M01/68/C9/wKgfWWVP3H2AY9hCAACd0V4G0jE060.jpg"); + path.add("group1/M01/68/C9/wKgfWWVP3KCAI5mVAACd0V4G0jE276.jpg"); + path.add("group1/M00/68/D9/wKgfWWVP4AGAcwoqAACd0V4G0jE719.jpg"); + path.add("group1/M01/68/DA/wKgfWWVP4CCAdPT9AACd0V4G0jE106.jpg"); + path.add("group2/M02/34/45/wKgfWWVP44mASAZ0AACd0V4G0jE297.jpg"); + path.add("group1/M01/68/E9/wKgfWWVP462AFot8AACd0V4G0jE616.jpg"); + path.add("group2/M01/34/48/wKgfWWVP5xGAdqY1AACd0V4G0jE143.jpg"); + path.add("group1/M00/68/F9/wKgfWWVP5zWABBUFAACd0V4G0jE355.jpg"); + path.add("group2/M01/34/49/wKgfWWVP6pOARFbzAACd0V4G0jE723.jpg"); + path.add("group1/M01/69/09/wKgfWWVP6riAZ9V_AACd0V4G0jE082.jpg"); + path.add("group1/M01/69/17/wKgfWWVP7h6AO1u_AACd0V4G0jE631.jpg"); + path.add("group1/M00/69/18/wKgfWWVP7j2AWiiaAACd0V4G0jE386.jpg"); + path.add("group2/M02/34/4E/wKgfWWVP8Z-ADK2LAACd0V4G0jE679.jpg"); + path.add("group1/M01/69/28/wKgfWWVP8cKAccjRAACd0V4G0jE204.jpg"); + path.add("group1/M01/69/37/wKgfWWVP9SWAS_53AACd0V4G0jE993.jpg"); + path.add("group1/M02/69/38/wKgfWWVP9USAHGv2AACd0V4G0jE096.jpg"); + path.add("group1/M00/69/47/wKgfWWVP-KyAEdM3AACd0V4G0jE438.jpg"); + path.add("group1/M01/69/48/wKgfWWVP-MyAaJwoAACd0V4G0jE976.jpg"); + path.add("group1/M00/69/56/wKgfWWVP_DKANx9KAACd0V4G0jE768.jpg"); + path.add("group1/M02/69/57/wKgfWWVP_FaAMbVFAACd0V4G0jE571.jpg"); + path.add("group1/M01/69/66/wKgfWWVP_7iASnwuAACd0V4G0jE666.jpg"); + path.add("group1/M01/69/67/wKgfWWVP_9eAbNrvAACd0V4G0jE352.jpg"); + path.add("group1/M00/69/75/wKgfWWVQA0CAYcJ6AACd0V4G0jE288.jpg"); + path.add("group1/M01/69/76/wKgfWWVQA16Aak-DAACd0V4G0jE941.jpg"); + path.add("group1/M02/69/85/wKgfWWVQBsaAWDB5AACd0V4G0jE386.jpg"); + path.add("group2/M01/34/5B/wKgfWWVQBuyAW4uvAACd0V4G0jE803.jpg"); + path.add("group1/M00/69/95/wKgfWWVQCkeAbBqLAACd0V4G0jE056.jpg"); + path.add("group1/M00/69/96/wKgfWWVQCmuAHwKUAACd0V4G0jE960.jpg"); + path.add("group1/M00/69/A5/wKgfWWVQDdOAfbHWAACd0V4G0jE059.jpg"); + path.add("group1/M01/69/A6/wKgfWWVQDfKAJUCYAACd0V4G0jE896.jpg"); + path.add("group1/M00/69/B5/wKgfWWVQEV6AVOY5AACd0V4G0jE690.jpg"); + path.add("group2/M01/34/62/wKgfWWVQEX-AIS4YAACd0V4G0jE762.jpg"); + path.add("group1/M00/69/C4/wKgfWWVQFN6AAcawAACd0V4G0jE043.jpg"); + path.add("group2/M01/34/64/wKgfWWVQFQKAfhpFAACd0V4G0jE201.jpg"); + path.add("group1/M02/69/D4/wKgfWWVQGGqAc_toAACd0V4G0jE289.jpg"); + path.add("group1/M02/69/D4/wKgfWWVQGImAI2EcAACd0V4G0jE467.jpg"); + path.add("group1/M00/69/E4/wKgfWWVQG-yALHu9AACd0V4G0jE558.jpg"); + path.add("group1/M02/69/E4/wKgfWWVQHBCAAiOwAACd0V4G0jE816.jpg"); + path.add("group1/M00/69/F4/wKgfWWVQH3KAXqztAACd0V4G0jE159.jpg"); + path.add("group1/M01/69/F4/wKgfWWVQH5KADBpSAACd0V4G0jE985.jpg"); + path.add("group1/M02/6A/04/wKgfWWVQIviAB4g6AACd0V4G0jE459.jpg"); + path.add("group1/M02/6A/04/wKgfWWVQIxyAS4ttAACd0V4G0jE514.jpg"); + path.add("group1/M00/6A/14/wKgfWWVQJn-AYyzzAACd0V4G0jE224.jpg"); + path.add("group1/M00/6A/14/wKgfWWVQJqOAe4zEAACd0V4G0jE120.jpg"); + path.add("group1/M00/6A/23/wKgfWWVQKgWAE3NEAACd0V4G0jE299.jpg"); + path.add("group1/M02/6A/24/wKgfWWVQKiSAe79aAACd0V4G0jE007.jpg"); + path.add("group1/M01/6A/33/wKgfWWVQLYuABt2EAACd0V4G0jE740.jpg"); + path.add("group1/M00/6A/33/wKgfWWVQLaqAKlTYAACd0V4G0jE362.jpg"); + path.add("group1/M02/6A/43/wKgfWWVQMQ2ASxgkAACd0V4G0jE488.jpg"); + path.add("group1/M00/6A/43/wKgfWWVQMTGAFND6AACd0V4G0jE897.jpg"); + path.add("group1/M01/6A/53/wKgfWWVQNJaAboKwAACd0V4G0jE860.jpg"); + path.add("group1/M00/6A/53/wKgfWWVQNLaAaL5AAACd0V4G0jE147.jpg"); + path.add("group1/M01/6A/63/wKgfWWVQOBiAOPDsAACd0V4G0jE495.jpg"); + path.add("group1/M02/6A/63/wKgfWWVQODiAPCctAACd0V4G0jE039.jpg"); + path.add("group1/M02/6A/73/wKgfWWVQO6GAMRsYAACd0V4G0jE072.jpg"); + path.add("group1/M01/6A/73/wKgfWWVQO8uAB5JvAACd0V4G0jE950.jpg"); + path.add("group1/M00/6A/82/wKgfWWVQPyWASY2TAACd0V4G0jE835.jpg"); + path.add("group1/M02/6A/83/wKgfWWVQP0mAeefhAACd0V4G0jE181.jpg"); + path.add("group1/M02/6A/92/wKgfWWVQQq2ALvA8AACd0V4G0jE440.jpg"); + path.add("group1/M01/6A/92/wKgfWWVQQsyAVqtwAACd0V4G0jE231.jpg"); + path.add("group1/M02/6A/A0/wKgfWWVQSLSAefIgAACd0V4G0jE240.jpg"); + path.add("group1/M01/6A/A2/wKgfWWVQSNaALLK8AACd0V4G0jE320.jpg"); + path.add("group1/M00/6A/B0/wKgfWWVQTDuAIkGEAACd0V4G0jE932.jpg"); + path.add("group1/M02/6A/B2/wKgfWWVQTGOAPEzjAACd0V4G0jE094.jpg"); + path.add("group1/M00/6A/C3/wKgfWWVQT8SAQ_mRAACd0V4G0jE946.jpg"); + path.add("group1/M02/6A/C4/wKgfWWVQT-KAGVVdAACd0V4G0jE595.jpg"); + path.add("group1/M02/6A/D5/wKgfWWVQU0uAAeVTAACd0V4G0jE657.jpg"); + path.add("group1/M02/6A/D6/wKgfWWVQU22AN5OLAACd0V4G0jE625.jpg"); + path.add("group1/M01/6A/EB/wKgfWWVQVs-AGuTIAACd0V4G0jE769.jpg"); + path.add("group1/M01/6A/EC/wKgfWWVQVvKASeZhAACd0V4G0jE682.jpg"); + path.add("group1/M01/6B/05/wKgfWWVQWluAdxR_AACd0V4G0jE085.jpg"); + path.add("group1/M00/6B/06/wKgfWWVQWnuAObeCAACd0V4G0jE941.jpg"); + path.add("group1/M01/6B/1F/wKgfWWVQXd2ABvdGAACd0V4G0jE288.jpg"); + path.add("group1/M02/6B/20/wKgfWWVQXgKAB88oAACd0V4G0jE618.jpg"); + path.add("group1/M01/6B/30/wKgfWWVQYWGALh5fAACd0V4G0jE914.jpg"); + path.add("group1/M00/6B/31/wKgfWWVQYYGAIHZlAACd0V4G0jE057.jpg"); + path.add("group1/M02/6B/40/wKgfWWVQZOeAMY7NAACd0V4G0jE695.jpg"); + path.add("group1/M01/6B/40/wKgfWWVQZQqADJBfAACd0V4G0jE005.jpg"); + path.add("group2/M00/34/9C/wKgfWWVQaG6AbJl-AACd0V4G0jE275.jpg"); + path.add("group1/M00/6B/50/wKgfWWVQaJKAA4GwAACd0V4G0jE058.jpg"); + path.add("group2/M01/34/9F/wKgfWWVQa_WAdrS5AACd0V4G0jE969.jpg"); + path.add("group1/M01/6B/63/wKgfWWVQbBWAZ3SyAACd0V4G0jE528.jpg"); + path.add("group2/M01/34/A3/wKgfWWVQb3uAM_5xAACd0V4G0jE030.jpg"); + path.add("group1/M02/6B/74/wKgfWWVQb52AdAEbAACd0V4G0jE936.jpg"); + path.add("group1/M00/6B/87/wKgfWWVQcwyAPEvDAACd0V4G0jE705.jpg"); + path.add("group1/M00/6B/88/wKgfWWVQcy2ALSUmAACd0V4G0jE274.jpg"); + path.add("group1/M01/6B/98/wKgfWWVQdpaAUpSLAACd0V4G0jE169.jpg"); + path.add("group1/M02/6B/99/wKgfWWVQdrWAXurbAACd0V4G0jE114.jpg"); + path.add("group1/M00/6B/A8/wKgfWWVQeiSAU5P9AACd0V4G0jE099.jpg"); + path.add("group2/M02/34/AE/wKgfWWVQekKAb8ISAACd0V4G0jE423.jpg"); + path.add("group1/M00/6B/B7/wKgfWWVQfbGAExy8AACd0V4G0jE684.jpg"); + path.add("group1/M01/6B/B8/wKgfWWVQfdCAPGtqAACd0V4G0jE898.jpg"); + path.add("group1/M01/6B/C7/wKgfWWVQgT-AduLeAACd0V4G0jE454.jpg"); + path.add("group1/M01/6B/C8/wKgfWWVQgWOAb-9nAACd0V4G0jE459.jpg"); + path.add("group1/M02/6B/D6/wKgfWWVQhMuAJd2WAACd0V4G0jE166.jpg"); + path.add("group1/M00/6B/D7/wKgfWWVQhOuABIBxAACd0V4G0jE981.jpg"); + path.add("group1/M00/6B/E5/wKgfWWVQiFyAFi7AAACd0V4G0jE216.jpg"); + path.add("group1/M01/6B/E6/wKgfWWVQiHuAMlIrAACd0V4G0jE898.jpg"); + path.add("group1/M02/6B/FE/wKgfWWVQj7SAO5VwAACd0V4G0jE548.jpg"); + path.add("group1/M02/6C/00/wKgfWWVQj9uAEBY_AACd0V4G0jE420.jpg"); + path.add("group1/M01/6C/13/wKgfWWVQk0OAEpUtAACd0V4G0jE871.jpg"); + path.add("group1/M02/6C/14/wKgfWWVQk2KAaFRWAACd0V4G0jE959.jpg"); + path.add("group1/M00/6C/23/wKgfWWVQlr-AE4-RAACd0V4G0jE131.jpg"); + path.add("group1/M02/6C/25/wKgfWWVQluaAK7auAACd0V4G0jE363.jpg"); + path.add("group1/M01/6C/33/wKgfWWVQmkaAMAm-AACd0V4G0jE318.jpg"); + path.add("group1/M02/6C/35/wKgfWWVQmm-AKRotAACd0V4G0jE240.jpg"); + path.add("group1/M02/6C/43/wKgfWWVQndSAFnwNAACd0V4G0jE262.jpg"); + path.add("group1/M01/6C/44/wKgfWWVQnfKAR6XKAACd0V4G0jE596.jpg"); + path.add("group1/M00/6C/52/wKgfWWVQoVOAJCJmAACd0V4G0jE329.jpg"); + path.add("group1/M00/6C/54/wKgfWWVQoXuAXStlAACd0V4G0jE713.jpg"); + path.add("group1/M02/6C/63/wKgfWWVQpNeAQtHOAACd0V4G0jE057.jpg"); + path.add("group1/M02/6C/64/wKgfWWVQpP-ACHMXAACd0V4G0jE078.jpg"); + path.add("group1/M01/6C/73/wKgfWWVQqGmADBaHAACd0V4G0jE839.jpg"); + path.add("group1/M02/6C/74/wKgfWWVQqImAXopUAACd0V4G0jE402.jpg"); + path.add("group2/M01/34/D9/wKgfWWVQq_KAdD06AACd0V4G0jE923.jpg"); + path.add("group1/M01/6C/84/wKgfWWVQrBCAJy7yAACd0V4G0jE518.jpg"); + path.add("group1/M00/6C/92/wKgfWWVQr3-AMlH8AACd0V4G0jE023.jpg"); + path.add("group1/M01/6C/94/wKgfWWVQr5-ABoCyAACd0V4G0jE719.jpg"); + path.add("group2/M01/34/E1/wKgfWWVQswGABhYCAACd0V4G0jE715.jpg"); + path.add("group1/M01/6C/A2/wKgfWWVQsyKANLOkAACd0V4G0jE436.jpg"); + path.add("group1/M00/6C/B1/wKgfWWVQtomALYPVAACd0V4G0jE061.jpg"); + path.add("group1/M02/6C/B3/wKgfWWVQtqeAL3zUAACd0V4G0jE192.jpg"); + path.add("group1/M00/6D/35/wKgfWWVQ9P6AdMjCAACd0V4G0jE272.jpg"); + path.add("group1/M01/6D/35/wKgfWWVQ9R-AaBssAACd0V4G0jE704.jpg"); + path.add("group2/M01/35/20/wKgfWWVRBJCATgsVAACd0V4G0jE624.jpg"); + path.add("group1/M02/6D/AA/wKgfWWVRBLOAc4toAACd0V4G0jE430.jpg"); + path.add("group2/M02/35/24/wKgfWWVRCBeAHqzcAACd0V4G0jE316.jpg"); + path.add("group1/M02/6D/B8/wKgfWWVRCDSAaxmzAACd0V4G0jE344.jpg"); + path.add("group2/M01/35/29/wKgfWWVRC5yABZcCAACd0V4G0jE542.jpg"); + path.add("group1/M00/6D/C7/wKgfWWVRC76AUBiJAACd0V4G0jE317.jpg"); + path.add("group2/M01/35/2D/wKgfWWVRDyOAKAyKAACd0V4G0jE780.jpg"); + path.add("group1/M00/6D/D6/wKgfWWVRD0CACErEAACd0V4G0jE533.jpg"); + path.add("group2/M02/35/31/wKgfWWVREqmAVTLaAACd0V4G0jE418.jpg"); + path.add("group1/M01/6D/E5/wKgfWWVREseARIbwAACd0V4G0jE716.jpg"); + path.add("group1/M00/6D/F3/wKgfWWVRFi6AVIR4AACd0V4G0jE204.jpg"); + path.add("group1/M01/6D/F3/wKgfWWVRFlCAPrtyAACd0V4G0jE308.jpg"); + path.add("group1/M00/6E/02/wKgfWWVRGbaAU3J-AACd0V4G0jE779.jpg"); + path.add("group1/M01/6E/02/wKgfWWVRGdOAVUZCAACd0V4G0jE908.jpg"); + path.add("group1/M00/6E/11/wKgfWWVRHTmAIJJDAACd0V4G0jE591.jpg"); + path.add("group1/M00/6E/11/wKgfWWVRHVqAWMFFAACd0V4G0jE475.jpg"); + path.add("group1/M00/6E/1F/wKgfWWVRIL-AM5lpAACd0V4G0jE412.jpg"); + path.add("group1/M01/6E/1F/wKgfWWVRIOCAOVwtAACd0V4G0jE777.jpg"); + path.add("group1/M02/6E/2E/wKgfWWVRJEWAUcDPAACd0V4G0jE302.jpg"); + path.add("group1/M01/6E/2E/wKgfWWVRJGaAVVCeAACd0V4G0jE783.jpg"); + path.add("group1/M02/6E/3C/wKgfWWVRJ9CAStq-AACd0V4G0jE035.jpg"); + path.add("group2/M02/35/4C/wKgfWWVRJ_KAPOJdAACd0V4G0jE009.jpg"); + path.add("group1/M00/6E/4A/wKgfWWVRK1OAJXElAACd0V4G0jE717.jpg"); + path.add("group2/M02/35/51/wKgfWWVRK3WANQV1AACd0V4G0jE866.jpg"); + path.add("group1/M01/6E/58/wKgfWWVRLtuAJK2dAACd0V4G0jE428.jpg"); + path.add("group2/M01/35/56/wKgfWWVRLvyAZnY-AACd0V4G0jE661.jpg"); + path.add("group1/M00/6E/66/wKgfWWVRMl6ANLdGAACd0V4G0jE427.jpg"); + path.add("group2/M02/35/5A/wKgfWWVRMn-AcAE6AACd0V4G0jE118.jpg"); + path.add("group1/M00/6E/75/wKgfWWVRNeSAdiDnAACd0V4G0jE092.jpg"); + path.add("group2/M00/35/5F/wKgfWWVRNgKAQ7pHAACd0V4G0jE604.jpg"); + path.add("group1/M00/6E/83/wKgfWWVROWuAXm4xAACd0V4G0jE671.jpg"); + path.add("group2/M02/35/64/wKgfWWVROY2ADRVaAACd0V4G0jE491.jpg"); + path.add("group1/M01/6E/92/wKgfWWVRPPKAN9nQAACd0V4G0jE381.jpg"); + path.add("group2/M00/35/69/wKgfWWVRPRCAGnSKAACd0V4G0jE125.jpg"); + path.add("group1/M01/6E/A0/wKgfWWVRQHWAEwaoAACd0V4G0jE188.jpg"); + path.add("group2/M01/35/6D/wKgfWWVRQJaAEV-QAACd0V4G0jE051.jpg"); + path.add("group1/M00/6E/AE/wKgfWWVRQ_2ABjPwAACd0V4G0jE399.jpg"); + path.add("group1/M00/6E/AF/wKgfWWVRRB6ARYX1AACd0V4G0jE310.jpg"); + path.add("group1/M01/6E/BC/wKgfWWVRR4GAK2N_AACd0V4G0jE182.jpg"); + path.add("group2/M00/35/77/wKgfWWVRR6KAcYaHAACd0V4G0jE211.jpg"); + path.add("group1/M02/6E/CB/wKgfWWVRSweAV6_QAACd0V4G0jE740.jpg"); + path.add("group1/M02/6E/CB/wKgfWWVRSyiABlO_AACd0V4G0jE398.jpg"); + path.add("group1/M01/6E/DA/wKgfWWVRToyAIu2AAACd0V4G0jE154.jpg"); + path.add("group2/M02/35/80/wKgfWWVRTqqAUTLpAACd0V4G0jE253.jpg"); + path.add("group1/M02/6E/E8/wKgfWWVRUhGAT9cIAACd0V4G0jE911.jpg"); + path.add("group1/M00/6E/E8/wKgfWWVRUi-AXfPEAACd0V4G0jE987.jpg"); + path.add("group1/M00/6E/F6/wKgfWWVRVZWAZ3r9AACd0V4G0jE900.jpg"); + path.add("group1/M02/6E/F7/wKgfWWVRVbeAN55tAACd0V4G0jE593.jpg"); + path.add("group1/M02/6F/05/wKgfWWVRWR2AMiQJAACd0V4G0jE733.jpg"); + path.add("group1/M00/6F/05/wKgfWWVRWT6ANKZSAACd0V4G0jE216.jpg"); + path.add("group1/M02/6F/13/wKgfWWVRXKGAADA4AACd0V4G0jE742.jpg"); + path.add("group1/M01/6F/13/wKgfWWVRXMOAKODmAACd0V4G0jE614.jpg"); + path.add("group1/M00/6F/21/wKgfWWVRYCiAIHrQAACd0V4G0jE507.jpg"); + path.add("group1/M00/6F/21/wKgfWWVRYEaAZtwyAACd0V4G0jE263.jpg"); + path.add("group1/M00/6F/2F/wKgfWWVRY62ABn5QAACd0V4G0jE369.jpg"); + path.add("group1/M01/6F/30/wKgfWWVRY8-AQH3rAACd0V4G0jE517.jpg"); + path.add("group1/M00/6F/3E/wKgfWWVRZzOAaOhhAACd0V4G0jE451.jpg"); + path.add("group1/M02/6F/3E/wKgfWWVRZ1GAHI5pAACd0V4G0jE210.jpg"); + path.add("group1/M01/6F/4C/wKgfWWVRaraAEcRdAACd0V4G0jE914.jpg"); + path.add("group1/M02/6F/4D/wKgfWWVRatiAXG9iAACd0V4G0jE748.jpg"); + path.add("group1/M01/6F/5A/wKgfWWVRbj2AX2bxAACd0V4G0jE033.jpg"); + path.add("group1/M00/6F/5B/wKgfWWVRbl6AZxCNAACd0V4G0jE691.jpg"); + path.add("group1/M01/6F/69/wKgfWWVRccOAdpj1AACd0V4G0jE790.jpg"); + path.add("group1/M00/6F/6A/wKgfWWVRceSAb9XTAACd0V4G0jE241.jpg"); + path.add("group2/M00/35/B2/wKgfWWVRdUyAILYgAACd0V4G0jE066.jpg"); + path.add("group1/M00/6F/79/wKgfWWVRdWqASbmcAACd0V4G0jE826.jpg"); + path.add("group2/M02/35/B6/wKgfWWVReM6AS_vRAACd0V4G0jE959.jpg"); + path.add("group1/M00/6F/88/wKgfWWVRePCAapoYAACd0V4G0jE057.jpg"); + path.add("group1/M01/6F/A2/wKgfWWVRzi2AT7VMAACd0V4G0jE383.jpg"); + path.add("group1/M02/6F/A3/wKgfWWVRzkuAQoUBAACd0V4G0jE272.jpg"); + path.add("group1/M01/6F/B0/wKgfWWVR0bWAQkHMAACd0V4G0jE445.jpg"); + path.add("group2/M02/35/BE/wKgfWWVR0d2AE0LgAACd0V4G0jE948.jpg"); + path.add("group1/M01/6F/EB/wKgfWWVR3RCAN719AACd0V4G0jE488.jpg"); + path.add("group1/M01/6F/EC/wKgfWWVR3TSAHk-XAACd0V4G0jE791.jpg"); + path.add("group1/M01/70/00/wKgfWWVS__WAf1jEAACd0V4G0jE343.jpg"); + path.add("group1/M00/70/01/wKgfWWVTAB6AampxAACd0V4G0jE266.jpg"); + path.add("group1/M01/70/0D/wKgfWWVTBquAQun3AACd0V4G0jE923.jpg"); + path.add("group1/M00/70/0F/wKgfWWVTBu6AZh3iAACd0V4G0jE748.jpg"); + path.add("group2/M01/35/DA/wKgfWWVTClKAB0rmAACd0V4G0jE429.jpg"); + path.add("group1/M01/70/1C/wKgfWWVTCpeAfFTuAACd0V4G0jE727.jpg"); + path.add("group1/M01/70/26/wKgfWWVTDfqAUUIpAACd0V4G0jE924.jpg"); + path.add("group1/M00/70/28/wKgfWWVTDj6AbsD2AACd0V4G0jE025.jpg"); + path.add("group1/M02/70/32/wKgfWWVTEWCAKmxiAACd0V4G0jE639.jpg"); + path.add("group1/M00/70/34/wKgfWWVTEYeAdP5HAACd0V4G0jE601.jpg"); + path.add("group1/M02/70/42/wKgfWWVTFQmAFhcKAACd0V4G0jE834.jpg"); + path.add("group1/M02/70/43/wKgfWWVTFSuAEyAhAACd0V4G0jE918.jpg"); + path.add("group2/M02/35/E9/wKgfWWVTIu2ASHB5AACd0V4G0jE095.jpg"); + path.add("group1/M00/70/50/wKgfWWVTIwuAP9R4AACd0V4G0jE790.jpg"); + path.add("group2/M01/35/EF/wKgfWWVTJmyAVfaYAACd0V4G0jE168.jpg"); + path.add("group1/M00/70/67/wKgfWWVTJo2AA1ssAACd0V4G0jE363.jpg"); + path.add("group1/M02/70/73/wKgfWWVTKe6AD13UAACd0V4G0jE038.jpg"); + path.add("group1/M01/70/74/wKgfWWVTKhCALeTzAACd0V4G0jE509.jpg"); + path.add("group1/M02/70/77/wKgfWWVUUUyAUahvAACd0V4G0jE730.jpg"); + path.add("group1/M00/70/79/wKgfWWVUUWiAQxHBAACd0V4G0jE613.jpg"); + path.add("group1/M01/70/88/wKgfWWVUVNaASee-AACd0V4G0jE981.jpg"); + path.add("group1/M01/70/89/wKgfWWVUVPGAX7K6AACd0V4G0jE307.jpg"); + path.add("group1/M01/70/97/wKgfWWVUWFuAHIK-AACd0V4G0jE414.jpg"); + path.add("group1/M02/70/99/wKgfWWVUWHyAJdMyAACd0V4G0jE879.jpg"); + path.add("group1/M00/70/A7/wKgfWWVUW96ALeCFAACd0V4G0jE087.jpg"); + path.add("group1/M01/70/A9/wKgfWWVUW_-AWFjMAACd0V4G0jE656.jpg"); + path.add("group1/M00/70/B8/wKgfWWVUX2SAYmG9AACd0V4G0jE292.jpg"); + path.add("group1/M02/70/BA/wKgfWWVUX4uAaIOvAACd0V4G0jE151.jpg"); + path.add("group1/M01/70/C8/wKgfWWVUYuuAYsJhAACd0V4G0jE035.jpg"); + path.add("group1/M01/70/CA/wKgfWWVUYxWAIZh8AACd0V4G0jE381.jpg"); + path.add("group1/M01/70/D9/wKgfWWVUZnSAUB5UAACd0V4G0jE580.jpg"); + path.add("group2/M02/36/01/wKgfWWVUZpqAQ1KGAACd0V4G0jE177.jpg"); + path.add("group1/M00/70/E9/wKgfWWVUafqAJ6f4AACd0V4G0jE094.jpg"); + path.add("group1/M00/70/EB/wKgfWWVUah-AQzuQAACd0V4G0jE717.jpg"); + path.add("group1/M02/70/F8/wKgfWWVUbXuAWHOkAACd0V4G0jE740.jpg"); + path.add("group2/M00/36/06/wKgfWWVUbZ2AJyurAACd0V4G0jE238.jpg"); + path.add("group1/M01/71/09/wKgfWWVUcQWAAKB3AACd0V4G0jE517.jpg"); + path.add("group2/M00/36/08/wKgfWWVUcSiAQ8niAACd0V4G0jE410.jpg"); + path.add("group1/M02/71/19/wKgfWWVUdIuAIP3WAACd0V4G0jE845.jpg"); + path.add("group2/M02/36/0B/wKgfWWVUdK2AWcuPAACd0V4G0jE783.jpg"); + path.add("group1/M02/71/29/wKgfWWVUeA-AUvkwAACd0V4G0jE846.jpg"); + path.add("group2/M02/36/0E/wKgfWWVUeDOAevE9AACd0V4G0jE783.jpg"); + path.add("group1/M02/71/39/wKgfWWVUe5OALCYNAACd0V4G0jE270.jpg"); + path.add("group2/M02/36/0F/wKgfWWVUe7eAWmQTAACd0V4G0jE791.jpg"); + path.add("group1/M01/71/4B/wKgfWWVYHr-AGuE8AACd0V4G0jE415.jpg"); + path.add("group1/M02/71/4D/wKgfWWVYHuCAf1ZYAACd0V4G0jE719.jpg"); + path.add("group1/M01/71/60/wKgfWWVYIkuAEZ84AACd0V4G0jE173.jpg"); + path.add("group1/M01/71/62/wKgfWWVYIm6AQcfXAACd0V4G0jE428.jpg"); + path.add("group1/M00/71/73/wKgfWWVYJdGAOQuUAACd0V4G0jE529.jpg"); + path.add("group1/M01/71/74/wKgfWWVYJfaAMhf5AACd0V4G0jE326.jpg"); + path.add("group1/M02/71/83/wKgfWWVYKVmAOuxqAACd0V4G0jE242.jpg"); + path.add("group1/M00/71/85/wKgfWWVYKX6AMjAXAACd0V4G0jE060.jpg"); + path.add("group1/M01/71/94/wKgfWWVYLNyAeJBkAACd0V4G0jE059.jpg"); + path.add("group1/M01/71/95/wKgfWWVYLQCAX1M8AACd0V4G0jE178.jpg"); + path.add("group1/M01/71/A3/wKgfWWVYMGKAZjPFAACd0V4G0jE778.jpg"); + path.add("group1/M01/71/A5/wKgfWWVYMIWARCM0AACd0V4G0jE405.jpg"); + path.add("group1/M01/71/B3/wKgfWWVYM-qAEnKMAACd0V4G0jE986.jpg"); + path.add("group1/M01/71/B5/wKgfWWVYNAyARyEVAACd0V4G0jE150.jpg"); + path.add("group1/M00/71/C3/wKgfWWVYN26AVHxZAACd0V4G0jE547.jpg"); + path.add("group1/M02/71/C4/wKgfWWVYN5CAJQvpAACd0V4G0jE903.jpg"); + path.add("group1/M00/71/D1/wKgfWWVYOvGAcMl_AACd0V4G0jE753.jpg"); + path.add("group1/M00/71/D3/wKgfWWVYOxuAN28GAACd0V4G0jE338.jpg"); + path.add("group1/M00/71/E2/wKgfWWVYPnmACzAnAACd0V4G0jE012.jpg"); + path.add("group1/M01/71/E3/wKgfWWVYPp6AJTcdAACd0V4G0jE527.jpg"); + path.add("group1/M00/71/F0/wKgfWWVYQgKAQFLSAACd0V4G0jE365.jpg"); + path.add("group1/M00/71/F1/wKgfWWVYQiKAM7UXAACd0V4G0jE424.jpg"); + path.add("group1/M00/71/FE/wKgfWWVYRYSAf8XlAACd0V4G0jE784.jpg"); + path.add("group1/M01/71/FF/wKgfWWVYRaqAQNIQAACd0V4G0jE687.jpg"); + path.add("group1/M02/72/0D/wKgfWWVYSQaACkciAACd0V4G0jE222.jpg"); + path.add("group1/M01/72/0E/wKgfWWVYSS6AGX2kAACd0V4G0jE036.jpg"); + path.add("group1/M01/72/1C/wKgfWWVYTIuAf2SuAACd0V4G0jE280.jpg"); + path.add("group1/M01/72/1E/wKgfWWVYTLSASubkAACd0V4G0jE374.jpg"); + path.add("group2/M00/36/37/wKgfWWVYUBSAaG32AACd0V4G0jE394.jpg"); + path.add("group1/M02/72/2B/wKgfWWVYUDyAb0i2AACd0V4G0jE169.jpg"); + path.add("group2/M02/36/3A/wKgfWWVYU6CAYyuQAACd0V4G0jE243.jpg"); + path.add("group2/M00/36/3B/wKgfWWVYU8CARLJxAACd0V4G0jE086.jpg"); + path.add("group2/M01/36/3C/wKgfWWVYU-GAYxmkAACd0V4G0jE329.jpg"); + path.add("group1/M01/72/4A/wKgfWWVYVySALyvbAACd0V4G0jE334.jpg"); + path.add("group1/M00/72/4C/wKgfWWVYV1CAZNDsAACd0V4G0jE536.jpg"); + path.add("group1/M01/72/4D/wKgfWWVYV3CAZkBgAACd0V4G0jE710.jpg"); + path.add("group1/M01/72/5A/wKgfWWVYWqaAAKimAACd0V4G0jE242.jpg"); + path.add("group1/M02/72/5C/wKgfWWVYWs6AHIHDAACd0V4G0jE588.jpg"); + path.add("group1/M02/72/5D/wKgfWWVYWu6AUpO8AACd0V4G0jE913.jpg"); + path.add("group1/M00/72/6A/wKgfWWVYXkyAba6dAACd0V4G0jE611.jpg"); + path.add("group1/M02/72/6C/wKgfWWVYXs-AdT-MAACd0V4G0jE343.jpg"); + path.add("group2/M02/36/43/wKgfWWVYXtyAT1lOAACd0V4G0jE323.jpg"); + path.add("group1/M02/72/7A/wKgfWWVYYcGAf7i4AACd0V4G0jE297.jpg"); + path.add("group1/M00/72/7B/wKgfWWVYYeyAUGEdAACd0V4G0jE346.jpg"); + path.add("group1/M02/72/7D/wKgfWWVYYgyAbuXnAACd0V4G0jE119.jpg"); + path.add("group1/M00/72/8B/wKgfWWVYZT2AJePdAACd0V4G0jE437.jpg"); + path.add("group1/M01/72/8D/wKgfWWVYZVuAblgmAACd0V4G0jE876.jpg"); + path.add("group1/M00/72/8E/wKgfWWVYZYSAbyy0AACd0V4G0jE044.jpg"); + path.add("group1/M01/72/9B/wKgfWWVYaMOABFRzAACd0V4G0jE540.jpg"); + path.add("group1/M02/72/9C/wKgfWWVYaOaAbZnYAACd0V4G0jE484.jpg"); + path.add("group1/M02/72/9D/wKgfWWVYaQWASZs3AACd0V4G0jE218.jpg"); + path.add("group1/M02/72/AB/wKgfWWVYbEeAEmhPAACd0V4G0jE183.jpg"); + path.add("group1/M01/72/AD/wKgfWWVYbHOAaIOgAACd0V4G0jE048.jpg"); + path.add("group1/M02/72/AE/wKgfWWVYbJOAWEZdAACd0V4G0jE966.jpg"); + path.add("group1/M02/72/BC/wKgfWWVYb8-AHBgbAACd0V4G0jE195.jpg"); + path.add("group1/M01/72/BD/wKgfWWVYb-6AKqL-AACd0V4G0jE232.jpg"); + path.add("group1/M00/72/BF/wKgfWWVYcBiAAdoGAACd0V4G0jE347.jpg"); + path.add("group1/M02/72/CC/wKgfWWVYc1eAAOEXAACd0V4G0jE948.jpg"); + path.add("group2/M01/36/4F/wKgfWWVYc32AT1SlAACd0V4G0jE179.jpg"); + path.add("group1/M02/72/CF/wKgfWWVYc52AOhC9AACd0V4G0jE235.jpg"); + path.add("group1/M01/72/DC/wKgfWWVYdtmAER3NAACd0V4G0jE107.jpg"); + path.add("group1/M01/72/DD/wKgfWWVYdwCAf0VtAACd0V4G0jE838.jpg"); + path.add("group1/M00/72/DF/wKgfWWVYdyCAPF9mAACd0V4G0jE113.jpg"); + path.add("group1/M02/72/EC/wKgfWWVYemOAQUX_AACd0V4G0jE576.jpg"); + path.add("group1/M00/72/ED/wKgfWWVYeoKASKq9AACd0V4G0jE385.jpg"); + path.add("group1/M01/72/EF/wKgfWWVYeqmALCWyAACd0V4G0jE800.jpg"); + path.add("group1/M00/72/FC/wKgfWWVYfeyAG1mSAACd0V4G0jE253.jpg"); + path.add("group1/M01/72/FD/wKgfWWVYfgyAARwfAACd0V4G0jE824.jpg"); + path.add("group1/M02/72/FE/wKgfWWVYfjKAE7vuAACd0V4G0jE624.jpg"); + path.add("group1/M01/73/0A/wKgfWWVYgXGAS3ARAACd0V4G0jE292.jpg"); + path.add("group2/M02/36/5A/wKgfWWVYgZKAO2CvAACd0V4G0jE389.jpg"); + path.add("group1/M01/73/0D/wKgfWWVYgbaAcdPTAACd0V4G0jE231.jpg"); + path.add("group1/M01/73/1A/wKgfWWVYhPqAAno-AACd0V4G0jE797.jpg"); + path.add("group1/M01/73/1B/wKgfWWVYhRyAXJ7dAACd0V4G0jE353.jpg"); + path.add("group1/M00/73/1D/wKgfWWVYhTuANnQEAACd0V4G0jE090.jpg"); + path.add("group1/M00/73/2A/wKgfWWVYiHiAbolLAACd0V4G0jE739.jpg"); + path.add("group1/M02/73/2C/wKgfWWVYiJ-AGVUnAACd0V4G0jE810.jpg"); + path.add("group1/M01/73/2D/wKgfWWVYiL6AU_kIAACd0V4G0jE408.jpg"); + path.add("group1/M01/73/3B/wKgfWWVYjAGAUfnSAACd0V4G0jE906.jpg"); + path.add("group2/M00/36/60/wKgfWWVYjB-Af0kGAACd0V4G0jE569.jpg"); + path.add("group1/M00/73/3D/wKgfWWVYjECAHhxKAACd0V4G0jE963.jpg"); + path.add("group1/M00/73/4A/wKgfWWVYj4CATbtYAACd0V4G0jE464.jpg"); + path.add("group1/M01/73/4C/wKgfWWVYj6aAEU6CAACd0V4G0jE205.jpg"); + path.add("group1/M00/73/4D/wKgfWWVYj82ARYMsAACd0V4G0jE208.jpg"); + path.add("group1/M02/73/5A/wKgfWWVYkwiAD9U7AACd0V4G0jE371.jpg"); + path.add("group1/M01/73/5C/wKgfWWVYky6AU6CXAACd0V4G0jE944.jpg"); + path.add("group1/M01/73/5D/wKgfWWVYk06AIl8BAACd0V4G0jE101.jpg"); + path.add("group1/M01/73/6B/wKgfWWVYlpGAGi3XAACd0V4G0jE858.jpg"); + path.add("group1/M00/73/6C/wKgfWWVYlrSAUOz-AACd0V4G0jE167.jpg"); + path.add("group1/M01/73/6E/wKgfWWVYltmAJkEWAACd0V4G0jE489.jpg"); + path.add("group1/M00/73/7A/wKgfWWVYmhWAJjHmAACd0V4G0jE241.jpg"); + path.add("group1/M01/73/7C/wKgfWWVYmjyAXTAzAACd0V4G0jE691.jpg"); + path.add("group1/M01/73/7D/wKgfWWVYmlyAWb6GAACd0V4G0jE103.jpg"); + path.add("group1/M00/73/8A/wKgfWWVYnaCAM5Z4AACd0V4G0jE854.jpg"); + path.add("group1/M02/73/8B/wKgfWWVYncCAEdadAACd0V4G0jE641.jpg"); + path.add("group1/M00/73/8D/wKgfWWVYneKARua8AACd0V4G0jE912.jpg"); + path.add("group1/M00/73/9A/wKgfWWVYoSSAetB9AACd0V4G0jE598.jpg"); + path.add("group1/M02/73/9B/wKgfWWVYoUiAcMUzAACd0V4G0jE060.jpg"); + path.add("group1/M01/73/9D/wKgfWWVYoWqARDBOAACd0V4G0jE186.jpg"); + path.add("group1/M00/73/AA/wKgfWWVYpK-ADnSRAACd0V4G0jE468.jpg"); + path.add("group1/M02/73/AC/wKgfWWVYpNCAeXBDAACd0V4G0jE811.jpg"); + path.add("group2/M02/36/70/wKgfWWVYpPKAWI6iAACd0V4G0jE028.jpg"); + path.add("group2/M01/36/72/wKgfWWVYqDaAbIvLAACd0V4G0jE609.jpg"); + path.add("group1/M02/73/BC/wKgfWWVYqFeAXpz3AACd0V4G0jE953.jpg"); + path.add("group1/M00/73/BD/wKgfWWVYqHyAYSfKAACd0V4G0jE434.jpg"); + path.add("group1/M00/73/CA/wKgfWWVYq7yAQBvBAACd0V4G0jE862.jpg"); + path.add("group1/M01/73/CC/wKgfWWVYq9uAbNHnAACd0V4G0jE936.jpg"); + path.add("group2/M02/36/75/wKgfWWVYrAKAaS1mAACd0V4G0jE859.jpg"); + path.add("group2/M01/36/76/wKgfWWVYr0GAH8OVAACd0V4G0jE686.jpg"); + path.add("group1/M01/73/DC/wKgfWWVYr2GAMt0_AACd0V4G0jE939.jpg"); + path.add("group1/M01/73/DD/wKgfWWVYr4WAGOCDAACd0V4G0jE888.jpg"); + path.add("group2/M01/36/7A/wKgfWWVeyhmALaovAACd0V4G0jE953.jpg"); + path.add("group1/M00/73/F9/wKgfWWVeyjSASMaRAACd0V4G0jE958.jpg"); + path.add("group2/M01/36/7E/wKgfWWVezZ6AedoLAACd0V4G0jE767.jpg"); + path.add("group1/M00/74/0D/wKgfWWVezcWASbn3AACd0V4G0jE081.jpg"); + path.add("group1/M01/74/1C/wKgfWWVe0SGADmH1AACd0V4G0jE749.jpg"); + path.add("group1/M01/74/1E/wKgfWWVe0U-AI1UqAACd0V4G0jE576.jpg"); + path.add("group2/M00/36/84/wKgfWWVe1KSAfaK6AACd0V4G0jE526.jpg"); + path.add("group1/M01/74/2F/wKgfWWVe1MeASlxaAACd0V4G0jE147.jpg"); + path.add("group1/M02/74/3C/wKgfWWVe2C-ADEE0AACd0V4G0jE269.jpg"); + path.add("group1/M00/74/3D/wKgfWWVe2E-AEtAmAACd0V4G0jE482.jpg"); + path.add("group1/M02/74/4B/wKgfWWVe27CAFB31AACd0V4G0jE489.jpg"); + path.add("group1/M02/74/4C/wKgfWWVe29CASXI3AACd0V4G0jE771.jpg"); + path.add("group1/M01/74/5A/wKgfWWVe3ziAMq7EAACd0V4G0jE236.jpg"); + path.add("group1/M01/74/5B/wKgfWWVe31iAD3GvAACd0V4G0jE045.jpg"); + path.add("group2/M01/36/90/wKgfWWVe4rmAGbW6AACd0V4G0jE526.jpg"); + path.add("group1/M00/74/69/wKgfWWVe4tiAUtt_AACd0V4G0jE375.jpg"); + path.add("group1/M01/74/77/wKgfWWVe5kCAc52bAACd0V4G0jE561.jpg"); + path.add("group1/M00/74/79/wKgfWWVe5mKAPpEvAACd0V4G0jE590.jpg"); + path.add("group1/M00/74/87/wKgfWWVe6cWAMAgtAACd0V4G0jE719.jpg"); + path.add("group1/M00/74/88/wKgfWWVe6emAfyWnAACd0V4G0jE808.jpg"); + path.add("group1/M00/74/97/wKgfWWVe7VKAKN86AACd0V4G0jE164.jpg"); + path.add("group1/M01/74/98/wKgfWWVe7XGAJOLCAACd0V4G0jE181.jpg"); + path.add("group1/M00/74/A6/wKgfWWVe8NGAWzBHAACd0V4G0jE922.jpg"); + path.add("group1/M00/74/A8/wKgfWWVe8PWAeuy7AACd0V4G0jE387.jpg"); + path.add("group1/M02/74/BE/wKgfWWVe9FeAPV8IAACd0V4G0jE051.jpg"); + path.add("group1/M00/74/BF/wKgfWWVe9HiAEdFNAACd0V4G0jE411.jpg"); + path.add("group1/M01/74/D3/wKgfWWVe99yAPuyzAACd0V4G0jE165.jpg"); + path.add("group1/M00/74/D4/wKgfWWVe9_2ASoBkAACd0V4G0jE995.jpg"); + path.add("group1/M01/74/E3/wKgfWWVe-2KAVIwYAACd0V4G0jE399.jpg"); + path.add("group1/M00/74/E4/wKgfWWVe-4OANiaGAACd0V4G0jE250.jpg"); + path.add("group1/M02/74/F1/wKgfWWVe_uaAR98zAACd0V4G0jE129.jpg"); + path.add("group2/M00/36/A8/wKgfWWVe_wqAWny_AACd0V4G0jE033.jpg"); + path.add("group1/M01/75/00/wKgfWWVfAm6AHk6LAACd0V4G0jE386.jpg"); + path.add("group2/M02/36/AA/wKgfWWVfApGAESGkAACd0V4G0jE420.jpg"); + path.add("group1/M00/75/0F/wKgfWWVfBfKATjy9AACd0V4G0jE853.jpg"); + path.add("group1/M02/75/10/wKgfWWVfBhSAJ2DOAACd0V4G0jE375.jpg"); + path.add("group1/M01/75/1C/wKgfWWVfCXSAMn8SAACd0V4G0jE575.jpg"); + path.add("group1/M02/75/1D/wKgfWWVfCZiAT5w0AACd0V4G0jE527.jpg"); + path.add("group1/M00/75/2A/wKgfWWVfDP2ACalNAACd0V4G0jE542.jpg"); + path.add("group1/M01/75/2B/wKgfWWVfDR2AfWMDAACd0V4G0jE775.jpg"); + path.add("group1/M02/75/39/wKgfWWVfEIWALde1AACd0V4G0jE219.jpg"); + path.add("group1/M00/75/3A/wKgfWWVfEKGAB0rhAACd0V4G0jE004.jpg"); + path.add("group1/M01/75/49/wKgfWWVfFAeAWMIBAACd0V4G0jE942.jpg"); + path.add("group2/M01/36/B6/wKgfWWVfFCqARxipAACd0V4G0jE581.jpg"); + path.add("group1/M02/75/5B/wKgfWWVfF4-AMYn0AACd0V4G0jE563.jpg"); + path.add("group1/M01/75/5C/wKgfWWVfF7KAOSRmAACd0V4G0jE182.jpg"); + path.add("group1/M00/75/6A/wKgfWWVfGxuAEmXcAACd0V4G0jE636.jpg"); + path.add("group1/M02/75/6B/wKgfWWVfGziAE1viAACd0V4G0jE710.jpg"); + path.add("group1/M01/75/78/wKgfWWVfHp2AcptbAACd0V4G0jE224.jpg"); + path.add("group1/M00/75/79/wKgfWWVfHsGAGONKAACd0V4G0jE046.jpg"); + path.add("group1/M00/75/87/wKgfWWVfIiaAaK1YAACd0V4G0jE693.jpg"); + path.add("group1/M00/75/88/wKgfWWVfIkmAGLpJAACd0V4G0jE725.jpg"); + path.add("group1/M02/75/96/wKgfWWVfJa2AfqVMAACd0V4G0jE664.jpg"); + path.add("group1/M00/75/97/wKgfWWVfJc2Aao2-AACd0V4G0jE943.jpg"); + path.add("group1/M02/75/A4/wKgfWWVfKTCAZBpdAACd0V4G0jE792.jpg"); + path.add("group1/M02/75/A5/wKgfWWVfKVKAAHBSAACd0V4G0jE166.jpg"); + path.add("group1/M00/75/B1/wKgfWWVfLLeAT9JVAACd0V4G0jE374.jpg"); + path.add("group1/M02/75/B2/wKgfWWVfLNeAMG3FAACd0V4G0jE556.jpg"); + path.add("group1/M02/75/BE/wKgfWWVfMD6AfxhkAACd0V4G0jE120.jpg"); + path.add("group1/M00/75/BF/wKgfWWVfMGCAHoMZAACd0V4G0jE078.jpg"); + path.add("group1/M00/75/CD/wKgfWWVfM8KAZtdkAACd0V4G0jE712.jpg"); + path.add("group1/M00/75/CE/wKgfWWVfM-qAKfnuAACd0V4G0jE007.jpg"); + path.add("group1/M02/75/DB/wKgfWWVfN1aAEnNIAACd0V4G0jE687.jpg"); + path.add("group1/M02/75/DD/wKgfWWVfN3aAWGkdAACd0V4G0jE138.jpg"); + path.add("group1/M02/75/EA/wKgfWWVfOs-AayAaAACd0V4G0jE047.jpg"); + path.add("group1/M02/75/EB/wKgfWWVfOvKAT4rCAACd0V4G0jE195.jpg"); + path.add("group2/M00/36/D8/wKgfWWVfPlmAcwoYAACd0V4G0jE850.jpg"); + path.add("group1/M00/75/FA/wKgfWWVfPnuAeeBPAACd0V4G0jE227.jpg"); + path.add("group2/M02/36/DC/wKgfWWVfQd-AFq55AACd0V4G0jE829.jpg"); + path.add("group1/M01/76/08/wKgfWWVfQgGARewUAACd0V4G0jE076.jpg"); + path.add("group2/M02/36/DE/wKgfWWVfRWGAPtWeAACd0V4G0jE590.jpg"); + path.add("group1/M01/76/17/wKgfWWVfRYGAMSWuAACd0V4G0jE268.jpg"); + path.add("group1/M02/76/25/wKgfWWVfSOyAZxafAACd0V4G0jE600.jpg"); + path.add("group1/M01/76/26/wKgfWWVfSQ-AKe3hAACd0V4G0jE224.jpg"); + path.add("group2/M00/36/E4/wKgfWWVfTHCAXHEPAACd0V4G0jE045.jpg"); + path.add("group1/M00/76/34/wKgfWWVfTJKAf2mTAACd0V4G0jE907.jpg"); + path.add("group2/M02/36/E7/wKgfWWVfT_WAV3SFAACd0V4G0jE693.jpg"); + path.add("group1/M01/76/42/wKgfWWVfUBeALJofAACd0V4G0jE319.jpg"); + path.add("group2/M01/36/E9/wKgfWWVfU4OABU5TAACd0V4G0jE976.jpg"); + path.add("group2/M00/36/EA/wKgfWWVfU6CANGFsAACd0V4G0jE179.jpg"); + path.add("group2/M00/36/EE/wKgfWWVfVv6AQwgqAACd0V4G0jE443.jpg"); + path.add("group1/M00/76/5C/wKgfWWVfVyGAG_v3AACd0V4G0jE078.jpg"); + path.add("group1/M02/76/69/wKgfWWVfWoSAI4glAACd0V4G0jE569.jpg"); + path.add("group1/M01/76/6B/wKgfWWVfWqOAUDeJAACd0V4G0jE215.jpg"); + path.add("group1/M01/76/77/wKgfWWVfXgiAfN3eAACd0V4G0jE521.jpg"); + path.add("group1/M02/76/78/wKgfWWVfXimASeNDAACd0V4G0jE369.jpg"); + path.add("group1/M02/76/86/wKgfWWVfYY2AF8VRAACd0V4G0jE423.jpg"); + path.add("group1/M02/76/87/wKgfWWVfYa-AZ69AAACd0V4G0jE204.jpg"); + path.add("group1/M02/76/93/wKgfWWVfZRaAcLg4AACd0V4G0jE580.jpg"); + path.add("group1/M02/76/94/wKgfWWVfZTmAdnwyAACd0V4G0jE946.jpg"); + path.add("group1/M02/76/A0/wKgfWWVfaJeAUgsoAACd0V4G0jE192.jpg"); + path.add("group1/M01/76/A1/wKgfWWVfaLqAH4dNAACd0V4G0jE858.jpg"); + path.add("group1/M00/76/A8/wKgfWWVfbCOAWWLqAACd0V4G0jE879.jpg"); + path.add("group2/M01/37/02/wKgfWWVfbEaAZMcdAACd0V4G0jE571.jpg"); + path.add("group1/M01/76/B7/wKgfWWVfb6OADJEoAACd0V4G0jE974.jpg"); + path.add("group1/M02/76/B8/wKgfWWVfb8eAdckLAACd0V4G0jE087.jpg"); + path.add("group1/M02/76/C6/wKgfWWVfcymABLh8AACd0V4G0jE909.jpg"); + path.add("group1/M01/76/C7/wKgfWWVfc0qAVWCLAACd0V4G0jE766.jpg"); + path.add("group1/M01/76/D6/wKgfWWVfdquAHwpFAACd0V4G0jE416.jpg"); + path.add("group1/M01/76/D7/wKgfWWVfdtWABg7mAACd0V4G0jE551.jpg"); + path.add("group2/M02/37/2E/wKgfWWVfgF6AR-BpAACd0V4G0jE160.jpg"); + path.add("group1/M00/77/25/wKgfWWVfgICAIr7fAACd0V4G0jE933.jpg"); + path.add("group1/M01/77/3C/wKgfWWVfg-WAeJDXAACd0V4G0jE666.jpg"); + path.add("group1/M02/77/3D/wKgfWWVfhAeAe6RoAACd0V4G0jE799.jpg"); + path.add("group1/M01/77/50/wKgfWWVfh2uAC1kUAACd0V4G0jE488.jpg"); + path.add("group1/M02/77/51/wKgfWWVfh42AGPE3AACd0V4G0jE003.jpg"); + path.add("group1/M02/77/5D/wKgfWWVfivGAaZDvAACd0V4G0jE559.jpg"); + path.add("group2/M01/37/3B/wKgfWWVfixGAS1cIAACd0V4G0jE650.jpg"); + path.add("group1/M00/77/6A/wKgfWWVfjn6AbFJDAACd0V4G0jE540.jpg"); + path.add("group1/M01/77/6B/wKgfWWVfjp2AOaz1AACd0V4G0jE605.jpg"); + path.add("group1/M01/77/77/wKgfWWVfkgGATPfZAACd0V4G0jE722.jpg"); + path.add("group1/M01/77/77/wKgfWWVfkiCAGV6vAACd0V4G0jE061.jpg"); + path.add("group2/M00/37/49/wKgfWWVflYeAHYG-AACd0V4G0jE808.jpg"); + path.add("group1/M00/77/84/wKgfWWVflaeAS6H6AACd0V4G0jE561.jpg"); + path.add("group2/M00/37/4D/wKgfWWVfmQ-ASVtUAACd0V4G0jE804.jpg"); + path.add("group1/M00/77/91/wKgfWWVfmS-Aa7XDAACd0V4G0jE378.jpg"); + path.add("group2/M02/37/52/wKgfWWVfnJSAMzqgAACd0V4G0jE088.jpg"); + path.add("group1/M00/77/9D/wKgfWWVfnLKAbvtcAACd0V4G0jE050.jpg"); + path.add("group2/M01/37/58/wKgfWWVfoBuAapJ_AACd0V4G0jE790.jpg"); + path.add("group2/M00/37/58/wKgfWWVfoDuAZemyAACd0V4G0jE508.jpg"); + path.add("group2/M02/37/5A/wKgfWWVfo6KAV-RNAACd0V4G0jE630.jpg"); + path.add("group1/M00/77/B8/wKgfWWVfo8GAL69UAACd0V4G0jE549.jpg"); + path.add("group2/M01/37/5F/wKgfWWVfpyaAZtgWAACd0V4G0jE726.jpg"); + path.add("group1/M00/77/C6/wKgfWWVfp0mAJJBAAACd0V4G0jE097.jpg"); + path.add("group1/M02/77/D2/wKgfWWVfqq6AaC9LAACd0V4G0jE015.jpg"); + path.add("group1/M02/77/D3/wKgfWWVfqs6AWeRkAACd0V4G0jE350.jpg"); + path.add("group1/M01/77/E0/wKgfWWVfrjGAJol2AACd0V4G0jE350.jpg"); + path.add("group1/M02/77/E1/wKgfWWVfrlWAB8VpAACd0V4G0jE107.jpg"); + path.add("group1/M01/77/EF/wKgfWWVfsbeANxFtAACd0V4G0jE608.jpg"); + path.add("group1/M02/77/F0/wKgfWWVfsduAa7fuAACd0V4G0jE183.jpg"); + path.add("group2/M00/37/6C/wKgfWWVftUCAdVpZAACd0V4G0jE287.jpg"); + path.add("group2/M00/37/6C/wKgfWWVftV-AZ8WkAACd0V4G0jE951.jpg"); + path.add("group1/M02/78/0B/wKgfWWVfuMOAQwMeAACd0V4G0jE506.jpg"); + path.add("group1/M02/78/0C/wKgfWWVfuOeAXYquAACd0V4G0jE518.jpg"); + path.add("group1/M00/78/1A/wKgfWWVfvEiAFyO6AACd0V4G0jE245.jpg"); + path.add("group1/M01/78/1B/wKgfWWVfvGyAQ3ggAACd0V4G0jE397.jpg"); + path.add("group1/M02/78/27/wKgfWWVfv9KARKsXAACd0V4G0jE249.jpg"); + path.add("group2/M00/37/77/wKgfWWVfv_GAA4x3AACd0V4G0jE312.jpg"); + path.add("group1/M00/78/34/wKgfWWVfw1SALbfDAACd0V4G0jE481.jpg"); + path.add("group2/M02/37/7A/wKgfWWVfw3iAczL7AACd0V4G0jE413.jpg"); + path.add("group1/M00/78/41/wKgfWWVfxtuAAwIoAACd0V4G0jE993.jpg"); + path.add("group2/M02/37/7E/wKgfWWVfxvqAVhF6AACd0V4G0jE816.jpg"); + path.add("group1/M00/78/4F/wKgfWWVfymOAZsjjAACd0V4G0jE118.jpg"); + path.add("group1/M02/78/50/wKgfWWVfyoKAAHQEAACd0V4G0jE644.jpg"); + path.add("group1/M01/78/5C/wKgfWWVfzeeAZMLnAACd0V4G0jE513.jpg"); + path.add("group2/M00/37/86/wKgfWWVfzgaANNkIAACd0V4G0jE822.jpg"); + path.add("group1/M00/78/6A/wKgfWWVf0WuAC4uwAACd0V4G0jE612.jpg"); + path.add("group2/M01/37/8A/wKgfWWVf0Y6AKIy1AACd0V4G0jE793.jpg"); + path.add("group1/M02/78/78/wKgfWWVf1PGAbTS3AACd0V4G0jE129.jpg"); + path.add("group1/M01/78/78/wKgfWWVf1RGAbc68AACd0V4G0jE083.jpg"); + path.add("group1/M00/78/86/wKgfWWVf2HiAQqT7AACd0V4G0jE232.jpg"); + path.add("group1/M01/78/86/wKgfWWVf2JeAXpqgAACd0V4G0jE367.jpg"); + path.add("group1/M02/78/92/wKgfWWVf2_6AMZGuAACd0V4G0jE187.jpg"); + path.add("group1/M02/78/93/wKgfWWVf3CKAfr0DAACd0V4G0jE465.jpg"); + path.add("group1/M00/78/A0/wKgfWWVf34WALbt9AACd0V4G0jE031.jpg"); + path.add("group1/M02/78/A1/wKgfWWVf36SAKnQ6AACd0V4G0jE600.jpg"); + path.add("group1/M00/78/AE/wKgfWWVf4w2AS7GuAACd0V4G0jE773.jpg"); + path.add("group1/M02/78/AF/wKgfWWVf4yyAUtltAACd0V4G0jE211.jpg"); + path.add("group1/M01/78/BC/wKgfWWVf5o-AbEHCAACd0V4G0jE964.jpg"); + path.add("group1/M02/78/BD/wKgfWWVf5q-AXpnPAACd0V4G0jE547.jpg"); + path.add("group1/M01/78/CA/wKgfWWVf6hWAXTG9AACd0V4G0jE726.jpg"); + path.add("group1/M01/78/CB/wKgfWWVf6jWAJvgLAACd0V4G0jE312.jpg"); + path.add("group1/M02/78/D9/wKgfWWVf7Z-AGb6IAACd0V4G0jE611.jpg"); + path.add("group1/M02/78/DA/wKgfWWVf7b6AWoesAACd0V4G0jE334.jpg"); + path.add("group1/M00/78/E6/wKgfWWVf8SGAK0pTAACd0V4G0jE115.jpg"); + path.add("group1/M01/78/E6/wKgfWWVf8UGAYjnVAACd0V4G0jE333.jpg"); + path.add("group1/M01/78/F4/wKgfWWVf9KmAQL2JAACd0V4G0jE220.jpg"); + path.add("group1/M02/78/F4/wKgfWWVf9MmAFUT2AACd0V4G0jE415.jpg"); + path.add("group2/M01/37/B4/wKgfWWVf-C2AF0AnAACd0V4G0jE906.jpg"); + path.add("group2/M02/37/B4/wKgfWWVf-E2AJOazAACd0V4G0jE442.jpg"); + path.add("group2/M00/37/BD/wKgfWWVf-7SACqXnAACd0V4G0jE900.jpg"); + path.add("group1/M02/79/06/wKgfWWVf-9CAbUwMAACd0V4G0jE297.jpg"); + path.add("group1/M02/79/0E/wKgfWWVf_zeAE9Y2AACd0V4G0jE700.jpg"); + path.add("group1/M01/79/0F/wKgfWWVf_1yAYGyGAACd0V4G0jE875.jpg"); + path.add("group2/M02/37/CF/wKgfWWVgAryABRBpAACd0V4G0jE934.jpg"); + path.add("group1/M00/79/17/wKgfWWVgAuCANGl8AACd0V4G0jE072.jpg"); + path.add("group1/M01/79/21/wKgfWWVgBkWACzeQAACd0V4G0jE244.jpg"); + path.add("group1/M02/79/21/wKgfWWVgBmWAAEWyAACd0V4G0jE477.jpg"); + path.add("group2/M00/37/DF/wKgfWWVgCcuAV0VrAACd0V4G0jE180.jpg"); + path.add("group2/M00/37/E0/wKgfWWVgCeuADkpgAACd0V4G0jE883.jpg"); + path.add("group1/M02/79/31/wKgfWWVgDVCAM-iTAACd0V4G0jE686.jpg"); + path.add("group1/M00/79/31/wKgfWWVgDXCAaI9AAACd0V4G0jE354.jpg"); + path.add("group1/M01/79/38/wKgfWWVgENeAD20DAACd0V4G0jE854.jpg"); + path.add("group1/M02/79/39/wKgfWWVgEPeAOrs9AACd0V4G0jE956.jpg"); + path.add("group2/M01/37/FA/wKgfWWVgFFmAGUAyAACd0V4G0jE999.jpg"); + path.add("group2/M01/37/FA/wKgfWWVgFH6AXj0iAACd0V4G0jE623.jpg"); + path.add("group2/M02/38/03/wKgfWWVgF-SAByWAAACd0V4G0jE846.jpg"); + path.add("group1/M00/79/4B/wKgfWWVgGA6AJWnrAACd0V4G0jE822.jpg"); + path.add("group2/M00/38/0A/wKgfWWVgG2iAE0_fAACd0V4G0jE500.jpg"); + path.add("group1/M01/79/55/wKgfWWVgG4mAfm83AACd0V4G0jE610.jpg"); + path.add("group1/M01/79/60/wKgfWWVgHu-ALGPGAACd0V4G0jE051.jpg"); + path.add("group1/M01/79/61/wKgfWWVgHw-AR-aJAACd0V4G0jE810.jpg"); + path.add("group1/M02/79/6C/wKgfWWVgK_qAKqLjAACd0V4G0jE138.jpg"); + path.add("group1/M02/79/6D/wKgfWWVgLBaATAudAACd0V4G0jE926.jpg"); + path.add("group1/M00/79/75/wKgfWWVgL3-AZ-YBAACd0V4G0jE095.jpg"); + path.add("group2/M01/38/1E/wKgfWWVgL5yAdC76AACd0V4G0jE626.jpg"); + path.add("group1/M01/79/7C/wKgfWWVgMv-ANJgUAACd0V4G0jE730.jpg"); + path.add("group2/M02/38/28/wKgfWWVgMyyATFyKAACd0V4G0jE629.jpg"); + path.add("group1/M00/79/86/wKgfWWVgNoiAJBz1AACd0V4G0jE622.jpg"); + path.add("group1/M02/79/87/wKgfWWVgNrqAIPMPAACd0V4G0jE043.jpg"); + path.add("group1/M02/79/8F/wKgfWWVgOg2AIodmAACd0V4G0jE265.jpg"); + path.add("group2/M02/38/39/wKgfWWVgOjWAC_P2AACd0V4G0jE233.jpg"); + path.add("group2/M02/38/41/wKgfWWVgPZSAaBnzAACd0V4G0jE723.jpg"); + path.add("group2/M01/38/43/wKgfWWVgPdiAVBEdAACd0V4G0jE232.jpg"); + path.add("group1/M01/79/9E/wKgfWWVgQRqAVQ_HAACd0V4G0jE789.jpg"); + path.add("group1/M02/79/9F/wKgfWWVgQT-ACaiTAACd0V4G0jE981.jpg"); + path.add("group1/M00/79/A7/wKgfWWVgRKCATNv5AACd0V4G0jE511.jpg"); + path.add("group2/M01/38/53/wKgfWWVgRMaADxXYAACd0V4G0jE792.jpg"); + path.add("group1/M02/79/AE/wKgfWWVgSCyAYIphAACd0V4G0jE017.jpg"); + path.add("group1/M00/79/B0/wKgfWWVgSFOACVc4AACd0V4G0jE226.jpg"); + path.add("group2/M01/38/64/wKgfWWVgS7uAdU04AACd0V4G0jE032.jpg"); + path.add("group2/M02/38/65/wKgfWWVgS9aAfKUwAACd0V4G0jE870.jpg"); + path.add("group2/M00/38/6E/wKgfWWVgTz-AdrXzAACd0V4G0jE641.jpg"); + path.add("group1/M02/79/C1/wKgfWWVgT16AMlp9AACd0V4G0jE027.jpg"); + path.add("group2/M00/38/78/wKgfWWVgUsOAdjwMAACd0V4G0jE679.jpg"); + path.add("group2/M00/38/79/wKgfWWVgUuWAAwgAAACd0V4G0jE253.jpg"); + path.add("group2/M01/38/80/wKgfWWVgVkiAWfdNAACd0V4G0jE665.jpg"); + path.add("group2/M01/38/82/wKgfWWVgVnCALpqvAACd0V4G0jE404.jpg"); + path.add("group2/M01/38/88/wKgfWWVgWc6AfcR-AACd0V4G0jE238.jpg"); + path.add("group1/M00/79/D9/wKgfWWVgWfeALYSNAACd0V4G0jE672.jpg"); + path.add("group2/M02/38/8E/wKgfWWVgXVaAVkDHAACd0V4G0jE388.jpg"); + path.add("group2/M01/38/8F/wKgfWWVgXXKAeGxdAACd0V4G0jE601.jpg"); + path.add("group1/M01/79/ED/wKgfWWVgYOaAUbWiAACd0V4G0jE782.jpg"); + path.add("group1/M02/79/EF/wKgfWWVgYVaAEEpZAACd0V4G0jE671.jpg"); + path.add("group2/M02/38/9E/wKgfWWVgZF2ASGOqAACd0V4G0jE916.jpg"); + path.add("group2/M01/38/9F/wKgfWWVgZIKARKAGAACd0V4G0jE730.jpg"); + path.add("group1/M02/79/FD/wKgfWWVgZ-SANtKBAACd0V4G0jE311.jpg"); + path.add("group1/M02/79/FE/wKgfWWVgaAqAdlu_AACd0V4G0jE126.jpg"); + path.add("group1/M00/7A/07/wKgfWWVga2iASNNJAACd0V4G0jE524.jpg"); + path.add("group2/M00/38/B1/wKgfWWVga5CAaYM0AACd0V4G0jE830.jpg"); + path.add("group1/M00/7A/12/wKgfWWVgbvCAYzxLAACd0V4G0jE820.jpg"); + path.add("group2/M01/38/B7/wKgfWWVgbxOAcSFXAACd0V4G0jE094.jpg"); + path.add("group1/M00/7A/1B/wKgfWWVgcnKAf2OsAACd0V4G0jE066.jpg"); + path.add("group2/M00/38/BE/wKgfWWVgcpiADesJAACd0V4G0jE437.jpg"); + path.add("group2/M01/38/C4/wKgfWWVgdgGAMHLmAACd0V4G0jE019.jpg"); + path.add("group1/M01/7A/27/wKgfWWVgdiWAXCThAACd0V4G0jE543.jpg"); + path.add("group1/M02/7A/32/wKgfWWVgeaOAIqcFAACd0V4G0jE151.jpg"); + path.add("group1/M02/7A/33/wKgfWWVgec2ATF-wAACd0V4G0jE878.jpg"); + path.add("group1/M02/7A/3B/wKgfWWVgfQyAAJUxAACd0V4G0jE602.jpg"); + path.add("group1/M00/7A/3D/wKgfWWVgfUGAXCOkAACd0V4G0jE524.jpg"); + path.add("group1/M02/7A/49/wKgfWWVggL2AUJDMAACd0V4G0jE309.jpg"); + path.add("group1/M01/7A/4A/wKgfWWVggNOAePWhAACd0V4G0jE198.jpg"); + path.add("group1/M01/7A/57/wKgfWWVghEWALLg0AACd0V4G0jE783.jpg"); + path.add("group1/M00/7A/59/wKgfWWVghGSAOqWJAACd0V4G0jE759.jpg"); + path.add("group1/M02/7A/6D/wKgfWWVheeCAKQMgAACd0V4G0jE519.jpg"); + path.add("group1/M00/7A/6F/wKgfWWVheiaAVFatAACd0V4G0jE381.jpg"); + path.add("group1/M02/7A/7A/wKgfWWVhfXuALFlKAACd0V4G0jE285.jpg"); + path.add("group2/M00/38/DF/wKgfWWVhfcSAYzGRAACd0V4G0jE392.jpg"); + path.add("group1/M00/7A/85/wKgfWWVhgRqAGughAACd0V4G0jE117.jpg"); + path.add("group1/M01/7A/87/wKgfWWVhgWKACY60AACd0V4G0jE495.jpg"); + path.add("group1/M02/7A/92/wKgfWWVhhL-AVUaXAACd0V4G0jE049.jpg"); + path.add("group2/M00/38/E5/wKgfWWVhhQWAXyxfAACd0V4G0jE514.jpg"); + path.add("group2/M00/38/E8/wKgfWWVhiFaACx6DAACd0V4G0jE967.jpg"); + path.add("group1/M02/7A/9F/wKgfWWVhiJuAd77NAACd0V4G0jE158.jpg"); + path.add("group1/M00/7A/AB/wKgfWWVhi_WATUiHAACd0V4G0jE164.jpg"); + path.add("group1/M00/7A/AD/wKgfWWVhjDuAMszKAACd0V4G0jE528.jpg"); + path.add("group2/M00/38/ED/wKgfWWVhj5aASJy1AACd0V4G0jE522.jpg"); + path.add("group1/M01/7A/B9/wKgfWWVhj92AHC8YAACd0V4G0jE938.jpg"); + path.add("group1/M01/7A/C4/wKgfWWVhkzmAaBzbAACd0V4G0jE153.jpg"); + path.add("group1/M00/7A/C5/wKgfWWVhk3yAc2GAAACd0V4G0jE208.jpg"); + path.add("group2/M00/38/FB/wKgfWWVhn0uAE5aKAACd0V4G0jE790.jpg"); + path.add("group1/M00/7A/F2/wKgfWWVhn5GAKGYJAACd0V4G0jE040.jpg"); + path.add("group1/M02/7A/FC/wKgfWWVhouOAVBVlAACd0V4G0jE078.jpg"); + path.add("group1/M01/7A/FC/wKgfWWVhoyqAWYABAACd0V4G0jE451.jpg"); + path.add("group1/M00/7B/07/wKgfWWVhpoGARlCCAACd0V4G0jE017.jpg"); + path.add("group2/M02/39/00/wKgfWWVhpsmAEb52AACd0V4G0jE226.jpg"); + path.add("group1/M02/7B/12/wKgfWWVhqhyAWHDFAACd0V4G0jE238.jpg"); + path.add("group1/M01/7B/13/wKgfWWVhqmGAHAWaAACd0V4G0jE788.jpg"); + path.add("group1/M02/7B/1C/wKgfWWVhra6AZVtzAACd0V4G0jE788.jpg"); + path.add("group1/M02/7B/1D/wKgfWWVhrfOATepyAACd0V4G0jE257.jpg"); + path.add("group1/M01/7B/26/wKgfWWVhsUmAarT4AACd0V4G0jE099.jpg"); + path.add("group1/M01/7B/27/wKgfWWVhsY6AFtV0AACd0V4G0jE017.jpg"); + path.add("group2/M01/39/07/wKgfWWVhtN-Aece2AACd0V4G0jE968.jpg"); + path.add("group1/M00/7B/31/wKgfWWVhtSWAAtrCAACd0V4G0jE869.jpg"); + path.add("group1/M02/7B/3A/wKgfWWVhuHOAB3wuAACd0V4G0jE075.jpg"); + path.add("group1/M02/7B/3C/wKgfWWVhuL6ATcLiAACd0V4G0jE333.jpg"); + path.add("group1/M02/7B/45/wKgfWWVhvAqAaBRiAACd0V4G0jE562.jpg"); + path.add("group1/M02/7B/45/wKgfWWVhvFKAf0MpAACd0V4G0jE375.jpg"); + path.add("group2/M01/39/0C/wKgfWWVhv6eAfpduAACd0V4G0jE017.jpg"); + path.add("group1/M00/7B/50/wKgfWWVhv-2AAAKwAACd0V4G0jE065.jpg"); + path.add("group1/M02/7B/5B/wKgfWWVhw0KAXr5xAACd0V4G0jE367.jpg"); + path.add("group1/M01/7B/5C/wKgfWWVhw4iAF7dCAACd0V4G0jE277.jpg"); + path.add("group1/M01/7B/65/wKgfWWVhxtSAJoA6AACd0V4G0jE080.jpg"); + path.add("group2/M02/39/10/wKgfWWVhxx-AAToSAACd0V4G0jE589.jpg"); + path.add("group2/M00/39/13/wKgfWWVhym6AJSZ2AACd0V4G0jE424.jpg"); + path.add("group1/M00/7B/6E/wKgfWWVhyriAMFw5AACd0V4G0jE838.jpg"); + path.add("group1/M00/7B/77/wKgfWWVh0X2AKHAAAACd0V4G0jE878.jpg"); + path.add("group1/M02/7B/78/wKgfWWVh0Y2Aa2kbAACd0V4G0jE416.jpg"); + path.add("group2/M00/39/1A/wKgfWWVh0hqATjJ9AACd0V4G0jE315.jpg"); + path.add("group2/M00/39/1B/wKgfWWVh0imAOYeOAACd0V4G0jE603.jpg"); + path.add("group1/M02/7B/83/wKgfWWVh1TuAQkQhAACd0V4G0jE224.jpg"); + path.add("group1/M02/7B/83/wKgfWWVh1YGAYIIbAACd0V4G0jE339.jpg"); + path.add("group1/M01/7B/8C/wKgfWWVh2NKAVxlzAACd0V4G0jE191.jpg"); + path.add("group1/M01/7B/8D/wKgfWWVh2RmAfaUzAACd0V4G0jE000.jpg"); + path.add("group2/M01/39/24/wKgfWWVh3G6AMI2oAACd0V4G0jE955.jpg"); + path.add("group2/M00/39/24/wKgfWWVh3LOACB4BAACd0V4G0jE031.jpg"); + path.add("group1/M00/7B/99/wKgfWWVh4AOASylMAACd0V4G0jE112.jpg"); + path.add("group1/M02/7B/9A/wKgfWWVh4E2AO08FAACd0V4G0jE073.jpg"); + path.add("group1/M01/7B/A1/wKgfWWVh45uAI-fVAACd0V4G0jE864.jpg"); + path.add("group1/M00/7B/A1/wKgfWWVh4-aAURkOAACd0V4G0jE995.jpg"); + path.add("group2/M02/39/33/wKgfWWVh5zGAah9RAACd0V4G0jE786.jpg"); + path.add("group2/M01/39/33/wKgfWWVh53qAETnKAACd0V4G0jE569.jpg"); + path.add("group2/M02/39/37/wKgfWWVh6s2ACxkjAACd0V4G0jE244.jpg"); + path.add("group2/M01/39/38/wKgfWWVh6xeAE8opAACd0V4G0jE514.jpg"); + path.add("group1/M02/7B/B3/wKgfWWVh7meAdV2hAACd0V4G0jE978.jpg"); + path.add("group1/M00/7B/B4/wKgfWWVh7q2AUq8SAACd0V4G0jE662.jpg"); + path.add("group1/M02/7B/BA/wKgfWWVh8fqADoZ_AACd0V4G0jE090.jpg"); + path.add("group2/M02/39/43/wKgfWWVh8kWALWA4AACd0V4G0jE286.jpg"); + path.add("group1/M01/7B/C0/wKgfWWVh9ZKAHb81AACd0V4G0jE812.jpg"); + path.add("group2/M01/39/47/wKgfWWVh9dyAL2FQAACd0V4G0jE450.jpg"); + path.add("group2/M02/39/4B/wKgfWWVh-S2AAlrvAACd0V4G0jE033.jpg"); + path.add("group1/M01/7B/C7/wKgfWWVh-XKAHKpOAACd0V4G0jE564.jpg"); + path.add("group2/M01/39/50/wKgfWWVh_MWAK9s0AACd0V4G0jE730.jpg"); + path.add("group2/M02/39/50/wKgfWWVh_QqABwkQAACd0V4G0jE826.jpg"); + path.add("group1/M02/7B/D5/wKgfWWViAF6AQkfMAACd0V4G0jE027.jpg"); + path.add("group1/M01/7B/D5/wKgfWWViAKSAc86OAACd0V4G0jE000.jpg"); + path.add("group2/M00/39/5A/wKgfWWViA_OAddjSAACd0V4G0jE968.jpg"); + path.add("group2/M01/39/5A/wKgfWWViBDqAbyYMAACd0V4G0jE838.jpg"); + path.add("group2/M01/39/5E/wKgfWWViB4qAaGyfAACd0V4G0jE234.jpg"); + path.add("group2/M02/39/5F/wKgfWWViB9CAbiuSAACd0V4G0jE584.jpg"); + path.add("group1/M00/7B/E7/wKgfWWViCyKAf2_7AACd0V4G0jE355.jpg"); + path.add("group1/M02/7B/E7/wKgfWWViC2iATp2jAACd0V4G0jE553.jpg"); + path.add("group2/M02/39/68/wKgfWWViDriAaH9pAACd0V4G0jE628.jpg"); + path.add("group1/M02/7B/EF/wKgfWWViDv2ASck3AACd0V4G0jE309.jpg"); + path.add("group1/M02/7B/F5/wKgfWWViEk2AXrSxAACd0V4G0jE826.jpg"); + path.add("group2/M02/39/6E/wKgfWWViEpSAa_58AACd0V4G0jE423.jpg"); + path.add("group2/M01/39/72/wKgfWWViFeiAf_n4AACd0V4G0jE668.jpg"); + path.add("group1/M01/7B/FC/wKgfWWViFiqAcIOpAACd0V4G0jE340.jpg"); + path.add("group1/M00/7C/03/wKgfWWViGX-AfRBQAACd0V4G0jE976.jpg"); + path.add("group2/M02/39/75/wKgfWWViGcKAeyHhAACd0V4G0jE252.jpg"); + path.add("group1/M02/7C/27/wKgfWWViJiSAMhWyAACd0V4G0jE841.jpg"); + path.add("group1/M00/7C/28/wKgfWWViJmyAd3ikAACd0V4G0jE624.jpg"); + path.add("group1/M02/7C/2E/wKgfWWViKbuAZagtAACd0V4G0jE518.jpg"); + path.add("group2/M00/39/B2/wKgfWWViKgSAOlE9AACd0V4G0jE826.jpg"); + path.add("group1/M00/7C/35/wKgfWWViLVOADwVpAACd0V4G0jE695.jpg"); + path.add("group1/M00/7C/35/wKgfWWViLZmAA5AGAACd0V4G0jE547.jpg"); + path.add("group1/M00/7C/3C/wKgfWWViMOyAcOwkAACd0V4G0jE994.jpg"); + path.add("group1/M01/7C/3C/wKgfWWViMTGADTz_AACd0V4G0jE137.jpg"); + path.add("group1/M01/7C/43/wKgfWWViNIOAfjVmAACd0V4G0jE954.jpg"); + path.add("group1/M02/7C/44/wKgfWWViNMiAQ11BAACd0V4G0jE583.jpg"); + path.add("group2/M00/39/CC/wKgfWWViOBqAOgiUAACd0V4G0jE295.jpg"); + path.add("group1/M00/7C/4B/wKgfWWViOF-AawPCAACd0V4G0jE248.jpg"); + path.add("group1/M02/7C/50/wKgfWWViO66APItlAACd0V4G0jE024.jpg"); + path.add("group1/M01/7C/51/wKgfWWViO_aAIHSkAACd0V4G0jE189.jpg"); + path.add("group2/M00/39/D5/wKgfWWViP0WAD0krAACd0V4G0jE751.jpg"); + path.add("group1/M02/7C/57/wKgfWWViP42AHJlNAACd0V4G0jE280.jpg"); + path.add("group2/M00/39/DA/wKgfWWViQuCADFGSAACd0V4G0jE849.jpg"); + path.add("group2/M00/39/DA/wKgfWWViQyWAQnxfAACd0V4G0jE383.jpg"); + path.add("group1/M01/7C/64/wKgfWWViRnmAIblHAACd0V4G0jE027.jpg"); + path.add("group1/M00/7C/64/wKgfWWViRr2ASzJSAACd0V4G0jE502.jpg"); + path.add("group1/M00/7C/6B/wKgfWWViSg6ACk_jAACd0V4G0jE226.jpg"); + path.add("group2/M02/39/E3/wKgfWWViSlOAaII0AACd0V4G0jE307.jpg"); + path.add("group1/M00/7C/71/wKgfWWViTZ6AKkFbAACd0V4G0jE637.jpg"); + path.add("group2/M01/39/E8/wKgfWWViTeiAW6W_AACd0V4G0jE482.jpg"); + path.add("group2/M00/39/ED/wKgfWWViUTaAeksWAACd0V4G0jE257.jpg"); + path.add("group1/M00/7C/77/wKgfWWViUXuAZEOCAACd0V4G0jE160.jpg"); + path.add("group2/M00/39/F2/wKgfWWViVMqAX1fRAACd0V4G0jE113.jpg"); + path.add("group1/M01/7C/7C/wKgfWWViVRWAciJmAACd0V4G0jE171.jpg"); + path.add("group1/M01/7C/83/wKgfWWViWF6AW9-WAACd0V4G0jE709.jpg"); + path.add("group2/M00/39/F7/wKgfWWViWKSAR5PhAACd0V4G0jE881.jpg"); + path.add("group2/M01/39/FD/wKgfWWViW_OAU8bgAACd0V4G0jE451.jpg"); + path.add("group2/M02/39/FE/wKgfWWViXDqAF0cEAACd0V4G0jE312.jpg"); + path.add("group2/M02/3A/02/wKgfWWViX4eANWuhAACd0V4G0jE423.jpg"); + path.add("group1/M02/7C/8E/wKgfWWViX9GAEed8AACd0V4G0jE162.jpg"); + path.add("group1/M02/7C/95/wKgfWWViYyCAYgY4AACd0V4G0jE044.jpg"); + path.add("group1/M00/7C/96/wKgfWWViY2aAB9KcAACd0V4G0jE159.jpg"); + path.add("group2/M00/3A/0A/wKgfWWViZraAEVBuAACd0V4G0jE768.jpg"); + path.add("group2/M01/3A/0B/wKgfWWViZv6ANkjSAACd0V4G0jE142.jpg"); + path.add("group2/M02/3A/0F/wKgfWWViakqAHNYvAACd0V4G0jE675.jpg"); + path.add("group1/M02/7C/A4/wKgfWWViapGALSGGAACd0V4G0jE053.jpg"); + path.add("group2/M00/3A/13/wKgfWWVibd-AZm3FAACd0V4G0jE872.jpg"); + path.add("group2/M00/3A/14/wKgfWWVibiaAdbOnAACd0V4G0jE344.jpg"); + path.add("group2/M00/3A/18/wKgfWWVicXOAdZ7jAACd0V4G0jE868.jpg"); + path.add("group1/M02/7C/B1/wKgfWWVicbqAJXkGAACd0V4G0jE646.jpg"); + path.add("group1/M00/7C/B6/wKgfWWVidQqABzQUAACd0V4G0jE584.jpg"); + path.add("group1/M00/7C/B7/wKgfWWVidVGAeuvHAACd0V4G0jE750.jpg"); + path.add("group2/M00/3A/23/wKgfWWVieJ2AaRILAACd0V4G0jE991.jpg"); + path.add("group1/M00/7C/BC/wKgfWWVieOSAQdwrAACd0V4G0jE177.jpg"); + path.add("group1/M00/7C/C2/wKgfWWVifC-ADkUuAACd0V4G0jE847.jpg"); + path.add("group1/M01/7C/C2/wKgfWWVifHmARTw-AACd0V4G0jE001.jpg"); + path.add("group1/M01/7C/C9/wKgfWWVif8iAIBJXAACd0V4G0jE848.jpg"); + path.add("group2/M02/3A/2F/wKgfWWVigA6AI5GbAACd0V4G0jE231.jpg"); + path.add("group2/M00/3A/33/wKgfWWVig12AaCMyAACd0V4G0jE158.jpg"); + path.add("group2/M00/3A/33/wKgfWWVig6WAXqg2AACd0V4G0jE222.jpg"); + path.add("group2/M02/3A/37/wKgfWWVihu-AeMSzAACd0V4G0jE004.jpg"); + path.add("group1/M00/7C/D5/wKgfWWVihzaAHHrLAACd0V4G0jE324.jpg"); + path.add("group2/M01/3A/3C/wKgfWWViioaAdH0aAACd0V4G0jE144.jpg"); + path.add("group2/M01/3A/3C/wKgfWWViis2AW-kyAACd0V4G0jE964.jpg"); + path.add("group2/M02/3A/41/wKgfWWVijhmAMFV4AACd0V4G0jE553.jpg"); + path.add("group2/M00/3A/42/wKgfWWVijmCANd8FAACd0V4G0jE158.jpg"); + path.add("group2/M00/3A/48/wKgfWWVika-AXYgDAACd0V4G0jE581.jpg"); + path.add("group1/M00/7C/E7/wKgfWWVikfeARdNCAACd0V4G0jE332.jpg"); + path.add("group1/M00/7C/EC/wKgfWWVilUOAerChAACd0V4G0jE499.jpg"); + path.add("group1/M02/7C/EC/wKgfWWVilYqAXx0XAACd0V4G0jE294.jpg"); + path.add("group1/M02/7C/F1/wKgfWWVimNeAbzP0AACd0V4G0jE392.jpg"); + path.add("group2/M01/3A/54/wKgfWWVimRuAKYoXAACd0V4G0jE959.jpg"); + path.add("group2/M01/3A/58/wKgfWWVinGeACGwPAACd0V4G0jE716.jpg"); + path.add("group2/M00/3A/59/wKgfWWVinKyAOBdpAACd0V4G0jE115.jpg"); + path.add("group1/M02/7C/FC/wKgfWWVin_yANIUxAACd0V4G0jE889.jpg"); + path.add("group2/M01/3A/60/wKgfWWVioEOAL6n-AACd0V4G0jE090.jpg"); + path.add("group2/M02/3A/65/wKgfWWVio5KANM-RAACd0V4G0jE015.jpg"); + path.add("group1/M02/7D/03/wKgfWWVio9WAfZSCAACd0V4G0jE866.jpg"); + path.add("group2/M00/3A/6A/wKgfWWVipyKASd1KAACd0V4G0jE157.jpg"); + path.add("group2/M01/3A/6B/wKgfWWVip2uARM_KAACd0V4G0jE557.jpg"); + path.add("group2/M01/3A/6F/wKgfWWViqryALkKJAACd0V4G0jE796.jpg"); + path.add("group2/M01/3A/6F/wKgfWWViqwCASczxAACd0V4G0jE438.jpg"); + path.add("group1/M00/7D/13/wKgfWWVirlCAXMAiAACd0V4G0jE312.jpg"); + path.add("group1/M00/7D/14/wKgfWWVirpeALhWHAACd0V4G0jE172.jpg"); + path.add("group1/M02/7D/1A/wKgfWWVisd-AQFYBAACd0V4G0jE029.jpg"); + path.add("group2/M01/3A/7A/wKgfWWVisimAa1eLAACd0V4G0jE959.jpg"); + path.add("group2/M00/3A/7E/wKgfWWVitXiAKJmtAACd0V4G0jE157.jpg"); + path.add("group2/M00/3A/7F/wKgfWWVitbyAPZvcAACd0V4G0jE710.jpg"); + path.add("group2/M01/3A/82/wKgfWWViuQ-AaOwZAACd0V4G0jE917.jpg"); + path.add("group1/M01/7D/29/wKgfWWViuVeAB_8FAACd0V4G0jE453.jpg"); + path.add("group1/M01/7D/2D/wKgfWWVivJ6AWplgAACd0V4G0jE700.jpg"); + path.add("group2/M02/3A/87/wKgfWWVivOaAH6Z5AACd0V4G0jE781.jpg"); + path.add("group2/M02/3A/8D/wKgfWWViwDGAPgyqAACd0V4G0jE715.jpg"); + path.add("group2/M01/3A/8D/wKgfWWViwHmAcbGbAACd0V4G0jE977.jpg"); + path.add("group2/M00/3A/92/wKgfWWViw8yAVYLcAACd0V4G0jE798.jpg"); + path.add("group1/M00/7D/39/wKgfWWVixBWARO9SAACd0V4G0jE323.jpg"); + path.add("group1/M01/7D/3F/wKgfWWVix2KAWlAFAACd0V4G0jE725.jpg"); + path.add("group1/M01/7D/40/wKgfWWVix6uAQXJSAACd0V4G0jE178.jpg"); + path.add("group1/M01/7D/46/wKgfWWViyv-AAG5AAACd0V4G0jE039.jpg"); + path.add("group1/M01/7D/46/wKgfWWViy0eAEtr7AACd0V4G0jE222.jpg"); + path.add("group2/M02/3A/A1/wKgfWWVizpmAEsLCAACd0V4G0jE709.jpg"); + path.add("group1/M02/7D/4D/wKgfWWVizuWAIuMRAACd0V4G0jE582.jpg"); + path.add("group1/M00/7D/52/wKgfWWVi0jWAFr6jAACd0V4G0jE150.jpg"); + path.add("group1/M01/7D/53/wKgfWWVi0n2AHIWAAACd0V4G0jE505.jpg"); + path.add("group2/M01/3A/AA/wKgfWWVi1c6AY7uPAACd0V4G0jE034.jpg"); + path.add("group2/M02/3A/AA/wKgfWWVi1hWABqiKAACd0V4G0jE053.jpg"); + path.add("group1/M00/7D/61/wKgfWWVi2WuAEgdHAACd0V4G0jE151.jpg"); + path.add("group1/M00/7D/61/wKgfWWVi2a-AC93JAACd0V4G0jE798.jpg"); + path.add("group1/M01/7D/68/wKgfWWVi3QOANHOHAACd0V4G0jE611.jpg"); + path.add("group1/M01/7D/68/wKgfWWVi3UmAQ3cJAACd0V4G0jE504.jpg"); + path.add("group2/M00/3A/B7/wKgfWWVi4J-AI5IvAACd0V4G0jE957.jpg"); + path.add("group2/M00/3A/B8/wKgfWWVi4OWAD1GqAACd0V4G0jE815.jpg"); + path.add("group1/M00/7D/73/wKgfWWVi5DaAJIriAACd0V4G0jE694.jpg"); + path.add("group1/M01/7D/73/wKgfWWVi5ICAKQe9AACd0V4G0jE853.jpg"); + path.add("group1/M02/7D/79/wKgfWWVi59GAOm7mAACd0V4G0jE219.jpg"); + path.add("group2/M02/3A/C3/wKgfWWVi6BuALWT0AACd0V4G0jE329.jpg"); + path.add("group2/M00/3A/C8/wKgfWWVi62mAK3rfAACd0V4G0jE161.jpg"); + path.add("group1/M01/7D/7F/wKgfWWVi67SAHlE7AACd0V4G0jE330.jpg"); + path.add("group1/M00/7D/87/wKgfWWVi7wWANgx0AACd0V4G0jE623.jpg"); + path.add("group2/M01/3A/CC/wKgfWWVi70-ACip7AACd0V4G0jE653.jpg"); + path.add("group1/M01/7D/8E/wKgfWWVi8p2AOp-gAACd0V4G0jE583.jpg"); + path.add("group2/M00/3A/CF/wKgfWWVi8ueACXVAAACd0V4G0jE876.jpg"); + path.add("group2/M02/3A/D4/wKgfWWVi9jiAZQEEAACd0V4G0jE515.jpg"); + path.add("group1/M01/7D/94/wKgfWWVi9n6ATyngAACd0V4G0jE275.jpg"); + path.add("group2/M02/3A/D7/wKgfWWVi-c-AaV1zAACd0V4G0jE326.jpg"); + path.add("group1/M01/7D/9C/wKgfWWVi-hmAM2oyAACd0V4G0jE387.jpg"); + path.add("group2/M00/3A/DC/wKgfWWVi_WiAROKBAACd0V4G0jE226.jpg"); + path.add("group2/M00/3A/DC/wKgfWWVi_bGAZr1BAACd0V4G0jE701.jpg"); + path.add("group1/M01/7D/AA/wKgfWWVjAQWAV7zpAACd0V4G0jE690.jpg"); + path.add("group2/M01/3A/E1/wKgfWWVjAUuAakOkAACd0V4G0jE989.jpg"); + path.add("group1/M02/7D/B2/wKgfWWVjB8eADGlAAACd0V4G0jE026.jpg"); + path.add("group1/M00/7D/B3/wKgfWWVjB9mAFYY4AACd0V4G0jE580.jpg"); + path.add("group1/M02/7D/B6/wKgfWWVjCGuACmXUAACd0V4G0jE947.jpg"); + path.add("group1/M01/7D/B6/wKgfWWVjCIKAQ26fAACd0V4G0jE115.jpg"); + path.add("group1/M01/7D/BC/wKgfWWVjC9KABobMAACd0V4G0jE130.jpg"); + path.add("group1/M00/7D/BD/wKgfWWVjDBiAGr_3AACd0V4G0jE913.jpg"); + path.add("group1/M01/7D/C3/wKgfWWVjD2yAMXkrAACd0V4G0jE386.jpg"); + path.add("group2/M01/3A/F0/wKgfWWVjD7WANyCUAACd0V4G0jE267.jpg"); + path.add("group2/M00/3A/F5/wKgfWWVjEwSASFafAACd0V4G0jE260.jpg"); + path.add("group2/M00/3A/F6/wKgfWWVjE0uAaZ2XAACd0V4G0jE476.jpg"); + path.add("group1/M01/7D/D1/wKgfWWVjFp6AH1XGAACd0V4G0jE558.jpg"); + path.add("group1/M02/7D/D1/wKgfWWVjFuWALO9FAACd0V4G0jE174.jpg"); + path.add("group1/M01/7D/D7/wKgfWWVjGjaATk06AACd0V4G0jE190.jpg"); + path.add("group2/M02/3A/FD/wKgfWWVjGn2ARq4mAACd0V4G0jE222.jpg"); + path.add("group2/M01/3B/00/wKgfWWVjHc6AHwOHAACd0V4G0jE405.jpg"); + path.add("group1/M02/7D/DF/wKgfWWVjHhuAVbZZAACd0V4G0jE965.jpg"); + path.add("group1/M01/7D/E5/wKgfWWVjIW2AVKp3AACd0V4G0jE082.jpg"); + path.add("group2/M01/3B/03/wKgfWWVjIbOADT6tAACd0V4G0jE104.jpg"); + path.add("group1/M01/7D/EC/wKgfWWVjJQSAA5X9AACd0V4G0jE000.jpg"); + path.add("group2/M00/3B/09/wKgfWWVjJU-AFBnWAACd0V4G0jE066.jpg"); + path.add("group1/M01/7D/F1/wKgfWWVjKJ6ALRouAACd0V4G0jE947.jpg"); + path.add("group1/M00/7D/F2/wKgfWWVjKOaAOWmwAACd0V4G0jE183.jpg"); + path.add("group1/M02/7D/F9/wKgfWWVjLDiAHR7wAACd0V4G0jE345.jpg"); + path.add("group2/M02/3B/10/wKgfWWVjLICAVqXJAACd0V4G0jE163.jpg"); + path.add("group2/M01/3B/14/wKgfWWVjL9KAGgr5AACd0V4G0jE202.jpg"); + path.add("group2/M00/3B/15/wKgfWWVjMBuAe64UAACd0V4G0jE639.jpg"); + path.add("group2/M01/3B/1A/wKgfWWVjM26AUaAEAACd0V4G0jE856.jpg"); + path.add("group1/M01/7E/04/wKgfWWVjM7KAAYDOAACd0V4G0jE646.jpg"); + path.add("group2/M01/3B/1D/wKgfWWVjNwiAN4__AACd0V4G0jE776.jpg"); + path.add("group1/M02/7E/0C/wKgfWWVjN02Aei52AACd0V4G0jE001.jpg"); + path.add("group2/M01/3B/22/wKgfWWVjOqCAUahPAACd0V4G0jE067.jpg"); + path.add("group1/M00/7E/12/wKgfWWVjOuqAaoT1AACd0V4G0jE385.jpg"); + path.add("group1/M00/7E/18/wKgfWWVjPj2AH7JMAACd0V4G0jE997.jpg"); + path.add("group2/M02/3B/25/wKgfWWVjPoWAWEZyAACd0V4G0jE486.jpg"); + path.add("group1/M00/7E/1F/wKgfWWVjQdiAMJlBAACd0V4G0jE244.jpg"); + path.add("group2/M01/3B/28/wKgfWWVjQhyAdGGEAACd0V4G0jE819.jpg"); + path.add("group1/M01/7E/26/wKgfWWVjRXCASjr7AACd0V4G0jE708.jpg"); + path.add("group1/M00/7E/27/wKgfWWVjRbSAaNDDAACd0V4G0jE487.jpg"); + path.add("group1/M01/7E/2D/wKgfWWVjSQiAWJTkAACd0V4G0jE721.jpg"); + path.add("group1/M00/7E/2E/wKgfWWVjSU-AHTv6AACd0V4G0jE140.jpg"); + path.add("group1/M01/7E/33/wKgfWWVjTJ2ATeSUAACd0V4G0jE518.jpg"); + path.add("group2/M01/3B/35/wKgfWWVjTOWAXHL8AACd0V4G0jE815.jpg"); + path.add("group2/M02/3B/39/wKgfWWVjUDaAZQoRAACd0V4G0jE358.jpg"); + path.add("group2/M01/3B/3A/wKgfWWVjUIGAduVsAACd0V4G0jE202.jpg"); + path.add("group1/M00/7E/3E/wKgfWWVjU9KAUY2vAACd0V4G0jE119.jpg"); + path.add("group1/M02/7E/3F/wKgfWWVjVByAWANlAACd0V4G0jE856.jpg"); + path.add("group2/M01/3B/40/wKgfWWVjV22AQquVAACd0V4G0jE567.jpg"); + path.add("group2/M02/3B/41/wKgfWWVjV7WAYkJQAACd0V4G0jE233.jpg"); + path.add("group1/M01/7E/4D/wKgfWWVjWwmADHDOAACd0V4G0jE714.jpg"); + path.add("group1/M00/7E/4D/wKgfWWVjW06APaUQAACd0V4G0jE204.jpg"); + path.add("group1/M01/7E/54/wKgfWWVjXqKATNtaAACd0V4G0jE456.jpg"); + path.add("group1/M01/7E/55/wKgfWWVjXumAJ5D_AACd0V4G0jE486.jpg"); + path.add("group2/M02/3B/4C/wKgfWWVjYj2AHrdwAACd0V4G0jE554.jpg"); + path.add("group1/M01/7E/5A/wKgfWWVjYoaAcPeeAACd0V4G0jE965.jpg"); + path.add("group1/M02/7E/60/wKgfWWVjZdmAMetWAACd0V4G0jE688.jpg"); + path.add("group2/M01/3B/50/wKgfWWVjZiGAcPH2AACd0V4G0jE297.jpg"); + path.add("group2/M01/3B/56/wKgfWWVjaXOASepEAACd0V4G0jE652.jpg"); + path.add("group1/M00/7E/66/wKgfWWVjabyAJam0AACd0V4G0jE024.jpg"); + path.add("group2/M01/3B/5B/wKgfWWVjbQuARDziAACd0V4G0jE634.jpg"); + path.add("group2/M01/3B/5C/wKgfWWVjbVaAZZp-AACd0V4G0jE795.jpg"); + path.add("group1/M01/7E/87/wKgfWWVjeYWABu9OAACd0V4G0jE662.jpg"); + path.add("group1/M02/7E/88/wKgfWWVjec2ATDARAACd0V4G0jE354.jpg"); + path.add("group1/M02/7E/90/wKgfWWVjfSSANDvgAACd0V4G0jE542.jpg"); + path.add("group2/M00/3B/8B/wKgfWWVjfWqAd4ZsAACd0V4G0jE556.jpg"); + path.add("group2/M01/3B/90/wKgfWWVjgLmAHKHNAACd0V4G0jE039.jpg"); + path.add("group2/M01/3B/91/wKgfWWVjgQCALU6vAACd0V4G0jE331.jpg"); + path.add("group1/M01/7E/9F/wKgfWWVjhFSAKiTGAACd0V4G0jE195.jpg"); + path.add("group1/M02/7E/A0/wKgfWWVjhJqAYN7dAACd0V4G0jE386.jpg"); + path.add("group2/M02/3B/97/wKgfWWVjh-uAQH2PAACd0V4G0jE147.jpg"); + path.add("group2/M01/3B/98/wKgfWWVjiDOAWyUHAACd0V4G0jE722.jpg"); + path.add("group1/M02/7E/AD/wKgfWWVji4aAMB5TAACd0V4G0jE899.jpg"); + path.add("group1/M00/7E/AE/wKgfWWVji82ASzMmAACd0V4G0jE299.jpg"); + path.add("group2/M02/3B/9F/wKgfWWVjjyGAT382AACd0V4G0jE330.jpg"); + path.add("group2/M01/3B/A0/wKgfWWVjj2SAW0QwAACd0V4G0jE616.jpg"); + path.add("group1/M00/7E/BB/wKgfWWVjkrWAFFc7AACd0V4G0jE841.jpg"); + path.add("group2/M00/3B/A4/wKgfWWVjkv2AW_O7AACd0V4G0jE639.jpg"); + path.add("group2/M00/3B/A7/wKgfWWVjlkyAT8qqAACd0V4G0jE655.jpg"); + path.add("group1/M02/7E/C1/wKgfWWVjlpWARq51AACd0V4G0jE464.jpg"); + path.add("group1/M01/7E/C8/wKgfWWVjmeeAVahHAACd0V4G0jE332.jpg"); + path.add("group2/M00/3B/AA/wKgfWWVjmi2AWPJxAACd0V4G0jE651.jpg"); + path.add("group2/M00/3B/AE/wKgfWWVjnYCAHU_wAACd0V4G0jE221.jpg"); + path.add("group2/M01/3B/AE/wKgfWWVjnciAEq96AACd0V4G0jE328.jpg"); + path.add("group2/M00/3B/B1/wKgfWWVjoRmABZtbAACd0V4G0jE280.jpg"); + path.add("group1/M02/7E/D7/wKgfWWVjoWGAUKLzAACd0V4G0jE466.jpg"); + path.add("group1/M00/7E/DE/wKgfWWVjpLmARF4CAACd0V4G0jE104.jpg"); + path.add("group1/M02/7E/DF/wKgfWWVjpP6AS3MkAACd0V4G0jE174.jpg"); + path.add("group2/M01/3B/B8/wKgfWWVjqFOARRd0AACd0V4G0jE744.jpg"); + path.add("group2/M00/3B/B9/wKgfWWVjqJiALAUnAACd0V4G0jE559.jpg"); + path.add("group1/M00/7E/EB/wKgfWWVjq-2AU9gVAACd0V4G0jE724.jpg"); + path.add("group1/M01/7E/EB/wKgfWWVjrDaAJD-ZAACd0V4G0jE453.jpg"); + path.add("group1/M02/7E/F1/wKgfWWVjr4uAGUL7AACd0V4G0jE270.jpg"); + path.add("group2/M00/3B/C1/wKgfWWVjr9GACT8YAACd0V4G0jE155.jpg"); + path.add("group2/M01/3B/C5/wKgfWWVjsyOAX7O6AACd0V4G0jE363.jpg"); + path.add("group1/M00/7E/F8/wKgfWWVjs22AZXrXAACd0V4G0jE132.jpg"); + path.add("group1/M00/7E/FE/wKgfWWVjtr6AAJqYAACd0V4G0jE692.jpg"); + path.add("group1/M01/7E/FF/wKgfWWVjtwSAdtvzAACd0V4G0jE115.jpg"); + path.add("group2/M02/3B/CC/wKgfWWVjuliAQzWwAACd0V4G0jE458.jpg"); + path.add("group1/M02/7F/05/wKgfWWVjuqGAM3NZAACd0V4G0jE557.jpg"); + path.add("group1/M01/7F/0C/wKgfWWVjvfGAW1RvAACd0V4G0jE297.jpg"); + path.add("group1/M02/7F/0D/wKgfWWVjvj2AGbWXAACd0V4G0jE057.jpg"); + path.add("group1/M00/7F/15/wKgfWWVjwYqABD_QAACd0V4G0jE289.jpg"); + path.add("group1/M01/7F/16/wKgfWWVjwdKAFG-JAACd0V4G0jE745.jpg"); + path.add("group1/M01/7F/1C/wKgfWWVjxSOATmY9AACd0V4G0jE203.jpg"); + path.add("group1/M00/7F/1C/wKgfWWVjxW2AGuStAACd0V4G0jE491.jpg"); + path.add("group1/M00/7F/22/wKgfWWVjyL6AT0OTAACd0V4G0jE317.jpg"); + path.add("group1/M00/7F/23/wKgfWWVjyQSAFmbYAACd0V4G0jE545.jpg"); + path.add("group1/M01/7F/29/wKgfWWVjzFiAN2ksAACd0V4G0jE130.jpg"); + path.add("group1/M00/7F/2A/wKgfWWVjzJ-AW1RIAACd0V4G0jE538.jpg"); + path.add("group1/M00/7F/30/wKgfWWVjz-6AStt2AACd0V4G0jE286.jpg"); + path.add("group2/M02/3B/E0/wKgfWWVj0DWAeJhtAACd0V4G0jE450.jpg"); + path.add("group1/M02/7F/37/wKgfWWVj04eAGFoBAACd0V4G0jE728.jpg"); + path.add("group1/M00/7F/37/wKgfWWVj08-ACjPtAACd0V4G0jE975.jpg"); + path.add("group1/M00/7F/3F/wKgfWWVj1yCAZTvXAACd0V4G0jE273.jpg"); + path.add("group2/M01/3B/E6/wKgfWWVj12qALFVhAACd0V4G0jE406.jpg"); + path.add("group1/M00/7F/46/wKgfWWVj2sOAeBAaAACd0V4G0jE099.jpg"); + path.add("group1/M01/7F/47/wKgfWWVj2wmAVcVZAACd0V4G0jE085.jpg"); + path.add("group1/M02/7F/4D/wKgfWWVj3mGAKzHiAACd0V4G0jE294.jpg"); + path.add("group1/M00/7F/4E/wKgfWWVj3qaAIcCjAACd0V4G0jE461.jpg"); + path.add("group1/M02/7F/54/wKgfWWVj4feASNZ7AACd0V4G0jE903.jpg"); + path.add("group1/M02/7F/54/wKgfWWVj4kGAD-cJAACd0V4G0jE567.jpg"); + path.add("group1/M00/7F/5B/wKgfWWVj5ZSALYm8AACd0V4G0jE995.jpg"); + path.add("group1/M01/7F/5B/wKgfWWVj5diAOqDuAACd0V4G0jE573.jpg"); + path.add("group1/M00/7F/62/wKgfWWVj6SiAJizPAACd0V4G0jE312.jpg"); + path.add("group1/M01/7F/63/wKgfWWVj6XKATS8xAACd0V4G0jE652.jpg"); + path.add("group1/M02/7F/6A/wKgfWWVj7MCASO5jAACd0V4G0jE579.jpg"); + path.add("group2/M02/3B/FB/wKgfWWVj7QuAKgHhAACd0V4G0jE448.jpg"); + path.add("group1/M02/7F/71/wKgfWWVj8FmAX99_AACd0V4G0jE723.jpg"); + path.add("group1/M00/7F/71/wKgfWWVj8KSAGv4WAACd0V4G0jE292.jpg"); + path.add("group1/M01/7F/78/wKgfWWVj8_GAeUkTAACd0V4G0jE335.jpg"); + path.add("group2/M00/3C/01/wKgfWWVj9DyAezipAACd0V4G0jE828.jpg"); + path.add("group1/M00/7F/7F/wKgfWWVj946AVdaEAACd0V4G0jE075.jpg"); + path.add("group1/M02/7F/80/wKgfWWVj99OAbpZlAACd0V4G0jE685.jpg"); + path.add("group1/M00/7F/86/wKgfWWVj-zGACb83AACd0V4G0jE730.jpg"); + path.add("group2/M00/3C/07/wKgfWWVj-3CAPG1mAACd0V4G0jE445.jpg"); + path.add("group1/M01/7F/8E/wKgfWWVj_r-AEf8RAACd0V4G0jE049.jpg"); + path.add("group2/M02/3C/0C/wKgfWWVj_weAOo2_AACd0V4G0jE307.jpg"); + path.add("group2/M02/3C/0F/wKgfWWVkAoiAci2sAACd0V4G0jE723.jpg"); + path.add("group2/M01/3C/10/wKgfWWVkAqGAfiXuAACd0V4G0jE828.jpg"); + path.add("group1/M02/7F/9A/wKgfWWVkBfiAXly1AACd0V4G0jE480.jpg"); + path.add("group2/M00/3C/13/wKgfWWVkBj-APfdrAACd0V4G0jE453.jpg"); + path.add("group2/M02/3C/17/wKgfWWVkCZKAM0qhAACd0V4G0jE247.jpg"); + path.add("group2/M00/3C/18/wKgfWWVkCdiAGzDiAACd0V4G0jE236.jpg"); + path.add("group1/M01/7F/A5/wKgfWWVkDSaAVghSAACd0V4G0jE414.jpg"); + path.add("group1/M00/7F/A6/wKgfWWVkDW2ASuhsAACd0V4G0jE278.jpg"); + path.add("group2/M01/3C/25/wKgfWWVnTuCAH3koAACd0V4G0jE399.jpg"); + path.add("group1/M00/7F/C3/wKgfWWVnTwaAB-N-AACd0V4G0jE758.jpg"); + path.add("group1/M02/7F/C7/wKgfWWVnT6GAFGABAACd0V4G0jE825.jpg"); + path.add("group2/M01/3C/28/wKgfWWVnT8mADYN0AACd0V4G0jE798.jpg"); + path.add("group2/M00/3C/31/wKgfWWVnUP2AfF-eAACd0V4G0jE380.jpg"); + path.add("group2/M01/3C/32/wKgfWWVnUSKAdpE5AACd0V4G0jE865.jpg"); + path.add("group2/M02/3C/39/wKgfWWVnUhWAahEsAACd0V4G0jE327.jpg"); + path.add("group1/M02/7F/D6/wKgfWWVnUjmAeThiAACd0V4G0jE608.jpg"); + path.add("group1/M00/7F/E2/wKgfWWVnU42AUA2VAACd0V4G0jE597.jpg"); + path.add("group2/M00/3C/3C/wKgfWWVnU7CAAeBUAACd0V4G0jE209.jpg"); + path.add("group1/M01/7F/ED/wKgfWWVnVL-APv3eAACd0V4G0jE057.jpg"); + path.add("group1/M02/7F/EE/wKgfWWVnVOKAKTCgAACd0V4G0jE937.jpg"); + path.add("group1/M01/7F/F9/wKgfWWVnVe-AZmWMAACd0V4G0jE303.jpg"); + path.add("group1/M01/7F/FA/wKgfWWVnVg-ASKR9AACd0V4G0jE175.jpg"); + path.add("group1/M00/80/06/wKgfWWVnV2iAX2FxAACd0V4G0jE888.jpg"); + path.add("group1/M02/80/07/wKgfWWVnV4iAGL43AACd0V4G0jE745.jpg"); + path.add("group1/M01/80/11/wKgfWWVnWJaAQ0RVAACd0V4G0jE067.jpg"); + path.add("group2/M02/3C/49/wKgfWWVnWLmAQN2-AACd0V4G0jE657.jpg"); + path.add("group2/M00/3C/4D/wKgfWWVnWciAANGFAACd0V4G0jE811.jpg"); + path.add("group1/M01/80/1C/wKgfWWVnWeiAQUs7AACd0V4G0jE216.jpg"); + path.add("group1/M02/80/28/wKgfWWVnW0GAXc9pAACd0V4G0jE689.jpg"); + path.add("group2/M01/3C/52/wKgfWWVnW1-AGqkaAACd0V4G0jE820.jpg"); + path.add("group1/M01/80/33/wKgfWWVnXHOAVwZ4AACd0V4G0jE250.jpg"); + path.add("group1/M00/80/34/wKgfWWVnXJKADWCtAACd0V4G0jE778.jpg"); + path.add("group1/M02/80/3C/wKgfWWVnXaWAWa_KAACd0V4G0jE846.jpg"); + path.add("group1/M00/80/3E/wKgfWWVnXcaAHjHTAACd0V4G0jE305.jpg"); + path.add("group1/M00/80/4B/wKgfWWVnXxqARoidAACd0V4G0jE828.jpg"); + path.add("group2/M02/3C/5C/wKgfWWVnXziAFBnjAACd0V4G0jE890.jpg"); + path.add("group1/M02/80/55/wKgfWWVnYEmAEChTAACd0V4G0jE815.jpg"); + path.add("group1/M02/80/57/wKgfWWVnYGiAdLkfAACd0V4G0jE240.jpg"); + path.add("group2/M02/3C/62/wKgfWWVnYYGAPAOtAACd0V4G0jE504.jpg"); + path.add("group1/M00/80/63/wKgfWWVnYZ6Adb4eAACd0V4G0jE696.jpg"); + path.add("group1/M02/80/B2/wKgfWWVnavGAFVkLAACd0V4G0jE540.jpg"); + path.add("group1/M01/80/B2/wKgfWWVnav6APcjuAACd0V4G0jE786.jpg"); + path.add("group1/M01/80/B4/wKgfWWVna3mALcJSAACd0V4G0jE137.jpg"); + path.add("group1/M02/80/B5/wKgfWWVna4aAJYrkAACd0V4G0jE486.jpg"); + path.add("group2/M01/3C/72/wKgfWWVnbAyAYUh8AACd0V4G0jE122.jpg"); + path.add("group2/M02/3C/72/wKgfWWVnbBKAF_HHAACd0V4G0jE603.jpg"); + path.add("group2/M02/3C/73/wKgfWWVnbJOAWlIMAACd0V4G0jE497.jpg"); + path.add("group1/M01/80/BA/wKgfWWVnbJ-AfakAAACd0V4G0jE835.jpg"); + path.add("group1/M00/80/BC/wKgfWWVnbSGAMFGXAACd0V4G0jE744.jpg"); + path.add("group1/M01/80/BC/wKgfWWVnbS2AFyNWAACd0V4G0jE219.jpg"); + path.add("group1/M00/80/BF/wKgfWWVnbayAVAVXAACd0V4G0jE101.jpg"); + path.add("group2/M02/3C/74/wKgfWWVnbbqAdZq2AACd0V4G0jE597.jpg"); + path.add("group1/M02/80/C1/wKgfWWVnboCAa82lAACd0V4G0jE954.jpg"); + path.add("group1/M00/80/C2/wKgfWWVnbouAaLcoAACd0V4G0jE312.jpg"); + path.add("group1/M02/80/C3/wKgfWWVnbw-AfUJdAACd0V4G0jE970.jpg"); + path.add("group1/M01/80/C4/wKgfWWVnbxmAQlYOAACd0V4G0jE612.jpg"); + path.add("group1/M00/80/C5/wKgfWWVnb5iAGt9lAACd0V4G0jE096.jpg"); + path.add("group1/M01/80/C5/wKgfWWVnb6WAGkVJAACd0V4G0jE881.jpg"); + path.add("group1/M00/80/C7/wKgfWWVncCKAbxyOAACd0V4G0jE684.jpg"); + path.add("group1/M02/80/C7/wKgfWWVncC-AeGVgAACd0V4G0jE900.jpg"); + path.add("group1/M01/80/C9/wKgfWWVncLGACpOhAACd0V4G0jE624.jpg"); + path.add("group1/M00/80/C9/wKgfWWVncLuAX4Z4AACd0V4G0jE073.jpg"); + path.add("group2/M01/3C/76/wKgfWWVncUCAZuE1AACd0V4G0jE303.jpg"); + path.add("group1/M00/80/CA/wKgfWWVncUuAQ5lWAACd0V4G0jE993.jpg"); + path.add("group1/M00/80/CB/wKgfWWVnchKATZ1rAACd0V4G0jE264.jpg"); + path.add("group1/M00/80/CC/wKgfWWVnciOAJyGkAACd0V4G0jE272.jpg"); + path.add("group2/M01/3C/77/wKgfWWVncqOAHDgsAACd0V4G0jE001.jpg"); + path.add("group1/M02/80/CD/wKgfWWVncq6AY1zzAACd0V4G0jE768.jpg"); + path.add("group1/M01/80/CE/wKgfWWVncy6ABr0WAACd0V4G0jE055.jpg"); + path.add("group1/M02/80/CE/wKgfWWVnczqAZQJoAACd0V4G0jE115.jpg"); + path.add("group1/M01/80/CF/wKgfWWVnc7qAEXvgAACd0V4G0jE636.jpg"); + path.add("group1/M01/80/CF/wKgfWWVnc8WAZQxTAACd0V4G0jE620.jpg"); + path.add("group2/M02/3C/77/wKgfWWVndEaAS0oZAACd0V4G0jE051.jpg"); + path.add("group2/M01/3C/77/wKgfWWVndFCAdir9AACd0V4G0jE758.jpg"); + path.add("group1/M02/80/D2/wKgfWWVndNSAICgcAACd0V4G0jE674.jpg"); + path.add("group1/M02/80/D2/wKgfWWVndOCAGVq5AACd0V4G0jE799.jpg"); + path.add("group1/M00/80/D4/wKgfWWVndaOAaJgRAACd0V4G0jE635.jpg"); + path.add("group1/M02/80/D4/wKgfWWVndbKAFKCqAACd0V4G0jE327.jpg"); + path.add("group1/M00/80/D6/wKgfWWVndjOAfOC5AACd0V4G0jE569.jpg"); + path.add("group1/M01/80/D6/wKgfWWVndj-AMrYZAACd0V4G0jE615.jpg"); + path.add("group1/M02/80/D7/wKgfWWVndrqAD5oUAACd0V4G0jE936.jpg"); + path.add("group1/M01/80/D7/wKgfWWVndseAUTJ_AACd0V4G0jE157.jpg"); + path.add("group2/M00/3C/79/wKgfWWVnd0mATsfLAACd0V4G0jE578.jpg"); + path.add("group1/M00/80/D9/wKgfWWVnd1WAUHFXAACd0V4G0jE546.jpg"); + path.add("group1/M01/80/DB/wKgfWWVnd9OAaukxAACd0V4G0jE687.jpg"); + path.add("group1/M01/80/DB/wKgfWWVnd-SAQZtkAACd0V4G0jE089.jpg"); + path.add("group1/M02/80/DC/wKgfWWVneGSAGg7cAACd0V4G0jE316.jpg"); + path.add("group1/M02/80/DD/wKgfWWVneHCATSNhAACd0V4G0jE120.jpg"); + path.add("group2/M01/3C/7B/wKgfWWVneTaAV4hUAACd0V4G0jE235.jpg"); + path.add("group1/M02/80/DF/wKgfWWVneUGAOCd0AACd0V4G0jE757.jpg"); + path.add("group1/M02/80/E0/wKgfWWVnecCAKbcdAACd0V4G0jE354.jpg"); + path.add("group1/M02/80/E1/wKgfWWVnec2APFNwAACd0V4G0jE495.jpg"); + path.add("group1/M02/80/E3/wKgfWWVnek-AOBGNAACd0V4G0jE668.jpg"); + path.add("group1/M01/80/E3/wKgfWWVnel-AfIUZAACd0V4G0jE555.jpg"); + path.add("group2/M02/3C/7C/wKgfWWVnet2AWihSAACd0V4G0jE663.jpg"); + path.add("group1/M02/80/E4/wKgfWWVneumAENkbAACd0V4G0jE570.jpg"); + path.add("group1/M01/80/E6/wKgfWWVne2WAIFABAACd0V4G0jE036.jpg"); + path.add("group1/M02/80/E6/wKgfWWVne3KAcPkHAACd0V4G0jE807.jpg"); + path.add("group1/M01/80/E8/wKgfWWVne_OAaf_XAACd0V4G0jE109.jpg"); + path.add("group1/M00/80/E8/wKgfWWVne_-AXiQiAACd0V4G0jE423.jpg"); + path.add("group1/M01/80/EA/wKgfWWVnfMmAP6j6AACd0V4G0jE573.jpg"); + path.add("group1/M02/80/EA/wKgfWWVnfNOATljDAACd0V4G0jE370.jpg"); + path.add("group1/M02/80/EB/wKgfWWVnfVKAOKMbAACd0V4G0jE015.jpg"); + path.add("group1/M00/80/EC/wKgfWWVnfV-ANm8fAACd0V4G0jE056.jpg"); + path.add("group2/M02/3C/7E/wKgfWWVnfeGAT2wXAACd0V4G0jE199.jpg"); + path.add("group1/M01/80/EE/wKgfWWVnfe6AX_RYAACd0V4G0jE858.jpg"); + path.add("group1/M02/80/EF/wKgfWWVnfnCASbnMAACd0V4G0jE363.jpg"); + path.add("group1/M00/80/F0/wKgfWWVnfn2AV7o7AACd0V4G0jE222.jpg"); + path.add("group1/M01/80/F1/wKgfWWVnfv2AW34OAACd0V4G0jE442.jpg"); + path.add("group1/M02/80/F1/wKgfWWVnfwiABHMDAACd0V4G0jE090.jpg"); + path.add("group2/M01/3C/7F/wKgfWWVnf4mAQfklAACd0V4G0jE942.jpg"); + path.add("group1/M02/80/F3/wKgfWWVnf5WAYOAUAACd0V4G0jE185.jpg"); + path.add("group1/M02/80/F5/wKgfWWVngFmALbJzAACd0V4G0jE430.jpg"); + path.add("group1/M01/80/F6/wKgfWWVngGSAGPJcAACd0V4G0jE952.jpg"); + path.add("group1/M01/80/F7/wKgfWWVngOmAbh8TAACd0V4G0jE021.jpg"); + path.add("group1/M02/80/F7/wKgfWWVngPaATqEGAACd0V4G0jE484.jpg"); + path.add("group1/M00/80/F8/wKgfWWVngXGAbdQbAACd0V4G0jE600.jpg"); + path.add("group1/M00/80/F8/wKgfWWVngXyAMGPgAACd0V4G0jE636.jpg"); + path.add("group1/M02/80/FA/wKgfWWVngf2AddKGAACd0V4G0jE859.jpg"); + path.add("group1/M02/80/FA/wKgfWWVnggqAKAcbAACd0V4G0jE887.jpg"); + path.add("group1/M01/80/FC/wKgfWWVngouAfjYhAACd0V4G0jE100.jpg"); + path.add("group1/M01/80/FC/wKgfWWVngpeAGeQeAACd0V4G0jE068.jpg"); + path.add("group1/M01/80/FE/wKgfWWVngxqAC3nLAACd0V4G0jE676.jpg"); + path.add("group1/M01/80/FE/wKgfWWVngyaAUSIfAACd0V4G0jE256.jpg"); + path.add("group1/M02/81/00/wKgfWWVng-2AEWWmAACd0V4G0jE466.jpg"); + path.add("group1/M00/81/00/wKgfWWVng_OAZAfDAACd0V4G0jE670.jpg"); + path.add("group2/M01/3C/83/wKgfWWVnhHOAG9z4AACd0V4G0jE616.jpg"); + path.add("group1/M02/81/02/wKgfWWVnhIGAHkIAAACd0V4G0jE477.jpg"); + path.add("group1/M02/81/05/wKgfWWVnhQWATGyPAACd0V4G0jE232.jpg"); + path.add("group1/M02/81/05/wKgfWWVnhROAElc7AACd0V4G0jE355.jpg"); + path.add("group1/M01/81/06/wKgfWWVnhY6AWS8SAACd0V4G0jE818.jpg"); + path.add("group2/M01/3C/86/wKgfWWVnhZuAaN0eAACd0V4G0jE410.jpg"); + path.add("group1/M01/81/09/wKgfWWVnhhmAH6pAAACd0V4G0jE761.jpg"); + path.add("group1/M02/81/09/wKgfWWVnhiWAErmEAACd0V4G0jE056.jpg"); + path.add("group2/M00/3C/87/wKgfWWVnhqeAXeVLAACd0V4G0jE402.jpg"); + path.add("group2/M00/3C/87/wKgfWWVnhrSAHBasAACd0V4G0jE865.jpg"); + path.add("group2/M01/3C/88/wKgfWWVnh3uACd3-AACd0V4G0jE057.jpg"); + path.add("group2/M02/3C/89/wKgfWWVnh4OAH-OdAACd0V4G0jE524.jpg"); + path.add("group1/M02/81/12/wKgfWWVniAKADyv4AACd0V4G0jE686.jpg"); + path.add("group1/M00/81/12/wKgfWWVniBCAG_Y9AACd0V4G0jE785.jpg"); + path.add("group1/M01/81/16/wKgfWWVniI-ARiV-AACd0V4G0jE525.jpg"); + path.add("group1/M00/81/16/wKgfWWVniJ2AcEhKAACd0V4G0jE490.jpg"); + path.add("group2/M00/3C/8B/wKgfWWVniSKAXrokAACd0V4G0jE092.jpg"); + path.add("group2/M01/3C/8C/wKgfWWVniSuAE9pAAACd0V4G0jE056.jpg"); + path.add("group1/M01/81/1F/wKgfWWVniayAZG2nAACd0V4G0jE944.jpg"); + path.add("group1/M02/81/1F/wKgfWWVnibSAZk1KAACd0V4G0jE415.jpg"); + path.add("group1/M01/81/22/wKgfWWVnijSAbdUIAACd0V4G0jE636.jpg"); + path.add("group1/M01/81/23/wKgfWWVnikaAcPWCAACd0V4G0jE327.jpg"); + path.add("group1/M01/81/29/wKgfWWVniwiANA4mAACd0V4G0jE897.jpg"); + path.add("group1/M02/81/2A/wKgfWWVnixiARFIQAACd0V4G0jE932.jpg"); + path.add("group2/M00/3C/90/wKgfWWVni5mASHTcAACd0V4G0jE266.jpg"); + path.add("group2/M00/3C/90/wKgfWWVni6GAXTjqAACd0V4G0jE706.jpg"); + path.add("group1/M02/81/31/wKgfWWVnjCOAV9xjAACd0V4G0jE787.jpg"); + path.add("group1/M00/81/31/wKgfWWVnjCuAfN7oAACd0V4G0jE647.jpg"); + path.add("group2/M00/3C/93/wKgfWWVnjLCAZ4XSAACd0V4G0jE286.jpg"); + path.add("group1/M00/81/34/wKgfWWVnjL2AUvYUAACd0V4G0jE118.jpg"); + path.add("group1/M00/81/39/wKgfWWVnjT-AZx5SAACd0V4G0jE485.jpg"); + path.add("group1/M00/81/39/wKgfWWVnjUeAfybwAACd0V4G0jE819.jpg"); + path.add("group1/M02/81/3D/wKgfWWVnjciAP8hlAACd0V4G0jE161.jpg"); + path.add("group2/M02/3C/95/wKgfWWVnjdeAedT1AACd0V4G0jE113.jpg"); + path.add("group2/M01/3C/97/wKgfWWVnjpeAZRo2AACd0V4G0jE626.jpg"); + path.add("group2/M01/3C/98/wKgfWWVnjqaASDVcAACd0V4G0jE629.jpg"); + path.add("group1/M02/81/47/wKgfWWVnjyqAc3XnAACd0V4G0jE766.jpg"); + path.add("group1/M02/81/47/wKgfWWVnjzKAI7bmAACd0V4G0jE752.jpg"); + path.add("group1/M02/81/4B/wKgfWWVnj7CAL1_yAACd0V4G0jE789.jpg"); + path.add("group1/M02/81/4B/wKgfWWVnj8CAA-YxAACd0V4G0jE671.jpg"); + path.add("group1/M01/81/50/wKgfWWVnkD-AD3sGAACd0V4G0jE220.jpg"); + path.add("group1/M01/81/50/wKgfWWVnkE6AWOuHAACd0V4G0jE596.jpg"); + path.add("group1/M01/81/53/wKgfWWVnkM2AGUPGAACd0V4G0jE319.jpg"); + path.add("group1/M00/81/54/wKgfWWVnkNWAGs2AAACd0V4G0jE303.jpg"); + path.add("group1/M00/81/57/wKgfWWVnkVmAeSU5AACd0V4G0jE989.jpg"); + path.add("group1/M02/81/57/wKgfWWVnkWGAVArtAACd0V4G0jE827.jpg"); + path.add("group1/M00/81/5D/wKgfWWVnkiyAK0TxAACd0V4G0jE594.jpg"); + path.add("group1/M02/81/5D/wKgfWWVnkjyABFj3AACd0V4G0jE847.jpg"); + path.add("group1/M00/81/61/wKgfWWVnkraAYa6cAACd0V4G0jE278.jpg"); + path.add("group1/M01/81/62/wKgfWWVnkteATskSAACd0V4G0jE462.jpg"); + path.add("group2/M00/3C/A8/wKgfWWVnk-SACYEDAACd0V4G0jE391.jpg"); + path.add("group1/M01/81/69/wKgfWWVnlAeAdEQCAACd0V4G0jE207.jpg"); + path.add("group1/M00/81/6F/wKgfWWVnlRGAeBzMAACd0V4G0jE267.jpg"); + path.add("group2/M01/3C/AE/wKgfWWVnlTGAMGlqAACd0V4G0jE486.jpg"); + path.add("group2/M00/3C/B5/wKgfWWVnloyAXK6DAACd0V4G0jE272.jpg"); + path.add("group2/M02/3C/B6/wKgfWWVnlqiAahirAACd0V4G0jE720.jpg"); + path.add("group2/M00/3C/BE/wKgfWWVnl7aAfMjbAACd0V4G0jE178.jpg"); + path.add("group1/M00/81/7E/wKgfWWVnl9iALS-iAACd0V4G0jE759.jpg"); + path.add("group1/M02/81/83/wKgfWWVnmOuAL7v2AACd0V4G0jE314.jpg"); + path.add("group1/M02/81/84/wKgfWWVnmQuAcWmUAACd0V4G0jE418.jpg"); + path.add("group1/M01/81/8A/wKgfWWVnmmGAHT5GAACd0V4G0jE936.jpg"); + path.add("group2/M02/3C/D1/wKgfWWVnmn-APB3xAACd0V4G0jE179.jpg"); + path.add("group2/M01/3C/D8/wKgfWWVnm5iAXQXgAACd0V4G0jE375.jpg"); + path.add("group1/M01/81/91/wKgfWWVnm7eANoT7AACd0V4G0jE684.jpg"); + path.add("group1/M00/81/96/wKgfWWVnnMSAEJVMAACd0V4G0jE359.jpg"); + path.add("group2/M02/3C/E2/wKgfWWVnnOaAReCnAACd0V4G0jE477.jpg"); + path.add("group2/M02/3C/EC/wKgfWWVnnjyAJ7y_AACd0V4G0jE880.jpg"); + path.add("group1/M02/81/9D/wKgfWWVnnmOACwB2AACd0V4G0jE993.jpg"); + path.add("group2/M01/3C/F4/wKgfWWVnn2uAXIUKAACd0V4G0jE104.jpg"); + path.add("group1/M01/81/A2/wKgfWWVnn46APKY-AACd0V4G0jE638.jpg"); + path.add("group2/M02/3C/FD/wKgfWWVnoJmAKcnuAACd0V4G0jE957.jpg"); + path.add("group1/M02/81/A8/wKgfWWVnoL2AM8-cAACd0V4G0jE735.jpg"); + path.add("group1/M02/81/AD/wKgfWWVnohCAZzCJAACd0V4G0jE496.jpg"); + path.add("group2/M02/3D/0A/wKgfWWVnoi-AWkpbAACd0V4G0jE833.jpg"); + path.add("group1/M01/81/B5/wKgfWWVnoz-AanCUAACd0V4G0jE317.jpg"); + path.add("group1/M00/81/B6/wKgfWWVno2GAKIrjAACd0V4G0jE886.jpg"); + path.add("group2/M02/3D/15/wKgfWWVnpHCATWI-AACd0V4G0jE174.jpg"); + path.add("group2/M01/3D/16/wKgfWWVnpJCAdFJwAACd0V4G0jE465.jpg"); + path.add("group2/M00/3D/1F/wKgfWWVnpeSACQC1AACd0V4G0jE651.jpg"); + path.add("group2/M01/3D/20/wKgfWWVnpgmABr5pAACd0V4G0jE120.jpg"); + path.add("group2/M01/3D/28/wKgfWWVnpxSAaYVpAACd0V4G0jE537.jpg"); + path.add("group2/M02/3D/29/wKgfWWVnpzSAL6WnAACd0V4G0jE822.jpg"); + path.add("group2/M00/3D/30/wKgfWWVnqEeAHXsAAACd0V4G0jE416.jpg"); + path.add("group1/M00/81/D2/wKgfWWVnqGaARpHgAACd0V4G0jE577.jpg"); + path.add("group1/M00/81/DA/wKgfWWVnqcCANBOKAACd0V4G0jE104.jpg"); + path.add("group1/M01/81/DB/wKgfWWVnqeSAQGvcAACd0V4G0jE071.jpg"); + path.add("group2/M02/3D/40/wKgfWWVnquqATw3FAACd0V4G0jE785.jpg"); + path.add("group1/M01/81/E2/wKgfWWVnqxCAanMgAACd0V4G0jE167.jpg"); + path.add("group2/M01/3D/46/wKgfWWVnrCKAcsvDAACd0V4G0jE508.jpg"); + path.add("group1/M01/81/EA/wKgfWWVnrD-AE70JAACd0V4G0jE918.jpg"); + path.add("group2/M02/3D/4F/wKgfWWVnrZiANL23AACd0V4G0jE295.jpg"); + path.add("group2/M01/3D/50/wKgfWWVnrbeAO9P0AACd0V4G0jE919.jpg"); + path.add("group1/M00/81/F8/wKgfWWVnrsSAWcOhAACd0V4G0jE713.jpg"); + path.add("group2/M00/3D/59/wKgfWWVnruaABLidAACd0V4G0jE988.jpg"); + path.add("group1/M01/81/FE/wKgfWWVnr_WAAAwvAACd0V4G0jE764.jpg"); + path.add("group2/M02/3D/62/wKgfWWVnsBSACOxOAACd0V4G0jE323.jpg"); + path.add("group1/M00/82/04/wKgfWWVnsWuAZmgCAACd0V4G0jE245.jpg"); + path.add("group1/M00/82/05/wKgfWWVnsYqAW94EAACd0V4G0jE061.jpg"); + path.add("group2/M01/3D/72/wKgfWWVnsp-ARiiVAACd0V4G0jE699.jpg"); + path.add("group1/M01/82/0C/wKgfWWVnsr6AHanmAACd0V4G0jE558.jpg"); + path.add("group2/M01/3D/7B/wKgfWWVns8mAbUN4AACd0V4G0jE152.jpg"); + path.add("group1/M02/82/12/wKgfWWVns-yAcEBmAACd0V4G0jE404.jpg"); + path.add("group1/M00/82/19/wKgfWWVntUGAPfu5AACd0V4G0jE036.jpg"); + path.add("group1/M00/82/1A/wKgfWWVntV-AReeYAACd0V4G0jE290.jpg"); + path.add("group2/M01/3D/8D/wKgfWWVntnOAAR_ZAACd0V4G0jE375.jpg"); + path.add("group2/M02/3D/8D/wKgfWWVntpKATBVbAACd0V4G0jE181.jpg"); + path.add("group2/M02/3D/95/wKgfWWVnt6GAcRzGAACd0V4G0jE373.jpg"); + path.add("group2/M01/3D/95/wKgfWWVnt8KAW3UiAACd0V4G0jE899.jpg"); + path.add("group1/M00/82/2C/wKgfWWVnuReAXaI4AACd0V4G0jE303.jpg"); + path.add("group2/M02/3D/A0/wKgfWWVnuTaAMxhlAACd0V4G0jE034.jpg"); + path.add("group1/M01/82/33/wKgfWWVnukiAU9KCAACd0V4G0jE926.jpg"); + path.add("group2/M02/3D/A7/wKgfWWVnumeAcLX1AACd0V4G0jE746.jpg"); + path.add("group2/M02/3D/AE/wKgfWWVnu3mAZsPNAACd0V4G0jE300.jpg"); + path.add("group2/M02/3D/AF/wKgfWWVnu5uAX1XIAACd0V4G0jE576.jpg"); + path.add("group2/M02/3D/B7/wKgfWWVnvPaAcQRDAACd0V4G0jE601.jpg"); + path.add("group1/M02/82/43/wKgfWWVnvROAOIJFAACd0V4G0jE096.jpg"); + path.add("group2/M00/3D/C0/wKgfWWVnvieAVI_kAACd0V4G0jE447.jpg"); + path.add("group1/M01/82/49/wKgfWWVnvkeACfcGAACd0V4G0jE423.jpg"); + path.add("group2/M02/3D/C8/wKgfWWVnv1qAOKgcAACd0V4G0jE044.jpg"); + path.add("group1/M00/82/4F/wKgfWWVnv3aABGNyAACd0V4G0jE684.jpg"); + path.add("group2/M01/3D/D3/wKgfWWVnwM6AB5m3AACd0V4G0jE386.jpg"); + path.add("group2/M02/3D/D4/wKgfWWVnwPSARSLYAACd0V4G0jE031.jpg"); + path.add("group1/M02/82/5B/wKgfWWVnwfuAde_FAACd0V4G0jE223.jpg"); + path.add("group1/M00/82/5B/wKgfWWVnwhuAek5NAACd0V4G0jE071.jpg"); + path.add("group2/M01/3D/E4/wKgfWWVnwymAQB6JAACd0V4G0jE863.jpg"); + path.add("group2/M00/3D/E5/wKgfWWVnw02ATeFQAACd0V4G0jE576.jpg"); + path.add("group1/M02/82/68/wKgfWWVnxKCAD1k_AACd0V4G0jE139.jpg"); + path.add("group1/M02/82/68/wKgfWWVnxL2AKfVwAACd0V4G0jE914.jpg"); + path.add("group2/M00/3D/F7/wKgfWWVnxc6APYjtAACd0V4G0jE457.jpg"); + path.add("group1/M00/82/6E/wKgfWWVnxe-ADaqGAACd0V4G0jE519.jpg"); + path.add("group2/M02/3E/00/wKgfWWVnxvyAbbqHAACd0V4G0jE454.jpg"); + path.add("group2/M01/3E/01/wKgfWWVnxx6AOvJKAACd0V4G0jE621.jpg"); + path.add("group2/M02/3E/0B/wKgfWWVnyHiAC7x1AACd0V4G0jE726.jpg"); + path.add("group2/M00/3E/0C/wKgfWWVnyJWAXMOuAACd0V4G0jE922.jpg"); + path.add("group2/M00/3E/13/wKgfWWVnyaGAfqzHAACd0V4G0jE599.jpg"); + path.add("group2/M01/3E/14/wKgfWWVnycSAACLKAACd0V4G0jE824.jpg"); + path.add("group2/M00/3E/1C/wKgfWWVnytOAWLrPAACd0V4G0jE060.jpg"); + path.add("group2/M00/3E/1C/wKgfWWVnyvWABKz1AACd0V4G0jE427.jpg"); + path.add("group1/M00/82/8D/wKgfWWVnzEyAAuGTAACd0V4G0jE122.jpg"); + path.add("group2/M01/3E/27/wKgfWWVnzGmATd6bAACd0V4G0jE273.jpg"); + path.add("group2/M02/3E/2E/wKgfWWVnzX2AclqGAACd0V4G0jE403.jpg"); + path.add("group2/M02/3E/2F/wKgfWWVnzZ2AFzuIAACd0V4G0jE963.jpg"); + path.add("group1/M01/82/99/wKgfWWVnzq-AYBtCAACd0V4G0jE234.jpg"); + path.add("group1/M01/82/99/wKgfWWVnztOAK6MYAACd0V4G0jE652.jpg"); + path.add("group2/M01/3E/41/wKgfWWVn0C-AXngMAACd0V4G0jE512.jpg"); + path.add("group2/M01/3E/42/wKgfWWVn0EqAOnS4AACd0V4G0jE701.jpg"); + path.add("group2/M02/3E/49/wKgfWWVn0V2AALiiAACd0V4G0jE221.jpg"); + path.add("group1/M02/82/A6/wKgfWWVn0XuAZW30AACd0V4G0jE832.jpg"); + path.add("group2/M01/3E/52/wKgfWWVn0o2ATsr8AACd0V4G0jE052.jpg"); + path.add("group1/M02/82/AC/wKgfWWVn0quARQV-AACd0V4G0jE679.jpg"); + path.add("group2/M02/3E/5C/wKgfWWVn1AeAMGqaAACd0V4G0jE205.jpg"); + path.add("group2/M02/3E/5D/wKgfWWVn1CGAfsKnAACd0V4G0jE989.jpg"); + path.add("group1/M00/82/B8/wKgfWWVn1TWAMLxeAACd0V4G0jE741.jpg"); + path.add("group2/M00/3E/66/wKgfWWVn1VWAEibrAACd0V4G0jE379.jpg"); + path.add("group2/M00/3E/6E/wKgfWWVn1mKAGBoGAACd0V4G0jE591.jpg"); + path.add("group2/M02/3E/6E/wKgfWWVn1oSAHo_vAACd0V4G0jE100.jpg"); + path.add("group2/M02/3E/79/wKgfWWVn19SAXCoNAACd0V4G0jE564.jpg"); + path.add("group1/M00/82/C5/wKgfWWVn1_qAVlbrAACd0V4G0jE296.jpg"); + path.add("group1/M02/82/CB/wKgfWWVn2QmAdOMOAACd0V4G0jE362.jpg"); + path.add("group1/M01/82/CB/wKgfWWVn2SaAGeUEAACd0V4G0jE676.jpg"); + path.add("group1/M01/82/D0/wKgfWWVn2jOAMqRnAACd0V4G0jE707.jpg"); + path.add("group2/M01/3E/8B/wKgfWWVn2lOAd0iEAACd0V4G0jE206.jpg"); + path.add("group2/M02/3E/95/wKgfWWVn262AbA-nAACd0V4G0jE567.jpg"); + path.add("group1/M02/82/D8/wKgfWWVn29GAC2mhAACd0V4G0jE774.jpg"); + path.add("group2/M00/3E/9E/wKgfWWVn3OSAbh9NAACd0V4G0jE941.jpg"); + path.add("group2/M00/3E/9E/wKgfWWVn3P2AP48nAACd0V4G0jE798.jpg"); + path.add("group1/M00/82/E3/wKgfWWVn3hOAOpPWAACd0V4G0jE876.jpg"); + path.add("group1/M02/82/E4/wKgfWWVn3jCAQ-MlAACd0V4G0jE894.jpg"); + path.add("group1/M00/82/E9/wKgfWWVn34WAaiIbAACd0V4G0jE226.jpg"); + path.add("group2/M00/3E/B3/wKgfWWVn36WAddR4AACd0V4G0jE024.jpg"); + path.add("group1/M01/82/EF/wKgfWWVn4LuAQ71yAACd0V4G0jE988.jpg"); + path.add("group1/M00/82/EF/wKgfWWVn4NyAMR77AACd0V4G0jE294.jpg"); + path.add("group1/M02/82/F5/wKgfWWVn4e-ASqUSAACd0V4G0jE194.jpg"); + path.add("group1/M02/82/F5/wKgfWWVn4g-AEoCCAACd0V4G0jE508.jpg"); + path.add("group1/M02/82/FB/wKgfWWVn42KAKzArAACd0V4G0jE749.jpg"); + path.add("group1/M00/82/FC/wKgfWWVn44GAP9RyAACd0V4G0jE339.jpg"); + path.add("group2/M01/3E/D6/wKgfWWVn5JCAK3dMAACd0V4G0jE588.jpg"); + path.add("group2/M01/3E/D7/wKgfWWVn5LSAdnLLAACd0V4G0jE800.jpg"); + path.add("group2/M00/3E/DF/wKgfWWVn5b-ADZ01AACd0V4G0jE241.jpg"); + path.add("group1/M01/83/07/wKgfWWVn5d6AWLA1AACd0V4G0jE095.jpg"); + path.add("group2/M00/3E/EA/wKgfWWVn5zKAIhxZAACd0V4G0jE609.jpg"); + path.add("group1/M00/83/0D/wKgfWWVn51KADwZdAACd0V4G0jE674.jpg"); + path.add("group1/M01/83/12/wKgfWWVn6GKAdMCBAACd0V4G0jE339.jpg"); + path.add("group2/M02/3E/F3/wKgfWWVn6IKAadMvAACd0V4G0jE109.jpg"); + path.add("group1/M00/83/18/wKgfWWVn6ZGARAZeAACd0V4G0jE572.jpg"); + path.add("group2/M01/3E/FC/wKgfWWVn6bOAMLrrAACd0V4G0jE072.jpg"); + path.add("group1/M00/83/1F/wKgfWWVn6wiAct9yAACd0V4G0jE706.jpg"); + path.add("group2/M01/3F/06/wKgfWWVn6yaAJWhhAACd0V4G0jE560.jpg"); + path.add("group2/M01/3F/0E/wKgfWWVn7DqAFehlAACd0V4G0jE151.jpg"); + path.add("group2/M00/3F/0F/wKgfWWVn7FWATjqfAACd0V4G0jE126.jpg"); + path.add("group2/M02/3F/18/wKgfWWVn7W2AUNMfAACd0V4G0jE779.jpg"); + path.add("group1/M02/83/2A/wKgfWWVn7Y-AGJDUAACd0V4G0jE116.jpg"); + path.add("group2/M01/3F/23/wKgfWWVn7uOAVhg5AACd0V4G0jE486.jpg"); + path.add("group1/M01/83/30/wKgfWWVn7wSAJLhfAACd0V4G0jE230.jpg"); + path.add("group2/M00/3F/2C/wKgfWWVn8BaATxa4AACd0V4G0jE514.jpg"); + path.add("group1/M00/83/36/wKgfWWVn8DOABsyiAACd0V4G0jE094.jpg"); + path.add("group1/M01/83/3B/wKgfWWVn8UyAHVLSAACd0V4G0jE036.jpg"); + path.add("group2/M02/3F/36/wKgfWWVn8WuAS0e8AACd0V4G0jE767.jpg"); + path.add("group2/M02/3F/41/wKgfWWVn8r6AaAdzAACd0V4G0jE655.jpg"); + path.add("group2/M00/3F/41/wKgfWWVn8uCAa0AZAACd0V4G0jE387.jpg"); + path.add("group2/M02/3F/4A/wKgfWWVn8_SARWKaAACd0V4G0jE781.jpg"); + path.add("group2/M01/3F/4B/wKgfWWVn9BKAQf5WAACd0V4G0jE326.jpg"); + path.add("group1/M02/83/4C/wKgfWWVn9SaATkpsAACd0V4G0jE180.jpg"); + path.add("group1/M00/83/4C/wKgfWWVn9UyAEz4nAACd0V4G0jE176.jpg"); + path.add("group2/M00/3F/5F/wKgfWWVn9pmAD6R6AACd0V4G0jE549.jpg"); + path.add("group2/M02/3F/60/wKgfWWVn9riAXw8KAACd0V4G0jE226.jpg"); + path.add("group1/M02/83/57/wKgfWWVn98mAKPgjAACd0V4G0jE056.jpg"); + path.add("group2/M02/3F/69/wKgfWWVn9-mAYUMNAACd0V4G0jE835.jpg"); + path.add("group1/M00/83/5C/wKgfWWVn-PWASsf-AACd0V4G0jE073.jpg"); + path.add("group2/M02/3F/72/wKgfWWVn-RSAIEDZAACd0V4G0jE371.jpg"); + path.add("group2/M01/3F/7B/wKgfWWVn-mmAb-4ZAACd0V4G0jE137.jpg"); + path.add("group2/M00/3F/7C/wKgfWWVn-pKACOaXAACd0V4G0jE789.jpg"); + path.add("group2/M01/3F/84/wKgfWWVn-52ABLsCAACd0V4G0jE291.jpg"); + path.add("group2/M00/3F/85/wKgfWWVn-7-AA3d_AACd0V4G0jE620.jpg"); + path.add("group1/M01/83/6E/wKgfWWVn_NCAIoGYAACd0V4G0jE075.jpg"); + path.add("group2/M02/3F/8E/wKgfWWVn_OuAI-PaAACd0V4G0jE074.jpg"); + path.add("group2/M01/3F/98/wKgfWWVn_kuAV6HvAACd0V4G0jE589.jpg"); + path.add("group2/M02/3F/99/wKgfWWVn_m6AfNo5AACd0V4G0jE788.jpg"); + path.add("group2/M01/3F/A1/wKgfWWVn_4GADM-8AACd0V4G0jE439.jpg"); + path.add("group1/M01/83/7A/wKgfWWVn_6CAMw88AACd0V4G0jE809.jpg"); + path.add("group2/M01/3F/AB/wKgfWWVoAKyAGzOyAACd0V4G0jE164.jpg"); + path.add("group2/M00/3F/AC/wKgfWWVoAM2AAIOaAACd0V4G0jE262.jpg"); + path.add("group1/M00/83/85/wKgfWWVoAi2AGVv8AACd0V4G0jE850.jpg"); + path.add("group2/M01/3F/B6/wKgfWWVoAlCAJXq2AACd0V4G0jE664.jpg"); + path.add("group1/M00/83/8A/wKgfWWVoA2OAdheYAACd0V4G0jE500.jpg"); + path.add("group2/M02/3F/BF/wKgfWWVoA4SAaTfJAACd0V4G0jE779.jpg"); + path.add("group1/M00/83/90/wKgfWWVoBJSAfomVAACd0V4G0jE989.jpg"); + path.add("group2/M01/3F/C9/wKgfWWVoBLOAJ-t9AACd0V4G0jE336.jpg"); + path.add("group2/M00/3F/D1/wKgfWWVoBhGAJmnuAACd0V4G0jE483.jpg"); + path.add("group1/M02/83/95/wKgfWWVoBjCAIKWeAACd0V4G0jE009.jpg"); + path.add("group2/M02/3F/DA/wKgfWWVoB0qARqTkAACd0V4G0jE769.jpg"); + path.add("group1/M01/83/9B/wKgfWWVoB2yAMckBAACd0V4G0jE148.jpg"); + path.add("group2/M00/3F/E5/wKgfWWVoCIGAbd7CAACd0V4G0jE092.jpg"); + path.add("group2/M01/3F/E6/wKgfWWVoCKSAEYvgAACd0V4G0jE616.jpg"); + path.add("group1/M00/83/A5/wKgfWWVoCfeAHNfuAACd0V4G0jE632.jpg"); + path.add("group2/M02/3F/EF/wKgfWWVoChqATgskAACd0V4G0jE157.jpg"); + path.add("group1/M02/83/A9/wKgfWWVoCyyALKTlAACd0V4G0jE356.jpg"); + path.add("group2/M02/3F/F6/wKgfWWVoC0uAMlkwAACd0V4G0jE037.jpg"); + path.add("group1/M01/83/AD/wKgfWWVoDGGACtxgAACd0V4G0jE814.jpg"); + path.add("group2/M00/3F/FD/wKgfWWVoDHuAPcB7AACd0V4G0jE266.jpg"); + path.add("group1/M01/83/B1/wKgfWWVoDeKAOuOSAACd0V4G0jE273.jpg"); + path.add("group2/M01/40/04/wKgfWWVoDe-AH_0kAACd0V4G0jE203.jpg"); + path.add("group1/M00/83/B2/wKgfWWVoDnCAfbdlAACd0V4G0jE947.jpg"); + path.add("group1/M00/83/B2/wKgfWWVoDnqAd78hAACd0V4G0jE871.jpg"); + path.add("group1/M00/83/B2/wKgfWWVoDwSAbdw-AACd0V4G0jE809.jpg"); + path.add("group1/M00/83/B3/wKgfWWVoDxGAEaUrAACd0V4G0jE060.jpg"); + } + + @Autowired + Download download; + + @PostMapping("/download") + public ResponseEntity downloadFile(PictureExportDTO pictureExportDTO) throws IOException { + // 模拟文件内容 + File file = new File("D:\\AIVFO\\soft\\linux\\依赖环境\\soft.zip"); + // 创建一个InputStream用于包装文件内容 + InputStreamResource inputStreamResource = new InputStreamResource(Files.newInputStream(file.toPath())); + + // 设置响应头 + HttpHeaders headers = new HttpHeaders(); + headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=sample.zip"); + // 返回ResponseEntity,将InputStreamResource和响应头整合在一起 + return ResponseEntity + .ok() + .headers(headers) + .contentType(MediaType.APPLICATION_OCTET_STREAM) + .body(inputStreamResource); + } + +// @PostMapping("/download2") +// public ResponseEntity downloadFile2(@RequestParam String inputData) throws Exception { +// // 创建一个InputStream用于包装输入数据 +// InputStream inputStream = new ByteArrayInputStream(inputData.getBytes()); +// +// // 设置响应头 +// HttpHeaders headers = new HttpHeaders(); +// headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=data.txt"); +// +// // 使用StreamingResponseBody将输入数据传输到响应体 +// StreamingResponseBody responseBody = outputStream -> { +// try (ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream)) { +// AtomicReference skip = new AtomicReference<>(false); +// for (int i = 0; i < path.size(); i++) { +// if (skip.get()) { +// return; +// } +// zipOutputStream.putNextEntry(new ZipEntry(path.get(i))); +// dfsClient.downloadFile(path.get(i), (data, dataSize) -> { +// try { +// if (ObjectUtils.isNotNull(zipOutputStream)) { +// zipOutputStream.write(data, 0, dataSize); +// } +// } catch (IOException e) { +//// e.printStackTrace(); +// skip.set(true); +// return 0; +// } +// return 0; +// }); +// zipOutputStream.flush(); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } finally { +// outputStream.close(); +// } +// }; +// // 返回ResponseEntity,将StreamingResponseBody和响应头整合在一起 +// return ResponseEntity +// .ok() +// .headers(headers) +// .contentType(MediaType.APPLICATION_OCTET_STREAM) +// .body(responseBody); +// } + + + @PostMapping("/download3") + public void downloadFile(HttpServletResponse response) throws Exception { + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); + response.setHeader("Content-Disposition", "attachment; filename=example.txt"); + download.test(response, path); + } + +} diff --git a/spring-boot/spring-boot-wxrobot/src/main/java/com/wyl/spring/wxrobot/controller/RobotMessage.java b/spring-boot/spring-boot-wxrobot/src/main/java/com/wyl/spring/wxrobot/controller/RobotMessage.java deleted file mode 100644 index 21d2214..0000000 --- a/spring-boot/spring-boot-wxrobot/src/main/java/com/wyl/spring/wxrobot/controller/RobotMessage.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.wyl.spring.wxrobot.controller; - -import com.alibaba.fastjson.JSONObject; -import com.wyl.spring.wxrobot.entity.param.WxRobotMessageParam; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @author: wangyl - * @date: 2023/2/6 - * @description: - */ -@RestController -@RequestMapping("/") -@Slf4j -@RequiredArgsConstructor(onConstructor = @__(@Autowired)) -public class RobotMessage { - - @PostMapping("/getMessageData") - public String getMessageData(@RequestBody WxRobotMessageParam skuListPageReq) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("code", 200); - jsonObject.put("message", "成功"); - jsonObject.put("data", "123"); - System.out.println(jsonObject.toJSONString()); - return jsonObject.toJSONString(); - } -} diff --git a/spring-boot/spring-boot-wxrobot/src/main/java/com/wyl/spring/wxrobot/entity/param/PictureExportDTO.java b/spring-boot/spring-boot-wxrobot/src/main/java/com/wyl/spring/wxrobot/entity/param/PictureExportDTO.java new file mode 100644 index 0000000..162064d --- /dev/null +++ b/spring-boot/spring-boot-wxrobot/src/main/java/com/wyl/spring/wxrobot/entity/param/PictureExportDTO.java @@ -0,0 +1,21 @@ +package com.wyl.spring.wxrobot.entity.param; + +import lombok.Data; + +import java.util.List; + +/** + * 选中图片导出 + * + * @author Lbq + * @date 2023/7/12 15:57 + */ +@Data +public class PictureExportDTO { + + private String tlSn; + private Integer houseSn; + private List ids; + private Integer pictureLayer; + +} diff --git a/spring-boot/spring-boot-wxrobot/src/main/resources/application.properties b/spring-boot/spring-boot-wxrobot/src/main/resources/application.properties index a7d5980..a30b555 100644 --- a/spring-boot/spring-boot-wxrobot/src/main/resources/application.properties +++ b/spring-boot/spring-boot-wxrobot/src/main/resources/application.properties @@ -1 +1,9 @@ -server.port=65006 \ No newline at end of file +server.port=65006 +aivfo.dfs.fastdfs.enable=true +aivfo.dfs.fastdfs.trackerServers=192.168.31.89:22122,192.168.31.89:22123 +aivfo.dfs.fastdfs.storagePath.group1[0]=/mnt/data01/image/group1/storaged01 +aivfo.dfs.fastdfs.storagePath.group1[1]=/mnt/data01/image/group1/storaged02 +aivfo.dfs.fastdfs.storagePath.group1[2]=/mnt/data01/image/group1/storaged03 +aivfo.dfs.fastdfs.storagePath.group2[0]=/mnt/data01/image/group1/storaged01 +aivfo.dfs.fastdfs.storagePath.group2[1]=/mnt/data01/image/group1/storaged02 +aivfo.dfs.fastdfs.storagePath.group2[2]=/mnt/data01/image/group1/storaged03 \ No newline at end of file