From 5e767e212152dc47150b4866e22c471f57fb02ef Mon Sep 17 00:00:00 2001
From: qiusj <935836844@qq.com>
Date: Tue, 28 Nov 2023 17:09:45 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0geotools?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/article/db/qgisgrid.md | 21 ++
docs/article/gis/geotools/01startup.md | 154 +++++++++++
docs/article/gis/geotools/02feature.md | 261 ++++++++++++++++++
docs/article/gis/geotools/03Architecture.md | 133 +++++++++
docs/article/gis/geotools/GeoTools.emmx | Bin 0 -> 20918 bytes
.../images/image-20231120113304413.png | Bin 0 -> 58531 bytes
.../images/image-20231120142008338.png | Bin 0 -> 22987 bytes
.../images/image-20231128145948967.png | Bin 0 -> 31470 bytes
.../images/image-20231128165232067.png | Bin 0 -> 31133 bytes
9 files changed, 569 insertions(+)
create mode 100644 docs/article/db/qgisgrid.md
create mode 100644 docs/article/gis/geotools/01startup.md
create mode 100644 docs/article/gis/geotools/02feature.md
create mode 100644 docs/article/gis/geotools/03Architecture.md
create mode 100644 docs/article/gis/geotools/GeoTools.emmx
create mode 100644 docs/article/gis/geotools/images/image-20231120113304413.png
create mode 100644 docs/article/gis/geotools/images/image-20231120142008338.png
create mode 100644 docs/article/gis/geotools/images/image-20231128145948967.png
create mode 100644 docs/article/gis/geotools/images/image-20231128165232067.png
diff --git a/docs/article/db/qgisgrid.md b/docs/article/db/qgisgrid.md
new file mode 100644
index 0000000..c45b202
--- /dev/null
+++ b/docs/article/db/qgisgrid.md
@@ -0,0 +1,21 @@
+---
+title: Qgis制作网格
+date: 2023-11-18
+author: ac
+categries:
+ - GIS
+tags:
+ - Qgis
+ - grid
+---
+
+### Qgis 制作网格
+
+#### 1. 数据准备
+
+https://t{s}.tianditu.gov.cn/img_c/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=ea3530e6803b44025cfa81500eaae01f
+————————————————
+版权声明:本文为CSDN博主「wu_223」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
+原文链接:https://blog.csdn.net/qq_34790644/article/details/86535456
+
+http://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILECOL={x}&TILEROW={y}&TILEMATRIX={z}&tk=ea3530e6803b44025cfa81500eaae01f
\ No newline at end of file
diff --git a/docs/article/gis/geotools/01startup.md b/docs/article/gis/geotools/01startup.md
new file mode 100644
index 0000000..6c87557
--- /dev/null
+++ b/docs/article/gis/geotools/01startup.md
@@ -0,0 +1,154 @@
+---
+title: GeoTools-快速起步
+date: 2023-11-19
+author: ac
+categries:
+ - GIS
+tags:
+ - GeoTools
+---
+
+
+
+### GeoTools-快速起步
+
+#### 1.maven构建
+
+```shell
+ mvn archetype:generate -DgroupId=org.geotools -DartifactId=tutorial -Dversion=1.0-SNAPSHOT -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart
+```
+
+> archetype的意思就是模板原型的意思,原型是一个Maven项目模板工具包。
+
+
+
+
+
+#### 2. 添加依赖
+
+```xml
+
+ UTF-8
+ 1.7
+ 1.7
+
+ 31-SNAPSHOT
+ true
+
+
+
+
+
+ osgeo
+ OSGeo Release Repository
+ https://repo.osgeo.org/repository/release/
+ false
+ true
+
+
+ osgeo-snapshot
+ OSGeo Snapshot Repository
+ https://repo.osgeo.org/repository/snapshot/
+ true
+ false
+
+
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+ org.geotools
+ gt-shapefile
+ ${geotools.version}
+
+
+ org.geotools
+ gt-swing
+ ${geotools.version}
+
+
+```
+
+
+
+#### 3. 主程序
+
+```java
+import java.io.File;
+import java.util.logging.Logger;
+
+import org.geotools.api.data.FileDataStore;
+import org.geotools.api.data.FileDataStoreFinder;
+import org.geotools.api.data.SimpleFeatureSource;
+import org.geotools.map.FeatureLayer;
+import org.geotools.map.Layer;
+import org.geotools.map.MapContent;
+import org.geotools.styling.SLD;
+import org.geotools.api.style.Style;
+import org.geotools.swing.JMapFrame;
+import org.geotools.swing.data.JFileDataStoreChooser;
+
+/**
+ * Prompts the user for a shapefile and displays the contents on the screen in a map frame.
+ *
+ *
This is the GeoTools Quickstart application used in documentationa and tutorials. *
+ */
+public class Quickstart {
+ /**
+ * GeoTools Quickstart demo application.
+ * Prompts the user for a shapefile and displays its
+ * contents on the screen in a map frame
+ */
+ public static void main(String[] args) throws Exception {
+
+ File file = JFileDataStoreChooser.showOpenFile("shp", null);
+ if (file == null) {
+ return;
+ }
+
+ FileDataStore store = FileDataStoreFinder.getDataStore(file);
+ SimpleFeatureSource featureSource = store.getFeatureSource();
+
+ // Create a map content and add our shapefile to it
+ MapContent map = new MapContent();
+ map.setTitle("Quickstart");
+
+ Style style = SLD.createSimpleStyle(featureSource.getSchema());
+ Layer layer = new FeatureLayer(featureSource, style);
+ map.addLayer(layer);
+
+ // Now display the map
+ JMapFrame.showMap(map);
+ }
+}
+```
+
+选择一份`shp`文件,程序会读取该文件添加到mapContent面板中。
+
+
+
+注意:shp文件没有被加载到内存中,而是每次需要时都从磁盘读取它。这种方式允许您处理大于内存的数据集。
+
+
+
+#### 4. advance
+
+为了更好的交互体验,我们可以通过`DataStoreFinder`获取数据源时添加额外的参数,如设置缓存、创建空间索引等方法来优化。
+
+```java
+File file = JFileDataStoreChooser.showOpenFile("shp", null);
+
+Map params = new HashMap<>();
+params.put("url", file.toURI().toURL());
+params.put("create spatial index", true);
+params.put("memory mapped buffer", true);
+params.put("charset", "UTF-8");
+
+DataStore store = DataStoreFinder.getDataStore(params);
+SimpleFeatureSource featureSource = store.getFeatureSource(store.getTypeNames()[0]);
+```
+
diff --git a/docs/article/gis/geotools/02feature.md b/docs/article/gis/geotools/02feature.md
new file mode 100644
index 0000000..ea28317
--- /dev/null
+++ b/docs/article/gis/geotools/02feature.md
@@ -0,0 +1,261 @@
+---
+title: GeoTools-创建要素Feature
+date: 2023-11-19
+author: ac
+categries:
+ - GIS
+tags:
+ - GeoTools
+---
+
+### GeoTools-创建要素
+
+> csv2shp,通过csv转点shp文件,学习:
+>
+> 1. 如何创建`FeatureType`、`FeatureCollection`和`Features`;
+> 2. 通过`GeometryFactory`构建`Points`点集;
+> 3. 输出shp文件;
+> 4. 设置投影。
+
+#### 1.数据准备
+
+下载一份[csv文件](https://docs.geotools.org/latest/userguide/_downloads/d4bcf8751cc3f33a9fb673902a960e53/locations.csv) ,内容格式如下:
+
+```text
+LAT, LON, CITY, NUMBER
+46.066667, 11.116667, Trento, 140
+44.9441, -93.0852, St Paul, 125
+13.752222, 100.493889, Bangkok, 150
+45.420833, -75.69, Ottawa, 200
+44.9801, -93.251867, Minneapolis, 350
+46.519833, 6.6335, Lausanne, 560
+48.428611, -123.365556, Victoria, 721
+-33.925278, 18.423889, Cape Town, 550
+-33.859972, 151.211111, Sydney, 436
+41.383333, 2.183333, Barcelona, 914
+39.739167, -104.984722, Denver, 869
+52.95, -1.133333, Nottingham, 800
+45.52, -122.681944, Portland, 840
+37.5667,129.681944,Seoul,473
+50.733992,7.099814,Bonn,700,2016
+```
+
+
+
+#### 2.添加依赖
+
+```xml
+
+
+ org.geotools
+ gt-shapefile
+ ${geotools.version}
+
+
+ org.geotools
+ gt-epsg-hsql
+ ${geotools.version}
+
+
+
+
+ osgeo
+ OSGeo Release Repository
+ https://repo.osgeo.org/repository/release/
+ false
+ true
+
+
+ osgeo-snapshot
+ OSGeo Snapshot Repository
+ https://repo.osgeo.org/repository/snapshot/
+ true
+ false
+
+
+```
+
+
+
+#### 3. 示例
+
+```java
+package learning;
+
+import org.geotools.api.feature.simple.SimpleFeature;
+import org.geotools.api.feature.simple.SimpleFeatureType;
+import org.geotools.data.DataUtilities;
+import org.geotools.data.shapefile.ShapefileDataStore;
+import org.geotools.data.shapefile.ShapefileDataStoreFactory;
+import org.geotools.feature.simple.SimpleFeatureBuilder;
+import org.geotools.geometry.jts.JTSFactoryFinder;
+import org.geotools.swing.data.JFileDataStoreChooser;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
+
+import javax.swing.*;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author ac
+ * @date 2023/11/20 15:44
+ */
+public class Csv2Shape {
+ public static void main(String[] args) throws Exception {
+ // Set cross-platform look & feel for compatability
+ UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
+
+ File file = JFileDataStoreChooser.showOpenFile("csv", null);
+ if (file == null) {
+ return;
+ }
+
+ /*
+ * We use the DataUtilities class to create a FeatureType that will describe the data in our
+ * shapefile.
+ *
+ * See also the createFeatureType method below for another, more flexible approach.
+ *
+ * 通过 DataUtilities 创建 FeatureType ,类似定义shp文件的名称、几何类型、属性字段、空间参考等信息。
+ */
+ final SimpleFeatureType TYPE =
+ DataUtilities.createType(
+ "Location",
+ "the_geom:Point:srid=4326,"
+ + // <- the geometry attribute: Point type
+ "name:String,"
+ + // <- a String attribute
+ "number:Integer" // a number attribute
+ );
+ System.out.println("TYPE:" + TYPE);
+
+ /*
+ * A list to collect features as we create them.
+ */
+ List features = new ArrayList<>();
+
+ /*
+ * GeometryFactory will be used to create the geometry attribute of each feature,
+ * using a Point object for the location.
+ * 创建几何工厂实例,要素构建者实例
+ * 通过缓冲流一行行读取,解析数据,构建Point实例
+ */
+ GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
+ SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(TYPE);
+
+ try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
+ /* First line of the data file is the header */
+ String line = reader.readLine();
+ System.out.println("Header: " + line);
+
+ for (line = reader.readLine(); line != null; line = reader.readLine()) {
+ if (line.trim().length() > 0) { // skip blank lines
+ String[] tokens = line.split("\\,");
+
+ double latitude = Double.parseDouble(tokens[0]);
+ double longitude = Double.parseDouble(tokens[1]);
+ String name = tokens[2].trim();
+ int number = Integer.parseInt(tokens[3].trim());
+
+ /* Longitude (= x coord) first ! */
+ // 创建几何实例geometry - point
+ Point point = geometryFactory.createPoint(new Coordinate(longitude, latitude));
+
+ // 创建要素实例feature
+ // feature
+ // ↙ ↘
+ // geometry properties
+
+ featureBuilder.add(point);
+ featureBuilder.add(name);
+ featureBuilder.add(number);
+ SimpleFeature feature = featureBuilder.buildFeature(null);
+ features.add(feature);
+ }
+ }
+ }
+
+ /*
+ * Get an output file name and create the new shapefile
+ *
+ * 设置输出路径
+ */
+ File newFile = getNewShapeFile(file);
+
+ // 创建数据存储工厂实例
+ ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory();
+
+ Map params = new HashMap<>();
+ params.put("url", newFile.toURI().toURL());
+ params.put("create spatial index", Boolean.TRUE);
+
+ // 创建新的数据存储,会输出shp文件
+ ShapefileDataStore newDataStore = (ShapefileDataStore) dataStoreFactory.createNewDataStore(params);
+
+ /*
+ * TYPE is used as a template to describe the file contents
+ * 添加类型描述
+ */
+ newDataStore.createSchema(TYPE);
+ }
+ /**
+ * Prompt the user for the name and path to use for the output shapefile
+ * 弹窗让用户选择新生成的shp文件的保存位置
+ *
+ * @param csvFile the input csv file used to create a default shapefile name
+ * @return name and path for the shapefile as a new File object
+ */
+ private static File getNewShapeFile(File csvFile) {
+ String path = csvFile.getAbsolutePath();
+ String newPath = path.substring(0, path.length() - 4) + ".shp";
+
+ JFileDataStoreChooser chooser = new JFileDataStoreChooser("shp");
+ chooser.setDialogTitle("Save shapefile");
+ chooser.setSelectedFile(new File(newPath));
+
+ int returnVal = chooser.showSaveDialog(null);
+
+ if (returnVal != JFileDataStoreChooser.APPROVE_OPTION) {
+ // the user cancelled the dialog
+ System.exit(0);
+ }
+
+ File newFile = chooser.getSelectedFile();
+ if (newFile.equals(csvFile)) {
+ System.out.println("Error: cannot replace " + csvFile);
+ System.exit(0);
+ }
+
+ return newFile;
+ }
+}
+
+```
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#### 参考文章
+
+[1] Feature Tutorial https://docs.geotools.org/latest/userguide/tutorial/feature/csv2shp.html
diff --git a/docs/article/gis/geotools/03Architecture.md b/docs/article/gis/geotools/03Architecture.md
new file mode 100644
index 0000000..207e214
--- /dev/null
+++ b/docs/article/gis/geotools/03Architecture.md
@@ -0,0 +1,133 @@
+---
+title: GeoTools-简介
+date: 2023-11-28
+author: ac
+categries:
+ - GIS
+tags:
+ - GeoTools
+---
+
+### GeoTools-简介
+
+### 1.简介
+
+GeoTools是一个开源(LGPL) Java代码库,它为地理空间数据的操作提供了符合标准的方法,例如实现地理信息系统。GeoTools库数据结构基于开放地理空间联盟(OGC)规范。
+
+了解GeoTools库是如何构建的,这有助于您找出需要在应用程序中包含哪些jar。
+
+### 2. GeoTools 库
+
+
+
+GeoTools库形成了一个软件“堆栈”,每个模块都建立在前一个定义的模块之上。
+
+“堆栈”的每一层都是建立在下一层之上的,例如:
+
+- 如果要使用`Referencing` ,你需要先使用`gt-api`,`gt-metadata`,`gt-references`,为了确保`EPSG`codes的正确,还需要使用一个插件`gt-epsg-hsql`来定义EPSG。
+- 如果要使用`Coverage`,需要使用`gt-api`,`gt-metadata`,`gt-referencing(包含gt-epsg-hsql)`,`gt-main`和`gt-coverage`。为了充分利用Coverage模块,我们使用了一个插件,比如`gt-geotiff`来访问`GeoTIFF`文件。
+
+`Maven`工具能够计算项目中需要的`jar`.
+
+下面是各个模块的作用:
+
+| Module | Purpose |
+| :--------------- | :----------------------------------------------------------- |
+| `gt-render` | Map API, with Java2D rendering engine for mapping. |
+| `gt-jdbc` | Implements for accessing spatial database |
+| `gt-xml` | Implements of common spatial XML formats |
+| `gt-cql` | Implements of Common Query Language for filters |
+| `gt-coverage` | Implementation for accessing raster information |
+| `gt-main` | Data API, with default implementations of filter, feature, etc… |
+| `gt-referencing` | Implementation of co-ordinate location and transformation |
+| `gt-metadata` | Implementation of identification and description |
+| `gt-api` | Definition of interfaces for common spatial concepts |
+| `jts` | JTS Topology Suite (external library) implementing Geometry |
+
+### 3. GeoTools 插件
+
+GeoTools提供插件来支持额外的数据格式和不同的坐标参考系统等功能。
+
+| Module | JAR | Plugin |
+| :--------------- | :------------------ | :------------------------------- |
+| `gt-render` | | |
+| `gt-jdbc` | `gt-jdbc-db2` | Geometry in DB2 |
+| | `gt-jdbc-h2` | Pure Java “H2” database |
+| | `gt-jdbc-mysql` | Geometry in MySQL |
+| | `gt-jdbc-oracle` | Oracle SDO Geometry |
+| | `gt-jdbc-postgis` | PostgreSQL extension PostGIS |
+| | `gt-jdbc-sqlserver` | SQL Server |
+| | `gt-jdbc-hana` | SAP HANA |
+| `gt-xml` | | |
+| `gt-cql` | | |
+| `gt-main` | `gt-shape` | Shapefile read/write support |
+| | `gt-wfs` | WFS read/write support |
+| `gt-coverage` | `gt-geotiff` | GeoTIFF raster format |
+| | `gt-arcgrid` | arcgrid format |
+| | `gt-mif` | MIF format |
+| | `gt-image` | JPG, PNG, TIFF formats |
+| `gt-referencing` | `epsg-access` . | Official EPSG database in Access |
+| | `epsg-hsql` | Pure Java port of EPSG database |
+| | `epsg-wkt` | Lightweight copy of EPSG codes |
+| | `epsg-postgresql` | PostgreSQL port of EPSG database |
+| `gt-metadata` | | |
+| `gt-api` | | |
+| `jts` | | |
+
+通常,每个层至少需要一个插件才能让GeoTools做一些事情。
+
+
+
+### 4.GeoTools 扩展
+
+更进一步,在GeoTools库的基础上实现了一些有趣的“扩展”。这些扩展提供了使用核心库的全部功能构建在GeoTools之上的额外功能。
+
+
+
+这些扩展相互独立,可能在您的应用程序中使用:
+
+| JAR | Extension |
+| :-------------- | :--------------------------------------------------- |
+| `gt-app-schema` | Map from application schema to complex feature model |
+| `gt-brewer` | Generation of styles using color brewer |
+| `gt-complex` | Support for making custom complex feature model |
+| `gt-graph` | Work with graph and network traversals |
+| `gt-grid` | Dynamicly generate features from grid definiton |
+| `gt-transform` | Transform features on the fly |
+| `gt-wms` | Web Map Server client |
+| `gt-wmts` | Web Map Tile Server client |
+| `gt-xsd` | Parsing/Encoding for common OGC schemas |
+
+### 5.XML
+
+为了支持GeoTools中的XML模块,我们以JAR形式捆绑了几个XML模式(以避免每次需要时都需要从Internet下载它们)。此外,这些jar包含一个由Eclipse Modeling Framework生成的Java数据结构。
+
+| JAR | Schema |
+| :---------------- | :---------------------------- |
+| `net.opengis.ows` | open web services schema |
+| `net.opengis.wfs` | web feature service |
+| `net.opengis.wps` | web processing service schema |
+| `net.opengis.wcs` | web coverage service schema |
+| `net.opengis.wfs` | web feature service schema |
+| `org.w3.xlink` | XLink schema |
+
+XSD解析器通过一系列XSD插件使用这些工具。这些插件指示如何使用Eclipse XSD库解析和编码附加内容,以解析XML模式文档,并提供“绑定”,显示如何解析和编码Java类,如String、Date、URL和Geometry。
+
+| JAR | Bindings |
+| :-------------- | :-------------------------------- |
+| `gt-xsd-core` | Basic types defined by XML schema |
+| `gt-xsd-fes` | filter 2.0 |
+| `gt-xsd-filter` | filter (used by OGC CAT and WFS) |
+| `gt-xsd-kml` | keyhole markup language |
+| `gt-xsd-wfs` | web feature service |
+| `gt-xsd-wps` | web processing service |
+| `gt-xsd-gml3` | geographic markup language 3 |
+| `gt-xsd-gml2` | geographic markup language 2 |
+| `gt-xsd-ows` | open web services |
+| `gt-xsd-wcs` | web coverage service |
+| `gt-xsd-wms` | web map service |
+| `gt-xsd-sld` | style layer descriptor |
+
+#### 参考文章
+
+[1] architecture https://docs.geotools.org/latest/userguide/welcome/architecture.html
diff --git a/docs/article/gis/geotools/GeoTools.emmx b/docs/article/gis/geotools/GeoTools.emmx
new file mode 100644
index 0000000000000000000000000000000000000000..d210afc5e9927f8c54c9376a7373f2bef36532ca
GIT binary patch
literal 20918
zcmZ7dQ;;xB6Euj9ZQHhO+qON=*tTukwr$(CZSVV?6S2GhUQ}OnL`PjzR!3H5l!7!c
z2nqlI00aP}zqfigP@HrPAOHY62mk=gf43%f#xAy||D5UEZEbv#4ebgA5JLO(7yks_
z<#hAUE8S(4mG2U-S|VC~cY_p52kCTETT3te`gE7o)M-dSPJPUFP0a{=sOS2tvZ={k_{edyC@U^&*jqh00qK$UIf4AHr%xYkFFOwl>hs
zH3VXDPSY!^7a$44##yJFa=aUdS&-|HDK8)Csq;ng)7FuCq)>YM?Q#dR6lv!yi2&c%
z3O@y@@1gB8Y*$6fMYqpnXoG2@KO?^tx>ta;s{2H1Nf|&dTv@Q=%nZho%C&c5^naQU%BoDo24PPC9afrY^MT0Hwx6)+o@+0|&(E*)394`&z9
zBFUqvUDT;|f`7g{;;R_7**}JMBtwT?J&+tjCnoI+N(lcJuOFz$R&H5oZ@@U!HXs`$
zS+Y7W;7eZ3c1iC1%hy^0z+a(3ti_`ksw
z{_nEB=e($G)p|mn!vg@YApNh<006eObVk;eZkDWRA+C=wYqkz)K(x1rfyh9F0Rj-W
zq#P&}LeR8I1)tqLFMWF)N85uqUUjT%DUh#T*V7)W4Il0LdCA0gim-=nsf`|k;DWZL
z3N`Nrs{Q!p*wb&DBPWPqMa5v^s|#OUk5sq`Rl^H@9B9r>zlcG|RquSf_$IM2f|{1x
zXk_wohcbf$4t~D&nR4oRR>+W~AT)C+zgk5H9;U`g9O@gph!UZ~YZGh1O+lrg3jTN+Y#>A6~Bs6?EB?ybQT)?5)$&ruHp_&!M}^_b*7{nnK27gjE7
zwv+LO)Yl!sMxX+|V%}OLrX^+a%jvyImu&%XqhpfE@_u$VC^DW9?jho}FC4!eK
zBz!jPagjA)FJT2n1^(~K)BfY3`N=%v@FnSTjCCeHpT<^x^8-yK(@uSK`iRLWg0FQN
zBvtF2Vm-6pAfn{xP3sM-5s)uhZzk%s_o|nYTl(QXUJnTLJia#g-JXma`iyo=_^gW$
z_*7F_R^f|*1wj5j;)*`y8y95H`Z8}4@aH6~V{AU45SF1xzeEjrw)|3-EG-hIxC1&d4ELX>;DQu6G&vzA}~z5%WkDMI>fq&lH=D^+`KV
zec?SVI9rYu5ldWTRu1igoUmg3MgLwhd5=+i+Jplb9=<$M*gL^up7_2j)U$~Be6A-<
z8xasZTlfh@9#k?ZqJP$c*i*FaP}}+D*fn=`D)PIt&JR*c`xPXN+x{N`Pt2~fTk}TJz<5XBZ{4-M{fu>aGo3v
z)HAHU)_h91(Ej579{+a!0OJY_*}NSVW^xMM$rr++A?nOkFAp2WY;MZy(a4l1eviDD
z8v*?bf0X@J{YlV?bz?IA)R}=kf;WDknO-XUOm|QkwOFIaTrDPW+&`U
z;G{#%%n^c@@DOXiHUHFX_Us~D?I&}T@)y}k&b>Z
zckSx6rLnAeVi+gQhK96V4OtnbjIWGNy>AP)Dvbd|o@RX~QcnZ0^kuLJX@Az~jxZPW
z@jEMcx3eOGuZ{fY-;}j0|)edZ{&fCcEA35<DBJR(@O
zG+-TrFNp{MHi5QMM5PqR^UQ3raM|b!ei6c)m3*)0{U~z4L5Db#)qS>CU|*yI$QFOM
zVZyTKqq5-hTQ~YY3q9XIIqS1X$$Q0UDdt6Z+$~D0gocQaN{LK|hq?u}>wy?({l3wk
z$zkZGX?fI6Pom}}7u_i`h!mMiOs35>R8U|B@O(^pZsa_K9*f+5ni>h<+OxG;?$(7U
zQBdY{XfD+&(1;c2A&;pih+1)>;!x)VKTjV-^P*YN1Id-?MvuXzP?Erd2&&-BYhEqc
z29({4qf`3u(J1Arlg$C7%Q|!XgoFsP2PG%L!B8}YK>IWvsYCLD2}C
z0J=4%|BZQmWMWpNEys^z9Z(zv#9P1Fp(CbgtpC8G&^w-!VhNfH3xW4PWX+ie(Hw_4
z7uv$~*r&?qK<%)Ny`|5PONIn(E&84ei*?KJH+J#PDH8E8I8BSd>`p7mB`k)4j^FlW
z>x1m|_9Ua9QVh6On(k(pK)dcUs_`*F2?oYqmSpaFO4m}R$Qm4sG__nEsuY8a)kZJ(
zPm=w-c@E#-o=V4&Nn>RuCJglNBb|7#w0H??E}ciJo|dy?Qc#c-;rZ3I05B)ltkfW2
z@@$}s^AbN^2`ecDUiXhZvkNb$`QJ}V^nKvEiT(HMjRq8dxdQ3i3uS-3)v&U8KCf
zndF{uys=PoVHVeF*t`zXOlg68GlE_xChiYTq+jC29HEE-1W38RkpS
z!<4T*#PwFN`?iLYW|IaQU!R)xCB90fT9*+jU?^Mlz{oYAik+K$;JBSc?k9AImhzY|
zICoJXFJj%THxL5D!MlY1dGMq6NFGR!Fed+_PM|``=B9m|;{O|udKYMC8`6t!TWE9H#ygNljM2uE=<8yCI
z(Jnx4mQ`^C{4IruPUSXU}BhgKS
z=LUAmR|J(M@pTBOG_$LjyFE6H=7U=dH5h$9#D?6TH
zZCdVJ-EC@{X03T#8VsF-!bszRf$Ag9dj4yjMdqFGcVp~5IKLMZA$r?Zn0K$oZ$zI;I~X;K$!vA
zB>3C^sqgasqXf8|sP#$5Cgjp|H-bhw_Q*mIC9UuC9ZL+?IGfbLZkIAyv)da6e;JJU
za#7#Y0#@_cEJ!%BYqi5a%oP#h>HuiHmQ8gO>s_30=i=#xB+tZimpD3-ZTpeQ20#OG
z_=8MJvpu&Cl_?B4hgqzQHqz)`U
zvBvbFcr~<1|FCR}q6V^NSi0Xkt7&)TX6vASyAkuP<6V709Z+=bij~~fdZTRP+tsr&
zHM!0noqxhbwm%djQtsdFP<(#zG>Rkv^6vrfDGW)Jo^9(`hOOw_0Pr82?+-HzO?yQ=-{dXI89wl(?T-hRZPMwJ1J+3IL
zhQYpd&6(%aKuY)UH~EvzA{9UOT#UiIB<#
zQxG1F%SYcwqULd4$O$elw`4wD${QMd)K~iR$@*o0mqXvcHn`>*;W7Nx#J(|EInF{~TruM&C$2s}V=1g`gi@v$
zdC?x`5!HSDn{qn!pOTF56$fEkO1tRTr7yAa^}n&Kj(<73M>QVV&MW(NwfZ;0s3K
zWd5|=@UBL50s#6BB%kq2=AhfoobCRJW~Xfari!aG!e2i>(BKa&`_SJk1~4HGWI=W1
zb9bVLsyq9x(3jz;pBnl0JpyTTQW5wWkuGoi*2Th@H67tTIWbX2aC-|}@=^1vu+3;v
z^Iu~#RDTrd$w+{rq6D;O73}I@K<~eqGkwneX|f>{Dog%NP_)U!Z1ddg{p5MmU;|<0
zhp*byGN!Y>-1SHkDyIWjY8QKZZAUj-h1(}SmeqmT30Dv1{0D%8Qf&bJ1dqZ&p5f8W)7J!BH3*j
z26mkn{MFoy6o^vrX4IE+W>f?XG)EX73X=@bQPMRr7=J
zH#SQ6M9!*-TUdv)qlNOD3G0%9HU9(0f=u0
z-suAno1lyT`yBNr=Ozn&5J3A5M?OXiGs))0l5{3V(gHh&Vhi`S`}0S$JIwm=8Z59s
ze;WdPO+*kcop-~=WCq^HOMav`#_qWbHdopQuTst%v=bZCv;T
zkV)8KwRgp4`K`1hFt^)odtO`p{=`RL1G*s4ucB}yDod}5F;>Yg#%DSbEDmaT>g;K-
z;LmYvFYu)E2=d89+OJOwY*BBPmQERT)E!IkY)&`D?F0G-`ah8)OF_Fe_Md=Mrvv~1
z`yX=tAKd(>58mj=+HH?w_P(hjOlvk}A9%;t7x!yv#sE?)G({S}jaE}c+}}DjNOP*m
z-4uxVms&&?UJzO?flx&1*%VoLg)e<))|&oA&B9Eatl6hkk&>1b1fz~)&T`*%GtWIu
z+ncp~ye1t8cwNht=JIbY5;8c?;J*A2+c`Iu^!c^78D7}g+2L`J*Sfm7NwdQ~0K@*S
zAAGFuEQ-d~_FTbyyqv84b$&0gV=Jur-hK)HlU?(5J$=Ey;a(Eg?kos%g(LfQ@9g;q
za6`$qdTVnw!P2<1vFknZBrgk)2tdIkD)|!F6%2H?70={GFcX;-PB0b}Hp?d|TFZM6
z3ZO9uNG#@&DREZP+jg4$Y4TU!#pd?eHG4>>q}`z}4xWqjqJr)E>CfB7b0;UhC}qLj
z+Ij*D;`L*42Fmqhcn}kugPk4S%tZ(By<2tx-pF-JocfwLiCyw@W_p+t6Ms|_i)>SB
zW`jZMYsjeW;eUKTu`joN+deYb%gA;wgcsd=KYG6LDpcSy96S35qfEIyHKgo@;mU+2
zievX&@RtBl<$Cs>-lnP-itBS`ap+wvF53CqpEpi1Qxgm-f+Z(|-zonn*`sWJO=gLk
zF-}aK6hc1Fa1_wmxA!7WjOnEKG>j=5=i#pmJTV?y_>3SF4q#Rxjwnp#AAT&ZM6Md*
zOmRK?9X{*)%xj0ji>Bwt;3hVD%DYhV5WiS-)-|iKJ=M)2ixHE#^8~(&SVtc1h-80p
zMToC%!~z9uhl_7a@WrscLTzf;73^Yv@|Hov!DWX47VRb7~~#RShJkgi(pNA3)_4l(3CP+Lp_%wTjDbwgKP$NbiYJVx4)e2{o>
z3wj3ZHjBnh7q%yu&l@gzYdCJnb2WQTF)7dr3z6cnTnr!yB^@BRh21XiZJ7?95*MM&
z$0vU4jO9f}JsTLw0#5~{t-uOQWdSsesuTfc0T_J#nLnsTSbdEmal1`g+vR6mfg760@Z-KsG{9dfy+AvHIl&in>dF
z5DM7DenoLGlDYy=6L7Ua!_a`JS}dir(;6_vbPbpaF`-n@w90&vwj4`W-FCUTzVov4
z(rT&_TSs*RElvM0G0l=QK8TbO1jD>ur|7|WJqrr5zcMMJ~m>z
z?uO(ft#+R3NLo{olp*3~BynAc8e0RIETDy
zY76amJX0W`=I`%pcN-mlD>_s*E{oP&1kNPdl|
z$c}UruDvEHf|)NSW@6@oHiuru(-@HxanJru70jAv6>bo`3tlKM$iaKU!R7ob=)#N~
z<4G-UB(Gk@eD~TzDRi7K*^Mx*KzqLbTlizF6SSZKscnF#4H94qj?geH`0GQO3@k&E
ziv=_MRn7tw`%=;qWYuK8zayd}jKcQEb=*><``_epOuS_RsS~V=EupMYzi~F~#J0&`
z8s{B)h<_#}zQJMFBKSq~dV2$Ast3)Tu$$$O+e!=Bta+#10D!`}!dq^^a*HT#8^t8|
zWoOr9rfV8lb@h@O=0{tK%N>oal-mU|>x{i=@L>{@Ti78>EPsx)D^ZhUY&;J&F|DX(
zu6Bl*e2>P4GChaiItLbY&o)qJnvInc6I*L0swM&Q2W>xa&$z~#D?W=ds;z@2@
zJxrxUtEHLVbSukHD~)_Bi+rmM<=SDT4zz4@xD6#G>DGC^xO8h(V$ICtMCxLy4RsqOtjo)%@=Ho*y$K>4^5CZLaeLYkaNh6q%%SC+&q^gtP4ZB|N>}
z&*{c>Qd!;aw`NW8l-8oHq?^lPOD6eFrfcbck0jruilYWb_WF9hkNEX{Ue?y;`YKYK
zPrUM`>3~`61SQ_fPL5LJ)X$79R8Ea8=njpA1RwI9oHqw5Pnw6~;^H*_U9ruK@$8a{
z$7%D;J}?3{?eY2jw3Ri<^VcOs4-zI
z8FA~&yET%71?}tOENe
zLTlE6jno&iZXs9*+(@IRrFWjytQ`R@L
zbF?*dcKV+)T9UjYHN=1sItO}3IBaa2d0QrQIWH-QkZk*#jh1FR(2Uy@`LqpvzwR{;
zjnIQVuoI%+>1sU)gu0Y;S~Qo{W|tV}f@d6o_kJx`Ea|_)8;B_XZ?QmP6tEW~xQp)=
z$HuOKA!kGp%nkzVs+1{b2erusG)E^0?1ixt=6<#uW4*y=z2Ac2fN{=Rp?t!lc2+Sx
zk_5V59m-vV7vtp};xrhcDs`*XqD87kOqtiEx%^;?v;>TBp?pIlV0r<_q#&LtnweHX
zm6}Eboh0Pw6;(#q$WM#&yw!tA^4jwo=GXy*Iznkx95Fn-$;_{=9@uIwA9+F=(Bhn(7Ue)+yF+Ep`*?d`9SxMv)%u^VueW5VDfY9Dy
ziv0)re{x=u`>l7b|0@5#_|HE5e<9$1SomN0n;PoIXA~)
za<(wFHT_?L8*OR3B>{w9;s<;hrvTvwTyFY_0xKb6RVzhHB96Knm&VAW7@M%x?GM20
z4kCvjeEw(CQu)Q^-#?
z*Z4i_@uP9x@`K`hM|m!fop@NLeISCp!8F(mojyR}_4v3P0G-Lj
zhAScN!e@5_uJ#aK90piVrt|STK|8fXN#=pr88V(m+jH@f(C=!SHQconW2qDc7-){z
zOa-gp!peSHY)Db%ig;snT5dvBh>;q=@_^t%MNsm&4gXWv7AfAp|y9RH7A|
zV2PJXy<7E47hJU+q-t`X`ckqOg%*~fjZ!>?E^OK}f=Gk?rYASaY|^_hx__4=i?JJ9
zNZ&x?b^(YfCRbJONIF}In-{!aL8qPlj8ey1$DW%1MUj(ke!y>=&fLGE%a6mcUMCcg
z_r!@*(~2Oz!5;3~ET}uf*bSk8oBvcuPq}YC7=>Z&vnxKX{ztWJB>cM$LCLKJq1KT$
zlwsYIV0wUl)s80shLr4HW45u>mJ(h|Wrfz(E$pmlrqMlRfN-Xydr*LODmOfU(!?d{
zX}E#|f$rm14f>85;!u$-!pq8(LTYm)AVuESV;SoCMC9zBb5-wbqNJyS@wL(dw1-mOx?CK5>VC(2r9rYyrF!?^euv
z@0hbjxQ58jK%Lx4nL&EkqUPyn5~`_*QPJ`tsgWzk+JszFgK0wSeSLo)FGsIaWm|c9
zC1>pVeLWhVHsvut7LTMWmg$Z
zTNiiTI|JDoHxBX{#rQ(rk#05J=$|8WpuZwMY4|C!Zoniw2(Sh5LkXLDk#)V|`C?|D
ze`6J~%HsF@(kt$7@@$MhYF!>6Hkdn0*r2{x46tYuhH$vg#N|q$A)F3XMNWY{353?+
zzbr^{g39HQ`O)!Gj0KZcl@N5u14(lY%z1ETCsU}ic>w2zjwlkAR<75?W?I7{CXT~%
zLM!c~jkVE|nqmB}X~v?07>ylei2e?#H$8s;Ka={#`r2$5H2{DO&HsN=ceZe`HTq|0
zX+vlK&s^3MR7F*H`KF*txR?}$o{}I32}o&CcadOmCq|;pS<)@YIVilj+27d>vU}$3
zt>|Y~Owi^K7^0Ewba3$18+#vTsC)Tr`XTLRw2o2QqNKe&9?}#ob;vWN8ra??0l>
zf=d9=b@l*H7l4=r6If1Y>7aMaB#wB4y1%!*J#F~9^z`eg40Rgg`F4-AQ!7ax
zp_-RCq|z!>_W}zF1_J7wXrKP8fiJgc>XC?tsk1=V`3;w%#g+Q6J~25l287v?<9z>y
zHk&08pNa|>kqFkMIg*?7@aaWab&WMTEipicGbEm+N3N{0OyRTu!?CCv6$$%#Q(1!F
zZ@X~XK*>uuFC>&=$jtF5n
zLwH(py@pB{`lA>A3NsDNt1wMglgShRHp7fv-7McRkpS|fQj<_sYw>8visPc(#dAe+
zXCBxy1|_a{Tn6e6>Gx5peqwGyGlym+7Le96+v((>Z`+`@8#A+KhWeP(tR4i1he-{6k6
zRp*j_dpf!6@@oduH0yQsQbdA5*kHjac)UiMr7MqqC{MiVo;Ri>is-Dybv@Zmv)KFb
z*ilJS@c!0@h?G=ROABktq?R&Dkt2!1SS$op_y;5CFC(U%%_V`DGKZxkzU=CB
z&iOhXzK~q2#Z}=L^@7#s^SCT
z9EoUe`1b}z;NZ9UdB{H|UG;7+aHxEVFK?NBLmurmpkcv;3)JNo3vgWgV!eThFh;NK
zC9$J>){7*g=yPQ>$d3znm|_>1W>sn;R1f4h#w*GA&5z88N5iT|_mLyHbcj5LU>9;^
zMKmVm;LK$+V>^SYqi5Z&A>CaLN3Pj8sw%4H#VdO;_4}Y4n;ayo(0$U8FUy~$aL&J`
zy|_4}b5&DP-EG)kcHtbx5Q6M8Af|ZNlZ}nIXvVQpWBjU=4LyRMmzc2NR@l!ZX~@h+
zbbjvp)a>n70!mhPh89}*K);W}QKZTnubY^JQzrEAVvm#yt0>s#_j_Y+kDrZg_4Uos
zqAZ{x038L$YD@s9l7TO4NNv
z?w4*)pJlz~h0$8=Y-Ky!cHl0`EamXXvBVcAx`dvJYBPrpIxce1;Sh4;0=a`M!E(stt69mWo3n6$XMG6GdM;p$B~Aqw&};?9|N9UVPF}kBUvkBc!okwxiB^2WV+4o?aV3wxZlZd@fyP+
z-trD?QN9y9Zk(cKc&RlLrrdSe^Lm!j+8+GB{{2%9dolzQ&BVYB17)c6wdu-!m71EG
zj=n3a;&s+yv`u_`XFiniGoLRrF8x2m_FZe@k!laqKI>!YsX}+5cIo^%H;dMh6Na3<
zk==oU5gU%w7^j&~FB@A{BKY4&0|&hHLNk@{y>jyB1+&iuDzGVAJper%Hs5?+y7v#A
z-k$>{>iV|%8@-t7ia{DXG4WhI{j>hG)YN(Cp)R&MZG^lXn~!YozM<}Mvin5UAytyX^1tEVJnct~pc+$ZwLT>PIhzqr_3WrH9EK
z9^Of(qVV07qZzwCl&LhJEHIPWhm;fg6o!s=Wnorfc(*Bd!7doV3$>K;
z3AV{^S`ge0GJv7x{X<^B?#jh}L4{(IvPYZ@Q|QoBqmJAK>N34wpO#8KEOg4xXr;eI
zt&Wn<;JNYw>=LQV%QRFzx9H~PjwdN5M@QnbE@q406fHeEx#H0C@J57X)A0K-IpRT>
z1*H9U#o^Oa$5nie)i&+Qdwr90VXuPN7GsIxXCL=5k;ktA5;^0-)=m9!d#c0u_8_gY
zoxYfaWj9HhuNheNFW9L^OCHy)qmPw8*vsO|QD3Mc2+#7sIs*rb8YH4T?=U?Nea)NrdNl1EN_RULA>L(+tdLFGM`NSs5N4)j~M&
zpYIPRfQNjcK*^SN9>95yEUeIn?o=D~YWsT+(iG;n!_950C>aL?tv;fU5M*O`85
zlRpQ$^!j806nf=^Ih02(y_*|Yzr)5(KUgLr@-VW0^A0uig$)f2t*x&Sz2?*BW;55h
zly9Tmxrb>xn%C-YT(PS4Ygdv_{*?Pulv0v32QZEe&{*CX=UPBUp&ts;p}y%V^==k^|qe-qQw
z)qQPkwW7^a^Hk`HgkpkjX^q47h7o7G^Tdtklgi`j#A}B>+(Ch$N~2kWpMZO@-JJSj
zlB-nY7_umY|~?oSma`bY~*Iz)ve
z^oz_q5U^Iu6pktiAwjVa2?vRcsV7eySscge)p}-&D$_=f-AELVLN(wcyw+2G87Q>Vr1U|w)@EIzasiS(tB&DT^hzQww
zt^5#p1A2YFGv#WNzzpes_g@#;sv%3ywF=bP(mrhy3w56{OS$-71?iRWlg@7c0#Ap76J#U#n2H9J8g
zsRtrv;JwaO7fOnJilPs01ma7_&;SPUvkB^HD-R@temOkWfOgm|Hy1V~1
zt&ka~G(xz`Fjhn6r~iDpae2J
zezb)rBf}Jh|)PZWtKEt^|9c0d^O7yiOxbD~k;uIsNr4^}n>gO<*t^5}?MwMayvk
zBUJY6shUpDMM_CwU}8wD!*KO><*+?DM#L>TpY(l{CnhH}6rZRs`2MAEJv(lMN!`elw@Rh(>92{nWTy4B}iBch1#R5xFW_ulU4qPqCw#UlO9@#X+7aSarpy@8I
zdx5;R1Tj1${cc^&Ot-YK-UK<4`uvQ+{CvILNuSsSINOZ+M1dHNipHsctcPxx_c7$|
z92wc=D+1do(ge@>({%+Ddm-l`a
zpq^X{$HCVF7>r!FXb7<|ohnitE8oC(X>Hl6J^!$|Np+oDZ#}x|LPf5;DH*1zk`%i!
z>I+%1h#`YwgTu?sK<^oZZy;S1P58tatvPKhVj#xY&S!IFj
zA}$<^(VkkyFqh(-`nS+pjTC~)$6U=O|DdIk{twbVzE8hKJlwi*zX6EN;5uw;n5TTw1J0t>U1~%&+p*FpQWJ1)4RxxLZ4aP!2)vM;>kBEsVVMFH!ah?1`
zsHyu_$lwjYXT}^V^j*t2X711YwX?snwGnveTJQ761~RQIDLeCVbIO&nY+8p&b%s+B
zCTYYxo0MaCqGr+5ND;0Zu=b0&mWtwH4G+la?>wMvv+9q%yUMCaTT4_Jy)2h|cmuNu
z-CPGlIayoNQSFaPRd4-)O0j~SVW`tmh102EQo
z5!*ubZ3Xg5g?3w!@nGE-a
z$tlg;9MMX)H!?B;>yti4NXW^-z1bRP0c=YuO8I9>T4I1hMYvYPPbBkvj}^I^_I5=_
zcL0L}J{Vn_h<6fa!ps)-jTvCa9%dRW5Rac}(~u4cWniDo?0gk%8XuVnI-ws3i#1B@
z1$z#EGNUiS$?4>*#r11IR0NiyN^NLSe^T~O$sJm}+g2^~h>bc0Z*9W!eyPtN3N(Lz
z+YX9fXHS=I2opwxzbJwcd_I916Hw#G*C8Ir8%FW~C|f|Gbp*NM7zwN-$vWKAlR6}E
zx>SVLL<1lKNM`DjNK$hHmvMu9H{081F%-;;XSMGEEjr3$CjIZDN@bFM;RXsf5)z@#TZJ||$xrXpp
z=bRNX7ZsUN=Yy(<3KmT`2dj3dH&fSRlxqmmQnWlj$|g=nFkBz7mRqY$bO`dGrQ?d@
zw=vWGc$SHNvKtinKh^Fn%$9Cf_FBM}SI3-hKO`aw)cD`q^8%df{RmXZmwP7Z`#ICC
z-Tl4jv%NO;m16!0exjV;Hu}MNL~d1;fs{FW!o@-ubVzIla<`euw+q%f?dBhtMCdb|
zM+_OavcZCZoOEnQ7K}EE$&6i+UBoq1sXa%G{N{Ulgnmurz{SKm;StmGRjHm!dWStiu#!t>CLnz
zn{YGI?^6DZTC*X6RYZv}QTzNJ|L0g#PBR
z@w_JrUOl_638c+7)2Yufc8n~@ma-&{T>NjgU^g(x{Pi}W2D^0qj=W(E{DlSjyQ-^f
z>s@9YNJH_vs#YDs2vrZ3T$to;Q}di~k&4bg2xNnY=KwlZBw{AxjR6Cs6aPubP8^AziN0jN8ViqMMsww}iFNt;&LbOxiNyD$
zWAxG91@x!fUnnISr@(bDssVmtu9sxK3o9q{2(l|%mrI3J)%hX4sk^({F^qwt^=#YK
zGS5)8E5KFI*C`x(&|q&wolsnu>`DFDPr9yf@kjUwX09yIq>bHST@tJp0~7JVBT2mp
zWfcg7K0AW!ur9$-Tuvi0$64>JizAC2T*-SpN&&~^7-pZz=~e_mmV3#Kvy^sp>_h7F
z+<4pRJ#;Ak`Wy&hYA4mGM>_uI(fYpZp)rVfnNPAP&dlA2teva~`sdl9$rpWb$Ad4o
zbVMPbUB77>KG27Q$fs&50%CWFO>AeMQwMV-kw3CFTBO`9`3xP&r=!C%4T4eeBYI;+
zXTG*rPoR#=(X0p(?`BNnt|!p4->9Z?_ds=9)FXW+%&->^y6bH*F`a$BZ*KSeJmU4Ub`;;?6U=YsTq4oj#7J?qCKVu!7{1CB_ypg%cV(bs`r9*A{_=L8
zX5CqMy4N$nJ)|OnX~7Rs&0$KQJ6CHC)v(3=Bjc%_{eMiXtfrc0d?*Y*X6vta>H^fU?fB##A`V1S>(M1QxSWROh;)?HCsR0URL
zOwf=q0+1jpwp&_15(f-lDWsj;x~`Kav`7+-{+2rlvA9V7!L|w`(sDR$yqd$O^0v~m
zynS)9yMEnfkwAh6_q{!wI-fq3b5}kK`+2qv14U@i@0gjr<;(tW$OUZpyc%(aL_~0T
zR0`wA3|}5EjzGx{Ne3c3XlHR{*u+u8B)Zk%r7KU4-W0u2Cpf-4t1EyG@p))bjC&BS
zh2#BFq)6SiTF7X~IB`Xk!>!V@&)NNL!l-D8YB3fJ&ud(|prEjq43&B`#0Y&aEc<6P
zBM$41-IBg90TCF&T&rJ$4>^HCWE3L(&;A4AWo7hMJxFdB(fG%*YQC}Q0tZn53C2&w
zphA|9DjyQpbnN^zAvJd2xUU%r6Gp7|qi`XMGMoxQ7*bZSXjnH`
zHfV+dgBN!xtTdP_(?o=X0o>e}xb3^R#Iv+USK;n`-1V?nr=plJ_p(O_T+ff4xTGYx
z#*W=_-XZTXyf9B((jK6QM$!TDh)8gfF;(dsymmx(EL7w(Kge7YvEU)_SW%t~V+)u4
zJR#)-WQX_QMU|CQ?Ck6aIVL)*;yCz$Z4|844+`$}N5h9<2U-;F*Lg_!tHn!LMe?0%
z6K2B;qi}Lsv4S@EGEFV%u=6rAw4V&hNfPpt^^z
zFCqVK3?*hAP`nsc{_!Nct$U*YD_%me)#gj%FD|;
zKhB0sA9N0OqSVp-?+x3(&{0=j!OoYEp!U8xY7f8&_&`?&hB_mYIfX1{|FPo_+_{Gv
z0`tI6+-RG3K)dj8*NWiBS7`@7#J?X`iyskF>)+c0W^{=-3MmOmv#l1zn3<^EV|Q)t
zIvp(y4UhWrN(lim@l_;VUix`l@w#o=&lemdk=eq+{BrlLPhniS1HW!*3|_Lb{$2Mf
zIwGliLBg{5cS3yl`M1GB5jhGxiJpnb@UKclXG=>3K
zKGysaMM2i!qa(I}evY=*o)1J=K(qYJxWRy^PjT>RUn4-(?af`Eh%9`^MjbqFuhOceiPuA6zFA9oeLP@v8vPK1`J|WUaEOwJ+kz8`
zfqxh~V^r)df
zVSFJ4@Fh}j!*m=`aHKZe?p)g-&qpo7jV@Mi>U<6mf^TQZvQ??1q)xMPq_|*Vtjq-c
zwVhh#UD+;^`4`@J1Dvf31qP<7Sf7@#Ab2y}?y6D95Q5anDiBTx
z_aLp!-%X&bC`kPApc)KoWDY(?2kzJdbr=*kV=m`fug1xR|F1gEGa9bG>%#=mGFr4m
z8$n3)8box_MvLg8_YxyPbRmKfy(EktMvd+kgh6DYj!ZJT=%TmL8Dk!K-}Ssp*8S$3
z4`-bZ`F}&bR&B*Z#J6F;V(f%=+kKJi7<879-gHUBWMjhYPu^)jGamY=bx$e;j!3
z5aJKdZw5RDDB!3WX;BoF97Cg18l=O_%7p>6AB(*GglFw#u
z2_&LtIC97%_%258xvml!H0HBVMf|vxX^H%w>(
zR$SbHmeYBH&LN+~d3feK^(<7d*!3*azG}=eej{8!OzOyQ1*mWA=H+Q#oC|ljh-d`R
zPh*PciZ`6JlPiw`n)0%;un?=w?*(h)#=+5FUt`4${e2LAzP{;Rr~P(!?z5VS$(fJ|
za+cSIq}m0u3ZA2gcdv-W-jUPRIEt;5)&cP;lb)Z>^Z}po86^KAKRt!$@+ja>q5dhc
z(g3T-#RY6%03?75=*K+V&x@2nDA$w>$goL;4vd%~1sa=ngpCxGg5lG%f=WqpGF+AD
zPXXn9g%dB29{otyg3xdE>s#y8MlNgjPVi`-YXNR2L6|+$LOF6ju0-v8R=Vj0b?673
zgth)d>FU_AdfSlESx*fNzZQeAL(?}`&25>M?I*6O(w+f%-3}?Z6)$o>TWr^ZQp)?7
zr`+1-V2jc@f=3$9y4X{w^!%Q
zM8~>iJ@*u?w|?K*-5VU0GH$^m^)t}D;q26XgDpdF4%nWODr`XQ8lT6urT=TC5Z<8tvg?moXPgT^he6jCCPz$E1o`t?LfjGoRcpzUZ
z4R&)-D8bu`$-H0rG?oXB4+!s<$%#&uK5q|RNlepTu5kD8$VT}sX@A>q$#_7NDVP`f
zTx`I+z{okEX$bn|eU`oWO2LP!LBQGc&w)|6UO{>ar-S5^K)<&%yXkJ2mqH=a9u8X_
z6X^b*UvN$u8_S`{rg3#9c$7h=9@~p8^dN~KejcBrNOSw#URbfdWzs+O9TaPxe7msa
zeqjC17sN-3O^i&vyNJ7imeET6lABM@*cfwa_A=S5ZQ$ffd_D%(7?FszUFW%u0XLfV
zESw<5M}qhy?rP1=n|%7FVq=p}Chylw=Squac4k=P7QOly?#5#dtyKSNOn(gNiS4Bu
zOzdI9?YYm(_Pi~{nLt?MjO(dp>cC-1%9O}xYvR?O^fv~D*V^NmcLi;*ZwS1t+Xjee
zID>KbsH%Q?VqyL*6y(K4t-(cBBpv224%+-4U5RMQ=;pkMWg>nbESqSGF!LwwDd#UQ08we3%3A2SQNNV41)M~E@%Z&XQ5dtDLTfjW
z%{+YbqCeex4dfZxMsbT8H7T7nqH)k_rT2Nw%}2)a%JHGHJn~@4gXL~!X0BhZ!s`?A
z;3x6?aVpUchRut2ol5;Z@N)1YPrqJv@olQFS5)U;R3cP4H-F7NBPmT$Q&U4Av}z*7
zd{6uCHDn*L0J*VRJwvb~pN(hUB+Ay;qwUYdx#pdwF?Hk&k%m|op=hwewo^{kFCq%f|5*#s5`FU5a
zs^(U1thkC0wXGK1+_5txd`R7}zyP*jIY#-Fd4^3Jp5)E3Z+K#Atrlsw)EZ4Fi#{Tu
zZ>i>D*_8z?78g`z&tJXKyyM#@!vsy^Lq#*!>T*9g**fO^#S1+c=#frabZ}r_zHb;c
z)#=L<+UO&8vQey%V(&7;J}}~8<>h2G!pcHzdS-(|A9f}1J(t-APqeg%W(}30P`6<=
z9dZ2VGvyT9!d`)%qSHy4V*PCB;r9cDq?>fLcV(o8<3r`CKlb;L?7o;J$wX2+l9ho-
z^{T5fbGsP`S(_Lp3kqr%?Hv^(w}}e^o9}7Ya4Dy{d>k=MB)dFR#0gJ}`{Z-SD@4{&;#^jA7F~2GSrCzr
zIeLZs1O@j6aq9-ZD8S8!Bi`!E+r;X_U5GB)%e&$41mmaIqLwvff`-$0_CF+T0`^E@
zUU6{ZG0r;!k;5_IAQSpZs0Ip&IN!`RLQFYgyUrhe%lauwbFQnaE9A+jH;o@9%uhcx
z4R!dnxaNd2#DPfJba{FTnAw(i{gV6*Qyyc1<6Bh*9C9QN=wR>?d{2=h3&{9I@h5Rd+o!MoJeF_7RdRsH3bLIvP+Snh7-Y
z*yL45SCFi%r<2{Y%JC4fvJZ-!v*stR%}6~{Y|>t@iJLE@xU_V!N6xF>O%9na6NJja
z%1%4CWs
zvn8ye7jbB{Jzo6w>uAjM_VD2hMmQa}T+Us}E257pxPsJqH3z(CcR7(w6Gm9IIzob8
zN39az@1ISB1-rohvBfG~rzT@XJgg;+90@uKwBB=x_k68U{t{Z>SF~Ct=%Z+?1=ZBwHtlR2{Y;o|L>O{ZdJc?a0EKik&&5R6I{;R+d~|Z8ZzB=I8WV3
zc=c7FX`;ly)Srgx8W47a!M7_BS
z;}t$VHJ#V^qTuN0IMJlU!vk~ea1VRN5x7GbE$>I#7s}LMq~i;6=~|0Q461D||1H
zp$G{NC@Gf=eWV6@2RsqaY47xd^#e2@5>^S_x)6=Nm5QYprW;icdBaE#+6E!zc&(9J
zTFZsu>a0+oN6qr@@uM_^TLe$rVYo6QBXv@j-SlpG;t`kh>ITtAY4Z344n1tYmbPe4
zhVu9TA9nx&WuX>P|x`*&5
zn8k=7Nt#NAK>_?CapySAAEVXQ3@TUjYm02aIqQewFeugJ!oIJ0%i3CEyvR3T2^Ids
z*N3CH=9Z?5K2CJ>iv^XHPazsvl*E?BHKlK8u;I%7IyVb?^3fYE7{73#SS?dM0}Rt<
zX9+wvcbn&fg1)2thLNlasyZIodi}1AA
z@`b;{;#U5z9RT8!e!~>0qY0GxjsqyAu#+hh6gX4;tT58S!2z|NoD!Aua{T4=3xN(p
zw}8H7mvfB$_|EBa>NNmE9>24>zv8&jx_8@)YL1PPl5z#rAkPx2yr5x`s^!`{1yp9x(4;CdDlQ%?^
zC(<722>JF>YNR<<_ZK7MrjFwxi%M4as>V9tFvab5;$sE5DCBJ}a4<-Vlsp%Q^-5@{G39BbAH?QUJ(52E)C>n*x
zXjY%Emr}-BcNvRFFiAH6Z5Jb*H;*!25P~r2-gxd>dV#k4rv
zZI+@)CPKJ$@KDYbXa?>H7&A5P>j$BQA~qvtnC7?w(AQlY79eLLuU`d!@=WqDjq);*
zwnVyP%3wAvJG3cX3hbmg`@L>n$9M@ktIA0IP8$(_{^SpV@x2OZA$yB4r8`Jh7n>jr
z{VF;+Zhd%+M}CX<28B|crKYgdS$9&cTM`L(u^Q*YW`fH4afgRA?b@_SK#{zekr<%1x0mSah8LGc33oudXxa7@|2uR4
zLR-+<@Jj!ke7)(FYcTFR$z{v)5Zj%xk6Jb6$#JuGsY;r(2^Ehq?_`(fXey1YwMI@*%c(Y_bDYs
zX&kco)xm2WfCB~tI#^UR9v`GLqez>=F{V*mTwGVXS{i2Cep{k?N$KpLkgH@=Nk<9<
z?}hGqw9IDbwUF0-z4TxR{(
z=lCn=PeJ1{DC7e4f4atB>;D|ezFgnS^}GJki1sB0$<^P#pX}o1xsdjQ^nSnn2V>xJ
A>;M1&
literal 0
HcmV?d00001
diff --git a/docs/article/gis/geotools/images/image-20231120113304413.png b/docs/article/gis/geotools/images/image-20231120113304413.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a49d1d3b01158f9c16a6c32caa564ed0e5f316c
GIT binary patch
literal 58531
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