java递归

时间:2023-03-08 16:58:33
 package com.sun.test;

 import java.util.ArrayList;
import java.util.List; /**
* 递归
*
*/
public class Recursion { private String id;
private String name;
private Recursion parent;// 父单元格对象
private List<Recursion> children = new ArrayList<Recursion>();// 子单元格集合 public Recursion() {
} public Recursion(String id) {
this.id = id;
} /**
* 获得所有节点的id
* @param r
* @param rs
*/
public static void getIds(Recursion r , List<String> rs) {
if (r.getChildren() != null && r.getChildren().size() > 0) {
rs.add(r.getId());
for (Recursion recursion : r.getChildren()) {
getIds(recursion, rs);
}
} else {
rs.add(r.getId());
}
} public static List<String> getIds(Recursion r) {
List<String> rs = new ArrayList<>();
if (r.getChildren() != null && r.getChildren().size() > 0) {
rs.add(r.getId());
for (Recursion recursion : r.getChildren()) {
rs.addAll(getIds(recursion));
}
} else {
rs.add(r.getId());
}
return rs;
} /**
* 某个对象的子的最大宽度,也就是某个对象他最后一级的孩子节点的个数
* @return
*/
public int getRowNum() {
int rowNum = children.size();
for (Recursion hc : children) {
if (hc.getRowNum() > 0) {
rowNum += hc.getRowNum() - 1;
}
}
return rowNum;
} public static void main(String[] args) {
Recursion r = new Recursion("r");
Recursion r1 = new Recursion("r1");
Recursion r2 = new Recursion("r2");
Recursion r1_1 = new Recursion("r1_1");
Recursion r1_2 = new Recursion("r1_2");
Recursion r1_3 = new Recursion("r1_3");
Recursion r2_1 = new Recursion("r2_1");
Recursion r2_2 = new Recursion("r2_2");
Recursion r1_1_1 = new Recursion("r1_1_1");
Recursion r1_1_2 = new Recursion("r1_1_2");
Recursion r2_1_1 = new Recursion("r2_1_1");
Recursion r2_1_2 = new Recursion("r2_1_2");
Recursion r2_1_3 = new Recursion("r2_1_3");
r.getChildren().add(r1);
r.getChildren().add(r2);
r1.getChildren().add(r1_1);
r1.getChildren().add(r1_2);
r1.getChildren().add(r1_3);
r1_1.getChildren().add(r1_1_1);
r1_1.getChildren().add(r1_1_2);
r2.getChildren().add(r2_1);
r2.getChildren().add(r2_2);
r2_1.getChildren().add(r2_1_1);
r2_1.getChildren().add(r2_1_2);
r2_1.getChildren().add(r2_1_3); List<String> rs = new ArrayList<>();
getIds(r, rs);
for (String string : rs) {
System.out.println(string);
}
System.out.println("--------------------------");
List<String> rs1 = getIds(r);
for (String string : rs1) {
System.out.println(string);
}
System.out.println("--------------------------");
System.out.println(r.getRowNum());
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Recursion getParent() {
return parent;
} public void setParent(Recursion parent) {
this.parent = parent;
} public List<Recursion> getChildren() {
return children;
} public void setChildren(List<Recursion> children) {
this.children = children;
} }

测试类结果为

 r
r1
r1_1
r1_1_1
r1_1_2
r1_2
r1_3
r2
r2_1
r2_1_1
r2_1_2
r2_1_3
r2_2
--------------------------
r
r1
r1_1
r1_1_1
r1_1_2
r1_2
r1_3
r2
r2_1
r2_1_1
r2_1_2
r2_1_3
r2_2
--------------------------
8

这里我会画出递归的流程,这样递归就显而易见了

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAvQAAAHLCAIAAAAoepukAAAgAElEQVR4nOy9XWzk1nn/f2J3/RZ3ySJ1HDj2ctAUaWJbJgOnsLfSmgME6Q/IFplBEwewDITTpBfeXJQj9GKVm3K6BaQCrjHTFtVNUHDaQkDcGwqFUqNXFCDspihaEJD2SjeEVCAvbQCqtuOXxDb/F88u/wxnhnNmhuR8z8x5Lgyt/IjnMw8Peb5zznOew+JcOz8/L9vh7Oxs7gynp6f5DtVgCBGKsVcAwUBgAMEQggEEA+Eh5fFZklDwxAohFAgMIBggDP/wD//AEDjwGUAwhGAAwUBgAMEQggEEA4EBBEMIBhAMBAYQDBCGv/u7v5PihosBBEMIBhAMBAYQDCEYQDAQGEAwhGAAwUBgAMEAYej1elLccDGAYAjBAIKBwACCIQQDCAYCAwiGEAwgGAgMIBggDK+++qoUN3HMsXhcDYYQoZAjOv8VQDCEYODxQUjykKFIDKFngmAgMIBggDD85V/+pRQ3XAwgGEIwgGAgMIBgCMEAgoHAAIIhBAMIBgIDCAYIw/b2thQ3XAwgGEIwgGAgMIBgCMEAgoHAAIIhBAMIBgIDCAYIw40bN6S44WIAwRCCAQQDgQEEQwgGEAwEBhAMIRhAMBAYQDBAGCDEjRCLx9VgCBEKOaLzXwEEQwgGEAyEh5THZ0lCIUd0fgcQDBCGv/qrv2LnuXZ2dla2w/HxMT4DCIYQDCAYCAwgGEIwgGAgMIBgCMEAgoHAAIKBwHBycrK1tTX/mRsQoZfvAIIhBAMIBgIDCIYQDCAYCAwgGEIwgGAgMIBggDBIccPLAIIhBAMIBgIDCIYQDCAYCAwgGEIwgGAgMIBggDBIcXPHZJ2bxGSdmwIZQDCEYODxQUjykKFIDKFngmAgMIBggDBIccPLAIIhBAMIBgIDCIYQDCAYCAwgGEIwgGAgMIBggDBIccPLAIIhBAMIBgIDCIYQDCAYCAwgGEIwgGAgMIBggDBAbAUHiUW+AwiGEAwgGAgMIBhCMIBgIDCAYAjBAIKBwACCAcIAIW6EWDyuBkOIUMgRnf8KIBhCMIBgIDykPD5LEgo5ovM7gGCAMMiDM3kZQDCEYADBQGAAwRCCAQQDgQEEQwgGEAwEBhAMEAaZc8PLAIIhBAMIBgIDCIYQDCAYCAwgGEIwgGAgMIBggDBIccPLAIIhBAMIBgIDCIYQDCAYCAwgGEIwgGAgMIBggDBsbW3J4xfOz8/Pb9++ne9QDYYQoZBnDvBfAQRDCAYen9k7pwxFgQ4IPRMEA4EBBAOBQR6/MAEDCIYQDCAYCAwgGEIwgGAgMIBgCMEAgoHAAIIBwiDFDS8DCIYQDCAYCAwgGEIwgGAgMIBgCMEAgoHAAIIBwgCxFRwkFvkOIBhCMIBgIDCAYAjBAIKBwACCIQQDCAYCAwgGCAOEuEEolgAiboQIhRzR+a8AgiEEAwgGwkPK47MkoZAjOr8DCAYIg6xzw8sAgiEEAwgGAgMIhhAMIBgIDCAYQjCAYCAwgGCAMMicG14GEAwhGEAwEBhAMIRgAMFAYADBEIIBBAOBAQQDhEGKG14GEAwhGEAwEBhAMIRgAMFAYADBEIIBBAOBAQQDhEGKmzs2dvG4GgwhQiFHdP4rgGAIwcDjg5DkIUORGELPBMFAYADBAGGQ4oaXAQRDCAYQDAQGEAwhGEAwEBhAMIRgAMFAYADBAGGQ4oaXAQRDCAYQDAQGEAwhGEAwEBhAMIRgAMFAYADBAGG4ceOGPH6BiwEEQwgGEAwEBhAMIRhAMBAYQDCEYADBQGAAwUBgODk5kXVu7hjIzI0QoRh7BRAMBAYQDCEYQDAQHlIenyUJBU+sEEKBwACCAcIg69zwMoBgCMEAgoHAAIIhBAMIBgIDCIYQDCAYCAwgGCAMMueGlwEEQwgGEAwEBhAMIRhAMBAYQDCEYADBQGAAwQBhkOKGlwEEQwgGEAwEBhAMIRhAMBAYQDCEYADBQGAAwQBhkOLmjsk6N4nJOjcFMoBgCMHA44OQ5CFDkRhCzwTBQGAAwQBhkOKGlwEEQwgGEAwEBhAMIRhAMBAYQDCEYADBQGAAwQBhkOKGlwEEQwgGEAwEBhAMIRhAMBAYQDCEYADBQGAAwQBhgNgKDhKLfAcQDCEYQDAQGEAwhGAAwUBgAMEQggEEA4EBBAOEAULcCLF4XA2GEKGQIzr/FUAwhGAAwUB4SHl8liQUckTndwDBAGGQdW54GUAwhGAAwUBgAMEQggEEA4EBBEMIBhAMBAYQDBCGra0tdpZrt2/fLtvh1q1b+AwgGEIwgGAgMIBgCMEAgoHAAIIhBAMIBgIDCAYCw/HxsUwo5mUAwRCCAQQDgQEEQwgGEAwEBhAMIRhAMBAYQDBAGKS4uWNnss7NXRsbCjmi818BBEMIBh6f2TunDEWBDgg9EwQDgQEEA4RBihteBhAMIRhAMBAYQDCEYADBQGAAwRCCAQQDgQEEA4RBihteBhAMIRhAMBAYQDCEYADBQGAAwRCCAQQDgQEEA4QBYis4SCzyHUAwhGAAwUBgAMEQggEEA4EBBEMIBhAMBAYQDBAGCHEjxOJxNRhChEKO6PxXAMEQggEEA+Eh5fFZklDIEZ3fAQQDhEHWueFlAMEQggEEA4EBBEMIBhAMBAYQDCEYQDAQGEAwQBhkzg0vAwiGEAwgGAgMIBhCMIBgIDCAYAjBAIKBwACCAcIgxQ0vAwiGEAwgGAgMIBhCMIBgIDCAYAjBAIKBwACCAcIgxc0dk3VuEpN1bgpkAMEQgoHHByHJQ4YiMYSeCYKBwACCAcKwtbXFznPt7OysbIfj42N8BhAMIRhAMBAYQDCEYADBQGAAwRCCAQQDgQEEA4Hh5OREztzwMoBgCMEAgoHAAIIhBAMIBgIDCIYQDCAYCAwgGCAMEFvBQWKR7wCCIQQDCAYCAwiGEAwgGAgMIBhCMIBgIDCAYIAwQIgbIRaPq8EQIhRyROe/AgiGEAwgGAgPKY/PkoRCjuj8DiAYIAyyzg0vAwiGEAwgGAgMIBhCMIBgIDCAYAjBAIKBwACCAcIgc254GUAwhGAAwUBgAMEQggEEA4EBBEMIBhAMBAYQDBAGKW54GUAwhGAAwUBgAMEQggEEA4EBBEMIBhAMBAYQDBAGKW7umKxzk5isc1MgAwiGEAw8PghJHjIUiSH0TBAMBAYQDBAGKW54GUAwhGAAwUBgAMEQggEEA4EBBEMIBhAMBAYQDBAGKW54GUAwhGAAwUBgAMEQggEEA4EBBEMIBhAMBAYQDBAGiK3gILHIdwDBEIIBBAOBAQRDCAYQDAQGEAwhGEAwEBhAMEAYbty4Mf/jF27fvj13BpDjF4QIhTxzgP8KIBhCMIBgIDykPD5LEgp55gC/AwgGAsPJyYmsc8PLAIIhBAMIBgIDCIYQDCAYCAwgGEIwgGAgMIBggDDInBteBhAMIRhAMBAYQDCEYADBQGAAwRCCAQQDgQEEA4RBihteBhAMIRhAMBAYQDCEYADBQGAAwRCCAQQDgQEEA4RBips7JuvcJCbr3BTIAIIhBAOPz5IUd+HxWZJQyBGd3wEEA4RBihteBhAMIRhAMBAYQDCEYADBQGAAwRCCAQQDgQEEA4RBihteBhAMIRhAMBAYQDCEYADBQGAAwRCCAQQDgQEEA4RB1rnhZQDBEIIBBAOBAQRDCAYQDAQGEAwhGEAwEBhAMEAYIMSNEIvH1WAIEQo5ovNfAQRDCAYQDISHlMdnSUIhR3R+BxAMEAZZ54aXAQRDCAYQDAQGEAwhGEAwEBhAMIRgAMFAYADBAGGQOTe8DCAYQjCAYCAwgGAIwQCCgcAAgiEEAwgGAgMIBgjD1tbW/I9fqKZa89HR0bVr166MsOeff37U/0rs937v98p2GIshBMMUGNvb26enp9X3inwHefzCLAynp6f7+/ubm5ubm5vXrl2jO37t2jX6zf7+fuaOl4RRuIM8iQKKAQQDgQEEA4Hh5ORkWWZuDg8PGWONRsN1XV8amHW7XV3Xa7Vaxb2igp4JglElQxiGvV6vXq8zxnRdN03Ttm0nZbZtm6ap6zpjrNls9nq9MAw5MRCSPEBmbpYkFDyxQsBAYADBAGFYFnHzyiuvNBqNfB9pc7Qoihhjvu8nvwF5Qma8AghGNQxhGDabzeRbRCJZRlkYht1ut9FoMMZarVYYhgsTihkdQDCEYADBQGAAwQBhWBZxs7a25rpuvo+0+Zppmo7jJP8EeUJmvAIIRtkMURS9/PLLjDHLsqIoyr/UoIVhaFkWY+w73/lO/p/jh6KQJkAwhGAAwUBgAMEAYYDYCl6NuEnPCkgDNCluysMolcH3fVVVv/nNb46dqsm3MAy/+tWvqqoaBMEUGGRC9Aopbgp0AMFAYADBAGGAEDcVLB7niBvf91utVl3avO3Tn/705z73ueSfq6urzWaz3++X1yukuJmdwXVdRVEKnBZ1XZcxNuqCCKGQdW4SQ8j7iTFCgcAAggHCsCx1bkaJG3o1NxoNRxqe2bataZplWSX1CiluZmRotVqKouRMtExnQRAoitJutzkx0iZEr1gYcYPAAIKBwACCAcKwRDk3Q8UNbeXI/1tpczTP8xgb3kWF6JkgGGUwtFotXdenyLDhsTAMdV0ffDYxQ1F4EyAYQjCAYCAwgGCAMCy7uMns0JEGaKPukRA9EwSjcIZut6soSknKhiwMw8EFL8BQlNEECIYQDCAYCAwgGCAMUtxIcYNuUtyAvCySnz3PK2M1atCCIGCMpRtCSPIAETdLEgo5ovM7gGCAMEhxM1Lc9Pt9mWiMYIqifPGLX0z/ptVqeZ4nRM8EwSiQIQxDVVUrK6zguq6qqskUEVQoymsCBEMIBhAMBAYQDBCGra0tdpZrt2/fLtvh1q1bZTfx3HPPTSRubNtWFMWyrHnn1EobYpZlXbx48fr162V3m9l7JghGgQxf//rXv/nNb+a/WYq1r371q9/61rcAQ1FeEyAYQjCAYCAwgGAgMBwfH0NsBQecuWGMeZ6Xf01pc7Rut/vMM8/k+yD0TBCMohjCMGSMzVjPZlJLN4oTilKbAMEQggEEA4EBBAOEAULcnM2vzs1QcUMr/fkXlDZfowEv3wfhKQXBKIqhXq87qUKLlZllWVQRACEUFbyveHyWJBRyROd3AMEAYVj2OjdDxY3v+1Lc4JsUNwU2wcNA5Wf4d0g5jsMGzDCMVqs1aTIyHT0WhiFIKMpuAgRDCAYQDAQGEAwQBplQLMWNqCbFTYFN8DBQtlO+W9pI3GQS1yzLUhRlimXfRqPR7XZBQlF2EyAYQjCAYCAwgGCAMEhxI8WNqCbFTYFN8DAYhjHRJikSN6OWfWu1Gv+l4jh2Xdc0TZBQlN0ECIYQDCAYCAwgGCAMUtxIcSOqSXFTYBNjHW7evMkYm6hq3yhxE8exaZqTPmKUZXX79u18t8V4X/H4IOS7IPRMEAwEBhAMEAYpbqS4EdWkuCmwibEOr732mmma+T4ZyxE3mqbpuj7R1eI41nX9e9/7Xr7PYryvQDCEYADBQGAAwQBhkOJGihtRTYqbApsY67CxsTFRwk08QtxEUdRqtRhjU+y6Mk1zY2Mj32cx3lcgGEIwgGAgMIBggDBAbAWX4kbaFCbFTYFN8IibSeUIiRvDMJLS0rVajfZMNRqNKc6lchxHipsqMYRgAMFAYADBAGGAEDdodW6kuBHCpLgpsImxDpcvX55O3KR3S+m6njkratILfuMb30j+GUXRwcFBv9/vdDqtVovU0mK8r3h8EHoFQt5PjBEKBAYQDBAGWedGihtRTYqbApsY5RAEwd7eXqfT+cxnPjPp5u3BZSnaJ9VsNie6TmLdbveRRx55/PHHL126RDNAFy5cUFWVMfbggw/mf5DEhLgdIBhCMIBgIDCAYIAwbG1tsfNcOzs7K9vh+Pi47CYuX74sxc2CGWOld93ZeyYIxqQOOzs7V69eVRRFUZS1tbW1tbVLly6NOmJ2lA3NubFte+qzTVzXvf/++wcLAzLGVlZWSgrFoFVwO0AwhGAAwUBgAMFAYDg5OZEJxYssbnzf73Q6ZZ8EFIZhp9MptYmhJmduCmyCHKIo6nQ6qqpqmtbtdtPrR1MvSw0mFGualj7oe6ILfuMb33Bd99FHH33ggQcy+qbVavm+vxjvKxAMIRhAMBAYQDBAGKS4WWRxk7MXt5CL0w+c4YqiKDOezQgmxU2BTZyfn/d6PVVVTdMcel/++I//uBBxE9/tMFMsTqUTih3HefDBB2ki5+Mf//if//mf27atKMoTTzzR7/dzLiLE7eDxQch3QRjGQDAQGEAwQBikuFlkcVOqJSGicNVTltSxjaIoXXffNM0gCBqNBv2GpgcODg4oLXTSPFMpbopqIgiClZUVTdNy5ObGxoZt2/mtZIxqCg+9rbZtm6Y56ZxiZis49a4HHnjg/vvvT8h3dnY0TavVaqMkDv7twMEQggEEA4EBBAOEQYqbgsXN4Pt66r0hU7TFaWORwjAcu2qQETd+ytJgyc/dbpe++ie14Gh4oz8xTXPSsVOKm0KacF1XVdVXXnkl/wqO40xaxK9wMwxjsIhfGIbpAjz0SV3XJYkz+HSD3w4oDCEYQDAQGEAwQBggtoKLLm5M0zRNkwaJZADwfT+p6kEJAWm5QKXMaKOHqqpJzgrVmM/M/zPG0oKA2kp+mVRFIzMMI8nWzKwLhGFYr9fTnmmVQ+3SpyCHer2eI3Ey4maUW3LaouM4RKJpGs3cmKYZRREJKU3TJk3CkOJm9iZarZaiKDypKlMcv1Cs0cHgx8fH+W7pD9LtdhVFaTababWNfDvQMIRgAMFAYADBAGGAEDei17khwUFjNl2NrqDrOk1j0Eu2Xq+TfxRFhmEoiuJ5XhAE3W6XMZbMW/CIm3RbjUaDLhVFES36JB8qI25qtVri6fs+FR1J3vukZojZ933LsgZJ4jgOgoAWkhhj9EOv10t+Thv5k2CKU+JG13VyoA9FzN1ulz/gCXC+A8JTCoIx6ECdUNd1zvIwp6enuq5Pt8upEHNdV9f1SUMRRZFlWenvD0K8r3h8EIYQhLyfGCMUCAwgGCAMss5NMeKGMZY+MJkER/prLs21UFukZtLjRKPRSKZhxoqbTFuMsUajkfbvdrskWdLihgDSjdIsUTKlT7M1aeZ0u4lRtkTadF1XFMUcMPJPNE2SY5HoJ5q5CYKA0nHkzE15GINDvmEYlmUlMedhsG170hMYCjRSwNOFgqS8YRhhGALeDlgMIRhAMBAYQDBAGGTOTWHiJnPZjCxIrzflHIlMTWfEDUmHUW3RVE2v1xsUB2lxQzMxGQdd15MrDzKbpqmq6lDOOJWXQzJllJtlWbT4lcgXXdd7vZ5t26RyaMrK8zyZc1MeRtohDENSNpMyBEEw3Rbu2S2KIlVVgyCYJRS2bauquru7O/UVyKS4gWIAwUBgAMEAYZDipixxM9SmEzeGYeSImyAI6Je0rtRut5OVprS4GdpoWr6kl8ZGtZU2XddpAikjbhqNRnp+KMmwodkp+i85JLuOXddtt9vTzdzkZFUj9EwQjMSBBMrgBAwng2maUxx4Obsl6cwzhsJ13YsXL7bb7amvMDsDjwMIhhAMIBgIDCAYIAxS3JQlbpLFl8FtRJOKm8yylK7rg39IuTs0i0PfcWM+caNpWtJKpt30/82YZVnJWlha3Hiel0kNTouPZIkqjuMoivr9frvdNk2z2+3mbEIeZaTn/uIv/mKUA0LPBMEgh1HKhp/B9/3qJ29o1pM60uxJHoeHh7qu5yTLI7yveHwQ8l0QhjEQDAQGEAwQBnn8QiniJr2QNGhUgT6jACgDlw7fyRc3OUtFcRx7npfMwaTFzWCjcRzXarX0stTgzM3QT2FZFiWi0tU8z0tSgxNdNdRoUsf3/W6363lesjk8juMpxkvG2NWrV3d3d8vrNuDHL/ziF7/44IMPPvjgg/fff/+DYfbmm28mTRweHiqKsrm5OSPD1atXJ11AnNEsy1pfX88PBf8HOTs7Oz09XV9fVxRlf39/llDMwpDvAIIhBAMIBgIDCAYCgzx+oSxxQwku6UkL3/eTlRfSH+n9QeRP/zeTIJze9T3YVhiGmZ2udIVk93XyAelDpTORM7NEQ3NuBsVNt9tNtthQ+jN9FpqzSV8/bUEQeJ6X/GEQBLT1hmahgiAwDGPSyRuZc8Nvp6eno+ZsJmWgeZQpZtqmM8/zFEVJeniB7wrXdRVFGTw5BOF9BYIhBAMIBgIDCAYIA8RW8MUTN2EYKoqiqmq/36fyu6qqppeTaAKm0+kcHBxQlZrk2zAJHfpf7XZb13VN00aJmyiKqKFer0f7q5vNZrIrKrMVXNf1xJOQ0lu6OMVNPDDLQmdLKYoyOGcTRRGtbZHooat5nmdZFpXvs22bpnOmm7nJd0DomdVgxHHsum69Xh86pxJF0crKSv5Gp4kYqBhSedUpE6O5wHQKV7HviiAINE3LLFEhvK9AMIRgAMFAYADBAGGAEDei17mh3dGZX0ZR1Gg0NE1jjCmKYtt2poifZVmKojDGKOU284c0I9JoNKIosm07GbQG20pfinJ9ksEgU/+eLkXlbTRNS+8EjuPYHKgRnG53qCXnLGYulbb0yEQwQRBEUUSnNFAVnJw/zzEpbsiiKCJFO3TrPu36fumll4plsG3bMIxSk2+iKKrVapkCSIOhyJxZ9v777yc/B0HQ7/czkGmHOI7fe++9f/3Xf/2nf/qn//3f/x3qEKeOUSN766238skHrzCpQyzIEIKQ9xNjhAKBAQQDhEHWuZFnS01snud1Oh0qdkxzMDx/FYYhLbfRdA4l39CwQQsE+XtYBk2KGzJFUehYqEFx8+abb9Ku7zIYGo1GefomqcQzFsP3/eRULNu2kwPOaGue4zgJIU1k5tiotbYC3wZDi1UOnikbY7w2hWAAwUBgAMEAYZA5N1LcTGyNRsO2bf6siyiKut1urVZzXZfqNScFcpLvxDynWWVMihuyZN5rUNy8/PLLpA/KYKApxswhHoVYEAS1Wm3oOtrQUFCR6zhVXGCoUUmCUf8352+LehtQvUr6gaYtk2rgg6IH4bUpBAMIBgIDCAYIgxQ3UtxUZINxDsNw6rM/YyluBmxQ3Kyvr5fNQJXxCswv9jxPVdVRKmTozE3yM7i4cRwnDMMgCCjhLIEZmtmG8NoUggEEA4EBBAOEQYobKW5ENSluMjZ0WaoCBtrQN0UZxozREbCKoozacxcPS/KgNLJ0Bam0pROfE3GTcUt+Waq4odw4AqbCTtRu5lTzxITId0EYxkAwEBhAMEAYpLiR4kZUk+ImY0MTiqthCMNwbW2NNgBOIXGSzPT19fX8ybyhGK7rUuY7CZSkjGTmtPm0uEme+kRk5IsbzuycHLNt23Vd13VpBc33ffqh2+0mWyPRNm0JwQCCgcAAggHCIMWNFDeimhQ3GZujuKErUK3qWq3WarX29vby/eM4jqJob2+v1WqpqkraYkYMuki326UUlsw61CziJqfFeq4l+w0dx/E8z3EcmknyfZ9qQ1BmfVqTkSG8NoVgAMFAYADBAGGA2AouxY20KUyKm4zNXdzQD0EQ2LZNRRDq9Xqn0+l0OkkdJvpnu92m3Xa6rtu2nawcTYFB8oI0BNVtiqKICiJk5EIZ4sYfZ+lsa8qmp59ptimZpqKC3ekrI7w2hWAAwUBgAMEAYbhx48b8j1+4fft22U2UevyCtLkYY6V3XfDjFz744INMQDLi5q233iqbIecKR0dH29vbm5ub165dW1tbu3z58tra2tra2rVr1zY3N7e3t4+OjmbEeO+992iqhj64oij0wSkNKPNop8WNYRg0s2IYRjU5N8k+Qc/zwjCkrVKJoEmXeirvjhTuUMGrW545wO8AgoHAcHJyIuvcSHEjqsmZm4yBzNxM7TA1Bi2HJeksVHfYsqyk/g1ZIm6oJAH9kjYuxeWLG6rVmdS0JFTaP5XeOZUYwh0RggEEA4EBBAOEYYlybnq93uDvpbgR16S4ydiSixs6x6PVammaluS1aJqWnNQ2363gycRMFEVJwRuqbDm0QjfCHRGCAQQDgQEEA4RhWcTN9va2pmm1Wq3dbqe3Y0hxI65JcRPfPVKKjHY+J/+sjKGoJqbDoFNXNU2jRzspEZlY8rw7jtNqtQ5GWM7RrUW9DaIo6vf7tGcqoTJNs9lsSnEztQMIBgIDCAYIw7KIG3KgIxspz5EOnZHiRlyT4uaDDz6g48OGWjUMBTbB4zNY3EXTNDp4lU5YG9yvpKoqeTqOY5qmM8LSa1j5pzTkzJDlmGVZdLYaFeyO4ziKIto8ZVmWYRiZ/WVThCJji/TqxsdAYADBAGFYLnFDFkWR67p0RLYUN+LakoubIAj+8z//c2zrpTIU28R0GJk5jyAIRu1Xon+OunJ6NqUMIwUW3y2pTNnECbzneY1GI42HcEeEYADBQGAAwQBhWEZxk1gQBFLciGvLLG6CIFBV9cc//vHY1stjKLyJQjAWxhDuiBAMIBgIDCAYIAzLUudmlANjbLDWuxQ3QtjSihtSNjlnFFTAUEYThWAsjCHcESEYQDAQGEAwQBggxM0cF49pnd4wjF6vl0wRS3EjhC2nuJlC2RTOUFIThWAsjCHcEeRXd9oQQoHAAIIBwrAsdW5yHCgF5/Lly4yxZrO5t7cnxY0QtoTiJgzDKZRNsQzlNVEIxsIYwh0RggEEA4EBBAOEYalzbjIMVDZU07SHH35Yiht8WzZxE0WRYRjJWUUTGUIoqhE3b731VtkOOalOP/rRjxzHefbZZzudzo9+9KOpm4gx7ogQDCAYCAwgGCAMW1tb7CzXbt++XbbDrVu3oBj+7M/+TIobfGOs9K47e88sEOP//b//9/zzz6d///777+eH6Cc/+UmxDLNcoZBYob0rhtq//du/ff3rX2eMbWxsHB8fT9FEIRgIoaiAAQQDgQEEA4Hh+PhYzn+7200AACAASURBVNzcsbPU4jEtS5W6L1QgC4KAqpz1er1Oyvb29gYroVUJtlQzN47j6Lo+WOqN7MMPP6yAoewmeHzOAJI8OEMRBAGdkZ4cucDfBI+PQKEo1QEEA4EBBAOEQYqbIQxUE51ScPr9fv4fLpiFYbi3t9fpdJrNpmEYVLJM1/V0dbjV1dXBknHpEmeGYVDdVZJBBwcH6bORi7LlETevv/46YywnhovxkIJgFMvgui6VFkx/WVrOUJTkAIKBwACCAcIgxc1IBirlrmmaqqqtVquM4RnEgiDo9XqtVqtWqzHGnnzyScuy6NTiodNX+cGkKmo7OztU+DUtfer1ervd7vf7hczxLIm4iaLo8ccfT46PLqMJHgcpbqZmoOrJqqomUzhLG4oyHEAwEBhAMEAYILaCg8Ri1P+i+uiKotRqtV6vtxgqhwRNs9lUVVVRFCpLT/UMSxrRgyBwXZfkjqIopHVoXme6j7Ak4qbZbD7//POlNsHjIMXNjAye5ymK0mq1eJooD6NYBwQGEAwEBhAMEAYIcSPE4nEcxzs7O41Gg1ROu90WTuXQuX3JDE2j0eh2u4OfopoR/ejoyHVdy7I0TZtO6CyDuPF9X1GU4+Pj8prgdJDiJrGp31dhGOq6bhgGz9tmsUNRoEOMEQoEBhAMEAZZ54aXIX0ROoCTVE6r1cqceIdmBwcH7XabEmh0XX/llVdyTtiJ5zGih2GYCB1aBOQJ6cKLmyiKarWa67pCPCDLI25mZLAs69KlS2O/Gi1DKApxAMFAYADBAGGQOTe8DEMv4nmebdtTzz2UZ8mqE2NM0zTLslzXpb024CN6EAQUUlVVKaF71BahhRc3tIRXCAZCKKS4SWx7e1tV1Xx9syShkCN6gQ4gGCAMUtzwMuRfhOYeXn755bTQ2dvbq3I/eSYveNSqE/iIntgbb7xB+5+TytEZh8UWN2EYJjukhHhApLiZqAnXdfP1zfKEYkYHEAwEBhAMEAYpbu7Y2MVj/laSRRYamFVVJa1T1C6hxKIoOjg46HQ69XpdVVXGmGma169fz191mj0U1YibpFcklaNVVU2nOi22uKnX647jFIWBEIpCYoWQ5FFUKPL1zVKFYhYHEAwEBhAMEAYpbngZpm7F933XdW3bTheDqdVq9Xo9qQQztCBeejkmXUmv3W4nakbTtMwMDcLtKAnD9/30QacLLG4ojzjpAEI8IHLmZoomHMep1WpDF16XLRRTO4BgIDCAYIAwbG1tsfNcOzs7K9vh+PgYn6FAjMPDw/39/d3d3c3Nzc3NzbW7duXKlSeeeIKNMEVR1tbWLl++vLm5ubOzs7+/XxLk7LejVIzT09OdnZ21tTXGSu+68wrF2tra5uZmgRgIoSgkVosXivX19ZWVlbljTOeAwACCgcAAgoHAcHJyArEVHETo5TuAYAjBUA3G0dHR3BnKCEVm2qYQDIRQFBKrhQyFruuD56EuZyimcADBQGAAwQBhgBA3QiweV4MhRChAxM2ihiKdbVMUBkIoFkbcFP6QhmGoKEomVW45QzGFQ4wRCgQGEAwQBlnnhpcBBEMIBhAMBIZJMQanbQrBQAjFwoibMhi63W4m+WZpQzGpAwgGAgMIBgiDTCjmZQDBEIIBBAOBYVIMOtWrcAyEUEhxk+9gmmZ6cWqZQzGRAwgGAgMIBgiDFDe8DCAYQjCAYCAwTIRBtW0GayMtRiikuMl3yNz9ZQ7FRA4gGAgMIBggDFLc3LEC69zM4iBEKKS44b/CRBi2bVuWVQYGQigKiRVCkkd5obAsK+kASx4KfgcQDAQGEAwQBilueBlAMIRgAMFAYJgIQ1XVoQUYFyMUcuZmrEN68mbJQ8HvAIKBwACCAcIgxQ0vAwiGEAwgGAgM/Bie52maVhIGQiikuOFxsCyLMm9kKDgdQDAQGEAwQBggtoKDxCLfAQRDCAYQDAQGfoxkVCsDAyEUUtzwOARBoKrq3DE4HRAYQDAQGEAwQBggxI0Qi8fVYAgRCilu+K/AjzE0lbgoDIRQLIy4Kfsh1TTNdV0ZCk6HGCMUCAwgGCAMr776qjx+gYsBBEMIBhAMBAZOjN3d3UuXLpWHgRAKefwCp8P29vbVq1fnjsHjgMAAgoHAAIKBwHByciJzbngZQDCEYADBQGDgxMhZkyoEAyEUhcRqGUIRBAGdmzZfDB4HBAYQDAQGEAwQBilueBlAMIRgAMFAYODEqNVqQ/dJFYWBEAopbvgdNE3b39+fOwZCKOSIzu8AggHCIMXNHZN1bhKTdW4KZODxOTw8ZCzvMVyMUBQSK4QkjwpCYVnW9evX832WJBRyROd3AMEAYZDihpcBBEMIBhAMBIZ8n09/+tOGYTz11FOapvV6vYODg6E5xYsRCjlzw+/Q7XZXV1fnjoEQCjmi8zuAYIAwSHHDywCCIQQDCAYCQ77PZz7zGXbXHnzwQcaYLOI3dwwEBjo/de4YCKGQIzq/AwgGCAPEVnCQWOQ7gGAIwQCCgcCQ7/PSSy+xlD333HMlYSCEQoobfoc4jhljmcPhq8dACIUc0fkdQDBAGCDEjRCLx9VgCBEKKW74r5Dv4zgOTdgwxu67775ROcWLEYqFETcVPKRxHF+8eDEnxzxemlDIEZ3fAQQDhOHVV1+dv7gBiUW+AwiGEAwgGAgM+T6+7yfi5rOf/Wx5GAihWBhxU00oVldX8cUNAgMIBgIDCAYIg8y54WUAwRCCAQQDgSHfJ4oiUjb333+/67rlYSCEQoobfoc4jldXVx3HmS8GQijkiM7vAIIBwiDFDS8DCIYQDCAYCAxjfVRVZYw9+uijpWIghEKKG36HWIobbgcQDAQGEAwQhq2tLXn8wvn5+fnt27fzHarBECIU8vgF/iuM9VlZWWGM7ezslIqBEIpCus3snVOUULTb7c3NzRyHJQmFPHOA3wEEA4FBHr8wAQMIhhAMIBgIDEN9Dg4O9vb2Op1Op9O5dOnSxz72MfqZSt0M7pFZjFAU0m0WOxQHBwf9fp86w5NPPvnMM8/Qz/1+/+DgoDIMfgcEBhAMBAYQDBAGKW54GUAwhGAAwUBgSHyiKOr3+61WS1VVRVFM0zRN00mZZVmmaeq6zhir1+u9Xi8p6LcYoZDiZqhDGIb9fr/ZbDLGNE0zTbPRaKQ7RqPRME1T0zTGWLPZ7Pf71DEWLxTTOYBgIDCAYIAwQGwFB4lFvgMIhhAMIBgIDHSRTqejqqqu647jBEGQ7x+GYbfbbTQapHLCMFyMUEhxk3EIw7DVajHGTNPsdrtjO0YQBN1ul+Rvq9W6efNmIRizOCDcDhAMBAYQDBAGCHGDUCwBRNwIEQopbvivQLLGNM2xQ9egRVFk2zZj7Bvf+MbQYxn4MRBCsTDiZvaHlPQuY8yyrPw7O9TCMLQsS1GUTqeTU+hPiFDIEb1ABxAMEAZZ54aXAQRDCAYQjPkyBEFgGIau6/nVSsZaGIbf/OY3VVXN2SsOHgpOBxCMshmCIJha72auY5qmqqqjroMfikIcQDAQGEAwQBhkzg0vAwiGEAwgGHNk8H1fVVXbtvP/nN88z6Nv6hNhFOggxU0hDK7rMsZydOqklnNB8FAU5QCCgcAAggHCIMUNLwMIhhAMIBjzYih8ACMLgkDTtFarNbgSARuKiRxAMMpjaLfbiqLMOJM3aHTKZrvd5sQo0AHhdoBgIDCAYIAwSHFzx8YuHleDIUQopLjJuYLruoqizLjiMMqiKNJ1vdlsjsUo3AFE3CAkeUwXCtu2dV0vqWMEQaDremamEDYUxTqAYCAwgGCAMEhxw8sAgiEEAwhG9QxBEDDGShrAyEjfLOQwBoJRnuSdIneY34IgUBQlPV+IGYrCHUAwEBhAMEAYpLjhZQDBEIIBBKNihjAM89N+i7JFHcZAMESUvGS+76cbAgxFGQ4gGAgMIBggDDdu3GBnuXb79u2yHW7duoXPAIIhBAMIRsUMTz/9dIEZxPlGw9gbb7yBGYrpHEAwimU4Pj7OKNFSjaaIjo+PAUNRkgMIBgIDCAYCw/Hxsaxzc8dAZm6ECIWcuRm8Qrfb1TQt37lYcxynXq9nMEaZELcDBKPYh9SyrEajke9frDUaDRLZaKEoySHG6BUIDCAYIAyyzg0vAwiGEAwgGJUxRFGkqmrhu2DyLYqiZOsNTihmcYjj+O233547RoGhCMOQMVZqqs2gJY1ChaI8BxAMBAYQDBAGmXPDywCCIQQDCEZlDI7jmKaZ71mGOY5jGEaMFIpZHHhMoF4Rx7FlWZZl5TuXYdQuVCjKcwDBQGAAwQBhkOKGlwEEQwgGEIxqGMZO2ziOwwbMMIxWqzU0yZT8HcfJb5pM0zTP80BCMaNDHMdBEAwef10xRlGhoDzinOMR+DsGnUKlqir51Ov1/PRkmrw5PDzk4ZzFAeF2gGAgMIBggDBIcXPHxi4eV4MhRCikuElfwfO8/GwbGsMsy8qcAa4oCmPM87zEMwxDwzDo95zixrbtxfiOHgRBrVajwVtV1V6vN9QNIcmDMxR0+mmOG2fHiKKIeoXrur7vU8owzdjlWKPR2N7e5uGcxQHhIQXBQGAAwQBhkOKGlwEEQwgGEIxqGCzLyt8kRWPY4NQOfbOv1WrJb0zTbDQaURTxixs65wEkFFM70OxXo9Gg9JRRESsbg9OBk8EwjPxNUpwdo9vtZkQwlcDOn7xxXXdtbY2HcxYHhNsBgoHAAIIBwiDFDS8DCIYQDCAY1TDUarX8VOKcodo0Tcb+/wcw8eEXN3EcK4oi+gIEhSi9guO67tA8XFF6BSnU/FRizo4RhmHGhwoB5Pc6WpnKWRSL4XsFpwMIBgIDCAYIA8RWcJBY5DuAYAjBAIJRAcPh4aGiKPk+OWOYpmm6rg/+fiJxY1nW9evX833Ab4emaZz7pYXoFefn567rDr2zaZuiY5DRzE2+cInj+JlnnsmfOgLvFZwOIBgIDCAYIAwQ4kaIdfRqMIQIhRQ3ie3v74/dJzV0DIuiqNVqjRIxE4kbx3HW19fzfZBvR7IM57puvV6v1+utVmvUnAdCr0g/pEM5z8/PHccZK9em6BhkpmnybMJqNBr5vWgx3lcxRq9AYADBAGGQdW54GUAwhGAAwaiAYXt7m1PcGIZRv2tJ5ixl2Az+yUTiptvtDmZXRFG0t7fXarXon8i3gxZZarVao9FwXbfb7eq6rqqqEMtSzz333Cc/+cl2u53OgCFxM/YOTtEx4ji2LEvX9bHTNnT9UQxFlUdCuB0gGAgMIBggDFtbW+w8187Ozsp2OD4+xmcAwRCCAQSjAoZ2uz32O/Tgphhd1/MTQicSN77vX758+fz8/PT0dHd399q1a7/1W7/FGLv//vsZY5WFYrom3nrrLZq5Sa/CUH1Cy7LeeeedajAmckgzrKysMMYuXLhw4cKFRx555Nq1a4eHh2dnZ1evXuUUN/wdI4qier3OqWzo+levXiXOw8PDnZ2dF198kfoGdQzYXjGRAwgGAgMIBgLDycmJTCjmZQDBEIIBBKMMhoO7tre31+l0VldXOcew9OoDbYdpNpuj/mRScXPhwoVf//VfZ4zdc889mbopnU6n0+l897vf7eTaWIeNjY0ZrzDU4e///u+Hfl7TNE3T/Jd/+ZdqMCZySDN86lOfSkf73nvvvffeex966KFHHnlk7HlSE3UM2hZnWRansonj2HXdT33qU4899hixPfjggwknScnFeEhBMBAYQDBAGKS4uWOyzk1iss4NWRiGr7/+eqfTaTabhmEkA4OZsscee2wKcRPHsW3bmf29aZtU3LDR9sADD6iq+thjj33uc5979tlnzRG2uro66n+RPf/88/kOY68w1OE73/lOPCyhmP7vq6++Wg3GRA5pho9//OOZgJO+vP/++0fd3Ck6BmUQT1rs2PO8++67b2iv+MQnPtHr9X7wgx/kXwH/IcXBQGAAwQBhkOKGlwEEQwgGEIwpHChVpd1uk5p58sknKSvT9/2hiwXXr18fexL4qLxRTdNUVZ0958b3/bW1tTAMHcd55JFHHnrooWQM+/znP09l31555RXTNBljqqo2m81+v59pd763w7btdCio7M3QsRztAaGFJBKRjLEvf/nL3W736OjINM3pVO9gxwjDkIoA5V9t6PUbjYbv+1/+8pcZYxcuXEjP3JimefHiRcZYvV7v9XqjMqPzm0C4HSAYCAwgGCAMUtzwMoBgCMEAgsHvEEVRv99vNpv03rdt2/O8KIrGMly/ft2cardUfHfGJVmDCMMwWeygIYd+Hru6kUko9jwvGcySRJbkk/q+n+R2NJvNhGq+tyMMQ6q6u7e3t7e3R8pSiITiZ599ljSN67qJHDmfJKF4bMcgt3a7nVkd41n2ShjCMHzppZcefPBBysSi35+fnwdBQJWUGWO1Wm0wMzq/CYTbAYKBwACCAcIAsRUcJBb5DiAYQjCAYPA4JKf26Lre7XYzA2ohW8Fd1zVNc+jEj23bpmlSo0EQDF0E4ZkZGtwKHoZht9tNJj8GQ0EzPYqi1Gq1fr8/99tBH58xpihKo9EYlVSL9oD4vj8490biZuwqEmfHcBxnuo4xuBU8iiLHcR599NFE3KT/r+d5dPhDrVbr9XpRFM29V/A4gGAgMIBggDBAiBuEYgkg4kaIUIgibj766KOc/0urObQrZ+qhdH9/P31+wlzMtu1Zivi5rqtp2qVLl/JzRCp4YfEYwnuT5yHtdrtjVW/Z9sILL4ya3SFBNuqTkupijF29ejW/DjLC+yrG6BUIDCAYIAyyzg0vAwiGEAw4GEPN9/16va4oyvb2dv7eEx4GRVHyT/kp22q12u7ubr7P2Fjt7OwoilKv1+dYPY/HRHlAeE4/KNV4zn/I/6RhGF6/fj2Z2xvqg3A7QDAQGEAwQBhkzg0vAwiGEAwVY0RR1Ol06vV6kjA76p0eBAHJGsdxipp1H1sHtlQLgkBRlEJ6RRRFlNg79ERuKW4mZdB1feyGqfLMdd2VlZV8H85Q0NyeqqqdTicj1xBuBwgGAgMIBgiDFDe8DCAYQjBUiRFFEeWfUjE0y7IoNTLzFiYBRKmU6cTP2Rlc1zUMI9+tPKNs0AJ7he/7mqY1m83qhzEeE+gBsW170s3bBZplWa+88kq+z0Sh8H3fNM2MxEG4HSAYCAwgGCAMUtzcMVnnJjGx6twM1gWhoiDpbAPf92u12mDyZiEMPPP/5ZlhGK7rFtsroihqNBq1Wi0dLhBxg5DkwRmKIAhGbfUv22gvfRlnxScSh6b3EN5XIBgIDCAYIAxS3PAygGAIwVAlhuu6gyVA0nViOp2Ooijdbrc8Bsuy5vIdndYLeNbXpnBwHEdV1UTfgIgbsR4Qnmo3ZRhtsCovFL7v67peq9Vee+21kprgd4hF6xXlOYBggDDIs6V4GUAwhGCoDOP9998f7NaUy0lqZmtra2Vl5fDwsDyG8/Pzo6OjuaQV12q1nZ2d9Ad566233h1mURQN/X2+w61bt/70T//01q1b77777k9+8pMprsDj8MuUZf753nvvvfvuu1PckVId+Bn29/ern7yhaZv9/f2yQ7Gzs/PYY4+trKzs7++X1ASPw7lovaI8BxAMBIaTkxOIreAgQi/fAQRDCIb5YtCyFK0T/eM//mM1DI7j1Ov1fOdirdvtapqWwYjjOIqiUaNpEASDtYmnsDkmUAv3gPAUpCnWLMuiucxqQkHVklqt1tB+VQFDLGCvKMkBBAOEAULcCLGOXg2GEKFAFjf0tZVzOCmQgQ6yHls0tiijfI6h9YUpI5j+l23b9btmmiZt7EoGISp9m2OjapwwNualwW9Dlwtz9BnCe3Oih5TmEfOrxRRoVN2YlH1loQjDsNFoDN1nJ0f0KhlAMEAYZJ0bXgYQDCEY5oURBIFhGPzpL8Uy0JHOFSxO0QaxtIDLfJAgCOi7u2maOcNq/hEBOX9blLgJgoBuVhAEruvSGV6+71uWNVT0xGI+IK7rprOXyjOSvInCrjgUpKoNw5joAAc5ohfoAIIBwiATinkZQDCEYJgLBg0hEy0BlMRQ9s6per2eyaHOzNwkP4OLG8dxwjAMgiAMQzr0Kml61J8I+oDYtm0YRqnJN2Ml76CVEQqaDux0OpUxDMUovBUhXt0gGCAMUtzwMoBgCMFQPQaVt5l0VUjEYazVaum6nnOmt23buq6TwKIi+mlLTyEk4ibjlvyyVHETRRFN29i23e12E3EThmHO3Ju4D0ij0ajX6yV1DFI2OZJ3qJUUiiAIdF2nKRw5olfJAIIBwiDFzR2TdW4SE6vOTTytsimWIW2WZZWxDBFFUb1eH1Q2gxiu69I3eBIotF2crpD8HP+quEl0TCIy8sUNZ3ZOjtm27bpuspPf9336odvtdjqdg4ODdrs9+EnFTUqLosg0TcMwCp/YC8OQlE2O5B1qpYaCpnCuXbtWNkM+RlGtCPHqBsEAYZDihpcBBEMIhioxaG/UqBSNahgGjdanCswvTtKJJtqTQgKl2+1SfDLrULOIm1GcpmnWcy1ZN3Ecx/M8x3FIBVLplDiOPc+jzJu0DktM9AeEDrgoUPhSns3Q1di5hyIIgqeffjpfz8kRvUAHEAwQBilueBlAMIRgqBKDllSGjqOzQ84SCt/3aYvs7N/UO52Oqqo5+TFpDJIXNNopikI7j+ico4xcKEPc+OMsPa6HYZioUpptSmLled5QwboADwjJ8cFzmia15ESRURoaJBSk58qD5MQo2wGBAQQDhAFiKzhILPIdQDCEYKgSwxxts0POGApKHxl64iCn9fv9Wq325JNP5q/7pDFoqoY+vqIo9EsaUDMXSYsbwzBIERqGUU3ODSmbKIo8zwvDkLZKJYJm1BzVYjwgh4eHyTlN+Z6jjPTu4IkiE2FUFgoS+oMHlhXCwI9RqgMCAwgGCAOEuBFiHb0aDCFCASVuZrFqGJKRrNVq7e3t8aicIAja7XatVtM0zXXdSTHoAKAknSUIAk3TLMtK6t+QJeLGdd1kyoQ2LsXlixtN02hliv5JqLR/Kr1zKmMI782iHtLkEIN2u723t5f/J2R7e3vUMXRdf/311wvBmMWBPxRDDywrhCHG6BUIDCAYIAyvvvqqPH6BiwEEQwiGyjBu3ryZ38XfeeedshnyHRKfw8PDa9euXbp0iTHWaDQ6nU6n0+n3+wcHBwcHB3t7e/SbVqulqqqiKOvr63S0wkQY7733XnxX3DQaDc/zWq2WpmlJXoumacmemvluBU9EXhRFScEbKgeXmbYp9o4gPCBph93d3fX19UuXLqmq2mw2qRvs7e1lOkaz2VRV9dKlS+vr67u7u4VjTOcwKcP29jZjLOnYhTBMgVGGAwIDCAYCw8nJicy54WUAwRCCoRqMw8PDv/mbvxlLUirDFKGg5RjHcRqNBi2frays0A+kNgYXGiatJWgYhqZp7XY7WfrJANAPjuO0Wq2DEWYYRtl1bqIo6vf7tGcqoTJNc+j6BdliPCBDHYIgoA5AneFTn/rUE088kXSMbreb6RiChiLJRaNbPDvDdBiFOyAwgGCAMEhxw8sAgiEEQzUYKysr//7v/z6WpFQGkFCkr6Bpmud5VEVGUZTBPGtVVcmTxlFnhKXXsPJPaWCM8WQ4ZcyyLEoZiaKIUm2iKCJtZ1mWYRhDV2oW4wHh6TbXr1/Pr7Utbigow512UckRvUAHEAwQBilu7pisc5OYEHVuHMd5+umnx2KUysBzBR6fYjEycx5BEIzar0T/HHXN9GxKGUYKLL5bUpmyiRN4z/MajcYg3mIkpfF0m93d3VqtluOAEIqf/vSn+Q5vv/32qP/1t3/7t1evXv3hD3849RUKwSAToldIcTMRgxQ3vAwgGEIwlI0RhqGqqvv7+2MxymPgvAKPTzUYi2GL8YBwjlKKouRshppjKBbv5HkheoUUNxMxSHHDywCCIQRD2RiWZVmWNfuIvgCh4MdYDFuMB4Sz21iW1Ww254gxysFfuJPnhegVUtxMxACxFRwkFvkOIBhCMJSKQQmJPKv1v/zlL0ti4L8Cj48UN/y2GA8IZ7eJokhRlGS3fPUYOQ4LdvK8EL1CipuJGCDEDcLiMYi4ESIU8x3R6/U6vS5lKPiv8POf/3xGh5/97Gf5Dv/1X//1R3/0R//zP/8zdRM8PgjvzQoe0sTH87xRxzXMd+Ym+Rlc3Dh8J88jPKRS3BTL8Oqrr85f3IDEIt8BBEMIhvIwaNqmqE2kQoei2CYKYaAViqmbKAqjbIfKZm7oh263O1TfzDEUi3fyvBC9QoqbiRhkzg0vAwiGEAzlYSTTNoU0IXQoim2iEAY6dXzUIaZS3PA7ZHxI32TWp+YbigU7eV6IXiHFzUQMUtzwMoBgCMFQEkZ62qaQJsQNReFNFMXg+/6oZRQpbvgdBn1c11UUJRmMC8F49913Z7xCvCgnzwvRK6S4mYhha2uLneXa7du3y3a4devW3Bl++MMf5jtUgyFEKMZeoRCMwVB8/etf/9a3vlVgExXcDhCMKhk2NjaeeuqpKZrg8Zm9cwpxO4b63Lx58/nnn3/iiSdef/31s2lDMbYkzH//93/nX+HNN99csJPnP/roIyF6BU+3QcBAYDg+PpYzN7wMIBhCMJSBEUURYyxdVm5pQ1FGE8Uy6Lo+mEYqZ274HXJ8ut0uFZ4ee7AaTyvTXcFfuJPnhegVcuZmIgYpbngZQDCEYCgDI3mZFtiEoKEoo4liGWhxKlPgWIobfod8nyiKbNtmjDWbzZxMlJwrcFadybmCv1gnzwvRK6S4mYgBYis4SCzyHUAwhGAoA6NWq7muW2wTgoaijCYKZxjcOSXFDb8Dj8/x8bHjODSLM/QcrqFX+Oijj+K7miNtjUaDMZZJlhorbhbp5Pn8SyH0CiluJmKAEDdnIhR3qQZDiFBUP6IHQZDMfhfYhIihKKmJwhkGC9AtjLip4CHl8aFQ0GmjmqapqkrnwOdfgcTNoOm6kOwvuAAAIABJREFUniiSsQyLd/L8YjykIBggDLLODS8DCIYQDIVjOI4zeELycoaipCbKYHBdt1ar8ac1lIRRuAPIzE0Gg6ruMsbq9Tqd7jT0Cm+88cbgL2kGaPCc1FEMi3fyvBC9QoqbiRhkzg0vAwiGEAyFYxiGkVmTKqQJEUNRUhMlMdDAxtlEeRjFOmCKGzIaxXVdZ4xdvXq11+tlJMvgzE0YhklVPU6GxTt5XoheIcXNRAxS3PAygGAIwVAsBr18B88ZXsJQlNdESQxBECSZHFLc8DvMjhGG4fb2NtUFNgyj0+nQXRgUN5QFPDXnYpgQvUKKm4kYpLi5Y2PX0avBECIUFY/o3W53MBugkCakuKmAwXEcyiwuJFaLkZRWZSiiKHJdl9aParXahx9+mPYh9Tk4LcrPuRgmRK+Q4mYiBilueBlAMIRgKBaj0WhMNGdeBsPUVwDBmCMD1eN3XVfO3PA7lITheV5G3Ni2na76PSnDwpgQvUKKm4kYpLjhZQDBEIKhWIxarTZ02X4JQ1FeE6UyUGZxIY+Y6KHgdCgPI7MsRcVppmb4v//7v3yH9957r3CH4+Pjv/7rv06XWp4dQ4heIcXNRAw3btxg57l2dnZWtsPx8TE+AwiGEAwFYhwdHTE2vIsuWyhKbaJshrW1tXa7nX+FCjAKcaiAoTyMtLjxfX9wTerWrVtlM8zusL6+vrKycnp6Ol+MtCEwgGAgMJycnMg6N3cMZOZGiFCMvUKBGK7rjtoCumyhKLWJshkyh57OC6MQB6g6N5NeIS1u6MCETOG+T3/606qqtlqtvb29sU3M8X1Fe7mpRyH0CgQGEAwQBlnnhpcBBEMIhtkxgiB48cUXO53Ol7/8Zcuyhu4XXZJQFIKBwLC6uppTrLYyDIRQgIgbx3GG1soLgsC2bU3T6ISHfr8/asP2fG+HruutVmvuGGQIDCAYIAwy54aXAQRDCIbZMWj7N2Ps3nvvvXDhAv086VlFixGKQjAQGA4PDwdvYvUYCKHAETf5lfGOjo6SqjmGYfR6vcw0z3xvB+Wqd7vdJekVUtxMxCDFDS8DCIYQDIVgPPDAA0lx0gsXLrz00kuFNyFKKBajV5yfn1uWlZO+WhnGjA4LI274GWg/eaPRoP3k7Xb74OBgaoYCHehgltdff32+GDFAKHAwQBikuLljss5NYiB1blZWVtLF1/lrwxfoIMVNsQw0IZczeVNB5wQJRb4Dj08hz+kUV/A8j+r+qar64osv7u3t5aRSVXA7XNe9ePHijDOCQvQKKW4mYpDihpcBBEMIhkIwNjY2EmXzta99rYwmRAnFYvQKcsifvFmqUMwdY0aGIAi+/e1v06IVpebMpYx4HMff/va3k+TiklpB6BVS3EzEIMUNLwMIhhAMhWC89tprH//4xxlj9913n6xzU3YTlTHkT94sVSjmjlEUAx0Mrus6bbNK5+VUNqKbpknJxSW1gtArpLiZiAFiKzhILPIdQDCEYCgE44033qBpm+eee66kJkQJxWL0isQhZ/Jm2UIxX4zCGei0bUVRDMPo9/s8VyhqRE+Si0tqBaFXSHEzEQOEuBFiHb0aDCFCUdmIzhi75557Rp0qvFShKLuJKhlGnYRaMcbUDkLXuZnIpgsFZR9rmlar1b773e/mFzcqcERPn9JaeCtC9EwQDBAGWeeGlwEEQwiGojB+8zd/8xOf+ER5TQgUirKbqJhh6vPCFi8Uc8T45S9/WSqD7/urq6uqqnY6nambmGhEdxzHMIwyWkHoFVLcTMSwtbUlj1/gYgDBEIJhCozDw8Pt7e319fUrV65cuXJFVVXG2G/8xm/89m//9pUrV65du7azs3N6t9r6dE1M4bC0xy+cnp7u7Oxcu3aNbgfVc2OM0T+vXr26ubl5eHg4dRP7+/uKokzBuRgPyByPXyjWgYdhf39/ZWXl0qVLu7u7ZTBkMFZWVq5du1Z4K0LcDhAMBIaTkxOZUMzLAIIhBAM/hu/7rVarVqspikLf5rvdrv+r5jiO4zhJJbFOp0PpqAsWilIxOB2iKOr1eoZhMMZ0XafIZ26H67qO41BqRa1Wa7VatG44KQMdFT4p52I8IIV0G7FC4bquoijNZjOzSlVIrNIYYRgqipJZy4YKRXkOIBggDFLc3DFZ5yaxaurcHB4e1ut1RVFs2/Y8b+wF41QlMcZYp9OpIFbLI25OT087nY6qqo1Gw3Xd/Kohifm+b9u2oij1en1/f38ihm63W6/XJ+VcjKS0QrqNcKGIoqjRaKiqmqTFRFFUyCOWuUi321VVNa2i0EJRkgMIBgiDFDe8DCAYQjDk+4Rh2Gq1FEVxHGfsSYqjrmCaZv5aPg/n3ENRGUa+Q6/XU1XVNM1Rudv5FkWR4zj0vZy/QF8URYqiZNI/5x4KEAYQjDIYut0uY+zVV19dX19njO3s7MzIMBTDNE3btvkvIkSvkOJmIgYpbngZQDCEYMjxCYKApgc45wZyzPd9Xdfr9foohQQeiioxRjlEUdRsNjVNm07WZC5l27aqqvy72yzLSo9AOZyJLcYDssziJgzDF154gY6NY4xdv359RoahGLQ4lUhnzFAU7gCCAcIAsRUcJBb5DiAYQjCM8nFdlzE2mGkxtUVRZFmWYRgl7f9cbHEThqFhGKZpTjd/NtQotaLX6/EweJ5Xq9XGcqZtMR6QpRU3NG2THIXLGBs8M25ShlEY6Z1TgKEowwEEA4QBQtwIsXhcDYYQoZju1dxutwcT/Qoxx3HSC/k5DJM6LLC4oSm0/GMspzM6y3CwXOxQyMzKlBDvzYWpc1N9KKIo+vznP09zNmRPP/30jAzx6FAkZf2EeG1KcVMsg6xzw8sAgiEEw6BPt9sdTLAo0FzXHdQ3mKGYC0bGIQxDVVULnELLWBRFuq7zLDllCt4syQOyMOJmCoYoij772c8mkzcXL16ckSEHw/d9yizGDEXhDiAYIAwy54aXAQRDCIaMj+d5pSobMsdxarVasVskFlLcRFFkGEZGeRRuNH+T1k9DIV3XNU0z3ydti/GALLO4iQf0zYwM+RimaTqOAxuKYh1AMEAYpLjhZQDBEIIh7UPLH+VNEqSN8m8GGUbZcoqbZrOZ1hPlme/76XL4QyHpKIbkn0vygCy5uIl/Vd8cHh7OwpCPQZM3QpSNkOKmWAYpbu6YrHOTWLF1bmq12tBC+2UYrYYkzSHcDhCMxIHKIRaYQZxvrusm02mjINN7tSronFC3YxYf0UMRBMFDDz3EGBt12iUnw1gMy7JmT1tG6BVS3EzEII9f4GUAwRCCIfHZ2dnRNC2/FxZrNFF0dHQ0x1C8884776fs7bffTn5+8803K8MYdDg9Pc3Zql2Smaa5ubmZA7m2tra9vV1xKGZxkMcvzMJweHi4ubm5ubn5B3/wB1/4whcuXLjw+OOPX7ly5eWXX97c3Nze3qaHl59hLMbh4eHFixdPf/XwlrGckzog3A4QDAQGefzCBAwgGEIwkE8URaqqclYfLtAsy6JNQHMMRRAEB79qOSlHlfUKx3GqWZBK29ikTjrkgX5ekgeE8wmaO0aBDHt7e61WS1XV5KAVx3Fc16UzPbrdLv3GNE06ZaXdbtMjwxOrsRirq6v588dC9IpCQgHVK0plgNgKDhKLfAcQDCEYyGcuQ2l8N40jDMM5hoLe0WnLCUU1vYLCUnZa91CjcrE54iYJzpI8IEslbvr9fq1W0zTNtm2eWcMoijzPo8PL6vX60dHR2D8Zi7G7u5upqDTImX8FIW4HCAYIA4S4EWLxuBoMIULB+WqmaRvHcdiAGYbRarWGDrSdTocxxp+m4/t+rVbL7LmgyZv5ihv+j1DNy8K2bZrQKvWO9Pt9OneTMZYkkgdBwBhbGHEj69wklh8K3/fpSPnp9hPQsR6MsVarlV/QnCcUmqblzCIjvDaluCmWQda54WUAwRCCIY7jw8NDRVHiu0OpZVlOyuhrGWMs/bqhgrn0e86hlMZdTdMy4oZK30pxk3YwDIPGmPLuSHJlWmug6Sv6sq5p2u7u7qi/EkvcyJkbHoZOpzPL+XGJhWFoWVZ+rhhPKBJxP8ph7BXyHRBuBwgGCIPMueFlAMEQgiGO41deeSU9TzD4YqJv8+m5YtM0G41GFEX8Q6miKMnkUOb/KoqSv8WU54NMHQp6rcdxzLMMVMEdOTo6YozRMFPeHWGMNRqN5J9RFGmaRt3Atu319fWhf0XSivODLMYDstjiJoqiVqulaVqBa6D5J7fwhIK2GuQ4jL1CvgPC7QDBAGGQ4oaXAQRDCIY4jp955pn0PMHQb130zT75Z+LDOZT6vp8erTP/t9FobG9v51+hvFDQQo+qqrRA02w2c76/VnBHdnZ2ktmRku5IFEW+72eWD0gexXHsed6ofXONRiPZDLwkD8gCixsqEVlGuYFRx3oMxcgYfZCclSkheoUUNxMxSHFzx2Sdm8QKqXMzdp4gjuNarabr+tC/nag0zlBx47ru2tpa/h+WuixlWRaN9L7vK4qSri5YGUZiX/nKV5KQVnBHElNVNREulOWdcaBpoeT3FXROIR5SHh/AUJCyKePAMrIwDAeP9RjEGDT6IIOn0Gccxl4hxxBe3SAYIAxS3PAygGAIwUALHPTz0KGUJq5HDZmFiBvf9+cobjLmed7Qob1YjDAMRzWxtraWTOlXcEfI6ITwBCldrC8x27bl8QuwGJMytFqtsjdIDh7rMYgxaPRBMmd9DDqMvUKOIdwOEAwQBilueBlAMIRg8H0/WYOgodQwjPpdo81NlJ8xdO66KHEz+7E1/KoiXdLmZz/72VAY3/dd1+33+2lnnlP9ODEoDr/zO7/T6/UyKufKlSuJsKjgjsTDjt144YUXMuImo37ipXlAFlLcVFb8OnOsR8wdCiq5lOMw9go5hnA7QDBAGCC2goPEIt8BBEMIBt/3X3jhBfp5cG+Oruv5BVcGh1LXdespy/gPFTe03pHP+YMf/CBTam9vb6+Tso2NjU6n02w2060nW50HzTRN0zSJNj1m27ZN63R/8id/Yt61wT9XVTXdUBojDTn4QdLihjFGVe0/+clPJpXQ0lM1FdyRXq9Hud7pX5qmmSxR7e3t1ev1weNUl+QBWTxxQ2uvlVVRcl2XKkNmMEZZ8kFGvROE6BVS3EzEcOPGDXaWa7dv3y7b4Yc//OHcGW7dupXvUA2GEKHIXOHmzZv//M//vLGxsbGxcfny5cuXLz/++OOrq6vUyQYXQWjRqtlsjuqXg0Op7/vpfcsZ/6Hihq5z+a6NkiNkzw+zjY2Nb3/72xt3zXGc13/Vjo+PhwbznXfe0XXdMIy9vb2Dg4Ner8cYo8X+n/70p0PjeXx8nL7yRsp+//d//wtf+AIhXbx4MUP+1FNPXb58+Xd/93cp7Jn/+7GPfYwxds8997C7KVBl35EoiprN5tBxzrbtxx9//KmnnmKMPf744xsbG8fHx2V3zjIcKnhIeXygQvHEE0/kHxFVuL3wwgsbGxuThoIxdvPmzTJCgXA7QDAQGI6Pj2WdG14GEAwQhjAM+/1+s9mkDUG6rlNlF7Jms5mZucmsR9BMxqidC5MuguSIG3/A0tPm5d2OKIosy6ICPDSXM8VF8jGCIEg+1M7OjnO3dH1i99xzz7333vvQQw997WtfY6mMn/LuCOWTjtoD3Gg0XnrppcEdVWlbmAdkRgcQDE4G13UrPkIuvrvGRH1popmboan0QvQKOXMzEYPMueFlAMGYO0O/319bW6Mxu9vtDn1TDC5LDaavapqWnlhOWyHiJp3UTCc9JUtOV69epVOCK7gdPFZszs2FCxfuu+++Rx55xLbtRGQoipJZlirjjlAlwFFrE2NFXrwQD0ghTYBgcDLUarXpahDPaMkpcnJZCgoDhEGKG14GEIx5MURR1Ol0VFXVdX17ezs/bTCduDdq4zFlBSZLIWEYJikmjLEk4yTnpem6LvnU63XGWPLnyQbspMwMY+zXfu3XHn744QsXLtA/v/KVr0wdirShiZsHH3zwpZdeGpQXa2tr+eImnvmOUJKTYRidASOHwYTiUR8kx2AfkGKbAMHgYUimbZKUr7QNPdYjDEM6RJN86vU6T7LO4EErdFxaFEWcoUh/4Zn0kwpxO0AwQBikuLljZ7LOzV0bDEWv11NV1TRNGpzGXoFeOvQzbb8c+vKibcCkRYIgMIfZqLoUyZ8PGrXl+/4Xv/jFL33pS/fee2/mhXvfffdtbW3xfBCxxE3Ocs/a2lqSElHSHRnln2y+HbUiMPhBcmzsc7oYDymPD0go6IjvmPtYD1q7pO3ctH8wvwoU2aiDVnRdd12X8450u910Be2JPilCr5DiZiIGKW54GUAwKmYIgoCyKNLDEs8zxuZ0AHVijuPQ9Izv+88999wDDzyQTrN9+OGHW63W2AOHxRI3OfbSSy/lyMQKLPmSne8m3ANSUhMgGDwMqqrSkz5qRjBzrEe3281kd9HRCjmvC2f0QSuknzhDkRyvNsph7BVyDOF2gGCAMEhxw8sAglElw6jjoHmesatXr1a8eyJjhmHs7Owk/3Rd96GHHrr//vtJ3wRBYFkWLWbljLgLI252d3fTh0ZVb67rrqysjHUT6wEprwkQjLEO3/ve9zIVrcYe6xGGYcYnqQI1qpWcg1aonBJPKDzPUxRl1MMuRK+Q4mYiBlnnhpcBBKMahiiK6vX6qG0vPM9Y+jCj6o3mCTLBjKKIXo6f/exn6TeHh4emaeYcOLww4ub8/Hy+c2k8R33F4jwgZTcBgjHWYWNjIzlsIUfcjDrWg4xmbniq/w3dOqBp2uuvv57/h4eHh6qqjtoMGAvSK6S4mYgBQtyALB7nO1SDgRCKmzdv0gExU3/LiX/1GOrqzXVdXdeHcoZhmLzjyKHb7SqK0m63B50LETe/+MUvZrxIIS+L9PmU1ZuqqmMPaY8FeW9W8JDy+CCE4sUXX3RyzyzLP9aDrF6vcx5HNVTcmKaZL27oxIb8ZdnFGNFBMEAYZJ0bXgYQjLIZgiC4ePFi/ruG89VMlW/GepZh9Xq92+3yhyIIAl3XBw8cLkTcgPQK13XntTJFG2oWZkSXMzeJXb58OVHMzuTHesRx3Gq1+A9tGCVuNjY2hvpHUdRutxljY2cNhegVUtxMxCBzbngZQDBKZaAF7Ndee23GJsiHNmNXP3mTLK5PFIooiqiscBp4kcRNHMeaps2lHgnVQVmYEV2Km8QuX7489bEetPadUTZTHLRi23ZG3FCJ0UajQboqDMPF6BVS3EzEsLW1xc5z7ezsrGyH4+NjfAYQjPIYDg8PFUXZ2dmZnSHxWVtbq37yplar7ezsTBGK09PTlZWV9fX15DcFhmIWh6J6xc7OTq1Wq1huOo6zsrLCA1llKMAZQDDGOly8eDGnflLOsR70zWdw7XuKg1Ycx3n00UfX7hrNFa2trW1vbx8dHVUWCoTbAYKBwHByciJnbu7Ykte5iaIoOcN59pSCxCddIr0a63a7yfaNKUJB8zfJ+tSCzdzEcVzxWiH1K87ySDw+CElpIDM3CKHIFzfxiGM9KIOYM88mbaPEzRe/+EXHcahg+nR7IIToFTzdBgEDhEGKG14GEIwyGKisVvKuKXZEt207s9ZTntGyWiZfOMdG6TyqMBYvorihL9OVbZuq1+tJ2bRCYiXEu6IacYMQisFlqbHHeoRhqKrqqGJ6+TZU3FiWNSrnJrHF6BVS3EzEIMUNLwMIRiEPQMYop69AhozP0Fzdwi2Kolqtlt4QNHWsaMIpCILFEzdxHLuuW810WiZXdGFGdCluEhtMKB57rAe5tdvtzBkdUx+0wjMZuRi9QoqbiRggtoKDxCLfAQSjcHHz/e9/X9O0UrNo6dtb2fuQ05NPgwxDLcfBcRzDMI6Pj6e+QiEYZIX3igqm06isflpCLcyILsVNYumt4JzHetDx9QUetDJ2KzjPBxGiV0hxMxEDhLhBWDwGETflhcLzvGRnJn1zorHtD//wDzPvozKmK6jURK/XG/uHU1gURc1mc7BK2Iy3Q9f12ae7Z8eIy3lZNBqN8vTN0IL6CzOiyzo3iaWL+M3LVFV944038n0QRhApbipmkHVueBlAMKZrggYb0zQ9z/N9nzZJ0kTx97///cIZhvqQvil8fYpOvxpaSGPG2+H7/sWLF/OXb8QVN1EUWZZVq9UKz79pt9uKogxedmFGdDlzk9gbb7yhqmq+T6nm+76iKAihQGAAwQBhkDk3vAwgGNM1oWlaZmKDSlCUxDDKZ2gtmVmMkmNGTWgXMuteSD3DGR3Ke0Acx8kvSz+RJZVLhirChRnRpbhJMwwVspWZbdv8B2eW6oDAAIIBwiDFDS8DCMZ0TQzukKQtmkMHoVKzaGnCQFXV/BMrx1oYhlTWPScPcfbbcfPmTUVRco70E13cxHdrHjabzRlTjHu9Hu2CmeXUjsV4VyyVuLEsa44HztdqNc/zQEIxdwYQDBAGKW7u2PLUuYnv7v1O6sFkrMA6N6PM9/21tbVardbv98deKmNJSfX19fUZ14x4bofjOIOVUvmvUBRGqU1EUbS+vs4Ya7VaU0icfr9fq9UuXbqUowJ5IHl8hMjPq0bcgISCkvny3UoyWpOKoghhBEFgAMEAYZDihpcBBGOWJsIwpC2UtVotZzK5sv3PdOSQqqqtVqvf7+dP5ARB0Ov1aC8o7byo5nZQ2ZtRsVoMcUMOYRhalkXHA/V6vfy1hiiK+v1+q9VSVZVOdViq6YqymwDB4GTQdX0uZ7LW63Xaq4UTivkygGCAMEhxw8sAgjFLE1RwgjGmqmrOxqWKi7sEQZAcQ1Or1ehMGSqD0Wq16J+qqtIxMa7rJlMLld0Oy7JGZd4skrihH6Iocl230WgoiqKqKsW/1WolhUbq9bphGIwxXddt20400LKN6KU2AYLByTCXU+SSaZsYKRTzZQDBAGG4ceOGPFuKiwEEY4omMnedRi9FUQzDiOP45z//eeEM03EeHR3t7+/v7+9vbm5ubm5+5zvf2dzc3N7epl8W0sSkDhSKo6Mjxtjp6ekUVygQo9QmhjpQ5Le3t5Pbsbm5ubu7u7+/n5zaUyADj48Q74olDEX1p8gZhrG9vQ0YijkygGAgMJycnMg6N3cMZOammhIa8d3N4UO3ySxkWd4ZGUZVQV3CUJTXBAgGyEMqVijoWI/8pKsCzbbtYouqC/GA8HQbBAwQBlnnhpcBBGOKJijVJvPeoSWqoSvlCyNu3nrrrRkdfvSjH9EP//Ef//Hcc89NcYVCMIR4QJZnRJehGMpQ2bEeNPGczglDC8W8GEAwQBhkzg0vAwjGFE1EUUTpLOlf0gkvQ5NGxRU3URSNWvgPgmBszjKPVTz3TibEA7KcI3pJTYBgTMpQwbEeQ6eIAEMxFwYQDBAGKW54GUAwpmuCpIxhGJ1Op9frUYWYUUmy4oob3/c1TaMXn23b9btmmmaj0XAcJ3ntUkBybNQE+6jKh1PY0GmzofpMiAdkaUf0MpoAwZiCodRjPYIgUFV1sLQVZiiqZwDBAGGQ4uaOLXydG8/zaEcSbaXOqX1XQZ0bHofpQhEEQaPRiOPYNM2cDADHcXLmYHL+tihxEwQBicsgCFzXdRzH933f9y3LGhQ9CA8IyIguRH7eMoeCqnQahlF42WJKExz64lqSB0SKm4kYpLjhZQDBKOQBKJuBx6ekmZvkZ3Bx4zhOGIZBEIRh6Pt+AmOa5qCzEA/IMk9XFN4ECMbUDHSsR4H5xXRg2agLIoeiSgYQDBAGKW54GUAwpLjJuQLtoaCURtM0MytNqqom3yYTcZNxS35Zqrihb7cE3O12E3FDZfQG/YV4QOSIXmATIBizMFDa73Q1r9Pm+z4dWJYzFQQeisoYQDBAGCC2goPEIt8BBEOKm/wruK5LJ92QQNE0jZb/oyhKfo5/VdwkOiYRGfnihjM7J8ds23Zdl2rlUbv0Q7fb7XQ6BwcH7XY7nbUgxAMiR/QCmwDBmJEhDEM61mO6g+TCMKzX64qipLPlpsCIAUJRDQMIBggDhLjBXDyeC0ZldW5yTGhxkxgJlG63SyksmXWoWcRNTov1XEvOF3Qcx/M8x3Hoy6jv+1S0w/M8yrxJ67DZQ1GIgxzRE5N1bhLjCUUQBDQ/2mw2+/3+2ImcIAg6nQ5VwXYch+fNjBAKBAYQDBAGWeeGlwEEY4omPvroo/w/KZyBx6eMUJC8IA1BpdmjKNJ13fO8jFwoQ9z44yw9rx6GYZI4TLNNyUvf87xMTrEQD8jyjOgyFFMwBEHQ7XZJ5RiGkT7Tg6zZbNbrdTr2jg5aoQdWjuj8DiAYIAxbW1vy+AUuBhCMKZr48MMPczoBzvELM2L88pe/pKkayslVFIU+IG2yyIiVtLihVy0dmVRNzg0pmyiKPM8Lw5C2SiWCxrIseq1/+OGH04WiDAd55kCVDCAYZTCcnp4mZ3pcu3bt8uXLV69epZM9dnZ2Bg9akWcO8DuAYCAwnJycyIRiXgYQjEmbCMMwX9yUwcDjU1IofN+nje6UxRIEgaZplmUl9W/IEnGTPomTNi7F5YsbTdNoZYr+Sai0fyq9cyoxIR6Q2ZsAwUBgAMEQggEEA4EBBAOEQYqbO7aodW4cx7l+/Xr6N2+//Xb+FYSuc0PiptFoeJ7XarU0TUvyWjRNIxkRz3sreLJAFkVRUvAmDMNGo5FM26QN4QEBGdGFyM+ToaiSAQQDgQEEA4RBihteBhCMSZuo1WqZslcVMPD4lIERBIFhGJqmtdvtZOkn7ZBM0jiO02q1DkaYYRhl17mJoqjf79OeqYTKNM1msynFzXwxEBhAMIRgAMFAYADBAGGQ4oaXAQRjoiaCIEhST6pk4PEpA0PTNM/zqIqMoiiD+5VUVSVPx3HooO+hll7Dyj+lgco953MOmmVZpmkGQRBFEaXaRFFEm6eouuve3t6MoSjcQY7oVTKAYAjBAIKBwACCAcLpF9c9AAAgAElEQVQAsRUcJBb5DiAYEzVh2/ZgUbgFFjeZOY8gCEbtV6J/jrpyejalDCMFFt8tqUzZxAm853mNRiONJ8QDIkf0ApsAwRCCAQQDgQEEA4QBQtwIsXhcDUaxoTAMY/AolgUWN4tqIC+LspsAwUB4X/H4LEko5IjO7wCCAcIg69zwMoBg8DcRhiFjbDCBQ4ob4UyIB2R5RnQZCigGEAwEBhAMEAaZc8PLAILB30RS8aV6Bh4fKW74TYgHRI7oBTYBgiEEAwgGAgMIBgiDFDe8DCAY/E00Go1ModvKGHh8KsD4xS9+MaNDzrb53d3dH//4x2OvUAiGEA+IHNELbAIEQwgGEAwEBhAMEAYpbu7Y4tW5YYwNPUd39lCIIm5KZaBSgTIUBTbB44OQ5CFDkRhCzwTBQGAAwQBh2NraYme5dvv27bIdbt26hc8AgsHZxBtvvHHx4sV5MfD4iN4rvvWtb21sbMhQFNgECAYCAwiGEAwgGAgMIBgIDMfHx3LmhpcBBIOziW63m1TjrZ6Bx0f0XkEpTTIUBTYBgoHAAIIhBAMIBgIDCAYIA8RWcJBY5DuAYHA20Wg0Rh0vIMVNIQy+79dqNRmKApsAwUBgAMEQggEEA4EBBAOEAULcnImweFwNRlGhqNVqo4rUSXFTCEMURYyxaroNeCiKagIEA+F9xeOzJKGQIzq/AwgGCIOsc8PLAILB0wRVuJkjA4/PAvQKTdP29/fzr1ABRiFNIDCAYCAwgGAIwQCCgcAAggHCIHNueBlAMHia8H1f1/U5MvD4LECvME1zd3c3/woVYBTSBAIDCAYCAwiGEAwgGAgMIBggDFLc8DKAYPA04TjOqGziahh4fBagVzQajevXr+dfoQKMQppAYADBQGAAwRCCAQQDgQEEA4RBips7NnbxuBqMQkJhWdaobGKeK8y+js7jI0SvyGdwHEeKmwKb4PFBSPKQoUgMoWeCYCAwgGCAMEhxw8sAgsHThGmanufNkYHHZwF6heM4q6ur+VeoAKOQJhAYQDAQGEAwhGAAwUBgAMEAYZDihpcBBIOniVG1iStj4PFZgF7heZ4UNwU2AYKBwACCIQQDCAYCAwgGCAPEVnCQWOQ7gGCMvcLR0VHOVqlqGHh8FqBX+L5/6dKl/CtUgFFIEwgMIBgIDCAYQjCAYCAwgGCAMNy4cYOd59rZ2VnZDrdv3547w/Hxcb5DNRizh+L1119XFGWWK4wNxdgr8PhUgFE2w+HhIWNjHp8KMAppAoEBBAPhfcXjsySh4IkVQigQGEAwEBhOTk5knRteBhCMsVfY3983TXO+DDw+i9Er8ifJKsNACMXsTYBgIDCAYAjBAIKBwACCAcIgc254GUAwRl0hiiL64fr161LcVMbAGBtVCbpKDIRQyBG9wCZAMIRgAMFAYADBAGGQ4oaXAQRj1BWoKnFiDz/88PPPPz80rViKmwIZpLgpsAkQDAQGEAwhGEAwEBhAMEAYpLi5YwtQ5+Yzn/lMWt888sgj0zHIOjf8DE888YQUN0U1weOzJMVdeHyWJBRyROd3AMEAYZDihpcBBCPnCrZtJ8rmwoULtm1Xz8Dvsxi9YnV1VYqbopoAwUBgAMEQggEEA4EBBAOEQYobXgYQjJwreJ730EMPJfomDMPqGfh9FqNXSHFTYBMgGAgMIBhCMIBgIDCAYIAwyDo3vAwgGPlXSJTNc889Ny8GTp/F6BVS3BTYBAgGAgMIhhAMIBgIDCAYIAwQ4kaIxeNqMGYMxbPPPssYu++++1zXnZpBiht+htXV1ZxQV4aBEIrlGdEreF/x+CxJKOSIzu8AggHCIOvc8DKAYORfwXEcxtj999+f7AyvnoHTZzF6xerqas4ZpZVhIIRieUZ0GQooBhAMBAYQDBAGmXPDywCCkX+FIAgYY1/60pfmyMDpsxi9QoqbApsAwUBgAMEQggEEA4EBBAOEYWtra/7HLyBUawY5fmHSUBwdHW1vb6+trV25ckXX9STnRtO0K1euXLly5dq1a/v7+6UyTOcjYq84PT3d2dm5evXqlStXXnjhhSTaqqpStNfX13d3d09PT0vFmOIKQjCAYCAwgGAIwQCCgcAAgoHAcHJyImdu7phYdW7CMGy327VajTHWaDQcx/E8z/d9Sm4NgoB+dhzHsixFUVRVbbVanufxMMg6NxmGKIp6vZ5hGIwxXdcdx3FdlyIcRVEYhvRzt9u1bZskZrPZ7PV6tDi4SKEotQkeH4QkDxmKxBB6JggGAgMIBgiDFDe8DCAYR0dHrVaLMWZZFokVHguCwHEcTdPq9fr+/v6MDMsjbo6Pjzudjqqqpmm6rpuTyZS2MAy73a5pmrVard/vL0YoQEZ0GYoqMYRgAMFAYADBAGGQ4oaXYe4YURR1Oh2SNaNq2ORbFEWO4yiK0mw2c64gxQ1Zv9+/dOmSaZpjN3uPMtd1NU3TNC3/CvihqIYBBAOBAQRDCAYQDAQGEAwQBoit4CCxyHeYL0YYhoZhmKY5naxJWxRFtm2rqjpqxJXiJo7jVqulKAr/3FiOua6rKEqn05kCg0yIB0SO6AU2AYIhBAMIBgIDCAYIA4S4EWLxuBqMoaEIgkBVVcuy8v92InNdlzE2tEbLkoubKIoMw9B1nXMRiseCINA0rdVqDb0mbCgqZgDBQHhf8fgsSSjkiM7vAIIBwiDr3PAyzAsjR4XMaEEQKIrSarXGMmRsgcVNEAS1Ws2yrAKVDVkURbquG4YxeGXMUFTPAIKBwACCIQQDCAYCAwgGCIPMueFlmAsG1a0pZHFkqIVh+P+1dz+vcZR/AMef8sVfqJ25+AOk2RURUdTZi6hUmbmIYLG7iEWoh1nsydOmp9jTBA+pUOrmFA8eJhcPPW3BgMcpiD0JA9mcArI0f4ATPKjgYb+HJx2WbDJ5mp2ZfX+yz+ek4dN5Xv10Js+HmWeeaTQa/X6/wDAdZ7W50fdsyr1DdijCMAyCoJgxHSIuEDujlzgEhCHCAGEQDBAGxGCbG1ND/YzRaOS6bhX3bCZD37+Z7J8WtrkJgqDdbhf/kRlD3785dLcMWIq5GCAMggHCEGGAMAgGCANisM3NQdD2uanhLkIeg8HAdd00TfX/LuY+N91ut9x1NsdFlmWO40z2rLRSzMtgkkNY5GFLkQfhzIQwCAYIA2KwzY2poWZGGIa+759IKiv6/X6z2TxkOC7OXnMzGAwcx5n9TTTD0E8b8+FQpZijAcIgGCAMEQYIg2CAMCAG+/kFU0OdjO3t7cnJr55oNBobGxsmpTh7n19oNBpVP/47FL1e78MPPwSWYo4GCINggDBEGCAMggHCIBh2d3cRr4JDGr3ihDoZnU6nngdSk6EfTmVZtmh3bvRWe8WZpYd+OKW3GuKUYr4GCINggDBEGCAMggHCgBgQzY2Ih8f1MPb29pIkcRynhsUf0+H7fhRFC9XcZFnWbDarex+tIKIo0m9OQUoxdwOEQfh9ZZKzIKWwM7p5AoQBMdh9bkwNFTGiKFJT8dxzz3W73XyF72ToLzBEUXSiVkeSJPr7mibJg8FgaWnpypUrxUOIbm6OLHir1aq/4FmWPfvss5cvX3YcRzM6nc6RTa2IC2RxZnRbCpQBwiAYIAyIwS4oNjVUxNBzbRiGURRFUXT9+vUnn3zy008/1RPe5B0F/QUG/XPDuVZPzI1Gw7C5SdP03LlzTz/99JlvbnTBV1ZWPM/zfV9/O73mgqdp+thjjzmOs7GxoT/hrr/xPp0p4gKxM3qJQ0AYIgwQBsEAYUAMtrkxNVTE0FNa/pmnX375xXGc8cMXavI3mMbjse/77XY7yzLDuVZ/I3MwGOghTswfj8dKqddff/3y5ctnvrnJF7vk78DXX/Ber6eUeuONN3Kn/sl0pogLxM7oJQ4BYYgwQBgEA4QBMdjm5iDmtc/Noebm2rVr+VJi3/cnp7o8x3CuTZJEP+Mwb26SJInj+OWXX16Q5mZra0u3kjpqLniapj///LNSant7W/9kMBjY5qY4gbDIw5YiD8KZCWEQDBAGxGCbG1NDRYxDzc3777+fPxlpNpue500f5JGWgIwfpbkZj8f6RsWCNDcrKyuTb6XNpeCe521tbeV/cLLZykPEBWJvV5Q4BIQhwgBhEAwQBsRgmxtTQ0WMQ83Nm2++qW8AdLvd4+bUSudaffzFaW70X3OOBfd9f2VlRRtc1z1yIBEXiJ3RSxwCwhBhgDAIBggDYkC8Cg6pRXFCRQw9EbZarSAIgiBQSr344ou6vdALPqYPUnVzswgLinXBHcdpNpv65aZ5FbzX662srGRZVvBlKxEXiJ3RSxwCwhBhgDAIBggDYkA0NyIeHlfEOPS2lFLK8zyl1JGvJeuYnmvjOA4m4sghJn+Spulk/qHNed96660z39zogi8tLX3xxRfzLXgURZ9//nnxd8QgvyyqHgLCIPy+MslZkFLYGd08AcKAGG7duqX2CmNnZ6fqhPv37/MNFTGuX7+ulLpz587e3t5vv/2mZ1m95clx/2zTc61+kTiPQ/nTc+1oNJrMzx+K6dDNzfXr10/91yylVhWdFZMFf/fdd5MkmW/B2+32//73v6+++qr+UjxSQg0GCINggDBEGCAMggHCIBiGw6Fdc2NqqIhxaM2NnhT1K8HHbZtb9WOpRbhzowv+wQcf6P+YV8HjOFZKvf3228VpIi6QxbldYUuBMkAYBAOEATHY5sbUUBFjurkZjUZZljUaDf2lp+mDVN3cvPLKK4vT3PT7/fF4PJeCJ0milMoXFBeEiAvEzuglDgFhiDBAGAQDhAEx2ObmIPYY+9ycP39e/7ee+fJnJaPRaPVhKKWCIND/XfAt6ziOdY5ep5z/8eM+Np4kSX78ySEOPbQy+Wua5BCamy+//DLvWuoveLvdVkq99tprFy9eXJ2I6YITLhDIjH7idWpLUSKDUAo7o5snQBgQg21uTA0VMeI49n0/X836/vvv53Nbr9fzfV9PjWma+kdFr9c7biz9x6fjuJWzWqI3spvMn57ORTc3kwXPXwXXUXPBwzD0fd9xnFdffbW44CIuEHu7osQhIAwRBgiDYIAwIAbb3Jga6mF8/PHH+kHJvCJN0/PnzxfniG5uJmNjY6PVahXnVB2u6/7666/FOSIuEDujlzgEhCHCAGEQDBAGxIB4FRxSi+KEehi3b9+e73QbRdGVK1eKc85Mc7O9va2UOnKdTT2RpqnjOIRSEAwQBsEAYYgwQBgEA4QBMSCaGxEPj+th7OzszHe6bbVat2/fLs45M83N/v6+53kFy2iqjl6vF4YhpBRzN0AYhN9XJjkLUgo7o5snQBgQw61bt+bf3EBqUZxQG2OO0+1oNFJKDYfD4rSz1NxEUXTcvsA1RKvVGgwGkFLM3QBhEAwQhggDhEEwQBgQg11zY2qojdHv96c3va0n9Ew/+z+HSQ7krEjT1HXd415oqjSSJHEcJ8sySCnmboAwCAYIQ4QBwiAYIAyIwTY3pobaGHrPleM2lKsu9IcbkyRZqOZmPB6HYVjw6YPqIggC/a4WpxTzNUAYBAOEIcIAYRAMEAbEsLa2pvYLY29vr+qE4XA4d8POzk5xQj0MXYqNjY1ms1n8j1d6hGF49epVk1Kc+LcosRSVDqET9LLimm/eDAYDx3EePHiAKsV8DSY5s5+cthQlJhDOTAiDYIAwCIbd3V3EnRvCqrR5beJ3HKPRaNT5Trj+vpKe4Gf/5zDJQZ0VvV6v4NtSVUSz2cxXVqFKMUcDhEEwQBgiDBAGwQBhQAyI5gZyF6s4oWbGYDBwXbfgU9UlRpZlrVYr355u0R5LjcfjLMscx6mtm+x2u57nTTOOCxEXSD0zui1FnQwRBgiDYIAwIAbEq+CQWhQn1M/o9/vHfe2o3AiCYPKNoQVsbsYPt5ypYalTv9/X64iPZBwZIi4QO6OXOASEIcIAYRAMEAbEgGhuCHexIM3NoVKEYdhqtSrtb3q9nud5k0MsZnMzHo/jOK76bpleanNoCGAp5mKAMAi/r0xyFqQUdkY3T4AwIAa7z42pYV4Mz/OCIKiov1leXnYc59Ba2oVtbsbjcRRF1fU3+lHjKb7VJeICWZwZ3ZYCZYAwCAYIA2Kwa25MDfNiZFmm79+UO+NmWdbpdDzPmz7sIjc344dPA0vfR3F9ff24x17YUtRsgDAIBghDhAHCIBggDIjBNjemhvky9B2F/IPhM8ZoNGq1Wu12+8gbQgve3Iwfbq+3urpa/McNI8uybrfbaDSOa0/JpajTAGEQDBCGCAOEQTBAGBCDbW4OAvIqeEEp4jh2HKfT6cyyI0uWZaurq0qp/N2o6YC8Cj7fsyJNU8/zGo3GjA3l5uZms9n0fb/gwSK8FLUZTHIIizxsKfIgnJkQBsEAYUAMtrkxNRAYWZZ9/fXXSqlut/uoLY5ua1zX/eCDD4qfcNk7N3ncvn3bcZwgCE7R4ui2ptFobGxszMgglAIyo9tS1MkQYYAwCAYIA2KwzY2pAcLY398fjUZhGCqlWq3W8vJycacyGo3W19c7nY5Syvf9JElq+OcwyZFyVmRZFkWR4zjNZrPb7d69e7cgP8uyzc3Nbrfruq7jOHrhzpkpRdVDQBgEA4QhwgBhEAwQBsTw7bff2s8vGBkgjPwIDx482NjYuHr1quM4Sin97CMIguXl5U6nEwRBq9VSSimlLl26dPPmze3t7dINs+SIOyu2tra+/vrrpaUlpZTrurra3W632+0GQeD7vuu6Sqm33nrrm2+++fXXXytinO4IIgwQBsEAYYgwQBgEA4RBMOzu7tp9bg4CcufmdKVI0zRJkiRJoihSSoVhOBgM9E9OYbB3booNo9FI17bf7587d+6ll16K41j/5MiFNWe4FOUOAWEQfl+Z5CxIKUxqRSgFwQBhQAx2nxtTA4Rx4hEuXLhQvEDENjdlGeI4Vkq98MIL82WUMgTBAGEQDBCGCAOEQTBAGBCDXXNjaoAwTjzCxYsXbXNTj+GFF17QD/7myyhlCIIBwiAYIAwRBgiDYIAwIAbb3JgaIIwTj/DJJ59EUTRfg0mO9LMijuMnnnhCNzfFb66d+VKUNQSEQTBAGCIMEAbBAGFADLa5OQj+PjeGR1hZWQnDcJYj2H1uTAz5bZunnnqq+HObZ74UZQ1hkkNY5GFLkQfhzIQwCAYIA2KwzY2pAcI48QhbW1vNZnO+BpMc0WfF5G2bxx9/fMZbZaJLUeIQEAbBAGGIMEAYBAOEATHY5sbUAGGYDFH8oMQ2N7Mb8ts2Oj766KO5MEocgmCAMAgGCEOEAcIgGCAMiAHxKjikFsUJEIbJEO12u+Begm1uZjQkSaKUeuyxxx5//PFz584ppV588cX6GeUOQTBAGAQDhCHCAGEQDBAGxIBobkQ8PK6HUUopBoNBwZMp29zMbsiyLEmS559//rPPPgvD8N13350Lo8QhCAYIg/D7yiRnQUphZ3TzBAgDYrD73JgaIAzDIRqNht77fy4GkxzpZ0Wapo7j2FKUOASEQTBAGCIMEAbBAGFADHbNjakBwjAcIo7j427e2OamFEOv1wvD0JaixCEgDIIBwhBhgDAIBggDYlhbW7PfljIyQBjmQywtLd28eXMuBpMc0WfFgwcPHMfZ2tqypShxCAiDYIAwRBggDIIBwiAYdnd37Z2bgzgz+9zkCUmSuK47/drU7KU48QgmOSLOiuMMURT5vm9yhEoZJQ5BMJjkEBZ52FLkQTgzIQyCAcKAGGxzY2qAMB5piF6v12q1Dn3NsQaDSY7csyLLMtd19TcuFrwU5Q4BYRAMEIYIA4RBMEAYEINtbkwNEMajDuF5XrfbrdlgkiP3rAjDsN1uGx6hOka5QxAMEAbBAGGIMEAYBAOEATEgXgWH1KI4AcJ41CGyLDvU39jmZhZDkiSO4+QP+xa5FKUPAWEQDBCGCAOEQTBAGBADorkR8fC4HkYVpTjU39jm5tSG0Wjkuu7kO/YLW4oqhoAwCL+vTHIWpBR2RjdPgDAgBrvPjakBwjjdEHl/k2WZbW5OZ8iyrNVqHfoo6WKWoqIhIAyCAcIQYYAwCAYIA2Kwa25MDRDGqYfIssz3/Vartb29XbXBJEfWWaE7m3ypjfkRymVUNwTBAGEQDBCGCAOEQTBAGBCDbW5MDRDGjEP0ej3HcY7bvLgsg0nO3EthbtCdjed5h947MzlCiYxKhyAYIAyCAcIQYYAwCAYIA2Kwzc1BnL19bo6Ln376yXGcTqdz3JfD7T43k4bRaOR5XhiG052NyRHKYlQ9BMFgkkNY5GFLkQfhzIQwCAYIA2KwzY2pAcIoxZBlWRiGruuurq5Oz9mQOzd//fVX1UOcmPDjjz+6rtvr9U59hFIYIi4Qe7uixCEgDBEGCINggDAghrW1NbVXGDs7O1Un3L9/n2+AMEo03Llz57333rtw4cL3339frsGQceS9kDz+/vvv2Yc4dcJwOLx27dozzzzz448/zjLEjAwdIi6Q2YeAMAgGCEOEAcIgGCAMgmE4HCJeBYc0esUJEEbphjiOG41Gs9nc3NzU3cYc79zozX+VUuPx+L///qtiCJOEzc1N13V93//tt99mHGIWRh4iLhB7u6LEISAMEQYIg2CAMCAGRHOzJ+HhcT2MeZUijmPP81zXXV5enuOM3m63lVJzbG6SJAmCoNFoDAaDMeYJHeSXRdVDQBiEi9QkZ0FKYWd08wQIA2Kw+9yYGiCMSg1JkoRhqJQKgiC/kXOKIU7H6Pf7juNowLj25ubu3btBEDiOE0VR/he3zU2dBgiDYIAwRBggDIIBwoAY7IJiUwOEUYNhOBz2+33P85RSnU5nusupYkbXm//2+/0oiupsbkaj0fr6erPZbDQak22NDtvc1GmAMAgGCEOEAcIgGCAMiME2N6YGCKNOw2g0yrucIAjW19fTNDU5wikYvu/7vj8ej+tpbrIs29zcvHTpklKq3W4ft/GPbW7qNEAYBAOEIcIAYRAMEAbEYJubgzjx4XE9DGYpRqNRHMftdttxHNd1L126tL6+fu/evbIY+oGU7pwqbW7SNF1fXw+CQCnled7NmzeP2+xHh21u6jSY5BAWedhS5EE4MyEMggHCgBhsc2NqgDDmbkjT9ObNm+12u9FoKKVarVa329W9zuQzHXNGmqb6gZT+33KbmyzL7t27t7q62ul0XNd1HEffp9E9TQ3/HIbOqhkiDBAGwQBhiDBAGAQDhAEx2ObG1ABhoAyj0WgwGERR5Pu+7nX0G9TLy8s3bty4e/fuoY7nyIN4nqcfSOmYpbkZjUb37t3b3NxcXV0NgmBpaUkp1Wg02u12v9/Xd4aKj3AobHNTpwHCIBggDBEGCINggDAgBsSr4JBaFCdAGHBDkiRxHEdR9Mknn/i+7ziOfrW72WwGQRAEQbfbXV1dXV1d/e677/74449+v6+U0m2Qjm63q5S6d+/e77//Ph6P9a2XQ6Hblxs3bugmJgiCZrOpB2o0Gr7v93q9fr+/tbVVvE+gbW5QBgiDYIAwRBggDIIBwoAYEM2NiIfH9TBElOJRfzWnaZokSZIk+mUofafn4sWLP/zwg75Pc2S888470z/UvYuOlZUVfbQ4jpMkmV49AyzFvBgiDBAG4SI1yVmQUtgZ3TwBwoAYbt26pfYLY29vr+qE4XDIN0AYIgyGjH/++Wf6pMwfS/3777+zDzFjQm2lqJohwgBhEAwQhggDhEEwQBgEw+7url1zY2qAMEQYZmHUvM9NcYK9c1OnAcIgGCAMEQYIg2CAMCAG29yYGiAMEYZZGHEc6/XFtrkpkSHCAGEQDBCGCAOEQTBAGBCDbW4Owu5zk8fsz9FLYdjmpkSGCINJDmGRhy1FHoQzE8IgGCAMiME2N6YGCEOEoRSGbW5KZIgwQBgEA4QhwgBhEAwQBsRgmxtTA4QhwlAKwzY3JTJEGCAMggHCEGGAMAgGCANiQLwKDqlFcQKEIcJQCsM2NyUyRBggDIIBwhBhgDAIBggDYkA0NyIeHtfDEFEK29yYHwHCEGGAMAgXqUnOgpTCzujmCRAGxHDr1q35NzeQWhQnQBgiDKUwbHNTIkOEAcIgGCAMEQYIg2CAMCAGu+bG1ABhiDCUwrDNTYkMEQYIg2CAMEQYIAyCAcKAGGxzY2qAMEQYSmH8+eefVQ8hpRRn46ywM7p5AoQhwgBhEAwQBsSwtrZmP7+wv7+/v7OzU5xQD0NEKew3B8yPAGGIMJjkzH5y2lKUmEA4MyEMggHCIBjs5xcewQBhiDBAGAQDhCHCAGEQDBCGCAOEQTBAGBCDbW5MDRCGCAOEQTBAGCIMEAbBAGGIMEAYBAOEATEgXgWH1KI4AcIQYYAwCAYIQ4QBwiAYIAwRBgiDYIAwIAZEc0PYLAHS3IgohZ3RzY8AYYgwQBiEi9QkZ0FKYWd08wQIA2Kw+9yYGiAMEQYIg2CAMEQYIAyCAcIQYYAwCAYIA2Kwa25MDRCGCAOEQTBAGCIMEAbBAGGIMEAYBAOEATHY5sbUAGGIMEAYBAOEIcIAYRAMEIYIA4RBMEAYEINtbg7ixIfH9TBElMLO6OZHgDBEGExyCIs8bCnyIJyZEAbBAGFADLa5MTVAGCIMEAbBAGGIMEAYBAOEIcIAYRAMEAbEYJsbUwOEIcIAYRAMEIYIA4RBMEAYIgwQBsEAYUAM3377rf38gpEBwhBhgDAIBghDhAHCIBggDBEGCINggDAIht3dXbvPzUFA7tyIKMWJR4AwCAYIQ4QBwiBcpCY5C1IKk1oRSkEwQBgQg93nxtQAYYgwQBgEA4QhwgBhEAwQhggDhEEwQBgQg11zY2qAMEQYIAyCAcIQYYAwCAYIQ4QBwiAYIAyIwTY3pgYIQ4QBwiAYIAwRBgiDYIAwRBggDIIBwoAYbHNzEHafmzzsPjclGiAMEQaTHMIiD1uKPAhnJoRBMEAYEINtbkwNEIYIA4RBMEAYIgwQBsPTN1UAAALNSURBVMEAYYgwQBgEA4QBMdjmxtQAYYgwQBgEA4QhwgBhEAwQhggDhEEwQBgQA+JVcEgtihMgDBEGCINggDBEGCAMggHCEGGAMAgGCANiQDQ3Ih4e18MQUQo7o5sfAcIQYYAwCBepSc6ClMLO6OYJEAbEYPe5MTVAGCIMEAbBAGGIMEAYBAOEIcIAYRAMEAbEsLa2pvYKY2dnp+qE+/fv8w0QhggDhEEwQBgiDBAGwQBhiDBAGAQDhEEwDIdDu6DY1ABhiDBAGAQDhCHCAGEQDBCGCAOEQTBAGBCDbW4OYs/uc/MwTiyFndHNjwBhiDCY5Mx+ctpSlJhAODMhDIIBwoAYbHNjaoAwRBggDIIBwhBhgDAIBghDhAHCIBggDIjBNjemBghDhAHCIBggDBEGCINggDBEGCAMggHCgBgQr4JDalGcAGGIMEAYBAOEIcIAYRAMEIYIA4RBMEAYEAOiuRHx8LgehohS2Bnd/AgQhggDhEG4SE1yFqQUdkY3T4AwIAa7z42pAcIQYYAwCAYIQ4QBwiAYIAwRBgiDYIAwIAa75sbUAGGIMEAYBAOEIcIAYRAMEIYIA4RBMEAYEINtbkwNEIYIA4RBMEAYIgwQBsEAYYgwQBgEA4QBMdjm5iDsPjd52H1uSjRAGCIMJjmERR62FHkQzkwIg2CAMCCGtbU1tV8Ye3t7VScMh0O+AcIQYYAwCAYIQ4QBwiAYIAwRBgiDYIAwCIbd3V1758bUAGGIMEAYBAOEIcIAYRAMEIYIA4RBMEAYEAPiVXBILYoTIAwRBgiDYIAwRBggDIIBwhBhgDAIBggDYkA0NyIeHtfDEFEKO6ObHwHCEGGAMAgXqUnOgpTCzujmCRAGxGD3uTE1QBgiDBAGwQBhiDBAGAQDhCHCAGEQDBAGxGDX3JgaIAwRBgiDYIAwRBggDIIBwhBhgDAIBggDYlhbW/s/8XCEMOZ8baYAAAAASUVORK5CYII=" alt="" />

前面是对实体的应用一般用在拥有主子关系的系统的。还有一种应用可能比较多见,那就是递归json,有个案例可以看一下,就是一个jsonArray字符串,我需要隐藏其中的某些节点,这里json的格式为含有chil

     /**
* var nodes = [
* {id: "node1",
* children: [
* {id: "node1_1"},
* {id: "node1_2"}
* ]}
*];
* 递归JSONArray 移除不需要的id,如果子节点都被移除了,那么其父节点也要被移除,以此类推
* 这里默认过滤最底层节点,如果要过滤所有,只需要稍加改造
* @param arr json数组
* @param 拥有的id
* @return
*/
@SuppressWarnings("unchecked")
public static int iterationMenu(JSONArray arr, List<String> ids) {
int f = 0;
for (Iterator<JSONObject> iterator = arr.iterator(); iterator.hasNext();) {
JSONObject level1Obj = (JSONObject) iterator.next();
if (level1Obj.containsKey("children")) {
int j = iterationMenu(level1Obj.getJSONArray("children"), ids);
if (level1Obj.containsKey("id") && ids.contains(level1Obj.getString("id"))) {
j++;
}
if (j == 0) {
iterator.remove();
} else {
f++;
}
} else {
if (level1Obj.containsKey("id")) {
if (!ids.contains(level1Obj.getString("id"))) {
iterator.remove();
} else {
f++;
}
}
}
}
return f;
}

只要了解了递归的执行顺序,那么上面的代码很容易理解!