From 5ffcfefdddeb6ba85e728b13222997c0689f5eb8 Mon Sep 17 00:00:00 2001 From: fokevolt Date: Fri, 18 May 2018 18:23:02 +0300 Subject: [PATCH 01/15] Created tree. --- src/main/java/tree/Comparable.java | 5 ++ src/main/java/tree/CompareResult.java | 5 ++ src/main/java/tree/Node.java | 5 ++ src/main/java/tree/Tree.java | 81 +++++++++++++++++++++++++-- src/main/java/tree/User.java | 16 ++++++ 5 files changed, 108 insertions(+), 4 deletions(-) create mode 100644 src/main/java/tree/Comparable.java create mode 100644 src/main/java/tree/CompareResult.java create mode 100644 src/main/java/tree/Node.java create mode 100644 src/main/java/tree/User.java diff --git a/src/main/java/tree/Comparable.java b/src/main/java/tree/Comparable.java new file mode 100644 index 0000000..64cedab --- /dev/null +++ b/src/main/java/tree/Comparable.java @@ -0,0 +1,5 @@ +package tree; + +interface Comparable { + CompareResult compare(T other); +} diff --git a/src/main/java/tree/CompareResult.java b/src/main/java/tree/CompareResult.java new file mode 100644 index 0000000..7856397 --- /dev/null +++ b/src/main/java/tree/CompareResult.java @@ -0,0 +1,5 @@ +package tree; + +enum CompareResult{ + GREATER_THEN, EQUALS, LESS_THEN +} diff --git a/src/main/java/tree/Node.java b/src/main/java/tree/Node.java new file mode 100644 index 0000000..6813bb6 --- /dev/null +++ b/src/main/java/tree/Node.java @@ -0,0 +1,5 @@ +package tree; + +import java.util.List; + + diff --git a/src/main/java/tree/Tree.java b/src/main/java/tree/Tree.java index 54d07f5..6db0419 100644 --- a/src/main/java/tree/Tree.java +++ b/src/main/java/tree/Tree.java @@ -1,9 +1,82 @@ package tree; -public class Tree { +import java.util.ArrayList; +import java.util.List; -} +public class Tree> { + private Node head = null; + + public void add(T item){ + Node current = new Node<>(item); + if (isEmpty()) { + head = current; + } else { + head.addNode(current); + } + } + + public boolean isEmpty(){ + return head == null; + } + + public boolean contains(T item) { + return !isEmpty() && head.findNode(item); + } + + public List getElements(){ + List elements = new ArrayList<>(); + head.getNodes(elements); + return elements; + } + + private static class Node> { + private T value; + private Node left; + private Node right; -class Node { - + Node(T value) { + this.value = value; + left = null; + right = null; + } + + T getValue() { + return value; + } + + void addNode(Node current) { + switch (current.value.compare(this.value)) { + case LESS_THEN: + if (left != null) { + left.addNode(current); + } else left = current; + break; + case GREATER_THEN: + if (right != null) { + right.addNode(current); + } else right = current; + break; + default: + throw new IllegalArgumentException("The item is already exists"); + } + } + + boolean findNode(T current) { + switch (current.compare(this.value)) { + case LESS_THEN: + return left != null && left.findNode(current); + case GREATER_THEN: + return right != null && right.findNode(current); + default: + return true; + } + } + + void getNodes(List nodes) { + if (this.left != null) this.left.getNodes(nodes); + nodes.add(this); + if (this.right != null) this.right.getNodes(nodes); + } + } } + diff --git a/src/main/java/tree/User.java b/src/main/java/tree/User.java new file mode 100644 index 0000000..de22de3 --- /dev/null +++ b/src/main/java/tree/User.java @@ -0,0 +1,16 @@ +package tree; + +public class User implements Comparable{ + private final int height; + + public User(int height) { + this.height = height; + } + + @Override + public CompareResult compare(User other) { + if (height > other.height) return CompareResult.GREATER_THEN; + if (height < other.height) return CompareResult.LESS_THEN; + return CompareResult.EQUALS; + } +} From 78eaf5f2021d5c34ba90e72228766a99ac03895e Mon Sep 17 00:00:00 2001 From: fokevolt Date: Thu, 24 May 2018 16:21:00 +0300 Subject: [PATCH 02/15] Created tree tests. --- src/main/java/tree/Node.java | 5 --- src/main/java/tree/Tree.java | 8 ++--- src/main/java/tree/User.java | 3 ++ src/test/java/tree/TreeTest.java | 62 ++++++++++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 9 deletions(-) delete mode 100644 src/main/java/tree/Node.java diff --git a/src/main/java/tree/Node.java b/src/main/java/tree/Node.java deleted file mode 100644 index 6813bb6..0000000 --- a/src/main/java/tree/Node.java +++ /dev/null @@ -1,5 +0,0 @@ -package tree; - -import java.util.List; - - diff --git a/src/main/java/tree/Tree.java b/src/main/java/tree/Tree.java index 6db0419..c595846 100644 --- a/src/main/java/tree/Tree.java +++ b/src/main/java/tree/Tree.java @@ -23,8 +23,8 @@ public boolean contains(T item) { return !isEmpty() && head.findNode(item); } - public List getElements(){ - List elements = new ArrayList<>(); + public List getElements(){ + List elements = new ArrayList<>(); head.getNodes(elements); return elements; } @@ -72,9 +72,9 @@ boolean findNode(T current) { } } - void getNodes(List nodes) { + void getNodes(List nodes) { if (this.left != null) this.left.getNodes(nodes); - nodes.add(this); + nodes.add(this.value); if (this.right != null) this.right.getNodes(nodes); } } diff --git a/src/main/java/tree/User.java b/src/main/java/tree/User.java index de22de3..038c8fb 100644 --- a/src/main/java/tree/User.java +++ b/src/main/java/tree/User.java @@ -6,6 +6,9 @@ public class User implements Comparable{ public User(int height) { this.height = height; } + public int getHeight() { + return height; + } @Override public CompareResult compare(User other) { diff --git a/src/test/java/tree/TreeTest.java b/src/test/java/tree/TreeTest.java index cd2bd68..e4e4315 100644 --- a/src/test/java/tree/TreeTest.java +++ b/src/test/java/tree/TreeTest.java @@ -1,7 +1,69 @@ package tree; +import org.junit.Before; +import org.junit.Test; + +import java.util.List; + import static org.junit.Assert.*; public class TreeTest { + private Tree tree; + private final User rostik = new User(170); + private final User vitalik = new User(182); + private final User rusik = new User(180); + private final User andrii = new User(160); + private final User misha = new User(175); + + @Before + public void set_up() throws Exception { + tree = new Tree<>(); + } + + @Test + public void is_empty() { + assertTrue(tree.isEmpty()); + + tree.add(vitalik); + assertFalse(tree.isEmpty()); + } + + @Test(expected = IllegalArgumentException.class) + public void add_one_node_multiple_times() { + tree.add(vitalik); + tree.add(vitalik); + tree.add(vitalik); + tree.add(vitalik); + + } + + @Test + public void add_and_contains() { + assertFalse("do not contain 4", tree.contains(vitalik)); + tree.add(vitalik); + assertTrue("contains 4", tree.contains(vitalik)); + + assertFalse("do not contain 2", tree.contains(rostik)); + assertFalse("do not contain 6", tree.contains(rusik)); + + tree.add(rostik); + tree.add(rusik); + + assertTrue("contains 2", tree.contains(rostik)); + assertTrue("contains 6", tree.contains(rusik)); + } + + @Test + public void get_elements() { + User[] arr = new User[]{vitalik, rostik, rusik, andrii, misha}; + for (int i = 0; i < arr.length; i++) { + tree.add(arr[i]); + } + + List nodes = tree.getElements(); + for (int i = 0; i < arr.length; i++) { + assertTrue(nodes.contains(arr[i])); + } + } } \ No newline at end of file From ccb6cce160e83356fa373a862f6b8cd60dd1d177 Mon Sep 17 00:00:00 2001 From: fokevolt Date: Tue, 29 May 2018 14:20:35 +0300 Subject: [PATCH 03/15] Created words counter and it's tests. --- src/main/java/words/Counter.java | 37 ++++++++++++++++ src/test/java/words/CounterTest.java | 65 ++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 src/main/java/words/Counter.java create mode 100644 src/test/java/words/CounterTest.java diff --git a/src/main/java/words/Counter.java b/src/main/java/words/Counter.java new file mode 100644 index 0000000..8c60554 --- /dev/null +++ b/src/main/java/words/Counter.java @@ -0,0 +1,37 @@ +package words; + +import java.util.HashMap; +import java.util.Map; + +public class Counter { + private Map words = new HashMap<>(); + + private String[] convertToArray(String string){ + string = string.trim(); + String[] wordArray = string.split(" "); + return wordArray; + } + + public boolean count(String string){ + if(string == null || convertToArray(string)[0].equals("")){ + return false; + } else { + for (String word : convertToArray(string)) { + if (words.containsKey(word)) { + words.put(word, words.get(word) + 1); + } else { + words.put(word, 1); + } + } + return true; + } + } + + public int getCount(String word){ + return words.getOrDefault(word, 0); + } + + public Map getFrequency(){ + return words; + } +} diff --git a/src/test/java/words/CounterTest.java b/src/test/java/words/CounterTest.java new file mode 100644 index 0000000..e4e4ec1 --- /dev/null +++ b/src/test/java/words/CounterTest.java @@ -0,0 +1,65 @@ +package words; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.Map; + +public class CounterTest { + private Counter counter; + + @Before + public void set_up(){ + counter = new Counter(); + } + + @Test + public void count_word(){ + Assert.assertTrue(counter.count("Hello")); + Assert.assertFalse(counter.count(null)); + Assert.assertFalse(counter.count("")); + Assert.assertFalse(counter.count(" ")); + Assert.assertFalse(counter.count(" ")); + } + + @Test + public void frequency(){ + Assert.assertTrue(counter.getFrequency().isEmpty()); + Assert.assertFalse(counter.count(" ")); + Assert.assertTrue(counter.getFrequency().isEmpty()); + Assert.assertFalse(counter.count(null)); + Assert.assertTrue(counter.getFrequency().isEmpty()); + + Assert.assertTrue(counter.count("Hello Rostik")); + Assert.assertFalse(counter.getFrequency().isEmpty()); + + Assert.assertTrue(counter.getFrequency().containsKey("Hello")); + Assert.assertEquals(counter.getFrequency().get("Hello"), (Integer) 1); + Assert.assertTrue(counter.getFrequency().containsKey("Rostik")); + Assert.assertEquals(counter.getFrequency().get("Rostik"), (Integer) 1); + + Assert.assertFalse(counter.getFrequency().containsKey("hello")); + Assert.assertEquals(counter.getFrequency().get("hello"), null); + } + + @Test + public void count_multiple_words_in_string(){ + counter.count(" Hello o ."); + + Assert.assertEquals(counter.getCount("Hello"), 1); + Assert.assertEquals(counter.getCount("o"), 1); + Assert.assertEquals(counter.getCount("."), 1); + + Assert.assertEquals(counter.getCount(" "), 0); + + Assert.assertEquals(counter.getCount("hello"), 0); + + counter.count("o o o Vitalik"); + + Assert.assertEquals(counter.getCount("o"), 4); + Assert.assertEquals(counter.getCount("Vitalik"), 1); + } + + +} From 8c0345f07fdb9a25a5269a84389edce52078e8cd Mon Sep 17 00:00:00 2001 From: fokevolt Date: Tue, 29 May 2018 14:22:43 +0300 Subject: [PATCH 04/15] Created words counter and it's tests. --- src/test/java/tree/TreeTest.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/test/java/tree/TreeTest.java b/src/test/java/tree/TreeTest.java index e4e4315..35f9295 100644 --- a/src/test/java/tree/TreeTest.java +++ b/src/test/java/tree/TreeTest.java @@ -39,18 +39,18 @@ public void add_one_node_multiple_times() { @Test public void add_and_contains() { - assertFalse("do not contain 4", tree.contains(vitalik)); + assertFalse("do not contain vitalik", tree.contains(vitalik)); tree.add(vitalik); - assertTrue("contains 4", tree.contains(vitalik)); + assertTrue("contain vitalik", tree.contains(vitalik)); - assertFalse("do not contain 2", tree.contains(rostik)); - assertFalse("do not contain 6", tree.contains(rusik)); + assertFalse("do not contain rostik", tree.contains(rostik)); + assertFalse("do not contain rusik", tree.contains(rusik)); tree.add(rostik); tree.add(rusik); - assertTrue("contains 2", tree.contains(rostik)); - assertTrue("contains 6", tree.contains(rusik)); + assertTrue("contain rostik", tree.contains(rostik)); + assertTrue("contain rusik", tree.contains(rusik)); } @Test @@ -60,10 +60,10 @@ public void get_elements() { tree.add(arr[i]); } - + User[] arrSorted = new User[]{andrii, rostik, misha, rusik, vitalik}; List nodes = tree.getElements(); - for (int i = 0; i < arr.length; i++) { - assertTrue(nodes.contains(arr[i])); + for (int i = 0; i < arrSorted.length; i++) { + assertEquals(nodes.get(i), arrSorted[i]); } } } \ No newline at end of file From c115675108102c0f162d1d90c7fcbd982f78915d Mon Sep 17 00:00:00 2001 From: fokevolt Date: Tue, 29 May 2018 18:24:39 +0300 Subject: [PATCH 05/15] Created stock, that counts products and categories, and tests for it. --- src/main/java/products/Categories.java | 5 +++ src/main/java/products/Category.java | 26 +++++++++++++ src/main/java/products/Product.java | 33 ++++++++++++++++ src/main/java/products/Stock.java | 44 +++++++++++++++++++++ src/test/java/products/StockTest.java | 53 ++++++++++++++++++++++++++ 5 files changed, 161 insertions(+) create mode 100644 src/main/java/products/Categories.java create mode 100644 src/main/java/products/Category.java create mode 100644 src/main/java/products/Product.java create mode 100644 src/main/java/products/Stock.java create mode 100644 src/test/java/products/StockTest.java diff --git a/src/main/java/products/Categories.java b/src/main/java/products/Categories.java new file mode 100644 index 0000000..a660745 --- /dev/null +++ b/src/main/java/products/Categories.java @@ -0,0 +1,5 @@ +package products; + +enum Categories { + Healthy, Sweet, Natural, Fruit, Meat, Children, Chocolate +} \ No newline at end of file diff --git a/src/main/java/products/Category.java b/src/main/java/products/Category.java new file mode 100644 index 0000000..55c1693 --- /dev/null +++ b/src/main/java/products/Category.java @@ -0,0 +1,26 @@ +package products; + +import java.util.ArrayList; +import java.util.List; + +public class Category { + private Categories category; + private List products = new ArrayList<>(); + + public Categories getCategory() { + return category; + } + + public List getProducts() { + return products; + } + + Category (Categories category) { + this.category = category; + } + + void addProductToCategory (Product product) { + products.add(product); + } +} + diff --git a/src/main/java/products/Product.java b/src/main/java/products/Product.java new file mode 100644 index 0000000..a0e20ba --- /dev/null +++ b/src/main/java/products/Product.java @@ -0,0 +1,33 @@ +package products; + +import java.util.List; + +public class Product { + + private List categoryList; + + private String name; + + private int count; + private int prise; + + public List getCategories() { + return categoryList; + } + public String getName() { + return name; + } + public int getCount() { + return count; + } + public int getPrise() { + return prise; + } + + Product (List productCategories, String name, int count, int prise) { + this.categoryList = productCategories; + this.name = name; + this.count = count; + this.prise = prise; + } +} diff --git a/src/main/java/products/Stock.java b/src/main/java/products/Stock.java new file mode 100644 index 0000000..d796838 --- /dev/null +++ b/src/main/java/products/Stock.java @@ -0,0 +1,44 @@ +package products; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class Stock { + + private Map categories = new HashMap<>(); + private List products = new ArrayList<>(); + + private List makeCategoryList(Categories[] category) { + List categoriesOfProduct = new ArrayList<>(); + for(Categories current: category) { + categoriesOfProduct.add(categories.get(current)); + } + return categoriesOfProduct; + } + + public void addProduct (Categories[] category, String name, int count, int price){ + + for(Categories current: category) { + if(!categories.containsKey(current)) { + categories.put(current, new Category(current)); + } + } + List productCategories= makeCategoryList(category); + Product product = new Product(productCategories, name, count, price); + products.add(product); + + for(Category current: productCategories) { + current.addProductToCategory(product); + } + } + + public List findAllProducts() { + return products; + } + + public List findProductsByCategory(Categories category) { + return categories.get(category).getProducts(); + } +} diff --git a/src/test/java/products/StockTest.java b/src/test/java/products/StockTest.java new file mode 100644 index 0000000..6cc3e53 --- /dev/null +++ b/src/test/java/products/StockTest.java @@ -0,0 +1,53 @@ +package products; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.List; + +public class StockTest { + private Stock stock; + + @Before + public void set_up() { + stock = new Stock(); + } + + @Test + public void add_products() { + stock.addProduct(new Categories[]{Categories.Chocolate}, "Snickers", 10, 15); + Assert.assertEquals(stock.findAllProducts().get(0).getName(), "Snickers"); + + stock.addProduct(new Categories[]{Categories.Healthy, Categories.Children, Categories.Natural}, "Milk", 1, 20); + Assert.assertEquals(stock.findAllProducts().get(1).getCount(), 1); + + stock.addProduct(new Categories[]{Categories.Healthy, Categories.Meat}, "Hum", 10, 80); + Assert.assertEquals(stock.findAllProducts().get(2).getPrise(), 80); + Assert.assertEquals(stock.findAllProducts().get(2).getName(), "Hum"); + } + + @Test + public void get_products_in_category() { + stock.addProduct(new Categories[]{Categories.Healthy, Categories.Children, Categories.Natural}, "Milk", 1, 20); + stock.addProduct(new Categories[]{Categories.Healthy, Categories.Meat}, "Hum", 10, 80); + + List products = stock.findProductsByCategory(Categories.Healthy); + + Assert.assertEquals(products.get(0).getName(), "Milk"); + Assert.assertEquals(products.get(1).getName(), "Hum"); + } + + @Test + public void get_categories_of_product() { + stock.addProduct(new Categories[]{Categories.Healthy, Categories.Children, Categories.Natural}, "Milk", 1, 20); + + List categories = stock.findAllProducts().get(0).getCategories(); + + Assert.assertEquals(categories.size(), 3); + Assert.assertEquals(categories.get(0).getCategory(), Categories.Healthy); + Assert.assertEquals(categories.get(1).getCategory(), Categories.Children); + Assert.assertEquals(categories.get(2).getCategory(), Categories.Natural); + } +} + From f35a617022d00a91bbd6fef86f4ab1fe2a893c57 Mon Sep 17 00:00:00 2001 From: fokevolt Date: Fri, 1 Jun 2018 15:32:36 +0300 Subject: [PATCH 06/15] Make minor fixes and improvements to word counter & stock. --- src/main/java/products/Category.java | 13 ++++--- .../{Categories.java => CategoryType.java} | 2 +- src/main/java/products/Product.java | 15 ++++--- src/main/java/products/Stock.java | 39 ++++++++++--------- src/main/java/words/Counter.java | 24 +++++------- src/test/java/products/StockTest.java | 20 +++++----- src/test/java/words/CounterTest.java | 27 +++++++------ 7 files changed, 74 insertions(+), 66 deletions(-) rename src/main/java/products/{Categories.java => CategoryType.java} (80%) diff --git a/src/main/java/products/Category.java b/src/main/java/products/Category.java index 55c1693..459636b 100644 --- a/src/main/java/products/Category.java +++ b/src/main/java/products/Category.java @@ -1,25 +1,26 @@ package products; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public class Category { - private Categories category; - private List products = new ArrayList<>(); + private final CategoryType category; + private final List products = new ArrayList<>(); - public Categories getCategory() { + public CategoryType getCategoryType() { return category; } public List getProducts() { - return products; + return Collections.unmodifiableList(products); } - Category (Categories category) { + Category(CategoryType category) { this.category = category; } - void addProductToCategory (Product product) { + void addProductToCategory(Product product) { products.add(product); } } diff --git a/src/main/java/products/Categories.java b/src/main/java/products/CategoryType.java similarity index 80% rename from src/main/java/products/Categories.java rename to src/main/java/products/CategoryType.java index a660745..24193c6 100644 --- a/src/main/java/products/Categories.java +++ b/src/main/java/products/CategoryType.java @@ -1,5 +1,5 @@ package products; -enum Categories { +enum CategoryType { Healthy, Sweet, Natural, Fruit, Meat, Children, Chocolate } \ No newline at end of file diff --git a/src/main/java/products/Product.java b/src/main/java/products/Product.java index a0e20ba..8488d1c 100644 --- a/src/main/java/products/Product.java +++ b/src/main/java/products/Product.java @@ -1,31 +1,36 @@ package products; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; public class Product { - private List categoryList; + private final List categoryList; - private String name; + private final String name; private int count; private int prise; public List getCategories() { - return categoryList; + return Collections.unmodifiableList(categoryList); } + public String getName() { return name; } + public int getCount() { return count; } + public int getPrise() { return prise; } - Product (List productCategories, String name, int count, int prise) { - this.categoryList = productCategories; + Product(List productCategories, String name, int count, int prise) { + this.categoryList = new ArrayList<>(productCategories); this.name = name; this.count = count; this.prise = prise; diff --git a/src/main/java/products/Stock.java b/src/main/java/products/Stock.java index d796838..2eee1f9 100644 --- a/src/main/java/products/Stock.java +++ b/src/main/java/products/Stock.java @@ -1,44 +1,45 @@ package products; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class Stock { - private Map categories = new HashMap<>(); - private List products = new ArrayList<>(); + private final Map categories = new HashMap<>(); + private final List products = new ArrayList<>(); - private List makeCategoryList(Categories[] category) { + private List makeCategoryList(CategoryType... categoryTypes) { List categoriesOfProduct = new ArrayList<>(); - for(Categories current: category) { - categoriesOfProduct.add(categories.get(current)); + for (CategoryType current : categoryTypes) { + Category category = categories.get(current); + if (category == null) { + category = new Category(current); + categories.put(current, category); + } + categoriesOfProduct.add(category); } return categoriesOfProduct; } - public void addProduct (Categories[] category, String name, int count, int price){ + public void addProduct(String name, int count, int price, CategoryType... category) { - for(Categories current: category) { - if(!categories.containsKey(current)) { - categories.put(current, new Category(current)); - } - } - List productCategories= makeCategoryList(category); + List productCategories = makeCategoryList(category); Product product = new Product(productCategories, name, count, price); products.add(product); - for(Category current: productCategories) { + for (Category current : productCategories) { current.addProductToCategory(product); } } public List findAllProducts() { - return products; + return Collections.unmodifiableList(products); } - public List findProductsByCategory(Categories category) { + public List findProductsByCategory(CategoryType category) { + Category current = categories.get(category); + if (current == null) { + return Collections.emptyList(); + } return categories.get(category).getProducts(); } } diff --git a/src/main/java/words/Counter.java b/src/main/java/words/Counter.java index 8c60554..e19815d 100644 --- a/src/main/java/words/Counter.java +++ b/src/main/java/words/Counter.java @@ -1,37 +1,33 @@ package words; +import java.util.Collections; import java.util.HashMap; import java.util.Map; public class Counter { private Map words = new HashMap<>(); - private String[] convertToArray(String string){ - string = string.trim(); - String[] wordArray = string.split(" "); - return wordArray; + private String[] convertToArray(String input) { + return input.trim().split(" "); } - public boolean count(String string){ - if(string == null || convertToArray(string)[0].equals("")){ + public boolean count(String string) { + if (string == null || convertToArray(string)[0].equals("")) { return false; } else { for (String word : convertToArray(string)) { - if (words.containsKey(word)) { - words.put(word, words.get(word) + 1); - } else { - words.put(word, 1); - } + int count = words.getOrDefault(word, 0); + words.put(word, count + 1); } return true; } } - public int getCount(String word){ + public int getCount(String word) { return words.getOrDefault(word, 0); } - public Map getFrequency(){ - return words; + public Map getFrequency() { + return Collections.unmodifiableMap(words); } } diff --git a/src/test/java/products/StockTest.java b/src/test/java/products/StockTest.java index 6cc3e53..2679ad5 100644 --- a/src/test/java/products/StockTest.java +++ b/src/test/java/products/StockTest.java @@ -16,23 +16,23 @@ public void set_up() { @Test public void add_products() { - stock.addProduct(new Categories[]{Categories.Chocolate}, "Snickers", 10, 15); + stock.addProduct("Snickers", 10, 15, CategoryType.Chocolate); Assert.assertEquals(stock.findAllProducts().get(0).getName(), "Snickers"); - stock.addProduct(new Categories[]{Categories.Healthy, Categories.Children, Categories.Natural}, "Milk", 1, 20); + stock.addProduct("Milk", 1, 20, CategoryType.Healthy, CategoryType.Children, CategoryType.Natural); Assert.assertEquals(stock.findAllProducts().get(1).getCount(), 1); - stock.addProduct(new Categories[]{Categories.Healthy, Categories.Meat}, "Hum", 10, 80); + stock.addProduct("Hum", 10, 80, CategoryType.Healthy, CategoryType.Meat); Assert.assertEquals(stock.findAllProducts().get(2).getPrise(), 80); Assert.assertEquals(stock.findAllProducts().get(2).getName(), "Hum"); } @Test public void get_products_in_category() { - stock.addProduct(new Categories[]{Categories.Healthy, Categories.Children, Categories.Natural}, "Milk", 1, 20); - stock.addProduct(new Categories[]{Categories.Healthy, Categories.Meat}, "Hum", 10, 80); + stock.addProduct("Milk", 1, 20, CategoryType.Healthy, CategoryType.Children, CategoryType.Natural); + stock.addProduct("Hum", 10, 80, CategoryType.Healthy, CategoryType.Meat); - List products = stock.findProductsByCategory(Categories.Healthy); + List products = stock.findProductsByCategory(CategoryType.Healthy); Assert.assertEquals(products.get(0).getName(), "Milk"); Assert.assertEquals(products.get(1).getName(), "Hum"); @@ -40,14 +40,14 @@ public void get_products_in_category() { @Test public void get_categories_of_product() { - stock.addProduct(new Categories[]{Categories.Healthy, Categories.Children, Categories.Natural}, "Milk", 1, 20); + stock.addProduct("Milk", 1, 20, CategoryType.Healthy, CategoryType.Children, CategoryType.Natural); List categories = stock.findAllProducts().get(0).getCategories(); Assert.assertEquals(categories.size(), 3); - Assert.assertEquals(categories.get(0).getCategory(), Categories.Healthy); - Assert.assertEquals(categories.get(1).getCategory(), Categories.Children); - Assert.assertEquals(categories.get(2).getCategory(), Categories.Natural); + Assert.assertEquals(categories.get(0).getCategoryType(), CategoryType.Healthy); + Assert.assertEquals(categories.get(1).getCategoryType(), CategoryType.Children); + Assert.assertEquals(categories.get(2).getCategoryType(), CategoryType.Natural); } } diff --git a/src/test/java/words/CounterTest.java b/src/test/java/words/CounterTest.java index e4e4ec1..0bc7c33 100644 --- a/src/test/java/words/CounterTest.java +++ b/src/test/java/words/CounterTest.java @@ -4,6 +4,7 @@ import org.junit.Before; import org.junit.Test; +import java.util.HashMap; import java.util.Map; public class CounterTest { @@ -25,22 +26,26 @@ public void count_word(){ @Test public void frequency(){ + Map expected = new HashMap<>(); + + Assert.assertTrue(counter.getFrequency().isEmpty()); - Assert.assertFalse(counter.count(" ")); - Assert.assertTrue(counter.getFrequency().isEmpty()); - Assert.assertFalse(counter.count(null)); + counter.count(" "); + counter.count(null); Assert.assertTrue(counter.getFrequency().isEmpty()); - Assert.assertTrue(counter.count("Hello Rostik")); - Assert.assertFalse(counter.getFrequency().isEmpty()); + counter.count("Hello Rostik"); + counter.count("Hello Rostik bro"); + counter.count("Rostik and Vitalik"); - Assert.assertTrue(counter.getFrequency().containsKey("Hello")); - Assert.assertEquals(counter.getFrequency().get("Hello"), (Integer) 1); - Assert.assertTrue(counter.getFrequency().containsKey("Rostik")); - Assert.assertEquals(counter.getFrequency().get("Rostik"), (Integer) 1); + expected.put("Hello", 2); + expected.put("Rostik", 3); + expected.put("bro", 1); + expected.put("and", 1); + expected.put("Vitalik", 1); - Assert.assertFalse(counter.getFrequency().containsKey("hello")); - Assert.assertEquals(counter.getFrequency().get("hello"), null); + Assert.assertFalse(counter.getFrequency().isEmpty()); + Assert.assertEquals(expected, counter.getFrequency()); } @Test From 2dd1d876050e31cdb8266f7b21fcf0ce64f01cac Mon Sep 17 00:00:00 2001 From: "KYIV\\Vitalii_Bondariev" Date: Fri, 1 Jun 2018 17:03:47 +0300 Subject: [PATCH 07/15] Minor fixes. --- src/test/java/words/CounterTest.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/test/java/words/CounterTest.java b/src/test/java/words/CounterTest.java index 0bc7c33..9f9c22c 100644 --- a/src/test/java/words/CounterTest.java +++ b/src/test/java/words/CounterTest.java @@ -26,25 +26,23 @@ public void count_word(){ @Test public void frequency(){ - Map expected = new HashMap<>(); - Assert.assertTrue(counter.getFrequency().isEmpty()); counter.count(" "); counter.count(null); Assert.assertTrue(counter.getFrequency().isEmpty()); - counter.count("Hello Rostik"); counter.count("Hello Rostik bro"); counter.count("Rostik and Vitalik"); + Assert.assertFalse(counter.getFrequency().isEmpty()); + Map expected = new HashMap<>(); expected.put("Hello", 2); expected.put("Rostik", 3); expected.put("bro", 1); expected.put("and", 1); expected.put("Vitalik", 1); - Assert.assertFalse(counter.getFrequency().isEmpty()); Assert.assertEquals(expected, counter.getFrequency()); } From 646d36723f62139bd0b027811b8e01f52792dbd0 Mon Sep 17 00:00:00 2001 From: "KYIV\\Vitalii_Bondariev" Date: Mon, 4 Jun 2018 14:09:53 +0300 Subject: [PATCH 08/15] Minor fixes. --- src/main/java/cluster_manager/Cluster.java | 32 +++++++++++++++++++ .../java/cluster_manager/ClusterManager.java | 18 +++++++++++ src/main/java/cluster_manager/LatLng.java | 19 +++++++++++ src/main/java/cluster_manager/Location.java | 20 ++++++++++++ .../java/cluster_manager/LocationParser.java | 11 +++++++ 5 files changed, 100 insertions(+) create mode 100644 src/main/java/cluster_manager/Cluster.java create mode 100644 src/main/java/cluster_manager/ClusterManager.java create mode 100644 src/main/java/cluster_manager/LatLng.java create mode 100644 src/main/java/cluster_manager/Location.java create mode 100644 src/main/java/cluster_manager/LocationParser.java diff --git a/src/main/java/cluster_manager/Cluster.java b/src/main/java/cluster_manager/Cluster.java new file mode 100644 index 0000000..61959a2 --- /dev/null +++ b/src/main/java/cluster_manager/Cluster.java @@ -0,0 +1,32 @@ +package cluster_manager; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class Cluster { + LatLng center; + List items; + + Cluster(List locations) { + items = new ArrayList<>(locations); + center = findCenter(); + } + + public LatLng getCenter() { + return center; + } + + private LatLng findCenter() { + return center; + } + + public List getItems() { + return Collections.unmodifiableList(items); + } + + public void addItem(Location item) { + items.add(item); + center = findCenter(); + } +} diff --git a/src/main/java/cluster_manager/ClusterManager.java b/src/main/java/cluster_manager/ClusterManager.java new file mode 100644 index 0000000..1b7c69e --- /dev/null +++ b/src/main/java/cluster_manager/ClusterManager.java @@ -0,0 +1,18 @@ +package cluster_manager; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class ClusterManager { + private List locations; + + ClusterManager(File locationxml) { + locations = LocationParser.parse(locationxml); + } + + + public List getInBounds(double minLat, double minLng, double maxLat, double maxLng) { + return new ArrayList<>(); + } +} diff --git a/src/main/java/cluster_manager/LatLng.java b/src/main/java/cluster_manager/LatLng.java new file mode 100644 index 0000000..540e901 --- /dev/null +++ b/src/main/java/cluster_manager/LatLng.java @@ -0,0 +1,19 @@ +package cluster_manager; + +public class LatLng { + private final double latitude; + private final double longitude; + + LatLng(double latitude, double longitude) { + this.latitude = latitude; + this.longitude = longitude; + } + + double getLatitude() { + return latitude; + } + + double getLongitude() { + return longitude; + } +} diff --git a/src/main/java/cluster_manager/Location.java b/src/main/java/cluster_manager/Location.java new file mode 100644 index 0000000..6e74677 --- /dev/null +++ b/src/main/java/cluster_manager/Location.java @@ -0,0 +1,20 @@ +package cluster_manager; + +public class Location extends LatLng { + private final int id; + private final String name; + + Location(int id, String name, double latitude, double longitude) { + super(latitude, longitude); + this.id = id; + this.name = name; + } + + int getId() { + return id; + } + + String getName() { + return name; + } +} diff --git a/src/main/java/cluster_manager/LocationParser.java b/src/main/java/cluster_manager/LocationParser.java new file mode 100644 index 0000000..aa82ab7 --- /dev/null +++ b/src/main/java/cluster_manager/LocationParser.java @@ -0,0 +1,11 @@ +package cluster_manager; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class LocationParser { + public static List parse(File locationsxml) { + return new ArrayList<>(); + } +} From 9903fdf80bbba58ecdaac97588227f7a18f1479a Mon Sep 17 00:00:00 2001 From: "KYIV\\Vitalii_Bondariev" Date: Tue, 5 Jun 2018 17:25:54 +0300 Subject: [PATCH 09/15] Added Cluster Manager package, created main classes, created XML location parser and single test for it. --- locations.xml | 14 +++++ .../java/cluster_manager/ClusterManager.java | 9 ++- src/main/java/cluster_manager/Location.java | 4 ++ .../java/cluster_manager/LocationParser.java | 58 ++++++++++++++++++- .../cluster_manager/ClusterManagerTest.java | 35 +++++++++++ 5 files changed, 114 insertions(+), 6 deletions(-) create mode 100644 locations.xml create mode 100644 src/test/java/cluster_manager/ClusterManagerTest.java diff --git a/locations.xml b/locations.xml new file mode 100644 index 0000000..510b3a3 --- /dev/null +++ b/locations.xml @@ -0,0 +1,14 @@ + + + 12 + CHURCH VIEW BP + 51.14 + 0.2617 + + + 14 + CLARENDON BP + 51.6581 + 0.2511 + + \ No newline at end of file diff --git a/src/main/java/cluster_manager/ClusterManager.java b/src/main/java/cluster_manager/ClusterManager.java index 1b7c69e..151a8d1 100644 --- a/src/main/java/cluster_manager/ClusterManager.java +++ b/src/main/java/cluster_manager/ClusterManager.java @@ -7,11 +7,14 @@ public class ClusterManager { private List locations; - ClusterManager(File locationxml) { - locations = LocationParser.parse(locationxml); + ClusterManager(File locationsxml) { + try { + locations = LocationParser.parse(locationsxml); + } catch (Exception ex) { + ex.printStackTrace(); + } } - public List getInBounds(double minLat, double minLng, double maxLat, double maxLng) { return new ArrayList<>(); } diff --git a/src/main/java/cluster_manager/Location.java b/src/main/java/cluster_manager/Location.java index 6e74677..6eb16a8 100644 --- a/src/main/java/cluster_manager/Location.java +++ b/src/main/java/cluster_manager/Location.java @@ -17,4 +17,8 @@ int getId() { String getName() { return name; } + + public String toString() { + return String.format("Location ID: %d - %s (lat: %f, lng: %f)", id, name, getLatitude(), getLongitude()); + } } diff --git a/src/main/java/cluster_manager/LocationParser.java b/src/main/java/cluster_manager/LocationParser.java index aa82ab7..eb82487 100644 --- a/src/main/java/cluster_manager/LocationParser.java +++ b/src/main/java/cluster_manager/LocationParser.java @@ -1,11 +1,63 @@ package cluster_manager; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + import java.io.File; import java.util.ArrayList; import java.util.List; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +class LocationParser { + + static List parse(File locations) throws Exception { + List items = new ArrayList<>(); + + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + Document document = builder.parse(locations); + + NodeList locationList = document.getElementsByTagName("row"); + + for (int i = 0; i < locationList.getLength(); i++) { + Node l = locationList.item(i); + if (l.getNodeType() == Node.ELEMENT_NODE) { + Element location = (Element) l; + NodeList parameters = location.getChildNodes(); + + int id = 0; + String name = null; + double latitude = 0; + double longitude = 0; + + for (int j = 0; j < parameters.getLength(); j++) { + Node p = parameters.item(j); + if (p.getNodeType() == Node.ELEMENT_NODE) { + Element parameter = (Element) p; -public class LocationParser { - public static List parse(File locationsxml) { - return new ArrayList<>(); + if (parameter.getTagName().equals("UniqueID")) { + id = Integer.parseInt(parameter.getTextContent()); + continue; + } + if (parameter.getTagName().equals("Name")) { + name = parameter.getTextContent(); + continue; + } + if (parameter.getTagName().equals("Latitude")) { + latitude = Double.parseDouble(parameter.getTextContent()); + continue; + } + if (parameter.getTagName().equals("Longitude")) { + longitude = Double.parseDouble(parameter.getTextContent()); + } + } + } + items.add(new Location(id, name, latitude, longitude)); + } + } + return items; } } diff --git a/src/test/java/cluster_manager/ClusterManagerTest.java b/src/test/java/cluster_manager/ClusterManagerTest.java new file mode 100644 index 0000000..b635d6d --- /dev/null +++ b/src/test/java/cluster_manager/ClusterManagerTest.java @@ -0,0 +1,35 @@ +package cluster_manager; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class ClusterManagerTest { + private List expected; + private List current; + + @Before + public void set_up() { + expected = new ArrayList<>(); + } + + @Test + public void parsing_locations_from_xml() { + File location = new File("C:\\Users\\vitalii_bondariev\\IdeaProjects\\LearningJava\\locations.xml"); + try { + current = LocationParser.parse(location); + } catch (Exception ex) { + ex.printStackTrace(); + } + expected.add(new Location(12, "CHURCH VIEW BP", 51.14, 0.2617)); + expected.add(new Location(14, "CLARENDON BP", 51.6581, 0.2511)); + + for (int i = 0; i < expected.size(); i++) { + Assert.assertEquals(expected.get(i).toString(), current.get(i).toString()); + } + } +} From bb6debe75c3efe27a9c209fe283c7fa48cd40108 Mon Sep 17 00:00:00 2001 From: "KYIV\\Vitalii_Bondariev" Date: Tue, 5 Jun 2018 17:47:46 +0300 Subject: [PATCH 10/15] Minor fixes. --- src/main/java/cluster_manager/Cluster.java | 14 +++++++------- src/main/java/cluster_manager/ClusterManager.java | 4 +++- src/main/java/cluster_manager/LatLng.java | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/java/cluster_manager/Cluster.java b/src/main/java/cluster_manager/Cluster.java index 61959a2..3b44d40 100644 --- a/src/main/java/cluster_manager/Cluster.java +++ b/src/main/java/cluster_manager/Cluster.java @@ -5,28 +5,28 @@ import java.util.List; public class Cluster { - LatLng center; - List items; + private LatLng center; + private List items; Cluster(List locations) { items = new ArrayList<>(locations); - center = findCenter(); + findCenter(); } public LatLng getCenter() { return center; } - private LatLng findCenter() { - return center; + private void findCenter() { + //...TO DO } - public List getItems() { + public List getLocations() { return Collections.unmodifiableList(items); } public void addItem(Location item) { items.add(item); - center = findCenter(); + findCenter(); } } diff --git a/src/main/java/cluster_manager/ClusterManager.java b/src/main/java/cluster_manager/ClusterManager.java index 151a8d1..708ef83 100644 --- a/src/main/java/cluster_manager/ClusterManager.java +++ b/src/main/java/cluster_manager/ClusterManager.java @@ -16,6 +16,8 @@ public class ClusterManager { } public List getInBounds(double minLat, double minLng, double maxLat, double maxLng) { - return new ArrayList<>(); + List clusters = new ArrayList<>(); + //...TO DO + return clusters; } } diff --git a/src/main/java/cluster_manager/LatLng.java b/src/main/java/cluster_manager/LatLng.java index 540e901..677ed60 100644 --- a/src/main/java/cluster_manager/LatLng.java +++ b/src/main/java/cluster_manager/LatLng.java @@ -1,6 +1,6 @@ package cluster_manager; -public class LatLng { +class LatLng { private final double latitude; private final double longitude; From b644992d83cdb0266377667b9abf36a9c9874e12 Mon Sep 17 00:00:00 2001 From: "KYIV\\Vitalii_Bondariev" Date: Tue, 5 Jun 2018 18:05:30 +0300 Subject: [PATCH 11/15] Made parser's code a bit cleaner. --- .../java/cluster_manager/LocationParser.java | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/main/java/cluster_manager/LocationParser.java b/src/main/java/cluster_manager/LocationParser.java index eb82487..4a5da6b 100644 --- a/src/main/java/cluster_manager/LocationParser.java +++ b/src/main/java/cluster_manager/LocationParser.java @@ -23,34 +23,30 @@ static List parse(File locations) throws Exception { NodeList locationList = document.getElementsByTagName("row"); for (int i = 0; i < locationList.getLength(); i++) { - Node l = locationList.item(i); - if (l.getNodeType() == Node.ELEMENT_NODE) { - Element location = (Element) l; + Node location = locationList.item(i); + if (location.getNodeType() == Node.ELEMENT_NODE) { NodeList parameters = location.getChildNodes(); - int id = 0; String name = null; double latitude = 0; double longitude = 0; for (int j = 0; j < parameters.getLength(); j++) { - Node p = parameters.item(j); - if (p.getNodeType() == Node.ELEMENT_NODE) { - Element parameter = (Element) p; - - if (parameter.getTagName().equals("UniqueID")) { + Node parameter = parameters.item(j); + if (parameter.getNodeType() == Node.ELEMENT_NODE) { + if (parameter.getNodeName().equals("UniqueID")) { id = Integer.parseInt(parameter.getTextContent()); continue; } - if (parameter.getTagName().equals("Name")) { + if (parameter.getNodeName().equals("Name")) { name = parameter.getTextContent(); continue; } - if (parameter.getTagName().equals("Latitude")) { + if (parameter.getNodeName().equals("Latitude")) { latitude = Double.parseDouble(parameter.getTextContent()); continue; } - if (parameter.getTagName().equals("Longitude")) { + if (parameter.getNodeName().equals("Longitude")) { longitude = Double.parseDouble(parameter.getTextContent()); } } From b66b8af1699a0e21aa5cd66dd2c3a92f17fe9303 Mon Sep 17 00:00:00 2001 From: "KYIV\\Vitalii_Bondariev" Date: Fri, 8 Jun 2018 14:54:28 +0300 Subject: [PATCH 12/15] Added Locations.XML generator class, added randomizer class for generating random location's data. --- randomized_locations.xml | 1 + .../java/cluster_manager/ClusterManager.java | 21 ++++++- src/main/java/cluster_manager/Location.java | 2 +- .../xml_logic/LocationGenerator.java | 59 +++++++++++++++++++ .../{ => xml_logic}/LocationParser.java | 10 ++-- .../cluster_manager/xml_logic/Randomizer.java | 34 +++++++++++ .../cluster_manager/ClusterManagerTest.java | 29 +++++---- 7 files changed, 136 insertions(+), 20 deletions(-) create mode 100644 randomized_locations.xml create mode 100644 src/main/java/cluster_manager/xml_logic/LocationGenerator.java rename src/main/java/cluster_manager/{ => xml_logic}/LocationParser.java (89%) create mode 100644 src/main/java/cluster_manager/xml_logic/Randomizer.java diff --git a/randomized_locations.xml b/randomized_locations.xml new file mode 100644 index 0000000..982048b --- /dev/null +++ b/randomized_locations.xml @@ -0,0 +1 @@ +0STCUQSWHINT40.5891958206640917.8332948612905971CTUBRSRGYJ9.821887471920462-90.368129099868612EKGOODGTL-43.33467759219839-110.486981134301443LMDNUAGBGFG-11.807049611265583102.570081905461964FOKHR-61.18080771628428-93.322321170628565RCSYDRWR-65.48901036619844153.259624392245376SAYBORCSAOSS80.38235794119555-171.242687468964167MMAIIODOQP71.19985189929301-176.979344541292968DQVTFDDRARPSXY-43.0882112778904113.434149967675219FQQSTIAT19.96311935406871-14.11016587410966810RWYBORJI73.09033532956994-30.92219128598071611RDJXXDUTAWKRQ-69.04767729922706118.0852992267824712TQPLUYTGE-20.597679564803450.10382096998057513IFFXNYDBTU-3.4897249374328823130.4354743630239614MIWMLGOOEKER-6.15991773430099129.2062162028000215PKOOL-48.5145611533563658.873847776345616NRBKXOEALJEECX4.57175056409232652.3901874250833817ALTLJVOMIJGPTJ67.2020364215576123.22697258495105618GEAPEURMKIHOF-36.2704680624579443.20442640485265419LQRIHAC-7.657858628686199-8.65238126584773720GDXQQ-21.23317755454059150.6344706230521RQHBOICSSQMEYP45.849073535814114138.0986743895476822FPDHMVKQWOWCM12.669298147216395-24.89796259275735223XWMUODM-7.796316684351296532.0398946265453324LSDSONHUFIXUS60.312813625432625-133.1537755346340625XQTRWKNKKD-8.165477820697689171.4045766843623326FXBUWVPVWJMAJ-78.90163054742065-20.13678358345683327XXQGYORLL53.21610924331708-155.745696395710328VXLQJBNTJBFK-32.0354275550331586.3931349873473729AXHYQDSJELEEJY-5.72820647936436-124.8825276300035130UBSWEIL44.7253254708493-103.9026245946183331SLIPUMVETXNCP-77.72257924886125-6.907310429131598532HQYTD86.3027627734729591.4521634334556733HDGIKWYS50.90118405031808-137.8476031438245934BUSXIDPGUPEQW-52.06647315297505-17.26640250743693635EIKSMNRXINKVK-68.2930013793389-33.28182336901960536UGECSYDVMM-28.916173730141516-117.0819053825341937YXQNTMRFV89.25693951327185-31.10915102715770838GQWXKMJDX24.538946331885853-49.12951751577054439PHAJYTFUJIMWGC52.98632053936467-6.66992960960499240HLWDTMVVKFTPM63.85231691085991-67.7482204340788241IBTVSKRRK-87.44697530670756-166.1719028690229442XSAGFHAWRYI26.836748963996612132.9736820643307243OMBXQNNAADI72.6038511992596292.3967103684925644BHOQTTLYSEAY-24.0241358834848682.0945816951043545VLFBN-35.813557364340745-161.8546347148973246NGNFEGWVSFFUOR-26.281804969880262-177.9447854515748347DCOAIEPKCSCYFS-30.61292054645616656.7165932397368848AQJCUHGUIS11.579409776175169-125.8273896279027249MTACMCOOWQXSDW18.750116351589271.5099404606452550AJJQCFABL-75.06883902415738-160.5012528725516551LPBWQ87.79344886762038-9.11809612562376552SVKLX-60.63023939121473-88.0796780934928953CMFDJSL-8.368175739696355-85.6491145897825754RECKBPRXL82.0294911177279394.884117411786855MHJLWUGNQWMI-26.0548074463794258.2457162360646556UGRVAFUMEC-69.3054922087029918.611790139779657NVTIBQYAG-40.49622638043613-81.4430989938148458XIAXLK21.038662051469387-16.96936696385918759XPGKRQFJV-18.86511638290098-161.7758600518936660NWYJAN-84.71598468523425106.8602821452263961OKAMMTGAHKRNPY83.4829657016963415.30737780209588562WKUFFQAJUHHHC2.475498543774250558.7943339494844763FFJDVAF-18.59162705722279433.65905347714803564GGHOS-48.82475883560104573.8783914039235365IAYHJ35.24672430164043148.0592757069409266KCHHHVIWNWERKI24.31178007225969465.870467554666767OMJQFC24.489099517066933-155.9615419095915568VWJRYQVKOW45.492303280207494104.8599143018901169WSLMPUHWIW27.775642646079376-128.9838256994064570JJXXNU52.61299994537685679.5123778026187471WTPDHOJKTVXLWV-72.5685088524961712.69767871913239872CXFUVIHUYLGTH76.2476457848101263.5019880026854473GWPEKAUFBDKHAA16.055861797052202-29.56929357749274374XQPAMDIVGME-74.20789900472228117.6509522554395675GINORJW37.380486411879716-64.5818653030118776BMKEQRYYTRGHVX55.00645287892124109.5060251204417377KGGCNKPW43.297867645303825103.1436166000884278WXGJCRVQQPRPN79.47734765344896151.8017679630960479BHAVVPKD-61.31418985821307-126.8689650557817380INOEGYWCD-12.589328715783068-67.164962016629881SPOTVIMVLTW82.41846439581539-45.1040768525797182QTNYQAWUGSNTQ-42.27583017645038-98.67470103939283DLAOTVQSL-20.994712944669104-83.4580002884457784CFKGJBBOFOX68.17549682117902-107.6141362657035285KYINDSLUAJNY-84.8191002277488363.6802112541933886FTGCTMBLSL37.86760895178409127.0080300422151387LQMXLNHC-6.3784021550480645169.1354282836063688XWQVRVWPABA-60.767721485531375-45.44349905750513689AKAJGRYI86.86069627715611-144.854340221830990EQDRDSMW88.3257799535325324.17254404717442691CKPBJPQI-11.30506334890202482.1280906147647492XNWFLQBNU45.97325948597211-131.6098877186069893EMWDII-52.8607294178786377.8496845974304494LEPYOSILTIKUC-30.813927338662367167.0350246341382795OUDGRJDBCNKXH17.1686210199727942.5752308960909496TOEMONWWXMLI-15.965379266297504107.8306672515321997FHNSICYLRQSXQF-5.33920345540065-44.75343088713833698GLETUUHNNB10.22902230706415.88269909598426599SUVUPABLR-25.936714444757627137.51605649205175100OMCDA-63.293309605476054176.99954323754207101JNVBHWXMJP-32.94256854671277-80.6157296881855102ADVEDXBFDTEX-42.29036810306136108.1812147651766103MQROFCWDTLWFGA44.28626417264303167.51209654067708104LWUGPFSAJ-57.360229828941822.88675148149727105CONEV86.32520417993743-152.85189143338815106GRPQJOST72.13349664996377-110.02661651232604107WAIEAATAQRN-78.7419220695941287.63402805939808108BKHEJSRSGIUG-1.4790555007564024-34.01563919079851109QVAIFST-36.66297146640575-118.65675308074961110TCLRXCX-58.981414998824235-30.462026701408803111OHKXRRETXXHN-85.17138645463812-158.56166804857898112MFRDH-51.0878323103482364.72532786563613113SPYRGUNVPJ-67.5120162923212943.704435920246056114DYWAHMH-43.34863946992448-125.30136645819272115COMDFTHP-3.6202736880423174-113.46040412211723116HWQRBMJEMJIW30.40125907857938618.496952775975956117YQLFLYMQLSWX81.2697638059960999.69236882766575118KNMSNRIOP3.3572188951415-84.53566495554712119PYLSPBO-64.68739374294152-174.58847477095878120RHWEX59.93632907894539-31.834108567649736121SNVDJHJLR-42.48743907170987125.95560011150485122PIEXTKPJ-76.90442295538999138.66057911041145123TYEPP21.55410099813585-117.43805064522283124UTFIGBOVV49.23280419788108-172.53166668355772125JTLFAESSHOHDDJ67.95974483501416-2.9240695445054143126WGENGXMDNXO-75.02543451869572152.8013886420136127HHDIGSR54.832915929688161.467917006871128SLIDOCWWWELO-49.2420396052714924.859424435213157129MFWSYWKXPEL18.925322502786656-51.4113678495558130MRHMERNSL-84.67096011055015-11.00925839450565131CPPIKQKFWQC-25.51123810688477592.46664851811755132UDPVL-0.7582699416095124-72.62002959660542133AHUKMYWY-80.138621867543524.12996629503192134MUBMY12.49736358431816514.475092455163349135GXPJMFUFPNOXT-89.2367659380353-70.01211409702702136QAILDBFHGT-9.338737750031385-136.78000679878593137FYAJWGCMP38.71137459124929652.81952385907627138OGUNIYLQC-6.88540404295577-91.34589599292508139AQSCAIR11.969623058294758-151.47873711805855140YLJHM-28.582134991898016-63.423197395993824141JUGMDU43.95713620998026-28.213581429519422142DRSIUMGNVVF87.5687369856139223.555270755997014143TSGAVSXAXDC71.82541743652953149.68440211706576144XOOEICNXPOBBR31.705126715742992157.88027937003375145AVELRS-4.864483340862989-18.19996945295776146KVSCEXUYLYMBOY59.4387240475095483.24611459053546147QHEKTLWCJ-70.50821500016687-168.10631031110162148FFHEA-74.48036740879408-8.87576584099753149SSIXUAQVS-23.637112787774413-79.44163840451019150JXSENWWYBQIJ57.37974265908278-145.18679458176888151JIOSD48.33869144425947-82.75333258219143152KTJPGAEXL-19.476475791140317149.30685764853087153RSTJM13.744936719131857156.34357522607712154IJAHF54.137339862433834-132.4186712936903155WQDSDNGDYW-45.777872529318592.0488364220478843156OYFYDDORN-47.2925469866777149.6777296780482157RQKGCBVOQVKBXE-43.57655822167515-91.73789826002107158GFTAJWNE-27.02537238073203754.44096799863823159NVEJVUOJCGIF54.61817541971638-127.89673300653396160REHYYV-10.007672948869597125.72302325650321161UBNUJ-4.963950161630237-70.37413407003368162AOUDAXGVILVQ-50.961388464254278.777034376305352163EPDDOCYVTE-56.894150065278026-9.992214038181942164WWEIYQPQVFXU69.4198108126993296.61595082378795165HIPMUKKUPG-61.40418894102687456.77178977307918166PGWQMVVJ16.322335570359428-65.98303065241102167MFQGDJV61.15937869357052-92.66272150926011168RTWGUXJYIJU24.755614311505056110.88091137885539169QOGPTR-41.055047258667695.396095904880923170IFURBU-24.848539691634919.270954557418207171XJXMWGUYWQWSH-30.82742450457966-164.52300577893868172UUCQTGOWOOYCN-9.573601866396444-121.55500960403317173WEQTAP-87.17110442323386-148.48717785229024174MCEIONTMRYO-71.95567428878101-58.61210127261782175YVJBS-24.220038549948057-120.01804623443462176MIIDWLA-73.43397435491543-168.5983382917647177EJTOTHP43.86981993302871-158.43798252200682178RUBHJIXPJUM-14.856717067323444-94.7328952447767179PUYUG-55.7212692166358-101.60145468837742180UQTYTVTLMNFG-0.392725257467176951.28787009733543181QUBNAPX-8.70357934453652126.07983322040127182GCWDWSABHO7.621220485819322-94.16481557072933183MTUGKLD16.88853445071383469.76227646144329184ADSNSUBQBBWR-7.37037401921414151.20494985427416185SVHFU-50.575673030009995-118.42413616826391186PWAYGWMAJVH-23.89560755060893-160.12970470775187187XTRMQDSR56.178845896690746107.78983804729978188TIMDLTLVHP31.26383484974337588.17695448314959189EHQFRVKIPSX41.553940746148925-49.17680401688696190GJPDJWESMS54.827201123925335-170.11257595422057191KMFXVLLDVF88.20684439950672.58586617801234192VVVKPIYPD-5.069104125265028-138.1258304919388193PJTUXDTAT-63.71631131075826-40.38255475964286194DVDSDYH-3.4682559466412926-45.794466514521446195BWQCHEIGK-24.54133722133303864.76526076826522196UPQEQQQH-86.39210592189272168.69835727887693197TMWJK83.81989012222607132.33728312040785198CLKBYWCDB12.308513272562706172.65805279983294199CIJBLNFHHQUMXS34.6324712155956450.95071093290784200VBJBNOXASBUDQS-24.356506450329462118.96090452832777201NEBTHD-67.90410024843706122.54101710907054202DBHWEDMVUHBE75.1091968283269-66.53141564160606203WMCWLR25.04808295007048-5.34393539210501204MWOIAGFELIW8.202486601629971104.71167447542194205FGYXUIX-17.119875752253833152.1313519834303206WAUHWTHQJVWH15.403651291777024104.35146397143507207SHRHHSE-4.67593783702317147.86563225206714208UEXEPWS51.74823583284379-178.14197130497206209RCBIYH-59.06134894574397-26.792726815607466210JLGFASDDBE-80.4206895015398119.872010991222936211CPYUXF80.23130237170997-98.92529845088056212GTMUQEBAEPYOH54.13845214808751147.35328147434137213VJVLNITI-76.23825294019534-45.56484962129417214CDYJWYJLRLWUYX83.47433420826997-85.58314052731502215KSSIGOJ-6.53255499557045-146.73384113452883216UYGUW38.956940713335996138.08889777968687217MUIJA-18.68497815930473490.71942949717732218XJUFC-85.2521015735752295.35721554156595219ILCHRC-28.9992956370924638.29959612871153220NUEOOV-15.282705657629165-41.887122052729154221ELXDVMKEJQ-82.94516045663501156.87504081416603222LNWKQDRMJO-87.95776681443385100.58488010299203223SDIWLOEQD12.0160440421440690.53858090252714224VHFJWP47.68426400940862-166.8935454707856225NXDWBOJQKATUTY-9.349161511484098132.25387333049474226CTLOMAQBWVKG75.004810757102488.17111179666443227FCDJNPKG-7.2309136159341705-64.74675269638372228ERQPMNCYD-64.20556428644639-55.19653840866438229RQDEU50.56983725837901-57.22636727611868230IXRGTSTG-23.16576740556026-153.29527418589294231BEYQXBDXYRO-4.649506189735391-5.924771146179069232KEENACJNW24.31092766416903-44.33854630156469233GHLXQLBA-13.41258536676170421.138196255611433234TGBNCSWITLHG-55.94187987398327-73.4646923775723235QSNWWUKRPFATTN23.570670879568738-34.896508819591446236NMAATAJBQJEXLS77.9244582983879880.9573721327111237WVHJBTORA-64.9976291489244-102.5121351728928238RRRJE23.643981708932643-14.477882018696704239AGWXBIYXO-7.06538289960019517.16563799542064240EYYPMKQSTHWUL10.132747606040667-45.61574186046906241DUKOMIFQGQIY56.904989682709186-142.1177430473474242QFSXOHUOLTJO76.38762346076305-82.3758188890228243UKJLAXJKUB73.946638694157481.18347670965619244CPHQGFB-41.67171889517484174.16896200367063245WQQNITSXHADDYB-37.236565741682035-35.08265905966033246CRPBRQMVGICWRQ15.510409541245565-11.271660267297506247YVJUTMROBNPE74.44440160582477112.61646676239866248VPPSHLFXGCER33.606307919407044-83.00124984374804249DOBISKYJTEVV-48.739604695276384152.53225250220294250AQNNVLYVVCSXFB8.52716735662284-133.98879158345505251WBDYBML41.08571140311244-169.20445387845433252TOBTX-60.3506206257604380.19991117721673253AXJVJTKPFQKQ68.7835941164558774.556887961049254YODCQTCJVVSL-50.358639174176695111.09419745751205255LTHDHNR54.47179786941325-151.3891463419763256EUBBTQKGLCWSP-44.79257514035876-61.99837022860042257RPWRD-66.59028285583095152.34579214332058258OJWTXL-22.928639301431446130.73901094132265259TWVNOCAXG15.55095814919312182.10165963605863260PNPSCRCOTOFT88.31694016031176-27.73369566153542261MPVIWKFQKO59.5562940925279156.87522952285917262OROLRDPIOXI-69.58390860511754-17.041473171297838263SWOPFWAOJHCJAC48.382058280620754-107.76101860259143264WOQVNVKTRUVF46.856350837195159.175995150592883265KROEAVVYVQELD-68.74596096266004-114.47726053081165266IJECUYYNP58.538319434272864179.47336543733314267AAGXBRGDOIGQ-66.96026763498031-41.02416349915771268TTSUPCIXWA64.6889863462929107.55828920607627269ORCWWXXX28.684934999077512145.7648862159399270LUKNTPV19.5643548787248145.22948855162394271LWYJP-89.8273956830622854.607639777612434272FYVEAXDVA38.315080812194117.3423785329623273YMYUASBCYHEAU55.2255452242047891.09548745279852274JOTDSEJW4.736240280307484-138.31832906890372275EFNWPBKO-41.32013695959841515.67140878692274276DFPNVKKFM55.108657217741836-86.74580426422911277IEVHXHXSPT-81.34706490757458130.12668485179285278KPXJQL-58.956872126305115-161.02371344477496279BXXFHV-85.4215913063116-130.3554623008402280MLAMHOB-51.692951290725439.635498264296103281KMEAGGANKUROKH45.615424657586175108.08646935562916282OHAMMAEO30.32232757998824-167.83030479938682283PWGYBLI3.956711240564985-145.92851273507105284IJWWH-44.3128962784208147.428640454370225285IWMJNQAAC17.79556144183847333.373013689741896286ETKJKQF-57.6719465481662544.34451145775921287HMULFXDWCMFFUI-55.46770210306765159.5750233633018288DVDHP82.7534691945180911.922153466106863289PCDKRKRT-2.101229876181179158.74083666841335290GHUHNWAYHQT-35.650598527506055-98.52147965427841291EGUEUX67.88521584787588-126.52474514745988292LUEAMUG-26.058886839261312112.05925943585663293YVRIXHPQPUKW49.786446885230134-44.43951820682716294UVVBHUXG10.048567164107723170.95473680723813295PCIFOOFOQXD60.2706010022639107.08151887560251296CDBVKDNHIVYBYH80.5898812295472739.3658476981156297TSYFTY30.28147229934291-61.23581659817545298UYEONYRIYU-70.78448783790964-48.553462612741725299RTSTDBPYJK-75.4157515362772145.22162629183418300XTTXJUF24.965985927209672156.83352506039353301BCIIGYK72.44523461291908-47.52395508231842302BEGCJYOHO-83.01137923158333-166.10983039809614303KOXCFFQ70.59306764845297-101.99430823259873304QDLTMWK-58.51651516031748-97.04752943081759305DOCRA-85.36527134501056-143.80768684823263306CDYQQYXSYM71.61459149999499-118.3799005412281307YODRVWPPBK16.159745509852456158.8161882655819308IFRLWWCLOPA-61.27579832846466135.46383991739458309AIIDNMAMBEY-38.97122263465039126.94563239219116310BEBXVLSIJSWOYK71.83630573182745130.87661630425077311EEQYRPWKWM77.6376984379267-125.24751881640829312MXSUAF27.28346444832767813.27728534445879313ILEBIKDFOAAJR-58.09519766285622-98.21008372003169314UOXOBOJGMNUYV42.16142780486001-105.53572107280827315FTERNYQAGCO28.505676148061468-32.83161323406594316BYMYBRCRS58.620669993430481.25907029157287317VKDJWQPCNY55.63719166438756-131.76774176232885318MWTWJGK78.9367935965555646.84708205227412319PJOMPBVWLKBG-87.84683236218106-44.78371179806754320JGBKUGB-56.98013531027817159.58163593326083321VULQEIFGIKUO-66.9719006949465425.863171606565516322IEWTDL-50.79387555288933-148.70050776654696323OWRKXADSKCQFCH83.92254432081234116.7455817247386324GNVFEPPO-65.74355616128561-3.7604766084390917325EKCJLFCIIVG28.488818589893697-106.34482368425064326XVOOBSQJPIS-33.122056939102634-136.40536686328085327QUIBNVEJXTLYL11.682676757606231-130.644707265721328WLFBSRQ18.35753455387286741.16677544719647329OWROBDAKYCVFYD59.49777043525731-87.03607947568663330IHLVAB-37.13876719635072-30.665689885865646331DAWBBLEAAJSCF84.52096223002704142.74232850660286332OYIPUDY-20.172474737505111.58116753690462333VINUTRHPVJH24.516248152913562162.5170649258667334OTNIK-35.7215331319766730.924297858137265335VCROPRAABX86.78282804962231-105.80642490681737336HNWSEUOY65.31796381232644-78.56820416519216337DWFYXUAVEJ52.32685332185321-97.17254732931653338BOYCUIPGR38.59082698568338-52.205351035834354339AKLFWMRUKAYUDI-69.945651400199619.290692650262827340EFFSQKORG-68.785926773543978.63122068337412341BWGLX-63.15406217791197-138.70501910211746342WNXYIREOOGCB68.36132900648562-74.48266962933516343MMGTUMETFXPRJ18.43450002348441867.41661287279916344SFNUTWS-19.636196622521354156.53928330411094345QQQWUSM-44.377371339727844-32.462102598462764346IWOFLQEAMJCXSP37.85352666352017115.03360802227718347BGXLIYJJOCX14.98591221185572169.85563437446507348BRKHO-55.58759504270215-146.25806846774876349YTETRTLMPVCDQM-79.38782618863998-39.154067169757354350SYCRGXTS6.525429268177248-29.98603105059533351SIXBOGHQPNCY-51.0388776048521102.94992229528526352HWPCOLYOXWUIU-35.97528348271525-53.794293437470344353QQYJIERRIV35.06383534714628155.26756000587181354CPKPXRPTMD-71.2968483108807136.40892483396624355ULGRCHF-79.96282183530877-155.44013198305353356FQNRYAYUUW-15.490454974082454171.95249151349594357DJTCOR-86.08182542725096-132.96379786907534358FJQFQESMUT9.309245668748574175.97186613344775359EHMCL-65.40591954220656114.27015123593236360XPOBYKNEYAXOF-81.9489431792955726.28882804347529361AJVKJEFUBIRMDR89.78237791513055101.0162875586081362NUYJLVWCRAWFD83.6299210054886-69.07998335755718363OXEDF-42.4040462108362163.86266145295536364ULXKY79.74343772706774-54.13230554720154365XMXQXIKOH8.992749345355747-61.226214206961515366EOUTDX83.74551630373722103.19219805276447367IPODDUCAJAF33.9544275221681685.0729035559915368UQGMDWG64.84039267794802-73.75959711763689369MLKNCRKTBXACI-52.6739669142612433.82356596234547370SVDOVJWAGPYN-75.3736580360175729.864984688339035371INCBYE-39.41955363037825-70.68295155743982372QLIKDXMLXPQM78.67263527446875173.498895699743373PSVSV-48.7928532452823566.14724924456578374CWNCXEVC5.032460346857963.4641199197580477375GTIPLIC-85.8766287209335434.82410724713736376XVTENEXSGPNX-3.6027823500616307174.89245780739805377JXEIA-6.52984214669648134.62678796047712378DPDXTQNJXWOF-68.04220432131075-11.273758758676848379AFRJVVJVACIMU-68.53542256029274-168.04808231763724380EGDWDKPECP0.9757431056046215-103.30980628176833381KTVORD23.08293120513588-15.730266792576458382GRHWOMGGJY61.077013468560466-84.689828314205383GHATQDTWPJWR-88.30883419809533-164.82153708324572384MWXDWKLBESUAP-55.307023202185434-152.10932336075703385PAPTEBBCNWRW-8.166347851053416165.25609679916363386DIAVLDBQ18.15570714826785150.14225111022307387DXMHCKII32.20044213476103-73.45278458454428388BPQBHYQRF-54.54182253262832131.3188567786533389MXBLFAOVY-70.43796289654782-103.25494827437012390YOTOCPYGRIWW30.442693222325133169.38287837744315391GOGLRWTUQVY-84.2087834684525-37.1267883122722392RNBXNJYRRCQFR-1.626734291379264649.58900619010521393YSPWDYMUXSO62.20985071073966174.10472115989637394KHFCW70.8184444951288313.923961064511303395MJMKLEIAG-20.451378228532036-92.45008007887591396LNQKUIXBYI-36.493541239201164-109.36709317085828397EYKIOXAPXG83.73674844145148-125.75077146621567398KNDWTQ76.18518367277315130.08757167028904399DMTAQAAPUFKM73.19760550241674-76.67490570134075400KNSXGF32.237868735873235-156.2448894410876401KLRGOJIMA83.61924098306562116.89602479687892402UVFDTUCGUORVWE-30.904873945764955-166.9672273863251403PSXMBLXHDDJCUB-31.05883670887478164.07419569762175404OQFVHDJLK-89.60043732699508-61.10365161138934405HUNDF53.8738596114753-95.39952075815616406YYBJSKNQMDLUPK63.2879544222096222.014384657000505407TIOLT-12.55550203438973375.7515440869422408JLCJMRD-72.36582958470953-132.28408884569745409VXYOF46.0272475616273284.0913748116983410MUPPLWHETUVKL67.26564571959582-80.18075031044975411XJHBPBTFVAJVMJ-30.168422450028615-71.9789743462739412MJWVPYBWRLBFA18.22399570055483896.61394626569529413GECEKJFYWGIW-7.55165677279939161.17704685867807414EIVSICOR69.00318349474736-124.08699687652101415YUBHWQBNXIX-23.821591005586313-96.86644993950651416NXMJNQ55.20064308958527127.12387376511316417SAIXYHDLCFUG-68.0644167956398-123.70926688014043418GMTSU-52.2849279660231-38.986173181422146419UYYRWV-86.39564743222607-23.439993949930283420JLGQUJFFEHR-52.66820025549736-123.47942601422125421DEDQNOWYI-40.09873821366312-110.90427998857346422OLOACJI82.9369554356899-162.70406817308933423KPOXWB75.31709542307826-71.25242481517675424TUONESKJXAF66.9144828727870954.37479514154339425DIIDBTIIKBQY25.41334465196270342.17626508860252426USBFWGDDIEJC-3.4472417372253545123.8001583958212427MKULNWK-88.87726377309231-42.4758598159913428JDXURITJ-27.273267333443854-162.53472719522236429RDFOGR-50.72689247075598-174.2050225802119430PRNMBV21.1534437993276330.7212820527034012431CNBYUFCT85.45559936955433147.057492776373432DQGTBNTPCEE-14.275628307208294-161.6645477715722433NMXRODPNJ-51.14309368387354-69.35997525394171434YUDHS-45.090308786504096-88.09841634631847435HRNAVGPOIJETG-31.410117301873512-15.164350612825956436DQCJAKMKB45.249398692236866138.17743663596252437SLPHVLMH86.55666732313551-100.49153198560995438TCFRUA-74.18821399044896161.34774946542893439RYMNESGXQ-13.68059526674257114.80462544846361440DOEXFQHWTPYQH61.917068730317936-57.46666467399278441TCRHHPCK64.2608008621865690.83542989868647442GQKXXLVBTWNXI-10.37256738167622123.15290417947841443YFISW-45.9252613042182254.152996235149828444OLCXSG77.1819515409564537.981120553954355445JWJYGWG-75.12208741853368-176.71740368519912446DGYYCWXRSTMAM-53.09482056816557-7.230789171507752447IVJHDENWRWK17.45987945572787253.1064276117053448STHGWN74.9076251353541550.28290835546244449TJQRXKP43.4790479313188-142.6824807165861450FSLSTISDE88.32327324137896-74.20639880471086451NWOHLPWWRPCNSA80.73933172819906-5.7670666591007205452FPIQXNSWGHBJW-3.158490008799944395.94497890183334453WKEQI21.56318850465972129.3355950334559454KORSOATWGSQUF-21.1779057761155846.670349450453415455MLBTF-72.7139140091804448.077721607423825456HNRDRFP-72.09221659994658-73.98962117688211457EQTYJ28.86964781014059-103.40351867171601458MDHIJLCSVB21.05026775630000256.66690476241706459GKRKBDXNWXVYA65.84263806997475-94.52285943552951460HTBVD24.924453239990854-102.36758289517194461IHSJUJBTUQUNH38.2367190656465878.58937470957056462NFLKPUBBG-65.73086862685406-147.57496533318732463GAQOECBUDXUYQ-74.05407403328293103.39609475498042464RMOBJEPDR81.74464140371336-41.50975308508569465KVQNF-26.742779937975996163.08566135159822466XHXPUFS-56.36814132057555156.60709470438053467TOSUWCFTUNM80.7882003432584123.285768010091346468GHCXQYPSHEUB51.42073986087365-115.05920906577411469VYRCL28.00563808513958-79.8576337759816470UDXOYNCTBWKVDN-6.26012425916037879.34807656292162471AJNMPWBMGXR14.628618529462656-176.25965776314965472AWNVXS-23.47239569118399-55.26744261833498473IGJACHTGJRSLIS-13.332369595558603120.05387701865652474GONBRRN-46.264721464517336168.35258397873366475EVONAB-45.199193622213286-93.85335976054641476UNOILNQVOINI-17.34231418076302647.02631206691808477DCYFTUKQBPDUPD-81.45095034219523-37.63845639818163478UWXXVW42.50396248115118-165.71217424577372479MTMSJD44.279552289219964129.76587129660322480BPBPTOSLPMKJAO81.3754613576592245.89366032979501481UAMGBIVWU-23.6293216745723959.384389258776707482XFGXJVEFGWPQVI76.85680584718162-21.583346191467626483JXRMEJ67.61618695797134162.85214251812425484XHCYYQSYPPYYY-46.710407181032565-18.24639441058946485FPUUJDA-39.41216859088961492.47762513429444486GSBAUTCMY-4.56562941351430176.70770357470309487UUWBKFPOEHEMPI-24.226134976023772-173.98372998808048488PAQOBHKAU80.80682880681235151.60033044601903489JDAJUNAWMX53.60338241017956-65.29643785889657490EXQYBY-9.478202631812707125.12977914831964491OQVUEAOAYS73.04828030346653-41.89051061285113492WVFTWORPEUONFO-77.47252368136995-165.6279401539573493BCORDEDIYX-35.585450647815975120.38220957442724494PIPFEEHIFGVGU81.75652801704277-23.91899605661743495OJMISFIW52.264387930999845123.26969695439686496HMTYPE15.219413127637665-72.17044846403476497RLPMHWO88.120319633860717.362273922373646498GNMOVMHDOWIJN-58.17726470438033-1.4979099215843803499WCOWPOWK-9.0008422433626983.9917199401471066500QTBTDQHN-19.49231043884447-103.89401198541208501RYKNSLHCJURA-35.59566981889872-96.31617719182398502PHNWLSJ15.060918968674699178.228656839135503QGHKGMTCPURAFY-47.2832223653608977.72734324139122504CWFBBQVHYVVYS9.86469588069729889.70882835576339505RILOQYKQ-83.12406385271163-101.01398974445864506FJYWMUGGY27.46792302132326163.63764338080125507EUHFPRQL-58.62594255703847-177.7711871209677508FUPBMJGBU-39.00231173664297-149.91215604854094509CGYUJEWAIJVDHR-1.5473937699279939.477326339703808510IPFQTSJDQBYSW21.80570593959444616.0163817043738511LTNCEVOFLVKLF-1.5050565668601195156.88656671454737512XWXWOJIP-4.999040407457770.9955290736548079513XIKLFAVMTMUJ-15.1263199637911919.25505765283347514FSDXA0.7324769413610284-136.17044087905882515RAXJD22.1271151844628881.96977992443237516UGMGSO-34.432567736828511.963524005473602517AKLBWAAWVCLN-17.635498138601918-162.40429002512042518QDBJDGWIXFTQ44.1844663658671955.970930396667143519QCBUVAAHE74.96973655438796-87.9378367947462520MFBWUCBLVETFS59.1744901569460941.270695768831644521LWNYEWSUJCHKRX54.3804591625571756.75562557828556522UMORAWTSLMV81.02307169298311149.5368723316684523YUBAHNPKOK76.0279896128660157.19322609856556524QUHHEN-57.702095989327226-30.26566558125947525FVAFS-25.226498928293367-81.61667015099957526LBGEOMDY70.81197145927544168.0096963428196527BRHXDVIJTFTIBY-21.692547813174286130.40234516960464528SKXQPMIVCWL-64.90381090900054-127.2482330241354529UXHKNMXJUYWI77.84750710290112134.68748406072763530PFKRLPJXWF-39.53294718190046167.57687100090914531XPQIXVPVH36.97212883580265142.47229797039364532UUCTH28.198000627673593-0.7762570887014988533WXBDJUIAJJ68.110820189286957.395757187576976534BLYVBTPUUNMVC43.5830212961675792.21528056678494535IODMYQRUL0.6286470212492787-129.39890184328783536VVGFHSG75.82953677601068171.72074550457916537XDYLAGHMJ46.6038253818526315.421747228282527538JLHYYVGVGMA52.7391751216897858.967952573607676539EKECEI-32.587999234046364-84.64489924777341540OVORUNUHR-87.56026066241242-15.863174944525554541EQOTQT-69.88409507416279-96.91376858572771542ABBEIFKKR-86.3388954233686-45.479220071149854543KTMXUXYILBMFC-36.254774969970576139.4388760763494544GNDVUCYD-72.96896712842666-129.73710576081493545NCFEEKWTLWDA86.2104386863318-43.23963034390485546VCYWN20.000429509555644-113.33570596241069547IPRNDPIPCYXEF-77.63446432860248-178.6835236123861548NMTTIYASARYYHT-85.2652483781873181.69951320025308549VISEYOXOPPXICP47.758057912488994-148.00386473104794550IQMUVHG4.03963513691053381.67348306436963551SLYLEALUIOCDXY-6.4110593894295675-78.88085672070075552NBYNRQJBPDM-31.53027968242900450.13740949947859553YCSGNNHYI26.439668728791918.476293900391454554YKEQYKHTKWEKXN-33.8147453987418935.143355651506056555XGVCXEDTSEV32.20807630081494-87.81186118190232556JRAUPF-46.99696933712881136.4823749740313557BJJNRXYM29.694309760595388-109.56436620238976558RLSVRDFBCID-20.267108560210076-19.10508991725314559VGLTNPEP-52.36578955938933431.31358987147169560CPBBDTAG-57.474950049460645-76.43927262701398561ECLRA-6.4173243320183815-0.4487574421300735562AAFPICN-39.16961057488578-153.05337800023597563XGLKTBAFBQFY39.258973648893374-61.919381956499834564GYAXYJFRACYOS-79.6625644250124685.03994622523174565XOIXTTLDMP6.19843626327247-11.59137942357384566DTHXUBSNX85.02562257312673-64.84562792463971567IGWALXV-22.095416603702944-112.48009735767315568CHRMXBNAJAROX-14.70910230170267114.429911657658494569HPRQWII16.366684959797922159.19500872154083570KWCMUAD-6.651139902350607131.46760636234484571FEAVJFYXJRK-65.66801381919834.509902101102796572KDIQGWFMHR36.79984004187389-95.26465780895745573QAJJRMWGG-51.4145912357190640.19421823822958574WMSOQXKLVTGD-0.36847814515553523159.96736975625095575CLMQKEWCRT-70.92836018098427114.92517545489653576KNPXV45.894056618494204-79.42283391123199577KWPNVPPW81.99216276855995163.70432549312267578TYBNAUWPWQSWGN67.9535884598663295.66476752154472579XOCMAAXEAJBIPN2.577081229067204-14.076578079059317580WRWLTQTAXPDY62.62358421478632-157.53954422035758581QTGJQYLBAVFHAV33.19141947209627-14.924960019991858582YYIYYMJ-63.50709202993697-124.29849660337418583QUOECTJQAAMI-34.27861494170806-56.1830767902305584BOLPJJP66.89825413781773-72.69635932018751585FQPHDFNJFANWAO-33.897850626731454-122.40078821204786586JGGPVPXCCGQCT-77.86821682433089144.48716790642402587ONBCAJASHAX69.539130340333-56.5768505329863588MKXOQAIQRQCF31.48347900753208322.66689883861136589HHNVJ-66.44888184526415-147.49924010447293590NUHUNIDXE0.6062881058043814117.72642242216318591GADTOCMALVENA68.34254481573086150.47718202860392592CTKJAU-5.98133022982412418.519210758723688593DTAKLVFVV-43.37315359733137165.28766684064738594PINMVOPP-76.796462422073814.369438831609784595UFROKFOYDBUT86.579994737618-163.18687808002846596VBISXKCXRSDDB-57.9020146160040846.010737139045546597RDHWVJLNATX-79.47605626537278109.34633149573784598QSINR2.992789107045084-21.708604047075312599NANFOFBX65.62761856421116-149.60461042749296600EOTJNML-51.477884064661644121.47142665798805601JWLHG72.45450809919473-152.6861351437204602QUYGGVDOWWPCFB26.37223988430982-172.21034858742442603PVGDNQGCYWNXPY-49.46209770245218156.2682226446126604YWDRL43.35353799040942152.49767434497392605XELTYSAC-10.96414470014980289.975872887474606GRFAME-76.46650720791777144.91057836435283607ENORV57.0628891273397-65.75062107650035608DXJEDMCWUT-69.13228005530529-75.50596887111755609IMJARXROTYRNQA29.0317691360773-149.06240123093193610NYVSKOTOFJLBNH3.50353857777489118.9007750674208611DWLXLXVQGHLLJA40.57224047977411-176.34047781950792612POPUIGVIV-2.3797632564673705128.39906972386922613LKJNNDIWGHMM-55.91902300083143-98.13879614228321614UUBRLY-88.50782660492602152.8178580470218615YGOQPFCTX-11.98536725915238342.29384507470158616VSUPDIMJFEVG-30.622232802782385-138.2891710297148617OXURISSOU82.98427631404391-90.34608448548583618TLQUMRIVWGHNG-71.90727820216273140.8878397635466619RUIPW72.32633930165335-61.11468684079381620ABORKDHEPRBKQ71.86439987272121-105.09988154458597621NEWBLWW72.17819182458828-8.569221095981078622JCFQM62.37056561926519-43.34958366593895623PEJMUUKTFQKG43.2105869580434225.103661607063714624JJAMIPUNNOO-59.14887269869301148.6724312245346625MYFQSLWDTLK31.4373613567637392.2926204686151626UBOJSD-27.524777175557148-140.62448245299095627JNVJYXE88.36656476079804-55.45692470154849628LFNIEQDLH0.405861111095987391.57586535119623629XYTFKG2.1650108432292683-107.07906365272355630IKAYWLSRBPISJY-0.290244371369823341.474009215395631KWHARNV38.03364237483643-144.21599456497387632CNVXAYFEVD-0.2203926727057279336.959082760619765633JMGMBOKKYXASX60.30268067184261158.21203889101963634VXKSSGYJR-25.59777150343298-148.3985228921661635SSPKUXOAU43.31118891130282-80.51905996756031636HCFDK64.99331727477235-118.17157837964987637ONINK-83.43997913026391-165.2899016312402638JWQYKQBAYXRSM50.3478721075836461.01241787195366639CYTCBNGTAHIQEK60.2931804430152257.375574247587764640TAKWSB23.82170066384191101.61090363971465641TQAWDTUFE-51.95257894972262-78.33194803163069642SHETWP89.5223533726012-138.14449111523354643FFIUFG87.71575634566236-80.83865816291055644REEJU-21.69509050230381314.202990037154052645MENYTBIIDBECGV-24.70079027446498-139.81075998551688646SIVFFVXIAMVF-89.648637026329382.300514365692891647HKRFPMN39.11834228312469-4.925301583931883648QCOQSLMJWIUWD39.83708186328221-114.0170279716856649ECGIDU19.7537866538066369.61106331968298650NVYQNVDVPN-65.27235826611702153.12434246543853651HYMDEYAUBMSQLH-75.65832904863356-121.5067466012894652VYRVOBHVE-37.33610516741984516.494805136788017653WQPFPWSIQE53.79322432767887-35.163389812980114654EURAOWCETJLHWJ10.805986879969069-56.002515195923095655GYVJYNJBJE47.807777929886186-19.43007577455319656FIRSEXEKFVM-89.60632954999485-90.5523947806149657DASTEJHXJMFUA-83.3006395452906223.815021165214716658QDPYSJWBVWK89.0570114375529424.991669642852145659JHELAEXDMFBDRY80.43784148081144114.2769470381449660FABPXHD10.05770549251272456.33991665760138661BOVXHOREPP-53.76747485352652-91.36952680777318662SBIBOQPKFNAX-30.969207315376913-58.391960765951595663BHPFWJACRMU75.11218687783455175.04917073692093664KYBWDE52.110514649185234-28.646431681180303665HRGQTIOPD-35.58146628204891532.20399721290295666VYWFQRBVQ-0.297659564294122148.8532207315455667BHFVWNAMDC-18.3312566989872184.305972624421912668PXKNPETWH-6.488993590215529-26.498930541851138669RETOFHPL24.682166301666422.368845462497575670INIVQQULY-54.42542997542138149.67256630107482671KGVXCS-5.48403653325945690.78660235918153672FGUGOCJ-3.960343106671274477.34685959173828673FKHNEOVAYH53.5281973129772169.32965809398343674XQALUY8.725978775896323-37.76438180122176675GGUTPKFKAYCIOU13.255666390934223-45.83111115685273676HQXWBSMMPFS-85.93605815335054-17.78538710915089677UOTRH1.8739247457672263100.81400730635374678YDSMI20.7658695445301928.9603498767668679DOYQUJNFPI-43.6294205704971883.99822203450469680YQVTNH23.1136521535926538.335517542969995681WIFEROWECDEPL71.701113801768-133.70979934963418682HGTXEJ3.6632078818366267-93.73365159979676683IQEMFJSFJARYVM-55.58839119749282-87.17727859347758684XAPKFN-80.668202091678380.6041789649356986685YVGICNKFDC24.6247228198555527.64747769202964686TVIRONUTDTQI54.7741683448212818.43758706847032687DNLNLKNYSGL-79.4025346406442175.42735507439397688MQKPOCGWM76.57082658446328-104.55587523369383689AAAWAXXQ-55.25652096619107161.2508207072854690RVUJXV-86.925415983918119.185886789047629691DLKOEBFSHS-0.1606445638919496-176.93077183624763692HDQNYFNEFFU62.21515424276114547.66012107620469693DUONQJLHIAI30.122971003291923159.9315289609986694IYHEOYISKJBA22.21211982336672-157.44118350122648695UDJLBENVQS24.346146404799214-122.74774105651062696VNHOIETTVYCH-77.62862402773828110.84534139523322697HAIFCXVUWMYYE17.08748015611631473.17714119915718698NHSBPI10.80056326734693-142.0865300363108699WNQJKWOPPX-71.2831189649364133.45272125386305700NJMCDDHYR-73.28230451081156-41.433781085651304701QNGVSBTWDICC-64.65787807580803-88.17252990486683702JOBLCNXOME-4.7052632134547-73.5747158455836703TNTEMVFF-80.2014072356373917.563675607550522704NGORKU28.32796540226840423.449642228927587705PBPFUTEAWFDCUY-12.603676417719441-133.75361187028068706WUGXMDWTYJR-7.070170015899137-131.75769703858322707EILLOBFTOC12.667469762787334-64.51958032047541708BPAMODVB75.55742862568039168.64638270796434709ELMRIKWUX80.30682071174911-81.95048377128705710XMWXHM-80.3147865467899517.582651453405134711BRTCOJMICVC-53.08066928465371653.95383085291948712SHGCFMOINKTTGA-63.53060187264128155.83363094287137713GGQJWBKESRWL-32.40002263284423-59.20726620332313714AIXPGIFGYTDWO-12.97746700618167-7.078886074098705715RXHOPIXYXC-16.54543207958683-33.1779582386535716XRTAAOC86.3395904782662798.26102500057237717XFOGHUWHDULO-44.259016117765924-95.57385743612708718EVWXGEHG75.70940803739086114.2055110786946719HPCRBQIRVHATT-64.74182750930349-151.50317372781953720GDUOIDX-82.1214249672984826.486072961625922721RDBLAVEQGSOWV-74.58470621714108149.54649171721888722DMITAJPIR18.19309451822251-77.20048584570486723BQKYPUQFVNHIE-81.05765024241872-116.25977915058996724LXUYR-57.7166297315241-125.29967287933569725HFPPNIWRQNJL27.26664305572288-112.3885032036573726HHMHKNQGRX-11.785546095361923173.70659599268276727XFHWBUFKGQGKHJ42.166386097560064-177.6409344201605728RKUELTNCRJ-37.98881813679997-130.51931502007903729VSNUKUEGFD-53.196751477230556-111.08724556484184730WMQNFRIM5.28215678365629197.18913389945999731DPOPBDPGNAB32.171506773816599.69067339332952732VOJASSROOHT-31.0449784012963288.42334074900742733EYVOKPV7.355986582852623-76.56462940989395734XWMQLRVSEF87.119041519755458.766827762763114735VFNWTIXYHTMH58.91624061654218-7.10079210957943736XXDAXDPCOKR-46.06753515854196-8.095582932457972737STKUXD73.64842058322691-28.031588972858657738JBIYTSX14.627433980851592-35.69300787812929739WRCFKT70.2399631791277820.844267364940038740DVFEB-52.34612351918182144.5858696146136741QRMEB-30.01708687044904105.48727142821497742KOJGRJD-1.2816345170906231-93.4517308053782743CLXSTMSOOY-67.18770597165658-98.60529932294504744TBVSLFDGYMQTN75.0712806593547-62.53292693961984745FSNPYTUFVWWBC43.1715253542076171.08774205215167746KDRKDSFINUTX86.9996282899447267.26060118350532747GYGDKRUYOLH51.78373302364341-50.22107453457363748KKENL-8.286760092602819-112.7336482905835749IMETFCJ51.246423895800945140.9543674235116750XNKPECYSJHKXG-41.63268731086178-14.208690244839687751RUYLXJ-53.959504769593785-178.86410840939135752RSDUP56.626165323321544-156.98732821352775753GYFJPAYUWNFWAK-51.57311862496904152.89879809481334754IPMENMHKRTYBNP-25.72652909192007-13.936703552716722755TEYQI-74.4849144001720716.121407257066778756LRWPE85.58186455192171-173.4541021394134757MIBSKT73.3907336941437-112.32312233667407758ASCJWF-75.90082692984176-145.07493279423045759NVECPQE78.57526402777668-111.51231300465209760LSLMEUSYTBSU-9.72959029907536976.7976362929316761KUGNR55.507912490188346151.58068265790467762ADTVESEJNFSOYG-80.92327857757651-174.89881817971317763NELJRWOOQDXA8.455059780305334164.41302468437652764KVFKRDKJJF-41.699780158825-72.43042183887076765XHNHFRMGDLLU-75.9682615044366825.457910925953342766QMKMO-46.03928110693426177.0956276685912767FCPKXPHKVOQ-53.25976895562172140.60125393543677768JOVUHTAWDIDPH-6.181210962980174169.41361842906673769KCYEL-51.752393435191635-58.8813397392951770QHKGRFXNKXV31.1862451269878784.69605679243006771CFMARMVUMNS37.200993743707926-82.0562733790756772NFQELKSOEUGMU58.9948251120613951.131416371944454773VPWSJW-59.86957821227705107.23479085402869774YOKCDJJBBSDEXK64.9198947810357177.84185533275337775LKKRD-20.5544599986823676.34021746867649776FQIWYPIS-49.72398499467881116.31615106709603777HGYXEKUVU42.394191058564985-157.34233098592264778PGXCXWJBJH16.512337150254552-160.20194528120763779WQPQEONXBT18.6482376851004797.67038457538877780RWSXHIR8.458777330826521162.51882629585054781APWJCIHILIMG-40.866339893905554-7.2927031532391595782DRXGLYCUSYHTFE48.26531006768519-123.26756506078584783BTBLUB-2.9384133429883263-16.05641230460796784JDVVCPLBODC-3.3040767816985976-60.10173695315511785NXHYXYCOTMXU25.08733249604977-167.2737575142822786CHMXGJ19.634967890276513101.59099120065605787PHUJDIS-27.25587889975649-171.8245662467414788OOIRT26.779672083292752-31.227066755372817789NASHGTTQPGU71.72137299835174159.0005465837034790NXHCRGQPAEXNCB-82.77713464558161-140.6686658331903791QVNGX-10.796365393469259-160.05757717303584792MDKHPPUERERODO87.2757298354393165.25611028059714793RALQOXQ-31.621621404307014-34.379607645143096794TKXKLTPGSCQJL-4.399226010075779-10.015860414776768795LWAPLHMFCDVE-5.754011514910758-0.5394155702138619796SPPURYLMU-7.06095380403265-120.318971273611797DJANOTQWH74.8122656358945659.802517650204265798CVSYBVNHISJ-78.98218904424498170.8463217215006799UDYJEN-39.7030320930682789.03321228766856800KFDLE13.16863620271485-159.33144100995628801CEYWXRBIIJRI-80.22055004059811112.65238164138896802GDBVLQJEQXPQYK-57.55121615325986-49.0776060509543803VRGPGHR16.3099491099335797.35783945415909804CLEEBEHCENEODC71.29713904921988-0.8189876960427966805PYOPCHXV-16.544173627254366-131.95387217583817806DALCAQLFTXW-76.08600663351054-56.89739682070022807LLEMVJFX35.22379777442258-29.438345106863807808PDRIKOX-54.6870931214738424.280429183717047809LEPAJEPQPOAVV42.185546255223926133.6684865317897810DYHCAOV-39.61174140953673423.350016261048637811NDPTYSS-34.73425052405849-112.98393411957946812AISMLLJVMEBO-70.6986167132108779.84749500735023813JHHGMEB87.3778042941049896.99087458142122814PGVYQQFOYCMDYT-74.54240995208535-11.92659120426282815CINMLRH31.21248672382346128.48945782265037816LPDOSWFPEAOY-67.1314282845183948.50632496979881817BKIYUEJXPV60.60938990790959-106.37037369589939818AJYSRPKWTJGWA-75.73324180560998137.67467984094662819UXRXGHYCXMJ51.615903792608805-13.351217618371265820FFAVHQAVJCFW51.5066963281229-161.8052320542873821BJKNXIARYP45.2985652986839191.49908239368028822VADEGJA-11.236860028869444-121.84418831627923823CYKHGHKBJ60.65711634164845-107.33977966392179824EQTWPM-57.15753739212273-58.17433170355447825RJTBNQWQOC-45.442073361725078.61838441837213826HGGAKDRY-20.470967360815735-126.71833786220512827SHVDTIMAMU-1.2357483916086949106.23807255885731828MXUKBAS-16.82740186611835-169.52007452362867829PRVJT69.682502837071784.93979002798045830UGSXGVKIKWE-27.45256763261156-149.78821313265405831PCESGSYDC77.60021374312055-38.43551385680115832LKALIDYS-22.563844301683204-144.61270664904006833MGPQEIIUOQN-88.90585298147131-144.67705814770042834YDMSYREOOLLU46.170187160974876-5.669963144661551835MFWLELVBNKGTJ82.77084647595382-101.8375340900697836RVEQBD-51.992857690523984-80.56272669434018837JBFCUQKGBQSML-36.01372480276772122.89156548693416838SCQBQAOJ86.0110951152288129.251945144080196839YWEJNVA20.30265794035691-136.59366762563613840BDUMWGOJOBDYGB-38.125371587057574.494764488036424841NRFYFWAJTQTIF-4.395687626186799147.66001112808982842JFLPTD28.28043374183069-3.703884894178799843JLIPPPUXIQBJGD-22.245976255564855-5.879118059964668844NUGGGJMRH-24.992011956961946-25.246959122448857845JIOOCTPPSGLSWW-41.4111805365269135.4041329487735846ORRABE60.69479430043336-177.56023422672413847ANWBO29.979516144347073-53.180970289298585848RYINAUPWHIKWMO-43.87604037696286-10.708593705050134849TVVDMT65.9710925588780734.64273309636829850COMWVGD5.663294234822089-96.35527124687967851LFFBE73.56046014900565152.46349507277256852PPOXY-24.290060114592507-21.666203565454794853AGWJPQYSV-49.47346499638215123.96823158674232854GRRIG-14.20096755659717857.59568487841844855FGCGWCMJIPNR-85.8174091621551375.02474423437738856OIFNMQAHARBCXE-26.42523412775665335.45105944379145857TUUNN-75.334394921892678.5027718755203858GLAVYLPQSFG-4.432182071473122-125.10260551238886859QFCOBIXSMSGRH-40.50882005199630.369744434907545860KWKMUYPMN-2.6646416730617375-9.973567586670839861GXRJXMOEMDSTEW-45.526433998200105-34.271094880717726862XTHDNIRV26.29073390722048537.796280297730505863PYGTXTIQSNQ1.0328277797490557105.30344701631901864GJSCHAUJQ-56.67179407017662-63.53040759758633865TMYYDVROLU-75.3940438291443-152.79100653935905866HLACNBQUTXFKSS-38.38763710710086-142.660973718887867HGRJGYXCAUSX-48.8014384689107812.206095448610881868RTXDOAETDVEMFU51.7922768460502755.57218685254591869PVQFDKUTDWGTXX-3.910941135987784-57.573584746625116870IAFSJJQ-37.87336329052316-33.85723888688693871LDNRRWM-38.5326396406405775.8734551323694872BNDEPHXKNN-39.4505158503293855.12738931863598873HGGKFSXCT24.75641400073411-90.04016895185254874HCHHBEEIQ-65.18464203924776-44.53861225643041875CJQRCYMLBGFCM57.170094316602274164.6507884258973876JOHRLHWKIFXULV-26.869939058792312169.65168552852919877ALJFPOY32.31500309496012-168.28267078956455878DDTCM-71.32249087864197-128.3898986285425879MBALWQJVKERUGV-30.354883941529565-147.530046603707880UUWFDKJX-31.696890090250974-154.43424276898554881FHVKKQDF39.337962052361576-82.95438826534308882INXTIN1.0717215540715586-30.805841174990803883MMLGYE76.5747771568748346.28036024306661884GNPUKJMEI72.05506774388832123.49278662478685885HQLHJWIJRJMJNW-32.7658499916537889.56301796478283886IQIIPED61.807272369946986-41.196332862150314887EMOOBHWFYP-15.856069071487795-155.462036062521888XTVBTXYVHNHK32.37179623680565177.5199048673008889SGKOJGEQMV0.4643668407612438-146.82669299258822890SBGGMXUYJEIVP-37.839480337346544-35.414659144574756891HQYEWX71.9170212401282611.925816698618291892JBNUAMQDV-67.06061027763772-116.02047365805501893HCJJCEDBU-65.96548859669113-21.900355685603955894UQNISPR-62.4215727372941170.0336452518454895ARNUAHY-61.26062859338655139.06055719374717896KDIVVFRDHWMKT28.72034714004289-109.62329101762997897IDAVMRUVTEV72.5982288877095258.80923594708156898RGLLMDLTQJSYE-20.69212197385572-160.35199695792028899VSRPIJUURGLTED49.1855274372085823.29252145111525900NRSAHS-24.02728599388069637.06216998279996901KDBGJL-9.61864768625834226.07197655858721902JPSPIR37.82150682863292-59.28632443077416903DYAEOLJD22.275145451337437123.62448660375264904UNWYLAEWX-57.273298627433746-64.23112901504929905WJCUXEWV55.40318707734977-136.90491374636787906GCPWMAMIQBQKTV-72.33212082382185-147.91090307594828907LTGQNDE-27.162462743075146-46.044331627759846908CMPOWLQDY-69.36070148800742-53.59170566584896909WUHDUXOWIQJOKR83.93183319623051-150.57189206237257910NVYFQW-68.33487047491562-139.71871577066239911KTSOYWFIDLDCHF-5.91844155625302999.66654826995608912CPEUOKNGKBOJ-85.88897606483907-132.98319414848874913CHAOINFBXFL80.8336851795543826.21624848472345914DVUNKIUGF-11.779662047514961124.17416478963463915JTHSH47.83843609493195-67.69283745119981916TMYOTYEKSL40.55062918858394151.25406761442594917VPOCGTEK6.791788457801147-92.60769771161978918KHBPHMK1.7513056682628166.789593504677157919BWPSFLJC25.058802017491246-163.4520822197499920QPXDDGYB5.722546418886395-8.193328034426173921ECXAMDHS69.7156694458391163.57680116634486922UDBDU6.642637435980831-85.1176813980618923VURYXMDOSXJFK-53.84670375210463-156.84880253288662924ARBMUY-20.85219720299414893.71638299210878925QFNMRHXY-54.087821147684906-27.89483115869743926ISAMIWERLCN85.4188817875025857.19720859203355927CLTMQVGEPTE66.04824672785236145.89828694005155928RBQHR-88.23369269581262-43.83374561931737929LKAUJ-14.102486954429125-64.72822436826351930HUGSJEQDUKFMC66.1173656856098-118.66458720082798931GSKRRDNBFY40.04918445202074-117.47432131828691932CGOOOWXVWDDPEQ43.79426726912859619.141768173744794933QAKWRGNIA33.12035346527472164.74971769537814934WIVQTSR-75.4010006305676837.994959161105015935MCPDEVNSJOBXE25.261645264596936157.11972461344868936PJJAAYXGR-21.622762948007036169.39498458371236937FAHGJCRQVFRB-81.2658176298211-61.47363618597187938QPCRGYP25.52554785761808-178.99565811388237939FSSLAD14.804666495339006112.75206550295553940LARUPCTRKT-62.88556443265993-51.169303662207994941FNRBTIBJLKL-21.892532065633503-165.41042349181723942VUJCGIYGTBSEQ-84.4023257582944569.32679608387372943AXXUWP53.15681946163474-20.16316459327689944IUCBDET11.86783417226385599.32604066434146945OOMCKUWWLK79.31381348119822-159.72000643185294946PBJIA-56.414615936670785-2.7981837360323425947VSUPTUVS-79.3637017759801969.43071471402718948MMLIUBKGE-20.403382215235908124.06734516990525949SQDYWKAKQ75.4525678939075474.96932692224306950JNVUVNAIBMJA-58.41161789519008-73.88154413508131951UAHSGPQEDHHYGN-36.24125022002515103.77571637212702952NFMRO-26.564699327217518179.34617470849395953NDLPQFJ72.19945130726936-6.717655453131613954XTUBQDKWEMJKR66.62228339169712166.90996893440916955JDHCAMCXQ-19.20560071067116368.46862247245565956CNGLIIHFMMS-11.75164333752583492.25635853069838957CWTQYK-12.396310694287251-47.782984647311764958WGHXIHVUHQM80.54450565154707-8.805909495346611959CDBPHUHP68.07754843440031-157.66666860657736960OIQSPSAVWRXMPB-37.4817401343244394.87387289334248961CVILMFRRHPHF-36.6392714891319-62.72664273330152962PVQSK-13.5542714128354483.830299496772284963BWUQPDWTUPJ87.3523851401440718.80523959117312964WROUQPUCIYSAHN-17.951378117129238-174.3760761471158965SGEYNKIEMTJUDR47.55104146948756-41.88801215937849966IQHYHMXAUH-33.86957087870383-63.696644969468494967TNYNNPQPUQSO65.41626659875786135.0485056975462968MDSTDMORES2.986330912506972118.70873585729481969JNEBNR48.202880852625725173.69657240465716970NKVOVR21.170996056199883103.03900424019486971AIAIVDSEOOOUUX31.917112724111107-51.7266029580139972YOYRSPWRIRUW-7.34188269739482349.06891867279302973RSUJSVSSF15.141043183985346-86.43499477381238974MFENBXPHLNDAHQ28.477061379080823-108.9214076895134975YLEIWN-86.50209636984415122.28103844998009976WLIBICW-11.5393566667926-64.46003220035065977IDDFUNVRUWLNKS50.20425355483542-2.8442990099272265978XWXJTUDUJVJ40.19393619925208-143.3721282104646979FLEJQSNUHBW-83.44811741093959-44.52744350048516980IXRMPNHLP-51.81946213006878-135.29756576888173981TTJBSDJNNRPGX-50.892156861740865-112.06126806059517982CXRBYNKSHXKLGQ37.58899311113697-9.605552691075331983PMGKVUKEMXN-82.61222310999538-138.71286790593214984VQYYUDYUBST41.54372754393626137.15484626004235985XOAOMVGE21.85911677967982345.12208858916523986CLJSPKXC-3.5884724140011457-143.6701942354141987LEDLILVSM20.43184684182895739.134486177838454988LLBIKXKTSLOR-7.574892166679575-134.40543311179044989XGFBSXFP-32.32356155419599159.4695741574542990LKUUB-39.6583091641227-63.3398781453876991VNVRNDLJNM68.99832611176544-172.60456746275878992ORXOORCOVUTR34.52371191896516-24.439793632356213993BMULXT62.45666725802067-157.5205812631593994XTEDWSNLWTUFB60.01704752917945-60.0095394937032995LPVWOPHAGEMBR-30.031743939804336-22.80326581279212996ELHPMRXYGFGMTK-33.07384843958539-103.19947465985791997PHPNRXIQ1.9330112710761398170.27811676655494998EBKGQUAXLCJK30.616949615138296-172.18400648087936999XGEOESXW11.276237063572722-106.1693833907418 \ No newline at end of file diff --git a/src/main/java/cluster_manager/ClusterManager.java b/src/main/java/cluster_manager/ClusterManager.java index 708ef83..f05e200 100644 --- a/src/main/java/cluster_manager/ClusterManager.java +++ b/src/main/java/cluster_manager/ClusterManager.java @@ -1,20 +1,39 @@ package cluster_manager; +import cluster_manager.xml_logic.LocationGenerator; +import cluster_manager.xml_logic.LocationParser; + import java.io.File; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public class ClusterManager { private List locations; + private File locationsxml; + + ClusterManager(File xml) { + locationsxml = xml; + try { + locations = LocationParser.parse(locationsxml); + } catch (Exception ex) { + ex.printStackTrace(); + } + } - ClusterManager(File locationsxml) { + ClusterManager(int count) { try { + locationsxml = LocationGenerator.generate(1000); locations = LocationParser.parse(locationsxml); } catch (Exception ex) { ex.printStackTrace(); } } + public List getLocations() { + return Collections.unmodifiableList(locations); + } + public List getInBounds(double minLat, double minLng, double maxLat, double maxLng) { List clusters = new ArrayList<>(); //...TO DO diff --git a/src/main/java/cluster_manager/Location.java b/src/main/java/cluster_manager/Location.java index 6eb16a8..cb57934 100644 --- a/src/main/java/cluster_manager/Location.java +++ b/src/main/java/cluster_manager/Location.java @@ -4,7 +4,7 @@ public class Location extends LatLng { private final int id; private final String name; - Location(int id, String name, double latitude, double longitude) { + public Location(int id, String name, double latitude, double longitude) { super(latitude, longitude); this.id = id; this.name = name; diff --git a/src/main/java/cluster_manager/xml_logic/LocationGenerator.java b/src/main/java/cluster_manager/xml_logic/LocationGenerator.java new file mode 100644 index 0000000..630f7e7 --- /dev/null +++ b/src/main/java/cluster_manager/xml_logic/LocationGenerator.java @@ -0,0 +1,59 @@ +package cluster_manager.xml_logic; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import java.io.File; + +public class LocationGenerator { + + public static File generate(int count) throws Exception { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + Document locations = builder.newDocument(); + + Element rootElement = locations.createElement("root"); + locations.appendChild(rootElement); + + for (int i = 0; i < count; i++) { + Element row = locations.createElement("row"); + rootElement.appendChild(row); + + Element uniqueId = locations.createElement("UniqueID"); + uniqueId.appendChild(locations.createTextNode(String.format("%d", i))); + row.appendChild(uniqueId); + + Element name = locations.createElement("Name"); + name.appendChild(locations.createTextNode(Randomizer.getRandomName())); + row.appendChild(name); + + Element latitude = locations.createElement("Latitude"); + latitude.appendChild(locations.createTextNode(Randomizer.getRandomLatitude())); + row.appendChild(latitude); + + Element longitude = locations.createElement("Longitude"); + longitude.appendChild(locations.createTextNode(Randomizer.getRandomLongitude())); + row.appendChild(longitude); + + } + + File randomizedLocations = new File("C:\\Users\\vitalii_bondariev\\IdeaProjects\\LearningJava\\randomized_locations.xml"); + + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + DOMSource source = new DOMSource(locations); + StreamResult result = new StreamResult(randomizedLocations); + + transformer.transform(source, result); + + return randomizedLocations; + } + + +} diff --git a/src/main/java/cluster_manager/LocationParser.java b/src/main/java/cluster_manager/xml_logic/LocationParser.java similarity index 89% rename from src/main/java/cluster_manager/LocationParser.java rename to src/main/java/cluster_manager/xml_logic/LocationParser.java index 4a5da6b..1362539 100644 --- a/src/main/java/cluster_manager/LocationParser.java +++ b/src/main/java/cluster_manager/xml_logic/LocationParser.java @@ -1,7 +1,7 @@ -package cluster_manager; +package cluster_manager.xml_logic; +import cluster_manager.Location; import org.w3c.dom.Document; -import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @@ -11,14 +11,14 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; -class LocationParser { +public class LocationParser { - static List parse(File locations) throws Exception { + public static List parse(File locationsXML) throws Exception { List items = new ArrayList<>(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); - Document document = builder.parse(locations); + Document document = builder.parse(locationsXML); NodeList locationList = document.getElementsByTagName("row"); diff --git a/src/main/java/cluster_manager/xml_logic/Randomizer.java b/src/main/java/cluster_manager/xml_logic/Randomizer.java new file mode 100644 index 0000000..5d47ed4 --- /dev/null +++ b/src/main/java/cluster_manager/xml_logic/Randomizer.java @@ -0,0 +1,34 @@ +package cluster_manager.xml_logic; + +import java.util.Random; +import java.util.concurrent.ThreadLocalRandom; + +class Randomizer { + + static String getRandomName(int minLength, int maxLength) { + Random random = new Random(); + int length = random.nextInt(maxLength - minLength) + minLength; + StringBuilder result = new StringBuilder(); + for (int i = 0; i < length; i++) { + //[65 - 90] - latin alphabet in unicode(uppercase) + int code = random.nextInt(90 - 65) + 65; + char current = (char) code; + result.append(current); + } + return result.toString(); + } + + static String getRandomName() { + return getRandomName(5, 15); + } + + static String getRandomLatitude() { + double random = ThreadLocalRandom.current().nextDouble(-90, 90); + return String.format("%s", random); + } + + static String getRandomLongitude() { + double random = ThreadLocalRandom.current().nextDouble(-180, 180); + return String.format("%s", random); + } +} diff --git a/src/test/java/cluster_manager/ClusterManagerTest.java b/src/test/java/cluster_manager/ClusterManagerTest.java index b635d6d..3df7b6b 100644 --- a/src/test/java/cluster_manager/ClusterManagerTest.java +++ b/src/test/java/cluster_manager/ClusterManagerTest.java @@ -1,7 +1,6 @@ package cluster_manager; import org.junit.Assert; -import org.junit.Before; import org.junit.Test; import java.io.File; @@ -9,22 +8,16 @@ import java.util.List; public class ClusterManagerTest { - private List expected; - private List current; - - @Before - public void set_up() { - expected = new ArrayList<>(); - } + private ClusterManager manager; @Test public void parsing_locations_from_xml() { File location = new File("C:\\Users\\vitalii_bondariev\\IdeaProjects\\LearningJava\\locations.xml"); - try { - current = LocationParser.parse(location); - } catch (Exception ex) { - ex.printStackTrace(); - } + manager = new ClusterManager(location); + List current = manager.getLocations(); + + List expected = new ArrayList<>(); + expected.add(new Location(12, "CHURCH VIEW BP", 51.14, 0.2617)); expected.add(new Location(14, "CLARENDON BP", 51.6581, 0.2511)); @@ -32,4 +25,14 @@ public void parsing_locations_from_xml() { Assert.assertEquals(expected.get(i).toString(), current.get(i).toString()); } } + + @Test + public void generating_locations_to_xml() { + int count = 1000; + manager = new ClusterManager(count); + List current = manager.getLocations(); + + Assert.assertFalse(current.isEmpty()); + Assert.assertEquals(count, current.size()); + } } From efe8410747c3d6cf6429c8b6a494c7d8bd18aa48 Mon Sep 17 00:00:00 2001 From: "KYIV\\Vitalii_Bondariev" Date: Fri, 8 Jun 2018 15:25:24 +0300 Subject: [PATCH 13/15] Fixed lat & lng format in randomizer. --- randomized_locations.xml | 2 +- src/main/java/cluster_manager/xml_logic/Randomizer.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/randomized_locations.xml b/randomized_locations.xml index 982048b..cb134c4 100644 --- a/randomized_locations.xml +++ b/randomized_locations.xml @@ -1 +1 @@ -0STCUQSWHINT40.5891958206640917.8332948612905971CTUBRSRGYJ9.821887471920462-90.368129099868612EKGOODGTL-43.33467759219839-110.486981134301443LMDNUAGBGFG-11.807049611265583102.570081905461964FOKHR-61.18080771628428-93.322321170628565RCSYDRWR-65.48901036619844153.259624392245376SAYBORCSAOSS80.38235794119555-171.242687468964167MMAIIODOQP71.19985189929301-176.979344541292968DQVTFDDRARPSXY-43.0882112778904113.434149967675219FQQSTIAT19.96311935406871-14.11016587410966810RWYBORJI73.09033532956994-30.92219128598071611RDJXXDUTAWKRQ-69.04767729922706118.0852992267824712TQPLUYTGE-20.597679564803450.10382096998057513IFFXNYDBTU-3.4897249374328823130.4354743630239614MIWMLGOOEKER-6.15991773430099129.2062162028000215PKOOL-48.5145611533563658.873847776345616NRBKXOEALJEECX4.57175056409232652.3901874250833817ALTLJVOMIJGPTJ67.2020364215576123.22697258495105618GEAPEURMKIHOF-36.2704680624579443.20442640485265419LQRIHAC-7.657858628686199-8.65238126584773720GDXQQ-21.23317755454059150.6344706230521RQHBOICSSQMEYP45.849073535814114138.0986743895476822FPDHMVKQWOWCM12.669298147216395-24.89796259275735223XWMUODM-7.796316684351296532.0398946265453324LSDSONHUFIXUS60.312813625432625-133.1537755346340625XQTRWKNKKD-8.165477820697689171.4045766843623326FXBUWVPVWJMAJ-78.90163054742065-20.13678358345683327XXQGYORLL53.21610924331708-155.745696395710328VXLQJBNTJBFK-32.0354275550331586.3931349873473729AXHYQDSJELEEJY-5.72820647936436-124.8825276300035130UBSWEIL44.7253254708493-103.9026245946183331SLIPUMVETXNCP-77.72257924886125-6.907310429131598532HQYTD86.3027627734729591.4521634334556733HDGIKWYS50.90118405031808-137.8476031438245934BUSXIDPGUPEQW-52.06647315297505-17.26640250743693635EIKSMNRXINKVK-68.2930013793389-33.28182336901960536UGECSYDVMM-28.916173730141516-117.0819053825341937YXQNTMRFV89.25693951327185-31.10915102715770838GQWXKMJDX24.538946331885853-49.12951751577054439PHAJYTFUJIMWGC52.98632053936467-6.66992960960499240HLWDTMVVKFTPM63.85231691085991-67.7482204340788241IBTVSKRRK-87.44697530670756-166.1719028690229442XSAGFHAWRYI26.836748963996612132.9736820643307243OMBXQNNAADI72.6038511992596292.3967103684925644BHOQTTLYSEAY-24.0241358834848682.0945816951043545VLFBN-35.813557364340745-161.8546347148973246NGNFEGWVSFFUOR-26.281804969880262-177.9447854515748347DCOAIEPKCSCYFS-30.61292054645616656.7165932397368848AQJCUHGUIS11.579409776175169-125.8273896279027249MTACMCOOWQXSDW18.750116351589271.5099404606452550AJJQCFABL-75.06883902415738-160.5012528725516551LPBWQ87.79344886762038-9.11809612562376552SVKLX-60.63023939121473-88.0796780934928953CMFDJSL-8.368175739696355-85.6491145897825754RECKBPRXL82.0294911177279394.884117411786855MHJLWUGNQWMI-26.0548074463794258.2457162360646556UGRVAFUMEC-69.3054922087029918.611790139779657NVTIBQYAG-40.49622638043613-81.4430989938148458XIAXLK21.038662051469387-16.96936696385918759XPGKRQFJV-18.86511638290098-161.7758600518936660NWYJAN-84.71598468523425106.8602821452263961OKAMMTGAHKRNPY83.4829657016963415.30737780209588562WKUFFQAJUHHHC2.475498543774250558.7943339494844763FFJDVAF-18.59162705722279433.65905347714803564GGHOS-48.82475883560104573.8783914039235365IAYHJ35.24672430164043148.0592757069409266KCHHHVIWNWERKI24.31178007225969465.870467554666767OMJQFC24.489099517066933-155.9615419095915568VWJRYQVKOW45.492303280207494104.8599143018901169WSLMPUHWIW27.775642646079376-128.9838256994064570JJXXNU52.61299994537685679.5123778026187471WTPDHOJKTVXLWV-72.5685088524961712.69767871913239872CXFUVIHUYLGTH76.2476457848101263.5019880026854473GWPEKAUFBDKHAA16.055861797052202-29.56929357749274374XQPAMDIVGME-74.20789900472228117.6509522554395675GINORJW37.380486411879716-64.5818653030118776BMKEQRYYTRGHVX55.00645287892124109.5060251204417377KGGCNKPW43.297867645303825103.1436166000884278WXGJCRVQQPRPN79.47734765344896151.8017679630960479BHAVVPKD-61.31418985821307-126.8689650557817380INOEGYWCD-12.589328715783068-67.164962016629881SPOTVIMVLTW82.41846439581539-45.1040768525797182QTNYQAWUGSNTQ-42.27583017645038-98.67470103939283DLAOTVQSL-20.994712944669104-83.4580002884457784CFKGJBBOFOX68.17549682117902-107.6141362657035285KYINDSLUAJNY-84.8191002277488363.6802112541933886FTGCTMBLSL37.86760895178409127.0080300422151387LQMXLNHC-6.3784021550480645169.1354282836063688XWQVRVWPABA-60.767721485531375-45.44349905750513689AKAJGRYI86.86069627715611-144.854340221830990EQDRDSMW88.3257799535325324.17254404717442691CKPBJPQI-11.30506334890202482.1280906147647492XNWFLQBNU45.97325948597211-131.6098877186069893EMWDII-52.8607294178786377.8496845974304494LEPYOSILTIKUC-30.813927338662367167.0350246341382795OUDGRJDBCNKXH17.1686210199727942.5752308960909496TOEMONWWXMLI-15.965379266297504107.8306672515321997FHNSICYLRQSXQF-5.33920345540065-44.75343088713833698GLETUUHNNB10.22902230706415.88269909598426599SUVUPABLR-25.936714444757627137.51605649205175100OMCDA-63.293309605476054176.99954323754207101JNVBHWXMJP-32.94256854671277-80.6157296881855102ADVEDXBFDTEX-42.29036810306136108.1812147651766103MQROFCWDTLWFGA44.28626417264303167.51209654067708104LWUGPFSAJ-57.360229828941822.88675148149727105CONEV86.32520417993743-152.85189143338815106GRPQJOST72.13349664996377-110.02661651232604107WAIEAATAQRN-78.7419220695941287.63402805939808108BKHEJSRSGIUG-1.4790555007564024-34.01563919079851109QVAIFST-36.66297146640575-118.65675308074961110TCLRXCX-58.981414998824235-30.462026701408803111OHKXRRETXXHN-85.17138645463812-158.56166804857898112MFRDH-51.0878323103482364.72532786563613113SPYRGUNVPJ-67.5120162923212943.704435920246056114DYWAHMH-43.34863946992448-125.30136645819272115COMDFTHP-3.6202736880423174-113.46040412211723116HWQRBMJEMJIW30.40125907857938618.496952775975956117YQLFLYMQLSWX81.2697638059960999.69236882766575118KNMSNRIOP3.3572188951415-84.53566495554712119PYLSPBO-64.68739374294152-174.58847477095878120RHWEX59.93632907894539-31.834108567649736121SNVDJHJLR-42.48743907170987125.95560011150485122PIEXTKPJ-76.90442295538999138.66057911041145123TYEPP21.55410099813585-117.43805064522283124UTFIGBOVV49.23280419788108-172.53166668355772125JTLFAESSHOHDDJ67.95974483501416-2.9240695445054143126WGENGXMDNXO-75.02543451869572152.8013886420136127HHDIGSR54.832915929688161.467917006871128SLIDOCWWWELO-49.2420396052714924.859424435213157129MFWSYWKXPEL18.925322502786656-51.4113678495558130MRHMERNSL-84.67096011055015-11.00925839450565131CPPIKQKFWQC-25.51123810688477592.46664851811755132UDPVL-0.7582699416095124-72.62002959660542133AHUKMYWY-80.138621867543524.12996629503192134MUBMY12.49736358431816514.475092455163349135GXPJMFUFPNOXT-89.2367659380353-70.01211409702702136QAILDBFHGT-9.338737750031385-136.78000679878593137FYAJWGCMP38.71137459124929652.81952385907627138OGUNIYLQC-6.88540404295577-91.34589599292508139AQSCAIR11.969623058294758-151.47873711805855140YLJHM-28.582134991898016-63.423197395993824141JUGMDU43.95713620998026-28.213581429519422142DRSIUMGNVVF87.5687369856139223.555270755997014143TSGAVSXAXDC71.82541743652953149.68440211706576144XOOEICNXPOBBR31.705126715742992157.88027937003375145AVELRS-4.864483340862989-18.19996945295776146KVSCEXUYLYMBOY59.4387240475095483.24611459053546147QHEKTLWCJ-70.50821500016687-168.10631031110162148FFHEA-74.48036740879408-8.87576584099753149SSIXUAQVS-23.637112787774413-79.44163840451019150JXSENWWYBQIJ57.37974265908278-145.18679458176888151JIOSD48.33869144425947-82.75333258219143152KTJPGAEXL-19.476475791140317149.30685764853087153RSTJM13.744936719131857156.34357522607712154IJAHF54.137339862433834-132.4186712936903155WQDSDNGDYW-45.777872529318592.0488364220478843156OYFYDDORN-47.2925469866777149.6777296780482157RQKGCBVOQVKBXE-43.57655822167515-91.73789826002107158GFTAJWNE-27.02537238073203754.44096799863823159NVEJVUOJCGIF54.61817541971638-127.89673300653396160REHYYV-10.007672948869597125.72302325650321161UBNUJ-4.963950161630237-70.37413407003368162AOUDAXGVILVQ-50.961388464254278.777034376305352163EPDDOCYVTE-56.894150065278026-9.992214038181942164WWEIYQPQVFXU69.4198108126993296.61595082378795165HIPMUKKUPG-61.40418894102687456.77178977307918166PGWQMVVJ16.322335570359428-65.98303065241102167MFQGDJV61.15937869357052-92.66272150926011168RTWGUXJYIJU24.755614311505056110.88091137885539169QOGPTR-41.055047258667695.396095904880923170IFURBU-24.848539691634919.270954557418207171XJXMWGUYWQWSH-30.82742450457966-164.52300577893868172UUCQTGOWOOYCN-9.573601866396444-121.55500960403317173WEQTAP-87.17110442323386-148.48717785229024174MCEIONTMRYO-71.95567428878101-58.61210127261782175YVJBS-24.220038549948057-120.01804623443462176MIIDWLA-73.43397435491543-168.5983382917647177EJTOTHP43.86981993302871-158.43798252200682178RUBHJIXPJUM-14.856717067323444-94.7328952447767179PUYUG-55.7212692166358-101.60145468837742180UQTYTVTLMNFG-0.392725257467176951.28787009733543181QUBNAPX-8.70357934453652126.07983322040127182GCWDWSABHO7.621220485819322-94.16481557072933183MTUGKLD16.88853445071383469.76227646144329184ADSNSUBQBBWR-7.37037401921414151.20494985427416185SVHFU-50.575673030009995-118.42413616826391186PWAYGWMAJVH-23.89560755060893-160.12970470775187187XTRMQDSR56.178845896690746107.78983804729978188TIMDLTLVHP31.26383484974337588.17695448314959189EHQFRVKIPSX41.553940746148925-49.17680401688696190GJPDJWESMS54.827201123925335-170.11257595422057191KMFXVLLDVF88.20684439950672.58586617801234192VVVKPIYPD-5.069104125265028-138.1258304919388193PJTUXDTAT-63.71631131075826-40.38255475964286194DVDSDYH-3.4682559466412926-45.794466514521446195BWQCHEIGK-24.54133722133303864.76526076826522196UPQEQQQH-86.39210592189272168.69835727887693197TMWJK83.81989012222607132.33728312040785198CLKBYWCDB12.308513272562706172.65805279983294199CIJBLNFHHQUMXS34.6324712155956450.95071093290784200VBJBNOXASBUDQS-24.356506450329462118.96090452832777201NEBTHD-67.90410024843706122.54101710907054202DBHWEDMVUHBE75.1091968283269-66.53141564160606203WMCWLR25.04808295007048-5.34393539210501204MWOIAGFELIW8.202486601629971104.71167447542194205FGYXUIX-17.119875752253833152.1313519834303206WAUHWTHQJVWH15.403651291777024104.35146397143507207SHRHHSE-4.67593783702317147.86563225206714208UEXEPWS51.74823583284379-178.14197130497206209RCBIYH-59.06134894574397-26.792726815607466210JLGFASDDBE-80.4206895015398119.872010991222936211CPYUXF80.23130237170997-98.92529845088056212GTMUQEBAEPYOH54.13845214808751147.35328147434137213VJVLNITI-76.23825294019534-45.56484962129417214CDYJWYJLRLWUYX83.47433420826997-85.58314052731502215KSSIGOJ-6.53255499557045-146.73384113452883216UYGUW38.956940713335996138.08889777968687217MUIJA-18.68497815930473490.71942949717732218XJUFC-85.2521015735752295.35721554156595219ILCHRC-28.9992956370924638.29959612871153220NUEOOV-15.282705657629165-41.887122052729154221ELXDVMKEJQ-82.94516045663501156.87504081416603222LNWKQDRMJO-87.95776681443385100.58488010299203223SDIWLOEQD12.0160440421440690.53858090252714224VHFJWP47.68426400940862-166.8935454707856225NXDWBOJQKATUTY-9.349161511484098132.25387333049474226CTLOMAQBWVKG75.004810757102488.17111179666443227FCDJNPKG-7.2309136159341705-64.74675269638372228ERQPMNCYD-64.20556428644639-55.19653840866438229RQDEU50.56983725837901-57.22636727611868230IXRGTSTG-23.16576740556026-153.29527418589294231BEYQXBDXYRO-4.649506189735391-5.924771146179069232KEENACJNW24.31092766416903-44.33854630156469233GHLXQLBA-13.41258536676170421.138196255611433234TGBNCSWITLHG-55.94187987398327-73.4646923775723235QSNWWUKRPFATTN23.570670879568738-34.896508819591446236NMAATAJBQJEXLS77.9244582983879880.9573721327111237WVHJBTORA-64.9976291489244-102.5121351728928238RRRJE23.643981708932643-14.477882018696704239AGWXBIYXO-7.06538289960019517.16563799542064240EYYPMKQSTHWUL10.132747606040667-45.61574186046906241DUKOMIFQGQIY56.904989682709186-142.1177430473474242QFSXOHUOLTJO76.38762346076305-82.3758188890228243UKJLAXJKUB73.946638694157481.18347670965619244CPHQGFB-41.67171889517484174.16896200367063245WQQNITSXHADDYB-37.236565741682035-35.08265905966033246CRPBRQMVGICWRQ15.510409541245565-11.271660267297506247YVJUTMROBNPE74.44440160582477112.61646676239866248VPPSHLFXGCER33.606307919407044-83.00124984374804249DOBISKYJTEVV-48.739604695276384152.53225250220294250AQNNVLYVVCSXFB8.52716735662284-133.98879158345505251WBDYBML41.08571140311244-169.20445387845433252TOBTX-60.3506206257604380.19991117721673253AXJVJTKPFQKQ68.7835941164558774.556887961049254YODCQTCJVVSL-50.358639174176695111.09419745751205255LTHDHNR54.47179786941325-151.3891463419763256EUBBTQKGLCWSP-44.79257514035876-61.99837022860042257RPWRD-66.59028285583095152.34579214332058258OJWTXL-22.928639301431446130.73901094132265259TWVNOCAXG15.55095814919312182.10165963605863260PNPSCRCOTOFT88.31694016031176-27.73369566153542261MPVIWKFQKO59.5562940925279156.87522952285917262OROLRDPIOXI-69.58390860511754-17.041473171297838263SWOPFWAOJHCJAC48.382058280620754-107.76101860259143264WOQVNVKTRUVF46.856350837195159.175995150592883265KROEAVVYVQELD-68.74596096266004-114.47726053081165266IJECUYYNP58.538319434272864179.47336543733314267AAGXBRGDOIGQ-66.96026763498031-41.02416349915771268TTSUPCIXWA64.6889863462929107.55828920607627269ORCWWXXX28.684934999077512145.7648862159399270LUKNTPV19.5643548787248145.22948855162394271LWYJP-89.8273956830622854.607639777612434272FYVEAXDVA38.315080812194117.3423785329623273YMYUASBCYHEAU55.2255452242047891.09548745279852274JOTDSEJW4.736240280307484-138.31832906890372275EFNWPBKO-41.32013695959841515.67140878692274276DFPNVKKFM55.108657217741836-86.74580426422911277IEVHXHXSPT-81.34706490757458130.12668485179285278KPXJQL-58.956872126305115-161.02371344477496279BXXFHV-85.4215913063116-130.3554623008402280MLAMHOB-51.692951290725439.635498264296103281KMEAGGANKUROKH45.615424657586175108.08646935562916282OHAMMAEO30.32232757998824-167.83030479938682283PWGYBLI3.956711240564985-145.92851273507105284IJWWH-44.3128962784208147.428640454370225285IWMJNQAAC17.79556144183847333.373013689741896286ETKJKQF-57.6719465481662544.34451145775921287HMULFXDWCMFFUI-55.46770210306765159.5750233633018288DVDHP82.7534691945180911.922153466106863289PCDKRKRT-2.101229876181179158.74083666841335290GHUHNWAYHQT-35.650598527506055-98.52147965427841291EGUEUX67.88521584787588-126.52474514745988292LUEAMUG-26.058886839261312112.05925943585663293YVRIXHPQPUKW49.786446885230134-44.43951820682716294UVVBHUXG10.048567164107723170.95473680723813295PCIFOOFOQXD60.2706010022639107.08151887560251296CDBVKDNHIVYBYH80.5898812295472739.3658476981156297TSYFTY30.28147229934291-61.23581659817545298UYEONYRIYU-70.78448783790964-48.553462612741725299RTSTDBPYJK-75.4157515362772145.22162629183418300XTTXJUF24.965985927209672156.83352506039353301BCIIGYK72.44523461291908-47.52395508231842302BEGCJYOHO-83.01137923158333-166.10983039809614303KOXCFFQ70.59306764845297-101.99430823259873304QDLTMWK-58.51651516031748-97.04752943081759305DOCRA-85.36527134501056-143.80768684823263306CDYQQYXSYM71.61459149999499-118.3799005412281307YODRVWPPBK16.159745509852456158.8161882655819308IFRLWWCLOPA-61.27579832846466135.46383991739458309AIIDNMAMBEY-38.97122263465039126.94563239219116310BEBXVLSIJSWOYK71.83630573182745130.87661630425077311EEQYRPWKWM77.6376984379267-125.24751881640829312MXSUAF27.28346444832767813.27728534445879313ILEBIKDFOAAJR-58.09519766285622-98.21008372003169314UOXOBOJGMNUYV42.16142780486001-105.53572107280827315FTERNYQAGCO28.505676148061468-32.83161323406594316BYMYBRCRS58.620669993430481.25907029157287317VKDJWQPCNY55.63719166438756-131.76774176232885318MWTWJGK78.9367935965555646.84708205227412319PJOMPBVWLKBG-87.84683236218106-44.78371179806754320JGBKUGB-56.98013531027817159.58163593326083321VULQEIFGIKUO-66.9719006949465425.863171606565516322IEWTDL-50.79387555288933-148.70050776654696323OWRKXADSKCQFCH83.92254432081234116.7455817247386324GNVFEPPO-65.74355616128561-3.7604766084390917325EKCJLFCIIVG28.488818589893697-106.34482368425064326XVOOBSQJPIS-33.122056939102634-136.40536686328085327QUIBNVEJXTLYL11.682676757606231-130.644707265721328WLFBSRQ18.35753455387286741.16677544719647329OWROBDAKYCVFYD59.49777043525731-87.03607947568663330IHLVAB-37.13876719635072-30.665689885865646331DAWBBLEAAJSCF84.52096223002704142.74232850660286332OYIPUDY-20.172474737505111.58116753690462333VINUTRHPVJH24.516248152913562162.5170649258667334OTNIK-35.7215331319766730.924297858137265335VCROPRAABX86.78282804962231-105.80642490681737336HNWSEUOY65.31796381232644-78.56820416519216337DWFYXUAVEJ52.32685332185321-97.17254732931653338BOYCUIPGR38.59082698568338-52.205351035834354339AKLFWMRUKAYUDI-69.945651400199619.290692650262827340EFFSQKORG-68.785926773543978.63122068337412341BWGLX-63.15406217791197-138.70501910211746342WNXYIREOOGCB68.36132900648562-74.48266962933516343MMGTUMETFXPRJ18.43450002348441867.41661287279916344SFNUTWS-19.636196622521354156.53928330411094345QQQWUSM-44.377371339727844-32.462102598462764346IWOFLQEAMJCXSP37.85352666352017115.03360802227718347BGXLIYJJOCX14.98591221185572169.85563437446507348BRKHO-55.58759504270215-146.25806846774876349YTETRTLMPVCDQM-79.38782618863998-39.154067169757354350SYCRGXTS6.525429268177248-29.98603105059533351SIXBOGHQPNCY-51.0388776048521102.94992229528526352HWPCOLYOXWUIU-35.97528348271525-53.794293437470344353QQYJIERRIV35.06383534714628155.26756000587181354CPKPXRPTMD-71.2968483108807136.40892483396624355ULGRCHF-79.96282183530877-155.44013198305353356FQNRYAYUUW-15.490454974082454171.95249151349594357DJTCOR-86.08182542725096-132.96379786907534358FJQFQESMUT9.309245668748574175.97186613344775359EHMCL-65.40591954220656114.27015123593236360XPOBYKNEYAXOF-81.9489431792955726.28882804347529361AJVKJEFUBIRMDR89.78237791513055101.0162875586081362NUYJLVWCRAWFD83.6299210054886-69.07998335755718363OXEDF-42.4040462108362163.86266145295536364ULXKY79.74343772706774-54.13230554720154365XMXQXIKOH8.992749345355747-61.226214206961515366EOUTDX83.74551630373722103.19219805276447367IPODDUCAJAF33.9544275221681685.0729035559915368UQGMDWG64.84039267794802-73.75959711763689369MLKNCRKTBXACI-52.6739669142612433.82356596234547370SVDOVJWAGPYN-75.3736580360175729.864984688339035371INCBYE-39.41955363037825-70.68295155743982372QLIKDXMLXPQM78.67263527446875173.498895699743373PSVSV-48.7928532452823566.14724924456578374CWNCXEVC5.032460346857963.4641199197580477375GTIPLIC-85.8766287209335434.82410724713736376XVTENEXSGPNX-3.6027823500616307174.89245780739805377JXEIA-6.52984214669648134.62678796047712378DPDXTQNJXWOF-68.04220432131075-11.273758758676848379AFRJVVJVACIMU-68.53542256029274-168.04808231763724380EGDWDKPECP0.9757431056046215-103.30980628176833381KTVORD23.08293120513588-15.730266792576458382GRHWOMGGJY61.077013468560466-84.689828314205383GHATQDTWPJWR-88.30883419809533-164.82153708324572384MWXDWKLBESUAP-55.307023202185434-152.10932336075703385PAPTEBBCNWRW-8.166347851053416165.25609679916363386DIAVLDBQ18.15570714826785150.14225111022307387DXMHCKII32.20044213476103-73.45278458454428388BPQBHYQRF-54.54182253262832131.3188567786533389MXBLFAOVY-70.43796289654782-103.25494827437012390YOTOCPYGRIWW30.442693222325133169.38287837744315391GOGLRWTUQVY-84.2087834684525-37.1267883122722392RNBXNJYRRCQFR-1.626734291379264649.58900619010521393YSPWDYMUXSO62.20985071073966174.10472115989637394KHFCW70.8184444951288313.923961064511303395MJMKLEIAG-20.451378228532036-92.45008007887591396LNQKUIXBYI-36.493541239201164-109.36709317085828397EYKIOXAPXG83.73674844145148-125.75077146621567398KNDWTQ76.18518367277315130.08757167028904399DMTAQAAPUFKM73.19760550241674-76.67490570134075400KNSXGF32.237868735873235-156.2448894410876401KLRGOJIMA83.61924098306562116.89602479687892402UVFDTUCGUORVWE-30.904873945764955-166.9672273863251403PSXMBLXHDDJCUB-31.05883670887478164.07419569762175404OQFVHDJLK-89.60043732699508-61.10365161138934405HUNDF53.8738596114753-95.39952075815616406YYBJSKNQMDLUPK63.2879544222096222.014384657000505407TIOLT-12.55550203438973375.7515440869422408JLCJMRD-72.36582958470953-132.28408884569745409VXYOF46.0272475616273284.0913748116983410MUPPLWHETUVKL67.26564571959582-80.18075031044975411XJHBPBTFVAJVMJ-30.168422450028615-71.9789743462739412MJWVPYBWRLBFA18.22399570055483896.61394626569529413GECEKJFYWGIW-7.55165677279939161.17704685867807414EIVSICOR69.00318349474736-124.08699687652101415YUBHWQBNXIX-23.821591005586313-96.86644993950651416NXMJNQ55.20064308958527127.12387376511316417SAIXYHDLCFUG-68.0644167956398-123.70926688014043418GMTSU-52.2849279660231-38.986173181422146419UYYRWV-86.39564743222607-23.439993949930283420JLGQUJFFEHR-52.66820025549736-123.47942601422125421DEDQNOWYI-40.09873821366312-110.90427998857346422OLOACJI82.9369554356899-162.70406817308933423KPOXWB75.31709542307826-71.25242481517675424TUONESKJXAF66.9144828727870954.37479514154339425DIIDBTIIKBQY25.41334465196270342.17626508860252426USBFWGDDIEJC-3.4472417372253545123.8001583958212427MKULNWK-88.87726377309231-42.4758598159913428JDXURITJ-27.273267333443854-162.53472719522236429RDFOGR-50.72689247075598-174.2050225802119430PRNMBV21.1534437993276330.7212820527034012431CNBYUFCT85.45559936955433147.057492776373432DQGTBNTPCEE-14.275628307208294-161.6645477715722433NMXRODPNJ-51.14309368387354-69.35997525394171434YUDHS-45.090308786504096-88.09841634631847435HRNAVGPOIJETG-31.410117301873512-15.164350612825956436DQCJAKMKB45.249398692236866138.17743663596252437SLPHVLMH86.55666732313551-100.49153198560995438TCFRUA-74.18821399044896161.34774946542893439RYMNESGXQ-13.68059526674257114.80462544846361440DOEXFQHWTPYQH61.917068730317936-57.46666467399278441TCRHHPCK64.2608008621865690.83542989868647442GQKXXLVBTWNXI-10.37256738167622123.15290417947841443YFISW-45.9252613042182254.152996235149828444OLCXSG77.1819515409564537.981120553954355445JWJYGWG-75.12208741853368-176.71740368519912446DGYYCWXRSTMAM-53.09482056816557-7.230789171507752447IVJHDENWRWK17.45987945572787253.1064276117053448STHGWN74.9076251353541550.28290835546244449TJQRXKP43.4790479313188-142.6824807165861450FSLSTISDE88.32327324137896-74.20639880471086451NWOHLPWWRPCNSA80.73933172819906-5.7670666591007205452FPIQXNSWGHBJW-3.158490008799944395.94497890183334453WKEQI21.56318850465972129.3355950334559454KORSOATWGSQUF-21.1779057761155846.670349450453415455MLBTF-72.7139140091804448.077721607423825456HNRDRFP-72.09221659994658-73.98962117688211457EQTYJ28.86964781014059-103.40351867171601458MDHIJLCSVB21.05026775630000256.66690476241706459GKRKBDXNWXVYA65.84263806997475-94.52285943552951460HTBVD24.924453239990854-102.36758289517194461IHSJUJBTUQUNH38.2367190656465878.58937470957056462NFLKPUBBG-65.73086862685406-147.57496533318732463GAQOECBUDXUYQ-74.05407403328293103.39609475498042464RMOBJEPDR81.74464140371336-41.50975308508569465KVQNF-26.742779937975996163.08566135159822466XHXPUFS-56.36814132057555156.60709470438053467TOSUWCFTUNM80.7882003432584123.285768010091346468GHCXQYPSHEUB51.42073986087365-115.05920906577411469VYRCL28.00563808513958-79.8576337759816470UDXOYNCTBWKVDN-6.26012425916037879.34807656292162471AJNMPWBMGXR14.628618529462656-176.25965776314965472AWNVXS-23.47239569118399-55.26744261833498473IGJACHTGJRSLIS-13.332369595558603120.05387701865652474GONBRRN-46.264721464517336168.35258397873366475EVONAB-45.199193622213286-93.85335976054641476UNOILNQVOINI-17.34231418076302647.02631206691808477DCYFTUKQBPDUPD-81.45095034219523-37.63845639818163478UWXXVW42.50396248115118-165.71217424577372479MTMSJD44.279552289219964129.76587129660322480BPBPTOSLPMKJAO81.3754613576592245.89366032979501481UAMGBIVWU-23.6293216745723959.384389258776707482XFGXJVEFGWPQVI76.85680584718162-21.583346191467626483JXRMEJ67.61618695797134162.85214251812425484XHCYYQSYPPYYY-46.710407181032565-18.24639441058946485FPUUJDA-39.41216859088961492.47762513429444486GSBAUTCMY-4.56562941351430176.70770357470309487UUWBKFPOEHEMPI-24.226134976023772-173.98372998808048488PAQOBHKAU80.80682880681235151.60033044601903489JDAJUNAWMX53.60338241017956-65.29643785889657490EXQYBY-9.478202631812707125.12977914831964491OQVUEAOAYS73.04828030346653-41.89051061285113492WVFTWORPEUONFO-77.47252368136995-165.6279401539573493BCORDEDIYX-35.585450647815975120.38220957442724494PIPFEEHIFGVGU81.75652801704277-23.91899605661743495OJMISFIW52.264387930999845123.26969695439686496HMTYPE15.219413127637665-72.17044846403476497RLPMHWO88.120319633860717.362273922373646498GNMOVMHDOWIJN-58.17726470438033-1.4979099215843803499WCOWPOWK-9.0008422433626983.9917199401471066500QTBTDQHN-19.49231043884447-103.89401198541208501RYKNSLHCJURA-35.59566981889872-96.31617719182398502PHNWLSJ15.060918968674699178.228656839135503QGHKGMTCPURAFY-47.2832223653608977.72734324139122504CWFBBQVHYVVYS9.86469588069729889.70882835576339505RILOQYKQ-83.12406385271163-101.01398974445864506FJYWMUGGY27.46792302132326163.63764338080125507EUHFPRQL-58.62594255703847-177.7711871209677508FUPBMJGBU-39.00231173664297-149.91215604854094509CGYUJEWAIJVDHR-1.5473937699279939.477326339703808510IPFQTSJDQBYSW21.80570593959444616.0163817043738511LTNCEVOFLVKLF-1.5050565668601195156.88656671454737512XWXWOJIP-4.999040407457770.9955290736548079513XIKLFAVMTMUJ-15.1263199637911919.25505765283347514FSDXA0.7324769413610284-136.17044087905882515RAXJD22.1271151844628881.96977992443237516UGMGSO-34.432567736828511.963524005473602517AKLBWAAWVCLN-17.635498138601918-162.40429002512042518QDBJDGWIXFTQ44.1844663658671955.970930396667143519QCBUVAAHE74.96973655438796-87.9378367947462520MFBWUCBLVETFS59.1744901569460941.270695768831644521LWNYEWSUJCHKRX54.3804591625571756.75562557828556522UMORAWTSLMV81.02307169298311149.5368723316684523YUBAHNPKOK76.0279896128660157.19322609856556524QUHHEN-57.702095989327226-30.26566558125947525FVAFS-25.226498928293367-81.61667015099957526LBGEOMDY70.81197145927544168.0096963428196527BRHXDVIJTFTIBY-21.692547813174286130.40234516960464528SKXQPMIVCWL-64.90381090900054-127.2482330241354529UXHKNMXJUYWI77.84750710290112134.68748406072763530PFKRLPJXWF-39.53294718190046167.57687100090914531XPQIXVPVH36.97212883580265142.47229797039364532UUCTH28.198000627673593-0.7762570887014988533WXBDJUIAJJ68.110820189286957.395757187576976534BLYVBTPUUNMVC43.5830212961675792.21528056678494535IODMYQRUL0.6286470212492787-129.39890184328783536VVGFHSG75.82953677601068171.72074550457916537XDYLAGHMJ46.6038253818526315.421747228282527538JLHYYVGVGMA52.7391751216897858.967952573607676539EKECEI-32.587999234046364-84.64489924777341540OVORUNUHR-87.56026066241242-15.863174944525554541EQOTQT-69.88409507416279-96.91376858572771542ABBEIFKKR-86.3388954233686-45.479220071149854543KTMXUXYILBMFC-36.254774969970576139.4388760763494544GNDVUCYD-72.96896712842666-129.73710576081493545NCFEEKWTLWDA86.2104386863318-43.23963034390485546VCYWN20.000429509555644-113.33570596241069547IPRNDPIPCYXEF-77.63446432860248-178.6835236123861548NMTTIYASARYYHT-85.2652483781873181.69951320025308549VISEYOXOPPXICP47.758057912488994-148.00386473104794550IQMUVHG4.03963513691053381.67348306436963551SLYLEALUIOCDXY-6.4110593894295675-78.88085672070075552NBYNRQJBPDM-31.53027968242900450.13740949947859553YCSGNNHYI26.439668728791918.476293900391454554YKEQYKHTKWEKXN-33.8147453987418935.143355651506056555XGVCXEDTSEV32.20807630081494-87.81186118190232556JRAUPF-46.99696933712881136.4823749740313557BJJNRXYM29.694309760595388-109.56436620238976558RLSVRDFBCID-20.267108560210076-19.10508991725314559VGLTNPEP-52.36578955938933431.31358987147169560CPBBDTAG-57.474950049460645-76.43927262701398561ECLRA-6.4173243320183815-0.4487574421300735562AAFPICN-39.16961057488578-153.05337800023597563XGLKTBAFBQFY39.258973648893374-61.919381956499834564GYAXYJFRACYOS-79.6625644250124685.03994622523174565XOIXTTLDMP6.19843626327247-11.59137942357384566DTHXUBSNX85.02562257312673-64.84562792463971567IGWALXV-22.095416603702944-112.48009735767315568CHRMXBNAJAROX-14.70910230170267114.429911657658494569HPRQWII16.366684959797922159.19500872154083570KWCMUAD-6.651139902350607131.46760636234484571FEAVJFYXJRK-65.66801381919834.509902101102796572KDIQGWFMHR36.79984004187389-95.26465780895745573QAJJRMWGG-51.4145912357190640.19421823822958574WMSOQXKLVTGD-0.36847814515553523159.96736975625095575CLMQKEWCRT-70.92836018098427114.92517545489653576KNPXV45.894056618494204-79.42283391123199577KWPNVPPW81.99216276855995163.70432549312267578TYBNAUWPWQSWGN67.9535884598663295.66476752154472579XOCMAAXEAJBIPN2.577081229067204-14.076578079059317580WRWLTQTAXPDY62.62358421478632-157.53954422035758581QTGJQYLBAVFHAV33.19141947209627-14.924960019991858582YYIYYMJ-63.50709202993697-124.29849660337418583QUOECTJQAAMI-34.27861494170806-56.1830767902305584BOLPJJP66.89825413781773-72.69635932018751585FQPHDFNJFANWAO-33.897850626731454-122.40078821204786586JGGPVPXCCGQCT-77.86821682433089144.48716790642402587ONBCAJASHAX69.539130340333-56.5768505329863588MKXOQAIQRQCF31.48347900753208322.66689883861136589HHNVJ-66.44888184526415-147.49924010447293590NUHUNIDXE0.6062881058043814117.72642242216318591GADTOCMALVENA68.34254481573086150.47718202860392592CTKJAU-5.98133022982412418.519210758723688593DTAKLVFVV-43.37315359733137165.28766684064738594PINMVOPP-76.796462422073814.369438831609784595UFROKFOYDBUT86.579994737618-163.18687808002846596VBISXKCXRSDDB-57.9020146160040846.010737139045546597RDHWVJLNATX-79.47605626537278109.34633149573784598QSINR2.992789107045084-21.708604047075312599NANFOFBX65.62761856421116-149.60461042749296600EOTJNML-51.477884064661644121.47142665798805601JWLHG72.45450809919473-152.6861351437204602QUYGGVDOWWPCFB26.37223988430982-172.21034858742442603PVGDNQGCYWNXPY-49.46209770245218156.2682226446126604YWDRL43.35353799040942152.49767434497392605XELTYSAC-10.96414470014980289.975872887474606GRFAME-76.46650720791777144.91057836435283607ENORV57.0628891273397-65.75062107650035608DXJEDMCWUT-69.13228005530529-75.50596887111755609IMJARXROTYRNQA29.0317691360773-149.06240123093193610NYVSKOTOFJLBNH3.50353857777489118.9007750674208611DWLXLXVQGHLLJA40.57224047977411-176.34047781950792612POPUIGVIV-2.3797632564673705128.39906972386922613LKJNNDIWGHMM-55.91902300083143-98.13879614228321614UUBRLY-88.50782660492602152.8178580470218615YGOQPFCTX-11.98536725915238342.29384507470158616VSUPDIMJFEVG-30.622232802782385-138.2891710297148617OXURISSOU82.98427631404391-90.34608448548583618TLQUMRIVWGHNG-71.90727820216273140.8878397635466619RUIPW72.32633930165335-61.11468684079381620ABORKDHEPRBKQ71.86439987272121-105.09988154458597621NEWBLWW72.17819182458828-8.569221095981078622JCFQM62.37056561926519-43.34958366593895623PEJMUUKTFQKG43.2105869580434225.103661607063714624JJAMIPUNNOO-59.14887269869301148.6724312245346625MYFQSLWDTLK31.4373613567637392.2926204686151626UBOJSD-27.524777175557148-140.62448245299095627JNVJYXE88.36656476079804-55.45692470154849628LFNIEQDLH0.405861111095987391.57586535119623629XYTFKG2.1650108432292683-107.07906365272355630IKAYWLSRBPISJY-0.290244371369823341.474009215395631KWHARNV38.03364237483643-144.21599456497387632CNVXAYFEVD-0.2203926727057279336.959082760619765633JMGMBOKKYXASX60.30268067184261158.21203889101963634VXKSSGYJR-25.59777150343298-148.3985228921661635SSPKUXOAU43.31118891130282-80.51905996756031636HCFDK64.99331727477235-118.17157837964987637ONINK-83.43997913026391-165.2899016312402638JWQYKQBAYXRSM50.3478721075836461.01241787195366639CYTCBNGTAHIQEK60.2931804430152257.375574247587764640TAKWSB23.82170066384191101.61090363971465641TQAWDTUFE-51.95257894972262-78.33194803163069642SHETWP89.5223533726012-138.14449111523354643FFIUFG87.71575634566236-80.83865816291055644REEJU-21.69509050230381314.202990037154052645MENYTBIIDBECGV-24.70079027446498-139.81075998551688646SIVFFVXIAMVF-89.648637026329382.300514365692891647HKRFPMN39.11834228312469-4.925301583931883648QCOQSLMJWIUWD39.83708186328221-114.0170279716856649ECGIDU19.7537866538066369.61106331968298650NVYQNVDVPN-65.27235826611702153.12434246543853651HYMDEYAUBMSQLH-75.65832904863356-121.5067466012894652VYRVOBHVE-37.33610516741984516.494805136788017653WQPFPWSIQE53.79322432767887-35.163389812980114654EURAOWCETJLHWJ10.805986879969069-56.002515195923095655GYVJYNJBJE47.807777929886186-19.43007577455319656FIRSEXEKFVM-89.60632954999485-90.5523947806149657DASTEJHXJMFUA-83.3006395452906223.815021165214716658QDPYSJWBVWK89.0570114375529424.991669642852145659JHELAEXDMFBDRY80.43784148081144114.2769470381449660FABPXHD10.05770549251272456.33991665760138661BOVXHOREPP-53.76747485352652-91.36952680777318662SBIBOQPKFNAX-30.969207315376913-58.391960765951595663BHPFWJACRMU75.11218687783455175.04917073692093664KYBWDE52.110514649185234-28.646431681180303665HRGQTIOPD-35.58146628204891532.20399721290295666VYWFQRBVQ-0.297659564294122148.8532207315455667BHFVWNAMDC-18.3312566989872184.305972624421912668PXKNPETWH-6.488993590215529-26.498930541851138669RETOFHPL24.682166301666422.368845462497575670INIVQQULY-54.42542997542138149.67256630107482671KGVXCS-5.48403653325945690.78660235918153672FGUGOCJ-3.960343106671274477.34685959173828673FKHNEOVAYH53.5281973129772169.32965809398343674XQALUY8.725978775896323-37.76438180122176675GGUTPKFKAYCIOU13.255666390934223-45.83111115685273676HQXWBSMMPFS-85.93605815335054-17.78538710915089677UOTRH1.8739247457672263100.81400730635374678YDSMI20.7658695445301928.9603498767668679DOYQUJNFPI-43.6294205704971883.99822203450469680YQVTNH23.1136521535926538.335517542969995681WIFEROWECDEPL71.701113801768-133.70979934963418682HGTXEJ3.6632078818366267-93.73365159979676683IQEMFJSFJARYVM-55.58839119749282-87.17727859347758684XAPKFN-80.668202091678380.6041789649356986685YVGICNKFDC24.6247228198555527.64747769202964686TVIRONUTDTQI54.7741683448212818.43758706847032687DNLNLKNYSGL-79.4025346406442175.42735507439397688MQKPOCGWM76.57082658446328-104.55587523369383689AAAWAXXQ-55.25652096619107161.2508207072854690RVUJXV-86.925415983918119.185886789047629691DLKOEBFSHS-0.1606445638919496-176.93077183624763692HDQNYFNEFFU62.21515424276114547.66012107620469693DUONQJLHIAI30.122971003291923159.9315289609986694IYHEOYISKJBA22.21211982336672-157.44118350122648695UDJLBENVQS24.346146404799214-122.74774105651062696VNHOIETTVYCH-77.62862402773828110.84534139523322697HAIFCXVUWMYYE17.08748015611631473.17714119915718698NHSBPI10.80056326734693-142.0865300363108699WNQJKWOPPX-71.2831189649364133.45272125386305700NJMCDDHYR-73.28230451081156-41.433781085651304701QNGVSBTWDICC-64.65787807580803-88.17252990486683702JOBLCNXOME-4.7052632134547-73.5747158455836703TNTEMVFF-80.2014072356373917.563675607550522704NGORKU28.32796540226840423.449642228927587705PBPFUTEAWFDCUY-12.603676417719441-133.75361187028068706WUGXMDWTYJR-7.070170015899137-131.75769703858322707EILLOBFTOC12.667469762787334-64.51958032047541708BPAMODVB75.55742862568039168.64638270796434709ELMRIKWUX80.30682071174911-81.95048377128705710XMWXHM-80.3147865467899517.582651453405134711BRTCOJMICVC-53.08066928465371653.95383085291948712SHGCFMOINKTTGA-63.53060187264128155.83363094287137713GGQJWBKESRWL-32.40002263284423-59.20726620332313714AIXPGIFGYTDWO-12.97746700618167-7.078886074098705715RXHOPIXYXC-16.54543207958683-33.1779582386535716XRTAAOC86.3395904782662798.26102500057237717XFOGHUWHDULO-44.259016117765924-95.57385743612708718EVWXGEHG75.70940803739086114.2055110786946719HPCRBQIRVHATT-64.74182750930349-151.50317372781953720GDUOIDX-82.1214249672984826.486072961625922721RDBLAVEQGSOWV-74.58470621714108149.54649171721888722DMITAJPIR18.19309451822251-77.20048584570486723BQKYPUQFVNHIE-81.05765024241872-116.25977915058996724LXUYR-57.7166297315241-125.29967287933569725HFPPNIWRQNJL27.26664305572288-112.3885032036573726HHMHKNQGRX-11.785546095361923173.70659599268276727XFHWBUFKGQGKHJ42.166386097560064-177.6409344201605728RKUELTNCRJ-37.98881813679997-130.51931502007903729VSNUKUEGFD-53.196751477230556-111.08724556484184730WMQNFRIM5.28215678365629197.18913389945999731DPOPBDPGNAB32.171506773816599.69067339332952732VOJASSROOHT-31.0449784012963288.42334074900742733EYVOKPV7.355986582852623-76.56462940989395734XWMQLRVSEF87.119041519755458.766827762763114735VFNWTIXYHTMH58.91624061654218-7.10079210957943736XXDAXDPCOKR-46.06753515854196-8.095582932457972737STKUXD73.64842058322691-28.031588972858657738JBIYTSX14.627433980851592-35.69300787812929739WRCFKT70.2399631791277820.844267364940038740DVFEB-52.34612351918182144.5858696146136741QRMEB-30.01708687044904105.48727142821497742KOJGRJD-1.2816345170906231-93.4517308053782743CLXSTMSOOY-67.18770597165658-98.60529932294504744TBVSLFDGYMQTN75.0712806593547-62.53292693961984745FSNPYTUFVWWBC43.1715253542076171.08774205215167746KDRKDSFINUTX86.9996282899447267.26060118350532747GYGDKRUYOLH51.78373302364341-50.22107453457363748KKENL-8.286760092602819-112.7336482905835749IMETFCJ51.246423895800945140.9543674235116750XNKPECYSJHKXG-41.63268731086178-14.208690244839687751RUYLXJ-53.959504769593785-178.86410840939135752RSDUP56.626165323321544-156.98732821352775753GYFJPAYUWNFWAK-51.57311862496904152.89879809481334754IPMENMHKRTYBNP-25.72652909192007-13.936703552716722755TEYQI-74.4849144001720716.121407257066778756LRWPE85.58186455192171-173.4541021394134757MIBSKT73.3907336941437-112.32312233667407758ASCJWF-75.90082692984176-145.07493279423045759NVECPQE78.57526402777668-111.51231300465209760LSLMEUSYTBSU-9.72959029907536976.7976362929316761KUGNR55.507912490188346151.58068265790467762ADTVESEJNFSOYG-80.92327857757651-174.89881817971317763NELJRWOOQDXA8.455059780305334164.41302468437652764KVFKRDKJJF-41.699780158825-72.43042183887076765XHNHFRMGDLLU-75.9682615044366825.457910925953342766QMKMO-46.03928110693426177.0956276685912767FCPKXPHKVOQ-53.25976895562172140.60125393543677768JOVUHTAWDIDPH-6.181210962980174169.41361842906673769KCYEL-51.752393435191635-58.8813397392951770QHKGRFXNKXV31.1862451269878784.69605679243006771CFMARMVUMNS37.200993743707926-82.0562733790756772NFQELKSOEUGMU58.9948251120613951.131416371944454773VPWSJW-59.86957821227705107.23479085402869774YOKCDJJBBSDEXK64.9198947810357177.84185533275337775LKKRD-20.5544599986823676.34021746867649776FQIWYPIS-49.72398499467881116.31615106709603777HGYXEKUVU42.394191058564985-157.34233098592264778PGXCXWJBJH16.512337150254552-160.20194528120763779WQPQEONXBT18.6482376851004797.67038457538877780RWSXHIR8.458777330826521162.51882629585054781APWJCIHILIMG-40.866339893905554-7.2927031532391595782DRXGLYCUSYHTFE48.26531006768519-123.26756506078584783BTBLUB-2.9384133429883263-16.05641230460796784JDVVCPLBODC-3.3040767816985976-60.10173695315511785NXHYXYCOTMXU25.08733249604977-167.2737575142822786CHMXGJ19.634967890276513101.59099120065605787PHUJDIS-27.25587889975649-171.8245662467414788OOIRT26.779672083292752-31.227066755372817789NASHGTTQPGU71.72137299835174159.0005465837034790NXHCRGQPAEXNCB-82.77713464558161-140.6686658331903791QVNGX-10.796365393469259-160.05757717303584792MDKHPPUERERODO87.2757298354393165.25611028059714793RALQOXQ-31.621621404307014-34.379607645143096794TKXKLTPGSCQJL-4.399226010075779-10.015860414776768795LWAPLHMFCDVE-5.754011514910758-0.5394155702138619796SPPURYLMU-7.06095380403265-120.318971273611797DJANOTQWH74.8122656358945659.802517650204265798CVSYBVNHISJ-78.98218904424498170.8463217215006799UDYJEN-39.7030320930682789.03321228766856800KFDLE13.16863620271485-159.33144100995628801CEYWXRBIIJRI-80.22055004059811112.65238164138896802GDBVLQJEQXPQYK-57.55121615325986-49.0776060509543803VRGPGHR16.3099491099335797.35783945415909804CLEEBEHCENEODC71.29713904921988-0.8189876960427966805PYOPCHXV-16.544173627254366-131.95387217583817806DALCAQLFTXW-76.08600663351054-56.89739682070022807LLEMVJFX35.22379777442258-29.438345106863807808PDRIKOX-54.6870931214738424.280429183717047809LEPAJEPQPOAVV42.185546255223926133.6684865317897810DYHCAOV-39.61174140953673423.350016261048637811NDPTYSS-34.73425052405849-112.98393411957946812AISMLLJVMEBO-70.6986167132108779.84749500735023813JHHGMEB87.3778042941049896.99087458142122814PGVYQQFOYCMDYT-74.54240995208535-11.92659120426282815CINMLRH31.21248672382346128.48945782265037816LPDOSWFPEAOY-67.1314282845183948.50632496979881817BKIYUEJXPV60.60938990790959-106.37037369589939818AJYSRPKWTJGWA-75.73324180560998137.67467984094662819UXRXGHYCXMJ51.615903792608805-13.351217618371265820FFAVHQAVJCFW51.5066963281229-161.8052320542873821BJKNXIARYP45.2985652986839191.49908239368028822VADEGJA-11.236860028869444-121.84418831627923823CYKHGHKBJ60.65711634164845-107.33977966392179824EQTWPM-57.15753739212273-58.17433170355447825RJTBNQWQOC-45.442073361725078.61838441837213826HGGAKDRY-20.470967360815735-126.71833786220512827SHVDTIMAMU-1.2357483916086949106.23807255885731828MXUKBAS-16.82740186611835-169.52007452362867829PRVJT69.682502837071784.93979002798045830UGSXGVKIKWE-27.45256763261156-149.78821313265405831PCESGSYDC77.60021374312055-38.43551385680115832LKALIDYS-22.563844301683204-144.61270664904006833MGPQEIIUOQN-88.90585298147131-144.67705814770042834YDMSYREOOLLU46.170187160974876-5.669963144661551835MFWLELVBNKGTJ82.77084647595382-101.8375340900697836RVEQBD-51.992857690523984-80.56272669434018837JBFCUQKGBQSML-36.01372480276772122.89156548693416838SCQBQAOJ86.0110951152288129.251945144080196839YWEJNVA20.30265794035691-136.59366762563613840BDUMWGOJOBDYGB-38.125371587057574.494764488036424841NRFYFWAJTQTIF-4.395687626186799147.66001112808982842JFLPTD28.28043374183069-3.703884894178799843JLIPPPUXIQBJGD-22.245976255564855-5.879118059964668844NUGGGJMRH-24.992011956961946-25.246959122448857845JIOOCTPPSGLSWW-41.4111805365269135.4041329487735846ORRABE60.69479430043336-177.56023422672413847ANWBO29.979516144347073-53.180970289298585848RYINAUPWHIKWMO-43.87604037696286-10.708593705050134849TVVDMT65.9710925588780734.64273309636829850COMWVGD5.663294234822089-96.35527124687967851LFFBE73.56046014900565152.46349507277256852PPOXY-24.290060114592507-21.666203565454794853AGWJPQYSV-49.47346499638215123.96823158674232854GRRIG-14.20096755659717857.59568487841844855FGCGWCMJIPNR-85.8174091621551375.02474423437738856OIFNMQAHARBCXE-26.42523412775665335.45105944379145857TUUNN-75.334394921892678.5027718755203858GLAVYLPQSFG-4.432182071473122-125.10260551238886859QFCOBIXSMSGRH-40.50882005199630.369744434907545860KWKMUYPMN-2.6646416730617375-9.973567586670839861GXRJXMOEMDSTEW-45.526433998200105-34.271094880717726862XTHDNIRV26.29073390722048537.796280297730505863PYGTXTIQSNQ1.0328277797490557105.30344701631901864GJSCHAUJQ-56.67179407017662-63.53040759758633865TMYYDVROLU-75.3940438291443-152.79100653935905866HLACNBQUTXFKSS-38.38763710710086-142.660973718887867HGRJGYXCAUSX-48.8014384689107812.206095448610881868RTXDOAETDVEMFU51.7922768460502755.57218685254591869PVQFDKUTDWGTXX-3.910941135987784-57.573584746625116870IAFSJJQ-37.87336329052316-33.85723888688693871LDNRRWM-38.5326396406405775.8734551323694872BNDEPHXKNN-39.4505158503293855.12738931863598873HGGKFSXCT24.75641400073411-90.04016895185254874HCHHBEEIQ-65.18464203924776-44.53861225643041875CJQRCYMLBGFCM57.170094316602274164.6507884258973876JOHRLHWKIFXULV-26.869939058792312169.65168552852919877ALJFPOY32.31500309496012-168.28267078956455878DDTCM-71.32249087864197-128.3898986285425879MBALWQJVKERUGV-30.354883941529565-147.530046603707880UUWFDKJX-31.696890090250974-154.43424276898554881FHVKKQDF39.337962052361576-82.95438826534308882INXTIN1.0717215540715586-30.805841174990803883MMLGYE76.5747771568748346.28036024306661884GNPUKJMEI72.05506774388832123.49278662478685885HQLHJWIJRJMJNW-32.7658499916537889.56301796478283886IQIIPED61.807272369946986-41.196332862150314887EMOOBHWFYP-15.856069071487795-155.462036062521888XTVBTXYVHNHK32.37179623680565177.5199048673008889SGKOJGEQMV0.4643668407612438-146.82669299258822890SBGGMXUYJEIVP-37.839480337346544-35.414659144574756891HQYEWX71.9170212401282611.925816698618291892JBNUAMQDV-67.06061027763772-116.02047365805501893HCJJCEDBU-65.96548859669113-21.900355685603955894UQNISPR-62.4215727372941170.0336452518454895ARNUAHY-61.26062859338655139.06055719374717896KDIVVFRDHWMKT28.72034714004289-109.62329101762997897IDAVMRUVTEV72.5982288877095258.80923594708156898RGLLMDLTQJSYE-20.69212197385572-160.35199695792028899VSRPIJUURGLTED49.1855274372085823.29252145111525900NRSAHS-24.02728599388069637.06216998279996901KDBGJL-9.61864768625834226.07197655858721902JPSPIR37.82150682863292-59.28632443077416903DYAEOLJD22.275145451337437123.62448660375264904UNWYLAEWX-57.273298627433746-64.23112901504929905WJCUXEWV55.40318707734977-136.90491374636787906GCPWMAMIQBQKTV-72.33212082382185-147.91090307594828907LTGQNDE-27.162462743075146-46.044331627759846908CMPOWLQDY-69.36070148800742-53.59170566584896909WUHDUXOWIQJOKR83.93183319623051-150.57189206237257910NVYFQW-68.33487047491562-139.71871577066239911KTSOYWFIDLDCHF-5.91844155625302999.66654826995608912CPEUOKNGKBOJ-85.88897606483907-132.98319414848874913CHAOINFBXFL80.8336851795543826.21624848472345914DVUNKIUGF-11.779662047514961124.17416478963463915JTHSH47.83843609493195-67.69283745119981916TMYOTYEKSL40.55062918858394151.25406761442594917VPOCGTEK6.791788457801147-92.60769771161978918KHBPHMK1.7513056682628166.789593504677157919BWPSFLJC25.058802017491246-163.4520822197499920QPXDDGYB5.722546418886395-8.193328034426173921ECXAMDHS69.7156694458391163.57680116634486922UDBDU6.642637435980831-85.1176813980618923VURYXMDOSXJFK-53.84670375210463-156.84880253288662924ARBMUY-20.85219720299414893.71638299210878925QFNMRHXY-54.087821147684906-27.89483115869743926ISAMIWERLCN85.4188817875025857.19720859203355927CLTMQVGEPTE66.04824672785236145.89828694005155928RBQHR-88.23369269581262-43.83374561931737929LKAUJ-14.102486954429125-64.72822436826351930HUGSJEQDUKFMC66.1173656856098-118.66458720082798931GSKRRDNBFY40.04918445202074-117.47432131828691932CGOOOWXVWDDPEQ43.79426726912859619.141768173744794933QAKWRGNIA33.12035346527472164.74971769537814934WIVQTSR-75.4010006305676837.994959161105015935MCPDEVNSJOBXE25.261645264596936157.11972461344868936PJJAAYXGR-21.622762948007036169.39498458371236937FAHGJCRQVFRB-81.2658176298211-61.47363618597187938QPCRGYP25.52554785761808-178.99565811388237939FSSLAD14.804666495339006112.75206550295553940LARUPCTRKT-62.88556443265993-51.169303662207994941FNRBTIBJLKL-21.892532065633503-165.41042349181723942VUJCGIYGTBSEQ-84.4023257582944569.32679608387372943AXXUWP53.15681946163474-20.16316459327689944IUCBDET11.86783417226385599.32604066434146945OOMCKUWWLK79.31381348119822-159.72000643185294946PBJIA-56.414615936670785-2.7981837360323425947VSUPTUVS-79.3637017759801969.43071471402718948MMLIUBKGE-20.403382215235908124.06734516990525949SQDYWKAKQ75.4525678939075474.96932692224306950JNVUVNAIBMJA-58.41161789519008-73.88154413508131951UAHSGPQEDHHYGN-36.24125022002515103.77571637212702952NFMRO-26.564699327217518179.34617470849395953NDLPQFJ72.19945130726936-6.717655453131613954XTUBQDKWEMJKR66.62228339169712166.90996893440916955JDHCAMCXQ-19.20560071067116368.46862247245565956CNGLIIHFMMS-11.75164333752583492.25635853069838957CWTQYK-12.396310694287251-47.782984647311764958WGHXIHVUHQM80.54450565154707-8.805909495346611959CDBPHUHP68.07754843440031-157.66666860657736960OIQSPSAVWRXMPB-37.4817401343244394.87387289334248961CVILMFRRHPHF-36.6392714891319-62.72664273330152962PVQSK-13.5542714128354483.830299496772284963BWUQPDWTUPJ87.3523851401440718.80523959117312964WROUQPUCIYSAHN-17.951378117129238-174.3760761471158965SGEYNKIEMTJUDR47.55104146948756-41.88801215937849966IQHYHMXAUH-33.86957087870383-63.696644969468494967TNYNNPQPUQSO65.41626659875786135.0485056975462968MDSTDMORES2.986330912506972118.70873585729481969JNEBNR48.202880852625725173.69657240465716970NKVOVR21.170996056199883103.03900424019486971AIAIVDSEOOOUUX31.917112724111107-51.7266029580139972YOYRSPWRIRUW-7.34188269739482349.06891867279302973RSUJSVSSF15.141043183985346-86.43499477381238974MFENBXPHLNDAHQ28.477061379080823-108.9214076895134975YLEIWN-86.50209636984415122.28103844998009976WLIBICW-11.5393566667926-64.46003220035065977IDDFUNVRUWLNKS50.20425355483542-2.8442990099272265978XWXJTUDUJVJ40.19393619925208-143.3721282104646979FLEJQSNUHBW-83.44811741093959-44.52744350048516980IXRMPNHLP-51.81946213006878-135.29756576888173981TTJBSDJNNRPGX-50.892156861740865-112.06126806059517982CXRBYNKSHXKLGQ37.58899311113697-9.605552691075331983PMGKVUKEMXN-82.61222310999538-138.71286790593214984VQYYUDYUBST41.54372754393626137.15484626004235985XOAOMVGE21.85911677967982345.12208858916523986CLJSPKXC-3.5884724140011457-143.6701942354141987LEDLILVSM20.43184684182895739.134486177838454988LLBIKXKTSLOR-7.574892166679575-134.40543311179044989XGFBSXFP-32.32356155419599159.4695741574542990LKUUB-39.6583091641227-63.3398781453876991VNVRNDLJNM68.99832611176544-172.60456746275878992ORXOORCOVUTR34.52371191896516-24.439793632356213993BMULXT62.45666725802067-157.5205812631593994XTEDWSNLWTUFB60.01704752917945-60.0095394937032995LPVWOPHAGEMBR-30.031743939804336-22.80326581279212996ELHPMRXYGFGMTK-33.07384843958539-103.19947465985791997PHPNRXIQ1.9330112710761398170.27811676655494998EBKGQUAXLCJK30.616949615138296-172.18400648087936999XGEOESXW11.276237063572722-106.1693833907418 \ No newline at end of file +0DCQEVPTEACOK62.9969137.67941LDXXT-3.238351.84242VEFAWRR-50.713483.52383CLKVYRKBS32.813581.77734KXUFRSG25.7582-49.97025ECTGLV66.8055-35.15816HRXBECTWA-1.7916-45.29157PFDED51.3446-5.39338OYWHUSOXVD-66.3050119.84649NKDTFN27.414834.561210SBXTYACFRYXLSQ14.9352-167.972811NKHTK-64.6492-50.732112COYQKQOQ-50.5197-96.996013LNMGLMY-29.6852-0.924114QIPDI54.5873143.183715ULNUUFTUTBCYW43.3480-32.490016RDQUEQLMSEKM-78.8073-13.852017FIUWVB5.5838-115.366418XSBOX-87.3330-84.773219DBNEDYOFQYJ62.0937-169.773820DIFKJVJQ-26.8529-164.465521JLJVU52.5583132.145222GUJMSBNL-77.3775-28.094823VTJJSMFS13.9440-0.794024MBMVBOY69.7253-23.182125VNKIBV65.701320.306426KMOBEJKKIS-84.462895.391427QXXGKEENGECBK69.0252-153.480128EPYTPXWJDD29.5887154.355729DLEVXOCEJFV10.2003-113.978630XEXCISO20.172318.336931HLYWUWQEEPTMA-12.7299-55.618632SXQDCGHKR10.9348-133.887733OQUUC12.300493.473534QTDLQJWIHMRIU87.8704-65.352435ILVKXD83.6902-50.679536ROMXGWV37.6710174.751437ARXBUIY-2.2050-150.126738SHGEWF-61.1704-116.686939XWVHKXTPLUO66.0654-36.236340SAPVMNFVAMV-20.3701134.130841GMOQCYXOCNVPCE-87.892530.724742SAHNHRTHBB-14.8685-116.291243HWLDVDAOHXCUN-44.1991-81.516044GPAVRIKLJ69.5387-176.642345KIQFXO72.9400171.939246BQABWCQSCR-9.7775142.867447GILIKTJRYEVLYG82.3206-150.518948CNISGUAN-25.5299-98.533049EAMHAXGOMXU-23.1809-154.475250KNPHTRAXQYPLIE42.0069-36.481551BMWWH64.9087-146.876752CFJIHJBLUYUGRW16.0037163.361653DQLIHYCPQVXSR43.292230.321254KFNEAXAMJJQNF-68.8441-60.388155RKNGHLYITADV-12.2054103.963856QHOSFXGVPETRM-79.0786-73.598657PBODDIBTN-70.7236-55.388658VLSQCHBVR-1.0586-117.325359DIKQVXEGAKSYDC-86.6907-124.024160XLOAQGGK64.0334-0.872761JFSRBJ49.864753.037162SHIFJFMIQDMYJ68.612136.175463KGUHOGS-81.2114-42.412364KXMHECSVCBJGHB7.6370168.417665AJUQVOSTXQM-15.3683140.222566XTUYDXUXTF-86.1356-179.483567XPEEX-42.5242-55.052668SNLFHARCLIFKJ-3.827516.498069PXEHIIP-16.2158-24.207570UALLHHQWV0.4181-151.295771TDTIH-48.2988121.631872GKLQWSAUEJQWPM59.69174.199873AMWFACRBNOUYM-31.79999.779274OTYSARQRN65.3776-148.438375CAEPUDJUKD12.703473.762476WEUNSDNQ54.2583-55.538877ROIYLTRBMEISJ41.8106-129.185178QEJED87.6039-72.665979PTLPVYKYPXFEFP23.7025-22.326880MONSICRLKPIE-51.4516-89.464381QIPGKXGCOYBQH-53.4368-72.262182DADTFMEKM5.1891-177.566783EMTMQEK49.500551.196084DIBKVDRIJRA-30.9753-49.653885IGITQMFVHT24.634769.091586JODYRF85.3102105.457887TUYYTTVYRATCQU66.255396.951088IFKBL-38.9856-16.873989IXCBANNVMQ76.3725-58.059590JPUBFUB-40.4155-126.469391QBYFFVD-12.9889-33.641092LULXWCSLUEFP-19.0024130.294293GJRKVBF-0.4716167.466294HMCGLTXBD27.6426100.196795MCRLQAGG36.8011-149.216496VIWWL2.5142-144.259597WTAPADWD33.0395-85.207898RHKTETJVL-6.67762.790999WWSSJK29.0090118.0531100XQWXEB-71.3645-82.1643101AEUSI-76.0061-172.4707102SDDUVT-64.9456-31.9297103OWUTDY-32.5163121.8318104EGISOUWFJ-9.7331-122.7954105GOYAARKUISWYCX-3.554365.3920106ILWIEWRGTLHWRP70.6051-5.0431107XGSVGQSH59.0916175.9362108HDDXNWF37.7475114.4387109EYRVQBMLSYHU-81.9522-175.6211110VIPEJJSPNBBEE-68.2661-122.8804111QVFKB-51.443131.2610112MKCPAQ64.6949-142.3354113OYDJCSMSXK38.6167149.0599114LORFHHPDDFAPQE24.8532-77.9503115VBROSYNLSH-2.6269-178.1088116UVAHWDXNDGWEOX71.9543155.4209117KTHBSNKQVPDH-54.8021-158.5646118PPOYYAGLCBYP-9.325288.1211119GTNUYATLEQJTMX35.3481-145.8143120GAROUMIQVFSY-16.247543.1559121VYSKOFKOJXSASU-50.2538-38.8943122GHUEIPDED11.391054.7246123IWAUKCMAEDMBM51.5097123.4579124FVHYCTRYEMF-43.473868.1757125XAFTVTELOEKLP-81.7720-103.7415126CIUTHLF-80.0628-154.2151127HAQKX1.8972167.8690128ANBLIGDLPORLP4.6584-23.4935129MMPIHKPJCGFO-24.104949.3921130LNAXYHUEYISPX24.584260.9908131WBLOCM43.2747116.1339132HATAUUWJWYD62.5376-57.2326133KJVQWRSXF64.8689150.1397134XFIGYE8.4347149.6074135DNBRSELOWA16.0660-126.3399136JQRLPXAMM-27.1219101.2421137DTEMMBX3.937840.0692138YMVXRYIG50.5005-166.9034139QNEFCHQFW45.830536.4946140GBTOU-40.6551-100.3759141EQLMIAMTIU-9.14120.7923142SPETE-23.1500-117.2242143XOBKDVATQYTBP-62.1136140.1315144TDGCCAHF-86.7980-162.6201145OUDMFWXRKTNO-39.7840161.9091146WDYVPCVIATSCG26.3874-58.6661147WVSBL17.9566136.3625148MDMHMTQK-70.5255162.6896149QYSBNPIRWW-14.6639-18.4499150JLMWGOO-7.5726-29.1473151LLTRDQIHUCUB-85.6432-44.2615152XDQKCFLNDK-44.3725110.0877153QFGWGKCSKUGE-40.2597168.1734154OFYTLDBINRDAE-50.7714140.4349155BVNEVYYCJJEX1.8771152.4915156STJRAL36.7150-64.7022157YMSILVXEKUXV-49.8099-81.8343158FUENL87.260250.6249159OJNEWQRJAMLQ-88.692143.7868160BMXXPBUVNWN59.677611.9117161BCFBSROU85.9085172.7301162NFCRRC-67.7125177.3945163DXEJWQMPDSWA-12.3230-126.6937164GDVSYNAFUTDFVL-87.3082-21.7605165KYDAMKJBA-74.510418.3791166XSVSTWYCSHMRK-80.0560-109.5379167KGAQHDH-58.6375-106.8307168YEDVNMCQGCE-57.509895.6945169CKYFTY-52.9048-157.9240170SGERLFG-64.0873-39.3057171SWOPM-5.1609-171.4355172WRIOOGWDXBMFPA-79.9631111.7652173NRSGHKOD44.5945175.8270174QMWOODXNRCL3.2387-13.8469175LLDAKR32.5017-162.1380176DQUBDVXCUT57.5808-82.7392177LHKVOT-24.9817-135.9373178KNEVTFLUOJHI80.5107-98.3270179GUPSQPPG86.7145-4.0588180KLCNDN-71.4828150.9387181VRAASI-69.5724-28.8234182YBYINXKSQS-12.4530-15.8407183KPDEGDSR83.1000-86.3024184UMBLNWCFYOY43.3904-29.5214185LTPHQJQRTDTL28.1667124.6887186FMKTJHOLFTGR81.6714-21.1792187KPTMUPGW-1.057873.3484188KFUWCNUNDDBF-71.8547-93.0649189AUYALBOYELEQ-17.3385-152.9781190IMNLRKMYSXVJV33.4779-126.4345191NVSSEQGBHQAC89.750136.4162192OYSJXTRXB-6.324894.3408193CEYALXBTAPWJUM-40.8541145.5839194THNBNXGVWOUN17.7698-72.2958195VUIVCJINRTG10.4290168.8475196BOCDKTD40.4031-161.2628197HWUXJDEO53.9588-120.8903198AAYAW-55.9739-6.5767199GDSYHGGCXFVJNS23.6333172.4687200RHFUAYMX-54.8148-155.9862201HALBXVLEMIIPV4.9918-138.7818202BUJNNQKMEWRS74.4998-85.8001203FKBQOENPIC-72.8940-59.0429204OTQNHPQMOD19.3203-146.1613205VDCPFFDA78.000282.2631206BBHISCSYP-36.8484-52.5867207LYSWVYHIMYRKSH-72.043489.4467208UVSCQYTY-25.1777-54.7749209CINFEGNYTQYJ-30.0735-51.6715210SOQJLJN-60.1486162.5655211OIOTAMF36.5499-89.3527212FORCLGGRIMGSM-35.3628138.8892213XYANLDOERUVN88.9941-27.6148214JYOGCVDIOKG60.832482.7300215GGPQBRLGAQDXT-85.9521126.7944216XSLYFMA41.7893114.1067217VMWVSYWJBN76.5538-82.4666218CHRCYIAHQFE77.7974-111.1711219RCTFBQ-9.5613-155.2993220KBCMXGL-65.963693.0324221HJHHVPEOS-20.1294120.3539222KMAHDTYWMYPQUV-43.8639-73.1748223WWRVAHFYWLXNNW53.2213116.2517224TPVQDLQHF68.7108131.8317225BTKTN-85.107723.9834226LPYVOQ44.9423-164.7717227LQQXJRLHXKFD7.0775164.9479228PKFUCA2.5083129.5688229CLGEPXQ-33.6401-85.5634230UCWVCVOAY-26.1545-39.0662231KFXQKHY-85.077065.0422232XKHCGRUMMCEY-79.8306-117.4988233AVOHPR-74.864213.9624234FQVABOBFKBYY-48.6773-152.7200235PNEUKQBWYUIXOI58.305772.9661236EBYQLWQCMIB28.2980-80.6437237MTBVRXFXOJGYC22.6459128.2361238WYNNUMAEJGQXO41.2053-3.2080239SNWBKO-53.4254-32.1235240XJGHNIG-51.9803-85.0954241VPAAPUEEM50.2313146.7907242YSUEGPH58.1231109.0597243MAPSYAHX-24.9921104.4363244XJEYFS80.98154.6675245WTEXIUW-3.8750-174.9449246RAQNAX-38.1394-45.2384247VDBSUE82.8133-57.9734248IUIXTO27.6030178.9451249SAJFPGFSCO68.310712.5363250FTSQE88.3183114.4303251ROFLNWY-59.2293-117.6052252MUEEYAVINVER53.3529161.7957253HBRKFKGJFHVUYO-79.478911.7695254BXWFXVJJXJTE-76.7824-153.2251255TUIAQTEXJ40.3360-94.5677256DFYVPBB-20.7511-55.8579257EEAXGRLMABX-81.6766-63.8791258TPOLQIPYAHWNF2.2586166.0359259VGLFH78.3432-49.6234260QALRTQGHXOG-7.2382147.2417261ODXUQVNT83.2368-109.5694262GLKEBHWGSWIR-67.4264-139.2297263EILPWMCAC-10.554078.6922264OBTRUA47.2450149.3556265TTJTEIYAOCWK-45.488418.0632266CIPWXBCHOO4.066592.4204267MHVSUQF-74.8390-106.9981268ELPDVYAWNT35.5929-143.4466269BLVKWFDEYDHP40.5582158.9989270KGWNUIPUARVJP-53.8774148.4866271XSALLYKNPCD-58.106295.0808272PNOUUW-2.4516-93.0867273TKOCKKYCAQQ-27.379813.4990274EHBCQSH62.635745.7126275CPDRWQXTN58.6331-3.7082276DQOYXBBIRBLMRD64.2580-178.4091277CYTULM-84.6803-150.3010278NOSSXYYPRTD-54.2848-154.8238279RFVEXQJI-87.5010-154.5587280WCAMNDBUANVY62.0956-136.3100281WYJOKPJUOJR23.375939.3051282FEDJKYPYJCU-16.2031-89.5905283CTSPDTDSCDQYEO-43.2034-50.5802284TBECPCSQM77.6436147.2048285QUHUGR-80.6365-32.4872286XTHJARFSK-39.2123112.8657287NDJCDAM-27.055516.7818288ATEHXXXDTF8.2563103.5486289CVQVLTAXYICCWH-77.2925-63.6703290PWIDSORIFF87.595481.9347291SYEVSK5.938563.1294292WPGIMWXOCCH-10.066988.6725293QAOGYDCP-8.1558-158.5513294TUIIUULLRVXN-71.4449118.8779295NQTTVPEDW6.1884-3.3897296ACKHXM-77.1653-101.4584297GLDBOXUDLMCXXE-87.1907118.0980298DLYUCLFK70.6083-97.5098299KBUXU-60.8670-45.6089300XSWAHAB-10.712794.0969301RPKUC59.7206-7.8405302AVPPKRGLQJ-82.4906117.8594303TPUDTA-86.2733-49.1000304OABGUA-64.376097.9577305NKYYQLIA43.9449104.2903306KHKCQP82.100988.8980307GIUAGPIFLXHJY47.2745-16.2446308TMLVTLO60.6653117.4888309URVOQCDMDTANT13.2406116.8189310BKPJTKLWXVBT39.7123123.3667311UVQFOGMR-65.5385-96.2119312YUYPHHOCYK-13.0882172.5334313LUCGSOA41.461847.7882314EOLSAYTE-77.383172.6595315LUIHOGQD47.4598154.8351316GGKMMB49.6196160.0705317BMTYIBFAPBNA-62.7082164.3532318QFDXDLLGS13.3263-21.1868319DQNGKBFLWDF-16.0635-17.6291320UCTJHM-75.965914.5302321OFFQT-74.896725.4223322FBPWSVBXXOIFD-32.3430-39.2522323XIPPO-52.142748.7310324OWYXMCARGRWS8.1340139.7066325TIXDNBRI-82.9576-118.4666326BHPKEOVMPTWO-68.197661.8090327JXMILR3.9999-140.2242328FKPMQUVYASBVMO-48.5722-49.7771329PKXXACTRGKGPB65.3047-120.5032330COAWA56.7450-120.6921331XRLDKCEMQQ-32.8280136.4271332PDRVHCEUIFBXHC38.6537178.0169333VYMKBPM-47.9275-27.3563334DRBBETDKADCN32.5320-134.5545335SINEOYR-5.0447-13.6175336CHJLDI3.3804179.2311337QVSWMN17.8453-64.8579338SDNOVQBNPNF19.78688.0832339SRNMBLGUQMN86.3780-101.6139340AIIFJQBFRNCW76.7206-160.1415341MNLIKDOPVJO-47.7614-135.6268342PDYEGEPSJNKM75.8811-79.1724343ODBCPPJTG26.0686125.2554344FSFUHXIE-3.3606-126.0407345AVFFROSSMWNF-82.2719-81.6694346ODNQLLOEKML-79.3333114.0982347DMYCCOUNNBQ-39.6001-38.8480348OCDJWJWYYYVNU-26.2713-42.9334349HPTQSTILGBQRPO2.1887-55.8669350MTTKQMXOJRCXPW-63.2441-130.8061351UNIFUR74.6791151.0114352BXFICUHYQY68.0709-89.7956353SQWPIWLB67.9149-45.9554354BOLFFFRVMHKN53.8019-73.5037355EMNXOPKDKKS71.8169-12.6528356UQPPIBLGDXJ-77.48451.7203357DWNNMI-33.6196-82.2062358IMYPAFIWJNQSI34.8262-167.2128359IBJMFOIIFHV-7.1044-24.5735360NWSXUCGUWK85.094760.2499361EQFVRLRJ-32.761764.3780362ORCBQGHQBWASB-79.930255.4819363AQACRHBANV69.2832-110.2855364YQTDXQXILG23.0766-141.8603365SAIWAFBTFV79.2572-40.7389366QMTQMVWEPGMI45.617977.2050367BCBBJSJGNDTMFO-14.6896-97.1339368UMICBNUQ33.0114137.8097369AVMCRXTUTJIABU39.3502-138.9618370RLKCIQCTOL-36.230787.9746371AIBQDU-82.7752-49.6378372UPIAJECUR89.3321-38.7843373RQMKIAU32.6954136.1994374UYRHVS-5.089482.5779375PXJNIFMTQRIU-88.6799159.3010376NYKKSXV67.8485134.5896377GWHDXGHKQUIIRH-15.7403-69.3257378XQNVGGQJ-74.6012-178.1558379QPBEAUCE-3.511127.6302380KRCPPQKPOMNAHX33.2222102.5250381GGSGI-68.1864-10.7161382RGLKPGJEIMWT39.756841.3907383SBVCVPVCPYXLGC70.457426.8621384PTTCPISYQMOW68.1674-160.7038385MEYJBAFYNSLYJO72.9838-37.9591386NTUXWWBWKFHI11.3231-55.1855387SGLSWCDOLKY34.8761170.8919388XABDVK-46.1291-125.7561389HSUBAAAR32.7699118.9323390TKEYPYBJBD-0.650876.7197391LYRSPMIRHWGPQ38.3301-122.2209392TQWFQGGCL44.3170-128.9998393NWXRCMFKDUPCE27.0462-73.8087394BVNXHFOXWVJRR-65.087056.8567395NMSFKD-31.3353-128.4506396AFTAMHVYO89.5341-104.5595397AYEUAIMVMT61.647063.5877398SUYCRFRTA-8.1786-81.3784399GSXRHXUOKKMTM-20.687556.7574400SQSDNFPQG-27.3010-25.0496401TSYJRWDSGWEIV67.3357134.3023402OLRAIAANCST61.6649-50.9040403TCEWXWASKBK-24.8875148.7179404DSLSDHBCSOGWFE-62.2915-113.4803405RXKXITG36.3411-119.0487406XXUCVC-55.1314-164.1974407SCCQV23.9139-171.2674408ATDOETQYHYEW-62.671078.0475409UCCWSMULDT52.1928161.0239410YQRGGKWLV-20.8039-151.2356411LEHEGBNSUCIYSR42.935637.8060412FRUAIJ23.7816177.7678413QESGMHYQAYIOH-28.0878-69.2135414YBCAPXHG-82.5731115.8386415IIVRVOTVYR-85.7754153.2268416TAEVNLKLEQF-26.6861-12.6755417AWIPUINISIQLIO-24.9813-88.3491418OAXHXEJIDJRXU-27.148350.2319419RUSOJAXYHSCAFA-44.34673.7404420YPJIGYVGMRE13.0790133.6171421MNSXGPI-64.5176-11.1853422YUQPFRWGVTMCW54.4594170.0905423HCUYYRE-56.500691.1950424YFDPCF-27.712361.2915425OFDGOPJKI-76.6062-153.5743426QGFSVYHGGGMMJ5.9965154.7036427NWPYJJLTR32.7824-170.4545428LSHCRWHFLHMRH72.9470-14.1112429BDJQWIAB-80.0578-23.5248430XFJPJN0.8481101.8896431LNFOB79.6218-45.6410432YJTTMMHFBFCQOS88.470756.0798433ULJMPVFXKTY-72.665656.2905434DAEHEMWKNVFTJJ-80.1672-132.0088435CGMXWNU75.6844-28.9532436PHRXTCN6.3259-91.1011437UYMKTOVJEY-32.6938171.7134438DDABFF-0.7022-47.5699439IXJGTXGAVCOPJ19.295510.9959440CRICHXPLSC50.3754-138.6982441NBGPCKMURBRRQ-33.4406-46.9782442ICKXDVJWAGLNNC82.9570-143.9941443PGVJHEQ-56.1173156.8505444VDVFBH83.655835.9439445FVYGBTYOH18.684350.0926446RSMPWMQ86.101836.2419447JRVQIRWC10.1743-96.4957448DABKFXG-75.8060-159.1209449MUJJH57.5136-117.6483450VHAHUNUXRH66.9104-91.6057451RLJOPPHGXMQNTR46.8335120.3952452OOKRULDKO-15.8299-20.3755453LGOLOBCOK-54.8518-144.6638454QNUTEKUBAUXI68.9492151.3317455UARVNUJNPH41.5059125.8559456HNDYPH28.6755-103.8426457MNDKIVPNHLICOM-21.5243150.4627458ISQARQQMFON74.035716.5648459WBYLIKUBXE25.1388-80.5668460QOGFEHQOULQHIB53.61277.4119461XXFFVEG-32.174789.3385462VHPEUSPJBESVAD85.2021-16.2409463XWVKSNPERSR29.106567.3694464YLKBJYNIHX6.861964.9469465HARIKOQKPOPVCX78.87863.0682466MDRVDGOPKTONG21.240138.8441467LSWITTVS-56.7809-88.1282468HXFBTPHLJFIGNW22.9403-147.9911469STUJXHGKSXT52.0671121.2602470JBEFHRF80.334018.6928471AXSMGAABI-88.9297-59.3362472PDTLNUTLDWLO-70.5541-25.6881473TKJSQTTGQKVXC-63.4915-18.2373474BASRXUCYDRL4.048267.3243475VDBHX-37.2920-133.2225476HIXSDJE35.050257.3513477DWIMJNW-27.567118.5053478QUHYLTRSHGPNEG86.740928.2740479VXULECT-11.414637.5776480KEHLOKMB-66.6714148.5101481KYSCVGW25.2755117.0725482FURRNBT-30.435662.3807483EYDOTX64.3726-44.5388484ICDJRTQFAB20.7993-66.5017485PROEFUTIAVY-74.0507-55.9864486JGCKUUJKCRVI-15.4024-5.9132487UYDDL71.789439.4402488DABCGJLKT-61.2962-32.2423489DWNYCCV-77.5050179.0261490TXXRETR79.8322163.6638491CMXTCHTLFN21.3618-47.0682492QVJEN52.5649135.1397493YVDTATWWMVBFHM-11.6057-34.4998494OJDHPNMOABWY-59.3118-29.3210495GUHTFJW-7.6929130.9573496PQFUQNDBBK28.2044-131.6662497SBVUMK-31.6238-39.3929498GDMGTFONQOG84.266829.4449499AUUSBRTMCED21.7859-16.1096500BYOPYI43.5326-80.9426501FCAVACCCB74.8781-13.2816502DRITCUROUXMF34.7956-149.9679503ICSANELUQ28.186541.5585504RSBILJYU18.274662.5493505JMOQJ13.1243107.7177506FVNGXB55.4751-105.0956507UHDCGIUCYBUQF89.7926-0.4545508PNAARMSALLFHDP36.9354-42.6733509UVQJWBXLVRL-54.4953-32.7766510LGYESIOXNVQ-69.877538.4369511MRLESCWO-61.5591166.8462512NAVLSSSCXRUHS-17.237981.1431513VSYDYK6.9575-76.0026514MXCMXK10.234211.5548515IHFJCAKIYK31.3227118.4329516DCHIFJRJS-52.6312-122.5863517LYRMVFOLBIA-37.1954-114.7082518ACDQAPY9.2035-131.8163519AFRCQFKBSKYO-3.3988-162.5873520RAQURS-70.810521.9000521MYDAAQAKSCXEIM-33.0804-91.1329522XQQCWSXRJ-31.4282-67.9762523PWQQTEOWU69.3235-137.3265524JHJUDVFLUJEQW4.9973-12.2829525SDHUTVTSHFGJJD26.5885-35.1210526QRDBIBPTH-63.7558-18.0467527HTIBHSGCIWAN38.5891-169.1343528IMDDOE-76.6144-79.7200529QATKRXPMT-70.8059-74.7293530MUMSWTF-61.7513118.6282531BXIWQFQ0.7631-87.4860532SLHYTDSIIANV-64.5091124.8910533GOPJPQORKY51.9442121.2764534BYGRBPSMP83.223360.1235535OVTMEFKLVJBAK-53.5764114.2867536JQAMBYRWTCQ15.275313.1884537HJCBUGX47.533735.5272538HVDLFIRPWGAPJ-28.550472.0539539KIVGHHPFH6.221453.0235540QGJJXVVESYXB37.4125139.5810541SPBKJUYTSF32.9269-64.0382542ESNNQBMVINSCV86.2845-74.6119543UYCUTRYRYRWS82.887172.7471544DUGRHDECLKX-85.1411119.8952545NTCWAN47.6122107.3429546IFBBHAWMLJF-87.324647.3477547VLQCMSMEPR6.7421-4.0806548SVAHCBOVIGL-49.9569-134.1398549OJAJLY85.3563-94.3043550VUKKJGJIIF8.277894.5008551ORCGHYCYEMQHQ-87.3665145.0764552CTFQGIYVTTORN-11.4830117.3993553RYUDFDLFRUNTAX-46.668179.1143554DERRCPW17.223840.7898555QVMIATRPAHCDPU69.87300.0661556QWOMTYXNQPFX-60.4191-45.4828557TMAHQIBXYXP-15.0293-22.9419558DSMSKGFOYG-43.1859-126.0340559HXYJDHKFRXKDB33.9302127.2321560DKIMALCP42.0632-72.6222561NEPHNXFLHIHJUR-82.660659.9040562LAVHNDDKRCMIVG52.2879123.8317563JNQRFFM-51.1323-69.4717564NCYPJR44.513051.9192565BPCOOSNMGDHY-64.75248.3019566FYVLIRX-1.8603-58.2796567FPRJCVXXMGM76.9062-21.5472568RHQTTIHFI11.2444-5.4521569RXJFKLVVYOVDD-84.7213-142.2541570FCTFGUN63.193272.4983571YASXFAITE-61.348199.5484572EAIVNYXN85.2739-69.1767573MLUWMDIHAXMLHU48.3528-39.6911574VXYRADBGY51.5860138.5232575FPHQKHVT82.602826.8122576EOUIMFBYPS19.378616.4635577BUQXUAHK-83.3937-70.7706578JNXSOEUVX39.9363-17.9553579DFGUMAF75.20351.5132580TJRNMCV-4.1123-120.3717581MYVBBP57.2082136.9110582BKYUMXJOCJSVYN51.4129-94.7545583UWPGWMUYWOLQE23.214530.5067584QRRDNQEICL-3.8886-175.2785585SFDALAIJ-67.0714131.8571586NLYRX-42.512890.7644587RSGSGW79.7221157.4617588XYAXUQXDXFI-73.404027.1842589SCXTK-75.5515-171.7650590FXAAOWJIHIYUK-36.5904130.5926591RTVUQSTKWRJHN63.734711.8747592FPMBAVNACIKO-45.2477-104.3066593EGDPSAMCUDK73.687045.4865594NRHIWEXKONYM63.5355-172.9008595JGGFPUDOMEMSXT41.7916-60.6336596CGYXXVLFWWTVLW76.4557-171.1500597FBVDJEE71.2321-145.1460598WEWBMRKNHQ26.1609-81.7097599WWKXSFUS-19.9911-56.0742600FRDESOLDUW-35.799945.1175601LFRAVHHAHNEW-37.5210-44.5096602YURXMJOCRID48.778341.4725603ETFGJL-88.6967-91.6074604LYXXAKK-89.6332-45.9106605GJCHQH-85.8563-25.7846606NBGIEQJEYQB34.0270-14.8611607SUDPQOCWFH-62.075751.5135608WHSWWHPNWPK-29.2638-13.4813609KKEMBVWSX-72.1305114.3402610UVRUM80.3609165.6804611HDWLGQRTS-47.1214-82.9076612TBUNNXBY8.3244-65.7565613RPXKOTEYL43.1546152.1158614RPSBHBMUD86.429591.8334615EIFJIE5.2268169.6513616GPIJSWVWICK1.0089-102.2701617VXOEOHILI-74.52153.9527618ORTYWSLPLDTNXQ-23.9500122.0707619ESBQSRDR-72.2945-63.3818620MQDUAUKAJOHXEQ27.2083-52.3099621KCQMGXSUKTY47.6988-76.7565622AYCPAHCGARO-75.602644.5895623MRHYMAI55.232391.7130624MNFDWUYLDO-17.146638.7677625JWQYYWBYS21.564783.1397626JKTJXEUGVL-52.1410-146.3876627NMHLGM19.8690104.0938628BDDSRX0.1059102.6397629TJJYFQCH50.278975.4601630TVIDK37.3884130.9415631KVSDXYHOQICECS-56.5987-65.2528632YOSKHGRGJMM70.610750.4963633QAECNVHMD79.4596-135.9383634APPGFVF-80.4721-22.0608635XQHAF73.455411.1845636QHPMXBTPRJLMFO-37.5972-143.3662637VETJOBB60.1035-75.6783638TWKMRKDEHMXVJ26.4840-130.9439639CYVDWN-63.9541-127.3187640LUFCV54.7328-50.1607641JEAIGXPXJWQKEM65.9847-163.6111642YAHPGRLOQV57.3219-73.6909643PVRPEPXA33.257754.0901644XWEKDQWOR63.0980150.9451645ALNWPWSGLMKHJV-62.3134-33.3020646CFEQPXIPIU0.109481.3633647MAUQI-50.8284-118.2903648JJWQJCT-53.7566-128.7824649DFJUSRPKMT1.1553172.9431650NECPETBLKMGH-70.0998169.1861651OXGRQOSWIQKXLV77.6722-45.4416652PNOONNDGMPMKXL-66.35336.0498653VJINQ-37.790163.9661654JBJGHBY-29.1556-48.0323655PYATQECD-20.6366-81.6205656YYFBE80.885276.0985657OYRMVLTOYVYV-59.6991121.1843658FKOTIEHDPSF44.6691-134.6452659HEWIMQFILESWFH26.286711.4728660HXQQSKSOORPNUM85.0602101.6383661DSFKU28.8802-2.0057662LQBXHJ46.377714.5735663EFESQ26.7830-4.9562664MQLEQBVMAFKMMC19.94883.7896665KYEREJKOKPNWTY25.8124-145.3019666IKGGXFCAKHL-4.2381-5.5484667VJOKMXHOTTRS-32.171029.0416668WQRXYA-83.075134.4284669JVNTXHBPVSJBQR-47.941222.8661670BYJEEKDRXRF-54.8614-150.2710671EWKGGOMCOCJN-46.6066125.3839672PUTHHHIBHMONM-15.0941-39.3681673RDTGTIOBKQ81.8776-97.0657674TXNYLBXK33.3523-140.1618675DLDNCY-88.6222-11.4658676JDSDKTFOYH-50.9858164.7432677DKKMPAG40.9984-43.4571678NRDYUFORFLQOCJ-54.8783-131.9155679AJTBGJRYMFFJO-35.0767171.6876680UJRLRQCTLSTG30.4544-78.8114681LDOFX-70.7720-149.2494682SMMUQ36.76570.6448683VCETEWAABEKFF-22.618794.2674684SPFMXXIUK61.3678137.1083685LKLNXHXCOFFUSN-58.8161-175.0677686RCUUVERSL-66.6636-54.5133687QDBFFKU-37.5165-52.6193688BXPKERYIIJXC-84.6388-175.2872689KKDQKIX-39.276528.7623690XUBOTTPEHAJ-60.6320168.4167691VANRL-57.5834119.4869692YTWNHDOUSGOMI80.708089.0751693ACVBSSANWTJARF-64.7035-127.7215694AKYUNYALJVIMW69.1663-73.3902695MQLBK89.014744.0656696XIOGRHFERPK12.0497121.0409697SXMSVKDPNP-4.962830.9991698MGHLYHJP-19.9078-102.8852699PCECDNX-80.3030-60.4588700GLBRIVHISDV-21.3882171.7106701EUMDXDEUQ-20.5573-36.4194702MUHPOPVWWAMIGB-15.983957.0768703DFGTJHTKP-15.4930-89.5993704VBWJFRODCGE48.1682-121.3931705YDUTCNJJIGWTQE-23.632050.2340706TFDUKYNIPIRU-80.1818-66.2950707QAALUCHQ50.4252-57.0462708TLIRMR77.6066-176.8943709SYAGSTRLAIUCQE-0.6449-147.7140710SBQGP-15.404624.1420711IDYRWLNPMG-86.4942-88.0230712FNJRUT-14.386787.1790713EWLTYCBIXY11.885131.8455714MWOAMUWJJMWP18.10960.7391715XAMVNPJFAX83.047795.1538716TBURHNXOGGH1.5036-48.4089717JYBLOO-73.6533-116.5583718QHTJNPIBLAAB26.3081160.7657719WUGYFLJCGKIWHR-23.9704-86.7238720CVYKES89.36278.8826721WEDLSSVXTT-60.1631-0.2276722XJLBMDP-4.5405145.7803723BXHXXMQ32.1559-79.7869724OFQDQV51.2184-20.5807725IHQBIOLSR53.365056.9376726PWCQJGRID48.474847.8429727VIAIXTB82.0143111.5860728NXYFQ57.745293.9738729DLIXPWJ-28.5225-47.3000730YNTLTR-67.8922-115.7650731OVTQAB-75.3571-56.2197732WOLEOM88.429641.1792733GGEGXJSS66.309213.5954734AKDCDOI-66.5284-25.9257735BNKXGIWPPSHCQ0.8422164.7036736FIKYBNDPDTXHUI30.2190-21.4859737IUGXDD41.977457.3910738GRANIVKLASCR57.4813112.0444739EAHWDTLPFR-11.4861-145.0439740YSJJOC44.5022-107.1914741PTUGEKKM47.9846168.8604742QGTAJT5.5405-58.6391743PPFUOC-15.2627108.0769744HCVMSS-67.4165-84.4914745WTWWGJGRAY-79.604922.1001746KNNWFASFGW34.9378174.7201747HPXNGRNBI60.1974-50.4666748OBVRMHPYEJAAW6.419891.3040749NOPYHHIH12.7421-80.3249750FGOXVSKST63.2173-60.2852751ODONNMKR-41.781828.8479752BDWBVIS-18.002774.9502753HNJBX14.0269121.4129754OLQMAROCFY70.5620-167.6862755UJTJCBSTOJQJ-36.2014-37.2985756GDOLBDX-46.8114118.7468757YMGPSTBXAIJQSN-67.1038-134.1602758SFBTXAFTVUAMMS-15.8881135.1406759SXJWPLBUIHMV21.583374.0838760LMVVU14.9631-60.9384761IBRFLPRNNC-63.7584-105.2327762DECSJD65.2094112.9166763FKHWNVXBURU-45.8042105.8365764CFTVGAX25.5595-71.6160765TYVXQEHXIEP75.111834.8522766IAGOLXMTFYP-12.037815.7019767IDQPUDUV-87.1143-27.5653768LEGGHU-22.3424-104.5171769IVKRGH-19.133950.5080770BQBUVP-38.8303155.4223771AIIDM-30.2248131.8513772CSXMXNEIU-16.2034-165.0067773JBSRWF-52.1820-100.2963774FLCIKBBBMTUEX-59.8823-122.2897775CCQSJBH21.6745-129.2202776VYJNE45.8559-39.0055777YNCRMHENC-13.5738-44.0194778PGARXRATKSJX14.5727160.8170779BUPGNDSOYE-31.0638110.2912780BKCVAO74.1956-72.4745781JQWCJX-46.1764-107.8514782GMUNSNI-17.800252.5576783QVWJW-89.1320125.6643784YYQUJDQNPLKUI-2.897895.2884785TPDXFJEGTXEI-43.1551-122.0119786GNAVMAIFVMYSA5.8065-88.7168787FGAQAOMW32.5340-123.1542788WUGVVXWFGGJC-57.4792-74.0001789TOLUBXOIO-37.655624.0338790CBXWACMQPGHPW65.7419-179.1618791RPHWQNTSS-44.6283-112.5348792QDKWUFXKNMHV-11.3712-167.7432793JJJEO56.9581-111.8706794QSTRF-69.371918.8343795RSSUSPMUGJCJPM27.0866-87.4348796XIRWLDKAYXRFUQ-30.715036.9688797VWBVLSPFXOKWUC-26.4527167.8779798EYBFQHMC48.81920.9346799GYMBK82.8403-25.8441800WJFTKRBWLNQK30.8461-107.5462801LDNTEHH-67.3629-116.8494802UOLOQWV57.308675.2513803HEBKUQUAJYUDEJ45.668515.7636804SJPKOUER42.8825126.3492805AYVPWUJRAX41.3208-103.6605806RGNCG79.817935.2336807RCKYJEND-2.6221-152.0607808TDIDENGVUKD64.605347.1696809PMVMHEDJCQDOV-4.4023104.0214810MQAEMAQ-32.579782.2174811FVWGAHJDV-85.396150.6467812UMKDEEMY-87.9918-87.8602813PTGKJB25.089536.8434814LPQTXTYPJHU63.416882.1809815XOIPG-75.1509134.2655816JVPDTE-85.8185-144.6504817VQNWTWMCB57.8004101.0315818WFFOMSTT29.8565175.3477819HKFSBQBU54.915354.6660820LPYQVA-60.087840.7419821RTYHMPTRV36.4661159.1388822DQYAVL-74.650396.1188823ANDVGTCHJAFBL-6.5104136.3358824CEDKI-0.3059152.5152825BRUQFECIHKROR11.459361.4664826AMJTCXE0.43416.3860827WIDMNOCB85.1628-133.8424828AJHACFDTWAJCVS-54.7478137.0399829NSWBC-27.3544104.5584830JURBJRN7.541863.3010831BDLYUVFNAN8.5589-43.1835832XEQTT-57.5203133.5299833GEMRARWAFLHL-58.94144.3820834EXJKGYILBHJM2.8292-175.0710835TNJOH-88.8799155.0444836EXJSGGHI-28.985314.9293837PQMYJW-82.1837-175.7398838RKHUGEKVQCUD23.5912-143.8292839BMKRSYLL-69.798829.9519840UFBDPAYL-15.0395106.4505841UBMTOHKILSPVB49.8221-61.7717842ADVNKGUBYXFOLS-87.0654-2.9077843GPIEBNUXAPS-47.9546-4.4285844BCSMBFYM59.0878-56.9627845HMOWKFRQM32.6645-29.7946846UQNLMNAYM35.590767.6288847MKAMVSAEADT87.894053.2630848APWVF77.5401-178.9178849VJLFJNUPTMYWO-70.4808177.8360850KAWVLLPI24.630716.1311851EJESWTCNHMXVLK74.2990148.8379852SHADWQU-16.8037142.4341853BYMINWAWCNRYDR64.174194.3346854YKYVBUTBUL75.9154-110.4172855BTGYDILARMYM-46.8226-63.7963856DVEMYYOQ62.9664-45.4970857KVIKKOHOMUBIY-15.92101.5676858XWFIYMTABH-23.057117.4379859IJTDNV-27.674780.0226860RFXQP-71.0668107.6654861KMEIYTVPPHLWWB-18.8464-50.0969862MOEQIDFERQT-37.645822.9219863OHJVIEWFQQ-25.5296-170.5261864KTUPPPEE27.40287.3977865LPTCF-29.306875.7571866JBMDKWT83.5901122.9969867OXAEPION16.1473-47.2370868RBVWSLLWMFCO13.1941-91.5921869LWOKLS13.7773-66.4244870UHLQOFIERGQNDJ41.1096-105.1152871BGRCF7.2076-31.3992872DRSXYRSQGUB-86.0415100.8270873URBWCUBGYKES-48.3805-114.2329874EQMXKW-55.730892.8916875BFLXIRKBOGFYP44.6458-2.6378876DIYUW-62.6690148.6458877LJEUGI-33.718276.8302878QOINBVGMYRSRLC78.479673.1298879WYFYJETIWUT39.55699.8178880VQELVJYMDY81.6611-103.7083881OENIMGYIKU-14.2467-34.8320882VYHNLOULPLKTDX-79.9852-140.8160883JAFPABNTDPHIF47.0334-9.4887884OKCINRYRH19.3022104.1158885JPOKUUKP-33.2742-137.0558886EBXPQOH52.5160-18.5276887NURSAKQDCSLNVW-73.1475-39.4559888VNPVHCMDLTVD-3.3119-172.9747889QSAMWERVII-71.865821.9367890BCPFQMOHTUOW39.250561.0529891USIJXNBWFPINE-20.881649.8295892IPDNXTHRVEBAPL53.2419165.3756893IXFJQXGWAP15.4988-3.0025894GLJHIQMWWAEL-69.855353.3111895PGPYIAEEKWW-65.77398.7344896VHNPRAW-82.368662.8237897MBWAEV-45.9663160.9374898XFVRVHK-84.0965-151.7668899JUWBHDUDP-20.3988-15.4407900SIMXY-24.8032175.1831901DEEDCB68.914430.3580902ADNXHPEO14.1078-54.7537903DMYFCE49.6509-129.3666904NBLXJR-68.6565-149.2549905WMLMPPW-40.1873-139.3865906RLIWSOHSAY23.30386.7281907GCNJHTWW78.56809.3821908LVPGEMWGJBRD-18.572962.5896909CLQYVGIFOWXLEB88.7746-38.4210910NCDJALQUIFDE25.8051-153.8731911DPOBGULIUQBH11.9861-64.0045912JNCWESMERPINFL-23.2014106.3473913KMCAFMLVA-76.0293-41.5900914FHVAORXL34.6372108.3043915TUNDLNQMUAVAP-39.4098-31.0699916UQVBWNPVADKTYE38.2733111.3363917RGRQSLWRQKLWJB29.9266121.2898918PDWHXICQGJT74.9346-169.8027919PLXCOBOBGTW6.8170-178.2459920YUMOT-20.355231.9562921GIULJVUDPGBD-79.511271.0887922TTUHGMR5.585396.8760923MFTTELR-82.0360-133.5069924XPVLGHDAHLO-35.0962-11.1267925FIEDDQBGAA-40.7506-125.5725926YQVDLJUFDL-5.7753-17.8973927UPRXBVLRHI88.020186.9398928FVDGCMGEIQE-69.1984-41.2553929VQMWX-45.5420-164.5805930FHPMOWLE46.5652100.1297931LAWUMAOKFFYQJB-0.1747-1.2130932WBNNXLTE22.4524-120.3597933EDHOAG53.153746.9435934CREUA2.3741-48.6816935CFUMBPEUE74.8919-84.6564936JANUDIWKLALNDP43.1310178.9606937BMISGSQRGFRH46.9031-116.7754938ABHILR-27.5767-170.4203939QSKCWO-35.5065-177.0435940CXOPKFRWWMHQHK76.9621177.5790941UECHO26.887994.2170942NYMPXKI57.7582-18.7210943YCSYDDUVVLQ-68.789010.4156944PGXPADQWHHKAR-67.3828-39.6432945BIDWVSEKI-64.0587-9.9393946MIWEDHRHVJ46.9143113.8325947KILNQ70.2064-173.7555948TKBWHSRJH-22.592820.1548949VONGLKKXDXWLGI-25.9524149.0518950JKUXSMTWNN-45.2215-131.9146951MTBXF19.2383-96.5343952UXJGYOJJHN1.8343-162.0283953IXOKNYGQIH-41.4137-122.1743954TRBRM66.982857.2551955JQQFBVKVCK-35.9063-9.1427956MFUYQ11.563175.3265957KLMPJDJXFEHBU14.9778-39.4230958KBRWEXFY-40.46336.3219959FDTHGS32.5972-62.9957960QRQSOVVBTJ-32.9498-1.4715961KUGQEBTECIRISA80.0886152.8015962DJPJBQ-88.7429-37.2034963MQMOAVKQ63.2190167.8290964BBHJGHXLWA44.9165-159.7434965QADDQCEUHCXYC11.9889-134.0306966WNMNIVOEVKT69.0629-16.7507967UBOWJ85.9535-83.3367968KXTNTKPWKLV-5.9974-33.9163969RKYSJWVEGYVLAI-35.5113161.2548970BLEWENICCC-70.821664.5369971JKRWJBXIHSPHQI81.0062-163.1205972LEBVT-51.724237.2603973FBOFJECOQEYXK80.620524.1577974DMLFAYBFNER42.2216-150.1687975MYGLCYYDNBCYF-2.2168-67.4012976UFKHDL11.382977.8249977UKBFBUKYTUDS-14.6391-37.1353978MPQASBUYENB55.9091-44.2188979MGGLF46.1299-27.3624980KAVBLUUDVBSR43.244039.5997981TWRECHC22.2523-134.4939982QBWVKWQVHLOIM1.448160.6182983VFETWAQIU38.0790-36.1769984MWHHGDBAYTVNL-25.1182107.3719985INVVLWFRUTXJXT79.1231177.6428986AWLBYGKBUQI-21.3494-141.6607987JYKAEHMM-53.2190-155.1498988JSPBDYAJG89.4652105.0760989HSOSLRY-10.332256.4941990PNXFLCQHPK48.356860.2180991YAFORYKY-82.5638139.8386992OEOVMXCX7.9126172.6565993SFELRXQRD-37.594219.7133994MBKMRP-72.235273.8271995LMHLYUHKOIJD-37.592779.5131996VYFURGJ-16.1272104.0738997MBEJO-71.1126123.1145998NRSBSUU-32.5659-5.4214999XRMGH-53.6555-128.6957 \ No newline at end of file diff --git a/src/main/java/cluster_manager/xml_logic/Randomizer.java b/src/main/java/cluster_manager/xml_logic/Randomizer.java index 5d47ed4..20b04f4 100644 --- a/src/main/java/cluster_manager/xml_logic/Randomizer.java +++ b/src/main/java/cluster_manager/xml_logic/Randomizer.java @@ -24,11 +24,11 @@ static String getRandomName() { static String getRandomLatitude() { double random = ThreadLocalRandom.current().nextDouble(-90, 90); - return String.format("%s", random); + return String.format("%.4f", random); } static String getRandomLongitude() { double random = ThreadLocalRandom.current().nextDouble(-180, 180); - return String.format("%s", random); + return String.format("%.4f", random); } } From 864ec19dc90ba355b393338cae064dd84cc04d89 Mon Sep 17 00:00:00 2001 From: "KYIV\\Vitalii_Bondariev" Date: Fri, 8 Jun 2018 16:11:43 +0300 Subject: [PATCH 14/15] Managed try/catch blocks. --- randomized_locations.xml | 2 +- .../java/cluster_manager/ClusterManager.java | 17 ++--- .../xml_logic/LocationGenerator.java | 65 +++++++++-------- .../xml_logic/LocationParser.java | 73 ++++++++++--------- .../cluster_manager/ClusterManagerTest.java | 2 +- 5 files changed, 84 insertions(+), 75 deletions(-) diff --git a/randomized_locations.xml b/randomized_locations.xml index cb134c4..0e1fbe4 100644 --- a/randomized_locations.xml +++ b/randomized_locations.xml @@ -1 +1 @@ -0DCQEVPTEACOK62.9969137.67941LDXXT-3.238351.84242VEFAWRR-50.713483.52383CLKVYRKBS32.813581.77734KXUFRSG25.7582-49.97025ECTGLV66.8055-35.15816HRXBECTWA-1.7916-45.29157PFDED51.3446-5.39338OYWHUSOXVD-66.3050119.84649NKDTFN27.414834.561210SBXTYACFRYXLSQ14.9352-167.972811NKHTK-64.6492-50.732112COYQKQOQ-50.5197-96.996013LNMGLMY-29.6852-0.924114QIPDI54.5873143.183715ULNUUFTUTBCYW43.3480-32.490016RDQUEQLMSEKM-78.8073-13.852017FIUWVB5.5838-115.366418XSBOX-87.3330-84.773219DBNEDYOFQYJ62.0937-169.773820DIFKJVJQ-26.8529-164.465521JLJVU52.5583132.145222GUJMSBNL-77.3775-28.094823VTJJSMFS13.9440-0.794024MBMVBOY69.7253-23.182125VNKIBV65.701320.306426KMOBEJKKIS-84.462895.391427QXXGKEENGECBK69.0252-153.480128EPYTPXWJDD29.5887154.355729DLEVXOCEJFV10.2003-113.978630XEXCISO20.172318.336931HLYWUWQEEPTMA-12.7299-55.618632SXQDCGHKR10.9348-133.887733OQUUC12.300493.473534QTDLQJWIHMRIU87.8704-65.352435ILVKXD83.6902-50.679536ROMXGWV37.6710174.751437ARXBUIY-2.2050-150.126738SHGEWF-61.1704-116.686939XWVHKXTPLUO66.0654-36.236340SAPVMNFVAMV-20.3701134.130841GMOQCYXOCNVPCE-87.892530.724742SAHNHRTHBB-14.8685-116.291243HWLDVDAOHXCUN-44.1991-81.516044GPAVRIKLJ69.5387-176.642345KIQFXO72.9400171.939246BQABWCQSCR-9.7775142.867447GILIKTJRYEVLYG82.3206-150.518948CNISGUAN-25.5299-98.533049EAMHAXGOMXU-23.1809-154.475250KNPHTRAXQYPLIE42.0069-36.481551BMWWH64.9087-146.876752CFJIHJBLUYUGRW16.0037163.361653DQLIHYCPQVXSR43.292230.321254KFNEAXAMJJQNF-68.8441-60.388155RKNGHLYITADV-12.2054103.963856QHOSFXGVPETRM-79.0786-73.598657PBODDIBTN-70.7236-55.388658VLSQCHBVR-1.0586-117.325359DIKQVXEGAKSYDC-86.6907-124.024160XLOAQGGK64.0334-0.872761JFSRBJ49.864753.037162SHIFJFMIQDMYJ68.612136.175463KGUHOGS-81.2114-42.412364KXMHECSVCBJGHB7.6370168.417665AJUQVOSTXQM-15.3683140.222566XTUYDXUXTF-86.1356-179.483567XPEEX-42.5242-55.052668SNLFHARCLIFKJ-3.827516.498069PXEHIIP-16.2158-24.207570UALLHHQWV0.4181-151.295771TDTIH-48.2988121.631872GKLQWSAUEJQWPM59.69174.199873AMWFACRBNOUYM-31.79999.779274OTYSARQRN65.3776-148.438375CAEPUDJUKD12.703473.762476WEUNSDNQ54.2583-55.538877ROIYLTRBMEISJ41.8106-129.185178QEJED87.6039-72.665979PTLPVYKYPXFEFP23.7025-22.326880MONSICRLKPIE-51.4516-89.464381QIPGKXGCOYBQH-53.4368-72.262182DADTFMEKM5.1891-177.566783EMTMQEK49.500551.196084DIBKVDRIJRA-30.9753-49.653885IGITQMFVHT24.634769.091586JODYRF85.3102105.457887TUYYTTVYRATCQU66.255396.951088IFKBL-38.9856-16.873989IXCBANNVMQ76.3725-58.059590JPUBFUB-40.4155-126.469391QBYFFVD-12.9889-33.641092LULXWCSLUEFP-19.0024130.294293GJRKVBF-0.4716167.466294HMCGLTXBD27.6426100.196795MCRLQAGG36.8011-149.216496VIWWL2.5142-144.259597WTAPADWD33.0395-85.207898RHKTETJVL-6.67762.790999WWSSJK29.0090118.0531100XQWXEB-71.3645-82.1643101AEUSI-76.0061-172.4707102SDDUVT-64.9456-31.9297103OWUTDY-32.5163121.8318104EGISOUWFJ-9.7331-122.7954105GOYAARKUISWYCX-3.554365.3920106ILWIEWRGTLHWRP70.6051-5.0431107XGSVGQSH59.0916175.9362108HDDXNWF37.7475114.4387109EYRVQBMLSYHU-81.9522-175.6211110VIPEJJSPNBBEE-68.2661-122.8804111QVFKB-51.443131.2610112MKCPAQ64.6949-142.3354113OYDJCSMSXK38.6167149.0599114LORFHHPDDFAPQE24.8532-77.9503115VBROSYNLSH-2.6269-178.1088116UVAHWDXNDGWEOX71.9543155.4209117KTHBSNKQVPDH-54.8021-158.5646118PPOYYAGLCBYP-9.325288.1211119GTNUYATLEQJTMX35.3481-145.8143120GAROUMIQVFSY-16.247543.1559121VYSKOFKOJXSASU-50.2538-38.8943122GHUEIPDED11.391054.7246123IWAUKCMAEDMBM51.5097123.4579124FVHYCTRYEMF-43.473868.1757125XAFTVTELOEKLP-81.7720-103.7415126CIUTHLF-80.0628-154.2151127HAQKX1.8972167.8690128ANBLIGDLPORLP4.6584-23.4935129MMPIHKPJCGFO-24.104949.3921130LNAXYHUEYISPX24.584260.9908131WBLOCM43.2747116.1339132HATAUUWJWYD62.5376-57.2326133KJVQWRSXF64.8689150.1397134XFIGYE8.4347149.6074135DNBRSELOWA16.0660-126.3399136JQRLPXAMM-27.1219101.2421137DTEMMBX3.937840.0692138YMVXRYIG50.5005-166.9034139QNEFCHQFW45.830536.4946140GBTOU-40.6551-100.3759141EQLMIAMTIU-9.14120.7923142SPETE-23.1500-117.2242143XOBKDVATQYTBP-62.1136140.1315144TDGCCAHF-86.7980-162.6201145OUDMFWXRKTNO-39.7840161.9091146WDYVPCVIATSCG26.3874-58.6661147WVSBL17.9566136.3625148MDMHMTQK-70.5255162.6896149QYSBNPIRWW-14.6639-18.4499150JLMWGOO-7.5726-29.1473151LLTRDQIHUCUB-85.6432-44.2615152XDQKCFLNDK-44.3725110.0877153QFGWGKCSKUGE-40.2597168.1734154OFYTLDBINRDAE-50.7714140.4349155BVNEVYYCJJEX1.8771152.4915156STJRAL36.7150-64.7022157YMSILVXEKUXV-49.8099-81.8343158FUENL87.260250.6249159OJNEWQRJAMLQ-88.692143.7868160BMXXPBUVNWN59.677611.9117161BCFBSROU85.9085172.7301162NFCRRC-67.7125177.3945163DXEJWQMPDSWA-12.3230-126.6937164GDVSYNAFUTDFVL-87.3082-21.7605165KYDAMKJBA-74.510418.3791166XSVSTWYCSHMRK-80.0560-109.5379167KGAQHDH-58.6375-106.8307168YEDVNMCQGCE-57.509895.6945169CKYFTY-52.9048-157.9240170SGERLFG-64.0873-39.3057171SWOPM-5.1609-171.4355172WRIOOGWDXBMFPA-79.9631111.7652173NRSGHKOD44.5945175.8270174QMWOODXNRCL3.2387-13.8469175LLDAKR32.5017-162.1380176DQUBDVXCUT57.5808-82.7392177LHKVOT-24.9817-135.9373178KNEVTFLUOJHI80.5107-98.3270179GUPSQPPG86.7145-4.0588180KLCNDN-71.4828150.9387181VRAASI-69.5724-28.8234182YBYINXKSQS-12.4530-15.8407183KPDEGDSR83.1000-86.3024184UMBLNWCFYOY43.3904-29.5214185LTPHQJQRTDTL28.1667124.6887186FMKTJHOLFTGR81.6714-21.1792187KPTMUPGW-1.057873.3484188KFUWCNUNDDBF-71.8547-93.0649189AUYALBOYELEQ-17.3385-152.9781190IMNLRKMYSXVJV33.4779-126.4345191NVSSEQGBHQAC89.750136.4162192OYSJXTRXB-6.324894.3408193CEYALXBTAPWJUM-40.8541145.5839194THNBNXGVWOUN17.7698-72.2958195VUIVCJINRTG10.4290168.8475196BOCDKTD40.4031-161.2628197HWUXJDEO53.9588-120.8903198AAYAW-55.9739-6.5767199GDSYHGGCXFVJNS23.6333172.4687200RHFUAYMX-54.8148-155.9862201HALBXVLEMIIPV4.9918-138.7818202BUJNNQKMEWRS74.4998-85.8001203FKBQOENPIC-72.8940-59.0429204OTQNHPQMOD19.3203-146.1613205VDCPFFDA78.000282.2631206BBHISCSYP-36.8484-52.5867207LYSWVYHIMYRKSH-72.043489.4467208UVSCQYTY-25.1777-54.7749209CINFEGNYTQYJ-30.0735-51.6715210SOQJLJN-60.1486162.5655211OIOTAMF36.5499-89.3527212FORCLGGRIMGSM-35.3628138.8892213XYANLDOERUVN88.9941-27.6148214JYOGCVDIOKG60.832482.7300215GGPQBRLGAQDXT-85.9521126.7944216XSLYFMA41.7893114.1067217VMWVSYWJBN76.5538-82.4666218CHRCYIAHQFE77.7974-111.1711219RCTFBQ-9.5613-155.2993220KBCMXGL-65.963693.0324221HJHHVPEOS-20.1294120.3539222KMAHDTYWMYPQUV-43.8639-73.1748223WWRVAHFYWLXNNW53.2213116.2517224TPVQDLQHF68.7108131.8317225BTKTN-85.107723.9834226LPYVOQ44.9423-164.7717227LQQXJRLHXKFD7.0775164.9479228PKFUCA2.5083129.5688229CLGEPXQ-33.6401-85.5634230UCWVCVOAY-26.1545-39.0662231KFXQKHY-85.077065.0422232XKHCGRUMMCEY-79.8306-117.4988233AVOHPR-74.864213.9624234FQVABOBFKBYY-48.6773-152.7200235PNEUKQBWYUIXOI58.305772.9661236EBYQLWQCMIB28.2980-80.6437237MTBVRXFXOJGYC22.6459128.2361238WYNNUMAEJGQXO41.2053-3.2080239SNWBKO-53.4254-32.1235240XJGHNIG-51.9803-85.0954241VPAAPUEEM50.2313146.7907242YSUEGPH58.1231109.0597243MAPSYAHX-24.9921104.4363244XJEYFS80.98154.6675245WTEXIUW-3.8750-174.9449246RAQNAX-38.1394-45.2384247VDBSUE82.8133-57.9734248IUIXTO27.6030178.9451249SAJFPGFSCO68.310712.5363250FTSQE88.3183114.4303251ROFLNWY-59.2293-117.6052252MUEEYAVINVER53.3529161.7957253HBRKFKGJFHVUYO-79.478911.7695254BXWFXVJJXJTE-76.7824-153.2251255TUIAQTEXJ40.3360-94.5677256DFYVPBB-20.7511-55.8579257EEAXGRLMABX-81.6766-63.8791258TPOLQIPYAHWNF2.2586166.0359259VGLFH78.3432-49.6234260QALRTQGHXOG-7.2382147.2417261ODXUQVNT83.2368-109.5694262GLKEBHWGSWIR-67.4264-139.2297263EILPWMCAC-10.554078.6922264OBTRUA47.2450149.3556265TTJTEIYAOCWK-45.488418.0632266CIPWXBCHOO4.066592.4204267MHVSUQF-74.8390-106.9981268ELPDVYAWNT35.5929-143.4466269BLVKWFDEYDHP40.5582158.9989270KGWNUIPUARVJP-53.8774148.4866271XSALLYKNPCD-58.106295.0808272PNOUUW-2.4516-93.0867273TKOCKKYCAQQ-27.379813.4990274EHBCQSH62.635745.7126275CPDRWQXTN58.6331-3.7082276DQOYXBBIRBLMRD64.2580-178.4091277CYTULM-84.6803-150.3010278NOSSXYYPRTD-54.2848-154.8238279RFVEXQJI-87.5010-154.5587280WCAMNDBUANVY62.0956-136.3100281WYJOKPJUOJR23.375939.3051282FEDJKYPYJCU-16.2031-89.5905283CTSPDTDSCDQYEO-43.2034-50.5802284TBECPCSQM77.6436147.2048285QUHUGR-80.6365-32.4872286XTHJARFSK-39.2123112.8657287NDJCDAM-27.055516.7818288ATEHXXXDTF8.2563103.5486289CVQVLTAXYICCWH-77.2925-63.6703290PWIDSORIFF87.595481.9347291SYEVSK5.938563.1294292WPGIMWXOCCH-10.066988.6725293QAOGYDCP-8.1558-158.5513294TUIIUULLRVXN-71.4449118.8779295NQTTVPEDW6.1884-3.3897296ACKHXM-77.1653-101.4584297GLDBOXUDLMCXXE-87.1907118.0980298DLYUCLFK70.6083-97.5098299KBUXU-60.8670-45.6089300XSWAHAB-10.712794.0969301RPKUC59.7206-7.8405302AVPPKRGLQJ-82.4906117.8594303TPUDTA-86.2733-49.1000304OABGUA-64.376097.9577305NKYYQLIA43.9449104.2903306KHKCQP82.100988.8980307GIUAGPIFLXHJY47.2745-16.2446308TMLVTLO60.6653117.4888309URVOQCDMDTANT13.2406116.8189310BKPJTKLWXVBT39.7123123.3667311UVQFOGMR-65.5385-96.2119312YUYPHHOCYK-13.0882172.5334313LUCGSOA41.461847.7882314EOLSAYTE-77.383172.6595315LUIHOGQD47.4598154.8351316GGKMMB49.6196160.0705317BMTYIBFAPBNA-62.7082164.3532318QFDXDLLGS13.3263-21.1868319DQNGKBFLWDF-16.0635-17.6291320UCTJHM-75.965914.5302321OFFQT-74.896725.4223322FBPWSVBXXOIFD-32.3430-39.2522323XIPPO-52.142748.7310324OWYXMCARGRWS8.1340139.7066325TIXDNBRI-82.9576-118.4666326BHPKEOVMPTWO-68.197661.8090327JXMILR3.9999-140.2242328FKPMQUVYASBVMO-48.5722-49.7771329PKXXACTRGKGPB65.3047-120.5032330COAWA56.7450-120.6921331XRLDKCEMQQ-32.8280136.4271332PDRVHCEUIFBXHC38.6537178.0169333VYMKBPM-47.9275-27.3563334DRBBETDKADCN32.5320-134.5545335SINEOYR-5.0447-13.6175336CHJLDI3.3804179.2311337QVSWMN17.8453-64.8579338SDNOVQBNPNF19.78688.0832339SRNMBLGUQMN86.3780-101.6139340AIIFJQBFRNCW76.7206-160.1415341MNLIKDOPVJO-47.7614-135.6268342PDYEGEPSJNKM75.8811-79.1724343ODBCPPJTG26.0686125.2554344FSFUHXIE-3.3606-126.0407345AVFFROSSMWNF-82.2719-81.6694346ODNQLLOEKML-79.3333114.0982347DMYCCOUNNBQ-39.6001-38.8480348OCDJWJWYYYVNU-26.2713-42.9334349HPTQSTILGBQRPO2.1887-55.8669350MTTKQMXOJRCXPW-63.2441-130.8061351UNIFUR74.6791151.0114352BXFICUHYQY68.0709-89.7956353SQWPIWLB67.9149-45.9554354BOLFFFRVMHKN53.8019-73.5037355EMNXOPKDKKS71.8169-12.6528356UQPPIBLGDXJ-77.48451.7203357DWNNMI-33.6196-82.2062358IMYPAFIWJNQSI34.8262-167.2128359IBJMFOIIFHV-7.1044-24.5735360NWSXUCGUWK85.094760.2499361EQFVRLRJ-32.761764.3780362ORCBQGHQBWASB-79.930255.4819363AQACRHBANV69.2832-110.2855364YQTDXQXILG23.0766-141.8603365SAIWAFBTFV79.2572-40.7389366QMTQMVWEPGMI45.617977.2050367BCBBJSJGNDTMFO-14.6896-97.1339368UMICBNUQ33.0114137.8097369AVMCRXTUTJIABU39.3502-138.9618370RLKCIQCTOL-36.230787.9746371AIBQDU-82.7752-49.6378372UPIAJECUR89.3321-38.7843373RQMKIAU32.6954136.1994374UYRHVS-5.089482.5779375PXJNIFMTQRIU-88.6799159.3010376NYKKSXV67.8485134.5896377GWHDXGHKQUIIRH-15.7403-69.3257378XQNVGGQJ-74.6012-178.1558379QPBEAUCE-3.511127.6302380KRCPPQKPOMNAHX33.2222102.5250381GGSGI-68.1864-10.7161382RGLKPGJEIMWT39.756841.3907383SBVCVPVCPYXLGC70.457426.8621384PTTCPISYQMOW68.1674-160.7038385MEYJBAFYNSLYJO72.9838-37.9591386NTUXWWBWKFHI11.3231-55.1855387SGLSWCDOLKY34.8761170.8919388XABDVK-46.1291-125.7561389HSUBAAAR32.7699118.9323390TKEYPYBJBD-0.650876.7197391LYRSPMIRHWGPQ38.3301-122.2209392TQWFQGGCL44.3170-128.9998393NWXRCMFKDUPCE27.0462-73.8087394BVNXHFOXWVJRR-65.087056.8567395NMSFKD-31.3353-128.4506396AFTAMHVYO89.5341-104.5595397AYEUAIMVMT61.647063.5877398SUYCRFRTA-8.1786-81.3784399GSXRHXUOKKMTM-20.687556.7574400SQSDNFPQG-27.3010-25.0496401TSYJRWDSGWEIV67.3357134.3023402OLRAIAANCST61.6649-50.9040403TCEWXWASKBK-24.8875148.7179404DSLSDHBCSOGWFE-62.2915-113.4803405RXKXITG36.3411-119.0487406XXUCVC-55.1314-164.1974407SCCQV23.9139-171.2674408ATDOETQYHYEW-62.671078.0475409UCCWSMULDT52.1928161.0239410YQRGGKWLV-20.8039-151.2356411LEHEGBNSUCIYSR42.935637.8060412FRUAIJ23.7816177.7678413QESGMHYQAYIOH-28.0878-69.2135414YBCAPXHG-82.5731115.8386415IIVRVOTVYR-85.7754153.2268416TAEVNLKLEQF-26.6861-12.6755417AWIPUINISIQLIO-24.9813-88.3491418OAXHXEJIDJRXU-27.148350.2319419RUSOJAXYHSCAFA-44.34673.7404420YPJIGYVGMRE13.0790133.6171421MNSXGPI-64.5176-11.1853422YUQPFRWGVTMCW54.4594170.0905423HCUYYRE-56.500691.1950424YFDPCF-27.712361.2915425OFDGOPJKI-76.6062-153.5743426QGFSVYHGGGMMJ5.9965154.7036427NWPYJJLTR32.7824-170.4545428LSHCRWHFLHMRH72.9470-14.1112429BDJQWIAB-80.0578-23.5248430XFJPJN0.8481101.8896431LNFOB79.6218-45.6410432YJTTMMHFBFCQOS88.470756.0798433ULJMPVFXKTY-72.665656.2905434DAEHEMWKNVFTJJ-80.1672-132.0088435CGMXWNU75.6844-28.9532436PHRXTCN6.3259-91.1011437UYMKTOVJEY-32.6938171.7134438DDABFF-0.7022-47.5699439IXJGTXGAVCOPJ19.295510.9959440CRICHXPLSC50.3754-138.6982441NBGPCKMURBRRQ-33.4406-46.9782442ICKXDVJWAGLNNC82.9570-143.9941443PGVJHEQ-56.1173156.8505444VDVFBH83.655835.9439445FVYGBTYOH18.684350.0926446RSMPWMQ86.101836.2419447JRVQIRWC10.1743-96.4957448DABKFXG-75.8060-159.1209449MUJJH57.5136-117.6483450VHAHUNUXRH66.9104-91.6057451RLJOPPHGXMQNTR46.8335120.3952452OOKRULDKO-15.8299-20.3755453LGOLOBCOK-54.8518-144.6638454QNUTEKUBAUXI68.9492151.3317455UARVNUJNPH41.5059125.8559456HNDYPH28.6755-103.8426457MNDKIVPNHLICOM-21.5243150.4627458ISQARQQMFON74.035716.5648459WBYLIKUBXE25.1388-80.5668460QOGFEHQOULQHIB53.61277.4119461XXFFVEG-32.174789.3385462VHPEUSPJBESVAD85.2021-16.2409463XWVKSNPERSR29.106567.3694464YLKBJYNIHX6.861964.9469465HARIKOQKPOPVCX78.87863.0682466MDRVDGOPKTONG21.240138.8441467LSWITTVS-56.7809-88.1282468HXFBTPHLJFIGNW22.9403-147.9911469STUJXHGKSXT52.0671121.2602470JBEFHRF80.334018.6928471AXSMGAABI-88.9297-59.3362472PDTLNUTLDWLO-70.5541-25.6881473TKJSQTTGQKVXC-63.4915-18.2373474BASRXUCYDRL4.048267.3243475VDBHX-37.2920-133.2225476HIXSDJE35.050257.3513477DWIMJNW-27.567118.5053478QUHYLTRSHGPNEG86.740928.2740479VXULECT-11.414637.5776480KEHLOKMB-66.6714148.5101481KYSCVGW25.2755117.0725482FURRNBT-30.435662.3807483EYDOTX64.3726-44.5388484ICDJRTQFAB20.7993-66.5017485PROEFUTIAVY-74.0507-55.9864486JGCKUUJKCRVI-15.4024-5.9132487UYDDL71.789439.4402488DABCGJLKT-61.2962-32.2423489DWNYCCV-77.5050179.0261490TXXRETR79.8322163.6638491CMXTCHTLFN21.3618-47.0682492QVJEN52.5649135.1397493YVDTATWWMVBFHM-11.6057-34.4998494OJDHPNMOABWY-59.3118-29.3210495GUHTFJW-7.6929130.9573496PQFUQNDBBK28.2044-131.6662497SBVUMK-31.6238-39.3929498GDMGTFONQOG84.266829.4449499AUUSBRTMCED21.7859-16.1096500BYOPYI43.5326-80.9426501FCAVACCCB74.8781-13.2816502DRITCUROUXMF34.7956-149.9679503ICSANELUQ28.186541.5585504RSBILJYU18.274662.5493505JMOQJ13.1243107.7177506FVNGXB55.4751-105.0956507UHDCGIUCYBUQF89.7926-0.4545508PNAARMSALLFHDP36.9354-42.6733509UVQJWBXLVRL-54.4953-32.7766510LGYESIOXNVQ-69.877538.4369511MRLESCWO-61.5591166.8462512NAVLSSSCXRUHS-17.237981.1431513VSYDYK6.9575-76.0026514MXCMXK10.234211.5548515IHFJCAKIYK31.3227118.4329516DCHIFJRJS-52.6312-122.5863517LYRMVFOLBIA-37.1954-114.7082518ACDQAPY9.2035-131.8163519AFRCQFKBSKYO-3.3988-162.5873520RAQURS-70.810521.9000521MYDAAQAKSCXEIM-33.0804-91.1329522XQQCWSXRJ-31.4282-67.9762523PWQQTEOWU69.3235-137.3265524JHJUDVFLUJEQW4.9973-12.2829525SDHUTVTSHFGJJD26.5885-35.1210526QRDBIBPTH-63.7558-18.0467527HTIBHSGCIWAN38.5891-169.1343528IMDDOE-76.6144-79.7200529QATKRXPMT-70.8059-74.7293530MUMSWTF-61.7513118.6282531BXIWQFQ0.7631-87.4860532SLHYTDSIIANV-64.5091124.8910533GOPJPQORKY51.9442121.2764534BYGRBPSMP83.223360.1235535OVTMEFKLVJBAK-53.5764114.2867536JQAMBYRWTCQ15.275313.1884537HJCBUGX47.533735.5272538HVDLFIRPWGAPJ-28.550472.0539539KIVGHHPFH6.221453.0235540QGJJXVVESYXB37.4125139.5810541SPBKJUYTSF32.9269-64.0382542ESNNQBMVINSCV86.2845-74.6119543UYCUTRYRYRWS82.887172.7471544DUGRHDECLKX-85.1411119.8952545NTCWAN47.6122107.3429546IFBBHAWMLJF-87.324647.3477547VLQCMSMEPR6.7421-4.0806548SVAHCBOVIGL-49.9569-134.1398549OJAJLY85.3563-94.3043550VUKKJGJIIF8.277894.5008551ORCGHYCYEMQHQ-87.3665145.0764552CTFQGIYVTTORN-11.4830117.3993553RYUDFDLFRUNTAX-46.668179.1143554DERRCPW17.223840.7898555QVMIATRPAHCDPU69.87300.0661556QWOMTYXNQPFX-60.4191-45.4828557TMAHQIBXYXP-15.0293-22.9419558DSMSKGFOYG-43.1859-126.0340559HXYJDHKFRXKDB33.9302127.2321560DKIMALCP42.0632-72.6222561NEPHNXFLHIHJUR-82.660659.9040562LAVHNDDKRCMIVG52.2879123.8317563JNQRFFM-51.1323-69.4717564NCYPJR44.513051.9192565BPCOOSNMGDHY-64.75248.3019566FYVLIRX-1.8603-58.2796567FPRJCVXXMGM76.9062-21.5472568RHQTTIHFI11.2444-5.4521569RXJFKLVVYOVDD-84.7213-142.2541570FCTFGUN63.193272.4983571YASXFAITE-61.348199.5484572EAIVNYXN85.2739-69.1767573MLUWMDIHAXMLHU48.3528-39.6911574VXYRADBGY51.5860138.5232575FPHQKHVT82.602826.8122576EOUIMFBYPS19.378616.4635577BUQXUAHK-83.3937-70.7706578JNXSOEUVX39.9363-17.9553579DFGUMAF75.20351.5132580TJRNMCV-4.1123-120.3717581MYVBBP57.2082136.9110582BKYUMXJOCJSVYN51.4129-94.7545583UWPGWMUYWOLQE23.214530.5067584QRRDNQEICL-3.8886-175.2785585SFDALAIJ-67.0714131.8571586NLYRX-42.512890.7644587RSGSGW79.7221157.4617588XYAXUQXDXFI-73.404027.1842589SCXTK-75.5515-171.7650590FXAAOWJIHIYUK-36.5904130.5926591RTVUQSTKWRJHN63.734711.8747592FPMBAVNACIKO-45.2477-104.3066593EGDPSAMCUDK73.687045.4865594NRHIWEXKONYM63.5355-172.9008595JGGFPUDOMEMSXT41.7916-60.6336596CGYXXVLFWWTVLW76.4557-171.1500597FBVDJEE71.2321-145.1460598WEWBMRKNHQ26.1609-81.7097599WWKXSFUS-19.9911-56.0742600FRDESOLDUW-35.799945.1175601LFRAVHHAHNEW-37.5210-44.5096602YURXMJOCRID48.778341.4725603ETFGJL-88.6967-91.6074604LYXXAKK-89.6332-45.9106605GJCHQH-85.8563-25.7846606NBGIEQJEYQB34.0270-14.8611607SUDPQOCWFH-62.075751.5135608WHSWWHPNWPK-29.2638-13.4813609KKEMBVWSX-72.1305114.3402610UVRUM80.3609165.6804611HDWLGQRTS-47.1214-82.9076612TBUNNXBY8.3244-65.7565613RPXKOTEYL43.1546152.1158614RPSBHBMUD86.429591.8334615EIFJIE5.2268169.6513616GPIJSWVWICK1.0089-102.2701617VXOEOHILI-74.52153.9527618ORTYWSLPLDTNXQ-23.9500122.0707619ESBQSRDR-72.2945-63.3818620MQDUAUKAJOHXEQ27.2083-52.3099621KCQMGXSUKTY47.6988-76.7565622AYCPAHCGARO-75.602644.5895623MRHYMAI55.232391.7130624MNFDWUYLDO-17.146638.7677625JWQYYWBYS21.564783.1397626JKTJXEUGVL-52.1410-146.3876627NMHLGM19.8690104.0938628BDDSRX0.1059102.6397629TJJYFQCH50.278975.4601630TVIDK37.3884130.9415631KVSDXYHOQICECS-56.5987-65.2528632YOSKHGRGJMM70.610750.4963633QAECNVHMD79.4596-135.9383634APPGFVF-80.4721-22.0608635XQHAF73.455411.1845636QHPMXBTPRJLMFO-37.5972-143.3662637VETJOBB60.1035-75.6783638TWKMRKDEHMXVJ26.4840-130.9439639CYVDWN-63.9541-127.3187640LUFCV54.7328-50.1607641JEAIGXPXJWQKEM65.9847-163.6111642YAHPGRLOQV57.3219-73.6909643PVRPEPXA33.257754.0901644XWEKDQWOR63.0980150.9451645ALNWPWSGLMKHJV-62.3134-33.3020646CFEQPXIPIU0.109481.3633647MAUQI-50.8284-118.2903648JJWQJCT-53.7566-128.7824649DFJUSRPKMT1.1553172.9431650NECPETBLKMGH-70.0998169.1861651OXGRQOSWIQKXLV77.6722-45.4416652PNOONNDGMPMKXL-66.35336.0498653VJINQ-37.790163.9661654JBJGHBY-29.1556-48.0323655PYATQECD-20.6366-81.6205656YYFBE80.885276.0985657OYRMVLTOYVYV-59.6991121.1843658FKOTIEHDPSF44.6691-134.6452659HEWIMQFILESWFH26.286711.4728660HXQQSKSOORPNUM85.0602101.6383661DSFKU28.8802-2.0057662LQBXHJ46.377714.5735663EFESQ26.7830-4.9562664MQLEQBVMAFKMMC19.94883.7896665KYEREJKOKPNWTY25.8124-145.3019666IKGGXFCAKHL-4.2381-5.5484667VJOKMXHOTTRS-32.171029.0416668WQRXYA-83.075134.4284669JVNTXHBPVSJBQR-47.941222.8661670BYJEEKDRXRF-54.8614-150.2710671EWKGGOMCOCJN-46.6066125.3839672PUTHHHIBHMONM-15.0941-39.3681673RDTGTIOBKQ81.8776-97.0657674TXNYLBXK33.3523-140.1618675DLDNCY-88.6222-11.4658676JDSDKTFOYH-50.9858164.7432677DKKMPAG40.9984-43.4571678NRDYUFORFLQOCJ-54.8783-131.9155679AJTBGJRYMFFJO-35.0767171.6876680UJRLRQCTLSTG30.4544-78.8114681LDOFX-70.7720-149.2494682SMMUQ36.76570.6448683VCETEWAABEKFF-22.618794.2674684SPFMXXIUK61.3678137.1083685LKLNXHXCOFFUSN-58.8161-175.0677686RCUUVERSL-66.6636-54.5133687QDBFFKU-37.5165-52.6193688BXPKERYIIJXC-84.6388-175.2872689KKDQKIX-39.276528.7623690XUBOTTPEHAJ-60.6320168.4167691VANRL-57.5834119.4869692YTWNHDOUSGOMI80.708089.0751693ACVBSSANWTJARF-64.7035-127.7215694AKYUNYALJVIMW69.1663-73.3902695MQLBK89.014744.0656696XIOGRHFERPK12.0497121.0409697SXMSVKDPNP-4.962830.9991698MGHLYHJP-19.9078-102.8852699PCECDNX-80.3030-60.4588700GLBRIVHISDV-21.3882171.7106701EUMDXDEUQ-20.5573-36.4194702MUHPOPVWWAMIGB-15.983957.0768703DFGTJHTKP-15.4930-89.5993704VBWJFRODCGE48.1682-121.3931705YDUTCNJJIGWTQE-23.632050.2340706TFDUKYNIPIRU-80.1818-66.2950707QAALUCHQ50.4252-57.0462708TLIRMR77.6066-176.8943709SYAGSTRLAIUCQE-0.6449-147.7140710SBQGP-15.404624.1420711IDYRWLNPMG-86.4942-88.0230712FNJRUT-14.386787.1790713EWLTYCBIXY11.885131.8455714MWOAMUWJJMWP18.10960.7391715XAMVNPJFAX83.047795.1538716TBURHNXOGGH1.5036-48.4089717JYBLOO-73.6533-116.5583718QHTJNPIBLAAB26.3081160.7657719WUGYFLJCGKIWHR-23.9704-86.7238720CVYKES89.36278.8826721WEDLSSVXTT-60.1631-0.2276722XJLBMDP-4.5405145.7803723BXHXXMQ32.1559-79.7869724OFQDQV51.2184-20.5807725IHQBIOLSR53.365056.9376726PWCQJGRID48.474847.8429727VIAIXTB82.0143111.5860728NXYFQ57.745293.9738729DLIXPWJ-28.5225-47.3000730YNTLTR-67.8922-115.7650731OVTQAB-75.3571-56.2197732WOLEOM88.429641.1792733GGEGXJSS66.309213.5954734AKDCDOI-66.5284-25.9257735BNKXGIWPPSHCQ0.8422164.7036736FIKYBNDPDTXHUI30.2190-21.4859737IUGXDD41.977457.3910738GRANIVKLASCR57.4813112.0444739EAHWDTLPFR-11.4861-145.0439740YSJJOC44.5022-107.1914741PTUGEKKM47.9846168.8604742QGTAJT5.5405-58.6391743PPFUOC-15.2627108.0769744HCVMSS-67.4165-84.4914745WTWWGJGRAY-79.604922.1001746KNNWFASFGW34.9378174.7201747HPXNGRNBI60.1974-50.4666748OBVRMHPYEJAAW6.419891.3040749NOPYHHIH12.7421-80.3249750FGOXVSKST63.2173-60.2852751ODONNMKR-41.781828.8479752BDWBVIS-18.002774.9502753HNJBX14.0269121.4129754OLQMAROCFY70.5620-167.6862755UJTJCBSTOJQJ-36.2014-37.2985756GDOLBDX-46.8114118.7468757YMGPSTBXAIJQSN-67.1038-134.1602758SFBTXAFTVUAMMS-15.8881135.1406759SXJWPLBUIHMV21.583374.0838760LMVVU14.9631-60.9384761IBRFLPRNNC-63.7584-105.2327762DECSJD65.2094112.9166763FKHWNVXBURU-45.8042105.8365764CFTVGAX25.5595-71.6160765TYVXQEHXIEP75.111834.8522766IAGOLXMTFYP-12.037815.7019767IDQPUDUV-87.1143-27.5653768LEGGHU-22.3424-104.5171769IVKRGH-19.133950.5080770BQBUVP-38.8303155.4223771AIIDM-30.2248131.8513772CSXMXNEIU-16.2034-165.0067773JBSRWF-52.1820-100.2963774FLCIKBBBMTUEX-59.8823-122.2897775CCQSJBH21.6745-129.2202776VYJNE45.8559-39.0055777YNCRMHENC-13.5738-44.0194778PGARXRATKSJX14.5727160.8170779BUPGNDSOYE-31.0638110.2912780BKCVAO74.1956-72.4745781JQWCJX-46.1764-107.8514782GMUNSNI-17.800252.5576783QVWJW-89.1320125.6643784YYQUJDQNPLKUI-2.897895.2884785TPDXFJEGTXEI-43.1551-122.0119786GNAVMAIFVMYSA5.8065-88.7168787FGAQAOMW32.5340-123.1542788WUGVVXWFGGJC-57.4792-74.0001789TOLUBXOIO-37.655624.0338790CBXWACMQPGHPW65.7419-179.1618791RPHWQNTSS-44.6283-112.5348792QDKWUFXKNMHV-11.3712-167.7432793JJJEO56.9581-111.8706794QSTRF-69.371918.8343795RSSUSPMUGJCJPM27.0866-87.4348796XIRWLDKAYXRFUQ-30.715036.9688797VWBVLSPFXOKWUC-26.4527167.8779798EYBFQHMC48.81920.9346799GYMBK82.8403-25.8441800WJFTKRBWLNQK30.8461-107.5462801LDNTEHH-67.3629-116.8494802UOLOQWV57.308675.2513803HEBKUQUAJYUDEJ45.668515.7636804SJPKOUER42.8825126.3492805AYVPWUJRAX41.3208-103.6605806RGNCG79.817935.2336807RCKYJEND-2.6221-152.0607808TDIDENGVUKD64.605347.1696809PMVMHEDJCQDOV-4.4023104.0214810MQAEMAQ-32.579782.2174811FVWGAHJDV-85.396150.6467812UMKDEEMY-87.9918-87.8602813PTGKJB25.089536.8434814LPQTXTYPJHU63.416882.1809815XOIPG-75.1509134.2655816JVPDTE-85.8185-144.6504817VQNWTWMCB57.8004101.0315818WFFOMSTT29.8565175.3477819HKFSBQBU54.915354.6660820LPYQVA-60.087840.7419821RTYHMPTRV36.4661159.1388822DQYAVL-74.650396.1188823ANDVGTCHJAFBL-6.5104136.3358824CEDKI-0.3059152.5152825BRUQFECIHKROR11.459361.4664826AMJTCXE0.43416.3860827WIDMNOCB85.1628-133.8424828AJHACFDTWAJCVS-54.7478137.0399829NSWBC-27.3544104.5584830JURBJRN7.541863.3010831BDLYUVFNAN8.5589-43.1835832XEQTT-57.5203133.5299833GEMRARWAFLHL-58.94144.3820834EXJKGYILBHJM2.8292-175.0710835TNJOH-88.8799155.0444836EXJSGGHI-28.985314.9293837PQMYJW-82.1837-175.7398838RKHUGEKVQCUD23.5912-143.8292839BMKRSYLL-69.798829.9519840UFBDPAYL-15.0395106.4505841UBMTOHKILSPVB49.8221-61.7717842ADVNKGUBYXFOLS-87.0654-2.9077843GPIEBNUXAPS-47.9546-4.4285844BCSMBFYM59.0878-56.9627845HMOWKFRQM32.6645-29.7946846UQNLMNAYM35.590767.6288847MKAMVSAEADT87.894053.2630848APWVF77.5401-178.9178849VJLFJNUPTMYWO-70.4808177.8360850KAWVLLPI24.630716.1311851EJESWTCNHMXVLK74.2990148.8379852SHADWQU-16.8037142.4341853BYMINWAWCNRYDR64.174194.3346854YKYVBUTBUL75.9154-110.4172855BTGYDILARMYM-46.8226-63.7963856DVEMYYOQ62.9664-45.4970857KVIKKOHOMUBIY-15.92101.5676858XWFIYMTABH-23.057117.4379859IJTDNV-27.674780.0226860RFXQP-71.0668107.6654861KMEIYTVPPHLWWB-18.8464-50.0969862MOEQIDFERQT-37.645822.9219863OHJVIEWFQQ-25.5296-170.5261864KTUPPPEE27.40287.3977865LPTCF-29.306875.7571866JBMDKWT83.5901122.9969867OXAEPION16.1473-47.2370868RBVWSLLWMFCO13.1941-91.5921869LWOKLS13.7773-66.4244870UHLQOFIERGQNDJ41.1096-105.1152871BGRCF7.2076-31.3992872DRSXYRSQGUB-86.0415100.8270873URBWCUBGYKES-48.3805-114.2329874EQMXKW-55.730892.8916875BFLXIRKBOGFYP44.6458-2.6378876DIYUW-62.6690148.6458877LJEUGI-33.718276.8302878QOINBVGMYRSRLC78.479673.1298879WYFYJETIWUT39.55699.8178880VQELVJYMDY81.6611-103.7083881OENIMGYIKU-14.2467-34.8320882VYHNLOULPLKTDX-79.9852-140.8160883JAFPABNTDPHIF47.0334-9.4887884OKCINRYRH19.3022104.1158885JPOKUUKP-33.2742-137.0558886EBXPQOH52.5160-18.5276887NURSAKQDCSLNVW-73.1475-39.4559888VNPVHCMDLTVD-3.3119-172.9747889QSAMWERVII-71.865821.9367890BCPFQMOHTUOW39.250561.0529891USIJXNBWFPINE-20.881649.8295892IPDNXTHRVEBAPL53.2419165.3756893IXFJQXGWAP15.4988-3.0025894GLJHIQMWWAEL-69.855353.3111895PGPYIAEEKWW-65.77398.7344896VHNPRAW-82.368662.8237897MBWAEV-45.9663160.9374898XFVRVHK-84.0965-151.7668899JUWBHDUDP-20.3988-15.4407900SIMXY-24.8032175.1831901DEEDCB68.914430.3580902ADNXHPEO14.1078-54.7537903DMYFCE49.6509-129.3666904NBLXJR-68.6565-149.2549905WMLMPPW-40.1873-139.3865906RLIWSOHSAY23.30386.7281907GCNJHTWW78.56809.3821908LVPGEMWGJBRD-18.572962.5896909CLQYVGIFOWXLEB88.7746-38.4210910NCDJALQUIFDE25.8051-153.8731911DPOBGULIUQBH11.9861-64.0045912JNCWESMERPINFL-23.2014106.3473913KMCAFMLVA-76.0293-41.5900914FHVAORXL34.6372108.3043915TUNDLNQMUAVAP-39.4098-31.0699916UQVBWNPVADKTYE38.2733111.3363917RGRQSLWRQKLWJB29.9266121.2898918PDWHXICQGJT74.9346-169.8027919PLXCOBOBGTW6.8170-178.2459920YUMOT-20.355231.9562921GIULJVUDPGBD-79.511271.0887922TTUHGMR5.585396.8760923MFTTELR-82.0360-133.5069924XPVLGHDAHLO-35.0962-11.1267925FIEDDQBGAA-40.7506-125.5725926YQVDLJUFDL-5.7753-17.8973927UPRXBVLRHI88.020186.9398928FVDGCMGEIQE-69.1984-41.2553929VQMWX-45.5420-164.5805930FHPMOWLE46.5652100.1297931LAWUMAOKFFYQJB-0.1747-1.2130932WBNNXLTE22.4524-120.3597933EDHOAG53.153746.9435934CREUA2.3741-48.6816935CFUMBPEUE74.8919-84.6564936JANUDIWKLALNDP43.1310178.9606937BMISGSQRGFRH46.9031-116.7754938ABHILR-27.5767-170.4203939QSKCWO-35.5065-177.0435940CXOPKFRWWMHQHK76.9621177.5790941UECHO26.887994.2170942NYMPXKI57.7582-18.7210943YCSYDDUVVLQ-68.789010.4156944PGXPADQWHHKAR-67.3828-39.6432945BIDWVSEKI-64.0587-9.9393946MIWEDHRHVJ46.9143113.8325947KILNQ70.2064-173.7555948TKBWHSRJH-22.592820.1548949VONGLKKXDXWLGI-25.9524149.0518950JKUXSMTWNN-45.2215-131.9146951MTBXF19.2383-96.5343952UXJGYOJJHN1.8343-162.0283953IXOKNYGQIH-41.4137-122.1743954TRBRM66.982857.2551955JQQFBVKVCK-35.9063-9.1427956MFUYQ11.563175.3265957KLMPJDJXFEHBU14.9778-39.4230958KBRWEXFY-40.46336.3219959FDTHGS32.5972-62.9957960QRQSOVVBTJ-32.9498-1.4715961KUGQEBTECIRISA80.0886152.8015962DJPJBQ-88.7429-37.2034963MQMOAVKQ63.2190167.8290964BBHJGHXLWA44.9165-159.7434965QADDQCEUHCXYC11.9889-134.0306966WNMNIVOEVKT69.0629-16.7507967UBOWJ85.9535-83.3367968KXTNTKPWKLV-5.9974-33.9163969RKYSJWVEGYVLAI-35.5113161.2548970BLEWENICCC-70.821664.5369971JKRWJBXIHSPHQI81.0062-163.1205972LEBVT-51.724237.2603973FBOFJECOQEYXK80.620524.1577974DMLFAYBFNER42.2216-150.1687975MYGLCYYDNBCYF-2.2168-67.4012976UFKHDL11.382977.8249977UKBFBUKYTUDS-14.6391-37.1353978MPQASBUYENB55.9091-44.2188979MGGLF46.1299-27.3624980KAVBLUUDVBSR43.244039.5997981TWRECHC22.2523-134.4939982QBWVKWQVHLOIM1.448160.6182983VFETWAQIU38.0790-36.1769984MWHHGDBAYTVNL-25.1182107.3719985INVVLWFRUTXJXT79.1231177.6428986AWLBYGKBUQI-21.3494-141.6607987JYKAEHMM-53.2190-155.1498988JSPBDYAJG89.4652105.0760989HSOSLRY-10.332256.4941990PNXFLCQHPK48.356860.2180991YAFORYKY-82.5638139.8386992OEOVMXCX7.9126172.6565993SFELRXQRD-37.594219.7133994MBKMRP-72.235273.8271995LMHLYUHKOIJD-37.592779.5131996VYFURGJ-16.1272104.0738997MBEJO-71.1126123.1145998NRSBSUU-32.5659-5.4214999XRMGH-53.6555-128.6957 \ No newline at end of file +0SCQDJ61.8894-36.15631KKPUWSBFB-63.8727-51.28822XMOMMNICNWX62.4102-51.48723TCMHGN-31.057318.47464TCJRIHVXQ-68.423040.30855HRLSDC74.5613-35.25046BMNABDISQ78.1670146.26347EKLXVJMFDTPS-44.8901-142.62008DFLXFMI81.2665-121.37239CQOMBFYU39.1032166.557610TWBQGUNHBCT-22.7520-58.023611WFMAYGF9.4846-78.734712MDMMSMUX79.6152-26.432613UIXHY31.6791-51.478414VBEYPOLTAS-20.4246-169.533015LVWUOVHXW8.2424-138.475416LYBUFARM74.5366170.413717VDQXWKQCJYFY-20.469037.025318BCGLFTT-6.572663.145319NLTJDDUOIHHHF-12.3050-97.707420MPRPXBDLHIGSV7.4775154.015121PNTRU-25.6136-134.030722AEVSCPXNDU-1.9771-149.317023NFVIIXMWHDO66.6236116.733224TKVYTCLHP88.75116.702425XWIDQXVYFX-74.011743.190326BKVFCN-22.7818-13.701627OFDGATRWK41.6186-15.052328TTVTDPTWJX-40.7307-27.004429BBJWSOUJ-34.8438178.148730PGCNTJ-45.2770-63.732831SRESORPPRNU-88.0500162.796832LXCMFIENSKXWMT35.2762-93.988833ETNWHWEC-79.4008-58.215634OBPCD5.704261.952435BJWXPWDJBTI-0.9041-27.300236XLOIK43.480071.735537GYNORUXLGU-44.7413119.038638CGSQN77.6308-147.193439HDBIJXL38.8254-140.780740YXUKVIQNV75.940233.015541TWXSJD-20.361246.411642FPAODDO-66.145811.220743OTBOPIB-72.7104173.152644SXGAONOIHGG46.621227.437645FJNDGKTLDT26.4246132.724346PAYNPMETLL-73.9142-139.058047VVKMNTILEALP77.5958-16.908848BHUFOAMLXEYKO-45.219697.237849WWUJKYJFCUTSP32.0746-98.948250HQAPWSCYBIE-32.8364-51.709151IWVWIGVDVC-71.4030-178.522852DQQRS88.79444.602253ECPVW58.1971-12.008054INUNMQD52.3984112.736255BAQRYBWQIMUNV59.7301127.495756CRPSRTANM69.931125.823357KHRELJVTR70.7587-104.581758PFAFW-85.7765141.893459NUDIFPJK78.719631.687760SJMIA-78.6602146.943761BTMUO32.8035-149.450162TTVGT-53.7846-127.439763LNOPCUL20.748062.429564LILXXJJUMKDE-30.2623-137.848865LKSTTXSIHQ-17.247075.363866VVHLLXOETU34.4685114.571167BGYSKXIXHTIBJI-10.6161-144.620968WHXDTJVCBX12.550279.100469OOLNQJSMVK61.7868-81.919870PJVLW53.2117-116.867071SSCKNSJV-41.7716-123.606172YUISD89.6685103.187173XYTGTIBBXHYYT1.2303-13.488774EQABJKMMUWYA-52.7577-25.490775OAHIHGDQUSVJJ-17.9596-83.877376BTNMGD-26.3776-35.713477XTCJLY-80.5737-145.426378TTRKJGBEEJRBO77.8209-166.533479DAGJLOVWGQX0.365578.805880RAJJBBGDM-49.7828176.680381LSISAAXCHTKQ-33.6866-132.976782AIQMRJGBFKWKCH-58.7342-162.638483HGASJMCGKQXRT-25.4347-58.096184CRPNAHIWVY-32.5921-70.606785AHDITLOKMWG-33.5559-107.578686VKITUEFGNTPJJT70.6798-111.426687TQRPDPP-8.033636.359288CBGOYXLWMICIS0.3155-24.754089KRSDEM-51.5767-168.779190ITBCBIHPAI63.5483102.312791SHBGHS24.0749-77.875592UPPRWPM-72.0894159.212293JMIBUWOFWRIAL13.8970169.119494YRHYGEWEFR37.6016-6.057695BQYKKCLLYS-2.2668-93.134196MCYFUXKRADGJ-7.2261-30.615797LNJYCB40.9726150.702398NBJBXAOXVFLU-7.9942-81.261899YHLXKCVK-53.0478-124.1014100ADXHC19.9157-57.1892101WMSDWJPFPYECCU-79.988710.6547102PCOEOPBLO2.6945-177.6227103RUKFF69.6939171.4203104IPJFVHNRL-58.3801-34.9522105AFGGNUFFY88.3523100.2769106XIKSIL50.8664-19.8739107BPFUFVKCP37.315367.0105108KWQJQ-75.447367.1944109WHVYDQYIGSOOS-62.0308-26.4029110PQEFQEFLJOYXL82.5362-175.1211111AIDEHFBY-75.8127-160.4363112YLBFAM75.5323-82.6821113ANHPDUKCFNDYET-37.1843-162.2584114EUONTJRKFAQCO25.2190147.6916115LVEJPN47.5559-62.1698116HGQYURCT41.6100106.6883117MPOLHVYGJOJC17.3641128.5586118TMYUWAATUGOCC-78.3038-10.0760119LGQPMRVAKYJVP15.929326.1232120EBESPRLQQOOVK54.1705-83.0565121KLHMJRPCIXBJN72.5414138.5629122BNEREPR49.0390-18.6547123MQRAJHWCRDRVT47.9150122.2772124ANOFYHAAMK5.8674-60.9809125NEWTI-47.0525-13.6483126KTVGGBEIVDUFN-67.413915.1071127VPILIOKWTKQUC-6.655990.9171128BUXRGDE73.5200-33.2103129KNPFPKAQI-66.1945-129.7011130JOICVPTKHLTAYL37.2913-97.5762131XUYGFSYFOXFI42.6185-59.0904132FBDMJNUMVKR51.8721168.7848133EJKQSVINOL9.370421.4927134JEQAMQLSV-66.3110149.6636135NULRQYSFPOP23.0885-138.9251136OAAFBIML-45.567219.6762137OUMXRN28.4591-35.6426138JKGMF80.3929-67.4247139WBKCRODGEMDR-44.951798.1938140JXIIGMN8.9868-178.4934141BNDAGVLNMMT-74.853698.8768142LJHGEQCELCWQAB19.2434-139.7704143PKJSVDWDHQLBK-80.090253.5623144AUPVJCQYHIOQYF-46.654039.7994145NOFMYJNJ56.5836-122.3237146XLFGSTGA10.117997.7121147UYGHNCWL-5.905095.8632148JRKPNHCJHV-27.5685-101.6895149PQGBMQGWAALFP-50.523690.5777150GIPARBKA35.4864132.8519151NJIJYAETII11.6579-86.3913152NFFHCCBELOE5.5367118.7703153XFEERFSPARNRVV13.0165165.9115154DRRIRUX0.9805146.1100155LUNNVOLOLMGGP-38.249156.6473156OGBFMUSGRG-30.2978152.7796157CGODE69.412296.2450158QXXNPCVTXSULWF-67.212198.2155159UNFQIDRU43.1409110.4665160EXAOFVECDPIGGA-23.1935-77.5976161JWUXG80.0498-89.7199162KMBCB-57.8811-11.7514163NUYIQMWTLYQWE-5.5764-1.2270164VDWHLC7.5933100.5977165BANSGQ-27.0792-45.6957166WGSRQDM-37.081055.9256167LPKJHPLEIVPDXA-38.671342.5904168IKGUEGF65.5978-50.8411169YKEMVQENVX-32.5095-31.3591170ANMSAATURRJ30.2651-23.3822171COYDAD31.8743-20.9267172MQCCXNKT33.467152.0448173WJKEINMEGQMA-39.950865.5476174WXAXM-7.7393-142.9199175OWKEARSHE17.1981114.9170176LUDUITLPI-29.0297-0.5052177KKSBEXCEAV-24.0115-153.5054178KPNKWU6.3162-116.8709179LKYKQIUSYLF5.6604-143.0866180CVJQTGQ33.58877.7805181QUPRTQPMPLE8.2861-125.0743182OTNOMOJER-60.1049166.0463183NKFXIXY19.4839-35.8107184BUUGGYTMBTIJ36.4520136.3568185UGACKUGEXHVWP-62.0101123.1605186NGYRQLW-54.733310.2892187BTPJH69.0934-39.4831188AGXWXHBTAUXQ76.8850177.7732189OIUSVSDBBEHXC-64.0283-69.6226190CQSTHJOPGWURGP27.7302150.3521191VDASAP-2.5511-109.4102192CNGVRXJ11.6659149.0360193GMGQGADEJ7.9256-85.7723194KELBDGLXQ76.0692-161.1366195VVTAE-75.911880.1832196CCYCVYLULNSM-78.205355.9361197SRCDGK49.5207-40.8554198TAGYOIK-58.787196.0408199ASASF58.3342102.5367200MLFEE-6.6753-71.0949201SABNDKSLCLTXXD10.443589.7401202SLMEIIQECUAKK-5.0273-64.4090203LPNBDXSUU-16.502132.4432204KIHYS13.435431.2598205WXHGLAPCUE-22.29320.3281206BKBSTBJEY28.449475.0496207FKYJVABUMYMUL-44.7679-90.5208208PNJOQH78.1133102.8941209QMJNEBHDWGO-72.018457.2038210UPLIOPLVYWTAW36.8314-178.9313211LLDCAVMP-7.9818-12.7979212CWGPIK-73.9327-160.1303213BGAFHTTKA-56.379486.9926214KFUIKNRU41.7942109.3673215KIDSY-42.0034-116.0057216SWGLAWAEI23.612277.3595217QYUEJGWSWH-47.3561-31.2534218QUEKITOQUXLMKV-20.3481-90.0313219OVJJNUIXBV52.275777.7163220ESVOUWUKJEVWR64.5603-104.0958221SNFAPXRMFXWLG-48.3264-60.9911222TFQNXFXOTDNU76.6798-80.9719223OAAFPWQYECFI62.7213-150.7076224VTTIGMBRAO71.776948.8935225OYOWSEAG-85.883795.8313226ASCNTB-5.2151143.8472227QYGXWCLNDRUBN-85.983121.7760228DLKEJWK-32.5025110.6392229DPSGUXBFF20.6593143.5322230EASVMVORVKFH-6.3158102.4563231RANWOQJHDB42.19982.4197232LBJNCDIET56.0104176.9445233MIOQOJROHNVSGY57.0375175.3968234FSESAMUUVWEYLU-39.5367-161.2213235VCHQHLHPDE35.3334160.7269236EJNLTDUFT-77.6038-123.3854237KBBHBF-76.9073163.0630238TPLCMYRJTUFIFX42.0947-29.9270239QWJUVXVIKGJTF55.9728-163.3360240FUFBUXJL-71.2767-75.2734241GALIJHLM45.756348.7143242KOHXIQNQHS84.912298.8106243AYEQEQDXGPC-62.186226.4273244FBSAMJDGX-47.232142.6494245IACYHKFUE-1.412416.2153246KJVGRPNPRHFDQD76.2855136.8325247BFKUYVLSEBX-40.8392-167.0837248DIDSINCIVELJXT-15.7613-81.0275249ONBQMLRKXQQEG1.821586.8258250SEEOWDGIPYFS-86.287428.0893251IBLVAHFUKEB38.1788-73.2272252CBAMTJJO70.171482.9577253VTHATJKCT-19.643798.7720254FMRFSQQH-47.6544-156.5926255EJKMMXOPKDSX89.4336-20.4265256HIQKVCKENHA-53.6655-36.4467257CSFIEMEPBGJOJP11.6493175.1754258YEJCCGUXTXV-88.9844-33.4529259HNSELBADL83.5275-91.6027260AIXCSJPOAYRJJ45.3781-177.6117261DIPTFXTFGFFPFO34.6763-93.1706262VRVTFLEYBFKC-24.0473-86.6073263UQGMLJTJHBF51.568079.9489264TQKXYFC-34.9454-89.7849265ALKDTXLFVMMTL-6.099525.8888266UIFQRRGFCAC47.391034.2794267LWBFGRMMQ-0.832998.1008268YRVTMHQL64.7911-126.7741269EHRNYIKGPKTO-1.9261-107.9271270UVVLLQGY-4.7620-95.8630271RGBWHUJMT23.7535127.1008272MKUPKCFVBKTC-81.1590-177.3869273OXKBSBGIIMSRCN46.4506136.8507274WEONKL-5.200969.3119275JYVTXN-72.277571.9729276QXDIGI21.2702-57.2844277JFGRBTMSRFOJJA-9.89265.9828278CMIJAWGV5.2789163.3933279OOTBXCLPM32.728712.0710280UMAQWUFPPLXLDO17.132961.1389281EDEKGDHGA86.9332-138.4354282VTVUQY-73.7080-87.1280283YXBYXYFNUJPG-39.7192179.2927284AWULCGTBI-83.9210-26.0260285JOYUBGLRJFQYEM-89.1088159.2591286FUMUOSPC-28.741438.2791287LQQGS47.6205150.6299288HQHTTUACU-3.225716.4191289SGNRYR45.2940101.5718290NWDJNRHQLXC-11.212190.5677291ISUHCHVE-61.1919-52.9970292PXSOFEQ60.1387-41.2316293CTJGCK38.463366.3406294TSQGB-20.2822-74.3722295JVOEDKUQQSKYC87.7921121.7806296APWRO-65.7851-49.8561297RCOCTNKTK32.6171-78.0694298NTGLHXFPYI-12.612358.8462299EUABICWCN53.8793-44.0953300BIKAOFWIGIPRRY-56.9177134.9195301FAIFORWFBLWQ-67.854389.1866302CAJLHYVXCDVPL-72.5691-75.0436303HVXPVDDTR-37.2723-123.7758304ECDLSRS44.9285147.0006305WKLWWCOTR56.4038-12.8657306KOFGVOFSSK83.4616157.1383307JFVPYIG-70.057418.3842308XJLJVFQ-70.351999.7057309DDSCLGJGIEEQR-75.4433178.5480310SESXYLCSCDUMU-12.456285.1419311RBMDFEXSGRPV-4.261550.7056312TUVXCMKEAKI63.685856.0058313NEEWKDACDBNBQ-78.366810.4908314XGHOP-30.1335127.3884315PCETQJ53.2428-149.5340316TMUQXMX-61.3700-101.7661317JFYMKWLCSCQP87.9867-79.2989318IVKYSXMOTYMSI13.0800-161.5258319EPWMFGRWKJ-85.2186139.9322320ORMKNGXR-43.8715112.5177321NKQSDONCBQ26.5471-162.0785322SNFJFSYBSY-13.6462-60.8333323QBVHWMPRMJ-74.5727-48.4340324YDGVJYTRAER-80.7270-74.4425325EKHKTABTB-76.129444.9196326DJHHYF-31.5227-78.3976327OCGNNYVM16.006213.3976328KQVMJIAFCYTFK-2.4891-36.6599329FHALAPTCOLEGG-77.5811-45.0183330RSCJLUCM20.220820.7473331LYNJPTLHWNTBQ-58.4382-2.2016332YLDEMIOJBHR-41.1446-6.2109333KENEY3.4287-84.2154334JPVHMBGOBQXTEC-21.892319.7191335MATKN23.8940146.4884336EAHSCYFDMVL70.6986114.6183337AFHWI55.442471.3277338BCUGWJF-15.2612169.4270339QGNSIWCONQWQBY-82.713885.4721340UJITEOIEYUBAQ79.6762-113.4263341YKKSKSYVLNGD-53.3036178.4465342ONEQUVXHFY-83.711950.7635343WIODGOHX25.524730.1627344FASMGXBILQSTV-58.3257173.3405345AFKBQ-51.3162-179.4980346DGUMQFE18.5527-29.1663347IJYMYERY47.540990.5710348DACKP72.951420.8340349CNMUCG48.666264.6178350IKRLNU-80.5270-81.3679351MMDFEJ51.4000-105.2593352SDPELY-17.917832.2564353IXYNOOLR61.893365.6016354CJMBHUONLLU-72.7930-77.1009355NEHFFSMNBFVR-57.3920-166.1125356RUEJLRDGKOMYR33.7487110.7956357DCOFS51.860324.5972358LRXIQKNF-3.4669-2.9196359WAAJEHLLDI-84.398281.0622360SOVYKUMWKAWMKG-12.391664.6261361IAVGJFXAXC48.1498-37.1813362WFAUMMUCFF-88.9181161.1803363MUQWL-23.4584110.8606364OUMLQLOTRNGW-13.1749-102.0312365RSXKQNSHESR-36.48336.5230366QTNRM22.589791.0826367AKCEFJVXOJSXYG67.135355.8912368WCQNEURPUMEJ-28.920653.5029369CQBDSPDITO-66.485958.6758370PTKTW-18.6242130.7526371WRHRP-19.4885-37.8137372AETOLXQMGVA8.7548-45.5033373DAHLUKP-9.329870.5474374UXHJIOBHRASHUJ57.8223-113.6975375QJKQG-16.638416.5462376ECXHNHQPNXC34.1782-55.5126377TORJLWE-54.7595112.7149378PUAPTML-5.98679.0573379BWIFC-51.6322151.0404380IDSNWRDKHD-2.303661.6415381BUTSBPVBLFNSH14.4774-143.8672382FNULDL84.7466-14.5609383MLMEWFPAXM87.8369168.9467384OCEVTCRB62.047442.1690385XRLKNUYY31.5056-56.7329386IWXCXYUBJBAR22.489585.8866387QQRAJY-47.1167-86.8506388XRGHWAOMMUC75.821556.8315389SGJNAYDDJPQIFS-39.1564102.7421390WCVQICJPHY-80.7341160.0165391FTTDKKEWV80.010981.4290392SDMMOMSDXGXBR59.8212-167.2848393EDSFUPVGR-79.686492.6625394TKTQYPWF-53.23463.8781395YMEQKUL-66.50295.8720396KJCSFCR36.3270-44.3662397TENHDTCSCWCCU-87.7347-51.8223398JXYXS32.8494-174.2921399VCLUKOWREBPIN58.388214.6698400UXIJCMDDVS-85.244122.0641401RESEFSK-38.6139106.9083402RWNEYFFOIO-55.3727-11.6692403CELBW-87.5676107.6455404SCPSEXILGUUA-63.0420-30.1458405IHOHVJQRK-15.411891.1742406VHBSGBRMUAOTI4.493715.5338407HEWFIWESXPEN-4.9537143.6250408FJOJBVKNGDE-6.7038-154.0806409VMDYXVYF-24.6614-35.6705410ONSKCBPLL75.5846-76.7828411LBQKVTHYNK-72.2721-89.6699412RRBIXGMUDRGEU-86.0071152.0138413VDVWAR87.6821-111.5589414OSPDWSNMYEFW14.4755-132.1650415GSNTIVU40.075315.0445416YXPODNKPBBQR-6.0488156.7661417XJOWNGVYPRVSIK-67.1006-88.4274418JWNFQRNWB87.4577-104.0308419WMCUFRFQSLRFSX40.7874102.0666420NDIYATVTFFFTXQ65.5463131.0896421SVCLNPVQS3.27369.5869422EHIXU-75.1466-136.1170423AXQSXGUPOJC35.701337.0150424HFDUOIYGYOLB67.4264-74.0467425CTQRTBPNHAMO0.3772-113.7506426IMHIISW20.6671155.0984427FYDBXTJO-60.073933.5391428GBYLCBCQ71.5886-103.8798429CSUGONMCHMP-59.8397-22.3520430YJJRODERJPIGE-49.3994175.7557431JEWMVCTJHT-4.3615174.4669432YBXQTO7.8816167.6075433PSRLTDXRPPOETS48.2106-124.7564434CXXFMEWIHXGH54.0964-70.7402435XWLQSTTDTDQX-61.4011-11.9924436AYMBNOL-86.6866-159.6491437KITCWM-52.9793136.6785438VSENJ39.4711155.1627439XDQKVUCNVRRB19.679459.4453440OEYOSVD80.1360-151.4991441WLRUY-18.0762103.7637442BJGTVVGF-25.901235.4586443YVOEQW-33.1997-81.7509444BGXYETDLMOSBVW63.0860155.1824445FAOSFCT29.578181.9491446EQNKTQY-2.3008-68.1977447VLVLORVTTMD-58.06810.5831448SOOMPAWR15.6217169.3939449YJUMISSEUB-45.795241.8698450KCVHCIWYFIMRTN-47.086017.4985451CLOMPFHIACYDY-11.7949137.3268452HSFURMBKR-53.6125159.4046453EYSJLHYEVHIKF10.8156-118.5711454FWLCSOI2.5596-66.0474455IEKQQ31.1774-28.0243456FGDNCOUOHNRE54.3111-24.6926457RSYBOH36.56801.5340458QFQKCICMSAYFDY28.105157.4597459ENUOORJJYX42.4122-12.1315460LQBGIUJRN-76.88827.2864461RJIRQKPYE22.4313-92.0495462PXQNBBPXXS21.667128.5242463AWHLHCERK70.4172104.3307464VQFIMMYNOYB49.5043-12.6252465TITGKS-32.303744.0982466JUIHLQYCGJY24.9940112.3472467QQPCVBHMORSAY43.1424136.3866468EEGCTRJ-82.1385152.6326469KYVIVRCCKF-36.4950126.2308470XHVUNU28.4340-98.0771471UMPMJOK-47.279887.9212472VRDOBCUSTOHODL-83.0500-179.5593473JCUBKOHTQQKTS-83.0838-79.7670474VVRTQFSPTSJA-18.9883-38.7446475MQSCTJ0.5506-1.4548476GGBTSIWMYLLS-79.5549170.3270477CVDJJ-56.0613-121.8786478EESIDY1.0297116.9323479BBUHSWD-64.553215.4282480FAXURD-67.8617-141.1167481FTYDAFDTCJ10.7872-12.6612482JSTSCPTNCT81.0912-73.9397483HKVVTP68.8465-74.3544484HINBFYWXR51.587276.3221485AXDYBGQYFWEASS8.010962.4078486FPDLYWKQJ53.262363.8180487XMBYMNHNDPT20.2235107.3679488AUEUV-58.2749-98.9297489LQWWNYHFFA-2.1906-128.9709490ANTWR-77.4052-130.9706491TOWGAMNW-44.0907145.3146492PMYOMME-16.7771137.3985493TIUNNCGIAFBGHR-84.393261.1719494JHLACIKLP-63.7881-140.5211495ENBOSLIE-78.5718-160.8058496XDIGBSEWJUQNH89.344057.8917497HXEHIAMFVCSOQX-55.801642.1969498IOQQOXOCV7.382060.1613499EGTFYW-61.1800-28.1527500IGTVNSDTKBM-47.956065.3626501TYECUQLLF76.1557156.8860502FADDF-29.7284-54.0727503GRTFHQQHUH-78.364098.7678504JWURDIIXYRCHCD-17.356525.8317505RJSSOCFQYSD70.1897-94.6633506UDIGS-80.508134.0356507RTYANM57.6014171.4674508OEBQRAM-38.3148140.0569509VWEDUIDNUYW-58.1930-76.6879510OTIOH-48.9467-7.8921511SRUJTSAOMJSJF53.3331176.0855512PATFLHUUUNUBCB34.9890-82.7337513GGKDIJD75.633234.8685514PNIKDPRIQGUXLG-39.2084137.9349515GYOAHTTSDQCRKS31.3253132.9440516NHSDUSWKOC3.8621-53.4729517NDHAOR-57.5490-120.7303518CHPYW27.5055178.0199519UVXWAHDQ63.3718-72.8974520GVVEOIHLAXPIT-11.1865157.8646521VDKTBTJBXWYMF-37.1563-150.9796522UXBEIILNDGUDKB67.9121-14.2738523WNLAXTP-20.549583.9578524XNWUTCEA-78.295250.8385525QLVOPTRE64.4385-142.3637526QQYTULJB87.286464.2547527GNASEYJYPFN-45.7599102.5587528EWUUEMLV-43.568941.9640529VPPUY29.9802-175.6416530GYFIV78.1760105.1655531UMDNWMT-22.1648-163.4442532EQBODFUTSG-34.948787.1167533AGRLEXFHB29.2725112.5155534AINFLNJW47.5829-55.0995535DVBQQGTYDPMRUB0.7567126.9131536TUVSQGJFN-63.6058136.0497537MDMYGYRJEUFA32.0784-152.0288538VALRCX-34.9195-174.9648539PXAEKRBWOLF72.1868-155.2051540DONBLEMUFR-14.798597.4920541LOLTWCCOHHQOLW26.121068.1492542TKCNAXJ-3.4240-31.3848543IDRYVEIOU59.2615111.1065544IJCWDGFIXLQ-66.49604.2047545XROQSWPTLVCSL-5.4513-7.4869546SFHBUNAGDO37.9519-107.4571547JEIAWIRAN57.6829142.2459548MFSLDERM72.3603-87.8868549UUUSLQPVR58.0284-168.9190550ORDHOMRSXKXXKT-6.4607-148.7791551YRCBWAPAE-55.9594169.9813552SYMHNWWOMD-69.620755.3501553ELNLG80.4329-11.2582554PWUBGOSLQPQWON-3.0457-27.6888555QJEKAEP-31.423921.9709556WXOBTNS72.6944171.1772557MSXXRL4.1681-41.4636558WAGXGKCNBCJGFI-17.0619-95.1222559LWJKDUDBIM58.0831-141.3868560EALYGQDLH-37.2390-62.8022561UIFTQKAXWPOIVW87.0673104.2044562AWJPF66.5816170.7539563FHOYHMLC-71.326358.7525564KPEFPKKTCIMVDA56.9248-39.6876565PNWCULUKKLQI-87.141684.5753566MLHTNCIWVHD60.941716.8507567TQRBXKESATCATL-8.4067-9.6978568LGSPFF-20.7320-100.4784569ACWOQ88.993298.9944570QRBQLIBXWGH71.2851-147.5151571TSTFVVF73.0473-153.7503572SLHIXOOJQ61.562996.7885573SGDDXSNMTRPGN74.6632167.7996574BJEENBTDJT-43.6729-32.2687575CFENFGYYNBCGE18.9099-143.0202576BUBPM-86.0839-172.0917577MQDAXA-59.8164-64.5377578RFCGC67.102420.8135579KTEBRPKLY76.3370-41.7528580SNUCOCE-19.090968.9253581FBVBSDYLFSMH-55.9605-22.5032582TYPVUMVDU-64.4096-26.5662583FQLEMVFB-5.5100-140.3656584FOVAJX81.042845.9348585THQHM52.5190146.2639586MRULQCFWGHPW-12.725915.2831587SOCFMJXAPH74.617198.2118588LNYOSUKKV-47.8779-151.1835589BOHAIRUY-48.95097.2040590NGHYP35.1207110.8000591STRYDWEWO-48.460015.9077592RTVKYVCCYR-70.1907-46.6661593GXNJGV18.3565111.1131594STGVIESEFY89.7467-155.1119595RRRQNANEISI-5.7090-12.1572596THWQMK67.7531-125.3283597DVPVRJOXI-17.9442126.1390598EOSBMK39.851641.0091599JCXYSISDYSVQFU-32.6454-42.4857600VWPAMWUXK50.590281.3889601VWTPFCUV81.3682-38.7186602UMKOF17.8318-54.9054603LTMAHUMCFD-55.001439.2893604TEVEJG22.3876-64.4917605CQGNOPWKPAKT51.7380-177.2476606UQOHHSYHYH43.4930-160.5057607JHXJISJDDSH28.671618.8405608NQHRCYLDESS48.3535-106.1797609KDKUKXWRGLO-44.2693-93.6456610FNVONYSOVICCQ72.3187-53.6573611CIKDDXUN-76.5498-167.9971612LPDHYHI65.16241.1757613HQFMAHSHB18.2209-46.9082614HDQCARYIUUAHK-86.0032140.3193615CUCIRNBVUC19.9165-4.2084616KKRMGYGVKQITHY12.8463154.0639617CAACIUHSHD-88.6382-157.8564618DHNPUKCDHWP67.176265.4426619MXNAD87.506841.6643620QPWLACPWKWGOKV54.4295-78.7067621GVLFINCYHBFSGB-50.4337-178.2173622QJYHMY-24.191861.0366623CWHFJJTVLPFF-55.3445113.5667624UBGOFOOLELSD-80.7512-19.2356625MGLHRNSVUUHGAY-46.0967179.2092626ANXGHYNDK-3.1440-122.7753627DAYJDRFNGCY-39.3937-153.6960628QIFQLPFQ-21.6637-77.7563629YLIULFHRNM-64.6968-94.5659630LXWDCJPPI20.6752-48.0955631GVHBNTDYJDJXHL-32.007159.4885632MHMMONJ-81.3468-138.7471633HMAFVNMAS5.724991.2372634KQVCH63.4089-147.2895635WJMCLQSPP36.512070.0967636BDSVQCSIQ56.748311.9657637INFEIRAFXEWEX19.4460-174.1144638BGPVOHE80.882956.9515639ANQSDBCHKEUWW70.287152.1638640JCBXHFVIEJ69.146339.9859641OACQSO-3.4721-106.1419642RXHMAXFCT53.379634.9109643OBUIIAGL-6.7955-159.2272644WHEBRWHU-78.8628-133.7630645KKLKPAKG-48.667927.2369646AQRNSB5.461872.0058647KHFVLHMKNRI-62.9404-47.6863648DBLHKHADXCU39.0575171.4852649RDJUXQG-0.0474-46.9307650DBKQC-10.2102-141.5845651RMXJJAL-56.1147-129.4649652HHEGDWTQ-8.7441-139.9457653ITIMMWLSNAGWFL4.767091.0860654JNFLH56.6254149.8393655QCABUMJCIQDU30.5280-71.5826656RYXXIDMS-44.256288.2793657WHLORGIKYTQAU-64.3820-80.8191658GMXGQV-69.364274.4769659YFVHUUOK39.1836-147.2212660KGLCDKMJ-17.3635114.4715661PQQLC75.7126119.9782662EJUGJGJNE72.4453-125.4908663EUEVEFXPPX-14.9651-80.5928664SYIWOMDEIF15.9642-103.8166665LJJXJXUUWIG11.8315-131.7086666UOBXOYGVGCYV27.9501-73.9858667JLSDPW40.4415-13.1869668RETJNL48.446440.8905669BTYAQXQSG-28.2459-109.7948670XXSNKPD-56.1365136.4657671EFMMEVQTNTTO59.5536-6.8838672TDDWWSBBL71.9613113.1312673IYHYOEENDVK8.5049-37.9428674GVTIDGTHGTSLW-71.7204-5.1558675EQUTUJD-11.4156178.5189676QAGSEGNIT-5.0781-9.7241677PJSNADTIYSOJR37.7699-46.9492678FNRTSQIKRTUU54.4690-154.3991679VVNSHQLM53.720465.9689680OMOEMMJQNRGNBU44.792180.1460681UCGTE-61.4759121.4337682QPYKRMFXM54.2464-147.9432683RPTTWVUO43.7332-99.5051684UDHQYQMP3.5408-117.5502685XSVOIVOERFMQTX-82.0375-165.1417686DCCIQNRMBBAGM63.4444-162.8221687SKKWQAEEVEM-35.17331.4770688CWEGYIS-10.5660-111.1957689LBNLQTHXFTCB-82.8923-12.3853690BUVGEEAYYBRHX16.153226.6928691LKQXIDDVX27.1274-102.4344692IXXQFNVISFLP52.9421-46.9575693ECGOHOOCHXDEW-59.683737.6105694KWXWCK24.4669-102.1525695SWNHPSABBIF-44.3370-105.4520696HVVHV-69.8465-98.0513697KRXMKM-72.6403-19.2949698NKGDSJT-3.8685140.3243699KLMJU-88.7203-130.1150700EWXNE-77.5908129.3139701QWEUYNJGDFHAA65.5015-32.3888702MTVVFSXJC-47.8666-53.6563703FALUJCMKEXY-34.9870117.0394704CBJMEL-72.3819-143.2851705SADJDXJN-52.440433.8938706UGDIAGGXEWW-85.0393-74.3179707CBNPYXBQEGOVGG-55.1933-157.8701708HARXTLYJJVPK-23.1289-11.7437709FVQNKEQ3.2531-94.3439710SBCLARD-24.781925.5163711UJBLMTWFOHX-78.7505-44.3229712TYUGILQMLAB-71.3321-8.9286713OKEUCWHKXKE4.0295176.8388714MLOPSCEJTXUD76.982967.6188715RJCFIHNTQMPA-37.0441-137.9081716YLKAQQKLJKU-28.7667132.0667717WNNUEPOTWTDPP-58.1867-29.2348718CUMVMFSFRGPP-89.4030-11.2802719ODISSFSVLIHWA-67.5127171.4113720STJOFPXUXPXSM-17.5668-162.6417721EHVKCDXH-15.7284-102.4594722OVVPLEV38.4106150.4999723KPIKIEHI-76.1472-75.7183724UPCPBOS33.2496-0.2049725KVOBYATKYSY-76.967582.2267726XMJTON44.0660148.9732727LPMNPCQKAEX69.881199.6248728LODPWFQBVX-7.851834.7150729WBJMWWRVQTW-64.0114-157.4365730FAQBFFDHXAOVWV-53.7780126.0038731NJKKPLPSTE-5.020979.6728732YEPHM-57.3099-124.5063733ESTHQXK54.3936-30.2752734TLHQCUQD2.7558-21.1230735MYETRE54.4777-32.3247736ONSOMJT-72.594230.5923737OLIWAIQB41.6005103.1813738MACKPBRKHQ-24.689515.5470739TWXEDJKXRU-88.2418131.6223740YVDCCNNCRC-19.0127-174.9251741KRLRYY60.8506-85.4672742HRQVSFNBDMDHAO-34.0863-47.8970743RFFNNDO-69.4145169.1123744UNYTROJQXXHS30.9315-66.6669745XBCKCMSYYGIDQ-13.2989-19.5820746ETTIYSFH-69.2815131.8441747APHTSGJUIL-56.090436.8144748DMQCMFCPS-81.3291124.5623749VJUIPJ22.8827-151.4312750QRBGYICFESHJVH-31.018479.2891751LFRKSIHYMVFI68.4496-54.2624752MKTXWPNMCNI42.2344-66.9778753OIITHABMYOX-66.570823.7047754CVFYDAPC-33.4270-155.6637755GARHVVVYHRDQY-29.2316100.1489756PJADTJPDUSCM-75.688290.9141757POJUALOXJPBK20.9343-165.5408758HSHVNQ-88.762065.9620759NUXTEFJDOPABNT11.6285-77.4350760OMPXLBPJUUHCOX-24.254139.1561761GDAJTGADOUTN72.6520-54.2123762QYTEFAIYUQHS0.2363-89.4431763CVSCDLDK-34.8732-102.2799764SVYSVUE5.507313.1259765SJDPKCCWYNPU-77.4219-129.7448766WSPPDTNDJAEV-17.7609-85.7964767AQYHMCKJWGT60.6031152.3393768ESXFKRNRPTMP27.5646-91.4675769JVVJXFVOXGD-4.678412.0778770YMRVRFTNC58.098413.1165771ORIAT-35.0516-117.6981772TITDSVEPMU82.4686-59.9248773SROFYHCDVY-3.712682.0084774ODJWKSH83.5794104.0751775VSRDRH-30.4166-91.8867776LDNWCFTJMMDW-51.6687150.9926777KBXVIJGIKW14.059946.1927778HALSKULHV32.9380-91.2720779IGYNQEGSWG-71.0103-1.2990780BBHWA-10.8037-92.4674781SNAJRHWTANMBQ-25.7370-20.7823782CIQNFDAHS-41.766669.0769783YGHOBEE-38.4546-148.6203784XAJUVQD-33.462279.4905785BKSOSKRVDUCM11.5397124.3548786XRYXVRMIXM-84.0101108.1204787FAFKYHEPK-8.2008114.8115788FPOILXQ67.340767.1902789BJECMM-1.1476-164.0794790DBYVLTYCYS-16.8710-105.8997791GTUCFEVAUE-77.3794-158.8671792TDBKEOR78.0197-49.1744793WXAOPMTW-80.8343145.7020794TUNBWAV57.737510.3893795QSXEPVMJPKOR-56.420186.1301796URDOBQVXI80.0333-45.8375797GFUSFIYXOAM-27.5543-155.6874798DTVOMRBVX13.8385120.5571799EBVXFNAOADG-42.0579113.5014800FAMRUWTSPM79.4914135.8514801UQMFF52.9760166.6951802OYJJOSJVHOQNYD37.1458-87.0566803WPCDOWEFH49.4661146.2487804GANHIMWGXDPMD76.5172158.4860805AQOCWOUIXWY21.5154-37.6848806UGFUNYMCVOQ6.089078.0232807MJSRUPNH-34.3214148.4663808SPHQBGKWHXGS-8.9573-42.2454809SAYAXQ53.1878174.7638810WPQTRF-44.1086-151.4714811QMBCSGDXVIWOE-43.7241-34.7511812XOUHANX-25.6035-68.1931813JCCNT34.889032.9062814KOELFFFLYBKCV-37.9985-31.8814815HVCKAE-61.0301-56.1414816MNOXKNWOWPUK-53.9006-171.1924817EUQSVTQRCOFMAJ60.9193-151.8223818YHMJXRIUHRAY-55.7081-29.4657819XXFILRPTBMUH37.3709151.1220820HEUNMP50.0937-83.4556821YRVHIO86.0268-35.5182822DBDHHKMIVFRQN18.179435.3215823SLFCFAHKQPGF-23.1479-17.9157824STJXDPWLA62.1259-49.1036825UDAUELTI-75.647924.1896826USETVUNQJON-66.3413-31.9608827LQNVMUCREHDYDI-25.4383-5.4165828MRDEBWJ17.2093-46.8740829XFINPSLOCEI65.3008-134.0170830LCFCVJUENXXGS-15.536021.5943831GLMSUPFXTVJNCJ-73.628437.7987832SMKEENLLSNS70.092958.4483833MNMJRDMBNTU28.0105144.0604834WVKEHJKXXNCA70.862492.1837835FRTYRJ-36.6833-121.2285836MOAPFSDNNWKD-43.1903160.4615837JITTUHL40.8384-67.4545838BSHGGXF16.8426166.0135839DGXANI-25.261668.8132840NMSUGPPYGMI61.2037-7.3811841JHHCPGXEHMXDI-35.0529-120.5766842WDVFFICGYKA72.0086102.9718843GXNIJMTJQYGVXC-17.061894.0816844CCYKLMR53.2349124.7563845GVJVBDDMU-73.2195-158.3742846CXEEDMPOCEUNYU-7.056010.9905847SSGSGH-9.1325-136.3791848EURHAICO-72.8593108.9427849VPBTG-5.7273-25.6325850BPKRXBVUM61.0426-98.7177851MONTEWE81.1271-36.1928852YRVNIDAQV2.7620158.6590853PEUKHGSPKN-37.4631-7.1022854LLRAPQDXOAUB-12.9643-151.5328855DQSGBXQFYTUX74.3141-170.4962856AVPQBR65.054985.2821857MDOLWXXVRFI-17.9378119.0146858KJKBVLY-1.0684-62.8379859CKRBLKTPCYSYD-66.6284165.5255860HGSUOPGA-2.070089.5995861YMHODS23.7228-133.2791862ODDYARNACVPIN-13.2615-121.0704863PTXVMA-30.9466-12.5315864ANTLGKEAJAA48.4550-15.8579865XJAVDL62.4186-74.4162866MWKKSKJCTOC-34.3066-34.1658867KPEWBYWDCADEP79.2002-136.9241868DRXTMSXXCPL73.560065.0827869AOQSJOHTQUGFE-54.042424.1360870NXCEKBVUO79.6916-118.7601871PMJQP-56.172374.2529872XNNRMDLJIPUI-45.4878159.3774873XOVRWTVNHW4.467119.3103874AMWIDUSATETBT-41.9874-64.3870875OVTGTWPDIFN-11.935876.3260876EPVRJOITC68.9233-133.1262877UUILOXYNJARJNA13.0819-128.6594878NOOVHDKAMM-71.1508175.4478879BTPVOHOYGAB42.6802-60.8420880XNGVN2.4018131.1341881KPFAJONXPIFMV3.7526-174.7321882QLXHA51.022699.5730883URAHFWQXFW14.8145116.7325884EULVQQYCRIB-67.6706-76.3197885SUSMDNTLS15.5225-111.3837886FHJNH-55.7282102.0444887CNKCHRMEWGOYLN-74.6914-86.8407888KVAOCGFS-4.2691100.1039889TDBSBRSSGMSCA64.6555-36.2959890QRBIGSSJKXA-6.5072160.5290891IWMTDS-8.763267.8062892UKLCLKHWQQMG46.0877-101.4326893MYVOQ16.702947.6854894QHDYLBUONC68.7454178.3464895SFVYM-8.6464-119.9061896NPYMBO-34.3825-8.9711897AWNNXYRTBTYLJQ71.592244.6659898QAIQHMP32.4191-140.8149899UKEXADFJJ-14.9589-7.8115900KHMYYREQVFN-51.6214165.1592901VTKJJMYJQ-47.7832151.6928902WSMWOWIILP-9.6967-48.2289903LRYTWWODF29.0615-159.1738904SNHQBMFEDJMDB49.85679.6980905MRJESYO64.678210.0673906UJOTNVLAEKAXDH-45.0887-168.5958907YKEKKHIKSF-12.5237-145.8756908OVKVFFLOYNLDO-87.5577141.7086909JTIVQFPNDNVO23.5289171.7267910MJNWUKEK-21.4447-31.0616911RKEYAEYXL-19.3466-39.6074912IGRTY42.0364-125.7958913JLKBQQNKOSU-89.303148.2087914AVDCNNTVDESYOM18.231099.1944915WCXHJWN1.717773.0849916LBTPYUFV49.801634.9700917MTQUSLMGYTC0.8179-175.3386918XNYKGTDYDX-3.1366-26.9899919AANSPKF-20.90916.1218920NWVHCOE46.7621-9.1849921BQHFAJEW-18.7147110.3993922PJORFLC69.8263-90.6589923BWLRWQVYKXHFDJ26.71438.4347924YWGOVXMLHK-25.642636.5868925XFUQXI-74.3288170.3014926QQNNHRU11.495028.2262927OHMLTXUYPF82.5899-108.1161928MTXUDDSIMDEI46.553696.8113929UMOUGNIAXJA-53.680011.7244930LWEEMGTHHF-48.6489-29.7590931MEKHMUJGWOTE21.2242173.5481932BSOVDCBDKQII-8.2726-171.2884933HKNGONTMBDYSN29.3862108.9713934QRDPHUDWU37.2506-169.5754935IQGGU74.5937-144.3574936REGEQIVNE29.183842.8948937ODBDOFUUET7.490523.8776938XWWCRKOXQURVFE-49.6384-74.6888939QBIPSNQTJJG53.944362.2917940NJSDPEADLTAAK-78.4522148.4199941AAEJJINGKR-43.6466-161.4131942PTMSP-79.6810153.6645943FJLHIG69.5638-169.2355944FBMGIIAI65.1499-8.8222945YSCJFESCXER44.6143161.1520946HNODCU24.357212.7462947OJUEBBIVUDC66.299026.0430948AUNMQKYCDGG-28.9098-77.3470949YWXGBHPUL-8.6689-75.2493950FRXSOLTTWW16.030147.8618951KDQMBFRQJDCJD-23.3809-69.3811952EMPJRQ77.2602-92.6592953HRXBKGQV-57.169718.6982954IBYUAQEYEQAD-34.603456.0804955HXTHRDSIMLD74.9899-70.4879956TMQFFWMI47.8453-145.8979957JDDTEL42.5595-152.7507958GBYLR9.9487-61.0134959NAIVLSU56.5347112.1917960KMMNETUMDMNDK24.6711-108.8302961HFGTKXON-47.0107-175.5127962WKYPUYDGIQ84.3177-61.1709963YJKFCWRQXIBAG58.2367-50.6137964BBIAVAUGFCBMTN83.351619.6532965JMBYGHXNNXQAHK3.6050-80.8553966ELPGFUHBTQW82.62330.1910967JYOGFANVKBLHE-70.5808-112.7423968CSDFQGIC43.7609-77.7562969PKMYOIFFHCH-21.1727133.7644970JTYRW-13.54426.1549971GYKDP13.424061.0464972LAYUGGAGCNUK80.9193-81.4079973CJXJSTUTAQRC-77.1291130.5711974FCVDNCRA-32.477265.5218975BHWAYQ-53.3463106.0179976RWEJPRI65.8079-81.0305977WWVYYHV-55.6223-53.6181978IEEERYAD-84.9570-38.8719979GLQRGVSJMMDAF-34.838372.8480980BJNQRSMQWPIF85.1381-62.3057981SFCYFVBIXED-68.636176.2737982NKGUSFHOFECHO-82.5044-67.2223983BRQQDIJAXFA-61.4222-145.3796984RJKOIJQ-24.9329-163.9631985DIMNJRGH-86.2414-74.5231986AYYUMXVFN8.266061.9132987UXSDYNCTIAHYC-40.3308127.5482988TWWBILSJUY-74.1009-2.7435989YJUGGGQXDWN34.2806-94.6805990KMKMKXSEN43.705025.0209991KBUSAWMV-38.8700135.5028992EPMHKYJPJ-4.803851.3309993PAQOVSARR75.5774-88.2771994DLEJYCXWCE69.265031.2601995YPNYTSVPQT-71.8772113.5673996KYRVMV-85.280040.5971997YEQINU-11.2789114.4934998BOKYKEFHV-86.4026-49.8642999ABBQHTKJRSGNE-15.100129.5604 \ No newline at end of file diff --git a/src/main/java/cluster_manager/ClusterManager.java b/src/main/java/cluster_manager/ClusterManager.java index f05e200..2eaa5e9 100644 --- a/src/main/java/cluster_manager/ClusterManager.java +++ b/src/main/java/cluster_manager/ClusterManager.java @@ -13,24 +13,19 @@ public class ClusterManager { private File locationsxml; ClusterManager(File xml) { - locationsxml = xml; - try { + if (xml != null) { + locationsxml = xml; locations = LocationParser.parse(locationsxml); - } catch (Exception ex) { - ex.printStackTrace(); + } else { + System.out.println("File doesn't exist!"); } } ClusterManager(int count) { - try { - locationsxml = LocationGenerator.generate(1000); - locations = LocationParser.parse(locationsxml); - } catch (Exception ex) { - ex.printStackTrace(); - } + this(LocationGenerator.generate(count)); } - public List getLocations() { + List getLocations() { return Collections.unmodifiableList(locations); } diff --git a/src/main/java/cluster_manager/xml_logic/LocationGenerator.java b/src/main/java/cluster_manager/xml_logic/LocationGenerator.java index 630f7e7..9e77165 100644 --- a/src/main/java/cluster_manager/xml_logic/LocationGenerator.java +++ b/src/main/java/cluster_manager/xml_logic/LocationGenerator.java @@ -5,7 +5,9 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; @@ -13,46 +15,51 @@ public class LocationGenerator { - public static File generate(int count) throws Exception { - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); - Document locations = builder.newDocument(); + public static File generate(int count) { - Element rootElement = locations.createElement("root"); - locations.appendChild(rootElement); + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + try { + DocumentBuilder builder = factory.newDocumentBuilder(); + Document locations = builder.newDocument(); - for (int i = 0; i < count; i++) { - Element row = locations.createElement("row"); - rootElement.appendChild(row); + Element rootElement = locations.createElement("root"); + locations.appendChild(rootElement); - Element uniqueId = locations.createElement("UniqueID"); - uniqueId.appendChild(locations.createTextNode(String.format("%d", i))); - row.appendChild(uniqueId); + for (int i = 0; i < count; i++) { + Element row = locations.createElement("row"); + rootElement.appendChild(row); - Element name = locations.createElement("Name"); - name.appendChild(locations.createTextNode(Randomizer.getRandomName())); - row.appendChild(name); + Element uniqueId = locations.createElement("UniqueID"); + uniqueId.appendChild(locations.createTextNode(String.format("%d", i))); + row.appendChild(uniqueId); - Element latitude = locations.createElement("Latitude"); - latitude.appendChild(locations.createTextNode(Randomizer.getRandomLatitude())); - row.appendChild(latitude); + Element name = locations.createElement("Name"); + name.appendChild(locations.createTextNode(Randomizer.getRandomName())); + row.appendChild(name); - Element longitude = locations.createElement("Longitude"); - longitude.appendChild(locations.createTextNode(Randomizer.getRandomLongitude())); - row.appendChild(longitude); + Element latitude = locations.createElement("Latitude"); + latitude.appendChild(locations.createTextNode(Randomizer.getRandomLatitude())); + row.appendChild(latitude); - } + Element longitude = locations.createElement("Longitude"); + longitude.appendChild(locations.createTextNode(Randomizer.getRandomLongitude())); + row.appendChild(longitude); + } - File randomizedLocations = new File("C:\\Users\\vitalii_bondariev\\IdeaProjects\\LearningJava\\randomized_locations.xml"); + File randomizedLocations = new File("randomized_locations.xml"); - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - Transformer transformer = transformerFactory.newTransformer(); - DOMSource source = new DOMSource(locations); - StreamResult result = new StreamResult(randomizedLocations); + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + DOMSource source = new DOMSource(locations); + StreamResult result = new StreamResult(randomizedLocations); - transformer.transform(source, result); + transformer.transform(source, result); - return randomizedLocations; + return randomizedLocations; + } catch (ParserConfigurationException | TransformerException ex) { + ex.printStackTrace(); + return null; + } } diff --git a/src/main/java/cluster_manager/xml_logic/LocationParser.java b/src/main/java/cluster_manager/xml_logic/LocationParser.java index 1362539..e607ddc 100644 --- a/src/main/java/cluster_manager/xml_logic/LocationParser.java +++ b/src/main/java/cluster_manager/xml_logic/LocationParser.java @@ -4,55 +4,62 @@ import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; public class LocationParser { - public static List parse(File locationsXML) throws Exception { + public static List parse(File locationsXML) { List items = new ArrayList<>(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); - Document document = builder.parse(locationsXML); - - NodeList locationList = document.getElementsByTagName("row"); - - for (int i = 0; i < locationList.getLength(); i++) { - Node location = locationList.item(i); - if (location.getNodeType() == Node.ELEMENT_NODE) { - NodeList parameters = location.getChildNodes(); - int id = 0; - String name = null; - double latitude = 0; - double longitude = 0; - - for (int j = 0; j < parameters.getLength(); j++) { - Node parameter = parameters.item(j); - if (parameter.getNodeType() == Node.ELEMENT_NODE) { - if (parameter.getNodeName().equals("UniqueID")) { - id = Integer.parseInt(parameter.getTextContent()); - continue; - } - if (parameter.getNodeName().equals("Name")) { - name = parameter.getTextContent(); - continue; - } - if (parameter.getNodeName().equals("Latitude")) { - latitude = Double.parseDouble(parameter.getTextContent()); - continue; - } - if (parameter.getNodeName().equals("Longitude")) { - longitude = Double.parseDouble(parameter.getTextContent()); + try { + DocumentBuilder builder = factory.newDocumentBuilder(); + Document document = builder.parse(locationsXML); + + NodeList locationList = document.getElementsByTagName("row"); + + for (int i = 0; i < locationList.getLength(); i++) { + Node location = locationList.item(i); + if (location.getNodeType() == Node.ELEMENT_NODE) { + NodeList parameters = location.getChildNodes(); + int id = 0; + String name = null; + double latitude = 0; + double longitude = 0; + + for (int j = 0; j < parameters.getLength(); j++) { + Node parameter = parameters.item(j); + if (parameter.getNodeType() == Node.ELEMENT_NODE) { + if (parameter.getNodeName().equals("UniqueID")) { + id = Integer.parseInt(parameter.getTextContent()); + continue; + } + if (parameter.getNodeName().equals("Name")) { + name = parameter.getTextContent(); + continue; + } + if (parameter.getNodeName().equals("Latitude")) { + latitude = Double.parseDouble(parameter.getTextContent()); + continue; + } + if (parameter.getNodeName().equals("Longitude")) { + longitude = Double.parseDouble(parameter.getTextContent()); + } } } + items.add(new Location(id, name, latitude, longitude)); } - items.add(new Location(id, name, latitude, longitude)); } + } catch (ParserConfigurationException | SAXException | IOException ex) { + ex.printStackTrace(); } return items; } diff --git a/src/test/java/cluster_manager/ClusterManagerTest.java b/src/test/java/cluster_manager/ClusterManagerTest.java index 3df7b6b..b7097ac 100644 --- a/src/test/java/cluster_manager/ClusterManagerTest.java +++ b/src/test/java/cluster_manager/ClusterManagerTest.java @@ -12,7 +12,7 @@ public class ClusterManagerTest { @Test public void parsing_locations_from_xml() { - File location = new File("C:\\Users\\vitalii_bondariev\\IdeaProjects\\LearningJava\\locations.xml"); + File location = new File("locations.xml"); manager = new ClusterManager(location); List current = manager.getLocations(); From e67c63e9489d6b34a364f7905b7ff0c776584f79 Mon Sep 17 00:00:00 2001 From: "KYIV\\Vitalii_Bondariev" Date: Fri, 8 Jun 2018 17:11:45 +0300 Subject: [PATCH 15/15] Added findCenter method implementation for cluster, getInBounds method for ClusterManager and boolean inBounds method for LatLng type. --- src/main/java/cluster_manager/Cluster.java | 15 +++++++++++++- .../java/cluster_manager/ClusterManager.java | 20 ++++++++++++------- src/main/java/cluster_manager/LatLng.java | 4 ++++ src/main/java/cluster_manager/Location.java | 4 ++++ 4 files changed, 35 insertions(+), 8 deletions(-) diff --git a/src/main/java/cluster_manager/Cluster.java b/src/main/java/cluster_manager/Cluster.java index 3b44d40..c5ec775 100644 --- a/src/main/java/cluster_manager/Cluster.java +++ b/src/main/java/cluster_manager/Cluster.java @@ -18,7 +18,14 @@ public LatLng getCenter() { } private void findCenter() { - //...TO DO + double latitude = 0; + double longitude = 0; + + for (Location item : items) { + latitude += item.getLatitude(); + longitude += item.getLongitude(); + } + center = new LatLng(latitude / items.size(), longitude / items.size()); } public List getLocations() { @@ -29,4 +36,10 @@ public void addItem(Location item) { items.add(item); findCenter(); } + + static List manageLocations(List locations, int gridSize) { + List clusters = new ArrayList<>(); + //... TO DO + return clusters; + } } diff --git a/src/main/java/cluster_manager/ClusterManager.java b/src/main/java/cluster_manager/ClusterManager.java index 2eaa5e9..5774066 100644 --- a/src/main/java/cluster_manager/ClusterManager.java +++ b/src/main/java/cluster_manager/ClusterManager.java @@ -10,12 +10,13 @@ public class ClusterManager { private List locations; - private File locationsxml; + private List clusters; + private final int gridSize = 50; - ClusterManager(File xml) { - if (xml != null) { - locationsxml = xml; + ClusterManager(File locationsxml) { + if (locationsxml != null) { locations = LocationParser.parse(locationsxml); + clusters = Cluster.manageLocations(locations, gridSize); } else { System.out.println("File doesn't exist!"); } @@ -30,8 +31,13 @@ List getLocations() { } public List getInBounds(double minLat, double minLng, double maxLat, double maxLng) { - List clusters = new ArrayList<>(); - //...TO DO - return clusters; + List clustersInBounds = new ArrayList<>(); + + for (Cluster current : clusters) { + if (current.getCenter().inBounds(minLat, minLng, maxLat, maxLng)) { + clustersInBounds.add(current); + } + } + return clustersInBounds; } } diff --git a/src/main/java/cluster_manager/LatLng.java b/src/main/java/cluster_manager/LatLng.java index 677ed60..d9be3f4 100644 --- a/src/main/java/cluster_manager/LatLng.java +++ b/src/main/java/cluster_manager/LatLng.java @@ -16,4 +16,8 @@ class LatLng { double getLongitude() { return longitude; } + + boolean inBounds(double minLat, double minLng, double maxLat, double maxLng) { + return (latitude >= minLat && latitude <= maxLat) && (longitude >= minLng && longitude <= maxLng); + } } diff --git a/src/main/java/cluster_manager/Location.java b/src/main/java/cluster_manager/Location.java index cb57934..2925528 100644 --- a/src/main/java/cluster_manager/Location.java +++ b/src/main/java/cluster_manager/Location.java @@ -18,6 +18,10 @@ String getName() { return name; } + LatLng getLocation() { + return this; + } + public String toString() { return String.format("Location ID: %d - %s (lat: %f, lng: %f)", id, name, getLatitude(), getLongitude()); }