From 189d1b8ed93b1025c180c163a2cb5ea517120812 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 Jun 2021 20:53:26 +0100 Subject: [PATCH 01/13] datashards tests --- Makefile | 2 + datashards/LICENSE | 202 +++++++++++++ datashards/__init__.py | 5 + datashards/client.py | 271 ++++++++++++++++++ datashards/stores/__init__.py | 5 + .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 510 bytes .../stores/__pycache__/base.cpython-39.pyc | Bin 0 -> 6876 bytes .../__pycache__/filestore.cpython-39.pyc | Bin 0 -> 2850 bytes .../stores/__pycache__/fizzgig.cpython-39.pyc | Bin 0 -> 1761 bytes .../__pycache__/memorystore.cpython-39.pyc | Bin 0 -> 2175 bytes .../remotemagencstore.cpython-39.pyc | Bin 0 -> 1744 bytes datashards/stores/base.py | 177 ++++++++++++ datashards/stores/filestore.py | 68 +++++ datashards/stores/fizzgig.py | 50 ++++ datashards/stores/magencstore.py | 52 ++++ datashards/stores/memorystore.py | 43 +++ datashards/stores/remotemagencstore.py | 46 +++ datashards/usexp.py | 115 ++++++++ datashards/utils.py | 57 ++++ tests.py | 16 ++ 20 files changed, 1109 insertions(+) create mode 100644 datashards/LICENSE create mode 100644 datashards/__init__.py create mode 100644 datashards/client.py create mode 100644 datashards/stores/__init__.py create mode 100644 datashards/stores/__pycache__/__init__.cpython-39.pyc create mode 100644 datashards/stores/__pycache__/base.cpython-39.pyc create mode 100644 datashards/stores/__pycache__/filestore.cpython-39.pyc create mode 100644 datashards/stores/__pycache__/fizzgig.cpython-39.pyc create mode 100644 datashards/stores/__pycache__/memorystore.cpython-39.pyc create mode 100644 datashards/stores/__pycache__/remotemagencstore.cpython-39.pyc create mode 100644 datashards/stores/base.py create mode 100644 datashards/stores/filestore.py create mode 100644 datashards/stores/fizzgig.py create mode 100644 datashards/stores/magencstore.py create mode 100644 datashards/stores/memorystore.py create mode 100644 datashards/stores/remotemagencstore.py create mode 100644 datashards/usexp.py create mode 100644 datashards/utils.py diff --git a/Makefile b/Makefile index 7a54fd9db..55ff874f1 100644 --- a/Makefile +++ b/Makefile @@ -26,4 +26,6 @@ clean: rm -f deploy/*~ rm -f translations/*~ rm -rf __pycache__ + rm -f datashards/*~ + rm -rf datashards/__pycache__ rm -f calendar.css blog.css epicyon.css follow.css login.css options.css search.css suspended.css diff --git a/datashards/LICENSE b/datashards/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/datashards/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/datashards/__init__.py b/datashards/__init__.py new file mode 100644 index 000000000..b598f24a1 --- /dev/null +++ b/datashards/__init__.py @@ -0,0 +1,5 @@ +name='Datashards' +version='0.3.5' +from . import stores +from . import client +from . import utils diff --git a/datashards/client.py b/datashards/client.py new file mode 100644 index 000000000..d1e242ea3 --- /dev/null +++ b/datashards/client.py @@ -0,0 +1,271 @@ +__filename__ = "client.py" +__author__ = "Serge Wroclawski" +__author_email__ = 'serge@wroclawski.org' +__license__ = "Apache 2.0" +__version__ = "0.1" +__maintainer__ = "Bob Mottram" +__email__ = "bob@freedombone.net" +__status__ = "Production" + +from base64 import urlsafe_b64decode, urlsafe_b64encode +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes +from cryptography.hazmat.backends import default_backend +import os +import secrets +import hashlib +import datashards.usexp + +# The size of the IV in Python Cryptdome should be 32 bytes +IV_SIZE = 16 +CHUNK_SIZE = 32768 +MAX_RAW_SIZE = CHUNK_SIZE - 13 # 13 is the number of bits for sexp +KEY_SIZE = 32 + +BACKEND = default_backend() + + +def generate_key(length=KEY_SIZE): + """Generate a random key of length + + Args: + length (int): The size of the key + Returns: + string: The random key + """ + return secrets.token_bytes(length) + + +def make_iv(key, prefix, count=0): + """Make the initiaization vector for encryption/decryption + + Args: + key (bytes): The symmetrical key + prefix (str): The prefix to use ("entry" or "content") + count (int): The counter (defaults to 0) + + Returns: + bytes: The initialization vector in bytes + """ + # TODO: This needs to switch to appending together bytes + c = str(count).encode('latin-1') + raw = prefix + c + key + return hashlib.sha256(raw).digest()[:IV_SIZE] + + +def encrypt_shard_entry(data, key): + """Encrypt a raw file + + Args: + data (bytes): The data to be encrypted + key (bytes): The symmetrical key + + Returns: + bytes: The encrypted data + """ + iv = make_iv(key, b'entry-point') + cipher = Cipher(algorithms.AES(key), modes.CTR(iv), backend=BACKEND) + encryptor = cipher.encryptor() + return encryptor.update(data) + encryptor.finalize() + + +def decrypt_shard_entry(data, key): + """Decrypt an entry shard file + + Args: + data (bytes): The bytes to be decrypted + key (bytes): The symmetical key + + Returns: + bytes: The decrypted data + """ + iv = make_iv(key, b'entry-point') + cipher = Cipher(algorithms.AES(key), modes.CTR(iv), backend=BACKEND) + decryptor = cipher.decryptor() + return decryptor.update(data) + decryptor.finalize() + + +def encrypt_shard_chunk(data, key, count): + """Encrypt a file chunk + + Args: + data (bytes): The data to be encrypted + key (bytes): The symmetrical key + count (int): The block count + + Returns: + bytes: The encrypted data + """ + iv = make_iv(key, b'content', count) + cipher = Cipher(algorithms.AES(key), modes.CTR(iv), backend=BACKEND) + encryptor = cipher.encryptor() + return encryptor.update(data) + encryptor.finalize() + + +def decrypt_shard_chunk(data, key, count): + """Decrypt a file chunk + + Args: + data (bytes): The data to be decrypted + key (bytes): The symmetrical key + count (int): The block count + + Returns: + bytes: The decrypted data + """ + iv = make_iv(key, b'content', count) + cipher = Cipher(algorithms.AES(key), modes.CTR(iv), backend=BACKEND) + decryptor = cipher.decryptor() + return decryptor.update(data) + decryptor.finalize() + + +def make_manifest(xts, size): + """Create a manifest + + Args: + urns (list): A list of the URNS for the chunks + + Returns: + bytes: The raw (unencrypted) manifest + """ + manifest_data = ["manifest", size] + xts + manifest = usexp.dumpb(manifest_data) + size = len(manifest) + if size > MAX_RAW_SIZE: + raise NotImplementedError("Manifest too large") + return manifest + + +def pad(data, size=CHUNK_SIZE): + """Pad data to 32k + + Args: + data (bytes): The data to pad + size (int): The size of the destination + Returns: + bytes: The padded data + """ + data_size = len(data) + return data + (b'\0' * (size - data_size)) + + +def read_manifest(mlist): + """Takes in a manifest list and coerces the correct data structures from it + + Args: + mlist (list): The manifest in list form + Returns: + list: A usable manifest list + """ + manifest = [mlist[0].decode(), int(mlist[1])] + xts = [i.decode() for i in mlist[2:]] + manifest = manifest + xts + return manifest + + +def make_raw_shard(data): + """Create a raw shard + + Args: + data (bytes): The data + Returns + bytes: The data as a Data Shard raw entity + """ + raw = ['raw', data] + return usexp.dumpb(raw) + + +class Client(): + def __init__(self, store): + self.store = store + + def upload(self, fd, keyfun=generate_key): + """Upload a file to a store + + Args: + fd (file-like object): The file to send + keyfun (function): Function to generate the key (used for testing) + Raises: + NotImplementedError: If the store does not support the 'put' method + """ + if not hasattr(self.store, 'put'): + raise NotImplementedError("Store doesn't support the 'put' method") + + size = os.fstat(fd.fileno()).st_size + key = keyfun() + if size <= MAX_RAW_SIZE: + # If file is smaller than max raw file size, create a "raw" entity + data = fd.read() + sexp = make_raw_shard(data) + padded = pad(sexp) + encrypted_data = encrypt_shard_entry(padded, key) + xt_urn = self.store.put(encrypted_data) + xt = xt_urn.split(':')[2] + b64key = urlsafe_b64encode(key).rstrip(b'=').decode() + return f"idsc:p0.{xt}.{b64key}" + else: + xts = [] + count = 0 + current_size = 0 + while current_size <= size: + raw_data = fd.read(CHUNK_SIZE) + if len(raw_data) < CHUNK_SIZE: + raw_data = pad(raw_data) + data = encrypt_shard_chunk(raw_data, key, count) + xt_urn = self.store.put(data) + xts.append(xt_urn) + count += 1 + current_size += CHUNK_SIZE + # Finally generate the manifest + manifest = make_manifest(xts, size) + padded_manifest = pad(manifest) + encrypted_manifest = encrypt_shard_entry(padded_manifest, key) + xt_urn = self.store.put(encrypted_manifest) + xt = xt_urn.split(':')[2] + b64key = urlsafe_b64encode(key).rstrip(b'=').decode() + return f"idsc:p0.{xt}.{b64key}" + + def download(self, urn, fd): + """Download a file from a store + + Takes a URN and writes the data to the file descriptor + + Args: + urn (string): The URN of the file + fd (file-like object): A file object to write the file to + Raises: + NotImplementedError: If the store does not support 'get' + """ + if not hasattr(self.store, 'get'): + raise NotImplementedError("Store does not support 'get' method") + scheme, payload = urn.split(':') + if scheme != 'idsc': + raise NotImplementedError("Client can only handle IDSCs") + enc_suite, xt, b64key_prepad = payload.split('.') + pad = "=" * (4 - (len(b64key_prepad) % 4)) + b64key = b64key_prepad + pad + key = urlsafe_b64decode(b64key) + xt_urn = f"urn:sha256d:{xt}" + encrypted_data = self.store.get(xt_urn) + decrypted_data = decrypt_shard_entry(encrypted_data, key) + data = usexp.loadb(decrypted_data) + if data[0] == b'raw': + fd.write(data[1]) + fd.flush() + return + elif data[0] == b'manifest': + manifest = read_manifest(data) + size, chunks = manifest[1], manifest[2:] + # We need to assemble the pieces + i = 0 + current_size = 0 + for chunk in chunks: + encrypted_data = self.store.get(chunk) + data = decrypt_shard_chunk(encrypted_data, key, i) + current_size += CHUNK_SIZE + if current_size > size: + fd.write(data[:size % CHUNK_SIZE]) + fd.flush() + else: + fd.write(data) + fd.flush() + i += 1 diff --git a/datashards/stores/__init__.py b/datashards/stores/__init__.py new file mode 100644 index 000000000..45993cb0a --- /dev/null +++ b/datashards/stores/__init__.py @@ -0,0 +1,5 @@ +from .base import StoreError, BaseStore, GetStore, PutStore, CatalogStore, UsedStore, FreeupStore +from .memorystore import MemoryStore +from .filestore import FileStore +from .remotemagencstore import RemoteMagencStore +from .fizzgig import RemoteFizzgigStore \ No newline at end of file diff --git a/datashards/stores/__pycache__/__init__.cpython-39.pyc b/datashards/stores/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..46edeaa71ce7cb0d4db50abce1cd6cc3b8472574 GIT binary patch literal 510 zcmYjNOHRWu6mJ? zc(z*!TN%%ctv4^P%JTuib^iMGMjS%EwfMhW6xaBv7lfMB4kzGH2VClcM?LVV4*?Az zq#;B!a`YRQ$B@v(aE}ilrK#aQ&mgC{;Q>E_Asr$QXJj1xU^X88VAcuA?xYm5Pi`v3 zjPB!m*6rEjX3w(Qs;jtIT0ePKthO|rNX9m;5o4!MrwoML9%M3UxUGtJqbI!U*tA-* z_5ASS#F~?4w_7&0{KNRT_usJ{spla*4ZemzL#QFr5F^kOOrX+#A`|T-3(T}yPn(XU zi3JmD{Z#wW!e+`0)hCfhco_J-C{_Ykfi0}$yr|g+uijo*vR^qr#({0+?X6s0)V+*P5x=L)vH3A5MEvG3_lv;6yBJJfa zGdr}bEd>;H(6{!beQFTEek%Mo`X>tPYhUU=&;WVrcV@U3UhFun(-n5Pvom{k&N<)t z&Y6+7v{W^4T=>o3cmMXXVf>RC#iNAA7S8CexG;m6zR}RXX2Vo%t6?##VP7|x&74mS z=5XhM-6)}5Vr8_;53EKRtvOaftAf@XTJx-mRu!!ZS_^Cutwprv(OP0Pv}$No(Rzt3 zqqWS-y!yatEa1s8wt^=syvpbCWRaP-jQa5>n4hs7U)bq%Be%z8CuA<}x5 zwnNc#cXtOO*u3QV`ys&Axx9I)1210Q-OYsD0x=LNYKan?E5J%0KYxbNr!-PMkeD+b2I)qX5Je_hyhM|kXw}^V`}tLJ=WYC zK_t1y+ym}*ynEbDY>bRge!PQN(_;1^<^a08r_pmdUik$K&<*wr>cllS2&Eeh`u$KK zA`v^KsPA`WQq5IJmYZa{W@d$`UP_#Z`|ZTKFOzcA>hK;<=Cl5!tWA_hn3w~Sk_Dx- zCwcR}Tp@hX#i&~5s=0`>g1@S{Y{oBVC|@hQ@z@l^i!F+$^q_k>6GF2vW&m4#lu9b&@+NkIjR z5ICekYU1(hc?Xn6Uj_vwVyEsT)o#=U)V!d@lahK%)L`kv_IXgZ#WLMHG#x+(UyUZc zzLfcp2A#t2NaeR`75-kt8K0QpZyGyAOcSntXbwS353NVWktGeZtWnFB_CsfAKQfP; zp#xW&+d%9bf!Ocv0kDev#463aOkBQkJ~=iJe&n@zb8q834_YDP^^(#}d<(JQkalSZW*Cr{kK?)P28fFcDRWp7iSGPED3fK2RSB{Mw5=ne zT?<4CfP;KVPiH$W4P^VxcVdTFLoDD$xab6a#H+X@HW8-wnNmp{r>-m!>M*U{mrcsd zBkd?{MKr{~Lk8*h^+Q3DjKCia66dj##M@A^)}h}896aaCSR2l zRn+S|EBGe^WIrS{0=Mf$m^5{JLU@N6;i#N9krO}QhpIr!GU7pp>ok|kL<$6_QA%ou zgMel7DBpvuCv$2hLBH4S^+nj{!ar1*)03Fyn27CA-smB}_jrJ=@!5cnA!UG6P8I1O z$cZq^Yh$t$Sf)heP6OL$L3e}jAb=Mn7lG%yoQl-kncI)8DtP$)}m!7{xHHIMS?4m7OoU00l^AqLz!!x?PEK59JF=Gv3MzRFc+}k=qv>>i~h! z%@Lh_a#qC7h&V)vRwzpK8?QTxaYMwO$)`!YsE`q-0l73FRC-qE%^;lE{ek=lV{||q zj~7!MuAyVQ?o0;6S&W?-3qMB3?Nm_36x9B&B4Obwd?NMItwk%@^hi^~bv#fj+lkch z0S4=LpOPJNJWq#%O0dzUdy5jmnW#=dz|=(a(mP|T%uTak@I1t=zVwZ9_x}bSf*&2* zMeH<6YT5^M}6ZOa=Jq05h54UL0 z>$pr2>YUmoFj23RQLj{z#Vbg^ez>p9GKMHZ7ft&L$(k-U;(zN(!|z6t7K5l2Ja9%< zFVOysZV~h3=pyUQ0 zY{HP`1@;rL1vbMwQF&BZ5cFg!nh8W(H0&AW(fn;}49yN;B7*{=fG6{j zfo%+IqOBT0lo|hn;FJ=$x6i3`WvEuNXKEKoRqi>KW(F{@q^p)7gOhq~T4F)aH--W% zPftR5<#h2wx_gT*xhqt_I;8Di(2+)KEwkksb z4Wbop#?B>%eNODpVw)XKDJKi>3(g09OF{&UL8CAGwOj5;>1xMSojbUO3RT0OZ zKpZ609rWF(Pet);dM@s7dO_@C3FB6lfF~6gZn!w$Z3wc;-%63u`sd zKXKAUwHccO3ETWVER(;o?061x+QE7_ouW>`tU#RqKbjJ6!*i%1FW^Ve?v8>gHiuMU z6{TBZC1sTcZ8qUQ2b1_MlY0jJM|fTDt<+X%Z)K%`pEW%sCr%wN0T;(hv`fcoc!+Cx$6Jyq(e!bS0$3JN7?))$k? hCH-HP%Rs9R5!%eHSdP8y)HZ6zYbR>8+R2rr{{XuDriTCk literal 0 HcmV?d00001 diff --git a/datashards/stores/__pycache__/filestore.cpython-39.pyc b/datashards/stores/__pycache__/filestore.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9df52ec3a5ddbe181bb06c46ac6643c05f09aea3 GIT binary patch literal 2850 zcmZuz&2Jk;6rY*>^x8?>0HQ4wte`DelsGN4R3TLTA{Cc_2oTj$**cy{vhLdJ%&eQl zvM)^p6&F6PRi)%u{tPbs4|C##&a*YS}fr<e8KhR!`D3)78M;$3F`iH=(H8AOxvVPHK$Pn#Ie;Mq0DE%e`GvbGXk7 zP`f*?L$HS7B1P zQg1vGZ61X1EiN?BmV*y<8_FFh>KcfQH0d7e(|xKg^_e`Ekv$7rl(fs4&1s)L1MHt$ zJM;ixpS1RB5|Y&(^gQE3i&Gtw&e|-`A6_$XT}|=&4xRRw7x|g~L14 zf`$};1P;F-@-;yA-_NS+X-iaBfGF9ha`9LsX{RbWabr7eS4Rw14TGwR+!=MIv#tFo ziraA(MGzrGnSk+2)TSj?roHLI>&_fZYoKQzd<+z1+OT{Ylp)KcY3Fl|E()9XlpA9V2_WN)T`D5>TR_I%t z?XX|Y4(z_Y7wnT|!XRhZ@Y}H{w3f(aq8`o?YJT@YE|d0Yn`Fi9-MlX=?T{z*K54UA zSP7U|i!aes&E!gDLgJOQwI(v{MG;RMQKXBH>q!j!iD)Yu!_01`aoYf4&6QpW;(ZSC+?A`>_*`X5 zqT6Vz)6L{L)Fuvzz-ZDIfT&Bu=@E8~*pY9;0z-~`2elB_JDW1jgnSn}3@dKVifz`O z$8L-Uc>%?HC@`=`-Y?&W=0zw9gAAz&fSPe~O3*V-5SV@>QZZ`L!!TME9+(sK6yo3~ zvI>N7w(Dosp8b?Goqc+j?BHu=Egsnfy%o(zPi-3M0()al8!F&Sww2`(t zH$Fvs@OC~u{a^3G$W0qS4LqGQ^GVvMC+Y?$2W!BN0<6&9aE>9`n5I3PgeeGflDv$< z&|x%8M)G42pFkPrp@8*Hy>jT0_&|Tc;|%;Opqvap!aiVqc9%SuAEqD|@bn-i*ud^h zW;Vo&jgRIs*$5%I6t-(aPY-fW-w0=6q>m~01o99gL*7|X40+Q73I~urXOQ5Wx;QS(@8FQ2ONNTbQf zJ;vO^m7}5UbD6`1zQ+rQ4$?HkEEl7LFzLn&cXOWc4O1jhY(_rC!M7I`P}jw Lm&5s*36t_K}ne6rpXbVL!C&Z|t;eu2ugjy=71X6^$h{GHhhSGt?u5JTx!f8oT!Wnl;TCtQ>PU=){>Q-LrQSyLrmwQhM_XHD;aG!Xo&*>gX z{4>~1hG!HoaZT^DT!}s1NMXVULNBea+ocs*$LCTua)kRf8-u}J=;}iNK~l;|$~a9O z%;_mf-7bUF<30~y?DLTK;2ZD=^5~l@4@K2z@kKG8Pl|~>XnyrxEUh)RW{+{LQ|I z%Vw18qN(F%9BUZcOxAlI3f;>3T#zkCu1*}DQsclO2{Wz|99P7^BXTF za%;72gvzfP+G{R%V8DUPDfyH9#gNV6+{2@8N(`P*iEP`9JHQQ?fD|*CWmjO-B|u-2 zK)3EWF`>|j3*CzO3mBSA>6C$>(2t!3J)x99N-n3@$PwdgK?{21Xm3gvY~gU{S9ats z+^NsqADR482i$u?e}YonBi8GKcVCBK_l_eToY3cHLzw+p_qWdWfPmg`?hYnG8+M=* zYW!I)^GX%J18wt*dnidQ7e>Irmu9aTa}F(4%hK3acD1|iN4LtR&;hSYHBTNZG0|pnZ#Ei z@j7KLg5AXoX8B>+2iS|yGJ!5&lLRA_8iPQ_MkjiPKGMSE@?4&b08{6Av zN4uv)YOeeT$+7yyw{@lQt4o?D1Pa`~BYUeI)93TLi|V-~ZfMaR~Vf zh5BfK@B>V>2@5BjrX(PoaVw=63s`0aR%Qow<^)dW1}-H}3Aed(Ot>SMu!Jp~BR6Pp z`i%75b9jRc&nc{Zr)>TdDe+9_Qk33Pp_jW~r^{VuE7DP#?^VCIw?!&+r5@um^dPxC&BblfG-SQiu&8(86KWruq^DP4?+NgHSMS9g$OePR}T(Yh(ex?K^X}Mle9b zb9|)lN`zTjdqS6uFywh0hNYvX6Cum?t0+x?DiI!P*+gwiwo#iM>eA)Oo=_TiZ-!x< zMoIzvOK0S5(E9+Ua$zB~MOSEXtIi)7yygbf{iQ2v8-$zOpv1W3pi2v;-8mH45wpp{ zT7aA2USn=;Ko*{Qb9QF(a9B7~z5C7g{iZ|M`+=SjWrNIhN4c%d@M8Z{4`Hb|If2lc#z8qd_U3e(90411woRUQ7S;*bx8~Lpa^Q0ev^Bi; zBnBOcK<^bo+5@_tuP*2bIVC1j$Qt>B9oTS{$`w$6&t3emlC6I$F{ZWbHHq8WNE4;w zJezEO1;>BGB*p!Du(|1*>lU|0Ai1m5qs8j`_OB6vWqMIM>K+I;af@7@+GhkA{vR$e3k;XND=sS@ z4PIdJQ_$!$>BGn5%sVv7&*9)}JVZ3bgF61W`Y&`NfsVuyD;rClD+WvZrI@Lj71MMK zW!NVAFcoGPQdZo#!Cb$MJ!u?e0(wF#46~e1Q`~pL@L(FH)k$Tr2k*#RxM1Z=On4I* ziKfc#vPHxqO)uJnsSZ;o1`-Aj(I|Y$W47&ip4D+WP0y8h*7r(F%~WYaOBWI&XF8Xu iYQuoZBcoa+hu*$PgsxI|NaM(=i@y9 literal 0 HcmV?d00001 diff --git a/datashards/stores/__pycache__/remotemagencstore.cpython-39.pyc b/datashards/stores/__pycache__/remotemagencstore.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5301c4ef7188199566bce8271b5c673a05c4ca87 GIT binary patch literal 1744 zcmaJ>y^kC<6t_K}J9|qmkccQCn1X^4B1?l5MG%FYPzuBfhpZP5EUTcsM6@MGzRb%A$d?xGM?z8;*!9k&8`13k0s)Z~oSsQMO zrjDCwYz}1HsA5*syo~$FaX&k@({n_0R?x?~2UR1nE4m^Xum*dxpAzOX;uB!A{UOm9zJM_eDMd@SS>SvHHYTon0HQ;!8V(7~0^V+%o#m1VcG z?AoRqi=!^gvZ5|bmIX+Q#OJM;V85`Z&dQnl!ugr0yCx9s3;G-`>^`xr9<)9*A^3xrk?>#9bG-rdJ~P9u zy#qLTIO*7-NoeOUxZ;&AegmeKm-bPPxNb~5ZQ5F#{0gmayw*%Vzj^Wx_{omKvvkf( znl8vP(d1dy4WIC`05xTHXu43z$F0;x+ndl0H6%l;v%C?IuHVTco0whnBQIOo`$68+ z29l=pg~VYBUya1=rMQIK1q*&uHe7U6y`_!10{vL^hhPYe;1|+eYhAFr^vo`=Uc54J zigQ{yu*6!cDFoZJ0*yS-$X`)GK_j+e^FT1GQ3yV&;cTdZy{^@2xV3i&)bJ(=>*;ba zDHPr_^)8zCz$7CDZ!3_#XpOpx-e^s@9sWMHxr+v}9J5bdLvtO?2WXHP%W3Bt38Fha zvmaygM`$ot|GVxghVT=p8hPz0MMD3dO29TrLQIvKR}wBolx0;T+7kVpEPLGYvhT4+ zP$O7cy@LjKv3qXdu!u1C6ec}NV&B7%x-5)BC)~B|Nuc_p!viA~if3=9Wy>Dej@q_t S7k<@)yNwTo#tlMxjr|MUn3Y2S literal 0 HcmV?d00001 diff --git a/datashards/stores/base.py b/datashards/stores/base.py new file mode 100644 index 000000000..89817fb6b --- /dev/null +++ b/datashards/stores/base.py @@ -0,0 +1,177 @@ +import hashlib +import base64 +import random + +notimplemented = "This method is inherited from an abastract base class" + + +class StoreError(Exception): + pass + + +class BaseStore(): + """This is the core abstract base store that offers validation""" + # Currently only sha256 is supported + _hash_algorithms = ('sha256d') + _shard_size = 32768 + + def validate_xt(self, xt): + """Validate the XT + + Args: + xt (str): The shard in XT form ``urn::`` + Returns: + tuple(str): The urn, algorithm and digest + Raises: + ValueError: Raised if the XT is invalid + """ + try: + scheme, algorithm, digest = xt.split(':') + except ValueError: + raise ValueError(f"XT must be in the form urn::. Instead we have {xt}") + if scheme != 'urn': + raise ValueError("XTs must begin with 'urn'") + if algorithm not in self._hash_algorithms: + raise ValueError(f"Hashing algorithm {algorithm} not supported") + return scheme, algorithm, digest + + def validate_data(self, data, sizes=(32768,)): + """Validate data that will be stored + + Args: + data (bytes): The data + Returns: + bool: True if valid + Raises: + ValueError: Raised if the data is invalid (wrong type or size) + """ + if not isinstance(data, bytes): + raise ValueError("Data must of type bytes") + if not len(data) in sizes: + raise ValueError("Data must be of supported size") + return True + + def sha256d_data(self, data): + digest = hashlib.sha256(data).digest() + digest2 = hashlib.sha256(digest).digest() + encoded_digest = base64.urlsafe_b64encode(digest2) + return encoded_digest + + def xt_from_digest(self, digest, algorithm='sha256d'): + if isinstance(digest, bytes): + digest = str(digest, 'utf-8') + return f"urn:{algorithm}:{digest}" + + +class GetStore(): + """This is the abstract base class for stores that have the "get" method""" + def get(self, xt): + """Get a shard from the store by XT + + Args: + xt (string): ID of the shard in XT form ``urn::`` + Returns: + bytes: The requested data as a bytearray + Raises: + KeyError: Raised when the requested XT is not found + ValueError: Raised when the XT is improperly formatted + NotImplementedError: Raised if XT uses an unsupported algorithm + StoreError: Raised if the store has an unknown internal error + + """ + raise NotImplementedError(notimplemented) + + +class PutStore(): + def put(self, data): + """Place the data in the store + + Args: + data (bytearray): The data to store + + Currently this must be a 32k long byte array + + Returns: + string: The URN of the data in XT form ``urn::`` + + If the store supports multiple hashing algorithms, it will select + its preferred algorithm + + Raises: + ValueError: Raised if data is of the wrong type or unsupported size + StoreError: Raised if the store has an unknown internal error + + """ + raise NotImplementedError(notimplemented) + + +class DeleteStore(): + def delete(self, *shard): + """Delete a shard from the store + + Args: + shards: Shard(s) to delete from the store + Raises: + KeyError: Raised when the requested shard is not found + ValueError: Raised when the XT is improperly formatted + StoreError: Raised if the store has an unknown internal error + """ + raise NotImplementedError(notimplemented) + + +class CatalogStore(): + def catalog(self): + """Get a listing of all the shards in the store + + Returns: + list (string): A list of shards in the store in XT form + + Raises: + StoreError: Raised if the store has an unknown internal error + """ + raise NotImplementedError(notimplemented) + + def _random_shards(self, n=1): + """Get a selection of random shards in the store + + Args: + n (int): Number of random shards to retrieve + Returns: + list (string): A list of shards in XT form + Raises: + StoreError: Raised if the store has an unknown internal error + """ + return random.choices(self.catalog(), k=n) + + +class UsedStore(BaseStore, CatalogStore): + def used(self): + """Get the storage used by the store in bytes + + Returns: + int: The number of bytes used by the store + + Raises: + StoreError: Raised if the store has an unknown internal error + """ + return len(self.catalog()) * self._shard_size + + +class FreeupStore(CatalogStore, DeleteStore): + def freeup(self, count=1): + """Free up space in the store + + This method will free up space in the store + and return the list of shards it has deleted + + Args: + count (int); The number of items to delete from the store + Returns: + list (string): The list of deleted shards in XT form + Raises: + StoreError: Raised if the store has an unknown internal error + """ + # This may not work due to inheritance! + shards = random.choices(self.catalog(), k=count) + self.deletes(shards) + return shards diff --git a/datashards/stores/filestore.py b/datashards/stores/filestore.py new file mode 100644 index 000000000..b90d95164 --- /dev/null +++ b/datashards/stores/filestore.py @@ -0,0 +1,68 @@ +import os +from .base import BaseStore, GetStore, PutStore, \ + FreeupStore, UsedStore, StoreError, CatalogStore + +class FileStore(BaseStore, GetStore, PutStore, FreeupStore): + """A datashards store with a file backend + """ + def __init__(self, directory=None, create_dir=False): + """Instantiate the store + + Args: + directory: The directory where the data should be stored + Returns: + A new FileStore isinstance + """ + if not os.path.isdir(directory): + if create_dir: + os.mkdir(directory) + else: + raise ValueError(f"Store directory {directory} does not exist") + self._dir = directory + + def __repr__(self): + dir = os.path.abspath(self._dir) + return f"file://{dir}" + + def get(self, xt): + self.__doc__ = GetStore.get.__doc__ + digest = self.validate_xt(xt)[2] + path = os.path.join(self._dir, digest) + if os.path.exists(path): + try: + with open(path, 'rb') as fd: + return fd.read() + except OSError: + raise StoreError() + + def put(self, data): + self.__doc__ = PutStore.put.__doc__ + self.validate_data(data) + digest = str(self.sha256d_data(data), 'utf-8') + path = os.path.join(self._dir, digest) + if not os.path.exists(path): + try: + with open(path, 'wb') as fd: + fd.write(data) + except OSError: + raise StoreError() + xt = f"urn:sha256d:{digest}" + return xt + + def catalog(self): + self.__doc__ = CatalogStore.catalog.__doc__ + # We'll assume the store directory does not contain other files + return [self.xt_from_digest(f) for f in os.listdir(self._dir) + if os.path.isfile(os.path.join(self._dir, f))] + + def delete(self, xts): + self.__doc__ = DeleteStore.deletes.__doc__ + + digests = [self.validate_data[xt][2] for xt in l] + for digest in digests: + path = os.path.join(self._dir, digest) + try: + os.remove(path) + except OSError: + raise StoreError() + return digests diff --git a/datashards/stores/fizzgig.py b/datashards/stores/fizzgig.py new file mode 100644 index 000000000..96bb96042 --- /dev/null +++ b/datashards/stores/fizzgig.py @@ -0,0 +1,50 @@ +import requests +from .base import BaseStore, GetStore, PutStore, StoreError + +class RemoteFizzgigStore(BaseStore, GetStore, PutStore): + """A remote Fizzgig store""" + + + def __init__(self, url): + """Create a RemoteFizzgigStore + + Args: + url (string): The location of the store + Returns: + RemoteFizzgigStore + """ + self.url = url + + def __repr__(self): + return f"fizz+{self.url}" + + def get(self, xt): + self.__doc__ = GetStore.get.__doc__ + self.validate_xt(xt) + url = self.url + '/get' + payload = {'xt': xt} + r = requests.get(url, params=payload) + if r.status_code == 404: + raise KeyError("Shard not found") + return + elif r.status_code == 400: + raise ValueError(r.content.decode('utf-8')) + return + elif r.status_code == 500: + raise StoreError(r.content.decode('utf-8')) + return + return r.content + + def put(self, data): + self.__doc__ = PutStore.put.__doc__ + self.validate_data(data) + url = self.url + '/put' + r = requests.put(url=url, data=data) + if r.status_code == 400: + raise ValueError(r.content.decode('utf-8')) + return + elif r.status_code == 500: + raise StoreError(r.content.decode('utf-8')) + return + parsed = r.json() + return parsed['xt'] diff --git a/datashards/stores/magencstore.py b/datashards/stores/magencstore.py new file mode 100644 index 000000000..55912922c --- /dev/null +++ b/datashards/stores/magencstore.py @@ -0,0 +1,52 @@ +import http.server +import socketserver +from urllib.parse import urlparse, parse_qs + +from .base import BaseStore, GetStore, PutStore, StoreError +from .memorystore import MemoryStore + +memstore = MemoryStore() + +class MagencStore(http.server.BaseHTTPRequestHandler): + def do_GET(self): + print(f"Request recieved: {self.path}") + try: + parsed = urlparse(self.path) + query = parsed.query + params = parse_qs(query) + xt = params['xt'][0] + result = memstore.get(xt) + except KeyError: + self.send_response(404) + self.end_headers() + self.wfile.write(f'Shard Not Found'.encode()) + return + except ValueError as err: + self.send_response(400) + self.wfile.write(f"Malformed request: {err}".encode()) + return + except Exception as err: + self.send_response(500) + self.wfile.write(f"Server Error: {err}".encode()) + return + self.send_response(200) + self.send_header('Content-type', 'application/octet-stream') + self.end_headers() + self.wfile.write(result) + + def do_POST(self): + #length = int(self.headers['Content-Length']) + #content = self.rfile.read(length) + content = self.rfile.read(32768) + try: + xt = memstore.put(content) + except ValueError as err: + self.send_response(400) + self.wfile.write(f"Malformed request: {err}".encode()) + except Exception as err: + self.send_response(500) + self.wfile.write(f"Server Error: {err}".encode()) + self.send_response(200) + self.send_header('Content-type', 'text/plain') + self.end_headers() + self.wfile.write(xt.encode()) diff --git a/datashards/stores/memorystore.py b/datashards/stores/memorystore.py new file mode 100644 index 000000000..a3b16e687 --- /dev/null +++ b/datashards/stores/memorystore.py @@ -0,0 +1,43 @@ +import sys +from .base import BaseStore, GetStore, PutStore, CatalogStore, DeleteStore + +class MemoryStore(BaseStore, GetStore, + PutStore, CatalogStore): + """BasicStore is a basic datashards store with a memory backend. + + This is more of an example than anything you'd use + """ + def __init__(self): + """Create a new MemoryStore instance + + returns: + A new `MemoryStore` object + """ + self._store = {} + + def __repr__(self): + return "memory://" + + def get(self, xt): + self.__doc__ = GetStore.get.__doc__ + digest = super().validate_xt(xt)[2] + return self._store[digest] + + def put(self, data): + self.__doc__ = PutStore.put.__doc__ + super().validate_data(data) + + digest = super().sha256d_data(data) + str_digest = d = str(digest, 'utf-8') + self._store[str_digest] = data + return self.xt_from_digest(digest) + + def delete(self, *xts): + self.__doc__ = DeleteStore.delete.__doc__ + digests = [self.validate_xt(xt)[2] for xt in xts] + for d in digests: + del(self._store[d]) + + def catalog(self): + self.__doc__ = CatalogStore.catalog.__doc__ + return [self.xt_from_digest(digest) for digest in self._store.keys()] diff --git a/datashards/stores/remotemagencstore.py b/datashards/stores/remotemagencstore.py new file mode 100644 index 000000000..ae25496d5 --- /dev/null +++ b/datashards/stores/remotemagencstore.py @@ -0,0 +1,46 @@ +import requests +from .base import BaseStore, GetStore, PutStore, StoreError + +class RemoteMagencStore(BaseStore, GetStore, PutStore): + """This is an impelmentation of the original Remote Magenc Store""" + + def __init__(self, url): + """Create a RemoteMagencStore + + Args: + url (string): The location of the store + Returns: + RemoteMagencStore + """ + self.url = url + + def __repr__(self): + return f"magenc+{self.url}" + + def get(self, xt): + self.__doc__ = GetStore.get.__doc__ + self.validate_xt(xt) + payload = {'xt': xt} + r = requests.get(self.url, params=payload) + if r.status_code == 404: + raise KeyError("Shard not found") + return + elif r.status_code == 400: + raise ValueError(r.content.decode('utf-8')) + return + elif r.status_code == 500: + raise StoreError(r.content.decode('utf-8')) + return + return r.content + + def put(self, data): + self.__doc__ = PutStore.put.__doc__ + self.validate_data(data) + r = requests.post(url=self.url, data=data) + if r.status_code == 400: + raise ValueError(r.content.decode('utf-8')) + return + elif r.status_code == 500: + raise StoreError(r.content.decode('utf-8')) + return + return r.text \ No newline at end of file diff --git a/datashards/usexp.py b/datashards/usexp.py new file mode 100644 index 000000000..77117f949 --- /dev/null +++ b/datashards/usexp.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 + +""" +The Unorthodox Cannonical S-Expression Parser +""" + +__version__ = "0.1" + +from io import StringIO, IOBase, BytesIO +from collections import namedtuple + +TypeHinted = namedtuple('TypeHinted', 'hint data') + +digits = (b'0', b'1', b'2', b'3', b'4', b'5', b'6', b'7', b'8', b'9') + +def read_hint(fd, pos): + hint = b'' + while True: + ch = fd.read(1) + pos += 1 + if ch == b']': + return hint, pos + else: + hint += ch + +def read_list(fd, pos): + """Read a list""" + out = [] + read_ahead = "" + hint = None + while True: + ch = fd.read(1) + pos += 1 + if ch == b')': + return (out, pos) + elif ch == b'(': + new_list, pos = read_list(fd, pos) + out.append(new_list) + elif ch == b'[': + hint, pos = read_hint(fd, pos) + elif ch == b':': + pos += 1 + if not read_ahead: + raise ValueError(f"Colon but no read ahead at position {pos}") + else: + read_ahead = int(read_ahead) + raw = fd.read(read_ahead) + if hint: + out.append(TypeHinted(hint=hint.decode(), data=raw)) + else: + out.append(raw) + pos += read_ahead + read_ahead = '' + hint = None + elif ch in digits: + read_ahead += ch.decode('ascii') + else: + raise ValueError(f"Unexpected {ch} at position {pos}") + + +def load(file): + """Parse a file-like object""" + out = [] + pos = 0 + ch = file.read(1) + if not ch == b'(': + raise ValueError("Expected start of file to begin with (") + else: + out, trash = read_list(file, pos) + return out + +def loadb(b): + """Parses a bytestring""" + f = BytesIO(b) + return load(f) + +def dump_bytes(b): + l = len(b) + return f"{l}:".encode() + b + +def dump_string(s): + l = len(s) + return f"{l}:{s}".encode() + +def dump_hinted(obj): + b = dump_bytes(obj[1]) + return f"[{obj[0]}]".encode() + b + +def dump_number(n): + return dump_string(f"{n}") + +def dump_sequence(seq): + out = b'' + for obj in seq: + if isinstance(obj, TypeHinted): + out += dump_hinted(obj) + elif isinstance(obj, (list, tuple)): + out += b'(' + dump_sequence(obj) + b')' + elif isinstance(obj, str): + out += dump_string(obj) + elif isinstance(obj, bytes): + out += dump_bytes(obj) + elif isinstance(obj, (int, float, complex)): + out += dump_number(obj) + else: + raise ValueError(f"Don't know how to serialize type {type(obj)}") + return out + +def dumpb(seq): + out = b'(' + dump_sequence(seq) + b')' + return out + +def dump(seq, fd): + out = dump_sequence(seq) + fd.write(seq) diff --git a/datashards/utils.py b/datashards/utils.py new file mode 100644 index 000000000..6fd458163 --- /dev/null +++ b/datashards/utils.py @@ -0,0 +1,57 @@ +from urllib.parse import urlparse, urlunparse +from .stores import MemoryStore, RemoteMagencStore, FileStore, RemoteFizzgigStore +from .client import Client + +def filestore(u): + """Take results of store and return FileStore object""" + # We only care about the path for this + return FileStore(u.path) + +def memorystore(u): + return MemoryStore() + +def magencstore(u): + # Remove magenc from the scheme and reassemble + l = list(u) + l[0] = l[0][7:] + return RemoteMagencStore(urlunparse(l)) + +def fizzgigstore(u): + l = list(u) + l[0] = l[0].lstrip('fizz+') + return RemoteFizzgigStore(urlunparse(l)) + +def store(uri): + """Takes in a Datashards URI and returns the appropriate store for it + + Args: + uri (string): The URI representation of the store + Returns: + Object: A datashards store + """ + scheme_map = { + 'file': filestore, + 'memory': memorystore, + 'magenc': magencstore, + 'fizz': fizzgigstore, + } + + parsed = urlparse(uri) + scheme = parsed.scheme.split('+')[0] + if scheme in scheme_map: + return scheme_map[scheme](parsed) + else: + raise ValueError(f"Unsupported scheme for store {scheme}") + + +def client(uri): + """Create a client tied to the store sent by uri + + Args: + uri (string): The URI representation of the store + Returns: + Client: A datashards client + """ + st = store(uri) + return Client(st) + diff --git a/tests.py b/tests.py index c6501392d..6691464bc 100644 --- a/tests.py +++ b/tests.py @@ -116,6 +116,7 @@ from mastoapiv1 import getNicknameFromMastoApiV1Id from webapp_post import prepareHtmlPostNickname from webapp_utils import markdownToHtml from speaker import speakerReplaceLinks +import datashards testServerAliceRunning = False testServerBobRunning = False @@ -3798,9 +3799,24 @@ def testRoles() -> None: assert not actorHasRole(actorJson, "artist") +def testDatashards() -> None: + print('testDatashards') + shipper = datashards.utils.store('memory://') + assert shipper + saveData = open('README.md', 'rb').read() + data_size = len(saveData) + saveData = saveData + (b'\0' * (32768 - data_size)) + assert len(saveData) == 32768 + urn = shipper.put(saveData) + assert urn + loadData = shipper.get(urn) + assert loadData + + def runAllTests(): print('Running tests...') updateDefaultThemesList(os.getcwd()) + testDatashards() testFunctions() testRoles() testSkills() From e563562b20958003e85126ee987e3eb4fd4fc4b4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 Jun 2021 20:54:20 +0100 Subject: [PATCH 02/13] Tidying --- Makefile | 2 ++ .../stores/__pycache__/__init__.cpython-39.pyc | Bin 510 -> 0 bytes .../stores/__pycache__/base.cpython-39.pyc | Bin 6876 -> 0 bytes .../stores/__pycache__/filestore.cpython-39.pyc | Bin 2850 -> 0 bytes .../stores/__pycache__/fizzgig.cpython-39.pyc | Bin 1761 -> 0 bytes .../__pycache__/memorystore.cpython-39.pyc | Bin 2175 -> 0 bytes .../__pycache__/remotemagencstore.cpython-39.pyc | Bin 1744 -> 0 bytes 7 files changed, 2 insertions(+) delete mode 100644 datashards/stores/__pycache__/__init__.cpython-39.pyc delete mode 100644 datashards/stores/__pycache__/base.cpython-39.pyc delete mode 100644 datashards/stores/__pycache__/filestore.cpython-39.pyc delete mode 100644 datashards/stores/__pycache__/fizzgig.cpython-39.pyc delete mode 100644 datashards/stores/__pycache__/memorystore.cpython-39.pyc delete mode 100644 datashards/stores/__pycache__/remotemagencstore.cpython-39.pyc diff --git a/Makefile b/Makefile index 55ff874f1..5671df253 100644 --- a/Makefile +++ b/Makefile @@ -27,5 +27,7 @@ clean: rm -f translations/*~ rm -rf __pycache__ rm -f datashards/*~ + rm -f datashards/stores/*~ rm -rf datashards/__pycache__ + rm -rf datashards/stores/__pycache__ rm -f calendar.css blog.css epicyon.css follow.css login.css options.css search.css suspended.css diff --git a/datashards/stores/__pycache__/__init__.cpython-39.pyc b/datashards/stores/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 46edeaa71ce7cb0d4db50abce1cd6cc3b8472574..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 510 zcmYjNOHRWu6mJ? zc(z*!TN%%ctv4^P%JTuib^iMGMjS%EwfMhW6xaBv7lfMB4kzGH2VClcM?LVV4*?Az zq#;B!a`YRQ$B@v(aE}ilrK#aQ&mgC{;Q>E_Asr$QXJj1xU^X88VAcuA?xYm5Pi`v3 zjPB!m*6rEjX3w(Qs;jtIT0ePKthO|rNX9m;5o4!MrwoML9%M3UxUGtJqbI!U*tA-* z_5ASS#F~?4w_7&0{KNRT_usJ{spla*4ZemzL#QFr5F^kOOrX+#A`|T-3(T}yPn(XU zi3JmD{Z#wW!e+`0)hCfhco_J-C{_Ykfi0}$yr|g+uijo*vR^qr#({0+?X6s0)V+*P5x=L)vH3A5MEvG3_lv;6yBJJfa zGdr}bEd>;H(6{!beQFTEek%Mo`X>tPYhUU=&;WVrcV@U3UhFun(-n5Pvom{k&N<)t z&Y6+7v{W^4T=>o3cmMXXVf>RC#iNAA7S8CexG;m6zR}RXX2Vo%t6?##VP7|x&74mS z=5XhM-6)}5Vr8_;53EKRtvOaftAf@XTJx-mRu!!ZS_^Cutwprv(OP0Pv}$No(Rzt3 zqqWS-y!yatEa1s8wt^=syvpbCWRaP-jQa5>n4hs7U)bq%Be%z8CuA<}x5 zwnNc#cXtOO*u3QV`ys&Axx9I)1210Q-OYsD0x=LNYKan?E5J%0KYxbNr!-PMkeD+b2I)qX5Je_hyhM|kXw}^V`}tLJ=WYC zK_t1y+ym}*ynEbDY>bRge!PQN(_;1^<^a08r_pmdUik$K&<*wr>cllS2&Eeh`u$KK zA`v^KsPA`WQq5IJmYZa{W@d$`UP_#Z`|ZTKFOzcA>hK;<=Cl5!tWA_hn3w~Sk_Dx- zCwcR}Tp@hX#i&~5s=0`>g1@S{Y{oBVC|@hQ@z@l^i!F+$^q_k>6GF2vW&m4#lu9b&@+NkIjR z5ICekYU1(hc?Xn6Uj_vwVyEsT)o#=U)V!d@lahK%)L`kv_IXgZ#WLMHG#x+(UyUZc zzLfcp2A#t2NaeR`75-kt8K0QpZyGyAOcSntXbwS353NVWktGeZtWnFB_CsfAKQfP; zp#xW&+d%9bf!Ocv0kDev#463aOkBQkJ~=iJe&n@zb8q834_YDP^^(#}d<(JQkalSZW*Cr{kK?)P28fFcDRWp7iSGPED3fK2RSB{Mw5=ne zT?<4CfP;KVPiH$W4P^VxcVdTFLoDD$xab6a#H+X@HW8-wnNmp{r>-m!>M*U{mrcsd zBkd?{MKr{~Lk8*h^+Q3DjKCia66dj##M@A^)}h}896aaCSR2l zRn+S|EBGe^WIrS{0=Mf$m^5{JLU@N6;i#N9krO}QhpIr!GU7pp>ok|kL<$6_QA%ou zgMel7DBpvuCv$2hLBH4S^+nj{!ar1*)03Fyn27CA-smB}_jrJ=@!5cnA!UG6P8I1O z$cZq^Yh$t$Sf)heP6OL$L3e}jAb=Mn7lG%yoQl-kncI)8DtP$)}m!7{xHHIMS?4m7OoU00l^AqLz!!x?PEK59JF=Gv3MzRFc+}k=qv>>i~h! z%@Lh_a#qC7h&V)vRwzpK8?QTxaYMwO$)`!YsE`q-0l73FRC-qE%^;lE{ek=lV{||q zj~7!MuAyVQ?o0;6S&W?-3qMB3?Nm_36x9B&B4Obwd?NMItwk%@^hi^~bv#fj+lkch z0S4=LpOPJNJWq#%O0dzUdy5jmnW#=dz|=(a(mP|T%uTak@I1t=zVwZ9_x}bSf*&2* zMeH<6YT5^M}6ZOa=Jq05h54UL0 z>$pr2>YUmoFj23RQLj{z#Vbg^ez>p9GKMHZ7ft&L$(k-U;(zN(!|z6t7K5l2Ja9%< zFVOysZV~h3=pyUQ0 zY{HP`1@;rL1vbMwQF&BZ5cFg!nh8W(H0&AW(fn;}49yN;B7*{=fG6{j zfo%+IqOBT0lo|hn;FJ=$x6i3`WvEuNXKEKoRqi>KW(F{@q^p)7gOhq~T4F)aH--W% zPftR5<#h2wx_gT*xhqt_I;8Di(2+)KEwkksb z4Wbop#?B>%eNODpVw)XKDJKi>3(g09OF{&UL8CAGwOj5;>1xMSojbUO3RT0OZ zKpZ609rWF(Pet);dM@s7dO_@C3FB6lfF~6gZn!w$Z3wc;-%63u`sd zKXKAUwHccO3ETWVER(;o?061x+QE7_ouW>`tU#RqKbjJ6!*i%1FW^Ve?v8>gHiuMU z6{TBZC1sTcZ8qUQ2b1_MlY0jJM|fTDt<+X%Z)K%`pEW%sCr%wN0T;(hv`fcoc!+Cx$6Jyq(e!bS0$3JN7?))$k? hCH-HP%Rs9R5!%eHSdP8y)HZ6zYbR>8+R2rr{{XuDriTCk diff --git a/datashards/stores/__pycache__/filestore.cpython-39.pyc b/datashards/stores/__pycache__/filestore.cpython-39.pyc deleted file mode 100644 index 9df52ec3a5ddbe181bb06c46ac6643c05f09aea3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2850 zcmZuz&2Jk;6rY*>^x8?>0HQ4wte`DelsGN4R3TLTA{Cc_2oTj$**cy{vhLdJ%&eQl zvM)^p6&F6PRi)%u{tPbs4|C##&a*YS}fr<e8KhR!`D3)78M;$3F`iH=(H8AOxvVPHK$Pn#Ie;Mq0DE%e`GvbGXk7 zP`f*?L$HS7B1P zQg1vGZ61X1EiN?BmV*y<8_FFh>KcfQH0d7e(|xKg^_e`Ekv$7rl(fs4&1s)L1MHt$ zJM;ixpS1RB5|Y&(^gQE3i&Gtw&e|-`A6_$XT}|=&4xRRw7x|g~L14 zf`$};1P;F-@-;yA-_NS+X-iaBfGF9ha`9LsX{RbWabr7eS4Rw14TGwR+!=MIv#tFo ziraA(MGzrGnSk+2)TSj?roHLI>&_fZYoKQzd<+z1+OT{Ylp)KcY3Fl|E()9XlpA9V2_WN)T`D5>TR_I%t z?XX|Y4(z_Y7wnT|!XRhZ@Y}H{w3f(aq8`o?YJT@YE|d0Yn`Fi9-MlX=?T{z*K54UA zSP7U|i!aes&E!gDLgJOQwI(v{MG;RMQKXBH>q!j!iD)Yu!_01`aoYf4&6QpW;(ZSC+?A`>_*`X5 zqT6Vz)6L{L)Fuvzz-ZDIfT&Bu=@E8~*pY9;0z-~`2elB_JDW1jgnSn}3@dKVifz`O z$8L-Uc>%?HC@`=`-Y?&W=0zw9gAAz&fSPe~O3*V-5SV@>QZZ`L!!TME9+(sK6yo3~ zvI>N7w(Dosp8b?Goqc+j?BHu=Egsnfy%o(zPi-3M0()al8!F&Sww2`(t zH$Fvs@OC~u{a^3G$W0qS4LqGQ^GVvMC+Y?$2W!BN0<6&9aE>9`n5I3PgeeGflDv$< z&|x%8M)G42pFkPrp@8*Hy>jT0_&|Tc;|%;Opqvap!aiVqc9%SuAEqD|@bn-i*ud^h zW;Vo&jgRIs*$5%I6t-(aPY-fW-w0=6q>m~01o99gL*7|X40+Q73I~urXOQ5Wx;QS(@8FQ2ONNTbQf zJ;vO^m7}5UbD6`1zQ+rQ4$?HkEEl7LFzLn&cXOWc4O1jhY(_rC!M7I`P}jw Lm&5s*36t_K}ne6rpXbVL!C&Z|t;eu2ugjy=71X6^$h{GHhhSGt?u5JTx!f8oT!Wnl;TCtQ>PU=){>Q-LrQSyLrmwQhM_XHD;aG!Xo&*>gX z{4>~1hG!HoaZT^DT!}s1NMXVULNBea+ocs*$LCTua)kRf8-u}J=;}iNK~l;|$~a9O z%;_mf-7bUF<30~y?DLTK;2ZD=^5~l@4@K2z@kKG8Pl|~>XnyrxEUh)RW{+{LQ|I z%Vw18qN(F%9BUZcOxAlI3f;>3T#zkCu1*}DQsclO2{Wz|99P7^BXTF za%;72gvzfP+G{R%V8DUPDfyH9#gNV6+{2@8N(`P*iEP`9JHQQ?fD|*CWmjO-B|u-2 zK)3EWF`>|j3*CzO3mBSA>6C$>(2t!3J)x99N-n3@$PwdgK?{21Xm3gvY~gU{S9ats z+^NsqADR482i$u?e}YonBi8GKcVCBK_l_eToY3cHLzw+p_qWdWfPmg`?hYnG8+M=* zYW!I)^GX%J18wt*dnidQ7e>Irmu9aTa}F(4%hK3acD1|iN4LtR&;hSYHBTNZG0|pnZ#Ei z@j7KLg5AXoX8B>+2iS|yGJ!5&lLRA_8iPQ_MkjiPKGMSE@?4&b08{6Av zN4uv)YOeeT$+7yyw{@lQt4o?D1Pa`~BYUeI)93TLi|V-~ZfMaR~Vf zh5BfK@B>V>2@5BjrX(PoaVw=63s`0aR%Qow<^)dW1}-H}3Aed(Ot>SMu!Jp~BR6Pp z`i%75b9jRc&nc{Zr)>TdDe+9_Qk33Pp_jW~r^{VuE7DP#?^VCIw?!&+r5@um^dPxC&BblfG-SQiu&8(86KWruq^DP4?+NgHSMS9g$OePR}T(Yh(ex?K^X}Mle9b zb9|)lN`zTjdqS6uFywh0hNYvX6Cum?t0+x?DiI!P*+gwiwo#iM>eA)Oo=_TiZ-!x< zMoIzvOK0S5(E9+Ua$zB~MOSEXtIi)7yygbf{iQ2v8-$zOpv1W3pi2v;-8mH45wpp{ zT7aA2USn=;Ko*{Qb9QF(a9B7~z5C7g{iZ|M`+=SjWrNIhN4c%d@M8Z{4`Hb|If2lc#z8qd_U3e(90411woRUQ7S;*bx8~Lpa^Q0ev^Bi; zBnBOcK<^bo+5@_tuP*2bIVC1j$Qt>B9oTS{$`w$6&t3emlC6I$F{ZWbHHq8WNE4;w zJezEO1;>BGB*p!Du(|1*>lU|0Ai1m5qs8j`_OB6vWqMIM>K+I;af@7@+GhkA{vR$e3k;XND=sS@ z4PIdJQ_$!$>BGn5%sVv7&*9)}JVZ3bgF61W`Y&`NfsVuyD;rClD+WvZrI@Lj71MMK zW!NVAFcoGPQdZo#!Cb$MJ!u?e0(wF#46~e1Q`~pL@L(FH)k$Tr2k*#RxM1Z=On4I* ziKfc#vPHxqO)uJnsSZ;o1`-Aj(I|Y$W47&ip4D+WP0y8h*7r(F%~WYaOBWI&XF8Xu iYQuoZBcoa+hu*$PgsxI|NaM(=i@y9 diff --git a/datashards/stores/__pycache__/remotemagencstore.cpython-39.pyc b/datashards/stores/__pycache__/remotemagencstore.cpython-39.pyc deleted file mode 100644 index 5301c4ef7188199566bce8271b5c673a05c4ca87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1744 zcmaJ>y^kC<6t_K}J9|qmkccQCn1X^4B1?l5MG%FYPzuBfhpZP5EUTcsM6@MGzRb%A$d?xGM?z8;*!9k&8`13k0s)Z~oSsQMO zrjDCwYz}1HsA5*syo~$FaX&k@({n_0R?x?~2UR1nE4m^Xum*dxpAzOX;uB!A{UOm9zJM_eDMd@SS>SvHHYTon0HQ;!8V(7~0^V+%o#m1VcG z?AoRqi=!^gvZ5|bmIX+Q#OJM;V85`Z&dQnl!ugr0yCx9s3;G-`>^`xr9<)9*A^3xrk?>#9bG-rdJ~P9u zy#qLTIO*7-NoeOUxZ;&AegmeKm-bPPxNb~5ZQ5F#{0gmayw*%Vzj^Wx_{omKvvkf( znl8vP(d1dy4WIC`05xTHXu43z$F0;x+ndl0H6%l;v%C?IuHVTco0whnBQIOo`$68+ z29l=pg~VYBUya1=rMQIK1q*&uHe7U6y`_!10{vL^hhPYe;1|+eYhAFr^vo`=Uc54J zigQ{yu*6!cDFoZJ0*yS-$X`)GK_j+e^FT1GQ3yV&;cTdZy{^@2xV3i&)bJ(=>*;ba zDHPr_^)8zCz$7CDZ!3_#XpOpx-e^s@9sWMHxr+v}9J5bdLvtO?2WXHP%W3Bt38Fha zvmaygM`$ot|GVxghVT=p8hPz0MMD3dO29TrLQIvKR}wBolx0;T+7kVpEPLGYvhT4+ zP$O7cy@LjKv3qXdu!u1C6ec}NV&B7%x-5)BC)~B|Nuc_p!viA~if3=9Wy>Dej@q_t S7k<@)yNwTo#tlMxjr|MUn3Y2S From 05e9c058362814736222a55c3b6ed3d55ace7c3a Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 Jun 2021 22:03:33 +0100 Subject: [PATCH 03/13] Simplify test --- tests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests.py b/tests.py index 6691464bc..7fcc5b8b6 100644 --- a/tests.py +++ b/tests.py @@ -3803,12 +3803,12 @@ def testDatashards() -> None: print('testDatashards') shipper = datashards.utils.store('memory://') assert shipper - saveData = open('README.md', 'rb').read() + saveData = b'some data to be stored' data_size = len(saveData) saveData = saveData + (b'\0' * (32768 - data_size)) assert len(saveData) == 32768 urn = shipper.put(saveData) - assert urn + assert urn == 'urn:sha256d:5JSThDD4-TdA24qygZPKtmVwbv1fErijAnF-u5EOLco=' loadData = shipper.get(urn) assert loadData From cffac4a45bf32e9ceab7f7aea9a66efbdd1ebe9f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Thu, 10 Jun 2021 23:04:49 +0100 Subject: [PATCH 04/13] Remove datashards. According to the author it's not ready and the spec will change --- datashards/LICENSE | 202 ------------------ datashards/__init__.py | 5 - datashards/client.py | 271 ------------------------- datashards/stores/__init__.py | 5 - datashards/stores/base.py | 177 ---------------- datashards/stores/filestore.py | 68 ------- datashards/stores/fizzgig.py | 50 ----- datashards/stores/magencstore.py | 52 ----- datashards/stores/memorystore.py | 43 ---- datashards/stores/remotemagencstore.py | 46 ----- datashards/usexp.py | 115 ----------- datashards/utils.py | 57 ------ tests.py | 16 -- 13 files changed, 1107 deletions(-) delete mode 100644 datashards/LICENSE delete mode 100644 datashards/__init__.py delete mode 100644 datashards/client.py delete mode 100644 datashards/stores/__init__.py delete mode 100644 datashards/stores/base.py delete mode 100644 datashards/stores/filestore.py delete mode 100644 datashards/stores/fizzgig.py delete mode 100644 datashards/stores/magencstore.py delete mode 100644 datashards/stores/memorystore.py delete mode 100644 datashards/stores/remotemagencstore.py delete mode 100644 datashards/usexp.py delete mode 100644 datashards/utils.py diff --git a/datashards/LICENSE b/datashards/LICENSE deleted file mode 100644 index d64569567..000000000 --- a/datashards/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/datashards/__init__.py b/datashards/__init__.py deleted file mode 100644 index b598f24a1..000000000 --- a/datashards/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -name='Datashards' -version='0.3.5' -from . import stores -from . import client -from . import utils diff --git a/datashards/client.py b/datashards/client.py deleted file mode 100644 index d1e242ea3..000000000 --- a/datashards/client.py +++ /dev/null @@ -1,271 +0,0 @@ -__filename__ = "client.py" -__author__ = "Serge Wroclawski" -__author_email__ = 'serge@wroclawski.org' -__license__ = "Apache 2.0" -__version__ = "0.1" -__maintainer__ = "Bob Mottram" -__email__ = "bob@freedombone.net" -__status__ = "Production" - -from base64 import urlsafe_b64decode, urlsafe_b64encode -from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes -from cryptography.hazmat.backends import default_backend -import os -import secrets -import hashlib -import datashards.usexp - -# The size of the IV in Python Cryptdome should be 32 bytes -IV_SIZE = 16 -CHUNK_SIZE = 32768 -MAX_RAW_SIZE = CHUNK_SIZE - 13 # 13 is the number of bits for sexp -KEY_SIZE = 32 - -BACKEND = default_backend() - - -def generate_key(length=KEY_SIZE): - """Generate a random key of length - - Args: - length (int): The size of the key - Returns: - string: The random key - """ - return secrets.token_bytes(length) - - -def make_iv(key, prefix, count=0): - """Make the initiaization vector for encryption/decryption - - Args: - key (bytes): The symmetrical key - prefix (str): The prefix to use ("entry" or "content") - count (int): The counter (defaults to 0) - - Returns: - bytes: The initialization vector in bytes - """ - # TODO: This needs to switch to appending together bytes - c = str(count).encode('latin-1') - raw = prefix + c + key - return hashlib.sha256(raw).digest()[:IV_SIZE] - - -def encrypt_shard_entry(data, key): - """Encrypt a raw file - - Args: - data (bytes): The data to be encrypted - key (bytes): The symmetrical key - - Returns: - bytes: The encrypted data - """ - iv = make_iv(key, b'entry-point') - cipher = Cipher(algorithms.AES(key), modes.CTR(iv), backend=BACKEND) - encryptor = cipher.encryptor() - return encryptor.update(data) + encryptor.finalize() - - -def decrypt_shard_entry(data, key): - """Decrypt an entry shard file - - Args: - data (bytes): The bytes to be decrypted - key (bytes): The symmetical key - - Returns: - bytes: The decrypted data - """ - iv = make_iv(key, b'entry-point') - cipher = Cipher(algorithms.AES(key), modes.CTR(iv), backend=BACKEND) - decryptor = cipher.decryptor() - return decryptor.update(data) + decryptor.finalize() - - -def encrypt_shard_chunk(data, key, count): - """Encrypt a file chunk - - Args: - data (bytes): The data to be encrypted - key (bytes): The symmetrical key - count (int): The block count - - Returns: - bytes: The encrypted data - """ - iv = make_iv(key, b'content', count) - cipher = Cipher(algorithms.AES(key), modes.CTR(iv), backend=BACKEND) - encryptor = cipher.encryptor() - return encryptor.update(data) + encryptor.finalize() - - -def decrypt_shard_chunk(data, key, count): - """Decrypt a file chunk - - Args: - data (bytes): The data to be decrypted - key (bytes): The symmetrical key - count (int): The block count - - Returns: - bytes: The decrypted data - """ - iv = make_iv(key, b'content', count) - cipher = Cipher(algorithms.AES(key), modes.CTR(iv), backend=BACKEND) - decryptor = cipher.decryptor() - return decryptor.update(data) + decryptor.finalize() - - -def make_manifest(xts, size): - """Create a manifest - - Args: - urns (list): A list of the URNS for the chunks - - Returns: - bytes: The raw (unencrypted) manifest - """ - manifest_data = ["manifest", size] + xts - manifest = usexp.dumpb(manifest_data) - size = len(manifest) - if size > MAX_RAW_SIZE: - raise NotImplementedError("Manifest too large") - return manifest - - -def pad(data, size=CHUNK_SIZE): - """Pad data to 32k - - Args: - data (bytes): The data to pad - size (int): The size of the destination - Returns: - bytes: The padded data - """ - data_size = len(data) - return data + (b'\0' * (size - data_size)) - - -def read_manifest(mlist): - """Takes in a manifest list and coerces the correct data structures from it - - Args: - mlist (list): The manifest in list form - Returns: - list: A usable manifest list - """ - manifest = [mlist[0].decode(), int(mlist[1])] - xts = [i.decode() for i in mlist[2:]] - manifest = manifest + xts - return manifest - - -def make_raw_shard(data): - """Create a raw shard - - Args: - data (bytes): The data - Returns - bytes: The data as a Data Shard raw entity - """ - raw = ['raw', data] - return usexp.dumpb(raw) - - -class Client(): - def __init__(self, store): - self.store = store - - def upload(self, fd, keyfun=generate_key): - """Upload a file to a store - - Args: - fd (file-like object): The file to send - keyfun (function): Function to generate the key (used for testing) - Raises: - NotImplementedError: If the store does not support the 'put' method - """ - if not hasattr(self.store, 'put'): - raise NotImplementedError("Store doesn't support the 'put' method") - - size = os.fstat(fd.fileno()).st_size - key = keyfun() - if size <= MAX_RAW_SIZE: - # If file is smaller than max raw file size, create a "raw" entity - data = fd.read() - sexp = make_raw_shard(data) - padded = pad(sexp) - encrypted_data = encrypt_shard_entry(padded, key) - xt_urn = self.store.put(encrypted_data) - xt = xt_urn.split(':')[2] - b64key = urlsafe_b64encode(key).rstrip(b'=').decode() - return f"idsc:p0.{xt}.{b64key}" - else: - xts = [] - count = 0 - current_size = 0 - while current_size <= size: - raw_data = fd.read(CHUNK_SIZE) - if len(raw_data) < CHUNK_SIZE: - raw_data = pad(raw_data) - data = encrypt_shard_chunk(raw_data, key, count) - xt_urn = self.store.put(data) - xts.append(xt_urn) - count += 1 - current_size += CHUNK_SIZE - # Finally generate the manifest - manifest = make_manifest(xts, size) - padded_manifest = pad(manifest) - encrypted_manifest = encrypt_shard_entry(padded_manifest, key) - xt_urn = self.store.put(encrypted_manifest) - xt = xt_urn.split(':')[2] - b64key = urlsafe_b64encode(key).rstrip(b'=').decode() - return f"idsc:p0.{xt}.{b64key}" - - def download(self, urn, fd): - """Download a file from a store - - Takes a URN and writes the data to the file descriptor - - Args: - urn (string): The URN of the file - fd (file-like object): A file object to write the file to - Raises: - NotImplementedError: If the store does not support 'get' - """ - if not hasattr(self.store, 'get'): - raise NotImplementedError("Store does not support 'get' method") - scheme, payload = urn.split(':') - if scheme != 'idsc': - raise NotImplementedError("Client can only handle IDSCs") - enc_suite, xt, b64key_prepad = payload.split('.') - pad = "=" * (4 - (len(b64key_prepad) % 4)) - b64key = b64key_prepad + pad - key = urlsafe_b64decode(b64key) - xt_urn = f"urn:sha256d:{xt}" - encrypted_data = self.store.get(xt_urn) - decrypted_data = decrypt_shard_entry(encrypted_data, key) - data = usexp.loadb(decrypted_data) - if data[0] == b'raw': - fd.write(data[1]) - fd.flush() - return - elif data[0] == b'manifest': - manifest = read_manifest(data) - size, chunks = manifest[1], manifest[2:] - # We need to assemble the pieces - i = 0 - current_size = 0 - for chunk in chunks: - encrypted_data = self.store.get(chunk) - data = decrypt_shard_chunk(encrypted_data, key, i) - current_size += CHUNK_SIZE - if current_size > size: - fd.write(data[:size % CHUNK_SIZE]) - fd.flush() - else: - fd.write(data) - fd.flush() - i += 1 diff --git a/datashards/stores/__init__.py b/datashards/stores/__init__.py deleted file mode 100644 index 45993cb0a..000000000 --- a/datashards/stores/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from .base import StoreError, BaseStore, GetStore, PutStore, CatalogStore, UsedStore, FreeupStore -from .memorystore import MemoryStore -from .filestore import FileStore -from .remotemagencstore import RemoteMagencStore -from .fizzgig import RemoteFizzgigStore \ No newline at end of file diff --git a/datashards/stores/base.py b/datashards/stores/base.py deleted file mode 100644 index 89817fb6b..000000000 --- a/datashards/stores/base.py +++ /dev/null @@ -1,177 +0,0 @@ -import hashlib -import base64 -import random - -notimplemented = "This method is inherited from an abastract base class" - - -class StoreError(Exception): - pass - - -class BaseStore(): - """This is the core abstract base store that offers validation""" - # Currently only sha256 is supported - _hash_algorithms = ('sha256d') - _shard_size = 32768 - - def validate_xt(self, xt): - """Validate the XT - - Args: - xt (str): The shard in XT form ``urn::`` - Returns: - tuple(str): The urn, algorithm and digest - Raises: - ValueError: Raised if the XT is invalid - """ - try: - scheme, algorithm, digest = xt.split(':') - except ValueError: - raise ValueError(f"XT must be in the form urn::. Instead we have {xt}") - if scheme != 'urn': - raise ValueError("XTs must begin with 'urn'") - if algorithm not in self._hash_algorithms: - raise ValueError(f"Hashing algorithm {algorithm} not supported") - return scheme, algorithm, digest - - def validate_data(self, data, sizes=(32768,)): - """Validate data that will be stored - - Args: - data (bytes): The data - Returns: - bool: True if valid - Raises: - ValueError: Raised if the data is invalid (wrong type or size) - """ - if not isinstance(data, bytes): - raise ValueError("Data must of type bytes") - if not len(data) in sizes: - raise ValueError("Data must be of supported size") - return True - - def sha256d_data(self, data): - digest = hashlib.sha256(data).digest() - digest2 = hashlib.sha256(digest).digest() - encoded_digest = base64.urlsafe_b64encode(digest2) - return encoded_digest - - def xt_from_digest(self, digest, algorithm='sha256d'): - if isinstance(digest, bytes): - digest = str(digest, 'utf-8') - return f"urn:{algorithm}:{digest}" - - -class GetStore(): - """This is the abstract base class for stores that have the "get" method""" - def get(self, xt): - """Get a shard from the store by XT - - Args: - xt (string): ID of the shard in XT form ``urn::`` - Returns: - bytes: The requested data as a bytearray - Raises: - KeyError: Raised when the requested XT is not found - ValueError: Raised when the XT is improperly formatted - NotImplementedError: Raised if XT uses an unsupported algorithm - StoreError: Raised if the store has an unknown internal error - - """ - raise NotImplementedError(notimplemented) - - -class PutStore(): - def put(self, data): - """Place the data in the store - - Args: - data (bytearray): The data to store - - Currently this must be a 32k long byte array - - Returns: - string: The URN of the data in XT form ``urn::`` - - If the store supports multiple hashing algorithms, it will select - its preferred algorithm - - Raises: - ValueError: Raised if data is of the wrong type or unsupported size - StoreError: Raised if the store has an unknown internal error - - """ - raise NotImplementedError(notimplemented) - - -class DeleteStore(): - def delete(self, *shard): - """Delete a shard from the store - - Args: - shards: Shard(s) to delete from the store - Raises: - KeyError: Raised when the requested shard is not found - ValueError: Raised when the XT is improperly formatted - StoreError: Raised if the store has an unknown internal error - """ - raise NotImplementedError(notimplemented) - - -class CatalogStore(): - def catalog(self): - """Get a listing of all the shards in the store - - Returns: - list (string): A list of shards in the store in XT form - - Raises: - StoreError: Raised if the store has an unknown internal error - """ - raise NotImplementedError(notimplemented) - - def _random_shards(self, n=1): - """Get a selection of random shards in the store - - Args: - n (int): Number of random shards to retrieve - Returns: - list (string): A list of shards in XT form - Raises: - StoreError: Raised if the store has an unknown internal error - """ - return random.choices(self.catalog(), k=n) - - -class UsedStore(BaseStore, CatalogStore): - def used(self): - """Get the storage used by the store in bytes - - Returns: - int: The number of bytes used by the store - - Raises: - StoreError: Raised if the store has an unknown internal error - """ - return len(self.catalog()) * self._shard_size - - -class FreeupStore(CatalogStore, DeleteStore): - def freeup(self, count=1): - """Free up space in the store - - This method will free up space in the store - and return the list of shards it has deleted - - Args: - count (int); The number of items to delete from the store - Returns: - list (string): The list of deleted shards in XT form - Raises: - StoreError: Raised if the store has an unknown internal error - """ - # This may not work due to inheritance! - shards = random.choices(self.catalog(), k=count) - self.deletes(shards) - return shards diff --git a/datashards/stores/filestore.py b/datashards/stores/filestore.py deleted file mode 100644 index b90d95164..000000000 --- a/datashards/stores/filestore.py +++ /dev/null @@ -1,68 +0,0 @@ -import os -from .base import BaseStore, GetStore, PutStore, \ - FreeupStore, UsedStore, StoreError, CatalogStore - -class FileStore(BaseStore, GetStore, PutStore, FreeupStore): - """A datashards store with a file backend - """ - def __init__(self, directory=None, create_dir=False): - """Instantiate the store - - Args: - directory: The directory where the data should be stored - Returns: - A new FileStore isinstance - """ - if not os.path.isdir(directory): - if create_dir: - os.mkdir(directory) - else: - raise ValueError(f"Store directory {directory} does not exist") - self._dir = directory - - def __repr__(self): - dir = os.path.abspath(self._dir) - return f"file://{dir}" - - def get(self, xt): - self.__doc__ = GetStore.get.__doc__ - digest = self.validate_xt(xt)[2] - path = os.path.join(self._dir, digest) - if os.path.exists(path): - try: - with open(path, 'rb') as fd: - return fd.read() - except OSError: - raise StoreError() - - def put(self, data): - self.__doc__ = PutStore.put.__doc__ - self.validate_data(data) - digest = str(self.sha256d_data(data), 'utf-8') - path = os.path.join(self._dir, digest) - if not os.path.exists(path): - try: - with open(path, 'wb') as fd: - fd.write(data) - except OSError: - raise StoreError() - xt = f"urn:sha256d:{digest}" - return xt - - def catalog(self): - self.__doc__ = CatalogStore.catalog.__doc__ - # We'll assume the store directory does not contain other files - return [self.xt_from_digest(f) for f in os.listdir(self._dir) - if os.path.isfile(os.path.join(self._dir, f))] - - def delete(self, xts): - self.__doc__ = DeleteStore.deletes.__doc__ - - digests = [self.validate_data[xt][2] for xt in l] - for digest in digests: - path = os.path.join(self._dir, digest) - try: - os.remove(path) - except OSError: - raise StoreError() - return digests diff --git a/datashards/stores/fizzgig.py b/datashards/stores/fizzgig.py deleted file mode 100644 index 96bb96042..000000000 --- a/datashards/stores/fizzgig.py +++ /dev/null @@ -1,50 +0,0 @@ -import requests -from .base import BaseStore, GetStore, PutStore, StoreError - -class RemoteFizzgigStore(BaseStore, GetStore, PutStore): - """A remote Fizzgig store""" - - - def __init__(self, url): - """Create a RemoteFizzgigStore - - Args: - url (string): The location of the store - Returns: - RemoteFizzgigStore - """ - self.url = url - - def __repr__(self): - return f"fizz+{self.url}" - - def get(self, xt): - self.__doc__ = GetStore.get.__doc__ - self.validate_xt(xt) - url = self.url + '/get' - payload = {'xt': xt} - r = requests.get(url, params=payload) - if r.status_code == 404: - raise KeyError("Shard not found") - return - elif r.status_code == 400: - raise ValueError(r.content.decode('utf-8')) - return - elif r.status_code == 500: - raise StoreError(r.content.decode('utf-8')) - return - return r.content - - def put(self, data): - self.__doc__ = PutStore.put.__doc__ - self.validate_data(data) - url = self.url + '/put' - r = requests.put(url=url, data=data) - if r.status_code == 400: - raise ValueError(r.content.decode('utf-8')) - return - elif r.status_code == 500: - raise StoreError(r.content.decode('utf-8')) - return - parsed = r.json() - return parsed['xt'] diff --git a/datashards/stores/magencstore.py b/datashards/stores/magencstore.py deleted file mode 100644 index 55912922c..000000000 --- a/datashards/stores/magencstore.py +++ /dev/null @@ -1,52 +0,0 @@ -import http.server -import socketserver -from urllib.parse import urlparse, parse_qs - -from .base import BaseStore, GetStore, PutStore, StoreError -from .memorystore import MemoryStore - -memstore = MemoryStore() - -class MagencStore(http.server.BaseHTTPRequestHandler): - def do_GET(self): - print(f"Request recieved: {self.path}") - try: - parsed = urlparse(self.path) - query = parsed.query - params = parse_qs(query) - xt = params['xt'][0] - result = memstore.get(xt) - except KeyError: - self.send_response(404) - self.end_headers() - self.wfile.write(f'Shard Not Found'.encode()) - return - except ValueError as err: - self.send_response(400) - self.wfile.write(f"Malformed request: {err}".encode()) - return - except Exception as err: - self.send_response(500) - self.wfile.write(f"Server Error: {err}".encode()) - return - self.send_response(200) - self.send_header('Content-type', 'application/octet-stream') - self.end_headers() - self.wfile.write(result) - - def do_POST(self): - #length = int(self.headers['Content-Length']) - #content = self.rfile.read(length) - content = self.rfile.read(32768) - try: - xt = memstore.put(content) - except ValueError as err: - self.send_response(400) - self.wfile.write(f"Malformed request: {err}".encode()) - except Exception as err: - self.send_response(500) - self.wfile.write(f"Server Error: {err}".encode()) - self.send_response(200) - self.send_header('Content-type', 'text/plain') - self.end_headers() - self.wfile.write(xt.encode()) diff --git a/datashards/stores/memorystore.py b/datashards/stores/memorystore.py deleted file mode 100644 index a3b16e687..000000000 --- a/datashards/stores/memorystore.py +++ /dev/null @@ -1,43 +0,0 @@ -import sys -from .base import BaseStore, GetStore, PutStore, CatalogStore, DeleteStore - -class MemoryStore(BaseStore, GetStore, - PutStore, CatalogStore): - """BasicStore is a basic datashards store with a memory backend. - - This is more of an example than anything you'd use - """ - def __init__(self): - """Create a new MemoryStore instance - - returns: - A new `MemoryStore` object - """ - self._store = {} - - def __repr__(self): - return "memory://" - - def get(self, xt): - self.__doc__ = GetStore.get.__doc__ - digest = super().validate_xt(xt)[2] - return self._store[digest] - - def put(self, data): - self.__doc__ = PutStore.put.__doc__ - super().validate_data(data) - - digest = super().sha256d_data(data) - str_digest = d = str(digest, 'utf-8') - self._store[str_digest] = data - return self.xt_from_digest(digest) - - def delete(self, *xts): - self.__doc__ = DeleteStore.delete.__doc__ - digests = [self.validate_xt(xt)[2] for xt in xts] - for d in digests: - del(self._store[d]) - - def catalog(self): - self.__doc__ = CatalogStore.catalog.__doc__ - return [self.xt_from_digest(digest) for digest in self._store.keys()] diff --git a/datashards/stores/remotemagencstore.py b/datashards/stores/remotemagencstore.py deleted file mode 100644 index ae25496d5..000000000 --- a/datashards/stores/remotemagencstore.py +++ /dev/null @@ -1,46 +0,0 @@ -import requests -from .base import BaseStore, GetStore, PutStore, StoreError - -class RemoteMagencStore(BaseStore, GetStore, PutStore): - """This is an impelmentation of the original Remote Magenc Store""" - - def __init__(self, url): - """Create a RemoteMagencStore - - Args: - url (string): The location of the store - Returns: - RemoteMagencStore - """ - self.url = url - - def __repr__(self): - return f"magenc+{self.url}" - - def get(self, xt): - self.__doc__ = GetStore.get.__doc__ - self.validate_xt(xt) - payload = {'xt': xt} - r = requests.get(self.url, params=payload) - if r.status_code == 404: - raise KeyError("Shard not found") - return - elif r.status_code == 400: - raise ValueError(r.content.decode('utf-8')) - return - elif r.status_code == 500: - raise StoreError(r.content.decode('utf-8')) - return - return r.content - - def put(self, data): - self.__doc__ = PutStore.put.__doc__ - self.validate_data(data) - r = requests.post(url=self.url, data=data) - if r.status_code == 400: - raise ValueError(r.content.decode('utf-8')) - return - elif r.status_code == 500: - raise StoreError(r.content.decode('utf-8')) - return - return r.text \ No newline at end of file diff --git a/datashards/usexp.py b/datashards/usexp.py deleted file mode 100644 index 77117f949..000000000 --- a/datashards/usexp.py +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env python3 - -""" -The Unorthodox Cannonical S-Expression Parser -""" - -__version__ = "0.1" - -from io import StringIO, IOBase, BytesIO -from collections import namedtuple - -TypeHinted = namedtuple('TypeHinted', 'hint data') - -digits = (b'0', b'1', b'2', b'3', b'4', b'5', b'6', b'7', b'8', b'9') - -def read_hint(fd, pos): - hint = b'' - while True: - ch = fd.read(1) - pos += 1 - if ch == b']': - return hint, pos - else: - hint += ch - -def read_list(fd, pos): - """Read a list""" - out = [] - read_ahead = "" - hint = None - while True: - ch = fd.read(1) - pos += 1 - if ch == b')': - return (out, pos) - elif ch == b'(': - new_list, pos = read_list(fd, pos) - out.append(new_list) - elif ch == b'[': - hint, pos = read_hint(fd, pos) - elif ch == b':': - pos += 1 - if not read_ahead: - raise ValueError(f"Colon but no read ahead at position {pos}") - else: - read_ahead = int(read_ahead) - raw = fd.read(read_ahead) - if hint: - out.append(TypeHinted(hint=hint.decode(), data=raw)) - else: - out.append(raw) - pos += read_ahead - read_ahead = '' - hint = None - elif ch in digits: - read_ahead += ch.decode('ascii') - else: - raise ValueError(f"Unexpected {ch} at position {pos}") - - -def load(file): - """Parse a file-like object""" - out = [] - pos = 0 - ch = file.read(1) - if not ch == b'(': - raise ValueError("Expected start of file to begin with (") - else: - out, trash = read_list(file, pos) - return out - -def loadb(b): - """Parses a bytestring""" - f = BytesIO(b) - return load(f) - -def dump_bytes(b): - l = len(b) - return f"{l}:".encode() + b - -def dump_string(s): - l = len(s) - return f"{l}:{s}".encode() - -def dump_hinted(obj): - b = dump_bytes(obj[1]) - return f"[{obj[0]}]".encode() + b - -def dump_number(n): - return dump_string(f"{n}") - -def dump_sequence(seq): - out = b'' - for obj in seq: - if isinstance(obj, TypeHinted): - out += dump_hinted(obj) - elif isinstance(obj, (list, tuple)): - out += b'(' + dump_sequence(obj) + b')' - elif isinstance(obj, str): - out += dump_string(obj) - elif isinstance(obj, bytes): - out += dump_bytes(obj) - elif isinstance(obj, (int, float, complex)): - out += dump_number(obj) - else: - raise ValueError(f"Don't know how to serialize type {type(obj)}") - return out - -def dumpb(seq): - out = b'(' + dump_sequence(seq) + b')' - return out - -def dump(seq, fd): - out = dump_sequence(seq) - fd.write(seq) diff --git a/datashards/utils.py b/datashards/utils.py deleted file mode 100644 index 6fd458163..000000000 --- a/datashards/utils.py +++ /dev/null @@ -1,57 +0,0 @@ -from urllib.parse import urlparse, urlunparse -from .stores import MemoryStore, RemoteMagencStore, FileStore, RemoteFizzgigStore -from .client import Client - -def filestore(u): - """Take results of store and return FileStore object""" - # We only care about the path for this - return FileStore(u.path) - -def memorystore(u): - return MemoryStore() - -def magencstore(u): - # Remove magenc from the scheme and reassemble - l = list(u) - l[0] = l[0][7:] - return RemoteMagencStore(urlunparse(l)) - -def fizzgigstore(u): - l = list(u) - l[0] = l[0].lstrip('fizz+') - return RemoteFizzgigStore(urlunparse(l)) - -def store(uri): - """Takes in a Datashards URI and returns the appropriate store for it - - Args: - uri (string): The URI representation of the store - Returns: - Object: A datashards store - """ - scheme_map = { - 'file': filestore, - 'memory': memorystore, - 'magenc': magencstore, - 'fizz': fizzgigstore, - } - - parsed = urlparse(uri) - scheme = parsed.scheme.split('+')[0] - if scheme in scheme_map: - return scheme_map[scheme](parsed) - else: - raise ValueError(f"Unsupported scheme for store {scheme}") - - -def client(uri): - """Create a client tied to the store sent by uri - - Args: - uri (string): The URI representation of the store - Returns: - Client: A datashards client - """ - st = store(uri) - return Client(st) - diff --git a/tests.py b/tests.py index 7fcc5b8b6..c6501392d 100644 --- a/tests.py +++ b/tests.py @@ -116,7 +116,6 @@ from mastoapiv1 import getNicknameFromMastoApiV1Id from webapp_post import prepareHtmlPostNickname from webapp_utils import markdownToHtml from speaker import speakerReplaceLinks -import datashards testServerAliceRunning = False testServerBobRunning = False @@ -3799,24 +3798,9 @@ def testRoles() -> None: assert not actorHasRole(actorJson, "artist") -def testDatashards() -> None: - print('testDatashards') - shipper = datashards.utils.store('memory://') - assert shipper - saveData = b'some data to be stored' - data_size = len(saveData) - saveData = saveData + (b'\0' * (32768 - data_size)) - assert len(saveData) == 32768 - urn = shipper.put(saveData) - assert urn == 'urn:sha256d:5JSThDD4-TdA24qygZPKtmVwbv1fErijAnF-u5EOLco=' - loadData = shipper.get(urn) - assert loadData - - def runAllTests(): print('Running tests...') updateDefaultThemesList(os.getcwd()) - testDatashards() testFunctions() testRoles() testSkills() From 836b68b1f1fee0ba4fef9a02beefcbe6870d6783 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 Jun 2021 10:58:21 +0100 Subject: [PATCH 05/13] Fix city radius --- city.py | 10 +++++----- locations.txt | 4 ++-- tests.py | 35 ++++++++++++++++++++++++++++++++++- 3 files changed, 41 insertions(+), 8 deletions(-) diff --git a/city.py b/city.py index d5b695bf5..6e228ec47 100644 --- a/city.py +++ b/city.py @@ -245,17 +245,17 @@ def spoofGeolocation(baseDir: str, # The city radius value is in longitude and the reference # is Manchester. Adjust for the radius of the chosen city. if areaKm2 > 1: - manRadius = math.sqrt(630 / math.pi) + manRadius = math.sqrt(1276 / math.pi) radius = math.sqrt(areaKm2 / math.pi) - cityRadius = manCityRadius * manRadius / radius + cityRadiusDeg = (radius / manRadius) * manCityRadius else: - cityRadius = manCityRadius + cityRadiusDeg = manCityRadius # Get the position within the city, with some randomness added latitude += \ - distanceFromCityCenter * cityRadius * \ + distanceFromCityCenter * cityRadiusDeg * \ math.cos(angleRadians) longitude += \ - distanceFromCityCenter * cityRadius * \ + distanceFromCityCenter * cityRadiusDeg * \ math.sin(angleRadians) longval = longitude if longdirection == 'W': diff --git a/locations.txt b/locations.txt index d53db9e53..da0db7945 100644 --- a/locations.txt +++ b/locations.txt @@ -481,7 +481,7 @@ NOTTINGHAM, ENGLAND:52.9534193:W1.1496461:176 HALFPENNY GREEN, ENGLAND:52.5175:W2.25972 PAILTON, UK:51.6681:W2.05694 TURWESTON, UK:52.0408:W1.09556 -MANCHESTER, ENGLAND:53.4794892:W2.2451148:630 +MANCHESTER, ENGLAND:53.4794892:W2.2451148:1276 WOODFORT, ENGLAND:53.3381:W2.14889 SANDTOFT, UK:53.5597:W0.858333 CHIVENOR, ENGLAND:51.0869:W4.15028 @@ -1597,7 +1597,7 @@ STOCKTON, USA:37.8942:W121.239 SEATTLE, USA:47.59840153253106:W122.31143714060059 SELMA, USA:32.3439:W86.9878 SPOKANE, USA:47.6828:W117.322 -SAN FRANCISCO, USA:37.74594738515095:W122.44299445520019 +SAN FRANCISCO, USA:37.74594738515095:W122.44299445520019:121 SMITHFIELD, USA:41.9206:W71.4911 SHREVEPORT, USA:32.4464:W93.8256 SAN JOSE, USA:37.32149403063839:W121.9286918256836 diff --git a/tests.py b/tests.py index c6501392d..478c4da1b 100644 --- a/tests.py +++ b/tests.py @@ -3626,8 +3626,9 @@ def testSpoofGeolocation() -> None: citiesList = [ 'NEW YORK, USA:40.7127281:W74.0060152:784', 'LOS ANGELES, USA:34.0536909:W118.242766:1214', + 'SAN FRANCISCO, USA:37.74594738515095:W122.44299445520019:121', 'HOUSTON, USA:29.6072:W95.1586:1553', - 'MANCHESTER, ENGLAND:53.4794892:W2.2451148:630', + 'MANCHESTER, ENGLAND:53.4794892:W2.2451148:1276', 'BERLIN, GERMANY:52.5170365:13.3888599:891', 'ANKARA, TURKEY:39.93:32.85:24521', 'LONDON, ENGLAND:51.5073219:W0.1276474:1738' @@ -3740,6 +3741,36 @@ def testSpoofGeolocation() -> None: str(coords[0]) + ',0\n' kmlStr += ' \n' kmlStr += '\n' + + nogoLine = \ + 'SAN FRANCISCO, USA: 121.988W,37.408, 121.924W,37.452, 121.951W,37.498, 121.992W,37.505, 122.056W,37.54, 122.077W,37.578, 122.098W,37.618, 122.131W,37.637, 122.189W,37.706, 122.227W,37.775, 122.279W,37.798, 122.315W,37.802, 122.291W,37.832, 122.309W,37.902, 122.382W,37.915, 122.368W,37.927, 122.514W,37.882, 122.473W,37.83, 122.481W,37.788, 122.394W,37.796, 122.384W,37.729, 122.4W,37.688, 122.382W,37.654, 122.406W,37.637, 122.392W,37.612, 122.356W,37.586, 122.332W,37.586, 122.275W,37.529, 122.228W,37.488, 122.181W,37.482, 122.134W,37.48, 122.128W,37.471, 122.122W,37.448, 122.095W,37.428, 122.07W,37.413, 122.036W,37.402, 122.035W,37.421' + polygon = parseNogoString(nogoLine) + nogoLine2 = \ + 'SAN FRANCISCO, USA: 122.446W,37.794, 122.511W,37.778, 122.51W,37.771, 122.454W,37.775, 122.452W,37.766, 122.510W,37.763, 122.506W,37.735, 122.498W,37.733, 122.496W,37.729, 122.491W,37.729, 122.475W,37.73, 122.474W,37.72, 122.484W,37.72, 122.485W,37.703, 122.495W,37.702, 122.493W,37.679, 122.486W,37.667, 122.492W,37.664, 122.493W,37.629, 122.456W,37.625, 122.450W,37.617, 122.455W,37.621, 122.41W,37.586, 122.383W,37.561, 122.335W,37.509, 122.655W,37.48, 122.67W,37.9, 122.272W,37.93, 122.294W,37.801, 122.448W,37.804' + polygon2 = parseNogoString(nogoLine2) + nogoList = [polygon, polygon2] + for i in range(1000): + dayNumber = randint(10, 30) + hour = randint(1, 23) + hourStr = str(hour) + if hour < 10: + hourStr = '0' + hourStr + currTime = datetime.datetime.strptime("2021-05-" + str(dayNumber) + + " " + hourStr + ":14", + "%Y-%m-%d %H:%M") + coords = spoofGeolocation('', 'SAN FRANCISCO, USA', currTime, + decoySeed, citiesList, nogoList) + longitude = coords[1] + if coords[3] == 'W': + longitude = -coords[1] + kmlStr += '\n' + kmlStr += ' ' + str(i) + '\n' + kmlStr += ' \n' + kmlStr += ' ' + str(longitude) + ',' + \ + str(coords[0]) + ',0\n' + kmlStr += ' \n' + kmlStr += '\n' + kmlStr += '\n' kmlStr += '' kmlFile = open('unittest_decoy.kml', 'w+') @@ -3800,6 +3831,8 @@ def testRoles() -> None: def runAllTests(): print('Running tests...') + testSpoofGeolocation() + return updateDefaultThemesList(os.getcwd()) testFunctions() testRoles() From 23f564c730bfd930bdeaca12e835610e7e8d45fd Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 Jun 2021 11:32:24 +0100 Subject: [PATCH 06/13] No datashards --- Makefile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Makefile b/Makefile index 5671df253..7a54fd9db 100644 --- a/Makefile +++ b/Makefile @@ -26,8 +26,4 @@ clean: rm -f deploy/*~ rm -f translations/*~ rm -rf __pycache__ - rm -f datashards/*~ - rm -f datashards/stores/*~ - rm -rf datashards/__pycache__ - rm -rf datashards/stores/__pycache__ rm -f calendar.css blog.css epicyon.css follow.css login.css options.css search.css suspended.css From bff8339da54224de3515285972051f888bddd6f2 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 Jun 2021 12:42:07 +0100 Subject: [PATCH 07/13] Seattle test --- locations.txt | 3 +- locations_nogo.txt | 4 +++ tests.py | 86 +++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 86 insertions(+), 7 deletions(-) diff --git a/locations.txt b/locations.txt index da0db7945..43bec85a4 100644 --- a/locations.txt +++ b/locations.txt @@ -1285,7 +1285,6 @@ BAUDETTE, USA:48.7283:W94.6122 WINDSOR LOCKS, USA:41.9389:W72.6831 STRATFORD, USA:41.1633:W73.1261 BEDFORD, USA:42.4697:W71.2889 -SEATTLE, USA:47.5297:W122.302:217 BAKERSFIELD, USA:35.4333:W119.057 MOBILE, USA:30.6264:W88.0678 BANGOR, USA:44.8072:W68.8281 @@ -1594,7 +1593,7 @@ GWINN, USA:46.3536:W87.3958 SANTA BARBARA, USA:32.6083:W82.3686 SALISBURY, USA:38.3403:W75.5103 STOCKTON, USA:37.8942:W121.239 -SEATTLE, USA:47.59840153253106:W122.31143714060059 +SEATTLE, USA:47.59840153253106:W122.31143714060059:217 SELMA, USA:32.3439:W86.9878 SPOKANE, USA:47.6828:W117.322 SAN FRANCISCO, USA:37.74594738515095:W122.44299445520019:121 diff --git a/locations_nogo.txt b/locations_nogo.txt index 4349505ef..dc7a19687 100644 --- a/locations_nogo.txt +++ b/locations_nogo.txt @@ -13,3 +13,7 @@ SAN JOSE, USA: 121.988W,37.408, 121.924W,37.452, 121.951W,37.498, 121.992W,37 OAKLAND, USA: 121.988W,37.408, 121.924W,37.452, 121.951W,37.498, 121.992W,37.505, 122.056W,37.54, 122.077W,37.578, 122.098W,37.618, 122.131W,37.637, 122.189W,37.706, 122.227W,37.775, 122.279W,37.798, 122.315W,37.802, 122.291W,37.832, 122.309W,37.902, 122.382W,37.915, 122.368W,37.927, 122.514W,37.882, 122.473W,37.83, 122.481W,37.788, 122.394W,37.796, 122.384W,37.729, 122.4W,37.688, 122.382W,37.654, 122.406W,37.637, 122.392W,37.612, 122.356W,37.586, 122.332W,37.586, 122.275W,37.529, 122.228W,37.488, 122.181W,37.482, 122.134W,37.48, 122.128W,37.471, 122.122W,37.448, 122.095W,37.428, 122.07W,37.413, 122.036W,37.402, 122.035W,37.421 SAN FRANCISCO, USA: 121.988W,37.408, 121.924W,37.452, 121.951W,37.498, 121.992W,37.505, 122.056W,37.54, 122.077W,37.578, 122.098W,37.618, 122.131W,37.637, 122.189W,37.706, 122.227W,37.775, 122.279W,37.798, 122.315W,37.802, 122.291W,37.832, 122.309W,37.902, 122.382W,37.915, 122.368W,37.927, 122.514W,37.882, 122.473W,37.83, 122.481W,37.788, 122.394W,37.796, 122.384W,37.729, 122.4W,37.688, 122.382W,37.654, 122.406W,37.637, 122.392W,37.612, 122.356W,37.586, 122.332W,37.586, 122.275W,37.529, 122.228W,37.488, 122.181W,37.482, 122.134W,37.48, 122.128W,37.471, 122.122W,37.448, 122.095W,37.428, 122.07W,37.413, 122.036W,37.402, 122.035W,37.421 SAN FRANCISCO, USA: 122.446W,37.794, 122.511W,37.778, 122.51W,37.771, 122.454W,37.775, 122.452W,37.766, 122.510W,37.763, 122.506W,37.735, 122.498W,37.733, 122.496W,37.729, 122.491W,37.729, 122.475W,37.73, 122.474W,37.72, 122.484W,37.72, 122.485W,37.703, 122.495W,37.702, 122.493W,37.679, 122.486W,37.667, 122.492W,37.664, 122.493W,37.629, 122.456W,37.625, 122.450W,37.617, 122.455W,37.621, 122.41W,37.586, 122.383W,37.561, 122.335W,37.509, 122.655W,37.48, 122.67W,37.9, 122.272W,37.93, 122.294W,37.801, 122.448W,37.804 +SEATTLE, USA: 122.247W,47.918, 122.39W,47.802, 122.389W,47.769, 122.377W,47.758, 122.371W,47.726, 122.379W,47.706, 122.4W,47.696, 122.405W,47.673, 122.416W,47.65, 122.414W,47.642, 122.391W,47.632, 122.373W,47.633, 122.336W,47.602, 122.288W,47.501, 122.299W,47.503, 122.386W,47.592, 122.412W,47.574, 122.394W,47.549, 122.388W,47.507, 122.35W,47.481, 122.365W,47.459, 122.33W,47.406, 122.323W,47.392, 122.321W,47.346, 122.441W,47.302, 122.696W,47.085, 122.926W,47.066, 122.929W,48.383 +SEATTLE, USA: 122.267W,47.758, 122.29W,47.471, 122.272W,47.693, 122.256W,47.672, 122.278W,47.652, 122.29W,47.583, 122.262W,47.548, 122.265W,47.52, 122.218W,47.498, 122.194W,47.501, 122.193W,47.55, 122.173W,47.58, 122.22W,47.617, 122.238W,47.617, 122.239W,47.637, 122.2W,47.644, 122.207W,47.703, 122.22W,47.705, 122.231W,47.699, 122.255W,47.751 +SEATTLE, USA: 122.347W,47.675, 122.344W,47.681, 122.337W,47.685, 122.324W,47.679, 122.331W,47.677, 122.34W,47.669, 122.34W,47.664, 122.348W,47.665 +SEATTLE, USA: 122.423W,47.669, 122.345W,47.641, 122.34W,47.625, 122.327W,47.626, 122.274W,47.64, 122.268W,47.654, 122.327W,47.654, 122.336W,47.647, 122.429W,47.684 diff --git a/tests.py b/tests.py index 478c4da1b..91043e0af 100644 --- a/tests.py +++ b/tests.py @@ -3631,7 +3631,8 @@ def testSpoofGeolocation() -> None: 'MANCHESTER, ENGLAND:53.4794892:W2.2451148:1276', 'BERLIN, GERMANY:52.5170365:13.3888599:891', 'ANKARA, TURKEY:39.93:32.85:24521', - 'LONDON, ENGLAND:51.5073219:W0.1276474:1738' + 'LONDON, ENGLAND:51.5073219:W0.1276474:1738', + 'SEATTLE, USA:47.59840153253106:W122.31143714060059:217' ] testSquare = [ [[0.03, 0.01], [0.02, 10], [10.01, 10.02], [10.03, 0.02]] @@ -3743,10 +3744,32 @@ def testSpoofGeolocation() -> None: kmlStr += '\n' nogoLine = \ - 'SAN FRANCISCO, USA: 121.988W,37.408, 121.924W,37.452, 121.951W,37.498, 121.992W,37.505, 122.056W,37.54, 122.077W,37.578, 122.098W,37.618, 122.131W,37.637, 122.189W,37.706, 122.227W,37.775, 122.279W,37.798, 122.315W,37.802, 122.291W,37.832, 122.309W,37.902, 122.382W,37.915, 122.368W,37.927, 122.514W,37.882, 122.473W,37.83, 122.481W,37.788, 122.394W,37.796, 122.384W,37.729, 122.4W,37.688, 122.382W,37.654, 122.406W,37.637, 122.392W,37.612, 122.356W,37.586, 122.332W,37.586, 122.275W,37.529, 122.228W,37.488, 122.181W,37.482, 122.134W,37.48, 122.128W,37.471, 122.122W,37.448, 122.095W,37.428, 122.07W,37.413, 122.036W,37.402, 122.035W,37.421' + 'SAN FRANCISCO, USA: 121.988W,37.408, 121.924W,37.452, ' + \ + '121.951W,37.498, 121.992W,37.505, 122.056W,37.54, ' + \ + '122.077W,37.578, 122.098W,37.618, 122.131W,37.637, ' + \ + '122.189W,37.706, 122.227W,37.775, 122.279W,37.798, ' + \ + '122.315W,37.802, 122.291W,37.832, 122.309W,37.902, ' + \ + '122.382W,37.915, 122.368W,37.927, 122.514W,37.882, ' + \ + '122.473W,37.83, 122.481W,37.788, 122.394W,37.796, ' + \ + '122.384W,37.729, 122.4W,37.688, 122.382W,37.654, ' + \ + '122.406W,37.637, 122.392W,37.612, 122.356W,37.586, ' + \ + '122.332W,37.586, 122.275W,37.529, 122.228W,37.488, ' + \ + '122.181W,37.482, 122.134W,37.48, 122.128W,37.471, ' + \ + '122.122W,37.448, 122.095W,37.428, 122.07W,37.413, ' + \ + '122.036W,37.402, 122.035W,37.421' polygon = parseNogoString(nogoLine) nogoLine2 = \ - 'SAN FRANCISCO, USA: 122.446W,37.794, 122.511W,37.778, 122.51W,37.771, 122.454W,37.775, 122.452W,37.766, 122.510W,37.763, 122.506W,37.735, 122.498W,37.733, 122.496W,37.729, 122.491W,37.729, 122.475W,37.73, 122.474W,37.72, 122.484W,37.72, 122.485W,37.703, 122.495W,37.702, 122.493W,37.679, 122.486W,37.667, 122.492W,37.664, 122.493W,37.629, 122.456W,37.625, 122.450W,37.617, 122.455W,37.621, 122.41W,37.586, 122.383W,37.561, 122.335W,37.509, 122.655W,37.48, 122.67W,37.9, 122.272W,37.93, 122.294W,37.801, 122.448W,37.804' + 'SAN FRANCISCO, USA: 122.446W,37.794, 122.511W,37.778, ' + \ + '122.51W,37.771, 122.454W,37.775, 122.452W,37.766, ' + \ + '122.510W,37.763, 122.506W,37.735, 122.498W,37.733, ' + \ + '122.496W,37.729, 122.491W,37.729, 122.475W,37.73, ' + \ + '122.474W,37.72, 122.484W,37.72, 122.485W,37.703, ' + \ + '122.495W,37.702, 122.493W,37.679, 122.486W,37.667, ' + \ + '122.492W,37.664, 122.493W,37.629, 122.456W,37.625, ' + \ + '122.450W,37.617, 122.455W,37.621, 122.41W,37.586, ' + \ + '122.383W,37.561, 122.335W,37.509, 122.655W,37.48, ' + \ + '122.67W,37.9, 122.272W,37.93, 122.294W,37.801, ' + \ + '122.448W,37.804' polygon2 = parseNogoString(nogoLine2) nogoList = [polygon, polygon2] for i in range(1000): @@ -3771,6 +3794,61 @@ def testSpoofGeolocation() -> None: kmlStr += ' \n' kmlStr += '\n' + nogoLine = \ + 'SEATTLE, USA: 122.247W,47.918, 122.39W,47.802, ' + \ + '122.389W,47.769, 122.377W,47.758, 122.371W,47.726, ' + \ + '122.379W,47.706, 122.4W,47.696, 122.405W,47.673, ' + \ + '122.416W,47.65, 122.414W,47.642, 122.391W,47.632, ' + \ + '122.373W,47.633, 122.336W,47.602, 122.288W,47.501, ' + \ + '122.299W,47.503, 122.386W,47.592, 122.412W,47.574, ' + \ + '122.394W,47.549, 122.388W,47.507, 122.35W,47.481, ' + \ + '122.365W,47.459, 122.33W,47.406, 122.323W,47.392, ' + \ + '122.321W,47.346, 122.441W,47.302, 122.696W,47.085, ' + \ + '122.926W,47.066, 122.929W,48.383' + polygon = parseNogoString(nogoLine) + nogoLine2 = \ + 'SEATTLE, USA: 122.267W,47.758, 122.29W,47.471, ' + \ + '122.272W,47.693, 122.256W,47.672, 122.278W,47.652, ' + \ + '122.29W,47.583, 122.262W,47.548, 122.265W,47.52, ' + \ + '122.218W,47.498, 122.194W,47.501, 122.193W,47.55, ' + \ + '122.173W,47.58, 122.22W,47.617, 122.238W,47.617, ' + \ + '122.239W,47.637, 122.2W,47.644, 122.207W,47.703, ' + \ + '122.22W,47.705, 122.231W,47.699, 122.255W,47.751' + polygon2 = parseNogoString(nogoLine2) + nogoLine3 = \ + 'SEATTLE, USA: 122.347W,47.675, 122.344W,47.681, ' + \ + '122.337W,47.685, 122.324W,47.679, 122.331W,47.677, ' + \ + '122.34W,47.669, 122.34W,47.664, 122.348W,47.665' + polygon3 = parseNogoString(nogoLine3) + nogoLine4 = \ + 'SEATTLE, USA: 122.423W,47.669, 122.345W,47.641, ' + \ + '122.34W,47.625, 122.327W,47.626, 122.274W,47.64, ' + \ + '122.268W,47.654, 122.327W,47.654, 122.336W,47.647, ' + \ + '122.429W,47.684' + polygon4 = parseNogoString(nogoLine4) + nogoList = [polygon, polygon2, polygon3, polygon4] + for i in range(1000): + dayNumber = randint(10, 30) + hour = randint(1, 23) + hourStr = str(hour) + if hour < 10: + hourStr = '0' + hourStr + currTime = datetime.datetime.strptime("2021-05-" + str(dayNumber) + + " " + hourStr + ":14", + "%Y-%m-%d %H:%M") + coords = spoofGeolocation('', 'SEATTLE, USA', currTime, + decoySeed, citiesList, nogoList) + longitude = coords[1] + if coords[3] == 'W': + longitude = -coords[1] + kmlStr += '\n' + kmlStr += ' ' + str(i) + '\n' + kmlStr += ' \n' + kmlStr += ' ' + str(longitude) + ',' + \ + str(coords[0]) + ',0\n' + kmlStr += ' \n' + kmlStr += '\n' + kmlStr += '\n' kmlStr += '' kmlFile = open('unittest_decoy.kml', 'w+') @@ -3831,8 +3909,6 @@ def testRoles() -> None: def runAllTests(): print('Running tests...') - testSpoofGeolocation() - return updateDefaultThemesList(os.getcwd()) testFunctions() testRoles() From 55c7c64b59284a7ba41b908512bb52f00272a53d Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 Jun 2021 14:03:30 +0100 Subject: [PATCH 08/13] More nogo areas --- locations.txt | 2 +- locations_nogo.txt | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/locations.txt b/locations.txt index 43bec85a4..64abff29b 100644 --- a/locations.txt +++ b/locations.txt @@ -1296,7 +1296,7 @@ BELLINGHAM, USA:48.7925:W122.537 BELLEVILLE, USA:38.545:W89.835 NASHVILLE, USA:36.1244:W86.6781:1231 BOISE, USA:43.5642:W116.223:206 -BOSTON, USA:42.3642:W71.005 +BOSTON, USA:42.3642:W71.005:232 BEAUMONT, USA:29.9508:W94.0206 BROWNSVILLE, USA:25.9067:W97.4258 BATON ROUGE, USA:30.5331:W91.1494:199 diff --git a/locations_nogo.txt b/locations_nogo.txt index dc7a19687..cbd5a50d5 100644 --- a/locations_nogo.txt +++ b/locations_nogo.txt @@ -17,3 +17,9 @@ SEATTLE, USA: 122.247W,47.918, 122.39W,47.802, 122.389W,47.769, 122.377W,47.7 SEATTLE, USA: 122.267W,47.758, 122.29W,47.471, 122.272W,47.693, 122.256W,47.672, 122.278W,47.652, 122.29W,47.583, 122.262W,47.548, 122.265W,47.52, 122.218W,47.498, 122.194W,47.501, 122.193W,47.55, 122.173W,47.58, 122.22W,47.617, 122.238W,47.617, 122.239W,47.637, 122.2W,47.644, 122.207W,47.703, 122.22W,47.705, 122.231W,47.699, 122.255W,47.751 SEATTLE, USA: 122.347W,47.675, 122.344W,47.681, 122.337W,47.685, 122.324W,47.679, 122.331W,47.677, 122.34W,47.669, 122.34W,47.664, 122.348W,47.665 SEATTLE, USA: 122.423W,47.669, 122.345W,47.641, 122.34W,47.625, 122.327W,47.626, 122.274W,47.64, 122.268W,47.654, 122.327W,47.654, 122.336W,47.647, 122.429W,47.684 +BRISTOL, ENGLAND: 2.59W,51.449, 2.608W,51.45, 2.62W,51.448, 2.626W,51.461, 2.614W,51.471, 2.615W,51.484, 2.635W,51.471, 2.651W,51.484, 2.653W,51.491, 2.589W,51.518, 2.688W,51.52, 2.686W,51.362, 2.632W,51.404, 2.627W,51.421, 2.61W,51.43, 2.62W,51.439, 2.614W,51.444, 2.598W,51.445 +BRISTOL, ENGLAND: 2.572W,51.479, 2.559W,51.493, 2.554W,51.496, 2.512W,51.496, 2.524W,51.486, 2.551W,51.472 +BOSTON, USA: 70.773W,42.238, 70.964W,42.22, 70.997W,42.258, 71.055W,42.303, 71.049W,42.333, 71.038W,42.344, 71.101W,42.406, 71.046W,42.389, 70.993W,42.404, 70.991W,42.418, 71.021W,42.433, 71.012W,42.444, 70.917W,42.47, 70.891W,42.494, 70.934W,42.56, 70.88W,42.549, 70.762W,42.575 +BOSTON, USA: 71.12W,42.358, 71.107W,42.354, 71.079W,42.363, 71.071W,42.372, 71.06W,42.365, 71.067W,42.365, 71.072W,42.355, 71.094W,42.348, 71.115W,42.35 +BOSTON, USA: 71.128W,42.425, 71.127W,42.459, 71.088W,42.471, 71.069W,42.44 +BOSTON, USA: 71.147W,42.364, 71.16W,42.386, 71.162W,42.405, 71.149W,42.424, 71.154W,42.432, 71.17W,42.439, 71.164W,42.447, 71.154W,42.436, 71.145W,42.446, 71.141W,42.442, 71.144W,42.437, 71.142W,42.424, 71.148W,42.406, 71.139W,42.386, 71.139W,42.374, 71.125W,42.363 From b11965ca70ca03081cb79ce4dacee94245b05744 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 Jun 2021 17:01:19 +0100 Subject: [PATCH 09/13] No accept ranges --- daemon.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daemon.py b/daemon.py index dbce28c7c..d3741c11d 100644 --- a/daemon.py +++ b/daemon.py @@ -612,7 +612,7 @@ class PubServer(BaseHTTPRequestHandler): self.send_header('X-Clacks-Overhead', 'GNU Natalie Nguyen') # self.send_header('Cache-Control', 'public') # self.send_header('Referrer-Policy', 'origin') - self.send_header('Accept-Ranges', 'none') + # self.send_header('Accept-Ranges', 'none') def _set_headers(self, fileFormat: str, length: int, cookie: str, callingDomain: str) -> None: From 9d3f0e213c057811daf705610cb01baf0bb665c0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 11 Jun 2021 20:02:55 +0100 Subject: [PATCH 10/13] Extra nogo area --- locations.txt | 4 +--- locations_nogo.txt | 1 + 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/locations.txt b/locations.txt index 64abff29b..592ebee87 100644 --- a/locations.txt +++ b/locations.txt @@ -1179,9 +1179,7 @@ EL ARISH, EGYPT:31.0733:33.8358 ASYUT, EGYPT:27.0464:31.0119 ALEXANDRIA, EGYPT:31.1839:29.9489 ABU SIMBEL, EGYPT:22.3758:31.6117 -CAIRO, EGYPT:30.1219:31.4056 -CAIRO, EGYPT:30.1161:30.9153 -EMBABA, EGYPT:30.0744:31.1919 +CAIRO, EGYPT:30.06:31.248E:3085 HURGHADA, EGYPT:27.1839:33.7983 EL-GORA, EGYPT:31.0689:34.1292 LUXOR, EGYPT:25.6708:32.7064 diff --git a/locations_nogo.txt b/locations_nogo.txt index cbd5a50d5..4b2e3c591 100644 --- a/locations_nogo.txt +++ b/locations_nogo.txt @@ -23,3 +23,4 @@ BOSTON, USA: 70.773W,42.238, 70.964W,42.22, 70.997W,42.258, 71.055W,42.303, BOSTON, USA: 71.12W,42.358, 71.107W,42.354, 71.079W,42.363, 71.071W,42.372, 71.06W,42.365, 71.067W,42.365, 71.072W,42.355, 71.094W,42.348, 71.115W,42.35 BOSTON, USA: 71.128W,42.425, 71.127W,42.459, 71.088W,42.471, 71.069W,42.44 BOSTON, USA: 71.147W,42.364, 71.16W,42.386, 71.162W,42.405, 71.149W,42.424, 71.154W,42.432, 71.17W,42.439, 71.164W,42.447, 71.154W,42.436, 71.145W,42.446, 71.141W,42.442, 71.144W,42.437, 71.142W,42.424, 71.148W,42.406, 71.139W,42.386, 71.139W,42.374, 71.125W,42.363 +CAIRO, EGYPT: 31.148E,30.15, 31.177E,30.133, 31.209E,30.121, 31.225E,30.091, 31.22E,30.075, 31.211E,30.065, 31.218E,30.039, 31.215E,30.012, 31.212E,29.999, 31.216E,29.991, 31.214E,29.977, 31.266E,29.936, 31.275E,29.911, 31.286E,29.854, 31.286E,29.831, 31.285E,29.78, 31.294E,29.776, 31.298E,29.801, 31.296E,29.84, 31.292E,29.864, 31.288E,29.893, 31.284E,29.926, 31.273E,29.944, 31.238E,29.973, 31.228E,29.999, 31.223E,30.019, 31.228E,30.034, 31.233E,30.045, 31.227E,30.071, 31.244E,30.106, 31.236E,30.125, 31.221E,30.132, 31.183E,30.14, 31.164E,30.149, 31.143E,30.172, 31.106E,30.242 From 6ada1e5668bc51df0837984b2f49128bf7d162de Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 Jun 2021 12:43:41 +0100 Subject: [PATCH 11/13] Restore headers They're not preventing avatar images from showing --- daemon.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/daemon.py b/daemon.py index d3741c11d..b1a63181c 100644 --- a/daemon.py +++ b/daemon.py @@ -607,12 +607,12 @@ class PubServer(BaseHTTPRequestHandler): self.send_header('Cookie', cookieStr) self.send_header('Host', callingDomain) self.send_header('InstanceID', self.server.instanceId) - # self.send_header('X-Robots-Tag', - # 'noindex, nofollow, noarchive, nosnippet') + self.send_header('X-Robots-Tag', + 'noindex, nofollow, noarchive, nosnippet') self.send_header('X-Clacks-Overhead', 'GNU Natalie Nguyen') - # self.send_header('Cache-Control', 'public') - # self.send_header('Referrer-Policy', 'origin') - # self.send_header('Accept-Ranges', 'none') + self.send_header('Cache-Control', 'public') + self.send_header('Referrer-Policy', 'origin') + self.send_header('Accept-Ranges', 'none') def _set_headers(self, fileFormat: str, length: int, cookie: str, callingDomain: str) -> None: From 2b484c29eb0d599e4a153e60978b7ef0d5c60e18 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 Jun 2021 13:52:16 +0100 Subject: [PATCH 12/13] Remove duplicate locations --- locations.txt | 7724 ++++++++++++++++++++++++------------------------- 1 file changed, 3773 insertions(+), 3951 deletions(-) diff --git a/locations.txt b/locations.txt index 592ebee87..dd8e5324c 100644 --- a/locations.txt +++ b/locations.txt @@ -1,3995 +1,3817 @@ -DERBY, ENGLAND:52.91652:W1.47241:64 -PRESTON, ENGLAND:53.76409:W2.70456 -GOROKA, PAPUA NEW GUINEA:-6.08167:145.392 -MADANG, PAPUA NEW GUINEA:-5.20694:145.789 -MOUNT HAGEN, PAPUA NEW GUINEA:-5.82611:144.296 -NADZAB, PAPUA NEW GUINEA:-6.56972:146.726 -PORT MORESBY, PAPUA NEW GUINEA:-9.44333:147.22 -WEWAK, PAPUA NEW GUINEA:-3.58361:143.669 -NARSSARSSUAQ, GREENLAND:61.1611:W45.4275 -NERLERIT INAAT, GREENLAND:70.7394:W22.6458 -GODTHAAB, GREENLAND:64.1908:W51.6781 -JAKOBSHAVN, GREENLAND:69.2333:W51.0667 -KULUSUK, GREENLAND:65.5833:W37.15 -SONDRESTROM, GREENLAND:67.0169:W50.6892 -THULE, GREENLAND:76.5311:W68.7031 -AKUREYRI, ICELAND:65.6597:W18.0725 -EGILSSTADIR, ICELAND:65.2833:W14.4014 -HOFN, ICELAND:64.2956:W15.2272 -HUSAVIK, ICELAND:65.9522:W17.4258 -ISAFJORDUR, ICELAND:66.0581:W23.1353 -KEFLAVIK, ICELAND:63.985:W22.6056 -KOPASKER, ICELAND:66.3136:W16.4611 -PATREKSFJORDUR, ICELAND:65.5558:W23.965 -REYKJAVIK, ICELAND:64.13:W21.9406 -SIGLUFJORDUR, ICELAND:66.1333:W18.9167 -VESTMANNAEYJAR, ICELAND:63.4242:W20.2786 -SAULT SAINTE MARIE, CANADA:46.485:W84.5094 -WINNIPEG, CANADA:50.0564:W97.0325 -HALIFAX, CANADA:44.6397:W63.4994 -ST. ANTHONY, CANADA:51.3917:W56.0844 -TOFINO, CANADA:49.0822:W125.772 -PELLY BAY, CANADA:68.5344:W89.8081 -BAIE COMEAU, CANADA:49.1322:W68.2072 -BAGOTVILLE, CANADA:48.3306:W70.9964 -BAKER LAKE, CANADA:64.2989:W96.0778 -CAMPBELL RIVER, CANADA:49.9508:W125.271 -BRANDON, CANADA:49.91:W99.9519 -CAMBRIDGE BAY, CANADA:69.1081:W105.138 -NANAIMO, CANADA:49.0522:W123.87 -CASTLEGAR, CANADA:49.2964:W117.632 -CHATHAM, CANADA:47.0078:W65.4492 -CHARLO, CANADA:47.9906:W66.3314 -COPPERMINE, CANADA:67.8167:W115.144 -CORONATION, CANADA:52.075:W111.445 -CHILLIWACK, CANADA:49.1528:W121.939 -CLYDE RIVER, CANADA:70.4861:W68.5167 -CORAL HARBOUR, CANADA:50.3319:W115.874 -DAWSON, CANADA:64.0431:W139.128 -BURWASH, CANADA:61.3711:W139.041 -PRINCETON, CANADA:49.4675:W120.512 -DEER LAKE, CANADA:49.2108:W57.3914 -DEASE LAKE, CANADA:58.4222:W130.032 -DAUPHIN, CANADA:51.1008:W100.052 -DAWSON CREEK, CANADA:55.7417:W120.182 -EDMONTON, CANADA:53.6667:W113.467 -EDMONTON, CANADA:53.3097:W113.58 -ESKIMO POINT, CANADA:61.0942:W94.0708 -ESTEVAN, CANADA:49.2103:W102.966 -EDSON, CANADA:53.5789:W116.465 -EUREKA, CANADA:79.9947:W85.8133 -INUVIK, CANADA:68.3042:W133.483 -IQALUIT, CANADA:63.7564:W68.5558 -FREDERICTON, CANADA:45.8694:W66.5317 -FORESTVILLE, CANADA:48.7461:W69.0972 -FLIN FLON, CANADA:54.6781:W101.682 -FORT RESOLUTION, CANADA:61.1808:W113.69 -FORT SIMPSON, CANADA:61.7603:W121.237 -KINGSTON, CANADA:44.2253:W76.5969 -LA GRANDE RIVIERE, CANADA:53.6253:W77.7042 -GASPE, CANADA:48.7753:W64.4786 -GERALDTON, CANADA:49.7783:W86.9394 -ILES DE LA MADELEINE, CANADA:47.4247:W61.7781 -KUUJJUARARAPIK, CANADA:55.2833:W77.7667 -GILLAM, CANADA:56.35:W94.7 -HUDSON BAY, CANADA:52.8167:W102.311 -DRYDEN, CANADA:49.8317:W92.7442 -HOLMAN ISLAND, CANADA:70.7631:W117.806 -GJOA HAVEN, CANADA:68.6356:W95.8497 -HAMILTON, CANADA:43.1731:W79.935 -MONTREAL, CANADA:45.5175:W73.4169 -HAY RIVER, CANADA:60.8397:W115.783 -HALIFAX, CANADA:44.8808:W63.5086 -ATIKOKAN, CANADA:48.7739:W91.6386 -POND INLET, CANADA:72.6833:W77.9667 -ST. JEAN, CANADA:45.2944:W73.2811 -STEPHENVILLE, CANADA:48.5442:W58.55 -KAMLOOPS, CANADA:50.7022:W120.442 -WATERLOO, CANADA:43.4589:W80.3844 -SCHEFFERVILLE, CANADA:54.805:W66.8053 -KINDERSLEY, CANADA:51.5175:W109.181 -TORONTO, CANADA:43.8622:W79.37 -CHAPLEAU, CANADA:47.82:W83.3464 -MEADOW LAKE, CANADA:54.1253:W108.523 -LLOYDMINSTER, CANADA:53.3092:W110.072 -ALERT, CANADA:82.5178:W62.2806 -KELOWNA, CANADA:49.9561:W119.378 -MAYO, CANADA:63.6167:W135.867 -MOOSE JAW, CANADA:50.3303:W105.559 -FORT MCMURRAY, CANADA:56.6533:W111.222 -MOOSONEE, CANADA:51.2911:W80.6078 -MANIWAKI, CANADA:46.2744:W75.99 -MONTREAL, CANADA:45.6797:W74.0386 -NATASHQUAN, CANADA:50.1897:W61.7892 -GATINEAU, CANADA:45.5214:W75.5642 -MATAGAMI, CANADA:49.7617:W77.8028 -OLD CROW, CANADA:67.5706:W139.839 -COLD LAKE, CANADA:54.405:W110.279 -HIGH LEVEL, CANADA:58.6214:W117.165 -OTTAWA, CANADA:45.3225:W75.6692 -PRINCE ALBERT, CANADA:53.2142:W105.673 -PEACE RIVER, CANADA:56.2269:W117.447 -PORTAGE-LA-PRAIRIE, CANADA:49.9028:W98.2747 -PITT MEADOWS, CANADA:49.2161:W122.71 -PICKLE LAKE, CANADA:51.4464:W90.2142 -PORT MENIER, CANADA:49.8364:W64.2886 -PETERBOROUGH, CANADA:44.23:W78.3633 -PRINCE PUPERT, CANADA:54.2861:W130.445 -FORT CHIPEWYAN, CANADA:58.7672:W111.117 -MUSKOKA, CANADA:44.9747:W79.3033 -QUEBEC, CANADA:46.7883:W71.3975 -RED DEER INDUSTRIAL, CANADA:52.1786:W113.893 -WINDSOR, CANADA:42.2756:W82.9556 -WATSON LAKE, CANADA:60.1178:W128.822 -KENORA, CANADA:49.7883:W94.3631 -LETHBRIDGE, CANADA:49.6303:W112.8 -MONCTON, CANADA:46.1122:W64.6786 -NAKINA, CANADA:50.1828:W86.6964 -COMOX, CANADA:49.7108:W124.887 -REGINA, CANADA:50.4319:W104.666 -THUNDER BAY, CANADA:48.3719:W89.3239 -GRANDE PRAIRIE, CANADA:55.1797:W118.885 -YORKTON, CANADA:51.2647:W102.462 -NORTH BATTLEFORD, CANADA:52.7692:W108.244 -GANDER, CANADA:48.9369:W54.5681 -SYDNEY, CANADA:46.1614:W60.0478 -QUESNEL, CANADA:53.0261:W122.51 -RESOLUTE, CANADA:74.7169:W94.9694 -RIVIERE DU LOUP, CANADA:47.7644:W69.5847 -ROBERVAL, CANADA:48.52:W72.2656 -ROCKY MOUNTAIN HOUSE, CANADA:52.4297:W114.904 -RANKIN INLET, CANADA:62.8114:W92.1158 -SUDBURY, CANADA:46.625:W80.7989 -SHERBROOKE, CANADA:45.4381:W71.6906 -ST. JOHN, CANADA:45.3161:W65.8903 -FORT SMITH, CANADA:60.0222:W111.96 -NANISIVIK, CANADA:72.9822:W84.6136 -SUMMERSIDE, CANADA:46.4428:W63.8311 -SACHS HARBOUR, CANADA:71.9939:W125.243 -CAPE DORSET, CANADA:64.23:W76.5267 -THOMPSON, CANADA:55.8011:W97.8642 -TRENTON, CANADA:44.1189:W77.5281 -TIMMINS, CANADA:48.5697:W81.3767 -TORONTO, CANADA:43.6275:W79.3961 -TUKTOYAKTUK, CANADA:69.4333:W133.026 -MONTREAL, CANADA:45.4681:W73.7414 -REPULSE BAY, CANADA:66.5214:W86.2247 -HALL BEACH, CANADA:68.7761:W81.2436 -ROUYN, CANADA:48.2061:W78.8356 -LA RONGE, CANADA:55.1514:W105.262 -VERMILLION, CANADA:53.3558:W110.824 -BROUGHTON ISLAND, CANADA:67.5458:W64.0314 -VAL D'OR, CANADA:48.0533:W77.7828 -QUUJJUAQ, CANADA:58.0961:W68.4269 -NORMAN WELLS, CANADA:65.2825:W126.8 -VANCOUVER, CANADA:49.195:W123.182 -BUFFALO NARROWS, CANADA:55.8419:W108.418 -WIARTON, CANADA:44.7458:W81.1072 -PETAWAWA, CANADA:45.9522:W77.3192 -WINNIPEG, CANADA:49.91:W97.2344 -WABUSH, CANADA:52.9219:W66.8644 -WILLIAMS LAKE, CANADA:52.1831:W122.054 -WRIGLEY, CANADA:63.2094:W123.437 -CRANBROOK, CANADA:49.6103:W115.782 -EDMONTON, CANADA:53.5725:W113.521 -SASKATOON, CANADA:52.1708:W106.7 -MEDICINE HAT, CANADA:50.0189:W110.721 -FORT SAINT JOHN, CANADA:56.2381:W120.74 -SIOUX LOOKOUT, CANADA:50.1144:W91.9042 -PANGNIRTUNG, CANADA:66.145:W65.7136 -EARLTON, CANADA:47.695:W79.8489 -PRINCE GEORGE, CANADA:53.8894:W122.679 -TERRACE, CANADA:54.4664:W128.577 -LONDON, CANADA:43.0356:W81.1539 -ABBOTSFORD, CANADA:49.0253:W122.363 -WHITEHORSE, CANADA:60.7094:W135.068 -NORTH BAY, CANADA:46.3636:W79.4228 -CALGARY, CANADA:51.1139:W114.02 -SMITHERS, CANADA:54.8247:W127.183 -FORT NELSON, CANADA:58.8364:W122.597 -PENTICTON, CANADA:49.4628:W119.602 -CHARLOTTETOWN, CANADA:46.29:W63.1211 -SPENCE BAY, CANADA:69.5467:W93.5767 -VICTORIA, CANADA:48.6469:W123.426 -LYNN LAKE, CANADA:56.8639:W101.076 -SWIFT CURRENT, CANADA:50.2919:W107.691 -CHURCHILL, CANADA:58.7392:W94.065 -GOOSE BAY, CANADA:53.3192:W60.4258 -ST. JOHN'S, CANADA:47.6186:W52.7519 -KAPUSKASING, CANADA:49.4139:W82.4675 -ARMSTRONG, CANADA:50.2903:W88.9097 -MONT JOLI, CANADA:48.6086:W68.2081 -TORONTO, CANADA:43.6772:W79.6306 -TORONTO, CANADA:43.7425:W79.4656 -GORE BAY, CANADA:45.8853:W82.5678 -YELLOWKNIFE, CANADA:62.4628:W114.44 -SLAVE LAKE, CANADA:55.2933:W114.778 -SANDSPIT, CANADA:53.2542:W131.814 -SARNIA, CANADA:42.9994:W82.3089 -PORT HARDY, CANADA:50.6806:W127.367 -WHITECOURT, CANADA:54.1439:W115.787 -SEPT-ILES, CANADA:50.2233:W66.2656 -TESLIN, CANADA:60.1728:W132.743 -GREENWOOD, CANADA:44.9844:W64.9169 -FARO, CANADA:62.2075:W133.376 -FORT MCPHERSON, CANADA:67.4078:W134.86 -BLIDA, ALGERIA:36.5036:2.81417 -BOU SAADA, ALGERIA:35.3325:4.20639 -BEJAJA, ALGERIA:36.7119:5.06972 -ALGIER, ALGERIA:36.6908:3.21528 -DJANET, ALGERIA:24.2925:9.45222 -BOUFARIK, ALGERIA:36.5458:2.87611 -TELERGMA, ALGERIA:36.1086:6.36444 -REGGAN, ALGERIA:26.71:0.285556 -ILLIZI, ALGERIA:26.5733:8.48361 -AIN OUSSERA, ALGERIA:35.5253:2.87861 -SETIF, ALGERIA:36.1781:5.32444 -TAMANRASSET, ALGERIA:22.8108:5.45083 -JIJEL, ALGERIA:36.795:5.87333 -MECHERIA, ALGERIA:33.5358:W0.242222 -RELIZANE, ALGERIA:35.7522:0.626111 -ANNABA, ALGERIA:36.8222:7.80917 -CONSTANTINE, ALGERIA:36.2767:6.62389 -TEBESSA, ALGERIA:35.4314:8.12056 -TILREMPT, ALGERIA:32.9297:3.31222 -TIARET, ALGERIA:35.3411:1.46306 -BOU SFER, ALGERIA:35.7353:W0.805278 -TINDOUF, ALGERIA:27.7003:W8.16694 -ECH-CHELIFF, ALGERIA:36.2125:1.33167 -ORAN, ALGERIA:35.5422:W0.532222 -TLEMCEN, ALGERIA:35.0167:W1.45 -ORAN, ALGERIA:35.6236:W0.621111 -SIDI BEL ABBES, ALGERIA:35.1717:W0.593056 -GHRISS, ALGERIA:35.2075:0.146944 -ADRAR, ALGERIA:27.8375:W0.186389 -BISKRA, ALGERIA:34.7931:5.73806 -EL GOLEA, ALGERIA:30.5711:2.85944 -GHARDAIA, ALGERIA:32.3839:3.79389 -HASSI-MESSAOUD, ALGERIA:31.6728:6.14028 -IN SALAH, ALGERIA:27.2508:2.51194 -TOUGGOURT, ALGERIA:33.0678:6.08861 -LAGHOUAT, ALGERIA:33.7639:2.92722 -TIMIMOUN, ALGERIA:29.2369:0.275833 -OUARGLA, ALGERIA:31.9172:5.41278 -ZARZAITINE, ALGERIA:28.0514:9.64278 -COTONOU, BENIN:6.35722:2.38417 -PARAKOU, BENIN:9.35694:2.60889 -OUAGADOUGOU, BURKINA FASO:12.3531:W1.51222 -BOBO-DIOULASSO, BURKINA FASO:11.16:W4.33083 -ACCRA, GHANA:5.60278:W0.168056 -TAMALE, GHANA:9.56333:W0.863333 -WA, GHANA:10.0825:W2.5075 -SUNYANI, GHANA:7.36167:W2.32861 -TAKORADI, GHANA:4.89333:W1.775 -ABIDJAN, IVORY COAST:5.25972:W3.92639 -BOUAKE, IVORY COAST:7.73861:W5.07361 -DALOA, IVORY COAST:6.7925:W6.47306 -KORHOGO, IVORY COAST:9.38694:W5.55639 -MAN, IVORY COAST:7.27194:W7.58694 -SAN PEDRO, IVORY COAST:4.74667:W6.66056 -YAMOUSSOUKRO, IVORY COAST:6.90306:W5.36583 -ABUJA, NIGERIA:9.00667:7.26306 -AKURE, NIGERIA:7.24667:5.30083 -BENIN, NIGERIA:6.31722:5.59944 -CALABAR, NIGERIA:4.97583:8.34694 -ENUGU, NIGERIA:6.47417:7.56194 -GUSAU, NIGERIA:12.1717:6.69611 -IBADAN, NIGERIA:7.36222:3.97833 -ILORIN, NIGERIA:8.44:4.49389 -JOS, NIGERIA:9.63972:8.86889 -KADUNA, NIGERIA:10.6958:7.32 -KANO, NIGERIA:12.0475:8.52444 -MAIDUGURI, NIGERIA:11.8553:13.0808 -MAKURDI, NIGERIA:7.70361:8.61389 -LAGOS, NIGERIA:6.57722:3.32111 -MINNA, NIGERIA:9.65194:6.46222 -PORT HARTCOURT, NIGERIA:5.01528:6.94944 -SOKOTO, NIGERIA:12.9161:5.20694 -YOLA, NIGERIA:9.26028:12.4297 -ZARIA, NIGERIA:11.13:7.68556 -MARADI, NIGER:13.5025:7.12667 -NIAMEY, NIGER:13.4814:2.18361 -TAHOUA, NIGER:14.8756:5.26528 -AGADEZ, NIGER:16.9647:7.99694 -DIRKOU, NIGER:18.9686:12.8686 -DIFFA, NIGER:13.3728:12.6267 -ZINDER, NIGER:13.7789:8.98361 -TANOUT, NIGER:14.9994:8.76694 -MONASTIR, TUNISIA:35.7581:10.7547 -TUNIS, TUNISIA:36.8508:10.2269 -BIZERTE, TUNISIA:37.2453:9.79139 -REMADA, TUNISIA:32.3061:10.3819 -GAFSA, TUNISIA:34.4219:8.8225 -GABES, TUNISIA:33.8767:10.1033 -BORDJ EL AMRI, TUNISIA:36.7211:9.94306 -DJERBA, TUNISIA:33.875:10.7753 -EL BORMA, TUNISIA:31.7042:9.25444 -SFAX, TUNISIA:34.7178:10.6908 -TOZEUR, TUNISIA:33.9397:8.11056 -NIATOUGOU, TOGO:9.76722:1.09111 -LOME, TOGO:6.16556:1.25389 -ANTWERP, BELGIUM:51.19:4.46278 -BEAUVECHAIN, BELGIUM:50.7586:4.76833 -KLEINE BROGEL, BELGIUM:51.1678:5.47083 -BRUSSELS, BELGIUM:50.9022:4.49861 -BRASSCHAAT, BELGIUM:51.3333:4.5 -BERTRIX, BELGIUM:49.8872:5.22861 -CHARLEROI, BELGIUM:50.4592:4.45361 -CHIEVRES, BELGIUM:50.5758:3.83083 -KOKSIJDE, BELGIUM:51.09:2.65278 -FLORENNES, BELGIUM:50.2436:4.64861 -KORTRIJK-VEVELGEM, BELGIUM:50.8178:3.20833 -LIEGE, BELGIUM:50.6372:5.44306 -OSTEND, BELGIUM:51.1989:2.86222 -ZUTENDAAL, BELGIUM:50.9483:5.59167 -SINT-TRUIDEN, BELGIUM:50.7883:5.19278 -URSEL, BELGIUM:51.1439:3.47417 -WEELDE, BELGIUM:51.395:4.96056 -ZOERSEL, BELGIUM:51.2656:4.75472 -BAUTZEN, GERMANY:51.1933:14.5197:66 -ALTENBURG, GERMANY:50.9817:12.5061:45 -DESSAU, GERMANY:51.8319:12.1858:182 -EISENHUETTENSTADT, GERMANY:52.1972:14.5856:63 -HERINGSDORF, GERMANY:53.8786:14.1522:37 -SUHL, GERMANY:51.3081:13.5547:141 -MUEHLHAUSEN, GERMANY:51.3628:11.9408:130 -HALLE, GERMANY:51.5519:12.0525:135 -RIESA, GERMANY:51.2944:13.3589:58 -RECHLIN-LAERZ, GERMANY:53.3064:12.7531:43 -STRAUSBERG, GERMANY:52.5797:13.9156:67 -COCHSTEDT, GERMANY:51.8558:11.4181:29 -BARTH, GERMANY:54.3381:12.71:40 -JENA, GERMANY:50.9172:11.7136:114 -KYRITZ, GERMANY:52.9186:12.4253:156 -MAGDEBURG, GERMANY:52.0736:11.6264:201 -NEUBRANDENBURG, GERMANY:51.3281:12.6567:85 -ANKLAM, GERMANY:53.8325:13.6689:56 -COTTBUS, GERMANY:51.8894:14.5317:164 -KOETHEN, GERMANY:51.7211:11.9617:78 -KAMENZ, GERMANY:51.2961:14.1289:98 -BERLIN, GERMANY:52.5170365:13.3888599:891 -DRESDEN, GERMANY:51.0493286:13.7381437:328 -ERFURT, GERMANY:50.98:10.9581:269 -FRANKFURT, GERMANY:50.1106444:8.6820917:248 -MUENSTER/OSNABRUECK, GERMANY:52.1344:7.68472:302 -HAMBURG, GERMANY:53.550341:10.000654:755 -COLOGNE, GERMANY:50.8658:7.1425:405 -DUESSELDORF, GERMANY:51.2894:6.76667:217 -MUNICH, GERMANY:48.1371079:11.5753822:310 -NUERNBERG, GERMANY:49.453872:11.077298:186 -LEIPZIG, GERMANY:51.3406321:12.3747329:297 -SAARBRUECKEN, GERMANY:49.2144:7.10944:167 -STUTTGART, GERMANY:48.7784485:9.1800132:207 -HANNOVER, GERMANY:52.3744779:9.7385532:204 -BREMEN, GERMANY:53.0758196:8.8071646:326 -EGELSBACH, GERMANY:49.9608:8.64361:14 -HAHN, GERMANY:49.9497:7.26389:5 -MANNHEIM, GERMANY:49.4725:8.51361:145 -ALLENDORF, GERMANY:51.0353:8.67889:41 -WORMS, GERMANY:49.6064:8.36833:108 -MAINZ, GERMANY:49.9689:8.1475:97 -EISENACH, GERMANY:50.9928:10.4725:104 -SIEGERLAND, GERMANY:50.7075:8.08194:114 -KIEL, GERMANY:54.3794:10.145:118 -LUEBECK, GERMANY:53.8053:10.7192:214 AACHEN, GERMANY:50.8228:6.18722:160 -MEINERZHAGEN, GERMANY:51.0994:7.60194:115 -ARNSBERG, GERMANY:51.4833:7.89917:193 -KAMP, GERMANY:51.5303:6.53694:63 -ESSEN, GERMANY:51.4582235:7.0158171:210 -MOENCHENGLADBACH, GERMANY:51.2303:6.50444:170 -PADERBORN, GERMANY:51.6142:8.61611:179 -STADTLOHN, GERMANY:51.9958:6.84028:79 -DORTMUND, GERMANY:51.5142273:7.4652789:280 -AUGSBURG, GERMANY:48.425:10.9317:146 -BIBERACH, GERMANY:48.1108:9.76278:72 -EGGENFELDEN, GERMANY:48.3961:12.7236:44 -STRAUBING, GERMANY:48.9008:12.5181:67 -VILSHOFEN, GERMANY:48.6364:13.1953:86 -LEUTKIRCH, GERMANY:47.8589:10.0144:175 -FRIEDRICHSHAFEN, GERMANY:47.6711:9.51139:69 -PARCHIM, GERMANY:53.4269:11.7833:124 -STENDAL, GERMANY:52.6289:11.8197:268 -COBURG, GERMANY:50.2625:10.9958:48 -BAYREUTH, GERMANY:49.9842:11.6383:66 -HOF, GERMANY:50.2886:11.8547:58 -ROSENTHAL, GERMANY:49.8628:11.7878:51 -HASSFURT, GERMANY:50.0178:10.5294:52 -KOBLENZ, GERMANY:50.3247:7.53083:105 -TRIER, GERMANY:49.8633:6.78889:117 -SPEYER, GERMANY:49.3025:8.45111:42 -ZWEIBRUECKEN, GERMANY:49.2094:7.40056:70 -BADEN-BADEN, GERMANY:48.7911:8.18694:140 -DONAUESCHINGEN, GERMANY:47.9731:8.52222:104 -FREIBURG, GERMANY:48.0203:7.83361:153 -KARLSRUHE, GERMANY:48.9822:8.33333:173 -MENGEN, GERMANY:48.0536:9.37278:49 -SCHWAEBISCH HALL, GERMANY:49.1181:9.77722:104 -SOEST, GERMANY:51.6075:13.7378:85 -BRAUNSCHWEIG, GERMANY:52.3192:10.5561:192 -KASSEL, GERMANY:51.4083:9.3775:106 -HILDESHEIM, GERMANY:52.1775:9.94556:92 -BREMERHAVEN, GERMANY:53.5033:8.57333:93 -LEMWERDER, GERMANY:53.1431:8.62333:36 -EMDEN, GERMANY:53.3911:7.22722:112 -LEER, GERMANY:53.2719:7.44278:70 -WILHELMSHAVEN, GERMANY:53.5047:8.05333:106 -BORKUM, GERMANY:53.5953:6.70917:30 -NORDERNEY, GERMANY:53.7067:7.23:26 -FLENSBURG, GERMANY:54.7717:9.37806:56 -RENDSBURG, GERMANY:54.2208:9.60056:23 -WESTERLAND, GERMANY:54.9131:8.34028:10 -KARDLA, ESTONIA:58.9906:22.8306 -KURESSAARE, ESTONIA:58.2297:22.5094 -PARNU, ESTONIA:58.4189:24.4728 -TALLINN-ULEMISTE INTERNATIONAL, ESTONIA:59.4131:24.8328 -TARTU-ULENURME, ESTONIA:58.3072:26.6903 -ENONTEKIO, FINLAND:68.3625:23.4242 -EURA, FINLAND:61.1161:22.2014 -HALLI, FINLAND:61.8558:24.7864 -HELSINKI, FINLAND:60.23542123800722:24.927984421582043 -HAMEENKYRO, FINLAND:61.6894:23.0736 -HANKO, FINLAND:59.8486:23.0833 -HYVINKAA, FINLAND:60.6544:24.8811 -KIKALA, FINLAND:60.4625:23.6525 -IMMOLA, FINLAND:61.2492:28.9036 -KITEE, FINLAND:62.1661:30.0736 -IVALO, FINLAND:68.6072:27.4053 -JOENSUU, FINLAND:62.6589:29.6244 -JYVASKYLA, FINLAND:62.3994:25.6781 -KAUHAVA, FINLAND:63.1269:23.0514 -KEMI, FINLAND:65.7817:24.5989 -KAJAANI, FINLAND:64.2853:27.6922 -KAUHAJOKI, FINLAND:62.4625:22.3931 -KRUUNUPYY, FINLAND:63.7211:23.1431 -KEMIJARVI, FINLAND:66.7128:27.1567 -KUUSAMO, FINLAND:65.9875:29.2392 -KITTILA, FINLAND:67.7008:24.8467 -KUOPIO, FINLAND:63.0069:27.7975 -VESIVEHMAA, FINLAND:61.1439:25.6933 -LAPPEENRANTA, FINLAND:61.0444:28.1442 -MARIEHAMN, FINLAND:60.1219:19.8981 -MENKIJARVI, FINLAND:62.9467:23.5189 -MIKKELI, FINLAND:61.6864:27.2017 -NUMMELA, FINLAND:60.3339:24.2964 -OULU, FINLAND:64.93:25.3544 -PIIKAJARVI, FINLAND:61.2456:22.1933 -PORI, FINLAND:61.4617:21.7997 -PUDASJARVI, FINLAND:65.4022:26.9469 -PYHASALMI, FINLAND:63.7317:25.9261 -PATTIJOKI, FINLAND:64.6881:24.6958 -RANTASALMI, FINLAND:62.0653:28.3564 -ROVANIEMI, FINLAND:66.5647:25.8303 -RAYSKALA, FINLAND:60.7447:24.1078 -SAVONLINNA, FINLAND:61.9431:28.945 -SELANPAA, FINLAND:61.0622:26.7986 -SODANKYLA, FINLAND:67.395:26.6189 -TAMPERE, FINLAND:61.4139:23.6042 -TEISKO, FINLAND:61.7733:24.0269 -TURKU, FINLAND:60.5139:22.2628 -UTTI, FINLAND:60.8964:26.9383 -VAASA, FINLAND:63.0511:21.7614 -VARKAUS, FINLAND:62.1711:27.8686 -YLIVIESKA-RAUDASKYLA, FINLAND:64.0603:24.7158 -BELFAST, NORTH IRELAND:54.57925:W5.93892:115 -ENNISKILLEN, ENGLAND:54.3989:W7.65167 -LONDONDERRY, NORTH IRELAND:54.9978678:W7.3213056 -BIRMINGHAM, ENGLAND:52.4796992:W1.9026911:267 -COVENTRY, ENGLAND:52.4081812:W1.510477:81 -LEICESTER, ENGLAND:52.6361398:W1.1330789:109 -NOTTINGHAM, ENGLAND:52.9534193:W1.1496461:176 -HALFPENNY GREEN, ENGLAND:52.5175:W2.25972 -PAILTON, UK:51.6681:W2.05694 -TURWESTON, UK:52.0408:W1.09556 -MANCHESTER, ENGLAND:53.4794892:W2.2451148:1276 -WOODFORT, ENGLAND:53.3381:W2.14889 -SANDTOFT, UK:53.5597:W0.858333 -CHIVENOR, ENGLAND:51.0869:W4.15028 -NEWQUAI, ENGLAND:50.4406:W4.99528 -LYNEHAM, UK:51.505:W1.99333 -BOSCOMBE DOWN, ENGLAND:51.1519:W1.74722 -CULDROSE, ENGLAND:50.0858:W5.25556 -ST. ATHAN, UK:51.4047:W3.43556 -YEOVILTON, UK:51.0092:W2.63861 -HAVERFORDWEST, ENGLAND:51.8331:W4.96111 -CARDIFF, WALES:51.4816546:W3.1791934:140 -SWANSEA, ENGLAND:51.623192463569175:W3.9580269270752:380 -BRISTOL, ENGLAND:51.4538022:W2.5972985:110 -LIVERPOOL, ENGLAND:53.407154:W2.991665:199 -LONDON, ENGLAND:51.5073219:W0.1276474:1738 -PLYMOUTH, ENGLAND:50.38433871605018:W4.142479969311532:79 -BOURNEMOUTH, ENGLAND:50.7423141383493:W1.8999454858886722:46 -SOUTHAMPTON, ENGLAND:50.92571412096368:W1.4174069260253863:72 -GUERNSEY, GUERNSEY ISLD.:49.4347:W2.60194 -JERSEY, ENGLAND:51.7682578:W0.293425 -FARNBOROUGH, ENGLAND:51.2758:W0.776111 -CHALSGROVE, ENGLAND:51.6761:W1.08083 -BLACKBUSHE, ENGLAND:51.3239:W0.8475 -SOUTHEND, ENGLAND:51.5714:0.695556 -LYDD, UK:50.9561:0.939167 -MANSTON, ENGLAND:51.3422:1.34611 -BROUGH, ENGLAND:53.7194:W0.566111 -CARLISLE, ENGLAND:54.89144:W2.93536 -BLACKPOOL, ENGLAND:53.7717:W3.02861:34 -HUMBERSIDE, ENGLAND:53.5744:W0.350833 -BARROW ISLAND, ENGLAND:54.1297:W3.25611 -LEEDS, ENGLAND:53.7974185:W1.5437941:551 -WARTON, UK:53.745:W2.88306 -HAWARDEN, ENGLAND:53.1781:W2.97778 -ISLE OF MAN, ENGLAND:54.0833:W4.62389 -NEWCASTLE, ENGLAND:54.9738474:W1.6131572:114 -MIDDLESBROUGH, ENGLAND:54.5760419:W1.2344047:114 -LLANBEDR, ENGLAND:52.8117:W4.12333 -TERNHILL, UK:52.8711:W2.53333 -MONA, UK:53.2583:W4.37333 -SHAWBURY, UK:52.7981:W2.66778 -VALLEY, UK:53.2481:W4.53528 -WOODVALE, UK:53.5814:W3.05528 -WEST FREUGH, UK:54.8511:W4.94778 -KIRKWALL, SCOTLAND:58.9581:W2.905 -SUMBURGH, UK:59.8789:W1.29556 -WICK, UK:58.4586:W3.09278 -ABERDEEN, UK:57.145278438534575:W2.1125505583496174:185 -INVERNESS, UK:57.4790124:W4.225739:20 -GLASGOW, UK:55.8609825:W4.2488787:368 -EDINBURGH, UK:55.945672242712185:W3.1995328895019592:125 -ISLAY, UK:55.6819:W6.25667 -PRESTWICK, UK:55.5078:W4.58667:20 -DUNDEE, UK:56.47786741082439:W2.9823779577636778:60 -STORNOWAY, UK:58.2141245782211:W6.379953784594727:3 -CAMBRIDGE, ENGLAND:52.205:0.175:42 -PETERBOROUGH, ENGLAND:52.5725769:W0.2427336:44 -NORWICH, ENGLAND:52.628606:1.29227:52 -EXETER, ENGLAND:50.7344:W3.41389:28 -HATFIELD, ENGLAND:51.7667:0.25:9 -OXFORD, ENGLAND:51.7520131:W1.2578499:37 -BENSON, ENGLAND:51.6161:W1.09556:9 -MILDENHALL, ENGLAND:52.3608:0.488333:36 -CONINGSBY, ENGLAND:53.0928:W0.165833:14 -WITTERING, UK:52.6125:W0.476389:13 -COLTISHALL, ENGLAND:52.7547:1.35722:7 -AMSTERDAM, NETHERLANDS:52.3086:4.76389:219 -WEERT, NETHERLANDS:51.2553:5.60139:105 -MAASTRICHT, NETHERLANDS:50.9114:5.77:60 -EINDHOVEN, NETHERLANDS:51.45:5.37444:88 -GRONINGEN, NETHERLANDS:53.1194:6.57944:83 -GILZE-RIJEN, NETHERLANDS:51.5678:4.93306:65 -LEEUWARDEN, NETHERLANDS:53.2286:5.76056:255 -ROTTERDAM, NETHERLANDS:51.9572:4.44167:324 -ENSCHEDE, NETHERLANDS:52.27:6.87417:142 -VALKENBURG, NETHERLANDS:52.1697:4.42611:36 -WOENSDRECHT, NETHERLANDS:51.4489:4.34194:91 -CORK, IRELAND:51.8428:W8.49194:187 -GALWAY, IRELAND:53.3014:W8.93917:54 -DONEGAL, IRELAND:55.0442:W8.34083:2 -DUBLIN, IRELAND:53.4211:W6.27:117 -SHANNON, IRELAND:52.7019:W8.92472:2 -SLIGO, IRELAND:54.28:W8.59917:10 -WATERFORD, IRELAND:52.1869:W7.08694:48 -AARHUS, DENMARK:56.3042:10.6194:91 -COPENHAGEN, DENMARK:55.6178:12.6558:88 -LAESO, DENMARK:57.2778:11.0014 -MARIBO, DENMARK:54.6992:11.44 -ODENSE, DENMARK:55.4761:10.3292 -KRUSA-PADBORG, DENMARK:54.8703:9.27917 -COPENHAGEN, DENMARK:55.5856:12.1314 -RONNE, DENMARK:55.0631:14.7594 -SOENDERBORG, DENMARK:54.9642:9.79167 -SINDAL, DENMARK:57.5033:10.2292 -SKRYDSTRUP, DENMARK:55.2253:9.26389 -SKIVE, DENMARK:56.55:9.17278 -THISTED, DENMARK:57.0686:8.705 -VANDEL, DENMARK:55.6969:9.19333 -KOLDING, DENMARK:55.4361:9.33083 -VAGAR, FAROE ISL.:62.0636:W7.27694 -VESTHIMMERLAND, DENMARK:56.8469:9.45861 -STAUNING, DENMARK:55.99:8.35389 -VAERLOSE, DENMARK:55.7672:12.3433 AALBORG, DENMARK:57.0928:9.84889 -LUXEMBURG, LUXEMBURG:49.6264:6.21139 -ALESUND, NORWAY:62.5603:6.11 -ANDOYA, NORWAY:69.2925:16.1442 -ALTA, NORWAY:69.9769:23.3661 -FORDE, NORWAY:61.3925:5.76417 -BOMOEN, NORWAY:60.6386:6.50139 -BRONNOYSUND, NORWAY:65.4592:12.2136 -BODOE, NORWAY:67.2689:14.3633 -BERGEN, NORWAY:60.2933:5.21806 -BATSFJORD, NORWAY:70.6:29.6925 -KRISTIANSAND, NORWAY:58.2042:8.08528 -DAGLI, NORWAY:60.4167:8.51389 -BARDUFOSS, NORWAY:69.0556:18.5403 -EVENES, NORWAY:68.4911:16.6781 -OSLO, NORWAY:59.8956:10.6169 -FAGERNES, NORWAY:61.0111:9.29306 -FLORO, NORWAY:61.5839:5.025 -OSLO, NORWAY:60.1939:11.1003 -HAMAR, NORWAY:60.8183:11.0672 -HAUGESUND, NORWAY:59.345:5.20833 -HASVIK, NORWAY:70.4867:22.1397 -KRISTIANSUND, NORWAY:63.1117:7.82444 -KJELLER, NORWAY:59.9692:11.0358 -KIRKENES, NORWAY:69.725:29.8875 -LISTA, NORWAY:58.1003:6.625 -MOLDE, NORWAY:62.7461:7.2725 -MOSJOEN, NORWAY:65.7839:13.2147 -BANAK, NORWAY:70.0686:24.9733 -NOTODDEN, NORWAY:59.5656:9.21167 -ORLAND, NORWAY:63.6989:9.60389 -ROROS, NORWAY:62.5783:11.3422 -RYGGE, NORWAY:59.3789:10.7856 -SVALBARD, NORWAY:78.2461:15.4656 -SOGNDAL, NORWAY:61.1561:7.13639 -SKIEN, NORWAY:59.185:9.56694 -STORD, NORWAY:59.7917:5.34083 -SORKJOSEN, NORWAY:69.7869:20.9594 -SVARTNES, NORWAY:70.3553:31.0447 -SANDNESSJOEN, NORWAY:65.9567:12.4689 -TROMSO, NORWAY:69.6833:18.9189 -TORP, NORWAY:59.1867:10.2586 -TRONDHEIM, NORWAY:63.4575:10.9397 -STAVANGER, NORWAY:58.8767:5.63778 -GDANSK, POLAND:54.3775:18.4661 -KRAKOW, POLAND:50.0775:19.7847 -KATOWICE, POLAND:50.2383:19.035 -KOSZALIN, POLAND:54.0422:16.2636 -KATOWICE, POLAND:50.4742:19.08 -LODZ, POLAND:51.7219:19.3981 -MIELEC, POLAND:50.3222:21.4619 -POZNAN, POLAND:52.4211:16.8264 -RZESZOW, POLAND:50.11:22.0189 -SZCZECHIN, POLAND:53.5847:14.9019 -SZCZECHIN, POLAND:53.3919:14.6336 -SLUPSK, POLAND:54.4789:17.1075 -SHAPAJA, PERU:53.7906:15.8281 -WARSAW, POLAND:52.1656:20.9669 -WROCLAW, POLAND:51.1025:16.8858 -ZIELONA GORA, POLAND:52.1386:15.7986 -LINKOEPING, SWEDEN:58.4022:15.5256 -NORRKOEPING, SWEDEN:58.6108:16.1033 -UPPSALA, SWEDEN:59.8972:17.5883 -STOCKHOLM, SWEDEN:59.1808:17.9122 -ANGELHOLM, SWEDEN:56.2958:12.8469 -RONNEBY, SWEDEN:56.2667:15.265 -HASSLOSA, SWEDEN:58.4092:13.2625 -KNISLINGE, SWEDEN:56.1836:14.1322 -MOHOLM, SWEDEN:58.5981:14.1136 -KOSTA, SWEDEN:56.8442:15.4525 -RADA, SWEDEN:58.4981:13.0531 -BYHOLMA, SWEDEN:56.785:13.6017 -GOTHENBORG, SWEDEN:57.6628:12.2797 -JOENKOEPING, SWEDEN:57.7575:14.0686 -FALKOPING, SWEDEN:58.1697:13.5878 -LIDKOPING, SWEDEN:58.4653:13.1742 -GOTHENBORG, SWEDEN:57.7747:11.8703 -SKOVDE, SWEDEN:58.4564:13.9725 -TROLLHATTAN, SWEDEN:58.3181:12.345 -KARLSBORG, SWEDEN:58.5136:14.5069 -SATENAS, SWEDEN:58.4264:12.7142 -GIMO, SWEDEN:60.1328:18.105 -STOCKHOLM, SWEDEN:59.4186:17.8906 -KARLSKOGA, SWEDEN:59.3458:14.4958 -MORA, SWEDEN:60.9578:14.5111 -STOCKHOLM, SWEDEN:58.7886:16.9119 -STRANGNAS, SWEDEN:59.3139:17.1092 -ARVIKA, SWEDEN:59.6758:12.6392 -BJORKVIK, SWEDEN:58.7908:16.5708 -EMMABODA, SWEDEN:56.6106:15.6047 -LJUNGBY, SWEDEN:56.9503:13.9217 -KRISTIANSTAD, SWEDEN:55.9217:14.0853 -LANDSKRONA, SWEDEN:55.9447:12.8608 -OSKARSHAMN, SWEDEN:57.3503:16.4978 -ANDERSTORP, SWEDEN:57.2642:13.5992 -KALKMAR, SWEDEN:56.6853:16.2875 -MALMOE, SWEDEN:55.53:13.3714 -HALMSTAD, SWEDEN:56.6911:12.82 -HAGSHULT, SWEDEN:57.2922:14.1372 -VAXJO, SWEDEN:56.9289:14.7278 -HALLVIKEN, SWEDEN:63.7383:15.4583 -HEDE, SWEDEN:62.4089:13.7472 -SVEG, SWEDEN:62.0478:14.4228 -FARILA, SWEDEN:61.8981:15.7053 -GALLIVARE, SWEDEN:67.1322:20.8144 -HUDIKSVALL, SWEDEN:61.7681:17.0806 -KUBBE, SWEDEN:63.6336:17.9397 -JOKKMOKK, SWEDEN:66.4961:20.1469 -KRAMFORS, SWEDEN:63.0483:17.7686 -LYCKSELE, SWEDEN:64.5481:18.7161 -OPTAND, SWEDEN:63.1286:14.8028 -SUNDSVALL, SWEDEN:62.5281:17.4439 -ORNSKOLDSVIK, SWEDEN:63.4083:18.99 -PITEA, SWEDEN:65.3994:21.2653 -KIRUNA, SWEDEN:67.8219:20.3367 -ORSA, SWEDEN:61.19:14.7125 -SKELLEFTEA, SWEDEN:64.6247:21.0767 -SATTNA, SWEDEN:62.4811:17.0028 -UMEA, SWEDEN:63.7917:20.2825 -VILHELMINA, SWEDEN:64.5789:16.8333 -ARVIDSJAUR, SWEDEN:65.59:19.2817 -OREBRO, SWEDEN:59.2236:15.0378 -HAGFORS, SWEDEN:60.02:13.5789 -VASTERAS, SWEDEN:59.5894:16.6336 -LULEA, SWEDEN:65.5436:22.1219 -OSTERSUND, SWEDEN:63.1939:14.5019 -VIDSEL, SWEDEN:65.8753:20.1497 -HEDEN, SWEDEN:65.8361:21.4714 -ARBOGA, SWEDEN:59.3864:15.9239 -STOCKHOLM, SWEDEN:59.6519:17.9186 -STOCKHOLM, SWEDEN:59.3542:17.9414 -BORLANGE, SWEDEN:60.4219:15.515 -HULTSFRED, SWEDEN:57.5256:15.8239 -GAVLE, SWEDEN:60.5933:16.9514 -LINKOEPING, SWEDEN:58.4061:15.6803 -NORRKOEPING, SWEDEN:58.5861:16.2506 -TORSBY, SWEDEN:60.1575:12.9911 -ESKILSTUNA, SWEDEN:59.3508:16.7083 -VISBY, SWEDEN:57.6628:18.3461 -AMSELE, SWEDEN:64.5706:19.3142 -MOHED, SWEDEN:64.9608:17.6964 -IDRE, SWEDEN:61.8686:12.6906 -FALLFORS, SWEDEN:65.1064:20.7606 -KALIXFORS, SWEDEN:67.7647:20.2572 -HEMAVAN, SWEDEN:65.8061:15.0828 -SPANGDAHLEM, GERMANY:49.9725:6.6925 -RAMSTEIN, GERMANY:49.4375:7.60139 -BAMBERG, GERMANY:49.9203:10.9142 -BAUMHOLDER, GERMANY:49.65:7.3 -GIEBELSTADT, GERMANY:49.6481:9.96639 -BRUECKEBURG, GERMANY:52.2783:9.08194 -CELLE, GERMANY:52.5911:10.0219 -RHEINE-BRENTLANGE, GERMANY:52.2911:7.38694 -FRITZLAR, GERMANY:51.1144:9.28583 -ITZEHOE, GERMANY:53.9944:9.57833 -LAUPHEIM, GERMANY:48.2203:9.91 -MENDIG, GERMANY:50.3658:7.315 -NIEDERSTETTEN, GERMANY:49.3917:9.95806 -ROTH, GERMANY:49.2175:11.1006 -FASSBERG, GERMANY:52.9192:10.1836 -COTTBUS, GERMANY:51.7678:14.2919 -GRAFENWOEHR, GERMANY:49.6994:11.9411 -HANAU, GERMANY:50.1692:8.96139 -HEIDELBERG, GERMANY:49.3933:8.65194 -HOHENFELS, GERMANY:49.2181:11.8361 -KITZINGEN, GERMANY:49.7431:10.2006 -EGGEBECK, GERMANY:54.6247:9.34139 -NORDHOLZ, GERMANY:53.7675:8.65833 -DIEPHOLZ, GERMANY:52.5853:8.34056 -GEILENKIRCHEN, GERMANY:50.9608:6.0425 -HOHN, GERMANY:54.3119:9.53806 -JEVER, GERMANY:53.5333:7.88861 -LAAGE, GERMANY:53.9181:12.2792 -NOERVENICH, GERMANY:50.8311:6.65806 -HOPSTEN, GERMANY:52.3386:7.54111 -PRESCHEN, GERMANY:51.6636:14.6336 -SCHLESWIG, GERMANY:54.4592:9.51611 -WITTMUNDHAFEN, GERMANY:53.5478:7.66722 -NEUBRANDENBURG, GERMANY:53.6019:13.3058 -WUNSTORF, GERMANY:52.4572:9.42694 -VILSECK, GERMANY:49.6336:11.7672 -COLEMAN, GERMANY:49.5633:8.46333 -WIESBADEN, GERMANY:50.0497:8.32528 -LANDSBERG, GERMANY:48.0706:10.9058 -BUECHEL, GERMANY:50.1736:7.06333 -ERDING, GERMANY:48.3222:11.9486 -FUERSTENFELDBRUCK, GERMANY:48.2056:11.2669 -HOLZDORF, GERMANY:51.7678:13.1675 -INGOLSTADT, GERMANY:48.7156:11.5339 -LECHFELD, GERMANY:48.1861:10.8622 -MEMMINGEN, GERMANY:47.9886:10.2394 -NEUBURG, GERMANY:48.7108:11.2111 -LAARBRUCH, GERMANY:51.6017:6.1425 -GUETERSLOH, GERMANY:51.9228:8.30611 -BRUEGGEN, GERMANY:51.1997:6.13194 -ALEXANDER BAY, SOUTH AFRICA:-28.575:16.5333 -AGGENEYS, SOUTH AFRICA:-29.2817:18.8136 -ARNOT POWER STATION, SOUTH AFRICA:-25.9436:29.81 -BRAKPAN, SOUTH AFRICA:-26.2386:28.3017 -BISHO, SOUTH AFRICA:-32.8969:27.2789 -BLOEMFONTEIN, SOUTH AFRICA:-29.0925:26.3022 -BETHLEHEM, SOUTH AFRICA:-28.2483:28.3361 -BOTHAVILLE, SOUTH AFRICA:-27.3667:26.6292 -CARLETONVILLE, SOUTH AFRICA:-26.3694:27.35 -CAPE TOWN, SOUTH AFRICA:-33.9647:18.6017 -CALVINIA, SOUTH AFRICA:-31.5003:19.7258 -DE AAR, SOUTH AFRICA:-30.6367:23.92 -DWAALBOOM, SOUTH AFRICA:-24.805:26.8317 -DUNDEE, SOUTH AFRICA:-28.1825:30.2244 -DURBAN, SOUTH AFRICA:-29.97:30.9503 -EAST LONDON, SOUTH AFRICA:-33.0356:27.8258 -ERMELO, SOUTH AFRICA:-26.4953:29.98 -ELLISRAS, SOUTH AFRICA:-23.7261:27.6875 -FICKSBURG, SOUTH AFRICA:-28.8231:27.9089 -JOHANNESBURG, SOUTH AFRICA:-25.9861:28.14 -GEORGE, SOUTH AFRICA:-34.0053:22.3789 -GIYANI, SOUTH AFRICA:-23.2836:30.6497 -JOHANNESBURG, SOUTH AFRICA:-26.2425:28.1511 -GRAHAMSTOWN, SOUTH AFRICA:-33.2847:26.4981 -GREYTOWN, SOUTH AFRICA:-29.1219:30.5867 -HARMONY, SOUTH AFRICA:-28.0786:26.8611 -PULLENSHOPE, SOUTH AFRICA:-25.9794:29.6186 -HEIDELBERG, SOUTH AFRICA:-26.5061:28.3939 -HEIBRON, SOUTH AFRICA:-27.2783:27.9958 -HARRISMITH, SOUTH AFRICA:-28.235:29.1061 -HOEDSPRUIT, SOUTH AFRICA:-24.3686:31.0486 -HENDRIK VERWOERDDAM, SOUTH AFRICA:-30.5619:25.5281 -JOHANNESBURG, SOUTH AFRICA:-26.1392:28.2458 -KLERKSDORP, SOUTH AFRICA:-26.8708:26.7178 -KOMATI POWER STATION, SOUTH AFRICA:-26.0933:29.4547 -KRIEL, SOUTH AFRICA:-26.2517:29.1944 -KIMBERLEY, SOUTH AFRICA:-28.8028:24.765 -KOMATIPOORT, SOUTH AFRICA:-25.4406:31.9297 -KRUGERSDORP, SOUTH AFRICA:-26.0808:27.7256 -KROONSTAD, SOUTH AFRICA:-27.6606:27.3156 -KURUMAN, SOUTH AFRICA:-27.4567:23.4114 -KLEINSEE, SOUTH AFRICA:-29.6883:17.0939 -JOHANNESBURG, SOUTH AFRICA:-25.9383:27.9261 -LADYBRAND, SOUTH AFRICA:-29.1811:27.4531 -LICHTENBURG, SOUTH AFRICA:-26.1756:26.1844 -LOUIS TRICHARDT, SOUTH AFRICA:-23.1597:29.6964 -LANGEBAANWEG, SOUTH AFRICA:-32.9689:18.1603 -LADYSMITH, SOUTH AFRICA:-28.5817:29.7497 -MIDDELBURG, SOUTH AFRICA:-25.6847:29.44 -MARGATE, SOUTH AFRICA:-30.8572:30.3428 -MARBLE HALL, SOUTH AFRICA:-24.9889:29.2831 -MAJUBA POWER STATION, SOUTH AFRICA:-27.0792:29.7783 -MAFIKENG, SOUTH AFRICA:-25.7528:25.6119 -MMABATHO, SOUTH AFRICA:-25.7983:25.5478 -MALALANE, SOUTH AFRICA:-25.4733:31.5656 -MESSINA, SOUTH AFRICA:-22.3558:29.9864 -MKUZE, SOUTH AFRICA:-27.6258:32.0442 -NEWCASTLE, SOUTH AFRICA:-27.7706:29.9767 -NELSPRUIT, SOUTH AFRICA:-25.5006:30.9133 -NYLSTROOM, SOUTH AFRICA:-24.6858:28.4347 -OVERBERG, SOUTH AFRICA:-34.5553:20.2503 -OUDTSHOORN, SOUTH AFRICA:-33.6069:22.1889 -PIETERSBURG, SOUTH AFRICA:-23.8453:29.4586 -PORT ELIZABETH, SOUTH AFRICA:-33.9847:25.6172 -PLETTENBERG BAY, SOUTH AFRICA:-34.0903:23.3278 -PHALABORWA, SOUTH AFRICA:-23.9369:31.1553 -PIETERSBURG, SOUTH AFRICA:-23.9258:29.4842 -PORT SAINT JOHNS, SOUTH AFRICA:-31.6058:29.5197 -PIETERMARITZBURG, SOUTH AFRICA:-29.6489:30.3986 -PILANESBERG, SOUTH AFRICA:-25.3336:27.1733 -POTGIETERSRUS, SOUTH AFRICA:-24.2303:28.9836 -POMFRET, SOUTH AFRICA:-25.8469:23.5378 -POTCHEFSTROOM, SOUTH AFRICA:-26.6708:27.0817 -PARYS, SOUTH AFRICA:-26.8892:27.5033 -QUEENSTOWN, SOUTH AFRICA:-31.92:26.8819 -RICHARD'S BAY, SOUTH AFRICA:-28.7408:32.0919 -RUSTENBURG, SOUTH AFRICA:-25.6442:27.2711 -ROBERTSON, SOUTH AFRICA:-33.8119:19.9028 -SPRINGBOK, SOUTH AFRICA:-29.6892:17.9394 -SECUNDA, SOUTH AFRICA:-26.5239:29.17 -SALDANHA, SOUTH AFRICA:-32.9639:17.9692 -SPRINGS, SOUTH AFRICA:-26.2483:28.3975 -SWARTKOP, SOUTH AFRICA:-25.8094:28.1644 -SISHEN, SOUTH AFRICA:-27.6483:22.9992 -SACE, SOUTH AFRICA:-25.9614:29.2086 -SKUKUZA, SOUTH AFRICA:-24.9608:31.5886 -TOMMY'S FIELD, SOUTH AFRICA:-28.26:22.9931 -THOHOYANDOU, SOUTH AFRICA:-23.0786:30.3833 -THABA NCHU, BOPHUTHATSWANA:-29.3192:26.8233 -BLOEMFONTEIN, SOUTH AFRICA:-29.0328:26.1575 -TUTUKA, SOUTH AFRICA:-26.7764:29.3386 -TZANEEN, SOUTH AFRICA:-23.8242:30.3292 -ULUNDI, SOUTH AFRICA:-28.3206:31.4164 -UPINGTON, SOUTH AFRICA:-28.4008:21.2606 -UMTATA, SOUTH AFRICA:-31.5478:28.6742 -VRYBURG, SOUTH AFRICA:-26.9822:24.7286 -DURBAN, SOUTH AFRICA:-29.7706:31.0583 -VANDERBIJLPARK, SOUTH AFRICA:-26.6922:27.7778 -VREDENDAL, SOUTH AFRICA:-31.6408:18.5447 -VEREENIGING, SOUTH AFRICA:-26.5661:27.9606 -VRYHEID, SOUTH AFRICA:-27.7867:30.7953 -PRETORIA, SOUTH AFRICA:-25.6536:28.2242 -WITBANK, SOUTH AFRICA:-25.8322:29.1919 -WATERKLOOF, SOUTH AFRICA:-25.83:28.2225 -WELKOM, SOUTH AFRICA:-27.9978:26.6694 -WESSELSBRUNN, SOUTH AFRICA:-27.8472:26.3497 -YSTERPLAAT, SOUTH AFRICA:-33.9:18.4981 -ZEERUST, SOUTH AFRICA:-25.5989:26.0422 -FRANCISTOWN, BOTSWANA:-21.1594:27.4744 -JWANENG, BOTSWANA:-24.6022:24.6908 -KASANE, BOTSWANA:-17.8328:25.1622 -MAUN, BOTSWANA:-19.9725:23.4308 -ORAPA, BOTSWANA:-21.2664:25.3203 -GABERONE, BOTSWANA:-24.555:25.9181 -SELEBI-PHIKWE, BOTSWANA:-22.0583:27.8286 -BRAZZAVILLE, CONGO:-4.25167:15.2528 -IMPFONDO, CONGO:1.58944:18.0469 -MAKOUA, CONGO:-0.0213889:15.5753 -OWANDO, CONGO:-0.531111:15.95 -OUESSO, CONGO:1.61583:16.0378 -MAKABANA, CONGO:-3.48333:12.6167 -LOUDIMA, CONGO:-4.20778:12.6608 -POINTE-NOIRE, CONGO:-4.81333:11.8858 -MANZINI, SWAZILAND:-26.5289:31.3075 -BANGUI, CENTRAL AFRICAN REP.:4.39833:18.5186 -BANGASSOU, CENTRAL AFRICAN REP.:4.78444:22.7814 -BIRAO, CENTRAL AFRICAN REP.:10.2361:22.7172 -BAMBARI, CENTRAL AFRICAN REP.:5.84694:20.6494 -N'DELE, CENTRAL AFRICAN REP.:8.42667:20.635 -BOUAR, CENTRAL AFRICAN REP.:5.95806:15.6375 -BRIA, CENTRAL AFRICAN REP.:6.52806:21.9889 -BERBERATI, CENTRAL AFRICAN REP.:4.22139:15.7861 -YALINGA, CENTRAL AFRICAN REP.:45.1542:W89.1108 -BATA, EQUATORIAL GUINEA:1.90528:9.80556 -MALABO, EQUATORIAL GUINEA:3.75528:8.70861 -WIDE AWAKE, ACORES:-7.96944:W14.3936 -PLAISANCE, MAURITIUS:-20.43:57.6833 -RODRIGUEZ ISLAND, MAURITIUS:-19.7578:63.3619 -DIEGO GARCIA ISLAND, DIEGO GARCIA ISLAND:-7.31306:72.4108 -TIKO, CAMEROON:4.08917:9.36028 -DOUALA, CAMEROON:4.00583:9.71944 -BATOURI, CAMEROON:4.47306:14.3636 -MAROUA, CAMEROON:10.4514:14.2572 -FOUMBAN, CAMEROON:5.63667:10.7506 -N'GAOUNDERE, CAMEROON:7.35694:13.5592 -GAROUA, CAMEROON:9.33583:13.37 -BAFOUSSAM, CAMEROON:5.53694:10.3542 -BAMENDA, CAMEROON:6.03917:10.1225 -YAOUNDE, CAMEROON:3.83528:11.5236 -KASOMPE, ZAMBIA:-12.5728:27.8939 -KALABO, ZAMBIA:-14.9975:22.6475 -LIVINGSTONE, ZAMBIA:-17.8217:25.8225 -LUSAKA, ZAMBIA:-15.3306:28.4525 -MANSA, ZAMBIA:-11.1381:28.875 -MFUWE, ZAMBIA:-13.2586:31.9364 -MONGU, ZAMBIA:-15.2544:23.1622 -MUFULIRA, ZAMBIA:-12.5647:28.2986 -NDOLA, ZAMBIA:-12.9981:28.6647 -SOUTHDOWNS, ZAMBIA:-12.9003:28.1497 -ZAMBEZI, ZAMBIA:-13.5386:23.1097 -MORONI, COMOROS ISLANDS:-11.5336:43.2717 -MOHELI, COMOROS ISLANDS:-12.2981:43.7664 -MORONI, COMOROS ISLANDS:-11.7106:43.2436 -ANJOUAN, COMOROS ISLANDS:-12.1317:44.4303 -DZAOUDZI, MAYOTTE ISLAND:-12.8047:45.2811 -ST.-DENIS, REUNION ISLAND:-20.8869:55.5103 -ST.-PIERRE, REUNION ISLAND:-21.3208:55.4247 -ANTANANARIVO, MADAGASCAR:-18.7967:47.4786 -MIANDRIVAZO, MADAGASCAR:-19.5628:45.4508 -SAINTE MARIE, MADAGASCAR:-17.0939:49.8158 -TOAMASINA, MADAGASCAR:-18.1094:49.3925 -MORONDAVA, MADAGASCAR:-20.2847:44.3175 -ANTSIRANANA, MADAGASCAR:-12.3492:49.2917 -MANANARA, MADAGASCAR:-16.1639:49.7736 -ANDAPA, MADAGASCAR:-14.6517:49.6206 -AMBILOBE, MADAGASCAR:-13.1883:48.9878 -ANTALAHA, MADAGASCAR:-14.9992:50.32 -ANALALAVA, MADAGASCAR:-14.6294:47.7636 -MAHAJANGA, MADAGASCAR:-15.6672:46.3517 -NOSY-BE, MADAGASCAR:-13.3122:48.3139 -BESALAMPY, MADAGASCAR:-16.7419:44.4814 -MAROANTSETRA, MADAGASCAR:-15.4367:49.6883 -SAMBAVA, MADAGASCAR:-14.2786:50.1747 -VOHEMAR, MADAGASCAR:-13.3758:50.0028 -ANTSOHIHY, MADAGASCAR:-14.8986:47.9939 -AMPAMPAMENA, MADAGASCAR:-13.4847:48.6325 -TOLAGNARO, MADAGASCAR:-25.0381:46.9561 -FIANARANTSOA, MADAGASCAR:-21.4414:47.1117 -FARAFANGANA, MADAGASCAR:-22.8053:47.8206 -MANAKARA, MADAGASCAR:-22.1197:48.0217 -MANANJARY, MADAGASCAR:-21.2017:48.3581 -MOROMBE, MADAGASCAR:-21.7536:43.3753 -TOLIARA, MADAGASCAR:-23.3833:43.7283 -M'BANZA-CONGO, ANGOLA:-6.26972:14.2469 -BENGUELA, ANGOLA:-12.6089:13.4036 -CABINDA, ANGOLA:-5.59694:12.1883 -CHITATO, ANGOLA:-7.3575:20.8036 -CAMAXILO, ANGOLA:-8.37361:18.9236 -CAZOMBO, ANGOLA:-11.8936:22.9161 -N'GIVA, ANGOLA:-17.0447:15.6869 -HUAMBO, ANGOLA:-12.8086:15.7603 -KUITO, ANGOLA:-12.4044:16.9472 -LOBITO, ANGOLA:-12.3711:13.5364 -LUANDA, ANGOLA:-8.85833:13.2311 -MALANJE, ANGOLA:-9.525:16.3122 -MENONGUE, ANGOLA:-14.6575:17.7197 -MOCAMEDES, ANGOLA:-15.2611:12.1467 -NEGAGE, ANGOLA:-7.75444:15.2875 -PORTO AMBOIM, ANGOLA:-10.7219:13.7653 -SAURIMO, ANGOLA:-9.68889:20.4317 -SOYO, ANGOLA:-6.14083:12.3717 -TOTO, ANGOLA:-7.14722:14.2481 -LUENA, ANGOLA:-11.7681:19.8975 -UIGE, ANGOLA:-7.60306:15.0278 -XANGONGO, ANGOLA:-16.7553:14.9653 -OYEM, GABON:1.54111:11.5808 -OKONDJA, GABON:-0.665278:13.6731 -LAMBARENE, GABON:-0.704167:10.2456 -BITAM, GABON:2.07556:11.4931 -MOANDA, GABON:-1.5375:13.2692 -PORT GENTIL, GABON:-0.711667:8.75417 -OMBOUE HOSPIAL, GABON:-1.57472:9.26278 -MAKOKOU, GABON:0.579167:12.8908 -LIBREVILLE, GABON:0.458333:9.41222 -MITZIC, GABON:0.775556:11.5525 -FRANCEVILLE, GABON:-1.65611:13.4378 -LASTOURVILLE, GABON:-0.826389:12.7467 -TCHIBANGA, GABON:-2.88889:10.9194 -PRINCIPE, SAO TOME & PRINCIPE:1.66278:7.41167 -SAO TOME, SAO TOME & PRINCIPE:0.378056:6.71194 -BEIRA, MOZAMBIQUE:-19.7964:34.9075 -CUAMBA, MOZAMBIQUE:-14.82:36.5319 -CHIMOIO, MOZAMBIQUE:-19.1511:33.4289 -ESTIMA, MOZAMBIQUE:-15.7342:32.7567 -INHAMBANE, MOZAMBIQUE:-23.8764:35.4083 -LICHINGA, MOZAMBIQUE:-13.2739:35.2661 -LUMBO, MOZAMBIQUE:-15.0331:40.6717 -MAPUTO, MOZAMBIQUE:-25.9208:32.5725 -MUEDA, MOZAMBIQUE:-11.6728:39.5631 -MOCIMBOA DA PRAIA, MOZAMBIQUE:-11.3617:40.3547 -MARRUPA, MOZAMBIQUE:-13.225:37.5519 -NACALA, MOZAMBIQUE:-14.4881:40.7122 -NAMPULA, MOZAMBIQUE:-15.1056:39.2817 -PEMBA, MOZAMBIQUE:-12.9867:40.5222 -QUELIMANE, MOZAMBIQUE:-17.8556:36.8692 -SONGO, MOZAMBIQUE:-15.6025:32.7731 -TETE, MOZAMBIQUE:-16.1047:33.64 -ULONGWE, MOZAMBIQUE:-14.7044:34.3522 -VILANKULU, MOZAMBIQUE:-22.0183:35.3131 -ALPHONSE, SEYCHELLES:-7.00472:52.7261 -DESROCHES, SEYCHELLES:-5.69583:53.6544 -FARQUHAR, SEYCHELLES:-10.1094:51.1761 -MAHE, SEYCHELLES:-4.67417:55.5217 -PRASLIN, SEYCHELLES:-4.31917:55.6914 -COETIVY, SEYCHELLES:-7.16417:56.2639 -SARH, CHAD:9.15111:18.3794 -ABECHE, CHAD:13.8469:20.8442 -MOUNDOU, CHAD:8.62028:16.0683 -N'DJAMENA, CHAD:12.1336:15.0339 -PALA, CHAD:9.37917:14.9258 -FAYA-LARGEAU, CHAD:17.9169:19.1108 -BULAWAYO, ZIMBABWE:-20.0172:28.6178 -HARARE, ZIMBABWE:-17.7514:30.9244 -CHIREDZI, ZIMBABWE:-21.0081:31.5783 -VICTORIA FALLS, ZIMBABWE:-18.0961:25.8392 -MUTARE, ZIMBABWE:-18.9775:32.4506 -HARARE, ZIMBABWE:-17.9317:31.0928 -KARIBA, ZIMBABWE:-16.5197:28.8847 -MUTOKO, ZIMBABWE:-17.4317:32.1844 -MUTARE, ZIMBABWE:-18.9975:32.6272 -MASVINGO, ZIMBABWE:-20.0553:30.8589 -ZVISHAVANE, ZIMBABWE:-20.2894:30.0883 -GWERT, ZIMBABWE:-19.4367:29.8617 -HWANGE NATIONAL PARK, ZIMBABWE:-18.6297:27.0208 -ZISCO, ZIMBABWE:-19.0286:29.7219 -BLANTYRE, MALAWI:-15.6789:34.9739 -KARONGA, MALAWI:-9.95333:33.8928 -KASUNGU, MALAWI:-13.0144:33.4683 -MANGOCHI, MALAWI:30.8378:W85.1817 -MZUZU, MALAWI:-11.4447:34.0117 -MASERU, LESOTHO:-29.4622:27.5525 -MASERU, LESOTHO:-29.3039:27.5033 -KINSHASA, ZAIRE:-4.38556:15.4444 -KINSHASA, ZAIRE:-4.32472:15.3283 -MUANDA, ZAIRE:-5.93083:12.3517 -KITONA BASE, ZAIRE:-5.91806:12.4475 -MATADI, ZAIRE:-5.79944:13.4408 -BANDOUNDU, ZAIRE:-3.31111:17.3817 -KIKWIT, ZAIRE:-5.03556:18.7856 -MBANDAKA, ZAIRE:0.0225:18.2886 -GBADOLITE, ZAIRE:4.25306:20.9753 -GEMENA, ZAIRE:3.23528:19.7711 -KOTAKOLI, ZAIRE:4.1575:21.6508 -LISALA, ZAIRE:2.17056:21.4967 -KISANGANI, ZAIRE:0.5175:25.155 -ISIRO, ZAIRE:2.8275:27.5881 -BUNIA, ZAIRE:1.56556:30.2208 -BUTA ZEGA, ZAIRE:2.81778:24.7939 -BUKAVU/KAVUMU, ZAIRE:-2.30889:28.8086 -GOMA, ZAIRE:-1.67056:29.2383 -KINDU, ZAIRE:-2.91917:25.9153 -LUBUMASHI, ZAIRE:-11.5911:27.5308 -KOLWEZI, ZAIRE:-10.7658:25.5056 -KALEMIE, ZAIRE:-5.87556:29.25 -KAMINA BASE, ZAIRE:-8.64194:25.2528 -LUENA, ZAIRE:-9.46944:25.7589 -KANANGA, ZAIRE:-5.9:22.4692 -MBUJI-MAYI, ZAIRE:-6.12111:23.5689 -BAMAKO, MALI:12.5333:W7.94972 -GAO, MALI:16.2483:W0.00527778 -KAYES, MALI:14.4311:W11.4394 -MOPTI, MALI:14.5128:W4.07944 -NIORO, MALI:15.2386:W9.57639 -TOMBOUCTOU, MALI:16.7303:W3.0075 -TESSALIT, MALI:20.2461:0.980833 -BANJUL, GAMBIA:13.3378:W16.6519 -FUERTEVENTURA, CANARY ISLANDS:28.4525:W13.8636 -HIERRO, CANARY ISLANDS:27.8147:W17.8869 -SANTA CRUZ DE LA PALMA, SPAIN:28.6264:W17.7556 -GRAN CANARIA, CANARY ISLANDS:27.9317:W15.3864 -LANZEROTE, CANARY ISLANDS:28.9453:W13.605 -TENERIFE, CANARY ISLANDS:28.0444:W16.5722 -TENERIFE, CANARY ISLANDS:28.4825:W16.3414 -MELILLA, SPANISH NORTH AFRICA:35.2797:W2.95611 -HASTINGS, SIERRA LEONE:8.39444:W13.1283 -FREETOWN, SIERRA LEONE:8.61639:W13.1953 -CUFAR, GUINEA BISSAU:11.2881:W15.1806 -BISSAU, GUINEA BISSAU:11.8947:W15.6536 -MONROVIA, LIBERIA:6.28889:W10.7586 -MONROVIA, LIBERIA:6.23361:W10.3622 -AGADIR, MOROCCO:30.3811:W9.54611 -TAN TAN, MOROCCO:28.4481:W11.1611 -FEZ, MOROCCO:33.9272:W4.97778 -IFRANE, MOROCCO:33.5053:W5.15278 -ER-RACHIDIA, MOROCCO:31.9489:W4.40056 -MEKNES, MOROCCO:33.8789:W5.515 -NADOR, MOROCCO:35.1533:W2.92 -OUJDA, MOROCCO:34.7869:W1.92389 -CASABLANCA, MOROCCO:33.5533:W7.66139 -RABAT, MOROCCO:34.0514:W6.75139 -SIDI IFINI, MOROCCO:29.3689:W10.18 -ESSADOUIRA, MOROCCO:31.4039:W9.68472 -CASABLANCA, MOROCCO:33.3678:W7.58778 -MARRAKECH, MOROCCO:31.6067:W8.03611 -KENTIRA, MOROCCO:34.2989:W6.59583 -OUARZAZATE, MOROCCO:30.9389:W6.90917 -AL HOCIEMA, MOROCCO:35.1769:W3.83944 -TETOUAN, MOROCCO:35.5942:W5.32 -TANGER, MOROCCO:35.7267:W5.91667 -ZIGUINCHOR, SENEGAL:12.5556:W16.2817 -KOLDA, SENEGAL:12.88:W14.9553 -CAP SKIRING, SENEGAL:12.41:W16.7461 -KAOLACK, SENEGAL:14.1467:W16.0511 -DAKAR, SENEGAL:14.7394:W17.49 -ST. LOUIS, SENEGAL:16.0497:W16.4611 -BAKEL, SENEGAL:14.8472:W12.4681 -KEDOUGOU, SENEGAL:12.5722:W12.2203 -TAMBACOUNDA, SENEGAL:13.7367:W13.6531 -AIOUN EL ATROUSS, MAURITANIA:16.7111:W9.63778 -TIDJIKJA, MAURITANIA:18.5703:W11.4231 -KIFFA, MAURITANIA:16.5897:W11.4061 -NEMA, MAURITANIA:16.6219:W7.31444 -KAEDI, MAURITANIA:16.1594:W13.5075 -NOUAKSCHOTT, MAURITANIA:18.0978:W15.9478 -SELIBABI, MAURITANIA:15.1794:W12.2072 -ATAR, MAURITANIA:20.5067:W13.0431 -NOUADHIBOU, MAURITANIA:20.9283:W17.0311 -BIR MOGHREIN, MAURITANIA:25.2367:W11.5886 -FIRA, GUINEA:10.3506:W13.5692 -FARANAH, GUINEA:10.0356:W10.7697 -LABE, GUINEA:11.3261:W12.2869 -MACENTA, GUINEA:8.48111:W9.52583 -N'ZEREKORE, GUINEA:7.80583:W8.70167 -AMILCAR CABRAL, CAPE VERDE ISLANDS:16.7414:W22.9494 -BOA VISTA, CAPE VERDE ISLANDS:16.1367:W22.8889 -FRANCISCO MENDEZ, CAPE VERDE ISLANDS:14.9244:W23.4933 -MAIO, CAPE VERDE ISLANDS:15.1558:W23.2136 -SAO NOCOLAU ISLAND, CAPE VERDE ISLANDS:16.5883:W24.2844 -SAO VICENTE ISLAND, CAPE VERDE ISLANDS:16.8339:W25.0567 -ADDIS ABABA, ETHIOPIA:8.97694:38.8 -ADDIS ABABA, ETHIOPIA:9.00361:38.7256 -BAHAR DAR, ETHIOPIA:11.6081:37.3214 -DIRE DAWA, ETHIOPIA:9.625:41.8542 -GAMBELLA, ETHIOPIA:8.12833:34.5633 -GONDAR, ETHIOPIA:12.5183:37.4322 -DEBRE ZEIT, ETHIOPIA:8.71556:39.0081 -JIMMA, ETHIOPIA:7.66583:36.8164 -LALIBELLA, ETHIOPIA:11.9747:38.9797 -MAKALE, ETHIOPIA:13.4672:39.5333 -BUJUMBURA, BURUNDI:-3.32389:29.3183 -BAIDOA, SOMALIA:3.09861:43.6242 -HARGEISA, SOMALIA:9.51806:44.0886 -BERBERA, SOMALIA:10.3892:44.9408 -KISMAYU, SOMALIA:-0.377222:42.4592 -MOGADISHU, SOMALIA:2.01361:45.3047 -EL ARISH, EGYPT:31.0733:33.8358 -ASYUT, EGYPT:27.0464:31.0119 -ALEXANDRIA, EGYPT:31.1839:29.9489 -ABU SIMBEL, EGYPT:22.3758:31.6117 -CAIRO, EGYPT:30.06:31.248E:3085 -HURGHADA, EGYPT:27.1839:33.7983 -EL-GORA, EGYPT:31.0689:34.1292 -LUXOR, EGYPT:25.6708:32.7064 -MERSA-MATRUH, EGYPT:31.3253:27.2217 -PORT SAID, EGYPT:31.2794:32.24 -ST. CATHERINE, EGYPT:28.6853:34.0625 -ASWAN, EGYPT:23.9642:32.8197 -EL-TOR, EGYPT:28.2089:33.6453 -ELDORET, KENYA:0.404167:35.2381 -GARISSA, KENYA:-0.463333:39.6481 -ISIOLO, KENYA:0.339167:37.5908 -KAKAMEGA, KENYA:0.271111:34.7872 -KISUMU, KENYA:-0.0861111:34.7289 -KITALE, KENYA:0.971944:34.9583 -LOKICHOGGIO, KENYA:4.20417:34.3481 -LODWAR, KENYA:3.12194:35.6086 -LAMU, KENYA:-2.25222:40.9131 -LOYANGALANI, KENYA:2.76306:36.7183 -MANDERA, KENYA:3.93361:41.8442 -MARSABIT, KENYA:2.345:37.9992 -MERU, KENYA:0.230278:38.1703 -MALINDI, KENYA:-3.22917:40.1017 -MOMBASA, KENYA:-4.03472:39.5942 -MOYALE LOWER, KENYA:3.46972:39.1014 -NYERI, KENYA:-0.368889:36.98 -NAIVASHA, KENYA:-0.787778:36.4333 -NAIROBI, KENYA:-1.32167:36.8147 -NANYUKI, KENYA:-0.0608333:37.0386 -NAIROBI, KENYA:-1.27722:36.8622 -WAJIR, KENYA:1.73306:40.0914 -BUATTIFEL, LIBYA:28.7953:22.0808 -GIALLO, LIBYA:28.6383:21.4378 -GHAT, LIBYA:25.1456:10.1425 -KUFRA, LIBYA:24.1786:23.3139 -BENGHAZI, LIBYA:32.0967:20.2694 -EL BEIDA, LIBYA:32.7886:21.9642 -SEBHA, LIBYA:26.9869:14.4725 -TRIPOLI, LIBYA:32.6633:13.1589 -MARSA BREGA, LIBYA:30.3781:19.5764 -RAS LANOUF V 40, LIBYA:30.5:18.5269 -HON, LIBYA:29.11:15.9656 -DAHRA, LIBYA:29.4697:17.9311 -GHADAMES, LIBYA:30.1517:9.71528 -ZELLA 74, LIBYA:28.59:17.2942 -GISENYI, RWANDA:-1.67694:29.2586 -KIGALI, RWANDA:-1.96861:30.1394 -KAMEMBE, RWANDA:-2.46222:28.9078 -DONGOLA, SUDAN:19.1536:30.43 -DAMAZIN, SUDAN:11.7858:34.3364 -EL FASHER, SUDAN:13.615:25.3247 -KASSALA, SUDAN:15.3858:36.3281 -NYALA, SUDAN:12.0536:24.9553 -EL OBEID, SUDAN:13.1531:30.2325 -JUBA, SUDAN:4.87194:31.6011 -MALAKAL, SUDAN:9.55861:31.6525 -PORT SUDAN, SUDAN:19.5764:37.2158 -KHARTOUM, SUDAN:15.5894:32.5531 -WAU, SUDAN:7.72556:27.9794 -ARUSHA, TANZANIA:-3.36778:36.6333 -DAR ES SALAAM, TANZANIA:-6.87806:39.2025 -DODOMA, TANZANIA:-6.17028:35.7525 -IRINGA, TANZANIA:-7.66861:35.7519 -KILIMANJARO, TANZANIA:-3.42917:37.0744 -LAKE MANYARA, TANZANIA:-3.37611:35.8181 -MWADUI, TANZANIA:-3.51417:33.6189 -MOSHI, TANZANIA:-3.36278:37.3233 -MTWARA, TANZANIA:-10.3389:40.1817 -MWANZA, TANZANIA:-2.44444:32.9325 -NGERENGERE, TANZANIA:-6.71722:38.1536 -PEMBA, TANZANIA:-5.25722:39.8114 -TANGA, TANZANIA:-5.09222:39.0711 -ZANZIBAR, TANZANIA:-6.22194:39.2247 -ENTEBBE, UGANDA:0.0422222:32.4433 -GULU, UGANDA:2.80556:32.2717 -SOROTI, UGANDA:1.7275:33.6228 -ABILENE, USA:32.4111:W99.6817 -NANTUCKET, USA:41.2528:W70.06 -WACO, USA:31.6111:W97.2303:231 -ATLANTIC CITY, USA:39.4575:W74.5769 -ARDMORE, USA:34.3031:W97.0194 -CAMP SPRINGS, USA:38.8106:W76.8669 -ALEXANDRIA, USA:31.3272:W92.5483 -BUSH FIELD, USA:33.3697:W81.9644 -AKRON, USA:41.0375:W81.4667 -ALBANY, USA:42.7481:W73.8028 -ALICE, USA:27.7408:W98.0269 -AMARILLO, USA:35.2192:W101.706 -ANNISTON, USA:33.5881:W85.8581 -ANDERSEN, USA:34.495:W82.7092 -ALTOONA, USA:40.2964:W78.32 -ABERDEEN, USA:39.4661:W76.1694 -LOUISIANA, USA:30.0375:W91.8839 -WATERTOWN, USA:43.9917:W76.0217 -ATLANTA, USA:33.6403:W84.4269 -AUGUSTA, USA:44.3206:W69.7972:783 -AUSTIN, USA:30.1944:W97.6697:772 -MARYSVILLE, USA:39.1358:W121.436 -SHREVEPORT, USA:32.5017:W93.6625 -BOCA RATON, USA:26.3783:W80.1075 -BAUDETTE, USA:48.7283:W94.6122 -WINDSOR LOCKS, USA:41.9389:W72.6831 -STRATFORD, USA:41.1633:W73.1261 -BEDFORD, USA:42.4697:W71.2889 -BAKERSFIELD, USA:35.4333:W119.057 -MOBILE, USA:30.6264:W88.0678 -BANGOR, USA:44.8072:W68.8281 -BIRMINGHAM, USA:33.5628:W86.7533 -EL PASO, USA:31.8494:W106.38:661 -BILOXI, USA:30.4108:W88.9236 -BUCKLEY, USA:39.7017:W104.751 -BELLINGHAM, USA:48.7925:W122.537 -BELLEVILLE, USA:38.545:W89.835 -NASHVILLE, USA:36.1244:W86.6781:1231 -BOISE, USA:43.5642:W116.223:206 -BOSTON, USA:42.3642:W71.005:232 -BEAUMONT, USA:29.9508:W94.0206 -BROWNSVILLE, USA:25.9067:W97.4258 -BATON ROUGE, USA:30.5331:W91.1494:199 -BURLINGTON, USA:44.4717:W73.1531 -BUFFALO, USA:42.9403:W78.7319 -BURBANK, USA:34.2006:W118.359 -BALTIMORE, USA:39.1753:W76.6683 -BLYTHEVILLE, USA:35.9642:W89.9433 -FORT IRWIN, USA:35.2803:W116.63 -COLOMBIA, USA:33.9386:W81.1194 -CARIBOU, USA:46.8714:W68.0178 -COLOMBUS, USA:33.6439:W88.4436 -CEDAR CITY, USA:37.7008:W113.099 -CHILDRESS, USA:34.4336:W100.288 -CHICOPEE FALLS, USA:42.1981:W72.5342 -CRESTVIEW, USA:30.7786:W86.5219 -BRYAN, USA:30.7156:W96.3311 -CHATTANOOGA, USA:35.0353:W85.2036 -CHARLESTON, USA:32.8986:W80.0403 -CHICO, USA:39.7953:W121.858 -CLEVELAND, USA:41.4117:W81.8497:201 -COLLEGE STATION, USA:30.5883:W96.3636 -CHARLOTTE, USA:35.2139:W80.9431:771 -COLUMBUS, USA:39.9978:W82.8917:563 -CARLSBAD, USA:32.3372:W104.263 -COCO BEACH, USA:28.2347:W80.61 -COLORADO SPRINGS, USA:38.8056:W104.7 -COTULLA, USA:28.4581:W99.22 -COLUMBIA, USA:38.8181:W92.2194 -CASPER, USA:42.9078:W106.464 -CORPUS CHRISTI, USA:27.7703:W97.5011:416 -CUTBANK, USA:48.6083:W112.376 -CINCINNATI, USA:39.0461:W84.6619 -CLOVIS, USA:34.3825:W103.322 -CALEXICO, USA:32.6694:W115.513 -CONROE, USA:30.3517:W95.4144 -CHEYENNE, USA:41.1556:W104.812 -DALLAS, USA:32.8469:W96.8517:882 -DAYTON, USA:39.9022:W84.2192 -WASHINGTON, USA:38.8519:W77.0375 -DENVER, USA:39.8583:W104.667:396 -DETROIT, USA:42.4092:W83.0097 -DALLAS-FORT WORTH, USA:32.8964:W97.0375 -DOTHAN, USA:31.3211:W85.4494 -DALHART, USA:36.0225:W102.547 -DEL RIO, USA:29.3594:W100.778 -DULUTH, USA:46.8419:W92.1936 -TUCSON, USA:32.1664:W110.883:587 -DOVER, USA:39.13:W75.4664 -DERIDDER, USA:30.8317:W93.3397 -DURANGO, USA:37.1514:W107.754 -DEL RIO, USA:29.3728:W100.926 -DES MOINES, USA:41.5339:W93.6625 -DETROIT, USA:42.2122:W83.3533 -DOUGLAS, USA:31.4689:W109.604 -ABILENE, USA:32.4206:W99.8544 -ELIZABETH CITY, USA:36.2606:W76.1744 -EDWARDS AFB, USA:34.9053:W117.884 -HOUSTON, USA:29.6072:W95.1586:1553 -EAGLE PASS, USA:28.7:W100.479 -ELKINS, USA:38.8894:W79.8569 -EL DORADO, USA:33.2208:W92.8131 -EL PASO, USA:31.8067:W106.378 -ENID, USA:36.3397:W97.9161 -WENDOVER, USA:40.7186:W114.031 -ALEXANDRIA, USA:31.3947:W92.2956 -NEW BERN, USA:35.0728:W77.0428 -NEWARK, USA:40.6922:W74.1686 -KEY WEST, USA:24.5561:W81.7594 -FORT EUSTIS, USA:37.1325:W76.6086 -FRESNO, USA:36.7761:W119.718 -FORT CARSON, USA:38.6783:W104.756 -DAYTON, USA:39.8261:W84.0483 -FORT HUACHUCA, USA:31.5883:W110.344 -FORT LAUDERDALE, USA:26.0725:W80.1525 -FLORENCE, USA:34.1853:W79.7239 -FORT LEAVENWORTH, USA:39.3683:W94.9144 -FORT MEADE, USA:39.0853:W76.7592 -FALMOUTH, USA:41.6583:W70.5214 -FARMINGTON, USA:36.7411:W108.23 -FORT MYERS, USA:26.5864:W81.8631 -FORT DODGE, USA:42.5514:W94.1925 -TOPEKA, USA:38.9508:W95.6636 -WEST HAMPTON BEACH, USA:40.8436:W72.6317 -FORT RILEY, USA:39.055:W96.7644 -FORT SILL, USA:34.6497:W98.4019 -FORT SMITH, USA:35.3364:W94.3672 -FORT KNOX, USA:37.9069:W85.9719 -FORT WORTH, USA:32.8197:W97.3622:880 -FORT LAUDERDALE, USA:26.1972:W80.1706 -FAYETTEVILLE, USA:36.005:W94.17 -GAGE, USA:36.2953:W99.7764 -GARDEN CITY, USA:37.9275:W100.724 -SPOKANE, USA:47.6197:W117.534 -GRAND FORKS, USA:47.9492:W97.1761 -LONGVIEW, USA:32.3847:W94.7114 -GALVESTON, USA:29.2653:W94.8603 -GRANTS, USA:35.1653:W107.901 -GAINESVILLE, USA:29.69:W82.2717 -GREEN BAY, USA:44.485:W88.1294 -FORT LEWIS, USA:47.0792:W122.581 -KILLEEN, USA:31.0672:W97.8289 -GRAND RAPIDS, USA:42.8808:W85.5228 -GOLDSBORO, USA:35.3392:W77.9606 -FORT DRUM, USA:44.0556:W75.7194 -GREAT FALLS, USA:47.4819:W111.371 -PERU, USA:40.6481:W86.1519 -GREENVILE, USA:33.0678:W96.0653 -GRANDVIEW, USA:38.8433:W94.5606 -GREENWOOD, USA:33.4942:W90.0844 -HOBART, USA:34.9911:W99.0511 -HARTFORD, USA:41.7361:W72.65 -HAWTHORNE, USA:33.9228:W118.335 -HIBBING, USA:47.3864:W92.8389 -OGDEN, USA:41.1239:W111.973 -HICKORY, USA:35.7411:W81.3894 -HELENA, USA:46.6067:W111.983 -FORT HOOD, USA:31.1386:W97.7144 -ALAMOGORDO, USA:32.8525:W106.106 -HOBBS, USA:32.6875:W103.217 -HURON, USA:44.385:W98.2283 -HOPKINSVILLE, USA:36.6683:W87.4961 -WHITE PLAINS, USA:41.0669:W73.7075 -HARLINGEN, USA:26.2283:W97.6542 -HARRISON, USA:36.2614:W93.1547 -MARY ESTHER, USA:30.4278:W86.6892 -HOMESTEAD, USA:25.4883:W80.3836 -HOUGHTON LAKE, USA:44.3597:W84.6711 -REDSTONE, USA:34.6786:W86.6847 -TERRE HAUTE, USA:39.4514:W87.3075 -HOULTON, USA:46.1231:W67.7919 -HAVRE, USA:48.5428:W109.762 -WICHITA, USA:37.6228:W97.2672:413 -WASHINGTON, USA:38.9444:W77.4556:217 -NIAGARA FALLS, USA:43.1072:W78.9461 -KANKAKEE, USA:41.0714:W87.8461 -KIRTLAND A.F.B., USA:35.04:W106.609 -WILMINGTON, USA:39.6786:W75.6064 -WILMINGTON, USA:34.2706:W77.9025 -INDIANAPOLIS, USA:39.7172:W86.2942:936 -WINK, USA:31.7794:W103.201 -INTERNATIONAL FALLS, USA:48.5661:W93.4031 -INDIAN SPRINGS, USA:36.5869:W115.673 -WINSTON-SALEM, USA:36.1336:W80.2219 -IMPERIAL, USA:32.8342:W115.579 -WILLIAMSPORT, USA:41.2419:W76.9211 -WILLISTON, USA:48.1778:W103.642 -ISLIP, USA:40.795:W73.1 -JACKSON, USA:32.3111:W90.0758:287 -JACKSONVILLE, USA:30.4939:W81.6878:1935 -JONESBORO, USA:35.8317:W90.6461 -NEW YORK, USA:40.7127281:W74.0060152:784 -LANSING, USA:42.7786:W84.5872 -LAS VEGAS, USA:36.0803:W115.152:352 -LOS ANGELES, USA:34.0536909:W118.242766:1214 -LUBBOCK, USA:33.6636:W101.823 -LAKE CHARLES, USA:30.1261:W93.2233 -HAMPTON, USA:37.0828:W76.3603 -LUFKIN, USA:31.2339:W94.75 -LAFAYETTE, USA:30.2053:W91.9875 -LONG BEACH, USA:33.8175:W118.151 -WRIGHT, USA:31.8889:W81.5622 -LITTLE ROCK, USA:34.7294:W92.2242 -WEST PALM BEACH, USA:26.5928:W80.085 -LINCOLN, USA:40.8508:W96.7592 -LOUISVILLE, USA:38.2278:W85.6636:842 -LAREDO, USA:27.5436:W99.4614 -FORT BENNING, USA:32.3372:W84.9911 -ALTUS, USA:34.6669:W99.2667 -PHOENIX, USA:33.535:W112.383:1338 -CINCINNATI, USA:39.1033:W84.4186 -MIDLAND, USA:31.9425:W102.202 -SACRAMENTO, USA:38.6675:W121.401 -TAMPA, USA:27.8492:W82.5211 -KANSAS CITY, USA:39.100105:W94.5781416:816 -MACON, USA:32.6928:W83.6492 -ORLANDO, USA:28.5421109:W81.3790304:265 -HARRISBURG, USA:40.1933:W76.7633 -CHICAGO, USA:41.85574666473487:W87.76552685185547:589 -MEMPHIS, USA:35.1490215:W90.0516285:816 -MERCED, USA:37.3803:W120.568 -MCALLEN, USA:26.1758:W98.2386 -MARIETTA, USA:33.9153:W84.5161 -SACRAMENTO, USA:38.5810606:W121.493895 -MIAMI, USA:25.804570343778067:W80.29181030761718 -MINOT, USA:48.4156:W101.357 -MILLVILLE, USA:39.3678:W75.0722 -MILWAUKEE, USA:42.9472:W87.8964 -JACKSON, USA:32.2990384:W90.1847691 -MUSKOGEE, USA:35.6575:W95.3614 -MELBOURNE, USA:28.1025:W80.645 -MCALESTER, USA:34.8822:W95.7833 -MILLINOCKET, USA:45.6478:W68.6856 -MONROE, USA:32.5108:W92.0375 -MACKMINNVILLE, USA:45.1944:W123.136 -MACON, USA:45.1264:W87.6383 -MOBILE, USA:30.6914:W88.2428 -MODESTO, USA:37.6256:W120.954 -MINOT, USA:48.2592:W101.28 -MONTPELIER, USA:44.2033:W72.5622 -MARQUETTE, USA:46.5339:W87.5617 -MADISON, USA:43.1397:W89.3375:199 -MINNEAPOLIS, USA:44.8803:W93.2167 -MASSENA, USA:44.9358:W74.8453 -NEW ORLEANS, USA:29.9933:W90.2578:439 -MOUNT CLEMENS, USA:42.6128:W82.8317 -MUIR, USA:40.4347:W76.5692 -MOUNTAIN HOME, USA:43.0433:W115.872 -GRANT COUNTY AIRPORT, USA:47.2075:W119.32 -MINERAL WELLS, USA:32.7814:W98.06 -MONTGOMERY, USA:32.3792:W86.3625:413 -MYRTLE BEACH, USA:33.6797:W78.9283 -BEAUFORT, USA:32.4772:W80.7231 -LAKEHURST, USA:40.0333:W74.3533 -FALLON, USA:39.4164:W118.701 -NORFOLK, USA:36.9375:W76.2892 -PATUXENT RIVER, USA:38.2858:W76.4117 -CHINA, USA:35.6878:W117.691 -EL CENTRO, USA:32.8292:W115.672 -CHERRY POINT, USA:34.9025:W76.8808 -MIRAMAR, USA:32.8683:W117.143 -LEMOORE, USA:36.3328:W119.952 -MERIDIAN, USA:32.5519:W88.5556 -PORT ANGELES, USA:48.1414:W123.414 -PENSACOLA, USA:30.3525:W87.3186 -MILLINGTON, USA:35.3567:W89.8703 -KINGSVILLE, USA:27.5072:W97.8097 -KEY WEST, USA:24.5758:W81.6889 -MILTON, USA:30.7242:W87.0219 -POINT MUGU, USA:34.1203:W119.121 -TUSTIN, USA:33.7061:W117.827 -OCEANA, USA:36.8206:W76.0333 -MOUNTAIN VIEW, USA:37.415:W122.048 -WHIDBEY ISLAND, USA:48.3517:W122.656 -TWENTY NINE PALMS, USA:34.2961:W116.162 -WILLOW GROVE, USA:40.1997:W75.1481 -QUANTICO, USA:38.5017:W77.3053 -SAN DIEGO, USA:32.6992:W117.215:842 -OAKLAND, USA:37.7211:W122.221 -OMAHA, USA:41.1183:W95.9125 -OGDENSBURG, USA:44.6819:W75.4656 -OKLAHOMA CITY, USA:35.3931:W97.6006:1571 -NOGALES, USA:31.4175:W110.848 -OMAHA, USA:41.3025:W95.8936 -ONTARIO, USA:34.0558:W117.601 -MIAMI, USA:25.9069:W80.2783 -NORFOLK, USA:36.8944:W76.2011 -ORLANDO, USA:28.5453:W81.3328 -OSCODA, USA:44.4514:W83.3939 -EVERETT, USA:47.9061:W122.281 -PANAMA CITY, USA:30.0697:W85.5764 -PINE BLUFF, USA:34.1747:W91.9344 -PLATTSBURGH, USA:44.6508:W73.4681 -WEST PALM BEACH, USA:26.6831:W80.0956 -PORTLAND, USA:45.5886:W122.597:346 -NEWPORT NEWS, USA:37.1317:W76.4928 -PHILADELPHIA, USA:39.8719:W75.2411 -PORT HURON, USA:42.9108:W82.5286 -ST. PETERSBURG, USA:27.9106:W82.6872 -PITTSBURGH (PENNSYLVA), USA:40.4914:W80.2328 -PEMBINA, USA:48.9425:W97.2408 -PALMDALE, USA:34.6292:W118.084 -PONCA CITY, USA:36.7306:W97.0997 -PHILADELPHIA, USA:40.0819:W75.0106 -PRINCETON, USA:45.5597:W93.6081 -PENSACOLA, USA:30.4731:W87.1872 -FAYETTEVILLE, USA:35.1708:W79.0144 -FORT POLK, USA:31.0447:W93.1914 -PRESQUE ISLE, USA:46.6889:W68.0447 -PRESCOTT, USA:34.6544:W112.419 -PALM SPRINGS, USA:33.8294:W116.507 -PALACIOS, USA:28.7275:W96.2508 -PUEBLO MEMORIAL, USA:38.2889:W104.496 -PROVIDENCE, USA:41.7239:W71.4281 -RIVERSIDE, USA:33.9517:W117.445 -ROBINSON, USA:34.85:W92.3 -RAPID CITY, USA:44.145:W103.103 -RED RIVER, USA:47.9608:W97.4011 -RALEIGH-DURHAM, USA:35.8775:W78.7872 -RICHMOND, USA:37.505:W77.3194 -RANCHO MURIETA, USA:38.4886:W121.102 -RIVERSIDE, USA:33.8806:W117.259 -ROME, USA:43.2336:W75.4069 -SAN ANTONIO, USA:29.5294:W98.2789:1194 -RENO, USA:39.4983:W119.768 -ROCHESTER, USA:43.1186:W77.6722 -ROSWELL, USA:33.3014:W104.531 -FORT MYERS, USA:26.5361:W81.755 -SACRAMENTO, USA:38.5125:W121.493 -SANTA FE, USA:35.6167:W106.088 -SAN DIEGO, USA:32.7333:W117.189 -SAVANNAH, USA:32.1275:W81.2019 -GWINN, USA:46.3536:W87.3958 -SANTA BARBARA, USA:32.6083:W82.3686 -SALISBURY, USA:38.3403:W75.5103 -STOCKTON, USA:37.8942:W121.239 -SEATTLE, USA:47.59840153253106:W122.31143714060059:217 -SELMA, USA:32.3439:W86.9878 -SPOKANE, USA:47.6828:W117.322 -SAN FRANCISCO, USA:37.74594738515095:W122.44299445520019:121 -SMITHFIELD, USA:41.9206:W71.4911 -SHREVEPORT, USA:32.4464:W93.8256 -SAN JOSE, USA:37.32149403063839:W121.9286918256836 -SAN ANGELO, USA:31.3575:W100.496 -SPOKANE, USA:47.615:W117.656 -SANDUSKY, USA:41.4333:W82.6522 -SALT LAKE CITY, USA:40.7883:W111.978:288 -SACRAMENTO, USA:38.6953:W121.591 -SANTA ANA, USA:33.6756:W117.868 -SAN LUIS, USA:45.7725:W122.862 -ST. PETERSBURG, USA:27.765:W82.6269 -SUMTER, USA:33.9728:W80.4728 -ST. LOUIS, USA:38.7475:W90.3597 -FAIRFIELD, USA:38.2625:W121.927 -SIOUX CITY, USA:42.4025:W96.3842 -HUNTER AAF, USA:32.01:W81.1456 -NEWBURGH, USA:41.5039:W74.1047 -SYRACUSE, USA:43.1111:W76.1061 -KNOBNOSTER, USA:38.7303:W93.5478 -FORT LEONARDWOOD, USA:37.7414:W92.1406 -TUCUMCARI, USA:35.1828:W103.603 -TACOMA, USA:47.1375:W122.476 -TRUTH OR CONSEQUENCES, USA:33.2369:W107.272 -TETERBORO, USA:40.8497:W74.0608 -OKLAHOMA CITY, USA:35.4147:W97.3864 -TALLAHASSEE, USA:30.3964:W84.3503 -KENDALL-TAMIAMI, USA:25.6478:W80.4328 -MIAMI, USA:25.8617:W80.8969 -TONOPAH, USA:37.7944:W116.779 -TAMPA, USA:27.9753:W82.5331 -TRENTON, USA:40.2767:W74.8133 -TULSA, USA:36.1983:W95.8881 -TEXARKANA, USA:33.4536:W93.9908 -TYLER, USA:32.3539:W95.4022 -KNOXVILLE, USA:35.8122:W83.9928 -VALDOSTA, USA:30.9678:W83.1928 -LOMPOC, USA:34.7294:W120.577 -VICTORVILLE, USA:34.5931:W117.379 -VALPARAISO, USA:30.4831:W86.5253 -VERO BEACH, USA:27.6556:W80.4178 -WALLOPS ISLAND, USA:37.94:W75.4664 -MACON, USA:32.64:W83.5917 -WRIGHTSTOWN, USA:40.0156:W74.5936 -WHITE SANDS, USA:32.3414:W106.403 -WILDWOOD, USA:39.0083:W74.9081 -DETROIT, USA:42.2378:W83.5303 -YOUNGSTOWN, USA:41.2606:W80.6789 -YUMA, USA:32.6564:W114.606 -ZUNI PUEBLO, USA:35.0833:W108.792 -TIRANA, ALBANIA:41.4147:19.7206 -BOURGAS, BULGARIA:42.5689:27.5139 -GORNA ORECHOVICA, BULGARIA:43.1514:25.7128 -PLOVDIV, BULGARIA:42.0678:24.8508 -SOFIA, BULGARIA:42.695:23.4061 -STARA ZAGORA, BULGARIA:42.3767:25.655 -VARNA, BULGARIA:43.2319:27.825 -LARNACA, CYPRUS:34.875:33.6247 -PAPHOS, CYPRUS:34.7178:32.4856 -AKROTIRI, CYPRUS:34.5903:32.9878 -DUBROVNIK, CROATIA:42.5611:18.2681 -CEPIN, CROATIA:45.5419:18.6361 -OSIJEK, CROATIA:45.4625:18.8114 -PULA, CROATIA:44.8933:13.9219 -GROBNIK, CROATIA:45.3794:14.5036 -RIJEKA, CROATIA:45.2167:14.57 -SPLIT, CROATIA:43.5389:16.2978 -VARAZDIN, CROATIA:46.2947:16.3811 -ZAGREB, CROATIA:45.7428:16.0686 -ZADAR, CROATIA:44.1081:15.3467 -UDBINA, CROATIA:44.5575:15.7742 -ALBACETE, SPAIN:38.9483:W1.86333 -ALICANTE, SPAIN:38.2819:W0.558056 -ALMERIA, SPAIN:36.8439:W2.37 -AVILES, SPAIN:43.5633:W6.03444 -CORDOBA, SPAIN:37.8419:W4.84861 -BILBAO, SPAIN:43.3008:W2.91056 -BURGOS, SPAIN:42.3575:W3.62056 -BARCELONA, SPAIN:41.40016140348051:2.159836908862287 -BADAJOZ, SPAIN:38.8911:W6.82111 -LA CORUNA, SPAIN:43.3019:W8.37722 -GRANADA, SPAIN:37.1331:W3.63556 -GERONA, SPAIN:41.9008:2.76028 -GRANADA, SPAIN:37.1886:W3.77722 -MADRID, SPAIN:40.44076992155027:W3.68693134643554 -IBIZA, SPAIN:38.9743901:1.4197463 -JEREZ, SPAIN:36.7444:W6.06 -MURCIA, SPAIN:37.7747:W0.812222 -LEON, SPAIN:42.5889:W5.65556 -MALAGA, SPAIN:36.6736:W4.49889 -MENORCA, SPAIN:39.8625:4.21861 -SEVILLA, SPAIN:37.1747:W5.61583 -OCANA, SPAIN:39.9375:W3.50333 -PALMA DE MALLORCA, SPAIN:39.55:2.73333 -PAMPLONA, SPAIN:42.77:W1.64611 -MURCIA, SPAIN:37.9511:W1.23028 -REUS, SPAIN:41.1472:1.16694 -ROTA, SPAIN:36.645:W6.34944 -SALAMANCA, SPAIN:40.9519:W5.50194 -SON BONET, SPAIN:39.5989:2.70278 -PALMA DE MALLORCA, SPAIN:39.5517:2.73861 -SAN LUIS, SPAIN:39.8622:4.25833 -SAN SEBASTIAN, SPAIN:43.3564:W1.79056 -SANTIAGO, SPAIN:42.8961:W8.415 -SEO DE URGEL, SPAIN:42.3386:1.40917 -VALENCIA, SPAIN:39.4892:W0.481389 -VALLADOLID, SPAIN:41.7061:W4.85194 -VITORIA, SPAIN:42.8828:W2.72444 -VIGO, SPAIN:42.2317:W8.62667 -SANTANDER, SPAIN:43.4269:W3.82 -ZARAGOZA, SPAIN:41.6661:W1.04139 -SEVILLA, SPAIN:37.4178:W5.89306 -PERONNE, FRANCE:49.8689:3.02778 -NANGIS, FRANCE:48.5936:3.005 -BAGNOLE-DE-L'ORNE, FRANCE:48.5458:W0.387222 -ALBERT, FRANCE:49.9714:2.69972 -LE TOURQUET, FRANCE:50.5147:1.62722 -VALENCIENNES, FRANCE:50.3256:3.46111 -AMIENS, FRANCE:49.8714:2.38639 -AGEN, FRANCE:44.1747:0.590556 -CAZAUX, FRANCE:44.5333:W1.125 -BORDEAUX, FRANCE:44.841225:W0.5800364 -BERGERAC, FRANCE:44.8534568:0.487531 -TOULOUSE, FRANCE:43.6044622:1.4442469 -COGNAC, FRANCE:45.693165:W0.325018 -POITIERS, FRANCE:46.5875:0.306667 -MONTLUCON-GUERET, FRANCE:46.2244:2.36306 -LIMOGES, FRANCE:45.8628:1.17944 -MONT-DE-MARSAN, FRANCE:43.9117:W0.5075 -NIORT, FRANCE:46.3111:W0.401389 -TOULOUSE, FRANCE:43.6044622:1.4442469 -PAU, FRANCE:43.38:W0.418611 -LA ROCHELLE, FRANCE:46.17127895533832:W1.1405420877441474 -TARBES, FRANCE:43.1786:W0.00638889 -ANGOULEME, FRANCE:45.7292:0.221389 -BRIVE, FRANCE:45.1508:1.46917 -PERIGUEUX, FRANCE:45.1981:0.815556 -BIARRITZ-BAYONNE, FRANCE:43.4683:W1.52306 -CAHORS, FRANCE:44.3511:1.47528 -ST.-GIRONS, FRANCE:43.0075:1.10306 -ARCACHON, FRANCE:44.5964:W1.11083 -ALBI, FRANCE:43.9136:2.11306 -CASTRES, FRANCE:43.5561:2.28917 -TOULOUSE, FRANCE:43.5861:1.49917 -MILLAU, FRANCE:43.99:3.18306 -RODEZ, FRANCE:44.4078:2.4825 -USSEL, FRANCE:45.5347:2.42389 -VILLENEUVE-SUR-LOT, FRANCE:44.3969:0.758889 -ROYAN, FRANCE:45.6281:W0.9725 -MIMIZAN, FRANCE:44.1461:W1.17444 -AIRE-SUR-L'ADOUR, FRANCE:43.7094:W0.245278 -MONTAUBAN, FRANCE:44.0256:1.37778 -AUCH, FRANCE:43.6878:0.601667 -LIBOURNE, FRANCE:44.9822:W0.134722 -PAMIERS, FRANCE:43.0906:1.69583 -MARMANDE, FRANCE:44.4989:0.200278 -ROCHEFORT, FRANCE:45.8878:W0.983056 -OUESSANT, FRANCE:48.4628:W5.06389 -PONTIVY, FRANCE:48.0583:W2.92167 -GUISCRIFF-SCAER, FRANCE:48.0525:W3.66444 -ILE D'YEU, FRANCE:46.7186:W2.39111 -ANCENIS, FRANCE:47.4081:W1.1775 -BRIENNE-LE CHATEAU, FRANCE:48.4297:4.48111 -COLMAR, FRANCE:48.1097:7.35889 -BEAUNE, FRANCE:47.0058:4.89333 -DOLE, FRANCE:47.0389:5.42722 -JOIGNY, FRANCE:47.9922:3.39222 -VERDUN, FRANCE:49.1222:5.46889 -AUBENAS-VALS-LANAS, FRANCE:44.5442:4.37194 -LE PUY, FRANCE:45.0794:3.76472 -ST.-FLOUR, FRANCE:45.0764:2.99361 -BOURG, FRANCE:46.2008:5.29194 -VILEFRANCE, FRANCE:45.9164:4.64056 -MOULINS, FRANCE:46.5344:3.42361 -CASSAGNES-BEGHONES, FRANCE:44.1775:2.515 -TOULOUSE, FRANCE:43.5689:1.48083 -METZ, FRANCE:48.9822:6.25361 -BASTIA, CORSE ISL.:42.5539:9.48333 -CALVI, CORSE ISL.:42.5306:8.79306 -FIGARI, CORSE ISL.:41.5006:9.09778 -AJACCIO, CORSE ISL.:41.9236:8.80278 -PROPRIANO, FRANCE:41.6631:8.89028 -SOLENZARA, CORSE ISL.:41.9242:9.40583 -CORTE, FRANCE:42.2936:9.19306 -AUXERRE, FRANCE:47.85:3.49694 -CHAMBERY, FRANCE:45.6378:5.88 -CLERMONT FERRAND, FRANCE:45.7864:3.16917 -BOURGES, FRANCE:47.0581:2.37028 -CHAMBERY, FRANCE:45.5608:5.97556 -CHALON, FRANCE:46.8258:4.8175 -ANNEMASSE, FRANCE:46.1919:6.26833 -LYON, FRANCE:45.7261:5.09083 -MACON, FRANCE:46.295:4.79556 -ST.-YAN, FRANCE:46.4125:4.01306 -ROANNE, FRANCE:46.0583:4.00139 -ANNECY, FRANCE:45.9292:6.09861 -GRENOBLE, FRANCE:45.3628:5.32917 -MONTLUCON, FRANCE:46.3525:2.57028 -VALENCE, FRANCE:44.9214:4.96972 -VICHY, FRANCE:46.1694:3.40361 -AURILLAC, FRANCE:44.8914:2.42194 -CHATEAUROUX, FRANCE:46.8619:1.73056 -LYON, FRANCE:45.7281:4.94472 -AIX-LES-MILLES, FRANCE:43.5053:5.36778 -LE LUC, FRANCE:43.3844:6.38694 -CANNES, FRANCE:43.5419:6.95333 -ST.-ETIENNE, FRANCE:45.5403:4.29639 -ISTRES, FRANCE:43.5225:4.92361 -CARCASSONNE, FRANCE:43.2158:2.30611 -MARSEILLE, FRANCE:43.29031232666344:5.397847473754878 -NICE, FRANCE:43.71335521461014:7.2626405438720765 -ORANGE, FRANCE:44.1371311:4.8078783 -PERPIGNAN, FRANCE:42.7403:2.87056 -LE CASTELLET, FRANCE:43.2525:5.785 -ALES, FRANCE:44.0694:4.14194 -MONTPELLIER, FRANCE:43.5761:3.96278 -BEZIERS, FRANCE:43.3239:3.35556 -AVIGNON, FRANCE:43.9072:4.90167 -SALON, FRANCE:43.6064:5.10917 -LEZIGNAN-CORBIERES, FRANCE:43.1758:2.73417 -MENDE, FRANCE:44.5019:3.53278 -CARPENTRAS, FRANCE:44.0297:5.07806 -AVORD, FRANCE:47.0533:2.6325 -BEAUVAIS, FRANCE:49.4544:2.11278 -CHATEAUDUN, FRANCE:48.0581:1.37639 -SAUMUR, FRANCE:47.2567:W0.115 -EVREUX, FRANCE:49.0286:1.21972 -LE HAVRE, FRANCE:49.5339:0.0880556 +AARHUS, DENMARK:56.3042:10.6194:91 +ABADAN, IRAN:30.365:48.2331 +ABAKAN, RUSSIA:53.74:91.385:112 ABBEVILLE, FRANCE:50.1433:1.83167 -ORLEANS, FRANCE:47.9878:1.76056 -CHALONS, FRANCE:48.7758:4.18444 -ROUEN, FRANCE:49.4404591:1.0939658:21 -TOURS, FRANCE:47.4322:0.7275:34 -CHOLET, FRANCE:47.0819:W0.876944:87 -LAVAL, FRANCE:48.0311:W0.742778:34 -ORLEANS, FRANCE:47.8969:2.16333:27 -PARIS, FRANCE:48.8566969:2.3514616:105 -CREIL, FRANCE:49.2533:2.51889:11 -COULOMMIERS, FRANCE:48.8375:3.01611:10 -TOUSSOUS-LE-NOBLE, FRANCE:48.7517:2.10611:4 -VILLACOUBLAY, FRANCE:48.7742:2.20139:8 -REIMS, FRANCE:49.2078:4.15667:46 -TROYES, FRANCE:48.3228:4.01778:13 -LUNEVILLE, FRANCE:48.5972:6.54472:16 -ETAIN, FRANCE:49.2267:5.67194:20 -AUTUN, FRANCE:46.9664:4.26028:61 -NEVERS, FRANCE:47.0011:3.11444:17 -CAMBRAI, FRANCE:50.2217:3.15417:18 -MAUBEUGE, FRANCE:50.3103:4.03306:18 -BESANCON-LA-VEZE, FRANCE:47.2083:6.08306:5 -PHALSBOURG, FRANCE:48.7661:7.20028:13 -LILLE, FRANCE:50.5617:3.08944:34 -MERVILLE, FRANCE:50.6183:2.64222:26 -CHARLEVILLE, FRANCE:49.7839:4.64694:31 -VESOUL-FROTEY, FRANCE:47.6375:6.20389:7 -ANGERS, FRANCE:47.4972:W0.5725:42 -BREST, FRANCE:48.4478:W4.41833:49 -CHERBOURG, FRANCE:49.65:W1.47028:14 -LA BAULE, FRANCE:47.2894:W2.34639:22 -GRANVILLE, FRANCE:48.8831:W1.56417:9 -DEAUVILLE, FRANCE:49.3653:0.154167:3 -LORIENT, FRANCE:47.7606:W3.44:17 -LA ROCHE-SUR-YON, FRANCE:46.7019:W1.37861:87 -LANDIVISIAU, FRANCE:48.53:W4.15139:18 -CAEN, FRANCE:49.1733:W0.45:25 -LE MANS, FRANCE:47.9486:0.201667:52 -RENNES, FRANCE:48.0694:W1.73472:50 -QUIMPER, FRANCE:47.9747:W4.16778:84 -NANTES, FRANCE:47.1531:W1.61056:65 -MORLAIX, FRANCE:48.6031:W3.81556:24 -VANNES, FRANCE:47.7231:W2.71833:32 -ST.-NAZAIRE, FRANCE:47.3119:W2.14917:46 -MULHOUSE, FRANCE:47.5894:7.52972:22 -COLMAR, FRANCE:47.9219:7.39944:66 -DIJON, FRANCE:47.2689:5.09:40 -METZ, FRANCE:49.0717:6.13167:41 -EPINAL, FRANCE:48.3247:6.06972:59 -HAGUENAU, FRANCE:48.7933:7.81611:182 -ST.-DIZIER, FRANCE:48.6358:4.89917:43 -TOUL, FRANCE:48.78:5.97972:30 -MONTBELIARD, FRANCE:47.4869:6.7925:15 -NANCY, FRANCE:48.6919:6.23028:15 -PONTARLIER, FRANCE:46.9044:6.32694:41 -REIMS, FRANCE:49.31:4.05:46 -STRASSBOURG, FRANCE:48.5381:7.62806:78 -LUXEUIL, FRANCE:47.7831:6.36389:21 -CUERS, FRANCE:43.2478:6.12667:50 -HYERES, FRANCE:43.0972:6.14583:132 -NIMES, FRANCE:43.7572:4.41611:161 -AMBERIEU, FRANCE:45.9872:5.32833:24 -CAMBRAI, FRANCE:50.1414:3.26306:18 -BROYE-LES-PESMES, FRANCE:47.335:5.51361:25 -LURE, FRANCE:47.7044:6.54583:24 -ST.-SIMON, FRANCE:49.7583:3.21194:3 -AGRINION, GREECE:38.6019:21.3511:162:84 -ALEXANDROUPOLIS, GREECE:40.8558:25.9561:642 -ATHENS, GREECE:37.9839412:23.7283052:38 -ALEXANDRIA, GREECE:35.50580479245094:24.024996747143533:61 -ELEFSIS, GREECE:38.0636:23.5558:18 -IOANNINA, GREECE:39.6964:20.8225:403 -HERAKLION, GREECE:35.3394:25.1803:245 -KASTORIA, GREECE:40.4494:21.2761:57 -KALAMATA, GREECE:37.0683:22.0256:442 -KAVALA, GREECE:40.9722:24.3417:37 -KOZANI, GREECE:40.2861:21.8408:34 -LARISSA, GREECE:39.65:22.4653:122 -MEGARA, GREECE:37.9811:23.3653:330 -MYKONOS, GREECE:37.435:25.3481:85 -MARATHON, GREECE:38.145:24.0142:97 -MYTILINI, GREECE:39.0567:26.5983:15 -PREVEZA, GREECE:38.9253:20.7653:381 -PATRAS, GREECE:38.1511:21.4256:125 -CHANIA, GREECE:35.5317:24.1494:12 -SPARTI, GREECE:36.9733:22.5261:21 -TANAGRA, GREECE:38.3397:23.5647:27 -KASTELI, GREECE:35.1869:25.3267:334 -TRIPOLIS, GREECE:37.5308:22.405:28 -THESSALONIKI, GREECE:40.5197:22.9708:19 -BUDAPEST, HUNGARY:47.4367:19.2556:525 -DEBRECEN, HUNGARY:47.4889:21.6153:461 -GODOLLO, HUNGARY:47.5708:19.3386:61 -KECSKEMET, HUNGARY:46.9175:19.7492:322 -KAPOSVAR, HUNGARY:46.3892:17.7314:113 -NYIRREGYHAZA, HUNGARY:47.9839:21.6922:274 -OCSENY, HUNGARY:46.3039:18.7692:72 -PAPA, HUNGARY:47.3639:17.5008:91 -AZENTKILYSZABADJA, HUNGARY:47.0778:17.9683:22 -SIOFOK, HUNGARY:46.8581:18.0956:124 -SARMELLEK, HUNGARY:46.6864:17.1589:35 -SZOLNOK, HUNGARY:47.1228:20.2353:187 -TOKOL, HUNGARY:47.3453:18.9808:38 -CROTONE, ITALY:38.9972:17.08:179 -BARI, ITALY:41.1383:16.7606:117 -FOGGIA, ITALY:41.4328:15.535:507 -GROTTAGLIE, ITALY:40.5161:17.4022:102 -LECCE, ITALY:40.2386:18.1331:238 -PESCARA, ITALY:42.4314:14.1808:33 -BRINDISI, ITALY:40.6575:17.9469:333 -GIOIA DEL COLLE, ITALY:40.7678:16.9333:206 -LAMEZIA, ITALY:38.9064:16.2422:162 -CATANIA, ITALY:37.4667:15.0661:182 -PALERMO, ITALY:38.1758:13.0908:158 -REGGIO CALABRIA, ITALY:38.0711:15.6514:239 -TRAPANI, ITALY:37.9125:12.4881:271 -ALGHERO, ITALY:40.6319:8.29056:224 -DECIMOMANNU, ITALY:39.3542:8.97222:28 -CAGLIARI, ITALY:39.2514:9.05417:85 -OLBIA, ITALY:40.8986:9.5175:383 -TORTOLI, ITALY:39.9186:9.68278:39 -ROME, ITALY:41.8933203:12.4829321:1285 -TURIN, ITALY:45.0677551:7.6824892:130 -MILANO, ITALY:45.5397:9.20222:181 -BERGAMO, ITALY:45.6739:9.70417:40 -TORINO, ITALY:45.2006:7.64944:130 -ALBENGA, ITALY:44.0506:8.12722:36 -GENOA, ITALY:44.4119:8.84167:243 -MILAN, ITALY:45.4453:9.27694:181 -CAMERI, ITALY:45.5294:8.66917:39 -PARMA, ITALY:44.8244:10.2961:260 -PIACENZA, ITALY:44.9131:9.72333:118 -AVIANO, ITALY:46.0317:12.5964:113 -BOLZANO, ITALY:46.4606:11.3261:52 -BOLOGNA, ITALY:44.5342:11.2903:140 -TREVISO, ITALY:45.6486:12.1953:55 -FORLI, ITALY:44.1947:12.07:228 -GHEDI, ITALY:45.4319:10.2675:60 -VERONA, ITALY:45.4719:10.9278:1426 -MONTICHIARI, ITALY:45.4289:10.3306:81 -RONCHI DE LEGIONARI, ITALY:45.8278:13.4664:17 -RIMINI, ITALY:44.0203:12.6119:134 -TREVISO, ITALY:45.6844:12.0861:55 -VICENZA, ITALY:45.5742:11.5306:80 -PADOVA, ITALY:45.3956:11.8478:92 -VENICE, ITALY:45.505:12.3517:414 -SIENA, ITALY:43.2572:11.2542:118 -GUIDONIA, ITALY:41.9903:12.7408:79 -SALERNO, ITALY:40.6203:14.9111:58 -LATINA, ITALY:41.5422:12.9089:277 -GRAZZANISE, ITALY:41.0608:14.0819:47 -NAPLES, ITALY:40.8858:14.2906:119 -PISA, ITALY:43.6839:10.3925:185 -FIRENZE, ITALY:43.8097:11.205:102 -GROSSETO, ITALY:42.7608:11.0722:474 -VITERBO, ITALY:42.4303:12.0642:406 -PERUGIA, ITALY:43.0958:12.5131:449 -CERKLJE, SLOVENIA:45.8997:15.53 -LJUBLIANA, SLOVENIA:46.2236:14.4575 -MARIBOR, SLOVENIA:46.4797:15.6861 -PORTOROZ, SLOVENIA:45.4733:13.6147 -SLOVENJ GRADEC, SLOVENIA:46.4719:15.1169 -CESKE BUDEJOVICE, CZECH REPUBLIC:48.9461:14.4272 -CHOTEBOR, CZECH REPUBLIC:49.6844:15.6761 -CASLAV, CZECH REPUBLIC:49.9394:15.3817 -HRADEC KRALOVE, CZECH REPUBLIC:50.2531:15.845 -PRAHA, CZECH REPUBLIC:50.1211:14.5436 -KUNOVICE, CZECH REPUBLIC:49.0294:17.4397 -KARLOVY VARY, CZECH REPUBLIC:50.2028:12.9147 -LINE, CZECH REPUBLIC:49.675:13.2744 -MNICHOVO HRADISTE, CZECH REPUBLIC:50.54:15.0064 -OSTRAVA, CZECH REPUBLIC:49.6964:18.1111 -NAMEST, CZECH REPUBLIC:49.1658:16.1247 -PARDUBICE, CZECH REPUBLIC:50.0133:15.7386 -PRIBRAM, CZECH REPUBLIC:49.7186:14.0969 -PREROV, CZECH REPUBLIC:49.4258:17.4047 -PRAGUE, CZECH REPUBLIC:50.1008:14.26 -SOBESLAV, CZECH REPUBLIC:49.2447:14.7136 -TURANY, CZECH REPUBLIC:49.1511:16.6942 -VODOCHODY, CZECH REPUBLIC:50.2164:14.3956 -TEL-AVIV, ISRAEL:32.0094:34.8767 -BEER-SHEBA, ISRAEL:31.2869:34.7228 -TEL-NOF, ISRAEL:31.8394:34.8217 -EYN-SHEMER, ISRAEL:32.4408:35.0061 -ELAT, ISRAEL:29.5611:34.96 -EYN-YAHAV, ISRAEL:30.6231:35.2019 -HAIFA, ISRAEL:32.8111:35.0439 -HAZTOR, ISRAEL:31.7625:34.7272 -ROSH PINA, ISRAEL:32.9808:35.5717 -JERUSALEM, ISRAEL:31.8667:35.2167 -TEL-AVIV FIR/CTA/UTA, ISRAEL:31.2286:35.1908 -MEGIDO AIRSTRIP, ISRAEL:32.5986:35.2283 -METZADA, ISRAEL:31.3281:35.3883 -NEVATIM, ISRAEL:31.2083:35.0122 -OVDA, ISRAEL:29.94:34.9358 -RAMAT DAVID, ISRAEL:32.6603:35.1822 -RAMON, ISRAEL:30.7761:34.6667 -TEL-AVIV, ISRAEL:32.1144:34.7819 -MALTA, MALTA:35.8572:14.4775 -MALTA ACC, MALTA:35.9167:14.4167 -WIENER NEUSTADT OST, AUSTRIA:47.8433:16.26 -WELS, AUSTRIA:48.1831:14.0408 -GRAZ, AUSTRIA:47:15.4333 -INNSBRUCK, AUSTRIA:47.26:11.3439 -KLAGENFURT, AUSTRIA:46.65:14.3333 -LINZ, AUSTRIA:48.2333:14.1833 -VIENNA, AUSTRIA:48:16.5 -SALZBURG, AUSTRIA:47.7931:13.0042 -VIENNA, AUSTRIA:48.1103:16.5697 -GRAZ, AUSTRIA:46.9908:15.4394 -KLAGENFURT, AUSTRIA:46.6425:14.3375 -LINZ, AUSTRIA:48.2331:14.1875 -LANGENLEBARN, AUSTRIA:48.3208:16.1117 -ZELTWEG, AUSTRIA:47.2028:14.7442 -ALVERCA, ACORES:38.8831:W9.03 -SANTA MARIA (ISLAND), ACORES:36.9714:W25.1706 -BRAGANCA, ACORES:41.8683:W6.71194 -BEJA (MADEIRA), ACORES:38.0789:W7.93222 -BRAGA, ACORES:41.5869:W8.445 -COIMBA, ACORES:40.1572:W8.47 -CASCAIS, ACORES:38.725:W9.355 -COVILHA, ACORES:40.2647:W7.47972 -EVORA, ACORES:38.5333:W7.88944 -FLORES (FLORES ISL.), ACORES:39.455:W31.1311 -FARO, ACORES:37.0142:W7.96583 -GRACIOSA ISLAND, ACORES:39.0919:W28.0297 -HORTA, ACORES:38.5197:W28.7158 -ESPINHO, PORTUGAL:40.9742:W8.64528 -LAJES (TERCEIRA ISLAND), ACORES:38.7642:W27.0933 -LISBON, PORTUGAL:38.7167:W9.15583 -MONTE REAL, ACORES:39.8311:W8.88722 -MONTIJO, ACORES:38.7036:W9.03583 -OVAR, PORTUGAL:40.9158:W8.64583 -PONTA DELGADA, ACORES:37.7411:W25.6978 -PICO, ACORES:38.5544:W28.4397 -PORTIMAO, ACORES:37.1492:W8.58389 -PORTO, ACORES:41.2481:W8.68139 -PORTO SANTO, MADEIRA:33.0733:W16.3497 -LISBON, PORTUGAL:38.7811:W9.13583 -SAO JORGE ISLAND, ACORES:38.6653:W28.1756 -SINTRA, ACORES:38.8308:W9.33944 -TANCOS, ACORES:39.475:W8.36444 -VILA REAL, ACORES:41.2742:W7.72028 -VISEU, ACORES:40.7253:W7.88889 -BANJA LUKA, BOSNIA-HERCEGOVINA:44.9414:17.2975 -MOSTAR, BOSNIA-HERCEGOVINA:43.2828:17.8458 -SARAJEVO, BOSNIA-HERCEGOVINA:43.8244:18.3314 -ARAD, ROMANIA:46.1764:21.2619 -BACAU, ROMANIA:46.5219:26.9103 -BAIA MARE, ROMANIA:47.6583:23.47 -BUCHAREST, ROMANIA:44.5031:26.1019 -CONSTANTA, ROMANIA:44.3622:28.4883 -CLUJ-NAPOCA, ROMANIA:46.785:23.6861 -CARANSEBES, ROMANIA:45.42:22.2533 -CRAIOVA, ROMANIA:44.3181:23.8886 -IASI, ROMANIA:47.1789:27.62 -ORADEA, ROMANIA:47.0253:21.9025 -BUCHAREST, ROMANIA:44.5736:26.1033 -SIBIU, ROMANIA:45.7856:24.0911 -SATU MARE, ROMANIA:47.7033:22.8856 -SUCEAVA, ROMANIA:47.6875:26.3539 -TULCEA, ROMANIA:45.0622:28.7142 -TIRGU MURES, ROMANIA:46.4675:24.4125 -TIMISOARA, ROMANIA:45.81:21.3378 -ZURICH AREA, SWITZERLAND:46.6136:7.67778 -LES EPLATURES, SWITZERLAND:47.0836:6.79278 -GENEVA, SWITZERLAND:46.2381:6.10889 -SAANEN, SWITZERLAND:46.4875:7.25083 -SION, SWITZERLAND:46.2194:7.32667 -ALPNACH, SWITZERLAND:46.9439:8.28417 -ULRICHEN, SWITZERLAND:46.5011:8.29556 -DUBENDORF, SWITZERLAND:47.3986:8.64806 -EMMEN, SWITZERLAND:47.0922:8.305 -MOLLIS, SWITZERLAND:47.0786:9.06472 -INTERLAKEN, SWITZERLAND:46.6764:7.87917 -TURTMANN, SWITZERLAND:46.3039:7.71444 -MEIRINGEN, SWITZERLAND:46.7433:8.11 -RARON, SWITZERLAND:46.3036:7.82333 -PAYERNE, SWITZERLAND:46.8431:6.915 -BUOCHS, SWITZERLAND:46.9747:8.39889 -ZURICH, SWITZERLAND:47.3833:8.56667 -LUGANO, SWITZERLAND:46.0042:8.91056 -BERN, SWITZERLAND:46.9139:7.49694 -GRENCHEN, SWITZERLAND:47.1814:7.41694 -ZURICH, SWITZERLAND:47.4647:8.54917 -ALTENRHEIN, SWITZERLAND:47.485:9.56056 -SAMEDAN, SWITZERLAND:46.5325:9.88278 -ANKARA, TURKEY:39.93:32.85:24521 +ABBOTSFORD, CANADA:49.0253:W122.363 +ABDANAN, IRAN:32.9344:47.4833 +ABECHE, CHAD:13.8469:20.8442 +ABERDEEN, UK:57.145278438534575:W2.1125505583496174:185 +ABERDEEN, USA:39.4661:W76.1694 +ABHA, SAUDI ARABIA:18.24:42.6556 +ABIDJAN, IVORY COAST:5.25972:W3.92639 +ABILENE, USA:32.4111:W99.6817 +ABQAIQ, SAUDI ARABIA:25.9114:49.5914 +ABU DHABI, UNITED ARAB EMIRATES:24.2481:54.5475 +ABUJA, NIGERIA:9.00667:7.26306 +ABUMUSA I., IRAN:25.8758:55.0328 +ABU SIMBEL, EGYPT:22.3758:31.6117 +ACAPULCO, MEXICO:16.7567:W99.7533 +ACARIGUA, VENEZUELA:9.55333:W69.2378 +ACCRA, GHANA:5.60278:W0.168056 +ADAK ISLAND, USA:51.8778:W176.646 ADANA, TURKEY:37:35.321333:1945 +ADDIS ABABA, ETHIOPIA:8.97694:38.8 +ADELAIDE, AUSTRALIA:-34.9213:138.6186:500 +ADRAR, ALGERIA:27.8375:W0.186389 AFYON, TURKEY:38.7261:30.6011:1025 -ANTALYA, TURKEY:36.9014:30.7917:1417 -GAZIANTEP, TURKEY:36.9481:37.4792:6819 -ISKENDERUN, TURKEY:36.5733:36.1539:636 -KASTAMONU, TURKEY:41.3139:33.7958:1834 -KONYA, TURKEY:37.9789:32.5617:38873 -MERZIFON, TURKEY:40.8292:35.5219:972 -SAMSUN, TURKEY:41.2764:36.3036:1055 -SIVAS, TURKEY:39.8136:36.9033:2768 -ZONGULDAK, TURKEY:41.5158:32.0997:633 -MALATYA, TURKEY:38.4358:38.0917:1582 -KAYSERI, TURKEY:38.7703:35.4953 -SIVRIHISAR, TURKEY:39.4514:31.3653:2987 -TOKAT, TURKEY:40.305:36.3678:1923 -EREGLI, TURKEY:41.2544:31.415:976 -DENIZLI, TURKEY:37.785:29.7011:798 -NEVSEHIR, TURKEY:38.7717:34.5342:5467 -ISTANBUL, TURKEY:41.05497681583172:28.908688006982437:5343 -AYDIN, TURKEY:37.8158:27.8861:1582 -BURSA, TURKEY:40.2317:29.0092:1036 -BANDIRMA, TURKEY:40.3178:27.9775:713 -CANAKKALE, TURKEY:40.1375:26.4267:1016 -ESKISEHIR, TURKEY:39.7839:30.5819:2678 -IZMIR, TURKEY:38.2922:27.1569:11891 -ISPARTA, TURKEY:37.7853:30.5817:1049 -KUTAHYA, TURKEY:39.4267:30.0164:2484 -USAK, TURKEY:38.6811:29.4714:1309 -YALOVA, TURKEY:40.6833:29.3786:167 -YENISEHIR, TURKEY:40.255:29.5625:786 -DALAMAN, TURKEY:36.7131:28.7925:616 +AGADEZ, NIGER:16.9647:7.99694 +AGADIR, MOROCCO:30.3811:W9.54611 +AGANA, MARIANA ISLANDS:13.4839:144.797 +AGARTALA, INDIA:23.8889:91.2408 +AGATTI ISLAND, INDIA:10.8233:72.1756 +AGEN, FRANCE:44.1747:0.590556 +AGGENEYS, SOUTH AFRICA:-29.2817:18.8136 +AGHAJARI, IRAN:30.7453:49.6761 +AGRA, INDIA:27.1556:77.9608 +AGRINION, GREECE:38.6019:21.3511:162:84 +AGUADILLA, PUERTO RICO:18.4947:W67.1294 +AGUASCALIENTES, MEXICO:21.7053:W102.318 +AHMEDABAD, INDIA:23.0747:72.6317 +AHWAZ, IRAN:31.3372:48.7619 +AIN OUSSERA, ALGERIA:35.5253:2.87861 +AIOUN EL ATROUSS, MAURITANIA:16.7111:W9.63778 +AIRE-SUR-L'ADOUR, FRANCE:43.7094:W0.245278 +AITUTAKI, COOK ISLANDS:-18.825:W159.774 +AIX-LES-MILLES, FRANCE:43.5053:5.36778 +AIZWAL, INDIA:23.7461:92.8031 +AJACCIO, CORSE ISL.:41.9236:8.80278 AKHISAR, TURKEY:38.8086:27.8336:93 +AKITA, JAPAN:39.6156:140.219 +AKOLA, INDIA:20.6989:77.0564 +AKRON, USA:41.0375:W81.4667 +AKROTIRI, CYPRUS:34.5903:32.9878 +AKTYUBINSK, RUSSIA:50.245:57.2033:400 +AKURE, NIGERIA:7.24667:5.30083 +AKUREYRI, ICELAND:65.6597:W18.0725 +AL-AHSA, SAUDI ARABIA:25.2842:49.4861 +AL AIN, UNITED ARAB EMIRATES:24.2617:55.6092 +ALAMOGORDO, USA:32.8525:W106.106 +ALBACETE, SPAIN:38.9483:W1.86333 +ALBANY, USA:42.7481:W73.8028 +ALBENGA, ITALY:44.0506:8.12722:36 +ALBERT, FRANCE:49.9714:2.69972 +ALBI, FRANCE:43.9136:2.11306 +ALBURY, AUSTRALIA:-36.0678:146.958:64 +ALDAN, RUSSIA:34.8042:W96.6711:33 +ALEPPO, SYRIA:36.1806:37.2242 +ALERT, CANADA:82.5178:W62.2806 +ALES, FRANCE:44.0694:4.14194 +ALESUND, NORWAY:62.5603:6.11 +ALEXANDER BAY, SOUTH AFRICA:-28.575:16.5333 +ALEXANDRA, NEW ZEALAND:-45.2117:169.373 +ALEXANDRIA, EGYPT:31.1839:29.9489 +ALEXANDRIA, GREECE:35.50580479245094:24.024996747143533:61 +ALEXANDRIA, USA:31.3272:W92.5483 +ALEXANDROUPOLIS, GREECE:40.8558:25.9561:642 +ALGHERO, ITALY:40.6319:8.29056:224 +ALGIER, ALGERIA:36.6908:3.21528 +AL HAMRA, UNITED ARAB EMIRATES:24.0736:52.4633 +AL HOCIEMA, MOROCCO:35.1769:W3.83944 +ALICANTE, SPAIN:38.2819:W0.558056 +ALICE SPRINGS, AUSTRALIA:-23.8069:133.902:148 +ALICE TOWN, BAHAMAS:25.6997:W79.2644 +ALICE, USA:27.7408:W98.0269 +AL-JOUF, SAUDI ARABIA:29.785:40.1 +ALLAHABAD, INDIA:25.4389:81.7342 +ALLENDORF, GERMANY:51.0353:8.67889:41 +ALMA-ATA, KAZAKHSTAN:43.3519:77.0403 +ALMEIRIM, BRAZIL:-0.889722:W52.6022 +ALMERIA, SPAIN:36.8439:W2.37 +ALOFI, NEW ZEALAND:-19.08:W169.926 +ALONG, INDIA:28.1747:94.8019 +ALOR SETAR, MALAYSIA:6.19389:100.403 +ALPHONSE, SEYCHELLES:-7.00472:52.7261 +ALPINOPOLIS, BRAZIL:-20.7028:W46.335 +ALPNACH, SWITZERLAND:46.9439:8.28417 +ALTA FLORESTA, BRAZIL:-9.86583:W56.1061 +ALTAMIRA, BRAZIL:-3.25389:W52.2539 +ALTA, NORWAY:69.9769:23.3661 +ALTENBURG, GERMANY:50.9817:12.5061:45 +ALTENRHEIN, SWITZERLAND:47.485:9.56056 +ALTOONA, USA:40.2964:W78.32 +ALTO PALENA, CHILE:-43.6153:W71.8069 +ALTUS, USA:34.6669:W99.2667 +ALVERCA, ACORES:38.8831:W9.03 +AMAMI, JAPAN:28.4306:129.712 +AMAPA, BRAZIL:2.07667:W50.8622 +AMARILLO, USA:35.2192:W101.706 +AMBATO, ECUADOR:-1.2125:W78.5742 +AMBERIEU, FRANCE:45.9872:5.32833:24 +AMBERLEY, AUSTRALIA:-10.9508:142.459:26 +AMBILOBE, MADAGASCAR:-13.1883:48.9878 +AMBON, INDONESIA:-3.70889:128.09 +AMIENS, FRANCE:49.8714:2.38639 +AMILCAR CABRAL, CAPE VERDE ISLANDS:16.7414:W22.9494 +AMMAN, JORDAN:31.7225:35.9931 +AMPAMPAMENA, MADAGASCAR:-13.4847:48.6325 +AMRITSAR, INDIA:31.7075:74.7992 +AMSELE, SWEDEN:64.5706:19.3142 +AMSTERDAM, NETHERLANDS:52.3086:4.76389:219 +ANAA, FRENCH POLYNESIA:-17.3525:W145.51 +ANACO, VENEZUELA:9.42917:W64.4708 +ANADYR, RUSSIA:64.7347:177.741:20 +ANALALAVA, MADAGASCAR:-14.6294:47.7636 +ANCENIS, FRANCE:47.4081:W1.1775 +ANCHORAGE, USA:61.2511:W149.806:1415 +ANCUD, CHILE:-41.9061:W73.7967 +ANDAHUAYLAS, PERU:-13.7064:W73.3503 +ANDAPA, MADAGASCAR:-14.6517:49.6206 +ANDERSEN, MARIANA ISLANDS:13.5839:144.93 +ANDERSEN, USA:34.495:W82.7092 +ANDERSTORP, SWEDEN:57.2642:13.5992 +ANDOAS, PERU:-2.795:W76.4661 +ANDOYA, NORWAY:69.2925:16.1442 +ANDROS TOWN, BAHAMAS:24.6978:W77.7956 +ANGELHOLM, SWEDEN:56.2958:12.8469 +ANGERS, FRANCE:47.4972:W0.5725:42 +ANGOULEME, FRANCE:45.7292:0.221389 +ANJOUAN, COMOROS ISLANDS:-12.1317:44.4303 +ANKARA, TURKEY:39.93:32.85:24521 +ANKLAM, GERMANY:53.8325:13.6689:56 +ANNABA, ALGERIA:36.8222:7.80917 +ANNECY, FRANCE:45.9292:6.09861 +ANNEMASSE, FRANCE:46.1919:6.26833 +ANNETTE ISLAND, USA:55.0422:W131.572 +ANNISTON, USA:33.5881:W85.8581 +ANTALAHA, MADAGASCAR:-14.9992:50.32 +ANTALYA, TURKEY:36.9014:30.7917:1417 +ANTANANARIVO, MADAGASCAR:-18.7967:47.4786 +ANTA, PERU:-9.34722:W77.5983 +ANTIGUA, LEEWARD ISLANDS:17.1367:W61.7925 +ANTOFAGASTA, CHILE:-23.4444:W70.445 +ANTSIRANANA, MADAGASCAR:-12.3492:49.2917 +ANTSOHIHY, MADAGASCAR:-14.8986:47.9939 +ANTWERP, BELGIUM:51.19:4.46278 +ANURADHAPURA, SRI LANKA:8.30111:80.4281 +AOMORI, JAPAN:40.7344:140.691 +APOLO, BOLIVIA:-14.7394:W68.4108 +AQABA, JORDAN:29.6114:35.0181 +ARACAJU, BRAZIL:-10.9839:W37.0703 +ARACATUBA, BRAZIL:-21.1411:W50.4247 +ARAD, ROMANIA:46.1764:21.2619 +ARAK, IRAN:34.1403:49.8483 +ARARACUARA, BRAZIL:-21.8119:W48.1328 +ARAR, SAUDI ARABIA:30.9072:41.1383 +ARAUCA, COLOMBIA:7.06861:W70.7367 +ARBOGA, SWEDEN:59.3864:15.9239 +ARCACHON, FRANCE:44.5964:W1.11083 +ARDABIL, IRAN:38.3261:48.4242 +ARDMORE, NEW ZEALAND:-37.0297:174.973 +ARDMORE, USA:34.3031:W97.0194 +AREQUIPA, PERU:-16.3408:W71.5831 +ARICA, CHILE:-18.3483:W70.3386 +ARMENIA, COLOMBIA:4.536307:W75.6723751 +ARMSTRONG, CANADA:50.2903:W88.9097 +ARNOT POWER STATION, SOUTH AFRICA:-25.9436:29.81 +ARNSBERG, GERMANY:51.4833:7.89917:193 +ARTHUR'S TOWN, BAHAMAS:24.6292:W75.6736 +ARTIGAS, URUGUAY:-30.4006:W56.5078 +ARUSHA, TANZANIA:-3.36778:36.6333 +ARUTUA, TUAMOTU ISLANDS:-15.2481:W146.616 +ARVIDSJAUR, SWEDEN:65.59:19.2817 +ARVIKA, SWEDEN:59.6758:12.6392 +ARZANA, UNITED ARAB EMIRATES:24.7803:52.5597 +ASAHIKAWA, JAPAN:43.6708:142.447 +ASCENSION DE GUARAYOS, BOLIVIA:-15.7192:W63.0922 +ASHIYA, JAPAN:33.8831:130.653 +ASSIS, BRAZIL:-22.6383:W50.4558 +ASTRAKHAN, RUSSIA:46.2833:48.0061:208 +ASUNCION, PARAGUAY:-25.2397:W57.5189 +ASWAN, EGYPT:23.9642:32.8197 +ASYUT, EGYPT:27.0464:31.0119 +ATALAYA, PERU:-10.7289:W73.7664 +ATAR, MAURITANIA:20.5067:W13.0431 +ATHENS, GREECE:37.9839412:23.7283052:38 +ATIKOKAN, CANADA:48.7739:W91.6386 +ATLANTA, USA:33.6403:W84.4269 +ATLANTIC CITY, USA:39.4575:W74.5769 +ATSUGI, JAPAN:35.4544:139.45 +AUBENAS-VALS-LANAS, FRANCE:44.5442:4.37194 +AUCH, FRANCE:43.6878:0.601667 +AUCKLAND, NEW ZEALAND:-37.0081:174.792 +AUGSBURG, GERMANY:48.425:10.9317:146 +AUGUSTA, USA:44.3206:W69.7972:783 +AURANGABAD, INDIA:19.8631:75.3981 +AURILLAC, FRANCE:44.8914:2.42194 +AUSTIN, USA:30.1944:W97.6697:772 +AUTUN, FRANCE:46.9664:4.26028:61 +AUXERRE, FRANCE:47.85:3.49694 +AVARUA, COOK ISLANDS:-21.2025:W159.806 +AVIANO, ITALY:46.0317:12.5964:113 +AVIGNON, FRANCE:43.9072:4.90167 +AVILES, SPAIN:43.5633:W6.03444 +AVORD, FRANCE:47.0533:2.6325 +AYACUCHO, PERU:-13.1547:W74.2042 +AYDIN, TURKEY:37.8158:27.8861:1582 +AYOLAS, PARAGUAY:-27.3706:W56.8539 +AZENTKILYSZABADJA, HUNGARY:47.0778:17.9683:22 +BABELTHUAP, PALAU ISLAND:7.3675:134.544 +BACAU, ROMANIA:46.5219:26.9103 +BACOLOD, PHILIPPINES:10.6425:122.929 +BADAJOZ, SPAIN:38.8911:W6.82111 +BADEN-BADEN, GERMANY:48.7911:8.18694:140 +BAFOUSSAM, CAMEROON:5.53694:10.3542 +BAGABAG, PHILIPPINES:16.6189:121.252 +BAGAN, MYANMAR:21.1819:94.9292 +BAGE, BRAZIL:-31.3903:W54.1122 +BAGHDAD, IRAQ:33.2619:44.2339 +BAGHDOGRA, INDIA:26.6814:88.3281 +BAGNOLE-DE-L'ORNE, FRANCE:48.5458:W0.387222 +BAGOTVILLE, CANADA:48.3306:W70.9964 +BAGUIO, PHILIPPINES:16.375:120.619 +BAHAR DAR, ETHIOPIA:11.6081:37.3214 +BAHAWALPURE, PAKISTAN:29.3469:71.7114 +BAHIA BLANCA, ARGENTINA:-38.7247:W62.1692 +BAHIAS DEHUATULCO, MEXICO:15.7747:W96.2608 +BAHIA SOLANO, COLOMBIA:6.20278:W77.3944 +BAHRAIN, BAHRAIN:25.9183:50.5906 +BAIA MARE, ROMANIA:47.6583:23.47 +BAIDOA, SOMALIA:3.09861:43.6242 +BAIE COMEAU, CANADA:49.1322:W68.2072 +BAKEL, SENEGAL:14.8472:W12.4681 +BAKER LAKE, CANADA:64.2989:W96.0778 +BAKERSFIELD, USA:35.4333:W119.057 +BAKHTARAN, IRAN:34.3464:47.1564 +BAKSHI KA TALAB, INDIA:26.9883:80.8931 +BAKU, RUSSIA:40.4675:50.0467:2140 +BALIKPAPAN, INDONESIA:-1.26806:116.894 +BALKHASH, RUSSIA:46.8942:75.0047 +BALMACEDA, CHILE:-45.9158:W71.6892 +BALTIMORE, USA:39.1753:W76.6683 +BALURGHAT, INDIA:25.2608:88.7956 +BAMAKO, MALI:12.5333:W7.94972 +BAMBARI, CENTRAL AFRICAN REP.:5.84694:20.6494 +BAMBERG, GERMANY:49.9203:10.9142 +BAMENDA, CAMEROON:6.03917:10.1225 +BAM, IRAN:29.0839:58.4503 +BANAK, NORWAY:70.0686:24.9733 +BANANERA, GUATEMALA:15.4733:W88.8372 +BANDA ACEH, INDONESIA:5.52333:95.4203 +BANDAR ABBAS, IRAN:27.1581:56.1722 +BANDAR LENGEH, IRAN:26.5317:54.8217 +BANDAR MAHSHAHR, IRAN:30.5561:49.1517 +BANDIRMA, TURKEY:40.3178:27.9775:713 +BANDOUNDU, ZAIRE:-3.31111:17.3817 +BANDUNG, INDONESIA:-6.90056:107.576 +BANE HOUEI SAY, LAOS:20.2572:100.437 +BANGALORE, INDIA:12.9497:77.6681 +BANGASSOU, CENTRAL AFRICAN REP.:4.78444:22.7814 +BANGKOK, THAILAND:13.9125:100.607 +BANGOR, USA:44.8072:W68.8281 +BANGUI, CENTRAL AFRICAN REP.:4.39833:18.5186 +BANJA LUKA, BOSNIA-HERCEGOVINA:44.9414:17.2975 +BANJARMASIN, INDONESIA:-3.44194:114.761 +BANJUL, GAMBIA:13.3378:W16.6519 +BANMAW, MYANMAR:24.2689:97.2461 +BANNU, PAKISTAN:32.9719:70.5247 +BARACOA PLAYA, CUBA:20.3656:W74.5064 +BARAHONA, DOMINICAN REPUBLIC:18.2514:W71.1203 +BARBACENA, BRAZIL:-21.2669:W43.7608 +BARCELONA, SPAIN:41.40016140348051:2.159836908862287 +BARCELONA, VENEZUELA:10.1069:W64.6889 +BARDUFOSS, NORWAY:69.0556:18.5403 +BAREILLY, INDIA:28.4222:79.4497 +BARI, ITALY:41.1383:16.7606:117 +BARINAS, VENEZUELA:8.61944:W70.2206 +BARKING SANDS, USA:22.0217:W159.787 +BARNAUL, RUSSIA:53.3639:83.5419:321 +BARODA, INDIA:22.3361:73.2261 +BARQUISIMETO, VENEZUELA:10.0425:W69.3583 +BARRA DEL COLORADO, COSTA RICA:10.7686:W83.5858 +BARRA DO GARCAS, BRAZIL:-15.8611:W52.3889 +BARRANCABERMEJA, COLOMBIA:7.02417:W73.8067 +BARRANQUILLA, COLOMBIA:10.8894:W74.7806 +BARROW ISLAND, ENGLAND:54.1297:W3.25611 +BARROW, USA:71.2853:W156.766 +BARTER ISLAND, USA:70.1339:W143.577 +BARTH, GERMANY:54.3381:12.71:40 +BASCO, PHILIPPINES:20.4517:121.98 +BASRAH, IRAQ:30.5486:47.6622 +BASSE TERRE, ST. KITTS & NEVIS:17.3111:W62.7186 +BASTAK, IRAN:27.2125:54.3183 +BASTIA, CORSE ISL.:42.5539:9.48333 +BATA, EQUATORIAL GUINEA:1.90528:9.80556 +BATAM, INDONESIA:1.12083:104.119 +BATMAN, TURKEY:37.9289:41.1161:563 +BATON ROUGE, USA:30.5331:W91.1494:199 +BATOURI, CAMEROON:4.47306:14.3636 +BATSFJORD, NORWAY:70.6:29.6925 +BATTAMBANG, CAMBODIA:13.0956:103.224 +BATTICALOA, SRI LANKA:7.70556:81.6778 +BATU LICIN, INDONESIA:-3.4125:115.996 +BAUCAU, WEST TIMOR:-8.48528:126.399 +BAUDETTE, USA:48.7283:W94.6122 +BAUMHOLDER, GERMANY:49.65:7.3 +BAURU, BRAZIL:-22.345:W49.0536 +BAUTZEN, GERMANY:51.1933:14.5197:66 +BAYAMO, CUBA:20.3964:W76.6214 +BAYREUTH, GERMANY:49.9842:11.6383:66 +BEAUFORT, USA:32.4772:W80.7231 +BEAUMONT, USA:29.9508:W94.0206 +BEAUNE, FRANCE:47.0058:4.89333 +BEAUVAIS, FRANCE:49.4544:2.11278 +BEAUVECHAIN, BELGIUM:50.7586:4.76833 +BEDFORD, USA:42.4697:W71.2889 +BEER-SHEBA, ISRAEL:31.2869:34.7228 +BEIJING, CHINA:40.08:116.584:16808 +BEIRA, MOZAMBIQUE:-19.7964:34.9075 +BEIRUT, LEBANON:33.8133:35.4886 +BEJAJA, ALGERIA:36.7119:5.06972 +BEJA (MADEIRA), ACORES:38.0789:W7.93222 +BELEM, BRAZIL:-1.37917:W48.4761 +BELFAST, NORTH IRELAND:54.57925:W5.93892:115 +BELGAUM, INDIA:15.8592:74.6181 +BELIZE CITY, BELIZE:17.5389:W88.3081 +BELLEVILLE, USA:38.545:W89.835 +BELLINGHAM, USA:48.7925:W122.537 +BELO HORIZONTE, BRAZIL:-19.6336:W43.9686 +BENGHAZI, LIBYA:32.0967:20.2694 +BENGKULU, INDONESIA:-3.86389:102.341 +BENGUELA, ANGOLA:-12.6089:13.4036 +BENIN, NIGERIA:6.31722:5.59944 +BENSON, ENGLAND:51.6161:W1.09556:9 +BEOGRAD, YUGOSLAVIA:44.8183:20.3089 +BEQUIA, ST.VINCENT/GRENADINES:12.9883:W61.2619 +BERBERA, SOMALIA:10.3892:44.9408 +BERBERATI, CENTRAL AFRICAN REP.:4.22139:15.7861 +BERGAMO, ITALY:45.6739:9.70417:40 +BERGEN, NORWAY:60.2933:5.21806 +BERGERAC, FRANCE:44.8534568:0.487531 +BERLIN, GERMANY:52.5170365:13.3888599:891 +BERMEJO, BOLIVIA:-22.7694:W64.315 +BERN, SWITZERLAND:46.9139:7.49694 +BERTRIX, BELGIUM:49.8872:5.22861 +BESALAMPY, MADAGASCAR:-16.7419:44.4814 +BESANCON-LA-VEZE, FRANCE:47.2083:6.08306:5 +BETHEL, USA:60.7797:W161.838 +BETHLEHEM, SOUTH AFRICA:-28.2483:28.3361 +BETTLES, USA:66.9153:W151.528 +BEZIERS, FRANCE:43.3239:3.35556 +BHAIRAWA, NEPAL:27.5056:83.4161 +BHATINDA, INDIA:30.27:74.7556 +BHAUNAGAR, INDIA:21.7519:72.185 +BHIWANI, INDIA:28.8375:76.1775 +BHOPAL, INDIA:23.285:77.3372 +BHUBANESWAR, INDIA:20.2442:85.8178 +BHUJ, INDIA:23.2878:69.67 +BIAK, INDONESIA:-1.19:136.108 +BIARRITZ-BAYONNE, FRANCE:43.4683:W1.52306 +BIBERACH, GERMANY:48.1108:9.76278:72 +BIDAR, INDIA:17.9078:77.4858 +BIG MOUNTAIN, USA:59.3617:W155.257 +BIKANER, INDIA:28.0725:73.2067 +BILASPUR, INDIA:21.9886:82.1111 +BILBAO, SPAIN:43.3008:W2.91056 +BILOXI, USA:30.4108:W88.9236 +BIMA, INDONESIA:-8.53944:118.687 +BINTULU, MALAYSIA:3.17222:113.044 +BIRAO, CENTRAL AFRICAN REP.:10.2361:22.7172 +BIRATNAGAR, NEPAL:26.4833:87.2636 +BIRJAND, IRAN:32.8956:59.2756 +BIRMINGHAM, ENGLAND:52.4796992:W1.9026911:267 +BIRMINGHAM, USA:33.5628:W86.7533 +BIR MOGHREIN, MAURITANIA:25.2367:W11.5886 +BISHA, SAUDI ARABIA:19.9839:42.6228 +BISHKEK, RUSSIA:43.0617:74.4783:169 +BISHO, SOUTH AFRICA:-32.8969:27.2789 +BISKRA, ALGERIA:34.7931:5.73806 +BISSAU, GUINEA BISSAU:11.8947:W15.6536 +BITAM, GABON:2.07556:11.4931 +BIZERTE, TUNISIA:37.2453:9.79139 +BJORKVIK, SWEDEN:58.7908:16.5708 +BLACKBUSHE, ENGLAND:51.3239:W0.8475 +BLACKPOOL, ENGLAND:53.7717:W3.02861:34 +BLAGOVESCHENSK, RUSSIA:50.4217:127.41:321 +BLANTYRE, MALAWI:-15.6789:34.9739 +BLIDA, ALGERIA:36.5036:2.81417 +BLOEMFONTEIN, SOUTH AFRICA:-29.0328:26.1575 +BLUEFIELDS, NICARAGUA:11.9889:W83.7742 +BLYTHEVILLE, USA:35.9642:W89.9433 +BOA VISTA, BRAZIL:2.84611:W60.69 +BOA VISTA, CAPE VERDE ISLANDS:16.1367:W22.8889 +BOBO-DIOULASSO, BURKINA FASO:11.16:W4.33083 +BOCA RATON, USA:26.3783:W80.1075 +BOCAS DEL TORO, PANAMA:9.34083:W82.2508 +BODOE, NORWAY:67.2689:14.3633 +BOGOTA, COLOMBIA:4.6533326:W74.083652 +BOISE, USA:43.5642:W116.223:206 +BOJNORD, IRAN:37.4931:57.3006 +BOKARO, INDIA:23.6433:86.1486 +BOLIVAR, ARGENTINA:-36.1869:W61.0761 +BOLOGNA, ITALY:44.5342:11.2903:140 +BOLZANO, ITALY:46.4606:11.3261:52 +BOMBAY, INDIA:19.0886:72.8678 +BOM JESUS DA LAPA, BRAZIL:-13.2619:W43.4081 +BOMOEN, NORWAY:60.6386:6.50139 +BORA BORA, FRENCH POLYNESIA:-16.4442:W151.751 +BORDEAUX, FRANCE:44.841225:W0.5800364 +BORDJ EL AMRI, TUNISIA:36.7211:9.94306 +BORKUM, GERMANY:53.5953:6.70917:30 +BORLANGE, SWEDEN:60.4219:15.515 +BOSCOMBE DOWN, ENGLAND:51.1519:W1.74722 +BOSTON, USA:42.3642:W71.005:232 +BOTHAVILLE, SOUTH AFRICA:-27.3667:26.6292 +BOUAKE, IVORY COAST:7.73861:W5.07361 +BOUAR, CENTRAL AFRICAN REP.:5.95806:15.6375 +BOUFARIK, ALGERIA:36.5458:2.87611 +BOURGAS, BULGARIA:42.5689:27.5139 +BOURGES, FRANCE:47.0581:2.37028 +BOURG, FRANCE:46.2008:5.29194 +BOURNEMOUTH, ENGLAND:50.7423141383493:W1.8999454858886722:46 +BOU SAADA, ALGERIA:35.3325:4.20639 +BOU SFER, ALGERIA:35.7353:W0.805278 +BRADSHAW FIELD, USA:19.76:W155.554 +BRAGA, ACORES:41.5869:W8.445 +BRAGANCA, ACORES:41.8683:W6.71194 +BRAKPAN, SOUTH AFRICA:-26.2386:28.3017 +BRANDON, CANADA:49.91:W99.9519 +BRASILIA, BRAZIL:-15.8625:W47.9125 +BRASSCHAAT, BELGIUM:51.3333:4.5 +BRATISLAVA, SLOVAKIA:48.17:17.2125 +BRATSK, RUSSIA:56.3708:101.699:262 +BRAUNSCHWEIG, GERMANY:52.3192:10.5561:192 +BRAZZAVILLE, CONGO:-4.25167:15.2528 +BREMEN, GERMANY:53.0758196:8.8071646:326 +BREMERHAVEN, GERMANY:53.5033:8.57333:93 +BREST, FRANCE:48.4478:W4.41833:49 +BRIA, CENTRAL AFRICAN REP.:6.52806:21.9889 +BRIDGETOWN, BARBADOS:13.0744:W59.4922 +BRIENNE-LE CHATEAU, FRANCE:48.4297:4.48111 +BRINDISI, ITALY:40.6575:17.9469:333 +BRISBANE, AUSTRALIA:-27.467778:153.028056:1000 +BRISTOL, ENGLAND:51.4538022:W2.5972985:110 +BRIVE, FRANCE:45.1508:1.46917 +BRONNOYSUND, NORWAY:65.4592:12.2136 +BROUGH, ENGLAND:53.7194:W0.566111 +BROUGHTON ISLAND, CANADA:67.5458:W64.0314 +BROWNSVILLE, USA:25.9067:W97.4258 +BROYE-LES-PESMES, FRANCE:47.335:5.51361:25 +BRUECKEBURG, GERMANY:52.2783:9.08194 +BRUEGGEN, GERMANY:51.1997:6.13194 +BRUNEI, BRUNEI:4.94556:114.928 +BRUSSELS, BELGIUM:50.9022:4.49861 +BRYANSK, RUSSIA:53.2142:34.1764:186 +BRYAN, USA:30.7156:W96.3311 +BUATTIFEL, LIBYA:28.7953:22.0808 +BUCARAMANGA, COLOMBIA:7.12639:W73.1847 +BUCHAREST, ROMANIA:44.5031:26.1019 +BUCKLEY, USA:39.7017:W104.751 +BUDAPEST, HUNGARY:47.4367:19.2556:525 +BUECHEL, GERMANY:50.1736:7.06333 +BUENAVENTURA, COLOMBIA:3.81944:W76.9897 +BUENOS AIRES, ARGENTINA:-34.5006:W58.6042 +BUENOS AIRES, COSTA RICA:9.16694:W83.3325 +BUFFALO NARROWS, CANADA:55.8419:W108.418 +BUFFALO, USA:42.9403:W78.7319 +BUJUMBURA, BURUNDI:-3.32389:29.3183 +BUKAVU/KAVUMU, ZAIRE:-2.30889:28.8086 +BUKHARA, RUSSIA:39.775:64.48:143 +BULAWAYO, ZIMBABWE:-20.0172:28.6178 +BULLOCKS HARBOUR, BAHAMAS:25.7381:W77.84 +BUNIA, ZAIRE:1.56556:30.2208 +BUOCHS, SWITZERLAND:46.9747:8.39889 +BURBANK, USA:34.2006:W118.359 +BURGOS, SPAIN:42.3575:W3.62056 +BURLINGTON, USA:44.4717:W73.1531 +BURSA, TURKEY:40.2317:29.0092:1036 +BURWASH, CANADA:61.3711:W139.041 +BUSAN, KOREA:35.1708:129.129 +BUSHEHR, IRAN:28.9447:50.8344 +BUSH FIELD, USA:33.3697:W81.9644 +BUTA ZEGA, ZAIRE:2.81778:24.7939 +BUTTERWORTH, MALAYSIA:5.46583:100.391 +BYHOLMA, SWEDEN:56.785:13.6017 +CABALLOCOCHA, PERU:-3.91667:W70.5081 +CABINDA, ANGOLA:-5.59694:12.1883 +CABO ROJO, DOMINICAN REPUBLIC:17.9289:W71.6447 +CABO VELAS, COSTA RICA:10.3556:W85.8528 +CAEN, FRANCE:49.1733:W0.45:25 +CAGLIARI, ITALY:39.2514:9.05417:85 +CAHORS, FRANCE:44.3511:1.47528 +CAIBARIEN, CUBA:22.5064:W79.4697 +CAICARA DE ORINOCO, VENEZUELA:7.62583:W66.1647 +CAIRNS, AUSTRALIA:-16.8858:145.755:1687 +CAIRO, EGYPT:30.06:31.248E:3085 +CAJAMARCA, PERU:-7.13639:W78.49 +CALABAR, NIGERIA:4.97583:8.34694 +CALABOZO, VENEZUELA:8.92444:W67.4169 +CALAMA, CHILE:-22.4986:W68.9042 +CALBAYOG, PHILIPPINES:12.0725:124.545 +CALCUTTA, INDIA:22.6547:88.4467 +CALEXICO, USA:32.6694:W115.513 +CALGARY, CANADA:51.1139:W114.02 +CALI, COLOMBIA:3.54306:W76.3814 +CALICUT, INDIA:11.1356:75.9547 +CALVI, CORSE ISL.:42.5306:8.79306 +CALVINIA, SOUTH AFRICA:-31.5003:19.7258 +CAMAGUEY, CUBA:21.4203:W77.8475 +CAMAXILO, ANGOLA:-8.37361:18.9236 +CAMBRAI, FRANCE:50.1414:3.26306:18 +CAMBRIDGE BAY, CANADA:69.1081:W105.138 +CAMBRIDGE, ENGLAND:52.205:0.175:42 +CAMDEN, AUSTRALIA:-34.0403:150.687:201 +CAMERI, ITALY:45.5294:8.66917:39 +CAMIRI, BOLIVIA:-20.0069:W63.5275 +CAMPBELL RIVER, CANADA:49.9508:W125.271 +CAMPECHE, MEXICO:19.8167:W90.5003 +CAMPINAS, BRAZIL:-23.0081:W47.1344 +CAMPO GRANDE, BRAZIL:-20.4686:W54.6725 +CAMPOS, BRAZIL:-21.6983:W41.3017 +CAMP SPRINGS, USA:38.8106:W76.8669 +CANAIMA, VENEZUELA:6.23194:W62.8542 +CANAKKALE, TURKEY:40.1375:26.4267:1016 +CANBERRA, AUSTRALIA:-35.3083:149.194:814 +CANCUN, MEXICO:21.0364:W86.8769 +CANEFIELD, DOMINICA:15.3367:W61.3919 +CANNES, FRANCE:43.5419:6.95333 +CANOUAN ISLAND, ST.VINCENT/GRENADINES:12.6989:W61.3422 +CANTON ISLAND, PHOENIX ISL.:-2.76667:W0 +CAPE DORSET, CANADA:64.23:W76.5267 +CAPE LISBURNE, USA:68.875:W166.11 +CAPE NEWENHAM, USA:58.6472:W162.061 +CAPE ROMANZOF, USA:61.7803:W166.039 +CAPE TOWN, SOUTH AFRICA:-33.9647:18.6017 +CAP HAITIEN, HAITI:19.7325:W72.1947 +CAP SKIRING, SENEGAL:12.41:W16.7461 +CARACAS, VENEZUELA:10.2861:W66.8158 +CARANSEBES, ROMANIA:45.42:22.2533 +CARAVELAS, BRAZIL:-17.6522:W39.2531 +CARCASSONNE, FRANCE:43.2158:2.30611 +CARDIFF, WALES:51.4816546:W3.1791934:140 +CAREPA, COLOMBIA:7.81194:W76.7164 +CARIBOU, USA:46.8714:W68.0178 +CARLETONVILLE, SOUTH AFRICA:-26.3694:27.35 +CARLISLE, ENGLAND:54.89144:W2.93536 +CARLSBAD, USA:32.3372:W104.263 +CARNICOBAR, INDIA:9.15306:92.8192 +CAROLINA, BRAZIL:-7.32028:W47.4586 +CARORA, VENEZUELA:10.1756:W70.065 +CARPENTRAS, FRANCE:44.0297:5.07806 +CARRIZAL, VENEZUELA:9.37194:W66.9228 +CARTAGENA, COLOMBIA:10.4422:W75.5128 +CARTAGO, COLOMBIA:4.75806:W75.9556 +CARUPANO, VENEZUELA:10.66:W63.2617 +CASABLANCA, MOROCCO:33.3678:W7.58778 +CASCAIS, ACORES:38.725:W9.355 +CASCAVEL, BRAZIL:-25.0003:W53.5006 +CASLAV, CZECH REPUBLIC:49.9394:15.3817 +CASPER, USA:42.9078:W106.464 +CASSAGNES-BEGHONES, FRANCE:44.1775:2.515 +CASTILHO, BRAZIL:-20.7769:W51.5647 +CASTLEGAR, CANADA:49.2964:W117.632 +CASTRES, FRANCE:43.5561:2.28917 +CASTRIES, ST. LUCIA ISLAND:14.02:W60.9928 +CASTRO, CHILE:-42.4908:W73.7744 +CATAMARCA, ARGENTINA:-28.5956:W65.7517 +CATANIA, ITALY:37.4667:15.0661:182 +CATARMAN, PHILIPPINES:12.5022:124.636 +CAUAYAN, PHILIPPINES:16.9297:121.753 +CAXIAS DO SUL, BRAZIL:-29.1969:W51.1875 +CAYENNE, FRENCH GUYANA:4.81972:W52.3603 +CAYMAN BARAC, CAYMAN ISLANDS:19.6867:W79.8828 +CAYO, CUBA:21.6161:W81.5456 +CAZAUX, FRANCE:44.5333:W1.125 +CAZOMBO, ANGOLA:-11.8936:22.9161 +CEBU, PHILIPPINES:7.16472:124.21 +CEDAR CITY, USA:37.7008:W113.099 +CELAYA, MEXICO:20.5458:W100.886 +CELLE, GERMANY:52.5911:10.0219 +CEPIN, CROATIA:45.5419:18.6361 +CERKLJE, SLOVENIA:45.8997:15.53 +CESKE BUDEJOVICE, CZECH REPUBLIC:48.9461:14.4272 +CHACHAPOYAS, PERU:-6.20167:W77.8558 +CHAH BAHAR, IRAN:25.4433:60.3819 +CHAITEN, CHILE:-42.9331:W72.6992 +CHALON, FRANCE:46.8258:4.8175 +CHALONS, FRANCE:48.7758:4.18444 +CHALSGROVE, ENGLAND:51.6761:W1.08083 +CHAMBERY, FRANCE:45.5608:5.97556 +CHANDIGARH, INDIA:30.6733:76.7883 +CHANDRAGARHI, NEPAL:26.5706:88.0794 +CHANGCHA, CHINA:28.1889:113.219:11819 +CHANGUINOLA, PANAMA:9.45861:W82.5167 +CHANIA, GREECE:35.5317:24.1494:12 +CHAPACURA, BOLIVIA:-16.99:W65.1414 +CHAPECO, BRAZIL:-27.1342:W52.6564 +CHAPLEAU, CANADA:47.82:W83.3464 +CHARANA, BOLIVIA:-17.5939:W69.4342 +CHARLEROI, BELGIUM:50.4592:4.45361 +CHARLESTON, USA:32.8986:W80.0403 +CHARLESTOWN, ST. KITTS & NEVIS:17.2056:W62.5897 +CHARLEVILLE, FRANCE:49.7839:4.64694:31 +CHARLIEVILLE, AUSTRALIA:-26.4133:146.262:687 +CHARLO, CANADA:47.9906:W66.3314 +CHARLOTTETOWN, CANADA:46.29:W63.1211 +CHARLOTTE, USA:35.2139:W80.9431:771 +CHATEAUDUN, FRANCE:48.0581:1.37639 +CHATEAUROUX, FRANCE:46.8619:1.73056 +CHATHAM, CANADA:47.0078:W65.4492 +CHATHAM ISLAND, NEW ZEALAND:-43.81:W176.457 +CHATTANOOGA, USA:35.0353:W85.2036 +CHEJU, KOREA:33.5111:126.493 +CHELYABINSK, RUSSIA:55.3033:61.5067:530 +CHENGDU, CHINA:30.5783:103.947:14378 +CHERBOURG, FRANCE:49.65:W1.47028:14 +CHERRY POINT, USA:34.9025:W76.8808 +CHETUMAL, MEXICO:18.5044:W88.3267 +CHEYENNE, USA:41.1556:W104.812 +CHIANG RAI, THAILAND:19.4972:100.286 +CHIAYI, TAIWAN:23.4617:120.393 +CHICAGO, USA:41.85574666473487:W87.76552685185547:589 +CHICLAYO, PERU:-6.78722:W79.8281 +CHICOPEE FALLS, USA:42.1981:W72.5342 +CHICO, USA:39.7953:W121.858 +CHIEVRES, BELGIUM:50.5758:3.83083 +CHIHUAHUA, MEXICO:28.7028:W105.964 +CHILDRESS, USA:34.4336:W100.288 +CHILE CHICO, CHILE:-46.5817:W71.6975 +CHILECITO, ARGENTINA:-29.2239:W67.4389 +CHILLAN, CHILE:-36.5828:W72.0317 +CHILLIWACK, CANADA:49.1528:W121.939 +CHILPANCINGO, MEXICO:17.5736:W99.5142 +CHIMBOTE, PERU:-9.15083:W78.5236 +CHIMKENT, RUSSIA:42.3644:69.4792:1170 +CHIMOIO, MOZAMBIQUE:-19.1511:33.4289 +CHINA, USA:35.6878:W117.691 +CHINGCHUAKANG, TAIWAN:24.2644:120.621 +CHINHAE, KOREA:35.1411:128.696 +CHINMEN, TAIWAN:24.4319:118.359 +CHIREDZI, ZIMBABWE:-21.0081:31.5783 +CHITA, RUSSIA:52.0261:113.305:534 +CHITATO, ANGOLA:-7.3575:20.8036 +CHITOSE, JAPAN:42.7944:141.666 +CHITRAL, PAKISTAN:35.8864:71.8006 +CHITTAGONG, BANGLADESH:22.2494:91.8131 +CHIVENOR, ENGLAND:51.0869:W4.15028 +CHOLET, FRANCE:47.0819:W0.876944:87 +CHONGJU, KOREA:36.7164:127.499 +CHOSMADAL, ARGENTINA:-37.4444:W70.2222 +CHOTEBOR, CZECH REPUBLIC:49.6844:15.6761 +CHRISTCHURCH, NEW ZEALAND:-43.4892:172.532 +CHUB CAY, BAHAMAS:25.4169:W77.8808 +CHUNCHON, KOREA:37.8836:127.718 +CHUNG, TAIWAN:24.1861:120.654 +CHURCHILL, CANADA:58.7392:W94.065 +CHUUK, MICRONESIA:7.46167:151.843 +CIEGO DE AVILA, CUBA:22.0269:W78.7894 +CIENFUEGOS, CUBA:22.15:W80.4142 +CILACAP, INDONESIA:-7.645:109.034 +CINCINNATI, USA:39.0461:W84.6619 +CIREBON, INDONESIA:-6.75583:108.539 +CIRO ALEGRIA, PERU:-4.6075:W77.9408 +CIUDAD ACUNA, BRAZIL:29.3319:W100.981 +CIUDAD BOLIVAR, VENEZUELA:8.12194:W63.5369 +CIUDAD DEL CARMEN, MEXICO:18.6536:W91.7989 +CIUDAD JUAREZ, MEXICO:31.6361:W106.429 +CIUDAD MANTE, MEXICO:22.7403:W99.0181 +CIUDAD OBREGON, MEXICO:27.3925:W109.833 +CIUDAD VICTORIA, MEXICO:23.7039:W98.9564 +CLARENCE BAIN, BAHAMAS:24.2875:W77.6844 +CLEAR MEWS, USA:64.3011:W149.12 +CLEMENTIA, ECUADOR:-1.70611:W79.3789 +CLERMONT FERRAND, FRANCE:45.7864:3.16917 +CLEVELAND, USA:41.4117:W81.8497:201 +CLOVIS, USA:34.3825:W103.322 +CLUJ-NAPOCA, ROMANIA:46.785:23.6861 +CLYDE RIVER, CANADA:70.4861:W68.5167 +COBAN, GUATEMALA:15.4689:W90.4067 +COBIJA, BOLIVIA:-11.0403:W68.7828 +COBURG, GERMANY:50.2625:10.9958:48 +COCA, ECUADOR:-0.462778:W76.9864 +COCHABAMBA, BOLIVIA:-17.4208:W66.1769 +COCHSTEDT, GERMANY:51.8558:11.4181:29 +COCKBURN TOWN, BAHAMAS:24.0631:W74.5239 +COCO BEACH, USA:28.2347:W80.61 +COCO ISLAND, MYANMAR:14.1414:93.3683 +COETIVY, SEYCHELLES:-7.16417:56.2639 +COFF'S HARBOUR, AUSTRALIA:-30.3206:153.116:505 +COGNAC, FRANCE:45.693165:W0.325018 +COIMBA, ACORES:40.1572:W8.47 +COIMBATORE, INDIA:11.0314:77.0439 +COLD BAY, USA:55.2056:W162.724 +COLD LAKE, CANADA:54.405:W110.279 +COLEMAN, GERMANY:49.5633:8.46333 +COLIMA, MEXICO:19.2769:W103.577 +COLLEGE STATION, USA:30.5883:W96.3636 +COLLIQUE, PERU:-11.9286:W77.0611 +COLMAR, FRANCE:47.9219:7.39944:66 +COLOGNE, GERMANY:50.8658:7.1425:405 +COLOMBIA, USA:33.9386:W81.1194 +COLOMBO, SRI LANKA:6.82194:79.8861 +COLOMBUS, USA:33.6439:W88.4436 +COLONEL HILL, BAHAMAS:22.7456:W74.1822 +COLONEL SUAREZ, ARGENTINA:-37.4461:W61.8892 +COLONIA, URUGUAY:-34.4564:W57.7706 +COLORADO SPRINGS, USA:38.8056:W104.7 +COLTISHALL, ENGLAND:52.7547:1.35722:7 +COLUMBIA, USA:38.8181:W92.2194 +COLUMBUS, USA:39.9978:W82.8917:563 +COMODORO RIVADAVIA, ARGENTINA:-45.785:W67.4656 +COMOX, CANADA:49.7108:W124.887 +CONCEICAO DO ARAGUAIA, BRAZIL:-8.34833:W49.3014 +CONCEPCION, CHILE:-36.7725:W73.0631 +CONCEPTION, BOLIVIA:-16.1433:W62.0258 +CONCEPTION, PARAGUAY:-23.4417:W57.4269 +CONCORDIA, ARGENTINA:-31.2969:W57.9964 +CONDOTO, COLOMBIA:5.07167:W76.6764 +CONGO TOWN, BAHAMAS:24.1586:W77.5897 +CONINGSBY, ENGLAND:53.0928:W0.165833:14 +CONROE, USA:30.3517:W95.4144 +CONSTANTA, ROMANIA:44.3622:28.4883 +CONSTANTINE, ALGERIA:36.2767:6.62389 +CONSTANZA, DOMINICAN REPUBLIC:18.9081:W70.72 +COOCH-BEHAR, INDIA:26.3303:89.4669 +COOLANGATTA, AUSTRALIA:-28.1644:153.505:2 +COPENHAGEN, DENMARK:55.6178:12.6558:88 +COPIAPO, CHILE:-27.2961:W70.4136 +COPPERMINE, CANADA:67.8167:W115.144 +CORAL HARBOUR, CANADA:50.3319:W115.874 +CORDOBA, ARGENTINA:-31.3236:W64.2078 +CORDOBA, SPAIN:37.8419:W4.84861 +CORDOVA, USA:60.4917:W145.477 +CORK, IRELAND:51.8428:W8.49194:187 CORLU, TURKEY:41.1381:27.9189:899 -ESKISSEHIR, TURKEY:39.8097:30.5194:2678 +CORONATION, CANADA:52.075:W111.445 +CORO, VENEZUELA:11.4147:W69.6808 +COROZAL, COLOMBIA:9.3325:W75.2856 +CORPUS CHRISTI, USA:27.7703:W97.5011:416 +CORRIENTES, ARGENTINA:-27.4453:W58.7617 +CORTE, FRANCE:42.2936:9.19306 +CORUMBA, BRAZIL:-19.0117:W57.6728 +COTO 47, COSTA RICA:8.60111:W82.97 +COTONOU, BENIN:6.35722:2.38417 +COTTBUS, GERMANY:51.8894:14.5317:164 +COTULLA, USA:28.4581:W99.22 +COULOMMIERS, FRANCE:48.8375:3.01611:10 +COVENTRY, ENGLAND:52.4081812:W1.510477:81 +COVILHA, ACORES:40.2647:W7.47972 +COX'S BAZAR, BANGLADESH:21.4519:91.9642 +COYHAIQUE, CHILE:-45.5942:W72.1061 +COZUMEL, MEXICO:20.5222:W86.9256 +CRAIOVA, ROMANIA:44.3181:23.8886 +CRANBROOK, CANADA:49.6103:W115.782 +CREIL, FRANCE:49.2533:2.51889:11 +CRESTVIEW, USA:30.7786:W86.5219 +CRICIUMA, BRAZIL:-28.7256:W49.4247 +CROTONE, ITALY:38.9972:17.08:179 +CRUIZIRO DO SUL, BRAZIL:-7.6:W72.7694 +CUAMBA, MOZAMBIQUE:-14.82:36.5319 +CUBI NAS, PHILIPPINES:6.10556:125.236 +CUCUTA, COLOMBIA:7.9275:W72.5114 +CUDDAPAH, INDIA:14.5097:78.7728 +CUENCA, ECUADOR:-2.88944:W78.9842 +CUERNAVACA, MEXICO:18.835:W99.2619 +CUERS, FRANCE:43.2478:6.12667:50 +CUFAR, GUINEA BISSAU:11.2881:W15.1806 +CUIABA, BRAZIL:-15.6528:W56.1167 +CULDROSE, ENGLAND:50.0858:W5.25556 +CULIACAN, MEXICO:24.7644:W107.474 +CUMANA, VENEZUELA:10.4503:W64.1303 +CUNAGUA, CUBA:22.4611:W78.3286 +CURICO, CHILE:-34.9669:W71.2169 +CURITIBA, BRAZIL:-25.405:W49.2319 +CURUZU CUATIA, ARGENTINA:-29.7706:W57.9789 +CUTBANK, USA:48.6083:W112.376 +CUTRALCO, ARGENTINA:-38.9394:W69.2644 +CUZCO, PERU:-13.5356:W71.9386 +DAET, PHILIPPINES:14.1292:122.98 +DAGLI, NORWAY:60.4167:8.51389 +DAHRA, LIBYA:29.4697:17.9311 +DAKAR, SENEGAL:14.7394:W17.49 +DALAMAN, TURKEY:36.7131:28.7925:616 +DALBANDIN, PAKISTAN:28.8747:64.4044 +DALHART, USA:36.0225:W102.547 +DALIAN, CHINA:38.9656:121.538:13237 +DALLAS-FORT WORTH, USA:32.8964:W97.0375 +DALLAS, USA:32.8469:W96.8517:882 +DALOA, IVORY COAST:6.7925:W6.47306 +DAMAN, INDIA:20.435:72.8436 +DAMASCUS, SYRIA:33.4114:36.5156 +DAMAZIN, SUDAN:11.7858:34.3364 +DAMMAM, SAUDI ARABIA:26.4711:49.7978 +DANANG, VIET NAM:16.0439:108.199 +DARAB, IRAN:28.7214:54.4411 +DARAN, IRAN:32.9294:51.5608 +DAR ES SALAAM, TANZANIA:-6.87806:39.2025 +DASHT-E-NAZ, IRAN:36.6436:53.1883 +DAS ISLAND, UNITED ARAB EMIRATES:25.1461:52.8736 +DAUPHIN, CANADA:51.1008:W100.052 +DAVID, PANAMA:8.39083:W82.4347 +DAWEI, MYANMAR:14.0981:98.2017 +DAWSON, CANADA:64.0431:W139.128 +DAWSON CREEK, CANADA:55.7417:W120.182 +DAYTON, USA:39.8261:W84.0483 +DE AAR, SOUTH AFRICA:-30.6367:23.92 +DEASE LAKE, CANADA:58.4222:W130.032:8 +DEAUVILLE, FRANCE:49.3653:0.154167:3 +DEBRECEN, HUNGARY:47.4889:21.6153:461 +DEBRE ZEIT, ETHIOPIA:8.71556:39.0081 +DECIMOMANNU, ITALY:39.3542:8.97222:28 +DEER LAKE, CANADA:49.2108:W57.3914:73 +DEESA, INDIA:24.2678:72.2053:20 +DEHRA DUN, INDIA:30.1872:78.18:196 +DEIRE ZOR, SYRIA:35.2853:40.1758:10 +DEL BAJIO, MEXICO:20.9933:W101.481 +DELHI, INDIA:28.5664:77.1031:1484 +DEL RIO, USA:29.3594:W100.778:53 +DELTA JUNCTION, USA:63.9944:W145.721 +DENIZLI, TURKEY:37.785:29.7011:798 +DENPASAR, INDONESIA:-8.74833:115.167 +DENVER, USA:39.8583:W104.667:396 +DEPARIZO, INDIA:27.9889:94.2233:275 +DERA GHAZI KHAN, PAKISTAN:29.9611:70.4856:70 +DERA ISMAIL KHAN, PAKISTAN:31.9092:70.8964:20 +DERBY, ENGLAND:52.91652:W1.47241:64 +DERIDDER, USA:30.8317:W93.3397:24 +DES MOINES, USA:41.5339:W93.6625:234 +DESSAU, GERMANY:51.8319:12.1858:182 +DETROIT, USA:42.2122:W83.3533:370 +DEZFUL, IRAN:32.4344:48.3975:20 +DHAHRAN, SAUDI ARABIA:26.2653:50.1519:100 +DHAKA, BANGLADESH:23.7783:90.3825:306 +DHANBAD, INDIA:23.8339:86.425:275 +DIEPHOLZ, GERMANY:52.5853:8.34056:104 +DIFFA, NIGER:13.3728:12.6267:2 +DIJON, FRANCE:47.2689:5.09:40 +DILLINGHAM, USA:21.5792:W158.21:93 +DIRE DAWA, ETHIOPIA:9.625:41.8542:1213 +DIYABAKIR, TURKEY:37.8936:40.2006:500 +DJANET, ALGERIA:24.2925:9.45222:10 +DJERBA, TUNISIA:33.875:10.7753:514 +DNEPROPETROVSK, RUSSIA:48.3567:35.1017:409 +DODOMA, TANZANIA:-6.17028:35.7525:2576 +DOHA, QATAR:25.2611:51.565:132 +DOLE, FRANCE:47.0389:5.42722:38 +DOLORES, ARGENTINA:-36.3203:W57.7217:1980 +DOMINICA, DOMINICA:15.5469:W61.3:751 +DONAUESCHINGEN, GERMANY:47.9731:8.52222:104 +DONEGAL, IRELAND:55.0442:W8.34083:2 +DONETSK, RUSSIA:48.0733:37.74:358 +DONGOLA, SUDAN:19.1536:30.43:2 +DORTMUND, GERMANY:51.5142273:7.4652789:280 +DOTHAN, USA:31.3211:W85.4494:233 +DOUALA, CAMEROON:4.00583:9.71944:210 +DOUGLAS, USA:31.4689:W109.604:25 +DOVER, USA:39.13:W75.4664:62 +DRESDEN, GERMANY:51.0493286:13.7381437:328 +DRYDEN, CANADA:49.8317:W92.7442:65 +DUBAI, UNITED ARAB EMIRATES:25.2547:55.3642:4114 +DUBBO, AUSTRALIA:-32.2167:148.575:182 +DUBENDORF, SWITZERLAND:47.3986:8.64806:13 +DUBLIN, IRELAND:53.4211:W6.27:117 +DUBROVNIK, CROATIA:42.5611:18.2681:21 +DUESSELDORF, GERMANY:51.2894:6.76667:217 +DULUTH, USA:46.8419:W92.1936:207 +DUMAGUETE, PHILIPPINES:9.33417:123.302:33 +DUMAI, INDONESIA:1.60917:101.433:2039 +DUNDEE, SOUTH AFRICA:-28.1825:30.2244:48 +DUNDEE, UK:56.47786741082439:W2.9823779577636778:60 +DUNDIGUL, INDIA:17.6292:78.4033:46 +DUNEDIN, NEW ZEALAND:-45.9281:170.198:900 +DURANGO, MEXICO:24.1242:W104.528:100 +DURANGO, USA:37.1514:W107.754:44 +DURAZNO, URUGUAY:-33.3586:W56.4992:1 +DURBAN, SOUTH AFRICA:-29.7706:31.0583 +DUSHANBE, RUSSIA:38.5433:68.825:185 +DWAALBOOM, SOUTH AFRICA:-24.805:26.8317 +DZAOUDZI, MAYOTTE ISLAND:-12.8047:45.2811 +DZHEZKAZGAN, RUSSIA:47.7083:67.7333 +EAGLE PASS, USA:28.7:W100.479 +EARLTON, CANADA:47.695:W79.8489 +EASTER ISLAND, CHILE:-27.1647:W109.422 +EAST LONDON, SOUTH AFRICA:-33.0356:27.8258 +ECH-CHELIFF, ALGERIA:36.2125:1.33167 +EDINBURGH, AUSTRALIA:-34.7025:138.621:18 +EDINBURGH, UK:55.945672242712185:W3.1995328895019592:125 +EDMONTON, CANADA:53.3097:W113.58 +EDSON, CANADA:53.5789:W116.465 +EDWARDS AFB, USA:34.9053:W117.884 +EGELSBACH, GERMANY:49.9608:8.64361:14 +EGGEBECK, GERMANY:54.6247:9.34139 +EGGENFELDEN, GERMANY:48.3961:12.7236:44 +EGILSSTADIR, ICELAND:65.2833:W14.4014 +EINDHOVEN, NETHERLANDS:51.45:5.37444:88 +EISENACH, GERMANY:50.9928:10.4725:104 +EISENHUETTENSTADT, GERMANY:52.1972:14.5856:63 +EL ARISH, EGYPT:31.0733:33.8358 +ELAT, ISRAEL:29.5611:34.96 ELAZIG, TURKEY:38.6067:39.2914:2211 -DIYABAKIR, TURKEY:37.8936:40.2006 +EL-BAHA, SAUDI ARABIA:20.2961:41.6342 +EL BANCO, COLOMBIA:9.04528:W73.9747 +EL BEIDA, LIBYA:32.7886:21.9642 +EL BOLSON, ARGENTINA:-41.9431:W71.5322 +EL BORMA, TUNISIA:31.7042:9.25444 +EL CARMEN, COSTA RICA:10.2019:W83.4719 +EL CENTRO, USA:32.8292:W115.672 +EL DORADO, USA:33.2208:W92.8131 +EL DORADO, VENEZUELA:6.715:W61.6389 +ELDORET, KENYA:0.404167:35.2381 +ELEFSIS, GREECE:38.0636:23.5558:18 +EL FASHER, SUDAN:13.615:25.3247 +EL GOLEA, ALGERIA:30.5711:2.85944 +EL-GORA, EGYPT:31.0689:34.1292 +ELIZABETH CITY, USA:36.2606:W76.1744 +ELKINS, USA:38.8894:W79.8569 +ELLISRAS, SOUTH AFRICA:-23.7261:27.6875 +EL MAITEN, ARGENTINA:-42.0306:W71.1697 +EL OBEID, SUDAN:13.1531:30.2325 +ELORZA, VENEZUELA:7.05972:W69.4967 +EL PALOMAR, ARGENTINA:-34.6097:W58.6125 +EL PASO, USA:31.8494:W106.38:661 +EL-TOR, EGYPT:28.2089:33.6453 +EL-YOPAL, COLOMBIA:5.31889:W72.3839 +EMAM SHAHR, IRAN:36.4236:55.1058 +EMDEN, GERMANY:53.3911:7.22722:112 +EMMABODA, SWEDEN:56.6106:15.6047 +EMMEN, SWITZERLAND:47.0922:8.305 +ENDE, INDONESIA:-8.84889:121.662 +ENID, USA:36.3397:W97.9161 +ENIWETOK ISLAND, MARSHALL ISLANDS:11.3408:162.328 +ENNISKILLEN, ENGLAND:54.3989:W7.65167 +ENONTEKIO, FINLAND:68.3625:23.4242 +ENSCHEDE, NETHERLANDS:52.27:6.87417:142 +ENSENADA, MEXICO:31.7953:W116.602 +ENTEBBE, UGANDA:0.0422222:32.4433 +ENUGU, NIGERIA:6.47417:7.56194 +EPINAL, FRANCE:48.3247:6.06972:59 +ERDING, GERMANY:48.3222:11.9486 +EREGLI, TURKEY:41.2544:31.415:976 +ERFURT, GERMANY:50.98:10.9581:269 +ERMELO, SOUTH AFRICA:-26.4953:29.98 +ER-RACHIDIA, MOROCCO:31.9489:W4.40056 ERZINCAN, TURKEY:39.71:39.5261:89 ERZURUM, TURKEY:39.9564:41.17 -KARS, TURKEY:40.5622:43.115:1804 -SANLIURFA, TURKEY:37.0919:38.8461:3668 -VAN, TURKEY:38.4681:43.3322:1938 -BATMAN, TURKEY:37.9289:41.1161:563 -MUS, TURKEY:38.7544:41.6611:2604 -SIIRT, TURKEY:37.9786:41.8403:284 -SALTSY, MOLDOVA:47.8378:27.7811 -KICHINAU FIR/ACC/COM, MOLDOVA:46.9278:28.9314 -OHRID, FORMER MACEDONIA:41.1797:20.7422 -SKOPJE, FORMER MACEDONIA:41.9614:21.6214 -GIBRALTAR, GIBRALTAR:36.1508:W5.34944 -BEOGRAD, YUGOSLAVIA:44.8183:20.3089 -PODGORICA, YUGOSLAVIA:42.3592:19.2517 -PRISTINA, YUGOSLAVIA:42.5728:21.0358 -TIVAT, YUGOSLAVIA:42.4044:18.7231 -VRSAC, YUGOSLAVIA:45.1467:21.3097 -BRATISLAVA, SLOVAKIA:48.17:17.2125 -KOSICE, SLOVAKIA:48.6631:21.2411 -MALACKY, SLOVAKIA:48.4019:17.1183 -PIESTANY, SLOVAKIA:48.625:17.8283 -SLIAC, SLOVAKIA:48.6378:19.1339 -TRENCIN, SLOVAKIA:48.865:17.9922 -POPRAD, SLOVAKIA:49.0733:20.2408 -ZILINA, SLOVAKIA:49.2317:18.6136 -NORTH CAICOS, TURKS & CAICOS I.:21.9172:W71.9394 -PROVIDENCIALES, TURKS & CAICOS I.:21.7736:W72.2658 -SOUTH CAICOS, TURKS & CAICOS I.:21.5156:W71.5283 -SAMANA, DOMINICAN REPUBLIC:19.1986:W69.43 -BARAHONA, DOMINICAN REPUBLIC:18.2514:W71.1203 -CABO ROJO, DOMINICAN REPUBLIC:17.9289:W71.6447 -CONSTANZA, DOMINICAN REPUBLIC:18.9081:W70.72 -SANTO DOMINGO, DOMINICAN REPUBLIC:18.4711:W69.9689 -LA ROMANA, DOMINICAN REPUBLIC:18.4519:W68.9117 -PUNTA CANA, DOMINICAN REPUBLIC:18.5672:W68.3633 -PUERTO PLATA, DOMINICAN REPUBLIC:19.7572:W70.5697 -SANTO DOMINGO, DOMINICAN REPUBLIC:18.4294:W69.6686 -SAN ISIDORO, DOMINICAN REPUBLIC:18.5036:W69.7617 -SANTIAGO, DOMINICAN REPUBLIC:19.4092:W70.6164 -BANANERA, GUATEMALA:15.4733:W88.8372 -COBAN, GUATEMALA:15.4689:W90.4067 -GUATEMALA CITY, GUATEMALA:14.5831:W90.5275 -PUERTO BARRIOS, GUATEMALA:15.7308:W88.5836 -POPTUN, GUATEMALA:16.3261:W89.4169 -QUEZALTENANGO, GUATEMALA:14.8653:W91.5019 -RETALHULEU, ARGENTINA:14.5208:W91.6972 -SAN JOSE, GUATEMALA:13.9361:W90.8358 -ISLAS DEL CISNE, HONDURAS:17.4072:W83.9325 -LA CEIBA, HONDURAS:15.7422:W86.8533 -SAN PEDRO SULA, HONDURAS:15.4525:W87.9233 -GUANAJA, HONDURAS:16.4453:W85.9064 -PUERTO LEMPIRA, HONDURAS:15.2608:W83.7814 -ROATAN, HONDURAS:16.3167:W86.5225 -TELA, HONDURAS:15.7758:W87.4756 -TEGUCIGALPA, HONDURAS:14.0608:W87.2169 -TRUJILLO, HONDURAS:15.9267:W85.9381 -OCHO RIOS, JAMAICA:18.4042:W76.9689 -KINGSTON, JAMAICA:17.9356:W76.7875 -MONTEGO BAY, JAMAICA:18.5036:W77.9133 -PORT ANTONIO, JAMAICA:18.1986:W76.5344 -KINGSTON, JAMAICA:17.9883:W76.8236 -ACAPULCO, MEXICO:16.7567:W99.7533 -MONTERREY, MEXICO:25.8656:W100.237 -AGUASCALIENTES, MEXICO:21.7053:W102.318 -BAHIAS DEHUATULCO, MEXICO:15.7747:W96.2608 -CUERNAVACA, MEXICO:18.835:W99.2619 -CIUDAD ACUNA, BRAZIL:29.3319:W100.981 -CIUDAD DEL CARMEN, MEXICO:18.6536:W91.7989 -NUEVO CASAS GRANDES, MEXICO:30.3972:W107.875 -CHILPANCINGO, MEXICO:17.5736:W99.5142 -CULIACAN, MEXICO:24.7644:W107.474 -CHETUMAL, MEXICO:18.5044:W88.3267 -CIUDAD OBREGON, MEXICO:27.3925:W109.833 -CAMPECHE, MEXICO:19.8167:W90.5003 -CIUDAD JUAREZ, MEXICO:31.6361:W106.429 -CHIHUAHUA, MEXICO:28.7028:W105.964 -CIUDAD VICTORIA, MEXICO:23.7039:W98.9564 -CELAYA, MEXICO:20.5458:W100.886 -COZUMEL, MEXICO:20.5222:W86.9256 -CIUDAD MANTE, MEXICO:22.7403:W99.0181 -DURANGO, MEXICO:24.1242:W104.528 -TEPIC, MEXICO:21.4194:W104.843 -ENSENADA, MEXICO:31.7953:W116.602 -GUADALAJARA, MEXICO:20.5217:W103.311 -GUAYMAS, MEXICO:27.9689:W110.925 -TEHUACAN, MEXICO:18.4969:W97.4197 -HERMOSILLO, MEXICO:29.0958:W111.048 -COLIMA, MEXICO:19.2769:W103.577 -ISLA MUJERES, MEXICO:21.245:W86.7397 -SALTILLO, MEXICO:25.5494:W100.929 -IZTEPEC, MEXICO:16.4492:W95.0936 -JALAPA, MEXICO:19.475:W96.7975 -LAZARD CARDENAS, MEXICO:18.0017:W102.22 -LOS MOCHIS, MEXICO:25.685:W109.081 -DEL BAJIO, MEXICO:20.9933:W101.481 -LA PAZ, MEXICO:24.0725:W110.362 -LORETO, MEXICO:25.9892:W111.348 -MATAMOROS, MEXICO:25.7697:W97.5253 -MERIDA, MEXICO:20.9369:W89.6575 -MEXICALI, MEXICO:32.6306:W115.241 -MORELIA, MEXICO:19.8497:W101.025 -MINATITLAN, MEXICO:18.1033:W94.5806 -MONCLOVA, MEXICO:26.9556:W101.47 -MEXICO CITY, MEXICO:19.4361:W99.0719 -MONTERREY, MEXICO:25.7783:W100.107 -MAZATLAN, MEXICO:23.1611:W106.266 -NOGALES, MEXICO:31.2258:W110.976 -NUEVO LAREDO, MEXICO:27.4439:W99.5703 -OAXACA, MEXICO:16.9997:W96.7264 -POZA RICO, MEXICO:20.6025:W97.4608 -PUEBLA, MEXICO:19.1581:W98.3714 -PACHUCA, MEXICO:20.0772:W98.7822 -PUNTA PENASCO, MEXICO:31.3517:W113.526 -PIEDRAS NEGRAS, MEXICO:28.6272:W100.535 -URUAPAN, MEXICO:19.3967:W102.039 -PUERTO VALLARTA, MEXICO:20.68:W105.254 -PUERTO ESCONDIDO, MEXICO:15.8767:W97.0889 -QUERETARO, MEXICO:20.6239:W100.369 -REYNOSA, MEXICO:26.0089:W98.2283 -SAN JOSE DEL CABO, MEXICO:23.1517:W109.721 -SAN FILIPE, MEXICO:30.93:W114.809 -SAN LUIS POTOSI, MEXICO:22.2542:W100.931 -TLAXCALA, MEXICO:19.5364:W98.1733 -TORREON, MEXICO:25.5681:W103.411 -TUXTLA GUTIERREZ, MEXICO:16.7694:W93.3414 -TIJUANA, MEXICO:32.5408:W116.97 -TAMPICO, MEXICO:22.2964:W97.8658 -TAMUIN, MEXICO:22.0381:W98.8064 -TOLUCA, MEXICO:19.3369:W99.5658 -TAPACHULA, MEXICO:14.7942:W92.37 -TUXPAN, MEXICO:19.5983:W103.372 -CANCUN, MEXICO:21.0364:W86.8769 -VILLAHERMOSA, MEXICO:17.9969:W92.8172 -VERA CRUZ, MEXICO:19.1453:W96.1869 -ZACATECAS, MEXICO:22.8969:W102.687 -ZIHUATANEJO, MEXICO:17.6014:W101.46 -ZAMORA, MEXICO:20.045:W102.276 -MANZANILLO, MEXICO:19.1447:W104.559 -ZAPOPAN, MEXICO:20.7558:W103.465 -BLUEFIELDS, NICARAGUA:11.9889:W83.7742 -LOS BRASILES, NICARAGUA:12.1894:W86.3539 -LEON, NICARAGUA:12.4278:W86.9022 -MANAGUA, NICARAGUA:12.1411:W86.1681 -PUERTO CABEZAS, NICARAGUA:14.0469:W83.3867 -BOCAS DEL TORO, PANAMA:9.34083:W82.2508 -CHANGUINOLA, PANAMA:9.45861:W82.5167 -DAVID, PANAMA:8.39083:W82.4347 -HOWARD, PANAMA:8.91444:W79.5994 -JAQUE, PANAMA:7.51722:W78.1567 -LA PALMA, PANAMA:8.40667:W78.1417 -PANAMA, PANAMA:8.97333:W79.5556 -SANTIAGO, PANAMA:8.08556:W80.945 -PANAMA CITY, PANAMA:9.07111:W79.3833 -BUENOS AIRES, COSTA RICA:9.16694:W83.3325 -BARRA DEL COLORADO, COSTA RICA:10.7686:W83.5858 -COTO 47, COSTA RICA:8.60111:W82.97 -CABO VELAS, COSTA RICA:10.3556:W85.8528 -EL CARMEN, COSTA RICA:10.2019:W83.4719 +ESFAHAN, IRAN:32.5669:51.6914 +ESKILSTUNA, SWEDEN:59.3508:16.7083 +ESKIMO POINT, CANADA:61.0942:W94.0708 +ESKISEHIR, TURKEY:39.7839:30.5819:2678 +ESPINHO, PORTUGAL:40.9742:W8.64528 +ESQUEL, ARGENTINA:-42.9078:W71.1394 +ESSADOUIRA, MOROCCO:31.4039:W9.68472 +ESSEN, GERMANY:51.4582235:7.0158171:210 +ESTEVAN, CANADA:49.2103:W102.966 +ESTIMA, MOZAMBIQUE:-15.7342:32.7567 +ETAIN, FRANCE:49.2267:5.67194:20 +EURA, FINLAND:61.1161:22.2014 +EUREKA, CANADA:79.9947:W85.8133 +EVENES, NORWAY:68.4911:16.6781 +EVERETT, USA:47.9061:W122.281 +EVORA, ACORES:38.5333:W7.88944 +EVREUX, FRANCE:49.0286:1.21972 +EXETER, ENGLAND:50.7344:W3.41389:28 +EYN-SHEMER, ISRAEL:32.4408:35.0061 +EYN-YAHAV, ISRAEL:30.6231:35.2019 +FAGERNES, NORWAY:61.0111:9.29306 +FAIRBANKS, USA:64.6656:W147.101 +FAIRFIELD, USA:38.2625:W121.927 +FAISALABAD, PAKISTAN:31.365:72.9953 +FAJARDO, PUERTO RICO:18.3089:W65.6617 +FAKARAVA, FRENCH POLYNESIA:-16.0544:W145.657 +FALEOLO, SAMOA:-13.8297:W172.008 +FALKOPING, SWEDEN:58.1697:13.5878 +FALLFORS, SWEDEN:65.1064:20.7606 +FALLON, USA:39.4164:W118.701 +FALMOUTH, USA:41.6583:W70.5214 +FANGATAU, FRENCH POLYNESIA:-15.8197:W140.887 +FARAFANGANA, MADAGASCAR:-22.8053:47.8206 +FARANAH, GUINEA:10.0356:W10.7697 +FARILA, SWEDEN:61.8981:15.7053 +FARMINGTON, USA:36.7411:W108.23 +FARNBOROUGH, ENGLAND:51.2758:W0.776111 +FARO, ACORES:37.0142:W7.96583 +FARO, CANADA:62.2075:W133.376 +FARQUHAR, SEYCHELLES:-10.1094:51.1761 +FASA, IRAN:28.8919:53.7228 +FASSBERG, GERMANY:52.9192:10.1836 +FAYA-LARGEAU, CHAD:17.9169:19.1108 +FAYETTEVILLE, USA:35.1708:W79.0144 +FENGNIN, TAIWAN:22.7567:121.093 +FERNANDO DO NORONHA, BRAZIL:-3.85472:W32.4233 +FEZ, MOROCCO:33.9272:W4.97778 +FIANARANTSOA, MADAGASCAR:-21.4414:47.1117 +FICKSBURG, SOUTH AFRICA:-28.8231:27.9089 +FIGARI, CORSE ISL.:41.5006:9.09778 +FILADELFIA, PARAGUAY:-22.3597:W60.0536 FINCA 10, COSTA RICA:8.91611:W83.5072 FINCA 63, COSTA RICA:8.6525:W83.0653 -GOLFITO, COSTA RICA:8.65389:W83.1819 -GUAPILES, COSTA RICA:10.2172:W83.7947 -LIBERIA, COSTA RICA:10.5931:W85.5442 -LOS CHILES, COSTA RICA:11.0353:W84.7061 -LIMON, COSTA RICA:9.95778:W83.0219 -NOSARA BEACH, COSTA RICA:9.97639:W85.6528 -SAN JOSE, COSTA RICA:9.99361:W84.2086 -PANDORA, COSTA RICA:9.73194:W82.9831 -PALMAR SUR, COSTA RICA:8.95083:W83.4683 -SAN JOSE, COSTA RICA:9.95722:W84.1419 -QUEPOS, COSTA RICA:9.44306:W84.1297 -SANTA CLARA, COSTA RICA:10.2883:W83.7136 -SAN VITO DE JABA, COSTA RICA:8.82611:W82.9589 -SAN SALVADOR, EL SALVADOR:13.4406:W89.0558 -SAN SALVADOR, EL SALVADOR:13.7:W89.12 -CAP HAITIEN, HAITI:19.7325:W72.1947 -PORT-AU-PRINCE, HAITI:18.58:W72.2925 -BARACOA PLAYA, CUBA:20.3656:W74.5064 -BAYAMO, CUBA:20.3964:W76.6214 -CIEGO DE AVILA, CUBA:22.0269:W78.7894 -CAIBARIEN, CUBA:22.5064:W79.4697 -CUNAGUA, CUBA:22.4611:W78.3286 -CIENFUEGOS, CUBA:22.15:W80.4142 -CAYO, CUBA:21.6161:W81.5456 -CAMAGUEY, CUBA:21.4203:W77.8475 -SANTIAGO DE CUBA, CUBA:19.97:W75.8356 -FLORIDA, CUBA:21.4997:W78.2028 -GUANTANAMO, CUBA:19.9064:W75.2069 -GUANTANAMO, CUBA:20.0853:W75.1583 -HAVANA, CUBA:22.9892:W82.4092 -HOLGUIN, CUBA:20.7856:W76.315 -LA COLOMA, CUBA:22.3358:W83.6419 -MANAGUA, CUBA:22.9697:W82.2747 -MARIEL, CUBA:23.0072:W82.7675 -MOA, CUBA:20.6542:W74.9217 -MANZANILLO, CUBA:20.2881:W77.0892 -NICARO, CUBA:20.6886:W75.5314 -NUEVA GERONA, CUBA:21.8347:W82.7839 -BARACOA PLAYA, CUBA:23.0328:W82.5794 -PINAR DEL RIO NORTE, CUBA:22.4211:W83.6775 -SAN ANTONIO DE BANOS, CUBA:22.8714:W82.5092 -SANTA CLARA, CUBA:22.4919:W79.9436 -SAN JULIAN, CUBA:22.0953:W84.1519 -SANTA LUCIA, CUBA:21.5094:W77.0175 -SIGUANEA, CUBA:21.6425:W82.955 -SANCTI SPIRITUS, CUBA:21.9706:W79.4422 -TRINIDAD, CUBA:21.7883:W79.9972 -VARADERO, CUBA:23.0344:W81.4353 -LAS TUNAS, CUBA:20.9878:W76.9358 -CAYMAN BARAC, CAYMAN ISLANDS:19.6867:W79.8828 -GEORGETOWN, CAYMAN ISLANDS:19.2928:W81.3575 -CLARENCE BAIN, BAHAMAS:24.2875:W77.6844 -ANDROS TOWN, BAHAMAS:24.6978:W77.7956 -CONGO TOWN, BAHAMAS:24.1586:W77.5897 -MARSH HARBOR, BAHAMAS:26.5114:W77.0833 -SAN ANDROS, BAHAMAS:25.0536:W78.0489 -SPRING POINT, BAHAMAS:22.4417:W73.9708 -SANDY POINT, BAHAMAS:26.0044:W77.3953 -TREASURE CAY, BAHAMAS:26.7453:W77.3911 -CHUB CAY, BAHAMAS:25.4169:W77.8808 -BULLOCKS HARBOUR, BAHAMAS:25.7381:W77.84 -ALICE TOWN, BAHAMAS:25.6997:W79.2644 -ARTHUR'S TOWN, BAHAMAS:24.6292:W75.6736 -NEW BIGHT, BAHAMAS:24.315:W75.4539 -COLONEL HILL, BAHAMAS:22.7456:W74.1822 -GREAT EXUMA, BAHAMAS:23.5625:W75.8778 -NORTH ELEUTHERA, BAHAMAS:25.4756:W76.6811 -GOVERNOR'S HARBOR, BAHAMAS:25.2844:W76.3308 -NORMAN'S CAY, BAHAMAS:24.5944:W76.8319 -ROCK SOUND, BAHAMAS:24.8917:W76.1775 -STANIEL CAY, BAHAMAS:24.1689:W76.4389 -FREEPORT, BAHAMAS:26.5586:W78.6953 -WEST END, BAHAMAS:26.6861:W78.9775 -MATTHEW TOWN, BAHAMAS:20.975:W73.6667 -DEAD MAN'S CAY, BAHAMAS:23.1789:W75.0933 -STELLA MARIS, BAHAMAS:23.5828:W75.2686 -MAYAGUANA, BAHAMAS:22.3794:W73.0133 -NASSAU, BAHAMAS:25.0389:W77.4661 -DUNCAN TOWN, BAHAMAS:22.1817:W75.7294 -COCKBURN TOWN, BAHAMAS:24.0631:W74.5239 -BELIZE CITY, BELIZE:17.5389:W88.3081 -AITUTAKI, COOK ISLANDS:-18.825:W159.774 -AVARUA, COOK ISLANDS:-21.2025:W159.806 -NANDI, FIJI:-17.7544:177.443 -NAUSORI, FIJI:-18.0431:178.559 -LAMBASA, FIJI:-16.4667:179.34 -TONGATAPU, TONGA:-21.2408:W175.15 -HA'APAI, TONGA:-19.7769:W174.341 -VAVA'U, TONGA:-18.5853:W173.963 -FUNAFUTI, TUVALU ISLAND:-8.51667:179.217 -TARAWA, KIRIBATI:1.38139:173.147 -TABITEUEA NORTH, KIRIBATI:-1.22361:174.776 -ALOFI, NEW ZEALAND:-19.08:W169.926 -WALLIS, WALLIS & FUTUNA:-13.2381:W176.199 -FALEOLO, SAMOA:-13.8297:W172.008 -PAGO PAGO, SAMOA:-14.3308:W170.71 -RURUTU, FRENCH POLYNESIA:-22.4339:W151.361 -TUBUAI, FRENCH POLYNESIA:-23.3653:W149.524 -ANAA, FRENCH POLYNESIA:-17.3525:W145.51 -FANGATAU, FRENCH POLYNESIA:-15.8197:W140.887 -TIKEHAU, FRENCH POLYNESIA:-15.1194:W148.231 -REAO, FRENCH POLYNESIA:-18.4658:W136.439 -FAKARAVA, FRENCH POLYNESIA:-16.0544:W145.657 -MANIHI, FRENCH POLYNESIA:-14.4367:W146.07 -TOTEGEGIE, FRENCH POLYNESIA:-23.0797:W134.89 -KAUKURA ATOLL, TUAMOTU ISLANDS:-15.6633:W146.885 -MAKEMO, FRENCH POLYNESIA:-16.5847:W143.657 -NAPUKA ISLAND, FRENCH POLYNESIA:-14.1767:W141.267 -PUKA PUKA, FRENCH POLYNESIA:-14.8094:W138.813 -TAKAPOTO, FRENCH POLYNESIA:-14.7125:W145.253 -ARUTUA, TUAMOTU ISLANDS:-15.2481:W146.616 -MATAIVA, FRENCH POLYNESIA:-14.8681:W148.717 -TUREIA, FRENCH POLYNESIA:-20.7833:W138.568 -TAKAROA, FRENCH POLYNESIA:-14.4556:W145.024 -NUKU HIVA, FRENCH POLYNESIA:-8.79556:W140.229 -HIVA-OA, FRENCH POLYNESIA:-9.76861:W139.011 -BORA BORA, FRENCH POLYNESIA:-16.4442:W151.751 -RANGIROA, FRENCH POLYNESIA:-14.9542:W147.661 -HUAHINE ISLAND, FRENCH POLYNESIA:-16.6872:W151.022 -MOOREA, FRENCH POLYNESIA:-17.4897:W149.762 -HAO ISLAND, TUAMOTU ISLANDS:-18.0747:W140.946 -MAUPITI, FRENCH POLYNESIA:-16.4264:W152.244 -RAIATEA ISLAND, FRENCH POLYNESIA:-16.7228:W151.466 -MURUROA, FRENCH POLYNESIA:-21.8083:W138.794 -SANTO, VANUATU:-15.5011:167.222 -PORT-VILA, VANUATU:-17.6992:168.32 -KONE, NEW CALEDONIA:-21.0533:164.838 -KOUMAC, NEW CALEDONIA:-20.5461:164.256 -LIFOU, NEW CALEDONIA:-20.7747:167.24 -NOUMEA, NEW CALEDONIA:-22.2581:166.473 -MARE, NEW CALEDONIA:-21.4817:168.037 -TOUHO, NEW CALEDONIA:-20.7911:165.259 -OUVEA, NEW CALEDONIA:-20.6406:166.573 -NOUMEA, NEW CALEDONIA:-22.0144:166.213 -AUCKLAND, NEW ZEALAND:-37.0081:174.792 -TAUPO, NEW ZEALAND:-38.7397:176.084 -ARDMORE, NEW ZEALAND:-37.0297:174.973 -CHRISTCHURCH, NEW ZEALAND:-43.4892:172.532 -CHATHAM ISLAND, NEW ZEALAND:-43.81:W176.457 -DUNEDIN, NEW ZEALAND:-45.9281:170.198 -GISBORNE, NEW ZEALAND:-38.6633:177.978 -GLENTANNER, NEW ZEALAND:-43.9067:170.128 -HOKITIKA, NEW ZEALAND:-42.7136:170.985 -HAMILTON, NEW ZEALAND:-37.8664:175.332 -HASTINGS, NEW ZEALAND:-39.6467:176.767 -KERIKERI, NEW ZEALAND:-35.2628:173.912 -KAITAIA, NEW ZEALAND:-35.07:173.285 -ALEXANDRA, NEW ZEALAND:-45.2117:169.373 -MOUNT COOK, NEW ZEALAND:-43.765:170.133 -MANAPOURI, NEW ZEALAND:-45.5331:167.65 -MASTERTON, NEW ZEALAND:-40.9733:175.634 -NEW PLYMOUTH, NEW ZEALAND:-39.0086:174.179 -NELSON, NEW ZEALAND:-41.2983:173.221 -INVERCARGILL, NEW ZEALAND:-46.4122:168.313 -OHAKEA, NEW ZEALAND:-40.2058:175.388 -OAMARU, NEW ZEALAND:-44.97:171.082 -PALMERSTON NORTH, NEW ZEALAND:-40.3206:175.617 -PARAPARAUMU, NEW ZEALAND:-40.9047:174.989 -QUEENSTOWN INTERNATIONAL, NEW ZEALAND:-45.0211:168.739 -ROTORUA, NEW ZEALAND:-38.1092:176.317 -WAIOURU, NEW ZEALAND:-39.4464:175.658 -STEPHEN'S ISLAND, NEW ZEALAND:-89.9997:0 -TAURANGA, NEW ZEALAND:-37.6719:176.196 -TIMARU, NEW ZEALAND:-44.3028:171.225 -PUKAKI, NEW ZEALAND:-44.235:170.118 -WOODBOURNE, NEW ZEALAND:-41.5183:173.87 -WEYDON, NEW ZEALAND:-77.8833:166.65 -WANAKA, NEW ZEALAND:-44.7253:169.243 -WIGRAM, NEW ZEALAND:-43.5511:172.553 -WHAKATANE, NEW ZEALAND:-37.9206:176.914 -WELLINGTON, NEW ZEALAND:-41.3272:174.805 -WAIROA, NEW ZEALAND:-39.0069:177.407 -WHENUAPAI, NEW ZEALAND:-36.7878:174.63 -WHANGAREI, NEW ZEALAND:-35.7683:174.365 -WESTPORT, NEW ZEALAND:-41.7381:171.581 -WANGANUI, NEW ZEALAND:-39.9622:175.025 -HERAT, AFGHANISTAN:34.2097:62.2278 -JALALABAD, AFGHANISTAN:34.3992:70.4994 -KABUL, AFGHANISTAN:34.5658:69.2122 -KANDAHAR, AFGHANISTAN:31.5058:65.8478 -MAIMAMA, AFGHANISTAN:35.9342:64.7592 -MAZAR-I-SHARIF, AFGHANISTAN:36.7069:67.2092 -SHINDAND, AFGHANISTAN:33.3911:62.2608 -SHEBERGHAN, AFGHANISTAN:36.7503:65.9122 -TALUQAN, AFGHANISTAN:36.775:69.5325 -KUNDUZ, AFGHANISTAN:36.665:68.9108 -BAHRAIN, BAHRAIN:26.2708:50.6336 -BAHRAIN, BAHRAIN:25.9183:50.5906 -ABHA, SAUDI ARABIA:18.24:42.6556 -AL-AHSA, SAUDI ARABIA:25.2842:49.4861 -EL-BAHA, SAUDI ARABIA:20.2961:41.6342 -BISHA, SAUDI ARABIA:19.9839:42.6228 -ABQAIQ, SAUDI ARABIA:25.9114:49.5914 -DAMMAM, SAUDI ARABIA:26.4711:49.7978 -DHAHRAN, SAUDI ARABIA:26.2653:50.1519 -GIZAN, SAUDI ARABIA:16.9011:42.5858 -GASSIM, SAUDI ARABIA:26.3028:43.7744 -GURIAT, SAUDI ARABIA:31.4108:37.2789 -HAIL, SAUDI ARABIA:27.4378:41.6861 -JUBAIL, SAUDI ARABIA:27.0389:49.405 -JEDDAH, SAUDI ARABIA:21.3481:39.1728 -JEDDAH, SAUDI ARABIA:21.6794:39.1564 -KING KHALID MIL.CITY, SAUDI ARABIA:27.9008:45.5281 -MADINAH, SAUDI ARABIA:24.5533:39.705 -NEJRAN, SAUDI ARABIA:17.6114:44.4192 -HAFR AL-BATIN, SAUDI ARABIA:28.335:46.125 -PETROLINE 3, SAUDI ARABIA:25.1744:47.4883 -PETROLINE 6, SAUDI ARABIA:24.7103:44.9644 -PETROLINE 10, SAUDI ARABIA:24.1072:41.0358 -RABIGH, SAUDI ARABIA:22.7025:39.0697 -RAFHA, SAUDI ARABIA:29.6264:43.4906 -RIYADH, SAUDI ARABIA:24.9575:46.6986 -RASH MISHAB, SAUDI ARABIA:28.0794:48.6108 -ARAR, SAUDI ARABIA:30.9072:41.1383 -RAS TANURA, SAUDI ARABIA:26.7231:50.0306 -SHARURAH, SAUDI ARABIA:17.4667:47.1211 -AL-JOUF, SAUDI ARABIA:29.785:40.1 -SULAYEL, SAUDI ARABIA:20.4647:45.6194 -TABUK, SAUDI ARABIA:28.3653:36.6189 -TAIF, SAUDI ARABIA:21.4833:40.5442 -THUMAMAH, SAUDI ARABIA:25.2142:46.6406 -RAS TANAJIB, SAUDI ARABIA:27.8689:48.7683 -TURAIF, SAUDI ARABIA:31.6925:38.7311 -WADI-AL-DAWASIR, SAUDI ARABIA:20.5042:45.1994 -WEJH, SAUDI ARABIA:26.1975:36.4761 -YENBO, SAUDI ARABIA:24.1442:38.0633 -ABADAN, IRAN:30.365:48.2331 -DEZFUL, IRAN:32.4344:48.3975 -AGHAJARI, IRAN:30.7453:49.6761 -GACHSARAN, IRAN:30.3375:50.8278 -MASJED SOLEIMAN, IRAN:32.0022:49.2706 -OMIDYEH, IRAN:30.835:49.5347 -BANDAR MAHSHAHR, IRAN:30.5561:49.1517 -AHWAZ, IRAN:31.3372:48.7619 -ABUMUSA I., IRAN:25.8758:55.0328 -BUSHEHR, IRAN:28.9447:50.8344 -BASTAK, IRAN:27.2125:54.3183 -GOLBANDI, IRAN:27.4839:52.6183 -KISH ISLAND, IRAN:26.5267:53.9817 -BANDAR LENGEH, IRAN:26.5317:54.8217 -KHARK ISLAND, IRAN:29.2592:50.3239 -SIRI ISLAND, IRAN:25.9094:54.5392 -LAVAN ISLAND, IRAN:26.81:53.3564 -BAKHTARAN, IRAN:34.3464:47.1564 -ABDANAN, IRAN:32.9344:47.4833 -ILAM, IRAN:33.5856:46.4053 -KHORRAM ABAD, IRAN:33.4364:48.2858 -SANANDAJ, IRAN:35.2469:47.0069 -DARAN, IRAN:32.9294:51.5608 -ESFAHAN, IRAN:32.5669:51.6914 -ESFAHAN, IRAN:32.7506:51.8617 -SEPAH, IRAN:32.6208:51.6967 -RASHT, IRAN:37.3253:49.6056 -HAMADAN, IRAN:34.8681:48.5522 -ARAK, IRAN:34.1403:49.8483 -TEHERAN, IRAN:35.7028:51.475 -TEHERAN, IRAN:35.6447:51.3806 -TEHERAN, IRAN:35.6892:51.3133 -GHAZVIN, IRAN:36.2414:50.0475 -SEMNAN, IRAN:35.5908:53.495 -BANDAR ABBAS, IRAN:27.2181:56.3778 -JIROFT, IRAN:28.7267:57.67 -KERMAN, IRAN:30.2611:56.9567 -BAM, IRAN:29.0839:58.4503 -BANDAR ABBAS, IRAN:27.1581:56.1722 -GHESHM I., IRAN:26.755:55.9019 -RAFSANJAN, IRAN:30.2978:56.0519 -SIRJAN, IRAN:29.5508:55.6725 -BIRJAND, IRAN:32.8956:59.2756 -SARAKHS, IRAN:36.5011:61.0647 -EMAM SHAHR, IRAN:36.4236:55.1058 -BOJNORD, IRAN:37.4931:57.3006 -TABAS, IRAN:33.6678:56.8925 -SHAHR ABAD, IRAN:37.6278:56.1731 -KALALEH, IRAN:37.3831:55.4519 -GORGAN, IRAN:36.9092:54.4017 -MAHMOOD ABAD, IRAN:34.1692:51.3175 -NOSHAHR, IRAN:36.6633:51.4647 -RAMSAR, IRAN:36.9097:50.6794 -DASHT-E-NAZ, IRAN:36.6436:53.1883 -DARAB, IRAN:28.7214:54.4411 -FASA, IRAN:28.8919:53.7228 -JAHROM, IRAN:28.5864:53.5789 -LAR, IRAN:27.6736:54.3814 -ZARGHAN, IRAN:29.7542:52.6942 -LAMERD, IRAN:27.3708:53.1892 -SHIRAZ, IRAN:29.5392:52.5894 -ARDABIL, IRAN:38.3261:48.4242 -MARAGHEH, IRAN:37.3486:46.1261 -PARSABAD, IRAN:39.6036:47.8811 -TABRIZ, IRAN:38.1328:46.2347 -ZANJAN, IRAN:36.7742:48.3597 -YAZD, IRAN:31.9047:54.2764 -ZABOL, IRAN:31.0969:61.5439 -CHAH BAHAR, IRAN:25.4433:60.3819 -ZAHEDAN, IRAN:29.4761:60.9058 -IRAN SHAHR, IRAN:27.2364:60.72 -JASK, IRAN:25.6533:57.7992 -AMMAN, JORDAN:31.7225:35.9931 -AMMAN, JORDAN:31.9725:35.9914 -AQABA, JORDAN:29.6114:35.0181 -JERUSALEM, JORDAN:31.8647:35.2192 -MAFRAQ, JORDAN:32.3561:36.2592 -KUWAIT, KUWAIT:29.2267:47.98 -BEIRUT, LEBANON:33.8133:35.4886 -KLEIAT, LEBANON:34.5892:36.0111 -ABU DHABI, UNITED ARAB EMIRATES:24.4328:54.6511 -ABU DHABI, UNITED ARAB EMIRATES:24.4283:54.4581 -AL HAMRA, UNITED ARAB EMIRATES:24.0736:52.4633 -JEBEL DHANA, UNITED ARAB EMIRATES:24.1872:52.6139 -AL AIN, UNITED ARAB EMIRATES:24.2617:55.6092 -ABU DHABI, UNITED ARAB EMIRATES:24.2481:54.5475 -ARZANA, UNITED ARAB EMIRATES:24.7803:52.5597 -DAS ISLAND, UNITED ARAB EMIRATES:25.1461:52.8736 -ZIRKU, UNITED ARAB EMIRATES:24.8614:53.0778 -DUBAI, UNITED ARAB EMIRATES:25.2547:55.3642 -FUJEIRAH, UNITED ARAB EMIRATES:25.1122:56.3239 -RAS AL KHAIMAH, UNITED ARAB EMIRATES:25.6133:55.9386 -SHARJAH, UNITED ARAB EMIRATES:25.3283:55.5169 -KHASAB, OMAN:26.1711:56.2406 -MASIRAH, OMAN:20.6753:58.8903 -MUSCAT, OMAN:23.5931:58.2844 -SALALAH, OMAN:17.0386:54.0911 -SAIQ, OMAN:23.0667:57.65 -THUMRAIT, OMAN:17.6658:54.0244 -BANNU, PAKISTAN:32.9719:70.5247 -BAHAWALPURE, PAKISTAN:29.3469:71.7114 -CHITRAL, PAKISTAN:35.8864:71.8006 -DALBANDIN, PAKISTAN:28.8747:64.4044 -DERA GHAZI KHAN, PAKISTAN:29.9611:70.4856 -DERA ISMAIL KHAN, PAKISTAN:31.9092:70.8964 -FAISALABAD, PAKISTAN:31.365:72.9953 -GWADAR, PAKISTAN:25.2331:62.3294 -GILGIT, PAKISTAN:35.9186:74.3336 -JACOBSBAD, PAKISTAN:28.2842:68.4494 -JIWANI, PAKISTAN:25.0678:61.8053 -KARACHI, PAKISTAN:24.9064:67.1606 -HYDERABAD, PAKISTAN:25.3181:68.3661 -KHUZDHAR, PAKISTAN:27.7925:66.6428 -KHARAN, PAKISTAN:28.5944:65.4247 -LAHORE, PAKISTAN:31.5214:74.4033 -LAHORE, PAKISTAN:31.4947:74.3461 -MANGLA, PAKISTAN:33.05:73.6383 -MUZAFFARABAD, PAKISTAN:34.3383:73.5083 -MIANWALI, PAKISTAN:32.5631:71.5706 -MOENJODARO, PAKISTAN:27.335:68.1428 -MIR PUR KHAS, PAKISTAN:25.6825:69.0728 -MIRANSHAH, PAKISTAN:33.0125:70.0642 -KARACHI, PAKISTAN:24.8933:66.9386 -MULTAN, PAKISTAN:30.2031:71.4189 -NAWABSHAH, PAKISTAN:26.2192:68.39 -NAUSHKI, PAKISTAN:29.5378:66.0222 -OKARA, PAKISTAN:30.7408:73.3575 -ORMARA, PAKISTAN:25.2731:64.5883 -PARACHINAR, PAKISTAN:33.9025:70.0714 -PANJGUR, PAKISTAN:26.9544:64.1325 -PASNI, PAKISTAN:25.2836:63.3328 -PESHAWAR, PAKISTAN:33.9939:71.5144 -QASIM, PAKISTAN:33.5611:73.0319 -QUETTA, PAKISTAN:30.2511:66.9375 -RAHIM YAR KHAN, PAKISTAN:28.3853:70.2797 -ISLAMABAD, PAKISTAN:33.6164:73.0992 -SHOREKOTE, PAKISTAN:30.7581:72.2825 -RISALPUR, PAKISTAN:34.0811:71.9725 -RAWALA KOT, PAKISTAN:33.8492:73.7978 -SKARDU, PAKISTAN:35.3347:75.5364 -SUKKUR, PAKISTAN:27.7219:68.7917 -SARGODHA, PAKISTAN:32.0486:72.665 -SAIDU SHARIF, PAKISTAN:34.8131:72.3519 -SUI, PAKISTAN:28.645:69.1767 -SAHIWAL, PAKISTAN:31.8894:72.3092 -TERBELA, PAKISTAN:33.9861:72.6114 -TALHAR, PAKISTAN:24.8414:68.8383 -WANA, PAKISTAN:32.3053:69.5694 -ZHOB, PAKISTAN:31.3583:69.4633 -BAGHDAD, IRAQ:33.2619:44.2339 -BASRAH, IRAQ:30.5486:47.6622 -ALEPPO, SYRIA:36.1806:37.2242 -DAMASCUS, SYRIA:33.4114:36.5156 -DEIRE ZOR, SYRIA:35.2853:40.1758 -KAMISHLI, SYRIA:37.0236:41.1944 -LATAKIA, SYRIA:35.4008:35.9486 -PALMYRA, SYRIA:34.5572:38.3167 -DOHA, QATAR:25.2611:51.565 -PALMER, USA:61.5947:W149.089 -BARTER ISLAND, USA:70.1339:W143.577 -BETHEL, USA:60.7797:W161.838 -DELTA JUNCTION, USA:63.9944:W145.721 -BIG MOUNTAIN, USA:59.3617:W155.257 -BARROW, USA:71.2853:W156.766 -BETTLES, USA:66.9153:W151.528 -COLD BAY, USA:55.2056:W162.724 -CLEAR MEWS, USA:64.3011:W149.12 -CORDOVA, USA:60.4917:W145.477 -CAPE ROMANZOF, USA:61.7803:W166.039 -ADAK ISLAND, USA:51.8778:W176.646 -DILLINGHAM, USA:59.0453:W158.503 -KODIAK, USA:57.75:W152.494 -UNALASKA, USA:53.9:W166.543 -ANCHORAGE, USA:61.2511:W149.806:4415 -CAPE NEWENHAM, USA:58.6472:W162.061 -FAIRBANKS, USA:64.6656:W147.101 -KENAI, USA:60.5731:W151.245 -FAIRBANKS, USA:64.815:W147.856 -FORT WAINWRIGHT, USA:64.8375:W147.614 -FORT RICHARDSON, USA:61.2661:W149.653 -GALENA, USA:64.7361:W156.937 -GULKANA, USA:62.1547:W145.456 -SKAGWAY, USA:59.46:W135.316 -HOMER, USA:59.6456:W151.476 -ILIAMNA, USA:59.7536:W154.911 -INDIAN MOUNTAINS, USA:65.9928:W153.704 -JUNEAU, USA:58.3547:W134.576 -KING SALMON, USA:58.6767:W156.649 -KETCHIKAN, USA:55.3556:W131.714 -CAPE LISBURNE, USA:68.875:W166.11 -MCGRATH, USA:62.9528:W155.606 -MIDDLETON ISLAND, USA:59.4497:W146.309 -ANCHORAGE, USA:61.2142:W149.846 -ANCHORAGE, USA:61.1742:W149.996 -ANNETTE ISLAND, USA:55.0422:W131.572 -NOME, USA:64.5119:W165.445 -NORTHWAY, USA:62.9611:W141.929 -KOTZEBUE, USA:66.8844:W162.598 -POINT BARROW, USA:56.5783:W169.661 -PORT MOLLER, USA:59.0111:W161.819 -DEADHORSE, USA:70.1947:W148.465 -SITKA, USA:57.0469:W135.361 -ST. PAUL ISLAND, USA:57.1672:W170.22 -SPARREVOHN, USA:61.0972:W155.574 -SHEMYA, USA:52.7122:174.114 -TANANA, USA:65.1742:W152.109 -TIN CITY, USA:65.5631:W167.922 -TALKEETNA, USA:62.3203:W150.094 -TATALINA, USA:62.8942:W155.976 -UNALAKLEET, USA:63.8883:W160.799 -VALDEZ, USA:61.1339:W146.248:560 -FORT WAINWRIGHT, USA:70.6133:W159.86 -YAKUTAT, USA:59.5031:W139.66 -CANTON ISLAND, PHOENIX ISL.:-2.76667:W0 -FORT YUKON, USA:66.5714:W145.25 -ROTA, MARIANA ISLANDS:14.1744:145.243 -SAIPAN, MARIANA ISLANDS:15.1194:145.729 -TYPHOON WARNING CTR, MARIANA ISLANDS:13.5:144.833 -ANDERSEN, MARIANA ISLANDS:13.5839:144.93 -AGANA, MARIANA ISLANDS:13.4839:144.797 -WEST TINIAN, MARIANA ISLANDS:14.9978:145.619 -BARKING SANDS, USA:22.0217:W159.787 -DILLINGHAM, USA:21.5792:W158.21 -WHEELER AFB., USA:21.4833:W158.039 -HANA, USA:20.7956:W156.014 -LAHANIA-KAPALUA, USA:20.9628:W156.674 -KONA, USA:19.7386:W156.046 -LIHUE, USA:21.9761:W159.339 -MOLOKAI, USA:21.1528:W157.096 -KAMUELA, USA:20.0011:W155.668 -KANEOHE BAY, USA:21.4492:W157.768 -HONOLULU, USA:21.3158:W157.927 -LANAI, USA:20.7856:W156.951 -KAHULUI, USA:20.8986:W156.431 -BRADSHAW FIELD, USA:19.76:W155.554 -HILO, USA:19.7203:W155.049 -OPOLU, USA:20.265:W155.86 -JOHNSTON ISLAND, JOHNSTON ATOLL:16.7286:W169.534 -ENIWETOK ISLAND, MARSHALL ISLANDS:11.3408:162.328 -MAJURO, MARSHALL ISLANDS:7.06472:171.272 -KWAJALEIN, MARSHALL ISLANDS:9.39667:167.471 -KWAJALEIN, MARSHALL ISLANDS:8.72:167.731 -KIRITIMATI, KIRIBATI:1.98611:W157.35 -MIDWAY, MIDWAY ISLAND:28.2014:W177.381 -OLIKTOK POINT, USA:70.4994:W149.879 -POINT LAY, USA:69.7328:W163.005 -CHUUK, MICRONESIA:7.46167:151.843 -POHNPEI, MICRONESIA:6.985:158.209 -BABELTHUAP, PALAU ISLAND:7.3675:134.544 -KOSRAE, MICRONESIA:5.35667:162.958 -YAP, MICRONESIA:9.49861:138.082 -CHINMEN, TAIWAN:24.4319:118.359 -PINGTUNG, TAIWAN:22.6722:120.462 -LONGTANG, TAIWAN:24.855:121.237 -FENGNIN, TAIWAN:22.7567:121.093 -GREEN ISLAND, TAIWAN:22.6744:121.458 -TAOYUAN, TAIWAN:25.0556:121.243 -KAOHSIUNG, TAIWAN:22.5753:120.351 -CHIAYI, TAIWAN:23.4617:120.393 -CHUNG, TAIWAN:24.1861:120.654 -LANYU, TAIWAN:22.0294:121.527 -CHINGCHUAKANG, TAIWAN:24.2644:120.621 -MATSU, TAIWAN:26.2239:120.002 -TAINAN, TAIWAN:22.9503:120.206 -HSINCHU, TAIWAN:24.8178:120.939 -MAKUNG, TAIWAN:23.5686:119.628 -TAITUNG, TAIWAN:22.7931:121.182 -TSOYING, TAIWAN:22.7047:120.281 -PINGTUNG, TAIWAN:22.7:120.482 -TAIPEI, TAIWAN:25.0694:121.552 -TAIPEI, TAIWAN:25.08:121.232 -WANG AN, TAIWAN:23.3708:119.494 -HUALIEN, TAIWAN:24.0231:121.618 -TOKYO, JAPAN:35.7647:140.386 -MATSUMOTO, JAPAN:36.1667:137.923 -HYAKURI, JAPAN:36.1808:140.415 -MINAMI TORI SHIMA, JAPAN:24.2894:153.979 -IWOJIMA, JAPAN:24.7839:141.322 -NANKI-SHIRAHAMA, JAPAN:33.6622:135.364 -KOHNAN, JAPAN:34.5908:133.933 -OBIHIRO, JAPAN:42.7333:143.217 -SAPPORO, JAPAN:42.775:141.692 -HAKODATE, JAPAN:41.77:140.822 -CHITOSE, JAPAN:42.7944:141.666 -MEMANBETSU, JAPAN:43.8806:144.164 -NAKASHIBETSU, JAPAN:43.5772:144.96 -SAPPORO, JAPAN:43.1161:141.38 -TOKACHI, JAPAN:42.8903:143.158 -WAKKANAI, JAPAN:45.4039:141.801 -IKI, JAPAN:33.7489:129.785 -YAMAGUCHI, JAPAN:33.93:131.279 -TSUSHIMA, JAPAN:34.2847:129.33 -MONBETSU, JAPAN:44.3039:143.404 -ASAHIKAWA, JAPAN:43.6708:142.447 -RISHIRI ISLAND, JAPAN:45.2419:141.186 -ASHIYA, JAPAN:33.8831:130.653 -YAKUSHIMA, JAPAN:30.3856:130.659 -FUKUE, JAPAN:32.6661:128.833 -FUKUOKA, JAPAN:33.5864:130.45 -TANEGASHIMA, JAPAN:30.5467:130.95 -KAGOSHIMA, JAPAN:31.8033:130.719 -MIYAZAKI, JAPAN:31.8769:131.448 -NYUTABARU, JAPAN:32.0836:131.452 -OITA, JAPAN:33.4794:131.737 -KITAKYUSHU, JAPAN:33.8361:130.947 -KUMAMOTO, JAPAN:32.8372:130.855 -NAGASAKI, JAPAN:32.9225:129.923 -KANOYA, JAPAN:31.3675:130.845 -TSUIKI, JAPAN:33.6853:131.041 -AMAMI, JAPAN:28.4306:129.712 -OKIERABU, JAPAN:27.4253:128.701 -TOKUNOSHIMA, JAPAN:27.8361:128.881 -FUKUI, JAPAN:36.1428:136.224 -GIFU, JAPAN:35.3942:136.869 -HAMAMATSU, JAPAN:34.75:137.703 -KANAZAWA, JAPAN:36.3936:136.408 -NAGOYA, JAPAN:35.255:136.924 -OKI ISLAND, JAPAN:36.1811:133.325 -TOYAMA, JAPAN:36.6483:137.187 -YAIZU, JAPAN:34.8125:138.298 -HIROSHIMA, JAPAN:34.4353:132.922 -OKAYAMA, JAPAN:34.7569:133.856 -IZUMO, JAPAN:35.4136:132.89 -HOFU, JAPAN:34.0344:131.549 -MIHO, JAPAN:35.4922:133.236 -IWAKUNI, JAPAN:34.1436:132.236 -KOCHI, JAPAN:33.5444:133.671 -MATSUYAMA, JAPAN:33.8272:132.7 -OSAKA, JAPAN:34.7853:135.438 -TOTTORI, JAPAN:35.53:134.166 -TOKUSHIMA, JAPAN:34.1328:134.606 -TAKAMATSU, JAPAN:34.2139:134.016 -OSAKA, JAPAN:34.5961:135.603 -OZUKI, JAPAN:34.0453:131.052 -AOMORI, JAPAN:40.7344:140.691 -YAMAGATA, JAPAN:38.4117:140.371 -HACHINOE, JAPAN:40.5564:141.466 -HANAMAKI, JAPAN:39.4308:141.136 -AKITA, JAPAN:39.6156:140.219 -MISAWA, JAPAN:40.7031:141.368 -SENDAI, JAPAN:38.1394:140.917 -MATSUSHIMA, JAPAN:38.4047:141.219 -SHONAI, JAPAN:38.8117:139.787 -ATSUGI, JAPAN:35.4544:139.45 -TATEYAMA, JAPAN:34.9869:139.829 -TOKYO, JAPAN:35.6717:139.528 -HACHIJOJIMA, JAPAN:33.115:139.786 -IRUMA, JAPAN:35.8414:139.41 -KISARAZU, JAPAN:35.3981:139.91 -SHIMOFUSA, JAPAN:35.7989:140.011 -OSHIMA, JAPAN:34.7844:139.361 -MIYAKE JIMA, JAPAN:34.0719:139.56 -ZAMA, JAPAN:35.5136:139.394 -TOKYO, JAPAN:35.5522:139.779 -YOKOTA, JAPAN:35.7483:139.348 -KWANGJU, KOREA:35.1256:126.81 -KUNSAN, KOREA:35.9036:126.616 -MOKPO, KOREA:34.7589:126.38 -JHUNJU, KOREA:35.8783:127.119 -YEOSU, KOREA:34.8397:127.615 -CHUNCHON, KOREA:37.8836:127.718 -SOKCH'O, KOREA:38.1475:128.601 -KANGNUNG, KOREA:37.7533:128.944 -WONJU, KOREA:37.4381:127.96 -YANGKU, KOREA:38.0611:128.669 -CHEJU, KOREA:33.5111:126.493 -CHINHAE, KOREA:35.1411:128.696 -KIMHAE, KOREA:35.1794:128.938 -BUSAN, KOREA:35.1708:129.129 -SACHON, KOREA:35.0883:128.07 -ULSAN, KOREA:35.5933:129.352 -PYONGTAEK, KOREA:36.9606:127.033 -SEOUL EAST, KOREA:37.4458:127.114 -OSAN, KOREA:37.0906:127.029 -SEOUL, KOREA:37.5581:126.791 -SUWON, KOREA:37.2392:127.007 -POHANG, KOREA:35.9878:129.42 -KYUNGJU, KOREA:35.8564:129.211 -TAEGU, KOREA:35.8939:128.659 -CHONGJU, KOREA:36.7164:127.499 -YECHON, KOREA:36.6317:128.355 -NAHA, JAPAN:26.1956:127.646 -IEJIMA, JAPAN:26.7286:127.762 -KADENA, JAPAN:26.3556:127.767 -ISHIGAKI, JAPAN:24.3444:124.187 -KUMEJIMA, JAPAN:26.3633:126.714 -MINAMI DAITO, JAPAN:25.8464:131.263 -MIYAKO, JAPAN:24.7828:125.295 -KITADAITO, JAPAN:25.9478:131.321 -SHIMOJISHIMA, JAPAN:24.8267:125.145 -YORON, JAPAN:27.0439:128.401 -FUTEMA, JAPAN:26.2742:127.756 -YONAGUNI JIMA, JAPAN:24.4669:122.978 -MANILA, PHILIPPINES:14.5086:121.019 -CUBI NAS, PHILIPPINES:6.10556:125.236 -CEBU, PHILIPPINES:7.16472:124.21 -LADAG, PHILIPPINES:8.41444:124.611 -MANILA, PHILIPPINES:7.61722:124.059 -LEGAZPI, PHILIPPINES:7.82778:123.46 -ROMBLON, PHILIPPINES:6.05806:125.096 -SANGLEY POINT, PHILIPPINES:9.75778:125.481 -ZAMBOANGA, PHILIPPINES:6.92222:122.059 -BAGUIO, PHILIPPINES:16.375:120.619 -DAET, PHILIPPINES:14.1292:122.98 -FLORIDABLANCA, PHILIPPINES:14.9864:120.493 -LINGAYEN, PHILIPPINES:16.0347:120.241 -SAN JOSE, PHILIPPINES:12.3614:121.046 -IBA, PHILIPPINES:15.3256:119.969 -LIPA, PHILIPPINES:13.955:121.125 -MAMBURAO, PHILIPPINES:13.2081:120.605 -NAGA, PHILIPPINES:13.5853:123.271 -BASCO, PHILIPPINES:20.4517:121.98 -JOSE PANGANIBAN, PHILIPPINES:14.2928:122.646 -VIGAN, PHILIPPINES:17.5536:120.357 -SAN FERNANDO, PHILIPPINES:16.5956:120.303 -TUGUEGARAO, PHILIPPINES:17.6381:121.731 -VIRAC, PHILIPPINES:13.5775:124.206 -MARINDUQUE, PHILIPPINES:13.3611:121.825 -CAUAYAN, PHILIPPINES:16.9297:121.753 -BAGABAG, PHILIPPINES:16.6189:121.252 -TACLOBAN, PHILIPPINES:11.2272:125.028 -BACOLOD, PHILIPPINES:10.6425:122.929 -CALBAYOG, PHILIPPINES:12.0725:124.545 -DUMAGUETE, PHILIPPINES:9.33417:123.302 -CATARMAN, PHILIPPINES:12.5022:124.636 -GUIUAN, PHILIPPINES:11.0356:125.743 -ILOILO, PHILIPPINES:10.7131:122.545 -KALIBO, PHILIPPINES:11.6811:122.378 -MASBATE, PHILIPPINES:10.3075:123.979 -ORMOC, PHILIPPINES:11.0558:124.566 -PUERTO PRINCESA, PHILIPPINES:9.74194:118.759 -ROXAS, PHILIPPINES:11.5975:122.753 -SAN JOSE, PHILIPPINES:10.7661:121.932 -CONCORDIA, ARGENTINA:-31.2969:W57.9964 -GUALEGUAYCHU, ARGENTINA:-33.0058:W58.6131 -PUNTA INDIO, ARGENTINA:-35.3478:W57.2939 -JUNIN, ARGENTINA:-34.5458:W60.9306 -PARANA, ARGENTINA:-31.7947:W60.4803 -ROSARIO, ARGENTINA:-32.9033:W60.7844 -SANTA FE, ARGENTINA:-31.7117:W60.8117 -BUENOS AIRES, ARGENTINA:-34.5592:W58.4156 -LA CUMBRE, ARGENTINA:-31.0067:W64.5325 -CORDOBA, ARGENTINA:-31.3236:W64.2078 -GOBERNADOR GORDILLO, ARGENTINA:-30.3453:W66.2936 -BUENOS AIRES, ARGENTINA:-34.5006:W58.6042 -SAN FERNANDO, ARGENTINA:-34.4531:W58.5894 -JOSE C. PAZ, ARGENTINA:-34.5606:W58.7894 -LA PLATA, ARGENTINA:-34.9722:W57.8944 -MORON, ARGENTINA:-34.6761:W58.6425 -EL PALOMAR, ARGENTINA:-34.6097:W58.6125 -SAN JUSTO, ARGENTINA:-34.7314:W58.5994 -CHOSMADAL, ARGENTINA:-37.4444:W70.2222 -FUERTE GRAL ROCA, ARGENTINA:-39.0006:W67.6203 -MENDOZA, ARGENTINA:-32.8317:W68.7928 -MALARGUE, ARGENTINA:-35.4839:W69.5825 -MENDOZA, ARGENTINA:-32.8658:W68.8722 -SAN RAFAEL, ARGENTINA:-34.5881:W68.4025 -CATAMARCA, ARGENTINA:-28.5956:W65.7517 -SANTIAGO DEL ESTERO, ARGENTINA:-27.7656:W64.31 -TINOGASTA, ARGENTINA:-28.0375:W67.5803 -LA RIOJA, ARGENTINA:-29.3814:W66.7958 -CHILECITO, ARGENTINA:-29.2239:W67.4389 -TUCUMAN, ARGENTINA:-26.8408:W65.1047 -SAN JULIAN, ARGENTINA:-31.5714:W68.4181 -RIO CUARTO, ARGENTINA:-33.0856:W64.2614 -VILLA DOLORES, ARGENTINA:-31.9411:W65.1422 -LABOULAYE, ARGENTINA:-34.1353:W63.3622 -MARCOS JUAREZ, ARGENTINA:-32.6836:W62.1578 -VILLA REYNOLDS, ARGENTINA:-33.7297:W65.3872 -SAN LUIS, ARGENTINA:-33.2731:W66.3564 -CORRIENTES, ARGENTINA:-27.4453:W58.7617 -RESISTENCIA, ARGENTINA:-27.4497:W59.0561 -FORMOSA, ARGENTINA:-26.2125:W58.2281 -IGUAZU FALLS, ARGENTINA:-25.7375:W54.4731 -PASO DE LOS LIBRES, ARGENTINA:-29.6892:W57.1519 -MONTE CASEROS, ARGENTINA:-30.2717:W57.64 -POSADAS, ARGENTINA:-27.3858:W55.9706 -PRESIDENCIA R.S.PENA, ARGENTINA:-26.7564:W60.4931 -SALTA, ARGENTINA:-24.8558:W65.4861 -JUJUY, ARGENTINA:-24.3928:W65.0978 -ORAN, ARGENTINA:-23.1528:W64.3292 -LA QUIACA, ARGENTINA:-22.1622:W65.5697 -TARTAGAL, ARGENTINA:-22.6197:W63.7936 -GOYA, ARGENTINA:-29.1058:W59.2186 -LAS LOMITAS, ARGENTINA:-24.7211:W60.5486 -MERCEDES, ARGENTINA:-29.2231:W58.0881 -OBERA, ARGENTINA:-27.5181:W55.1239 -RECONQUISTA, ARGENTINA:-29.21:W59.6908 -CURUZU CUATIA, ARGENTINA:-29.7706:W57.9789 -EL BOLSON, ARGENTINA:-41.9431:W71.5322 -COMODORO RIVADAVIA, ARGENTINA:-45.785:W67.4656 -EL MAITEN, ARGENTINA:-42.0306:W71.1697 -ESQUEL, ARGENTINA:-42.9078:W71.1394 -LAS HERAS, ARGENTINA:-46.5383:W68.9658 -TRELEW, ARGENTINA:-43.2103:W65.2703 -VIEDMA, ARGENTINA:-40.8692:W63.0003 -PUERTO MADRYN, ARGENTINA:-42.7589:W65.1025 -LAGO ARGENTINO, ARGENTINA:-50.3353:W72.2483 -MARAMBIO BASE, ANTARCTICA:-64.2383:W56.6308 -PUERTO DESEADO, ARGENTINA:-47.7353:W65.9039 -RIO GRANDE, ARGENTINA:-53.7775:W67.7492 -RIO GALLEGOS, ARGENTINA:-51.6086:W69.3125 -USHUAIA, ARGENTINA:-54.8431:W68.2956 -SAN JULIAN, ARGENTINA:-49.3067:W67.8025 -JOSE DE SAN MARTIN, ARGENTINA:-44.0481:W70.4592 -RIO TURBIO, ARGENTINA:-51.6064:W72.2167 -SANTA CRUZ, ARGENTINA:-50.0164:W68.5792 -BAHIA BLANCA, ARGENTINA:-38.7247:W62.1692 -COLONEL SUAREZ, ARGENTINA:-37.4461:W61.8892 -DOLORES, ARGENTINA:-36.3203:W57.7217 -OLAVARRIA, ARGENTINA:-36.8908:W60.2161 -GENERAL PICO, ARGENTINA:-35.6961:W63.7581 -TRES ARROYOS, ARGENTINA:-38.3867:W60.3294 -BOLIVAR, ARGENTINA:-36.1869:W61.0761 -SANTA TERESITA, ARGENTINA:-36.5422:W56.7217 -MAR DEL PLATA, ARGENTINA:-37.9342:W57.5733 -NEUQUEN, ARGENTINA:-38.9489:W68.1556 -NECOCHEA, ARGENTINA:-38.4894:W58.8158 -PEHUAJO, ARGENTINA:-35.8456:W61.8578 -SANTA ROSA, ARGENTINA:-36.5881:W64.2753 -SAN CARLOS DE BARILOCH, ARGENTINA:-41.1511:W71.1575 -TANDIL, ARGENTINA:-37.2372:W59.2278 -VILLA GESELL, ARGENTINA:-37.2353:W57.0292 -CUTRALCO, ARGENTINA:-38.9394:W69.2644 -SAN MARTIN DES ANDES, ARGENTINA:-40.0753:W71.1372 -CONCEICAO DO ARAGUAIA, BRAZIL:-8.34833:W49.3014 -RIO DE JANEIRO, BRAZIL:-22.875:W43.3844 -AMAPA, BRAZIL:2.07667:W50.8622 -ARARACUARA, BRAZIL:-21.8119:W48.1328 -ARACAJU, BRAZIL:-10.9839:W37.0703 -ASSIS, BRAZIL:-22.6383:W50.4558 -ALTA FLORESTA, BRAZIL:-9.86583:W56.1061 -ARACATUBA, BRAZIL:-21.1411:W50.4247 -TEODORO SAMPAIO, BRAZIL:-22.5256:W52.9719 -BELEM, BRAZIL:-1.37917:W48.4761 -BAGE, BRAZIL:-31.3903:W54.1122 -BELO HORIZONTE, BRAZIL:-19.8517:W43.9503 -CURITIBA, BRAZIL:-25.405:W49.2319 -BARBACENA, BRAZIL:-21.2669:W43.7608 -BRASILIA, BRAZIL:-15.8625:W47.9125 -BAURU, BRAZIL:-22.345:W49.0536 -BOA VISTA, BRAZIL:2.84611:W60.69 -BARRA DO GARCAS, BRAZIL:-15.8611:W52.3889 -CASCAVEL, BRAZIL:-25.0003:W53.5006 -ITAITUBA, BRAZIL:-9.33389:W54.9653 -BELO HORIZONTE, BRAZIL:-19.6336:W43.9686 -CAMPO GRANDE, BRAZIL:-20.4686:W54.6725 -CHAPECO, BRAZIL:-27.1342:W52.6564 -CAROLINA, BRAZIL:-7.32028:W47.4586 -CRICIUMA, BRAZIL:-28.7256:W49.4247 -PORTO ALEGRE, BRAZIL:-29.9458:W51.1444 -CAMPOS, BRAZIL:-21.6983:W41.3017 -CORUMBA, BRAZIL:-19.0117:W57.6728 -CURITIBA, BRAZIL:-25.5283:W49.1756 -CARAVELAS, BRAZIL:-17.6522:W39.2531 -CAXIAS DO SUL, BRAZIL:-29.1969:W51.1875 -CUIABA, BRAZIL:-15.6528:W56.1167 -CRUIZIRO DO SUL, BRAZIL:-7.6:W72.7694 -PRESIDENT PRUDENTE, BRAZIL:-22.175:W51.4244 -MANAUS, BRAZIL:-3.03861:W60.0497 -JACARE-ACANGA, BRAZIL:-6.23306:W57.7767 -SAO PEDRO DA ALDEIA, BRAZIL:-22.8128:W42.0925 -FRANCA, BRAZIL:-20.5919:W47.3828 -FOZ DO IGUACU, BRAZIL:-25.5961:W54.4869 -FLORIANOPOLIS, BRAZIL:-27.6725:W48.5478 -FERNANDO DO NORONHA, BRAZIL:-3.85472:W32.4233 -FRONTEIRA, BRAZIL:-20.2783:W49.1872 -ALPINOPOLIS, BRAZIL:-20.7028:W46.335 -FORTALEZA, BRAZIL:-3.77611:W38.5325 -RIO DE JANEIRO, BRAZIL:-22.8089:W43.2436 -GUAJARA-MIRIM, BRAZIL:-10.7861:W65.2847 -GOIANIA, BRAZIL:-16.6311:W49.2222 -SAO PAULO, BRAZIL:-23.4322:W46.4692 -PONTA GROSSA, BRAZIL:-25.1844:W50.1439 -GUARATINGUETA, BRAZIL:-22.7914:W45.2047 -ALTAMIRA, BRAZIL:-3.25389:W52.2539 -ITAITUBA, BRAZIL:-3.12722:W58.4811 -ITAITUBA, BRAZIL:-4.24222:W56.0006 -ILHEUS, BRAZIL:-14.8158:W39.0331 -IPATINGA, BRAZIL:-19.4706:W42.4875 -ITUMBIARA, BRAZIL:-18.4444:W49.2133 -IMPERATRIZ, BRAZIL:-5.53111:W47.46 -BELEM, BRAZIL:-1.41389:W48.4606 -JUIZ DE FORA, BRAZIL:-21.7914:W43.3867 -JOAO PESSOA, BRAZIL:-7.26972:W35.8961 -JOINVILLE, BRAZIL:-26.2247:W48.7972 -CAMPINAS, BRAZIL:-23.0081:W47.1344 -LAJES, BRAZIL:-27.7819:W50.2814 -LINS, BRAZIL:-21.6639:W49.7303 -LONDRINA, BRAZIL:-23.3336:W51.13 -BOM JESUS DA LAPA, BRAZIL:-13.2619:W43.4081 -LAGOA SANTA, BRAZIL:-19.6614:W43.8964 -MARABA, BRAZIL:-5.36833:W49.1378 -ALMEIRIM, BRAZIL:-0.889722:W52.6022 -MARINGA, BRAZIL:-23.4397:W51.9069 -MONTES CLAROS, BRAZIL:-16.7067:W43.8189 -MARILIA, BRAZIL:-22.1967:W49.9264 -MANAUS, BRAZIL:-3.14556:W59.9861 -MACEIO, BRAZIL:-9.51028:W35.7933 -MACAPA, BRAZIL:0.0505556:W51.0719 -MOCORD, BRAZIL:-5.20167:W37.3642 -SAO PAULO, BRAZIL:-23.5089:W46.6375 -MANICORE, BRAZIL:-5.81139:W61.2786 -NAVEGANTES, BRAZIL:-26.88:W48.6514 -SANTO ANGELO, BRAZIL:-28.2817:W54.1689 -NATAL, BRAZIL:-5.91111:W35.2478 -OIOIAPOQUE, BRAZIL:3.85528:W51.7967 -PORTO ALEGRE, BRAZIL:-29.9942:W51.1714 -PARNAIBA, BRAZIL:-2.89361:W41.7319 -POCOS DE CALDAS, BRAZIL:-21.8428:W46.5678 -PASSO FUNDO, BRAZIL:-28.2439:W52.3264 -PELOTAS, BRAZIL:-31.7183:W52.3275 -PETROLINA, BRAZIL:-9.36389:W40.5639 -PORTO NACIONAL, BRAZIL:-10.7192:W48.3997 -PONTA PORA, BRAZIL:-22.5494:W55.7025 -PORTO VELHO, BRAZIL:-8.70917:W63.9022 -VITORIA DA CONQUISTA, BRAZIL:-14.8625:W40.8631 -RIO BRANCO, BRAZIL:-9.86889:W67.8936 -RECIFE, BRAZIL:-8.12639:W34.9233 -RIO GRANDE, BRAZIL:-32.0825:W52.1664 -RIO DE JANEIRO, BRAZIL:-22.9103:W43.1631 -RIBEIRAO PRETO, BRAZIL:-21.1342:W47.7742 -RIO DE JANEIRO, BRAZIL:-22.9322:W43.7189 -SAO JOSE DOS CAMPOS, BRAZIL:-23.2292:W45.8614 -SAO LUIS, BRAZIL:-2.58861:W44.2364 -SANTAREM, BRAZIL:-29.7111:W53.6881 -SAO PAULO, BRAZIL:-23.6267:W46.6553 -SAO JOSE DO RIO PRETO, BRAZIL:-20.8164:W49.4064 -SANTOS, BRAZIL:-23.925:W46.2875 -SALVADOR, BRAZIL:-12.9108:W38.3308 -ORIXIMINA, BRAZIL:-1.48944:W56.3967 -TERESINA, BRAZIL:-5.05972:W42.8233 -TEFE, BRAZIL:-3.38278:W64.7239 -TARAUACA, BRAZIL:-8.155:W70.7831 -TELEMACO BORBA, BRAZIL:-24.3175:W50.6514 -OBIDOS TIRIOS, BRAZIL:2.22333:W55.9458 -TABATINGA, BRAZIL:-4.25556:W69.9356 -TUCURUI, BRAZIL:-3.785:W49.7194 -SAO GABRIEL, BRAZIL:-0.148333:W66.9856 -PAULO ALFONSO, BRAZIL:-9.40083:W38.2506 -URUGUAIANA, BRAZIL:-29.7819:W57.0381 -UBERLANDIA, BRAZIL:-18.8828:W48.2256 -CASTILHO, BRAZIL:-20.7769:W51.5647 -UBERABA, BRAZIL:-19.765:W47.9647 -VARGINHA, BRAZIL:-21.59:W45.4733 -VILHENA, BRAZIL:-12.6942:W60.0981 -VITORIA, BRAZIL:-20.2556:W40.2889 -IAUARETE, BRAZIL:0.6075:W69.1858 -PIRACUNUNGA, BRAZIL:-21.9853:W47.3381 -ANCUD, CHILE:-41.9061:W73.7967 -ALTO PALENA, CHILE:-43.6153:W71.8069 -ARICA, CHILE:-18.3483:W70.3386 -BALMACEDA, CHILE:-45.9158:W71.6892 -SANTIAGO, CHILE:-33.5617:W70.6883 -CHILE CHICO, CHILE:-46.5817:W71.6975 -CALAMA, CHILE:-22.4986:W68.9042 -CHILLAN, CHILE:-36.5828:W72.0317 -PUNTA ARENAS, CHILE:-53.0028:W70.8547 -COYHAIQUE, CHILE:-45.5942:W72.1061 -IQUIQUE, CHILE:-20.535:W70.1811 -SANTIAGO, CHILE:-33.3928:W70.7856 -ANTOFAGASTA, CHILE:-23.4444:W70.445 -PORVENIR, CHILE:-53.2536:W70.3192 -LOS ANGELES, CHILE:-37.4017:W72.4256 -PUERTO WILLIAMS, CHILE:-54.9308:W67.6261 -COPIAPO, CHILE:-27.2961:W70.4136 -CURICO, CHILE:-34.9669:W71.2169 -CONCEPCION, CHILE:-36.7725:W73.0631 -EASTER ISLAND, CHILE:-27.1647:W109.422 -OSORNO, CHILE:-40.6114:W73.0603 -VALLENAR, CHILE:-28.5975:W70.7592 -RANCAGUA, CHILE:-34.1736:W70.7756 -ISLA REY JORGE, ANTARCTICA:-62.1908:W58.9867 -LA SERENA, CHILE:-29.9164:W71.1911 -SANTO DOMINGO, CHILE:-33.6567:W71.6156 -CASTRO, CHILE:-42.4908:W73.7744 -SANTIAGO, CHILE:-33.4564:W70.5467 -TEMUCO, CHILE:-38.7686:W72.6358 -PUERTO MONTT, CHILE:-41.4386:W73.0939 -SANTIAGO, CHILE:-33.4933:W70.6975 -CHAITEN, CHILE:-42.9331:W72.6992 -VALDIVIA, CHILE:-39.6497:W73.0861 -AMBATO, ECUADOR:-1.2125:W78.5742 -CLEMENTIA, ECUADOR:-1.70611:W79.3789 -COCA, ECUADOR:-0.462778:W76.9864 -CUENCA, ECUADOR:-2.88944:W78.9842 -GALAPAGOS, GALAPAGOS I. (ECUADOR:-0.453611:W90.2658 -GUAYAQUIL, ECUADOR:-2.15778:W79.8839 -GUALAQUIZA, ECUADOR:-3.42333:W78.5731 -IBARRA, ECUADOR:0.338333:W78.1364 -LAGO AGRIO, ECUADOR:0.0922222:W76.8692 -LA JULIA, ECUADOR:-1.70417:W79.5522 -LOMA LARGA, ECUADOR:-1.50139:W79.4808 -LATACUNGA, ECUADOR:-0.906667:W78.6156 -MACARA, ECUADOR:-4.38028:W79.9406 -MACAS, ECUADOR:-2.29917:W78.1206 -MACHALA, ECUADOR:-3.26889:W79.9617 -MONTALVO, ECUADOR:-2.06694:W76.9753 -MANTA, ECUADOR:-0.945556:W80.6781 -MARAGROSA, ECUADOR:-2.85083:W79.8036 -MARTINICA, ECUADOR:-1.73972:W79.6217 -PEDERNALES, ECUADOR:0.0730556:W80.0522 -PORTOVIEJO, ECUADOR:-1.04139:W80.4719 -QUITO, ECUADOR:-0.141111:W78.4881 -RIOBAMBA, ECUADOR:-1.65361:W78.6561 -SANTA ROSA, ECUADOR:-3.43528:W79.9778 -SALINAS, ECUADOR:-2.20472:W80.9886 -SANTO DOMINGO, ECUADOR:-0.248056:W79.2144 -SAN CRISTOBAL, ECUADOR:-0.909722:W89.6158 -TAURA, ECUADOR:-2.26083:W79.6892 -TENA, ECUADOR:-0.986667:W77.8194 -TARAPOA, ECUADOR:-0.122778:W76.3375 -TULCAN, ECUADOR:0.809444:W77.7081 -STANLEY, FALKLAND ISLANDS:-51.6856:W57.7775 -ASUNCION, PARAGUAY:-25.2397:W57.5189 -AYOLAS, PARAGUAY:-27.3706:W56.8539 -CONCEPTION, PARAGUAY:-23.4417:W57.4269 -FILADELFIA, PARAGUAY:-22.3597:W60.0536 -ITAIPU, PARAGUAY:-25.4075:W54.6194 -MARISCAL ESTIGARRIBIA, PARAGUAY:-22.0447:W60.6217 -PILAR, PARAGUAY:-26.8814:W58.3178 -ARMENIA, COLOMBIA:4.536307:W75.6723751 -PUERTO ASIS, COLOMBIA:9.4424024:W75.1379851 -EL BANCO, COLOMBIA:9.04528:W73.9747 -BUCARAMANGA, COLOMBIA:7.12639:W73.1847 -BOGOTA, COLOMBIA:4.6533326:W74.083652 -BARRANQUILLA, COLOMBIA:10.8894:W74.7806 -BAHIA SOLANO, COLOMBIA:6.20278:W77.3944 -BUENAVENTURA, COLOMBIA:3.81944:W76.9897 -CUCUTA, COLOMBIA:7.9275:W72.5114 -CONDOTO, COLOMBIA:5.07167:W76.6764 -CARTAGENA, COLOMBIA:10.4422:W75.5128 -CALI, COLOMBIA:3.54306:W76.3814 -TUMACO, COLOMBIA:1.81417:W78.7492 -COROZAL, COLOMBIA:9.3325:W75.2856 -BARRANCABERMEJA, COLOMBIA:7.02417:W73.8067 +FIRA, GUINEA:10.3506:W13.5692 +FIRENZE, ITALY:43.8097:11.205:102 +FLENSBURG, GERMANY:54.7717:9.37806:56 +FLIN FLON, CANADA:54.6781:W101.682 +FLORENCE, USA:34.1853:W79.7239 FLORENCIA, COLOMBIA:1.59028:W75.5639 -GIRARDOT, COLOMBIA:4.27611:W74.7967 -CARTAGO, COLOMBIA:4.75806:W75.9556 -GUAPI, COLOMBIA:2.57:W77.8983 -GUAYMARAL, COLOMBIA:4.81222:W74.0647 -IBAGUE, COLOMBIA:4.42139:W75.1331 -IPIALES, COLOMBIA:0.861667:W77.6717 -CAREPA, COLOMBIA:7.81194:W76.7164 -LA MINA, COLOMBIA:11.2325:W72.49 -LETICIA, COLOMBIA:-4.19306:W69.9425 -MEDELLIN, COLOMBIA:6.22:W75.5906 -MAGANGUE, COLOMBIA:9.28333:W74.8394 -MONTERIA, COLOMBIA:8.82361:W75.8258 -MITU, COLOMBIA:1.25361:W70.2336 -MANIZALES, COLOMBIA:5.02972:W75.465 -NEIVA, COLOMBIA:2.95:W75.2939 -OCANA, COLOMBIA:8.31472:W73.3583 -OTU, COLOMBIA:7.01028:W74.7153 -PUERTO BOLIVAR, COLOMBIA:12.2214:W71.9847 -PUERTO CARRENO, COLOMBIA:6.18444:W67.4931 -PEREIRA, COLOMBIA:4.8125:W75.7394 -PITALITO, COLOMBIA:1.85833:W76.0858 -POPAYAN, COLOMBIA:2.45417:W76.61 -PASTO, COLOMBIA:1.39639:W77.2908 -PROVIDENCIA, COLOMBIA:13.3569:W81.3583 -MARIQUITA, COLOMBIA:5.2125:W74.8836 -RIO NEGRO, COLOMBIA:6.16444:W75.4231 -RIO HACHA, COLOMBIA:11.5261:W72.9258 -SARAVENA, COLOMBIA:6.95806:W71.855 -SAN JOSE DEL GUAVIARE, COLOMBIA:2.57944:W72.6392 -SANTA MARTA, COLOMBIA:11.1194:W74.2306 -SAN ANDRES ISLAND, COLOMBIA:12.5833:W81.7111 -SAN VINCENTE DE CAGUAN, COLOMBIA:2.15194:W74.7661 -TRINIDAD, COLOMBIA:5.43028:W71.6581 -TAME, COLOMBIA:6.45083:W71.76 -TURBO, COLOMBIA:8.07444:W76.7411 -ARAUCA, COLOMBIA:7.06861:W70.7367 -QUIBDO, COLOMBIA:5.69056:W76.6411 -TULUA, COLOMBIA:4.08833:W76.235 -VALLEDUPAR, COLOMBIA:10.435:W73.2494 -VILLAVICENCIO, COLOMBIA:4.16778:W73.6136 -EL-YOPAL, COLOMBIA:5.31889:W72.3839 -APOLO, BOLIVIA:-14.7394:W68.4108 -ASCENSION DE GUARAYOS, BOLIVIA:-15.7192:W63.0922 -BERMEJO, BOLIVIA:-22.7694:W64.315 -CAMIRI, BOLIVIA:-20.0069:W63.5275 -COCHABAMBA, BOLIVIA:-17.4208:W66.1769 -CHAPACURA, BOLIVIA:-16.99:W65.1414 -CHARANA, BOLIVIA:-17.5939:W69.4342 -COBIJA, BOLIVIA:-11.0403:W68.7828 -CONCEPTION, BOLIVIA:-16.1433:W62.0258 -GUAYARAMERIN, BOLIVIA:-10.8217:W65.3458 -SAN JOAQUIN, BOLIVIA:-13.0528:W64.6617 -LA PAZ, BOLIVIA:-16.5131:W68.1922 -MAGDALENA, BOLIVIA:-13.2536:W64.0628 -ORURO, BOLIVIA:-17.9633:W67.0761 -POTOSI, BOLIVIA:-19.5433:W65.7239 -PUERTO SUAREZ, BOLIVIA:-18.9753:W57.8206 -SAN RAMON, BOLIVIA:-13.2636:W64.6053 -ROBORE, BOLIVIA:-18.3281:W59.7661 -RIBERALTA, BOLIVIA:-11.0103:W66.0733 -RURRENABAQUE, BOLIVIA:-14.4283:W67.5014 -REYES, BOLIVIA:-14.3061:W67.3536 -SANTA ANA, BOLIVIA:-13.7619:W65.435 -SAN BORJA, BOLIVIA:-14.8575:W66.7375 -SAN IGNACIO DE VELASCO, BOLIVIA:-16.3844:W60.9628 -SAN IGNACIO DE MOXOS, BOLIVIA:-14.9656:W65.6336 -SUCRE, BOLIVIA:-19.0069:W65.2889 -SAN MATHIAS, BOLIVIA:-16.3386:W58.4017 -TARIJA, BOLIVIA:-21.5556:W64.7008 -TRINIDAD, BOLIVIA:-14.8194:W64.9183 -SANTA CRUZ, BOLIVIA:-17.6447:W63.1353 -ZANDERY, SURINAM:5.45278:W55.1878 -PARAMARIBO, SURINAM:5.81083:W55.1906 -CAYENNE, FRENCH GUYANA:4.81972:W52.3603 -ST.-GEORGES OYAPOCK, FRENCH GUYANA:3.8975:W51.8039 -CIRO ALEGRIA, PERU:-4.6075:W77.9408 -ANDOAS, PERU:-2.795:W76.4661 -ATALAYA, PERU:-10.7289:W73.7664 -MOYOBAMBA, PERU:-6.01889:W76.9883 -CABALLOCOCHA, PERU:-3.91667:W70.5081 -IBERIA, PERU:-11.4114:W69.4886 -PUCALLPA, PERU:-8.37778:W74.5742 -CHIMBOTE, PERU:-9.15083:W78.5236 -PUERTO ESPERANZA, PERU:-9.76806:W70.7064 -MOQUEGUA, PERU:-17.1789:W70.9306 -TINGO MARIA, PERU:-9.29:W76.0058 -CHICLAYO, PERU:-6.78722:W79.8281 -AYACUCHO, PERU:-13.1547:W74.2042 -ANDAHUAYLAS, PERU:-13.7064:W73.3503 -ANTA, PERU:-9.34722:W77.5983 -LIMA, PERU:-12.0217:W77.1142 -JUANJUI, PERU:-7.16944:W76.7278 -JAUJA, PERU:-11.7831:W75.4733 -JULIACA, PERU:-15.4669:W70.1581 -SAN JUAN, PERU:-15.3575:W75.1356 -CAJAMARCA, PERU:-7.13639:W78.49 -ILO, PERU:-17.695:W71.3439 -LAS PALMAS, PERU:-12.1606:W76.9989 -TUMBES, PERU:-3.5525:W80.3808 -YURIMAGUAS, PERU:-5.89389:W76.1183 -HUANUCO, PERU:-9.87806:W76.2042 -COLLIQUE, PERU:-11.9286:W77.0611 -CHACHAPOYAS, PERU:-6.20167:W77.8558 -IQUITOS, PERU:-3.78472:W73.3086 -AREQUIPA, PERU:-16.3408:W71.5831 -SAN RAMON, PERU:-11.1286:W75.3503 -TRUJILLO, PERU:-8.08472:W79.1094 -PISCO, PERU:-13.7447:W76.2203 -TARAPOTO, PERU:-6.50861:W76.3731 -TACNA, PERU:-18.0533:W70.2758 -TALARA, PERU:-4.54972:W81.2239 -PUERTO MALDONADO, PERU:-12.6136:W69.2289 -PIURA, PERU:-5.20556:W80.6164 -TALARA, PERU:-4.57639:W81.2539 -NAZCA, PERU:-14.8539:W74.9614 -CUZCO, PERU:-13.5356:W71.9386 -MONTEVIDEO, URUGUAY:-34.7892:W56.2644 -ARTIGAS, URUGUAY:-30.4006:W56.5078 -COLONIA, URUGUAY:-34.4564:W57.7706 -DURAZNO, URUGUAY:-33.3586:W56.4992 -MALDONADO, URUGUAY:-34.855:W55.0942 -MELO, URUGUAY:-32.3378:W54.2167 -MONTEVIDEO, URUGUAY:-34.8378:W56.0303 -PUNTA DEL ESTE, URUGUAY:-34.9136:W54.9206 -PAYSANDU, URUGUAY:-32.365:W58.0611 -RIVERA, URUGUAY:-30.9744:W55.4761 -SALTO, URUGUAY:-31.4397:W57.9906 -TACUAREMBO, URUGUAY:-31.7489:W55.9256 -ACARIGUA, VENEZUELA:9.55333:W69.2378 -ANACO, VENEZUELA:9.42917:W64.4708 -SAN FERNANDO DEATABAPO, VENEZUELA:4.05167:W67.7008 -BARCELONA, VENEZUELA:10.1069:W64.6889 -BARINAS, VENEZUELA:8.61944:W70.2206 -MARACAIBO, VENEZUELA:10.1833:W67.5572 -BARQUISIMETO, VENEZUELA:10.0425:W69.3583 -MARACAY, VENEZUELA:10.2497:W67.6492 -CIUDAD BOLIVAR, VENEZUELA:8.12194:W63.5369 -CAICARA DE ORINOCO, VENEZUELA:7.62583:W66.1647 -SAN CARLOS, VENEZUELA:9.64889:W68.5753 -CALABOZO, VENEZUELA:8.92444:W67.4169 -CANAIMA, VENEZUELA:6.23194:W62.8542 -CARORA, VENEZUELA:10.1756:W70.065 -CARUPANO, VENEZUELA:10.66:W63.2617 -CORO, VENEZUELA:11.4147:W69.6808 -CARACAS, VENEZUELA:10.2861:W66.8158 -CUMANA, VENEZUELA:10.4503:W64.1303 -CARRIZAL, VENEZUELA:9.37194:W66.9228 -EL DORADO, VENEZUELA:6.715:W61.6389 -ELORZA, VENEZUELA:7.05972:W69.4967 -GUASDUALITO, VENEZUELA:7.21083:W70.7564 -GUIRIA, VENEZUELA:10.5739:W62.3125 -GUANARE, VENEZUELA:9.02694:W69.755 -HIGUEROTE, VENEZUELA:10.4622:W66.0925 -ISLA DE COCHE, VENEZUELA:10.7942:W63.9814 -PARAGUANA, VENEZUELA:11.7808:W70.1517 -SAN JUAN DE LOS MORROS, VENEZUELA:9.90694:W67.3794 -LA FRIA, VENEZUELA:8.23917:W72.2708 -LA ORCHILA, VENEZUELA:11.8086:W66.1792 -MARACAIBO, VENEZUELA:10.5581:W71.7278 -MERIDA, VENEZUELA:8.58194:W71.1608 -PORLAMAR, VENEZUELA:10.9125:W63.9664 -CARACAS, VENEZUELA:10.6031:W66.9906 -MATURIN, VENEZUELA:9.74917:W63.1522 -PUERTO AYACUCHO, VENEZUELA:5.61972:W67.6058 -PUERTO CABELLO, VENEZUELA:10.4803:W68.0728 -SAN CRISTOBAL, VENEZUELA:7.80111:W72.2028 -GUAYANA, VENEZUELA:8.28833:W62.7603 -PALMARITO, VENEZUELA:7.57556:W70.1742 -SAN ANTONIO, VENEZUELA:7.85222:W72.4347 -SANTA BARBARA, VENEZUELA:7.80333:W71.1656 -SANTO DOMINGO, VENEZUELA:7.565:W72.035 -SAN FELIPE, VENEZUELA:10.2786:W68.755 -SAN FERNANDO DE APURE, VENEZUELA:7.8825:W67.4436 -SAN TOME, VENEZUELA:8.945:W64.1508 -SANTA BARBARA, VENEZUELA:8.97444:W71.9431 -TUCUPITA, VENEZUELA:9.08889:W62.0942 -TUMEREMO, VENEZUELA:7.24917:W61.5289 -VALENCIA, VENEZUELA:10.1581:W67.9267 -MERIDA, VENEZUELA:8.62417:W71.6728 -VALERA, VENEZUELA:9.34056:W70.5839 -VALLE DE LA PASCUA, VENEZUELA:9.22194:W65.9933 -KAMARANG, GUYANA:5.86528:W60.6142 -LINDEN, GUYANA:5.96583:W58.2703 -LETHEM, GUYANA:3.3725:W59.7892 -ANTIGUA, LEEWARD ISLANDS:17.1367:W61.7925 -BRIDGETOWN, BARBADOS:13.0744:W59.4922 -CANEFIELD, DOMINICA:15.3367:W61.3919 -DOMINICA, DOMINICA:15.5469:W61.3 +FLORENNES, BELGIUM:50.2436:4.64861 +FLORES (FLORES ISL.), ACORES:39.455:W31.1311 +FLORIANOPOLIS, BRAZIL:-27.6725:W48.5478 +FLORIDABLANCA, PHILIPPINES:14.9864:120.493 +FLORIDA, CUBA:21.4997:W78.2028 +FLORO, NORWAY:61.5839:5.025 +FOGGIA, ITALY:41.4328:15.535:507 +FORDE, NORWAY:61.3925:5.76417 +FORESTVILLE, CANADA:48.7461:W69.0972 +FORLI, ITALY:44.1947:12.07:228 +FORMOSA, ARGENTINA:-26.2125:W58.2281 +FORTALEZA, BRAZIL:-3.77611:W38.5325 +FORT BENNING, USA:32.3372:W84.9911 +FORT CARSON, USA:38.6783:W104.756 +FORT CHIPEWYAN, CANADA:58.7672:W111.117 FORT-DE-FRANCE, ANTILLES:14.5908:W61.0031 -ST. MARTIN, ANTILLES:18.0997:W63.0469 -ST.-BARTHELEMY, ANTILLES:17.9:W62.85 -GRAND-BOURG, ANTILLES:15.8686:W61.27 -POINTE-A-PITRE, ANTILLES:16.2653:W61.5317 -POINT SALINES, GRENADA:12.0042:W61.7861 -ST. THOMAS, VIRGIN ISL.:18.3372:W64.9733 -ST. CRIOX ISLAND, VIRGIN ISL.:17.7017:W64.7983 -AGUADILLA, PUERTO RICO:18.4947:W67.1294 -FAJARDO, PUERTO RICO:18.3089:W65.6617 -SAN JUAN, PUERTO RICO:18.4567:W66.0981 -MAYAGUEZ, PUERTO RICO:18.2556:W67.1483 -ROOSEVELT ROADS, PUERTO RICO:18.245:W65.6433 -PONCE, PUERTO RICO:18.0081:W66.5628 -SAN JUAN, PUERTO RICO:18.4392:W66.0017 -BASSE TERRE, ST. KITTS & NEVIS:17.3111:W62.7186 -CHARLESTOWN, ST. KITTS & NEVIS:17.2056:W62.5897 -CASTRIES, ST. LUCIA ISLAND:14.02:W60.9928 -HEWANDORRA, ST. LUCIA ISLAND:13.7331:W60.9525 -ORANJESTAD, ARUBA:12.5014:W70.015 -KRALENDIJK, ANTILLES:12.1308:W68.2683 -WILLEMSTAD, ANTILLES:12.1886:W68.9597 -ORANJESTAD, ANTILLES:17.4964:W62.9792 -PHILIPSBURG, ANTILLES:18.0408:W63.1089 -THE VALLEY, ANGUILLA ISL.:18.2047:W63.055 -PLYMOUTH, MONTSERRAT ISLAND:33.5869:W80.2086 -SCARBOROUGH, TRINIDAD & TOBAGO:11.1494:W60.8319 -PORT-OF-SPAIN, TRINIDAD & TOBAGO:10.5953:W61.3372 -ROADTOWN/BEEF ISLAND, VIRGIN ISL.:18.4447:W64.5428 -BEQUIA, ST.VINCENT/GRENADINES:12.9883:W61.2619 -CANOUAN ISLAND, ST.VINCENT/GRENADINES:12.6989:W61.3422 -MUSTIQUE, ST.VINCENT/GRENADINES:12.8875:W61.18 -KINGSTOWN, ST.VINCENT/GRENADINES:13.1442:W61.2108 -ALMA-ATA, KAZAKHSTAN:43.3519:77.0403 -BALKHASH, RUSSIA:46.8942:75.0047 -BISHKEK, RUSSIA:43.0617:74.4783:169 -OSH, RUSSIA:40.6089:72.7931:182 -CHIMKENT, RUSSIA:42.3644:69.4792:1170 -DZHEZKAZGAN, RUSSIA:47.7083:67.7333 -AKTYUBINSK, RUSSIA:50.245:57.2033:400 -KUSTANAY, RUSSIA:53.2064:63.5508:240 -BAKU, RUSSIA:40.4675:50.0467:2140 -ALDAN, RUSSIA:34.8042:W96.6711:33 -YAKUTSK, RUSSIA:62.0931:129.771:122 -YEREVAN, RUSSIA:40.1483:44.3967:223 -TBILISI, GEORGIA:41.6692:44.9547:726 -SUKHUMI, GEORGIA:42.8581:41.1281:27 -BLAGOVESCHENSK, RUSSIA:50.4217:127.41:321 -KHABAROVSK, RUSSIA:48.5278:135.188:383 -ANADYR, RUSSIA:64.7347:177.741:20 -MAGADAN, RUSSIA:59.91:150.717:295 -PEVEK, RUSSIA:67.5:171:60 -PETROPAVLOVSK, RUSSIA:53.1664:158.453:400 -OKHA, RUSSIA:53.515:142.888:15254 -YUZHNO-SAKHALINSK, RUSSIA:46.8886:142.717:164 -VLADIVOSTOK, RUSSIA:43.3989:132.151:331 -CHITA, RUSSIA:52.0261:113.305:534 -BRATSK, RUSSIA:56.3708:101.699:262 -IRKUTSK, RUSSIA:52.2669:104.395:280 -ULAN-UDE, RUSSIA:51.8067:107.438:347 -KIEV, RUSSIA:50.345:30.895:839 -DONETSK, RUSSIA:48.0733:37.74:358 -DNEPROPETROVSK, RUSSIA:48.3567:35.1017:409 -SIMFEROPOL, RUSSIA:45.0386:33.9831:107 -KHARKOV, RUSSIA:49.3589:26.9339:350 -LVOV, RUSSIA:49.8125:23.9561:182 -ODESSA, RUSSIA:46.4269:30.6781:162 -ST. PETERSBURG, RUSSIA:59.8:30.265:1439 -MURMANSK, RUSSIA:68.7817:32.7506:154 -GOMEL, RUSSIA:52.5269:31.0167:139 -VITEBSK, RUSSIA:55.1667:30.1333:124 -KALININGRAD, RUSSIA:54.89:20.5925:223 -MINSK, RUSSIA:53.8644:27.5394:409 -ABAKAN, RUSSIA:53.74:91.385:112 -BARNAUL, RUSSIA:53.3639:83.5419:321 -KEMOROVO, RUSSIA:55.2697:86.1069:294 -OMSK, RUSSIA:54.9669:73.31:573 -KRASNODAR, RUSSIA:45.035:39.1717:339 -MAKHACHKALA, RUSSIA:42.8167:47.6522:468 -MINERALNYE VODY, RUSSIA:44.225:43.0817:51 -STAVROPOL, RUSSIA:45.1092:42.1128 -ROSTOV, RUSSIA:47.2581:39.8178:354 -SOCHI, RUSSIA:43.4458:39.9475:176 -ASTRAKHAN, RUSSIA:46.2833:48.0061:208 -VOLGOGRAD, RUSSIA:48.7822:44.3447:859 -CHELYABINSK, RUSSIA:55.3033:61.5067:530 -MAGNETIOGORSK, RUSSIA:53.3933:58.76:392 -SALEKHARD, RUSSIA:66.59:66.6103:84 -NIZHNEVARTOVSK, RUSSIA:60.95:76.4667:271 -PERM, RUSSIA:57.9167:56.0256:803 -SURGUT, RUSSIA:61.25:73.5:354 -SVERDLOVSK, RUSSIA:56.7414:60.8036:468 -TOBOLSK, RUSSIA:37.1322:W92.0839:222 -KURGAN, RUSSIA:55.475:65.4147:393 -DUSHANBE, RUSSIA:38.5433:68.825:185 -NUKUS, RUSSIA:42.4864:59.6225:222 -BUKHARA, RUSSIA:39.775:64.48:143 -SAMARKAND, RUSSIA:39.7006:66.9847:120 -TERMEZ, RUSSIA:37.2864:67.3083:36 -TASHKENT, UZBEKISTAN:41.2572:69.2817:334 -BRYANSK, RUSSIA:53.2142:34.1764:186 -MOSCOW, RUSSIA:55.7504461:37.6174943:2511 -TVER, RUSSIA:56.8247:35.7575:152 -VORONEZH, RUSSIA:51.8142:39.2297:596 -SYKTYVKAR, RUSSIA:61.6475:50.8456:152 -KAZAN, RUSSIA:55.6078:49.2772:515 -ORENBURG, RUSSIA:51.7956:55.4567:259 -PENZA, RUSSIA:28.9542:W98.5197:304 -UFA, RUSSIA:54.5575:55.8742:707 -SAMARA, RUSSIA:53.5053:50.1644:541 -AHMEDABAD, INDIA:23.0747:72.6317 -AKOLA, INDIA:20.6989:77.0564 -AURANGABAD, INDIA:19.8631:75.3981 -BOMBAY, INDIA:19.0886:72.8678 -BILASPUR, INDIA:21.9886:82.1111 -BHUJ, INDIA:23.2878:69.67 -BELGAUM, INDIA:15.8592:74.6181 -BARODA, INDIA:22.3361:73.2261 -BHOPAL, INDIA:23.285:77.3372 -BHAUNAGAR, INDIA:21.7519:72.185 -DAMAN, INDIA:20.435:72.8436 -DEESA, INDIA:24.2678:72.2053 -GOA, INDIA:15.3806:73.8331 -INDORE, INDIA:22.7217:75.8008 -JABALPUR, INDIA:23.1778:80.0519 -BOMBAY, INDIA:19.0981:72.8339 -JAMNAGAR, INDIA:22.4664:70.0114 -KANDLA, INDIA:23.1125:70.1003 -KHAJURAHO, INDIA:24.8194:79.9192 -KOLHAPUR, INDIA:16.6639:74.2881 -KESHOD, INDIA:21.3167:70.27 -NAGPUR, INDIA:21.0919:79.0469 -NASIK ROAD, INDIA:19.9625:73.8069 -PUNE, INDIA:18.5819:73.9194 -PORBANDAR, INDIA:21.6494:69.6564 -RAJKOT, INDIA:22.3092:70.7794 -RAIPUR, INDIA:21.1803:81.7386 -SHOLAPUR, INDIA:17.6278:75.9347 -SURAT, INDIA:21.115:72.7428 -UDAIPUR, INDIA:24.6175:73.9128 -COLOMBO, SRI LANKA:7.18111:79.8836 -ANURADHAPURA, SRI LANKA:8.30111:80.4281 -BATTICALOA, SRI LANKA:7.70556:81.6778 -COLOMBO, SRI LANKA:6.82194:79.8861 +FORT DODGE, USA:42.5514:W94.1925 +FORT DRUM, USA:44.0556:W75.7194 +FORT EUSTIS, USA:37.1325:W76.6086 +FORT HOOD, USA:31.1386:W97.7144 +FORT HUACHUCA, USA:31.5883:W110.344 +FORT IRWIN, USA:35.2803:W116.63 +FORT KNOX, USA:37.9069:W85.9719 +FORT LAUDERDALE, USA:26.0725:W80.1525 +FORT LEAVENWORTH, USA:39.3683:W94.9144 +FORT LEONARDWOOD, USA:37.7414:W92.1406 +FORT LEWIS, USA:47.0792:W122.581 +FORT MCMURRAY, CANADA:56.6533:W111.222 +FORT MCPHERSON, CANADA:67.4078:W134.86 +FORT MEADE, USA:39.0853:W76.7592 +FORT MYERS, USA:26.5361:W81.755 +FORT NELSON, CANADA:58.8364:W122.597 +FORT POLK, USA:31.0447:W93.1914 +FORT RESOLUTION, CANADA:61.1808:W113.69 +FORT RICHARDSON, USA:61.2661:W149.653 +FORT RILEY, USA:39.055:W96.7644 +FORT SAINT JOHN, CANADA:56.2381:W120.74 +FORT SILL, USA:34.6497:W98.4019 +FORT SIMPSON, CANADA:61.7603:W121.237 +FORT SMITH, CANADA:60.0222:W111.96 +FORT SMITH, USA:35.3364:W94.3672 +FORT WAINWRIGHT, USA:64.8375:W147.614 +FORT WORTH, USA:32.8197:W97.3622:880 +FORT YUKON, USA:66.5714:W145.25 +FOUMBAN, CAMEROON:5.63667:10.7506 +FOZ DO IGUACU, BRAZIL:-25.5961:W54.4869 +FRANCA, BRAZIL:-20.5919:W47.3828 +FRANCEVILLE, GABON:-1.65611:13.4378 +FRANCISCO MENDEZ, CAPE VERDE ISLANDS:14.9244:W23.4933 +FRANCISTOWN, BOTSWANA:-21.1594:27.4744 +FRANKFURT, GERMANY:50.1106444:8.6820917:248 +FREDERICTON, CANADA:45.8694:W66.5317 +FREEPORT, BAHAMAS:26.5586:W78.6953 +FREETOWN, SIERRA LEONE:8.61639:W13.1953 +FREIBURG, GERMANY:48.0203:7.83361:153 +FRESNO, USA:36.7761:W119.718 +FRIEDRICHSHAFEN, GERMANY:47.6711:9.51139:69 +FRITZLAR, GERMANY:51.1144:9.28583 +FRONTEIRA, BRAZIL:-20.2783:W49.1872 +FUERSTENFELDBRUCK, GERMANY:48.2056:11.2669 +FUERTE GRAL ROCA, ARGENTINA:-39.0006:W67.6203 +FUERTEVENTURA, CANARY ISLANDS:28.4525:W13.8636 +FUJEIRAH, UNITED ARAB EMIRATES:25.1122:56.3239 +FUKUE, JAPAN:32.6661:128.833 +FUKUI, JAPAN:36.1428:136.224 +FUKUOKA, JAPAN:33.5864:130.45 +FUNAFUTI, TUVALU ISLAND:-8.51667:179.217 +FUTEMA, JAPAN:26.2742:127.756 +FUZHOU, CHINA:25.9333:119.662:12232 +GABERONE, BOTSWANA:-24.555:25.9181 +GABES, TUNISIA:33.8767:10.1033 +GACHSARAN, IRAN:30.3375:50.8278 +GAFSA, TUNISIA:34.4219:8.8225 +GAGE, USA:36.2953:W99.7764 +GAINESVILLE, USA:29.69:W82.2717 +GALAPAGOS, GALAPAGOS I. (ECUADOR:-0.453611:W90.2658 +GALENA, USA:64.7361:W156.937 +GALLIVARE, SWEDEN:67.1322:20.8144 GALOYA, SRI LANKA:7.3375:81.6256 -JAFFNA, SRI LANKA:9.79222:80.07 -TRINCIOMALEE, SRI LANKA:8.53889:81.1814 -WIRAWILA, SRI LANKA:6.25444:81.235 -BATTAMBANG, CAMBODIA:13.0956:103.224 -KOMPONG CHNANG, CAMBODIA:12.255:104.564 -PHNOM-PENH, CAMBODIA:11.5464:104.844 -SIEM-REAP, CAMBODIA:13.4106:103.813 -STUNG TRENG, CAMBODIA:13.5314:106.014 -ALONG, INDIA:28.1747:94.8019 -AGARTALA, INDIA:23.8889:91.2408 -AIZWAL, INDIA:23.7461:92.8031 -BAGHDOGRA, INDIA:26.6814:88.3281 -BALURGHAT, INDIA:25.2608:88.7956 -BOKARO, INDIA:23.6433:86.1486 -BHUBANESWAR, INDIA:20.2442:85.8178 -CALCUTTA, INDIA:22.6547:88.4467 -COOCH-BEHAR, INDIA:26.3303:89.4669 -DHANBAD, INDIA:23.8339:86.425 -DEPARIZO, INDIA:27.9889:94.2233 -GORAKHPUR, INDIA:26.7394:83.4494 +GALVESTON, USA:29.2653:W94.8603 +GALWAY, IRELAND:53.3014:W8.93917:54 +GAMBELLA, ETHIOPIA:8.12833:34.5633 +GANDER, CANADA:48.9369:W54.5681 +GAO, MALI:16.2483:W0.00527778 +GARDEN CITY, USA:37.9275:W100.724 +GARISSA, KENYA:-0.463333:39.6481 +GAROUA, CAMEROON:9.33583:13.37 +GASPE, CANADA:48.7753:W64.4786 +GASSIM, SAUDI ARABIA:26.3028:43.7744 +GATINEAU, CANADA:45.5214:W75.5642 GAUHATI, INDIA:26.1061:91.5847 +GAVLE, SWEDEN:60.5933:16.9514 GAYA, INDIA:24.7481:84.9425 -HIRAKUD, INDIA:21.5792:84.0061 -IMPHAL, INDIA:24.7597:93.8969 -JHARSUGUDA, INDIA:21.9133:84.0503 -JEYPORE, INDIA:18.8797:82.5519 -JAMSHEDPUR, INDIA:22.8119:86.1675 -JORHAT, INDIA:26.7306:94.1756 -KAMALPUR, INDIA:24.135:91.8106 -KAILASHAHAR, INDIA:24.3083:92.0075 -SILCHAR, INDIA:24.9128:92.9786 -LILABARI, INDIA:27.2906:94.0967 -MOHANBARI, INDIA:27.4833:95.0175 -MAZUFFARPUR, INDIA:26.12:85.3131 -NAWAPARA, INDIA:20.87:82.5194 -PASIGHAT, INDIA:28.0661:95.3356 -PANAGARH, INDIA:23.4744:87.4278 -PATINA, INDIA:25.5906:85.0878 -PURNEA, INDIA:25.76:87.4092 -RANCHI, INDIA:23.3147:85.3214 -ROURKELA, INDIA:22.2564:84.8144 -UTKELA, INDIA:20.0975:83.1833 -ZERO, INDIA:27.5881:93.8283 -COX'S BAZAR, BANGLADESH:21.4519:91.9642 -CHITTAGONG, BANGLADESH:22.2494:91.8131 -ISHURDI, BANGLADESH:24.1525:89.0494 -JESSORE, BANGLADESH:23.1836:89.1608 -RAJSHAHI, BANGLADESH:24.4369:88.6164 -SAIDPUR, BANGLADESH:25.7592:88.9086 -SYLHET OSMANI, BANGLADESH:24.9628:91.8672 -DHAKA, BANGLADESH:23.7783:90.3825 -DHAKA, BANGLADESH:23.8433:90.3978 -HONG KONG, HONG KONG:22.3089:113.914 -SEK KONG, HONG KONG:22.4364:114.08 -AGRA, INDIA:27.1556:77.9608 -ALLAHABAD, INDIA:25.4389:81.7342 -AMRITSAR, INDIA:31.7075:74.7992 -BIKANER, INDIA:28.0725:73.2067 -BAKSHI KA TALAB, INDIA:26.9883:80.8931 -VARANASI, INDIA:25.4519:82.8589 -KULU, INDIA:31.8817:77.1844 -BHATINDA, INDIA:30.27:74.7556 -BHIWANI, INDIA:28.8375:76.1775 -BAREILLY, INDIA:28.4222:79.4497 -CHANDIGARH, INDIA:30.6733:76.7883 -KANPUR, INDIA:26.4042:80.41 -DELHI, INDIA:28.5842:77.2053 -DEHRA DUN, INDIA:30.1872:78.18 -DELHI, INDIA:28.5664:77.1031 +GAZIANTEP, TURKEY:36.9481:37.4792:6819 +GBADOLITE, ZAIRE:4.25306:20.9753 +GDANSK, POLAND:54.3775:18.4661 +GEILENKIRCHEN, GERMANY:50.9608:6.0425 +GEMENA, ZAIRE:3.23528:19.7711 +GENERAL PICO, ARGENTINA:-35.6961:W63.7581 +GENEVA, SWITZERLAND:46.2381:6.10889 +GENOA, ITALY:44.4119:8.84167:243 +GEORGE, SOUTH AFRICA:-34.0053:22.3789 +GEORGETOWN, CAYMAN ISLANDS:19.2928:W81.3575 +GERALDTON, CANADA:49.7783:W86.9394 +GERONA, SPAIN:41.9008:2.76028 +GHADAMES, LIBYA:30.1517:9.71528 +GHARDAIA, ALGERIA:32.3839:3.79389 +GHAT, LIBYA:25.1456:10.1425 +GHAZVIN, IRAN:36.2414:50.0475 +GHEDI, ITALY:45.4319:10.2675:60 +GHESHM I., IRAN:26.755:55.9019 +GHRISS, ALGERIA:35.2075:0.146944 +GIALLO, LIBYA:28.6383:21.4378 +GIBRALTAR, GIBRALTAR:36.1508:W5.34944 +GIEBELSTADT, GERMANY:49.6481:9.96639 +GIFU, JAPAN:35.3942:136.869 +GILGIT, PAKISTAN:35.9186:74.3336 +GILLAM, CANADA:56.35:W94.7 +GILZE-RIJEN, NETHERLANDS:51.5678:4.93306:65 +GIMO, SWEDEN:60.1328:18.105 +GIOIA DEL COLLE, ITALY:40.7678:16.9333:206 +GIRARDOT, COLOMBIA:4.27611:W74.7967 +GISBORNE, NEW ZEALAND:-38.6633:177.978 +GISENYI, RWANDA:-1.67694:29.2586 +GIYANI, SOUTH AFRICA:-23.2836:30.6497 +GIZAN, SAUDI ARABIA:16.9011:42.5858 +GJOA HAVEN, CANADA:68.6356:W95.8497 +GLASGOW, UK:55.8609825:W4.2488787:368 +GLENTANNER, NEW ZEALAND:-43.9067:170.128 +GOA, INDIA:15.3806:73.8331 +GOBERNADOR GORDILLO, ARGENTINA:-30.3453:W66.2936 +GODOLLO, HUNGARY:47.5708:19.3386:61 +GODTHAAB, GREENLAND:64.1908:W51.6781 +GOIANIA, BRAZIL:-16.6311:W49.2222 +GOLBANDI, IRAN:27.4839:52.6183 +GOLDSBORO, USA:35.3392:W77.9606 +GOLFITO, COSTA RICA:8.65389:W83.1819 +GOMA, ZAIRE:-1.67056:29.2383 +GOMEL, RUSSIA:52.5269:31.0167:139 +GONDAR, ETHIOPIA:12.5183:37.4322 +GOOSE BAY, CANADA:53.3192:W60.4258 +GORAKHPUR, INDIA:26.7394:83.4494 +GORE BAY, CANADA:45.8853:W82.5678 +GORGAN, IRAN:36.9092:54.4017 +GORNA ORECHOVICA, BULGARIA:43.1514:25.7128 +GOROKA, PAPUA NEW GUINEA:-6.08167:145.392 +GORONTALO, INDONESIA:0.636667:122.852 +GOTHENBORG, SWEDEN:57.6628:12.2797 +GOVERNOR'S HARBOR, BAHAMAS:25.2844:W76.3308 +GOYA, ARGENTINA:-29.1058:W59.2186 +GRACIOSA ISLAND, ACORES:39.0919:W28.0297 +GRAFENWOEHR, GERMANY:49.6994:11.9411 +GRAHAMSTOWN, SOUTH AFRICA:-33.2847:26.4981 +GRANADA, SPAIN:37.1331:W3.63556 +GRAN CANARIA, CANARY ISLANDS:27.9317:W15.3864 +GRAND-BOURG, ANTILLES:15.8686:W61.27 +GRANDE PRAIRIE, CANADA:55.1797:W118.885 +GRAND FORKS, USA:47.9492:W97.1761 +GRAND RAPIDS, USA:42.8808:W85.5228 +GRANDVIEW, USA:38.8433:W94.5606 +GRANT COUNTY AIRPORT, USA:47.2075:W119.32 +GRANTS, USA:35.1653:W107.901 +GRANVILLE, FRANCE:48.8831:W1.56417:9 +GRAZ, AUSTRIA:46.9908:15.4394 +GRAZZANISE, ITALY:41.0608:14.0819:47 +GREAT EXUMA, BAHAMAS:23.5625:W75.8778 +GREAT FALLS, USA:47.4819:W111.371 +GREEN BAY, USA:44.485:W88.1294 +GREEN ISLAND, TAIWAN:22.6744:121.458 +GREENVILE, USA:33.0678:W96.0653 +GREENWOOD, CANADA:44.9844:W64.9169 +GREENWOOD, USA:33.4942:W90.0844 +GRENCHEN, SWITZERLAND:47.1814:7.41694 +GRENOBLE, FRANCE:45.3628:5.32917 +GREYTOWN, SOUTH AFRICA:-29.1219:30.5867 +GROBNIK, CROATIA:45.3794:14.5036 +GRONINGEN, NETHERLANDS:53.1194:6.57944:83 +GROSSETO, ITALY:42.7608:11.0722:474 +GROTTAGLIE, ITALY:40.5161:17.4022:102 +GUADALAJARA, MEXICO:20.5217:W103.311 +GUAJARA-MIRIM, BRAZIL:-10.7861:W65.2847 +GUALAQUIZA, ECUADOR:-3.42333:W78.5731 +GUALEGUAYCHU, ARGENTINA:-33.0058:W58.6131 +GUANAJA, HONDURAS:16.4453:W85.9064 +GUANARE, VENEZUELA:9.02694:W69.755 +GUANGZHOU, CHINA:23.1842:113.266:7434 +GUANTANAMO, CUBA:19.9064:W75.2069 +GUAPI, COLOMBIA:2.57:W77.8983 +GUAPILES, COSTA RICA:10.2172:W83.7947 +GUARATINGUETA, BRAZIL:-22.7914:W45.2047 +GUASDUALITO, VENEZUELA:7.21083:W70.7564 +GUATEMALA CITY, GUATEMALA:14.5831:W90.5275 +GUAYANA, VENEZUELA:8.28833:W62.7603 +GUAYAQUIL, ECUADOR:-2.15778:W79.8839 +GUAYARAMERIN, BOLIVIA:-10.8217:W65.3458 +GUAYMARAL, COLOMBIA:4.81222:W74.0647 +GUAYMAS, MEXICO:27.9689:W110.925 +GUERNSEY, GUERNSEY ISLD.:49.4347:W2.60194 +GUETERSLOH, GERMANY:51.9228:8.30611 +GUIDONIA, ITALY:41.9903:12.7408:79 +GUILIN, CHINA:25.2178:110.039:27809 +GUIRIA, VENEZUELA:10.5739:W62.3125 +GUISCRIFF-SCAER, FRANCE:48.0525:W3.66444 +GUIUAN, PHILIPPINES:11.0356:125.743 +GULKANA, USA:62.1547:W145.456 +GULU, UGANDA:2.80556:32.2717 GUNA, INDIA:24.6544:77.3472 +GUNUNG SITOLI, INDONESIA:1.16639:97.7028 +GURIAT, SAUDI ARABIA:31.4108:37.2789 +GUSAU, NIGERIA:12.1717:6.69611 +GWADAR, PAKISTAN:25.2331:62.3294 GWALIOR, INDIA:26.2939:78.2275 +GWERT, ZIMBABWE:-19.4367:29.8617 +GWINN, USA:46.3536:W87.3958 +HA'APAI, TONGA:-19.7769:W174.341 +HACHIJOJIMA, JAPAN:33.115:139.786 +HACHINOE, JAPAN:40.5564:141.466 +HAFR AL-BATIN, SAUDI ARABIA:28.335:46.125 +HAGFORS, SWEDEN:60.02:13.5789 +HAGSHULT, SWEDEN:57.2922:14.1372 +HAGUENAU, FRANCE:48.7933:7.81611:182 +HAHN, GERMANY:49.9497:7.26389:5 +HAIFA, ISRAEL:32.8111:35.0439 +HAILAR, CHINA:49.205:119.825:1320 +HAIL, SAUDI ARABIA:27.4378:41.6861 +HAKODATE, JAPAN:41.77:140.822 +HALFPENNY GREEN, ENGLAND:52.5175:W2.25972 +HALIFAX, CANADA:44.6397:W63.4994 +HALL BEACH, CANADA:68.7761:W81.2436 +HALLE, GERMANY:51.5519:12.0525:135 +HALLI, FINLAND:61.8558:24.7864 +HALLVIKEN, SWEDEN:63.7383:15.4583 +HALMSTAD, SWEDEN:56.6911:12.82 +HAMADAN, IRAN:34.8681:48.5522 +HAMAMATSU, JAPAN:34.75:137.703 +HAMAR, NORWAY:60.8183:11.0672 +HAMBURG, GERMANY:53.550341:10.000654:755 +HAMEENKYRO, FINLAND:61.6894:23.0736 +HAMILTON, CANADA:43.1731:W79.935 +HAMILTON, NEW ZEALAND:-37.8664:175.332 +HAMPTON, USA:37.0828:W76.3603 +HANAMAKI, JAPAN:39.4308:141.136 +HANAU, GERMANY:50.1692:8.96139 +HANA, USA:20.7956:W156.014 +HANGZHOU, CHINA:30.2283:120.432:8000 +HANKO, FINLAND:59.8486:23.0833 +HANNOVER, GERMANY:52.3744779:9.7385532:204 +HANOI, VIET NAM:21.2217:105.806 +HAO ISLAND, TUAMOTU ISLANDS:-18.0747:W140.946 +HARARE, ZIMBABWE:-17.7514:30.9244 +HARBIN, CHINA:45.6233:126.25:53068 +HARGEISA, SOMALIA:9.51806:44.0886 +HARLINGEN, USA:26.2283:W97.6542 +HARMONY, SOUTH AFRICA:-28.0786:26.8611 +HARRISBURG, USA:40.1933:W76.7633 +HARRISMITH, SOUTH AFRICA:-28.235:29.1061 +HARRISON, USA:36.2614:W93.1547 +HARTFORD, USA:41.7361:W72.65 +HASSFURT, GERMANY:50.0178:10.5294:52 +HASSI-MESSAOUD, ALGERIA:31.6728:6.14028 +HASSLOSA, SWEDEN:58.4092:13.2625 +HASTINGS, NEW ZEALAND:-39.6467:176.767 +HASTINGS, SIERRA LEONE:8.39444:W13.1283 +HASVIK, NORWAY:70.4867:22.1397 +HATFIELD, ENGLAND:51.7667:0.25:9 +HAUGESUND, NORWAY:59.345:5.20833 +HAVANA, CUBA:22.9892:W82.4092 +HAVERFORDWEST, ENGLAND:51.8331:W4.96111 +HAVRE, USA:48.5428:W109.762 +HAWARDEN, ENGLAND:53.1781:W2.97778 +HAWTHORNE, USA:33.9228:W118.335 +HAY RIVER, CANADA:60.8397:W115.783 +HAZTOR, ISRAEL:31.7625:34.7272 +HEDEN, SWEDEN:65.8361:21.4714 +HEDE, SWEDEN:62.4089:13.7472 +HEFEI, CHINA:31.78:117.298:11434 +HEHO, MYANMAR:20.7431:96.7917 +HEIBRON, SOUTH AFRICA:-27.2783:27.9958 +HEIDELBERG, GERMANY:49.3933:8.65194 +HEIDELBERG, SOUTH AFRICA:-26.5061:28.3939 +HELENA, USA:46.6067:W111.983 +HELSINKI, FINLAND:60.23542123800722:24.927984421582043 +HEMAVAN, SWEDEN:65.8061:15.0828 +HENDRIK VERWOERDDAM, SOUTH AFRICA:-30.5619:25.5281 +HERAKLION, GREECE:35.3394:25.1803:245 +HERAT, AFGHANISTAN:34.2097:62.2278 +HERINGSDORF, GERMANY:53.8786:14.1522:37 +HERMOSILLO, MEXICO:29.0958:W111.048 +HEWANDORRA, ST. LUCIA ISLAND:13.7331:W60.9525 +HIBBING, USA:47.3864:W92.8389 +HICKORY, USA:35.7411:W81.3894 +HIERRO, CANARY ISLANDS:27.8147:W17.8869 +HIGH LEVEL, CANADA:58.6214:W117.165 +HIGUEROTE, VENEZUELA:10.4622:W66.0925 +HILDESHEIM, GERMANY:52.1775:9.94556:92 +HILO, USA:19.7203:W155.049 +HIRAKUD, INDIA:21.5792:84.0061 +HIROSHIMA, JAPAN:34.4353:132.922 HISSAR, INDIA:29.1806:75.7531 -JHANSI, INDIA:25.4897:78.5594 -JODHPUR, INDIA:26.2514:73.0481 +HIVA-OA, FRENCH POLYNESIA:-9.76861:W139.011 +HOBART, AUSTRALIA:-42.8361:147.51:1696 +HOBART, USA:34.9911:W99.0511 +HOBBS, USA:32.6875:W103.217 +HO CHI MINH CITY, VIET NAM:10.82:106.662 +HOEDSPRUIT, SOUTH AFRICA:-24.3686:31.0486 +HOF, GERMANY:50.2886:11.8547:58 +HOFN, ICELAND:64.2956:W15.2272 +HOFU, JAPAN:34.0344:131.549 +HOHENFELS, GERMANY:49.2181:11.8361 +HOHN, GERMANY:54.3119:9.53806 +HOKITIKA, NEW ZEALAND:-42.7136:170.985 +HOLGUIN, CUBA:20.7856:W76.315 +HOLMAN ISLAND, CANADA:70.7631:W117.806 +HOLZDORF, GERMANY:51.7678:13.1675 +HOMER, USA:59.6456:W151.476 +HOMESTEAD, USA:25.4883:W80.3836 +HONG KONG, HONG KONG:22.3089:113.914 +HON, LIBYA:29.11:15.9656 +HONOLULU, USA:21.3158:W157.927 +HOPKINSVILLE, USA:36.6683:W87.4961 +HOPSTEN, GERMANY:52.3386:7.54111 +HORTA, ACORES:38.5197:W28.7158 +HOTAN, CHINA:37.0378:79.8658:465 +HOUGHTON LAKE, USA:44.3597:W84.6711 +HOULTON, USA:46.1231:W67.7919 +HOUSTON, USA:29.6072:W95.1586:1553 +HOWARD, PANAMA:8.91444:W79.5994 +HPA-AN, MYANMAR:16.8944:97.6753 +HRADEC KRALOVE, CZECH REPUBLIC:50.2531:15.845 +HSINCHU, TAIWAN:24.8178:120.939 +HUAHINE ISLAND, FRENCH POLYNESIA:-16.6872:W151.022 +HUALIEN, TAIWAN:24.0231:121.618 +HUAMBO, ANGOLA:-12.8086:15.7603 +HUANUCO, PERU:-9.87806:W76.2042 +HUDIKSVALL, SWEDEN:61.7681:17.0806 +HUDSON BAY, CANADA:52.8167:W102.311 +HUHHOT, CHINA:40.8533:111.822:17186 +HULTSFRED, SWEDEN:57.5256:15.8239 +HUMBERSIDE, ENGLAND:53.5744:W0.350833 +HUNTER AAF, USA:32.01:W81.1456 +HURGHADA, EGYPT:27.1839:33.7983 +HURON, USA:44.385:W98.2283 +HUSAVIK, ICELAND:65.9522:W17.4258 +HWANGE NATIONAL PARK, ZIMBABWE:-18.6297:27.0208 +HYAKURI, JAPAN:36.1808:140.415 +HYDERABAD, INDIA:17.4522:78.4611 +HYDERABAD, PAKISTAN:25.3181:68.3661 +HYERES, FRANCE:43.0972:6.14583:132 +HYVINKAA, FINLAND:60.6544:24.8811 +IASI, ROMANIA:47.1789:27.62 +IAUARETE, BRAZIL:0.6075:W69.1858 +IBADAN, NIGERIA:7.36222:3.97833 +IBAGUE, COLOMBIA:4.42139:W75.1331 +IBA, PHILIPPINES:15.3256:119.969 +IBARRA, ECUADOR:0.338333:W78.1364 +IBERIA, PERU:-11.4114:W69.4886 +IBIZA, SPAIN:38.9743901:1.4197463 +IDRE, SWEDEN:61.8686:12.6906 +IEJIMA, JAPAN:26.7286:127.762 +IFRANE, MOROCCO:33.5053:W5.15278 +IGUAZU FALLS, ARGENTINA:-25.7375:W54.4731 +IKI, JAPAN:33.7489:129.785 +ILAM, IRAN:33.5856:46.4053 +ILE D'YEU, FRANCE:46.7186:W2.39111 +ILES DE LA MADELEINE, CANADA:47.4247:W61.7781 +ILHEUS, BRAZIL:-14.8158:W39.0331 +ILIAMNA, USA:59.7536:W154.911 +ILLIZI, ALGERIA:26.5733:8.48361 +ILOILO, PHILIPPINES:10.7131:122.545 +ILO, PERU:-17.695:W71.3439 +ILORIN, NIGERIA:8.44:4.49389 +IMMOLA, FINLAND:61.2492:28.9036 +IMPERATRIZ, BRAZIL:-5.53111:W47.46 +IMPERIAL, USA:32.8342:W115.579 +IMPFONDO, CONGO:1.58944:18.0469 +IMPHAL, INDIA:24.7597:93.8969 +INDIANAPOLIS, USA:39.7172:W86.2942:936 +INDIAN MOUNTAINS, USA:65.9928:W153.704 +INDIAN SPRINGS, USA:36.5869:W115.673 +INDORE, INDIA:22.7217:75.8008 +INGOLSTADT, GERMANY:48.7156:11.5339 +INHAMBANE, MOZAMBIQUE:-23.8764:35.4083 +INNSBRUCK, AUSTRIA:47.26:11.3439 +IN SALAH, ALGERIA:27.2508:2.51194 +INTERLAKEN, SWITZERLAND:46.6764:7.87917 +INTERNATIONAL FALLS, USA:48.5661:W93.4031 +INUVIK, CANADA:68.3042:W133.483 +INVERCARGILL, NEW ZEALAND:-46.4122:168.313 +INVERNESS, UK:57.4790124:W4.225739:20 +IOANNINA, GREECE:39.6964:20.8225:403 +IPATINGA, BRAZIL:-19.4706:W42.4875 +IPIALES, COLOMBIA:0.861667:W77.6717 +IPOH, MALAYSIA:4.56778:101.092 +IQALUIT, CANADA:63.7564:W68.5558 +IQUIQUE, CHILE:-20.535:W70.1811 +IQUITOS, PERU:-3.78472:W73.3086 +IRAN SHAHR, IRAN:27.2364:60.72 +IRINGA, TANZANIA:-7.66861:35.7519 +IRKUTSK, RUSSIA:52.2669:104.395:280 +IRUMA, JAPAN:35.8414:139.41 +ISAFJORDUR, ICELAND:66.0581:W23.1353 +ISHIGAKI, JAPAN:24.3444:124.187 +ISHURDI, BANGLADESH:24.1525:89.0494 +ISIOLO, KENYA:0.339167:37.5908 +ISIRO, ZAIRE:2.8275:27.5881 +ISKENDERUN, TURKEY:36.5733:36.1539:636 +ISLA DE COCHE, VENEZUELA:10.7942:W63.9814 +ISLAMABAD, PAKISTAN:33.6164:73.0992 +ISLA MUJERES, MEXICO:21.245:W86.7397 +ISLA REY JORGE, ANTARCTICA:-62.1908:W58.9867 +ISLAS DEL CISNE, HONDURAS:17.4072:W83.9325 +ISLAY, UK:55.6819:W6.25667 +ISLE OF MAN, ENGLAND:54.0833:W4.62389 +ISLIP, USA:40.795:W73.1 +ISPARTA, TURKEY:37.7853:30.5817:1049 +ISTANBUL, TURKEY:41.05497681583172:28.908688006982437:5343 +ISTRES, FRANCE:43.5225:4.92361 +ITAIPU, PARAGUAY:-25.4075:W54.6194 +ITAITUBA, BRAZIL:-3.12722:W58.4811 +ITUMBIARA, BRAZIL:-18.4444:W49.2133 +ITZEHOE, GERMANY:53.9944:9.57833 +IVALO, FINLAND:68.6072:27.4053 +IWAKUNI, JAPAN:34.1436:132.236 +IWOJIMA, JAPAN:24.7839:141.322 +IZMIR, TURKEY:38.2922:27.1569:11891 +IZTEPEC, MEXICO:16.4492:W95.0936 +IZUMO, JAPAN:35.4136:132.89 +JABALPUR, INDIA:23.1778:80.0519 +JACARE-ACANGA, BRAZIL:-6.23306:W57.7767 +JACKSON, USA:32.3111:W90.0758:287 +JACKSONVILLE, USA:30.4939:W81.6878:1935 +JACOBSBAD, PAKISTAN:28.2842:68.4494 +JAFFNA, SRI LANKA:9.79222:80.07 +JAHROM, IRAN:28.5864:53.5789 JAIPUR, INDIA:26.8239:75.8097 JAISALMER, INDIA:26.8892:70.8644 +JAKARTA, INDONESIA:-6.12556:106.656 +JAKOBSHAVN, GREENLAND:69.2333:W51.0667 +JALALABAD, AFGHANISTAN:34.3992:70.4994 +JALAPA, MEXICO:19.475:W96.7975 +JAMBI, INDONESIA:-1.63778:103.644 JAMMU, INDIA:32.6897:74.8381 -KANPUR, INDIA:26.4411:80.3633 -KOTA, INDIA:25.1606:75.8447 -LUDHIAHA, INDIA:30.8544:75.9511 -LEH, INDIA:34.1356:77.5456 -LUCKNOW, INDIA:26.7606:80.8864 -PATHANKOT, INDIA:32.2336:75.6344 -PATIALA, INDIA:30.315:76.3633 -NAINITAL, INDIA:29.0331:79.4736 -RAIBARELLI, INDIA:26.2503:81.3806 -SHIMLA, INDIA:31.0817:77.0581 -SAHARANPUR, INDIA:29.9942:77.4242 -SRINAGAR, INDIA:33.9867:74.7736 -BANE HOUEI SAY, LAOS:20.2572:100.437 -LUANG PRABANG, LAOS:19.8972:102.161 -PAKSE, LAOS:15.1319:105.781 -PHONG SAVANH, LAOS:19.4547:103.218 -SAVANNAKHET, LAOS:16.5564:104.759 -VIENTIANE, LAOS:17.9881:102.563 -MACAU, MACAU:22.1494:113.591 -BHAIRAWA, NEPAL:27.5056:83.4161 -CHANDRAGARHI, NEPAL:26.5706:88.0794 +JAMNAGAR, INDIA:22.4664:70.0114 +JAMSHEDPUR, INDIA:22.8119:86.1675 JANAKPUR, NEPAL:26.7086:85.9222 -KATHMANDU, NEPAL:27.6964:85.3592 -NEPALGUNJ, NEPAL:28.1036:81.6669 -POKHARA, NEPAL:28.2003:83.9811 -SIMARA, NEPAL:27.1594:84.98 -BIRATNAGAR, NEPAL:26.4833:87.2636 -AGATTI ISLAND, INDIA:10.8233:72.1756 -BANGALORE, INDIA:12.9497:77.6681 -BIDAR, INDIA:17.9078:77.4858 -VIJAYAWADA, INDIA:16.5303:80.7967 -COIMBATORE, INDIA:11.0314:77.0439 -CALICUT, INDIA:11.1356:75.9547 -CUDDAPAH, INDIA:14.5097:78.7728 -CARNICOBAR, INDIA:9.15306:92.8192 -DUNDIGUL, INDIA:17.6292:78.4033 -HYDERABAD, INDIA:17.4522:78.4611 -MADURAI, INDIA:9.83444:78.0933 -MANGALORE, INDIA:12.96:74.8925 -MADRAS, INDIA:12.9942:80.1803 -NAGARJUNSAGAR, INDIA:16.5408:79.3178 -PORT BLAIR, INDIA:11.6456:92.7331 -RAJAHMUNDRY, INDIA:17.1094:81.8183 -SALEM, INDIA:11.7819:78.0653 -TANJORE, INDIA:10.7197:79.1036 -TIRUPETI, INDIA:13.6319:79.5431 -TIRUCHCHIRAPPALLI, INDIA:10.7653:78.7089 -TRIVANDRUM, INDIA:8.48194:76.9181 -TAMBARAM, INDIA:12.9067:80.1211 -WARANGAL, INDIA:17.9181:79.5986 -PARO, BHUTAN:27.4031:89.4258 -MALE, MALDIVES:4.19167:73.5289 -BANGKOK, THAILAND:13.9125:100.607 -NAKHON PATHOM, THAILAND:14.1019:99.9169 -LOP BURI, THAILAND:14.8744:100.663 -RAYONG, THAILAND:12.6797:101.005 -PRACHIN BURI, THAILAND:13.7686:102.315 -CHIANG RAI, THAILAND:19.4972:100.286 -LAMPANG, THAILAND:18.2719:99.5039 -PHRAE, THAILAND:18.1319:100.164 -PRACHUAP KHIRI KHAN, THAILAND:12.6339:99.9508 -NAKHON SAWAN, THAILAND:15.2772:100.296 -PHETCHABUN, THAILAND:16.8208:101.254 -TAK, THAILAND:16.6997:98.545 -NAKHON SAWAN, THAILAND:15.6728:100.137 -PHITSANULOK, THAILAND:16.7828:100.279 -UTTARADIT, THAILAND:17.6736:100.235 -TAK, THAILAND:17.2342:99.0578 -NARATHIWAT, THAILAND:6.51972:101.743 -KRBI, THAILAND:8.09889:98.9861 -SONGKHLA, THAILAND:7.18639:100.608 -PATTANI, THAILAND:6.78528:101.153 -SURAT THANI, THAILAND:9.54778:100.062 -NAKHON SI THAMMARAT, THAILAND:8.47111:99.9556 -PHUKET, THAILAND:8.11306:98.3167 -RANONG, THAILAND:9.7775:98.5853 -SONGKHLA, THAILAND:6.93306:100.393 -TRANG, THAILAND:7.50861:99.6164 -YA LA, THAILAND:6.52667:101.242 -UDON THANI, THAILAND:17.3864:102.788 -SAKON NAKHON, THAILAND:17.195:104.119 -SURIN, THAILAND:14.8692:103.489 -LOEI, THAILAND:17.4389:101.722 -NAKHON RATCHASIMA, THAILAND:14.9342:102.079 -NAKHON PHANOM, THAILAND:17.4125:104.777 -NAKHON PHANOM, THAILAND:17.3836:104.643 -DANANG, VIET NAM:16.0439:108.199 -HANOI, VIET NAM:21.2217:105.806 -NHATRANG, VIET NAM:12.2181:109.2 -HO CHI MINH CITY, VIET NAM:10.82:106.662 -BAGAN, MYANMAR:21.1819:94.9292 -BANMAW, MYANMAR:24.2689:97.2461 -COCO ISLAND, MYANMAR:14.1414:93.3683 -DAWEI, MYANMAR:14.0981:98.2017 -HEHO, MYANMAR:20.7431:96.7917 -KENGTUNG, MYANMAR:21.3006:99.6367 +JAQUE, PANAMA:7.51722:W78.1567 +JASK, IRAN:25.6533:57.7992 +JAUJA, PERU:-11.7831:W75.4733 +JAYAPURA, INDONESIA:-2.57694:140.516 +JEBEL DHANA, UNITED ARAB EMIRATES:24.1872:52.6139 +JEDDAH, SAUDI ARABIA:21.3481:39.1728 +JENA, GERMANY:50.9172:11.7136:114 +JEREZ, SPAIN:36.7444:W6.06 +JERSEY, ENGLAND:51.7682578:W0.293425 +JERUSALEM, ISRAEL:31.8667:35.2167 +JESSORE, BANGLADESH:23.1836:89.1608 +JEVER, GERMANY:53.5333:7.88861 +JEYPORE, INDIA:18.8797:82.5519 +JHANSI, INDIA:25.4897:78.5594 +JHARSUGUDA, INDIA:21.9133:84.0503 +JHUNJU, KOREA:35.8783:127.119 +JIAMUSI, CHINA:46.8433:130.465:882 +JIJEL, ALGERIA:36.795:5.87333 +JIMMA, ETHIOPIA:7.66583:36.8164 +JIROFT, IRAN:28.7267:57.67 +JIWANI, PAKISTAN:25.0678:61.8053 +JOAO PESSOA, BRAZIL:-7.26972:W35.8961 +JODHPUR, INDIA:26.2514:73.0481 +JOENKOEPING, SWEDEN:57.7575:14.0686 +JOENSUU, FINLAND:62.6589:29.6244 +JOHANNESBURG, SOUTH AFRICA:-25.9383:27.9261 +JOHNSTON ISLAND, JOHNSTON ATOLL:16.7286:W169.534 +JOHOR BAHRU, MALAYSIA:1.64111:103.669 +JOIGNY, FRANCE:47.9922:3.39222 +JOINVILLE, BRAZIL:-26.2247:W48.7972 +JOKKMOKK, SWEDEN:66.4961:20.1469 +JONESBORO, USA:35.8317:W90.6461 +JORHAT, INDIA:26.7306:94.1756 +JOSE C. PAZ, ARGENTINA:-34.5606:W58.7894 +JOSE DE SAN MARTIN, ARGENTINA:-44.0481:W70.4592 +JOSE PANGANIBAN, PHILIPPINES:14.2928:122.646 +JOS, NIGERIA:9.63972:8.86889 +JUANJUI, PERU:-7.16944:W76.7278 +JUBAIL, SAUDI ARABIA:27.0389:49.405 +JUBA, SUDAN:4.87194:31.6011 +JUIZ DE FORA, BRAZIL:-21.7914:W43.3867 +JUJUY, ARGENTINA:-24.3928:W65.0978 +JULIACA, PERU:-15.4669:W70.1581 +JUNEAU, USA:58.3547:W134.576 +JUNIN, ARGENTINA:-34.5458:W60.9306 +JWANENG, BOTSWANA:-24.6022:24.6908 +JYVASKYLA, FINLAND:62.3994:25.6781 +KABUL, AFGHANISTAN:34.5658:69.2122 +KADENA, JAPAN:26.3556:127.767 +KADUNA, NIGERIA:10.6958:7.32 +KAEDI, MAURITANIA:16.1594:W13.5075 +KAGOSHIMA, JAPAN:31.8033:130.719 +KAHULUI, USA:20.8986:W156.431 +KAILASHAHAR, INDIA:24.3083:92.0075 +KAIMANA, INDONESIA:-3.64389:133.695 +KAITAIA, NEW ZEALAND:-35.07:173.285 +KAJAANI, FINLAND:64.2853:27.6922 +KAKAMEGA, KENYA:0.271111:34.7872 +KALABO, ZAMBIA:-14.9975:22.6475 +KALALEH, IRAN:37.3831:55.4519 +KALAMATA, GREECE:37.0683:22.0256:442 KALAY, MYANMAR:23.1886:94.0508 -KYAUKPYU, MYANMAR:19.4267:93.5344 +KALEMIE, ZAIRE:-5.87556:29.25 +KALGOORLIE, AUSTRALIA:-30.7894:121.462:75 +KALIBO, PHILIPPINES:11.6811:122.378 +KALININGRAD, RUSSIA:54.89:20.5925:223 +KALIXFORS, SWEDEN:67.7647:20.2572 +KALKMAR, SWEDEN:56.6853:16.2875 +KAMALPUR, INDIA:24.135:91.8106 +KAMARANG, GUYANA:5.86528:W60.6142 +KAMEMBE, RWANDA:-2.46222:28.9078 +KAMENZ, GERMANY:51.2961:14.1289:98 +KAMINA BASE, ZAIRE:-8.64194:25.2528 +KAMISHLI, SYRIA:37.0236:41.1944 +KAMLOOPS, CANADA:50.7022:W120.442 +KAMP, GERMANY:51.5303:6.53694:63 +KAMUELA, USA:20.0011:W155.668 +KANANGA, ZAIRE:-5.9:22.4692 +KANAZAWA, JAPAN:36.3936:136.408 +KANDAHAR, AFGHANISTAN:31.5058:65.8478 +KANDLA, INDIA:23.1125:70.1003 +KANEOHE BAY, USA:21.4492:W157.768 +KANGNUNG, KOREA:37.7533:128.944 +KANKAKEE, USA:41.0714:W87.8461 +KANO, NIGERIA:12.0475:8.52444 +KANOYA, JAPAN:31.3675:130.845 +KANPUR, INDIA:26.4042:80.41 +KANSAS CITY, USA:39.100105:W94.5781416:816 +KAOHSIUNG, TAIWAN:22.5753:120.351 +KAOLACK, SENEGAL:14.1467:W16.0511 +KAPOSVAR, HUNGARY:46.3892:17.7314:113 +KAPUSKASING, CANADA:49.4139:W82.4675 +KARACHI, PAKISTAN:24.8933:66.9386 +KARDLA, ESTONIA:58.9906:22.8306 +KARIBA, ZIMBABWE:-16.5197:28.8847 +KARLOVY VARY, CZECH REPUBLIC:50.2028:12.9147 +KARLSBORG, SWEDEN:58.5136:14.5069 +KARLSKOGA, SWEDEN:59.3458:14.4958 +KARLSRUHE, GERMANY:48.9822:8.33333:173 +KARONGA, MALAWI:-9.95333:33.8928 +KARRATHA, AUSTRALIA:-20.7122:116.773:10 +KARS, TURKEY:40.5622:43.115:1804 +KASANE, BOTSWANA:-17.8328:25.1622 +KASHI, CHINA:39.5433:76.0217:1057 +KASOMPE, ZAMBIA:-12.5728:27.8939 +KASSALA, SUDAN:15.3858:36.3281 +KASSEL, GERMANY:51.4083:9.3775:106 +KASTAMONU, TURKEY:41.3139:33.7958:1834 +KASTELI, GREECE:35.1869:25.3267:334 +KASTORIA, GREECE:40.4494:21.2761:57 +KASUNGU, MALAWI:-13.0144:33.4683 +KATHMANDU, NEPAL:27.6964:85.3592 +KATOWICE, POLAND:50.2383:19.035 +KAUHAJOKI, FINLAND:62.4625:22.3931 +KAUHAVA, FINLAND:63.1269:23.0514 +KAUKURA ATOLL, TUAMOTU ISLANDS:-15.6633:W146.885 +KAVALA, GREECE:40.9722:24.3417:37 KAWTHOUNG, MYANMAR:10.0492:98.5378 -LOIKAW, MYANMAR:19.6922:97.2147 -LASHIO, MYANMAR:22.9775:97.7522 +KAYES, MALI:14.4311:W11.4394 +KAYSERI, TURKEY:38.7703:35.4953 +KAZAN, RUSSIA:55.6078:49.2772:515 +KECSKEMET, HUNGARY:46.9175:19.7492:322 +KEDOUGOU, SENEGAL:12.5722:W12.2203 +KEFLAVIK, ICELAND:63.985:W22.6056 +KELOWNA, CANADA:49.9561:W119.378 +KEMI, FINLAND:65.7817:24.5989 +KEMIJARVI, FINLAND:66.7128:27.1567 +KEMOROVO, RUSSIA:55.2697:86.1069:294 +KENAI, USA:60.5731:W151.245 +KENDALL-TAMIAMI, USA:25.6478:W80.4328 +KENDARI, INDONESIA:-4.08222:122.417 +KENGTUNG, MYANMAR:21.3006:99.6367 +KENORA, CANADA:49.7883:W94.3631 +KENTIRA, MOROCCO:34.2989:W6.59583 +KERIKERI, NEW ZEALAND:-35.2628:173.912 +KERMAN, IRAN:30.2611:56.9567 +KERTEH, MALAYSIA:4.53722:103.426 +KESHOD, INDIA:21.3167:70.27 +KETAPANG, INDONESIA:-1.81639:109.963 +KETCHIKAN, USA:55.3556:W131.714 +KEY WEST, USA:24.5561:W81.7594 +KHABAROVSK, RUSSIA:48.5278:135.188:383 +KHAJURAHO, INDIA:24.8194:79.9192 +KHARAN, PAKISTAN:28.5944:65.4247 +KHARK ISLAND, IRAN:29.2592:50.3239 +KHARKOV, RUSSIA:49.3589:26.9339:350 +KHARTOUM, SUDAN:15.5894:32.5531 +KHASAB, OMAN:26.1711:56.2406 +KHORRAM ABAD, IRAN:33.4364:48.2858 +KHUZDHAR, PAKISTAN:27.7925:66.6428 +KICHINAU FIR/ACC/COM, MOLDOVA:46.9278:28.9314 +KIEL, GERMANY:54.3794:10.145:118 +KIEV, RUSSIA:50.345:30.895:839 +KIFFA, MAURITANIA:16.5897:W11.4061 +KIGALI, RWANDA:-1.96861:30.1394 +KIKALA, FINLAND:60.4625:23.6525 +KIKWIT, ZAIRE:-5.03556:18.7856 +KILIMANJARO, TANZANIA:-3.42917:37.0744 +KILLEEN, USA:31.0672:W97.8289 +KIMBERLEY, SOUTH AFRICA:-28.8028:24.765 +KIMHAE, KOREA:35.1794:128.938 +KINDERSLEY, CANADA:51.5175:W109.181 +KINDU, ZAIRE:-2.91917:25.9153 +KING KHALID MIL.CITY, SAUDI ARABIA:27.9008:45.5281 +KING SALMON, USA:58.6767:W156.649 +KINGSTON, CANADA:44.2253:W76.5969 +KINGSTON, JAMAICA:17.9356:W76.7875 +KINGSTOWN, ST.VINCENT/GRENADINES:13.1442:W61.2108 +KINGSVILLE, USA:27.5072:W97.8097 +KINSHASA, ZAIRE:-4.32472:15.3283 +KIRITIMATI, KIRIBATI:1.98611:W157.35 +KIRKENES, NORWAY:69.725:29.8875 +KIRKWALL, SCOTLAND:58.9581:W2.905 +KIRTLAND A.F.B., USA:35.04:W106.609 +KIRUNA, SWEDEN:67.8219:20.3367 +KISANGANI, ZAIRE:0.5175:25.155 +KISARAZU, JAPAN:35.3981:139.91 +KISH ISLAND, IRAN:26.5267:53.9817 +KISMAYU, SOMALIA:-0.377222:42.4592 +KISUMU, KENYA:-0.0861111:34.7289 +KITADAITO, JAPAN:25.9478:131.321 +KITAKYUSHU, JAPAN:33.8361:130.947 +KITALE, KENYA:0.971944:34.9583 +KITEE, FINLAND:62.1661:30.0736 +KITONA BASE, ZAIRE:-5.91806:12.4475 +KITTILA, FINLAND:67.7008:24.8467 +KITZINGEN, GERMANY:49.7431:10.2006 +KJELLER, NORWAY:59.9692:11.0358 +KLAGENFURT, AUSTRIA:46.6425:14.3375 +KLEIAT, LEBANON:34.5892:36.0111 +KLEINE BROGEL, BELGIUM:51.1678:5.47083 +KLEINSEE, SOUTH AFRICA:-29.6883:17.0939 +KLERKSDORP, SOUTH AFRICA:-26.8708:26.7178 +KLUANG, MALAYSIA:2.04139:103.307 +KNISLINGE, SWEDEN:56.1836:14.1322 +KNOBNOSTER, USA:38.7303:W93.5478 +KNOXVILLE, USA:35.8122:W83.9928 +KOBLENZ, GERMANY:50.3247:7.53083:105 +KOCHI, JAPAN:33.5444:133.671 +KODIAK, USA:57.75:W152.494 +KOETHEN, GERMANY:51.7211:11.9617:78 +KOHNAN, JAPAN:34.5908:133.933 +KOKSIJDE, BELGIUM:51.09:2.65278 +KOLDA, SENEGAL:12.88:W14.9553 +KOLDING, DENMARK:55.4361:9.33083 +KOLHAPUR, INDIA:16.6639:74.2881 +KOLWEZI, ZAIRE:-10.7658:25.5056 +KOMATIPOORT, SOUTH AFRICA:-25.4406:31.9297 +KOMATI POWER STATION, SOUTH AFRICA:-26.0933:29.4547 +KOMPONG CHNANG, CAMBODIA:12.255:104.564 +KONA, USA:19.7386:W156.046 +KONE, NEW CALEDONIA:-21.0533:164.838 +KONYA, TURKEY:37.9789:32.5617:38873 +KOPASKER, ICELAND:66.3136:W16.4611 +KORHOGO, IVORY COAST:9.38694:W5.55639 +KORTRIJK-VEVELGEM, BELGIUM:50.8178:3.20833 +KOSICE, SLOVAKIA:48.6631:21.2411 +KOSRAE, MICRONESIA:5.35667:162.958 +KOSTA, SWEDEN:56.8442:15.4525 +KOSZALIN, POLAND:54.0422:16.2636 +KOTA BAHRU, MALAYSIA:6.16639:102.294 +KOTA, INDIA:25.1606:75.8447 +KOTA KINABALU, MALAYSIA:5.93722:116.051 +KOTAKOLI, ZAIRE:4.1575:21.6508 +KOTZEBUE, USA:66.8844:W162.598 +KOUMAC, NEW CALEDONIA:-20.5461:164.256 +KOZANI, GREECE:40.2861:21.8408:34 +KRAKOW, POLAND:50.0775:19.7847 +KRALENDIJK, ANTILLES:12.1308:W68.2683 +KRAMFORS, SWEDEN:63.0483:17.7686 +KRASNODAR, RUSSIA:45.035:39.1717:339 +KRBI, THAILAND:8.09889:98.9861 +KRIEL, SOUTH AFRICA:-26.2517:29.1944 +KRISTIANSAND, NORWAY:58.2042:8.08528 +KRISTIANSTAD, SWEDEN:55.9217:14.0853 +KRISTIANSUND, NORWAY:63.1117:7.82444 +KROONSTAD, SOUTH AFRICA:-27.6606:27.3156 +KRUGERSDORP, SOUTH AFRICA:-26.0808:27.7256 +KRUSA-PADBORG, DENMARK:54.8703:9.27917 +KRUUNUPYY, FINLAND:63.7211:23.1431 +KUALA LUMPUR, MALAYSIA:2.74556:101.71 +KUALA TERENGGANU, MALAYSIA:5.3825:103.103 +KUANTAN, MALAYSIA:3.77528:103.209 +KUBBE, SWEDEN:63.6336:17.9397 +KUCHING, MALAYSIA:1.48472:110.346 +KUFRA, LIBYA:24.1786:23.3139 +KUITO, ANGOLA:-12.4044:16.9472 +KULU, INDIA:31.8817:77.1844 +KULUSUK, GREENLAND:65.5833:W37.15 +KUMAMOTO, JAPAN:32.8372:130.855 +KUMEJIMA, JAPAN:26.3633:126.714 +KUNDUZ, AFGHANISTAN:36.665:68.9108 +KUNMING, CHINA:24.9922:102.743:21507 +KUNOVICE, CZECH REPUBLIC:49.0294:17.4397 +KUNSAN, KOREA:35.9036:126.616 +KUNUNURRA, AUSTRALIA:-15.7781:128.707:1 +KUOPIO, FINLAND:63.0069:27.7975 +KUPANG, INDONESIA:-10.1714:123.671 +KURESSAARE, ESTONIA:58.2297:22.5094 +KURGAN, RUSSIA:55.475:65.4147:393 +KURUMAN, SOUTH AFRICA:-27.4567:23.4114 +KUSTANAY, RUSSIA:53.2064:63.5508:240 +KUTAHYA, TURKEY:39.4267:30.0164:2484 +KUUJJUARARAPIK, CANADA:55.2833:W77.7667 +KUUSAMO, FINLAND:65.9875:29.2392 +KUWAIT, KUWAIT:29.2267:47.98 +KWAJALEIN, MARSHALL ISLANDS:8.72:167.731 +KWANGJU, KOREA:35.1256:126.81 +KYAUKPYU, MYANMAR:19.4267:93.5344 +KYRITZ, GERMANY:52.9186:12.4253:156 +KYUNGJU, KOREA:35.8564:129.211 +LAAGE, GERMANY:53.9181:12.2792 +LAARBRUCH, GERMANY:51.6017:6.1425 +LA BAULE, FRANCE:47.2894:W2.34639:22 +LABE, GUINEA:11.3261:W12.2869 +LABOULAYE, ARGENTINA:-34.1353:W63.3622 +LABUAN, MALAYSIA:5.30056:115.25 +LABUHAN BAJO, INDONESIA:-8.48611:119.889 +LA CEIBA, HONDURAS:15.7422:W86.8533 +LA COLOMA, CUBA:22.3358:W83.6419 +LA CORUNA, SPAIN:43.3019:W8.37722 +LA CUMBRE, ARGENTINA:-31.0067:W64.5325 +LADAG, PHILIPPINES:8.41444:124.611 +LADYBRAND, SOUTH AFRICA:-29.1811:27.4531 +LADYSMITH, SOUTH AFRICA:-28.5817:29.7497 +LAESO, DENMARK:57.2778:11.0014 +LAFAYETTE, USA:30.2053:W91.9875 +LA FRIA, VENEZUELA:8.23917:W72.2708 +LAGHOUAT, ALGERIA:33.7639:2.92722 +LAGO AGRIO, ECUADOR:0.0922222:W76.8692 +LAGO ARGENTINO, ARGENTINA:-50.3353:W72.2483 +LAGOA SANTA, BRAZIL:-19.6614:W43.8964 +LAGOS, NIGERIA:6.57722:3.32111 +LA GRANDE RIVIERE, CANADA:53.6253:W77.7042 +LAHAD DATU, MALAYSIA:5.03222:118.324 +LAHANIA-KAPALUA, USA:20.9628:W156.674 +LAHORE, PAKISTAN:31.4947:74.3461 +LAJES, BRAZIL:-27.7819:W50.2814 +LAJES (TERCEIRA ISLAND), ACORES:38.7642:W27.0933 +LA JULIA, ECUADOR:-1.70417:W79.5522 +LAKE CHARLES, USA:30.1261:W93.2233 +LAKEHURST, USA:40.0333:W74.3533 +LAKE MANYARA, TANZANIA:-3.37611:35.8181 +LALIBELLA, ETHIOPIA:11.9747:38.9797 +LAMBARENE, GABON:-0.704167:10.2456 +LAMBASA, FIJI:-16.4667:179.34 +LAMERD, IRAN:27.3708:53.1892 +LAMEZIA, ITALY:38.9064:16.2422:162 +LA MINA, COLOMBIA:11.2325:W72.49 +LAMPANG, THAILAND:18.2719:99.5039 +LAMU, KENYA:-2.25222:40.9131 +LANAI, USA:20.7856:W156.951 +LANDIVISIAU, FRANCE:48.53:W4.15139:18 +LANDSBERG, GERMANY:48.0706:10.9058 +LANDSKRONA, SWEDEN:55.9447:12.8608 +LANGEBAANWEG, SOUTH AFRICA:-32.9689:18.1603 +LANGENLEBARN, AUSTRIA:48.3208:16.1117 +LANGGUR, INDONESIA:-5.66139:132.731 +LANSING, USA:42.7786:W84.5872 +LANYU, TAIWAN:22.0294:121.527 LANYWA, MYANMAR:20.9403:94.8225 +LANZEROTE, CANARY ISLANDS:28.9453:W13.605 +LANZHOU, CHINA:36.5167:103.622:13087 +LA ORCHILA, VENEZUELA:11.8086:W66.1792 +LA PALMA, PANAMA:8.40667:W78.1417 +LA PAZ, BOLIVIA:-16.5131:W68.1922 +LA PAZ, MEXICO:24.0725:W110.362 +LA PLATA, ARGENTINA:-34.9722:W57.8944 +LAPPEENRANTA, FINLAND:61.0444:28.1442 +LA QUIACA, ARGENTINA:-22.1622:W65.5697 +LAREDO, USA:27.5436:W99.4614 +LA RIOJA, ARGENTINA:-29.3814:W66.7958 +LAR, IRAN:27.6736:54.3814 +LARISSA, GREECE:39.65:22.4653:122 +LARNACA, CYPRUS:34.875:33.6247 +LA ROCHELLE, FRANCE:46.17127895533832:W1.1405420877441474 +LA ROCHE-SUR-YON, FRANCE:46.7019:W1.37861:87 +LA ROMANA, DOMINICAN REPUBLIC:18.4519:W68.9117 +LA RONGE, CANADA:55.1514:W105.262 +LA SERENA, CHILE:-29.9164:W71.1911 +LAS HERAS, ARGENTINA:-46.5383:W68.9658 +LASHIO, MYANMAR:22.9775:97.7522 +LAS LOMITAS, ARGENTINA:-24.7211:W60.5486 +LAS PALMAS, PERU:-12.1606:W76.9989 +LASTOURVILLE, GABON:-0.826389:12.7467 +LAS TUNAS, CUBA:20.9878:W76.9358 +LAS VEGAS, USA:36.0803:W115.152:352 +LATACUNGA, ECUADOR:-0.906667:W78.6156 +LATAKIA, SYRIA:35.4008:35.9486 +LATINA, ITALY:41.5422:12.9089:277 +LAUNCESTON, AUSTRALIA:-41.5453:147.214:435 +LAUPHEIM, GERMANY:48.2203:9.91 +LAVAL, FRANCE:48.0311:W0.742778:34 +LAVAN ISLAND, IRAN:26.81:53.3564 +LAZARD CARDENAS, MEXICO:18.0017:W102.22 +LE CASTELLET, FRANCE:43.2525:5.785 +LECCE, ITALY:40.2386:18.1331:238 +LECHFELD, GERMANY:48.1861:10.8622 +LEEDS, ENGLAND:53.7974185:W1.5437941:551 +LEER, GERMANY:53.2719:7.44278:70 +LEEUWARDEN, NETHERLANDS:53.2286:5.76056:255 +LEGAZPI, PHILIPPINES:7.82778:123.46 +LE HAVRE, FRANCE:49.5339:0.0880556 +LEH, INDIA:34.1356:77.5456 +LEICESTER, ENGLAND:52.6361398:W1.1330789:109 +LEIPZIG, GERMANY:51.3406321:12.3747329:297 +LE LUC, FRANCE:43.3844:6.38694 +LE MANS, FRANCE:47.9486:0.201667:52 +LEMOORE, USA:36.3328:W119.952 +LEMWERDER, GERMANY:53.1431:8.62333:36 +LEON, NICARAGUA:12.4278:W86.9022 +LEON, SPAIN:42.5889:W5.65556 +LE PUY, FRANCE:45.0794:3.76472 +LES EPLATURES, SWITZERLAND:47.0836:6.79278 +LETHBRIDGE, CANADA:49.6303:W112.8 +LETHEM, GUYANA:3.3725:W59.7892 +LETICIA, COLOMBIA:-4.19306:W69.9425 +LE TOURQUET, FRANCE:50.5147:1.62722 +LEUTKIRCH, GERMANY:47.8589:10.0144:175 +LEZIGNAN-CORBIERES, FRANCE:43.1758:2.73417 +LHOK SUKON, INDONESIA:5.06944:97.2592 +LIBERIA, COSTA RICA:10.5931:W85.5442 +LIBOURNE, FRANCE:44.9822:W0.134722 +LIBREVILLE, GABON:0.458333:9.41222 +LICHINGA, MOZAMBIQUE:-13.2739:35.2661 +LICHTENBURG, SOUTH AFRICA:-26.1756:26.1844 +LIDKOPING, SWEDEN:58.4653:13.1742 +LIEGE, BELGIUM:50.6372:5.44306 +LIFOU, NEW CALEDONIA:-20.7747:167.24 +LIHUE, USA:21.9761:W159.339 +LILABARI, INDIA:27.2906:94.0967 +LILLE, FRANCE:50.5617:3.08944:34 +LIMA, PERU:-12.0217:W77.1142 +LIMOGES, FRANCE:45.8628:1.17944 +LIMON, COSTA RICA:9.95778:W83.0219 +LINCOLN, USA:40.8508:W96.7592 +LINDEN, GUYANA:5.96583:W58.2703 +LINE, CZECH REPUBLIC:49.675:13.2744 +LINGAYEN, PHILIPPINES:16.0347:120.241 +LINKOEPING, SWEDEN:58.4022:15.5256 +LINS, BRAZIL:-21.6639:W49.7303 +LINZ, AUSTRIA:48.2331:14.1875 +LIPA, PHILIPPINES:13.955:121.125 +LISALA, ZAIRE:2.17056:21.4967 +LISBON, PORTUGAL:38.7167:W9.15583 +LISTA, NORWAY:58.1003:6.625 +LITTLE ROCK, USA:34.7294:W92.2242 +LIVERPOOL, ENGLAND:53.407154:W2.991665:199 +LIVINGSTONE, ZAMBIA:-17.8217:25.8225 +LJUBLIANA, SLOVENIA:46.2236:14.4575 +LJUNGBY, SWEDEN:56.9503:13.9217 +LLANBEDR, ENGLAND:52.8117:W4.12333 +LLOYDMINSTER, CANADA:53.3092:W110.072 +LOBITO, ANGOLA:-12.3711:13.5364 +LODWAR, KENYA:3.12194:35.6086 +LODZ, POLAND:51.7219:19.3981 +LOEI, THAILAND:17.4389:101.722 +LOIKAW, MYANMAR:19.6922:97.2147 +LOKICHOGGIO, KENYA:4.20417:34.3481 +LOMA LARGA, ECUADOR:-1.50139:W79.4808 +LOME, TOGO:6.16556:1.25389 +LOMPOC, USA:34.7294:W120.577 +LONDON, CANADA:43.0356:W81.1539 +LONDONDERRY, NORTH IRELAND:54.9978678:W7.3213056 +LONDON, ENGLAND:51.5073219:W0.1276474:1738 +LONDRINA, BRAZIL:-23.3336:W51.13 +LONG BEACH, USA:33.8175:W118.151 +LONGTANG, TAIWAN:24.855:121.237 +LONGVIEW, USA:32.3847:W94.7114 +LOP BURI, THAILAND:14.8744:100.663 +LORETO, MEXICO:25.9892:W111.348 +LORIENT, FRANCE:47.7606:W3.44:17 +LOS ANGELES, CHILE:-37.4017:W72.4256 +LOS ANGELES, USA:34.0536909:W118.242766:1214 +LOS BRASILES, NICARAGUA:12.1894:W86.3539 +LOS CHILES, COSTA RICA:11.0353:W84.7061 +LOS MOCHIS, MEXICO:25.685:W109.081 +LOUDIMA, CONGO:-4.20778:12.6608 +LOUISIANA, USA:30.0375:W91.8839 +LOUIS TRICHARDT, SOUTH AFRICA:-23.1597:29.6964 +LOUISVILLE, USA:38.2278:W85.6636:842 +LOYANGALANI, KENYA:2.76306:36.7183 +LUANDA, ANGOLA:-8.85833:13.2311 +LUANG PRABANG, LAOS:19.8972:102.161 +LUBBOCK, USA:33.6636:W101.823 +LUBUMASHI, ZAIRE:-11.5911:27.5308 +LUCKNOW, INDIA:26.7606:80.8864 +LUDHIAHA, INDIA:30.8544:75.9511 +LUEBECK, GERMANY:53.8053:10.7192:214 +LUENA, ANGOLA:-11.7681:19.8975 +LUENA, ZAIRE:-9.46944:25.7589 +LUFKIN, USA:31.2339:W94.75 +LUGANO, SWITZERLAND:46.0042:8.91056 +LULEA, SWEDEN:65.5436:22.1219 +LUMBO, MOZAMBIQUE:-15.0331:40.6717 +LUNEVILLE, FRANCE:48.5972:6.54472:16 +LURE, FRANCE:47.7044:6.54583:24 +LUSAKA, ZAMBIA:-15.3306:28.4525 +LUWUK, INDONESIA:-1.03889:122.772 +LUXEMBURG, LUXEMBURG:49.6264:6.21139 +LUXEUIL, FRANCE:47.7831:6.36389:21 +LUXOR, EGYPT:25.6708:32.7064 +LVOV, RUSSIA:49.8125:23.9561:182 +LYCKSELE, SWEDEN:64.5481:18.7161 +LYDD, UK:50.9561:0.939167 +LYNEHAM, UK:51.505:W1.99333 +LYNN LAKE, CANADA:56.8639:W101.076 +LYON, FRANCE:45.7261:5.09083 +MAASTRICHT, NETHERLANDS:50.9114:5.77:60 +MACAPA, BRAZIL:0.0505556:W51.0719 +MACARA, ECUADOR:-4.38028:W79.9406 +MACAS, ECUADOR:-2.29917:W78.1206 +MACAU, MACAU:22.1494:113.591 +MACEIO, BRAZIL:-9.51028:W35.7933 +MACENTA, GUINEA:8.48111:W9.52583 +MACHALA, ECUADOR:-3.26889:W79.9617 +MACKAY, AUSTRALIA:-21.1717:149.18:208 +MACKMINNVILLE, USA:45.1944:W123.136 +MACON, FRANCE:46.295:4.79556 +MACON, USA:32.64:W83.5917 +MADANG, PAPUA NEW GUINEA:-5.20694:145.789 +MADINAH, SAUDI ARABIA:24.5533:39.705 +MADISON, USA:43.1397:W89.3375:199 +MADIUN, INDONESIA:-7.61583:111.434 +MADRAS, INDIA:12.9942:80.1803 +MADRID, SPAIN:40.44076992155027:W3.68693134643554 +MADURAI, INDIA:9.83444:78.0933 +MAFIKENG, SOUTH AFRICA:-25.7528:25.6119 +MAFRAQ, JORDAN:32.3561:36.2592 +MAGADAN, RUSSIA:59.91:150.717:295 +MAGANGUE, COLOMBIA:9.28333:W74.8394 +MAGDALENA, BOLIVIA:-13.2536:W64.0628 +MAGDEBURG, GERMANY:52.0736:11.6264:201 +MAGNETIOGORSK, RUSSIA:53.3933:58.76:392 +MAHAJANGA, MADAGASCAR:-15.6672:46.3517 +MAHE, SEYCHELLES:-4.67417:55.5217 +MAHMOOD ABAD, IRAN:34.1692:51.3175 +MAIDUGURI, NIGERIA:11.8553:13.0808 +MAIMAMA, AFGHANISTAN:35.9342:64.7592 +MAINZ, GERMANY:49.9689:8.1475:97 +MAIO, CAPE VERDE ISLANDS:15.1558:W23.2136 +MAJUBA POWER STATION, SOUTH AFRICA:-27.0792:29.7783 +MAJURO, MARSHALL ISLANDS:7.06472:171.272 +MAKABANA, CONGO:-3.48333:12.6167 +MAKALE, ETHIOPIA:13.4672:39.5333 +MAKALE, INDONESIA:-3.045:119.822 +MAKEMO, FRENCH POLYNESIA:-16.5847:W143.657 +MAKHACHKALA, RUSSIA:42.8167:47.6522:468 +MAKOKOU, GABON:0.579167:12.8908 +MAKOUA, CONGO:-0.0213889:15.5753 +MAKUNG, TAIWAN:23.5686:119.628 +MAKURDI, NIGERIA:7.70361:8.61389 +MALABO, EQUATORIAL GUINEA:3.75528:8.70861 +MALACCA, MALAYSIA:2.26333:102.251 +MALACKY, SLOVAKIA:48.4019:17.1183 +MALAGA, SPAIN:36.6736:W4.49889 +MALAKAL, SUDAN:9.55861:31.6525 +MALALANE, SOUTH AFRICA:-25.4733:31.5656 +MALANG, INDONESIA:-7.92611:112.714 +MALANJE, ANGOLA:-9.525:16.3122 +MALARGUE, ARGENTINA:-35.4839:W69.5825 +MALATYA, TURKEY:38.4358:38.0917:1582 +MALDONADO, URUGUAY:-34.855:W55.0942 +MALE, MALDIVES:4.19167:73.5289 +MALINDI, KENYA:-3.22917:40.1017 +MALMOE, SWEDEN:55.53:13.3714 +MALTA ACC, MALTA:35.9167:14.4167 +MALTA, MALTA:35.8572:14.4775 +MAMBURAO, PHILIPPINES:13.2081:120.605 +MANADO, INDONESIA:1.54917:124.926 +MANAGUA, CUBA:22.9697:W82.2747 +MANAGUA, NICARAGUA:12.1411:W86.1681 +MANAKARA, MADAGASCAR:-22.1197:48.0217 +MANANARA, MADAGASCAR:-16.1639:49.7736 +MANANJARY, MADAGASCAR:-21.2017:48.3581 +MANAPOURI, NEW ZEALAND:-45.5331:167.65 +MANAUS, BRAZIL:-3.03861:W60.0497 +MANCHESTER, ENGLAND:53.4794892:W2.2451148:1276 MANDALAY, MYANMAR:21.7019:95.9778 +MANDERA, KENYA:3.93361:41.8442 +MANGALORE, INDIA:12.96:74.8925 +MANGLA, PAKISTAN:33.05:73.6383 +MANGOCHI, MALAWI:30.8378:W85.1817 +MANICORE, BRAZIL:-5.81139:W61.2786 +MANIHI, FRENCH POLYNESIA:-14.4367:W146.07 +MANILA, PHILIPPINES:14.5086:121.019 +MAN, IVORY COAST:7.27194:W7.58694 +MANIWAKI, CANADA:46.2744:W75.99 +MANIZALES, COLOMBIA:5.02972:W75.465 +MANNHEIM, GERMANY:49.4725:8.51361:145 +MANOKWARI, INDONESIA:-0.88:134.05 +MANSA, ZAMBIA:-11.1381:28.875 +MANSTON, ENGLAND:51.3422:1.34611 +MANTA, ECUADOR:-0.945556:W80.6781 +MANZANILLO, CUBA:20.2881:W77.0892 +MANZANILLO, MEXICO:19.1447:W104.559 +MANZINI, SWAZILAND:-26.5289:31.3075 +MAPUTO, MOZAMBIQUE:-25.9208:32.5725 +MARABA, BRAZIL:-5.36833:W49.1378 +MARACAIBO, VENEZUELA:10.1833:W67.5572 +MARACAY, VENEZUELA:10.2497:W67.6492 +MARADI, NIGER:13.5025:7.12667 +MARAGHEH, IRAN:37.3486:46.1261 +MARAGROSA, ECUADOR:-2.85083:W79.8036 +MARAMBIO BASE, ANTARCTICA:-64.2383:W56.6308 +MARATHON, GREECE:38.145:24.0142:97 +MARBLE HALL, SOUTH AFRICA:-24.9889:29.2831 +MARCOS JUAREZ, ARGENTINA:-32.6836:W62.1578 +MAR DEL PLATA, ARGENTINA:-37.9342:W57.5733 +MARE, NEW CALEDONIA:-21.4817:168.037 +MARGATE, SOUTH AFRICA:-30.8572:30.3428 +MARIBO, DENMARK:54.6992:11.44 +MARIBOR, SLOVENIA:46.4797:15.6861 +MARIEHAMN, FINLAND:60.1219:19.8981 +MARIEL, CUBA:23.0072:W82.7675 +MARIETTA, USA:33.9153:W84.5161 +MARILIA, BRAZIL:-22.1967:W49.9264 +MARINDUQUE, PHILIPPINES:13.3611:121.825 +MARINGA, BRAZIL:-23.4397:W51.9069 +MARIQUITA, COLOMBIA:5.2125:W74.8836 +MARISCAL ESTIGARRIBIA, PARAGUAY:-22.0447:W60.6217 +MARMANDE, FRANCE:44.4989:0.200278 +MAROANTSETRA, MADAGASCAR:-15.4367:49.6883 +MAROOCHYDORE, AUSTRALIA:-26.6033:153.091:55 +MAROUA, CAMEROON:10.4514:14.2572 +MARQUETTE, USA:46.5339:W87.5617 +MARRAKECH, MOROCCO:31.6067:W8.03611 +MARRUPA, MOZAMBIQUE:-13.225:37.5519 +MARSABIT, KENYA:2.345:37.9992 +MARSA BREGA, LIBYA:30.3781:19.5764 +MARSEILLE, FRANCE:43.29031232666344:5.397847473754878 +MARSH HARBOR, BAHAMAS:26.5114:W77.0833 +MARTINICA, ECUADOR:-1.73972:W79.6217 +MARUDI, MALAYSIA:4.17806:114.331 +MARY ESTHER, USA:30.4278:W86.6892 +MARYSVILLE, USA:39.1358:W121.436 +MASAMBA, INDONESIA:-2.55778:120.324 +MASBATE, PHILIPPINES:10.3075:123.979 +MASERU, LESOTHO:-29.3039:27.5033 +MASIRAH, OMAN:20.6753:58.8903 +MASJED SOLEIMAN, IRAN:32.0022:49.2706 +MASSENA, USA:44.9358:W74.8453 +MASTERTON, NEW ZEALAND:-40.9733:175.634 +MASVINGO, ZIMBABWE:-20.0553:30.8589 +MATADI, ZAIRE:-5.79944:13.4408 +MATAGAMI, CANADA:49.7617:W77.8028 +MATAIVA, FRENCH POLYNESIA:-14.8681:W148.717 +MATAMOROS, MEXICO:25.7697:W97.5253 +MATARAM, INDONESIA:-8.56056:116.094 +MATSUMOTO, JAPAN:36.1667:137.923 +MATSUSHIMA, JAPAN:38.4047:141.219 +MATSU, TAIWAN:26.2239:120.002 +MATSUYAMA, JAPAN:33.8272:132.7 +MATTHEW TOWN, BAHAMAS:20.975:W73.6667 +MATURIN, VENEZUELA:9.74917:W63.1522 +MAUBEUGE, FRANCE:50.3103:4.03306:18 +MAUMERE, INDONESIA:-8.64056:122.237 +MAUN, BOTSWANA:-19.9725:23.4308 +MAUPITI, FRENCH POLYNESIA:-16.4264:W152.244 +MAWLAMYINE, MYANMAR:16.4447:97.6606 +MAYAGUANA, BAHAMAS:22.3794:W73.0133 +MAYAGUEZ, PUERTO RICO:18.2556:W67.1483 +MAYO, CANADA:63.6167:W135.867 +MAZAR-I-SHARIF, AFGHANISTAN:36.7069:67.2092 +MAZATLAN, MEXICO:23.1611:W106.266 +MAZUFFARPUR, INDIA:26.12:85.3131 +MBANDAKA, ZAIRE:0.0225:18.2886 +M'BANZA-CONGO, ANGOLA:-6.26972:14.2469 +MBUJI-MAYI, ZAIRE:-6.12111:23.5689 +MCALESTER, USA:34.8822:W95.7833 +MCALLEN, USA:26.1758:W98.2386 +MCGRATH, USA:62.9528:W155.606 +MEADOW LAKE, CANADA:54.1253:W108.523 +MECHERIA, ALGERIA:33.5358:W0.242222 +MEDAN, INDONESIA:3.55806:98.6717 +MEDELLIN, COLOMBIA:6.22:W75.5906 +MEDICINE HAT, CANADA:50.0189:W110.721 +MEGARA, GREECE:37.9811:23.3653:330 +MEGIDO AIRSTRIP, ISRAEL:32.5986:35.2283 +MEINERZHAGEN, GERMANY:51.0994:7.60194:115 +MEIRINGEN, SWITZERLAND:46.7433:8.11 +MEKNES, MOROCCO:33.8789:W5.515 +MELBOURNE, AUSTRALIA:-37.7682:145.0622:15 +MELBOURNE, USA:28.1025:W80.645 +MELILLA, SPANISH NORTH AFRICA:35.2797:W2.95611 +MELO, URUGUAY:-32.3378:W54.2167 +MEMANBETSU, JAPAN:43.8806:144.164 +MEMMINGEN, GERMANY:47.9886:10.2394 +MEMPHIS, USA:35.1490215:W90.0516285:816 +MENDE, FRANCE:44.5019:3.53278 +MENDIG, GERMANY:50.3658:7.315 +MENDOZA, ARGENTINA:-32.8317:W68.7928 +MENGEN, GERMANY:48.0536:9.37278:49 +MENKIJARVI, FINLAND:62.9467:23.5189 +MENONGUE, ANGOLA:-14.6575:17.7197 +MENORCA, SPAIN:39.8625:4.21861 +MERAUKE, INDONESIA:-8.52028:140.418 +MERCEDES, ARGENTINA:-29.2231:W58.0881 +MERCED, USA:37.3803:W120.568 +MERIDA, MEXICO:20.9369:W89.6575 +MERIDA, VENEZUELA:8.58194:W71.1608 +MERIDIAN, USA:32.5519:W88.5556 +MERSA-MATRUH, EGYPT:31.3253:27.2217 +MERU, KENYA:0.230278:38.1703 +MERVILLE, FRANCE:50.6183:2.64222:26 +MERZIFON, TURKEY:40.8292:35.5219:972 +MESSINA, SOUTH AFRICA:-22.3558:29.9864 +METZADA, ISRAEL:31.3281:35.3883 +METZ, FRANCE:49.0717:6.13167:41 +MEXICALI, MEXICO:32.6306:W115.241 +MEXICO CITY, MEXICO:19.4361:W99.0719 +MFUWE, ZAMBIA:-13.2586:31.9364 +MIAMI, USA:25.804570343778067:W80.29181030761718 +MIANDRIVAZO, MADAGASCAR:-19.5628:45.4508 +MIANWALI, PAKISTAN:32.5631:71.5706 +MIDDELBURG, SOUTH AFRICA:-25.6847:29.44 +MIDDLESBROUGH, ENGLAND:54.5760419:W1.2344047:114 +MIDDLETON ISLAND, USA:59.4497:W146.309 +MIDLAND, USA:31.9425:W102.202 +MIDWAY, MIDWAY ISLAND:28.2014:W177.381 +MIELEC, POLAND:50.3222:21.4619 +MIHO, JAPAN:35.4922:133.236 +MIKKELI, FINLAND:61.6864:27.2017 +MILAN, ITALY:45.4453:9.27694:181 +MILANO, ITALY:45.5397:9.20222:181 +MILDENHALL, ENGLAND:52.3608:0.488333:36 +MILLAU, FRANCE:43.99:3.18306 +MILLINGTON, USA:35.3567:W89.8703 +MILLINOCKET, USA:45.6478:W68.6856 +MILLVILLE, USA:39.3678:W75.0722 +MILTON, USA:30.7242:W87.0219 +MILWAUKEE, USA:42.9472:W87.8964 +MIMIZAN, FRANCE:44.1461:W1.17444 +MINAMI DAITO, JAPAN:25.8464:131.263 +MINAMI TORI SHIMA, JAPAN:24.2894:153.979 +MINATITLAN, MEXICO:18.1033:W94.5806 +MINERALNYE VODY, RUSSIA:44.225:43.0817:51 +MINERAL WELLS, USA:32.7814:W98.06 +MINNA, NIGERIA:9.65194:6.46222 +MINNEAPOLIS, USA:44.8803:W93.2167 +MINOT, USA:48.2592:W101.28 +MINSK, RUSSIA:53.8644:27.5394:409 +MIRAMAR, USA:32.8683:W117.143 +MIRANSHAH, PAKISTAN:33.0125:70.0642 +MIRI, MALAYSIA:4.325:113.988 +MIR PUR KHAS, PAKISTAN:25.6825:69.0728 +MISAWA, JAPAN:40.7031:141.368 +MITU, COLOMBIA:1.25361:W70.2336 +MITZIC, GABON:0.775556:11.5525 +MIYAKE JIMA, JAPAN:34.0719:139.56 +MIYAKO, JAPAN:24.7828:125.295 +MIYAZAKI, JAPAN:31.8769:131.448 +MKUZE, SOUTH AFRICA:-27.6258:32.0442 +MMABATHO, SOUTH AFRICA:-25.7983:25.5478 +MNICHOVO HRADISTE, CZECH REPUBLIC:50.54:15.0064 +MOA, CUBA:20.6542:W74.9217 +MOANDA, GABON:-1.5375:13.2692 +MOBILE, USA:30.6264:W88.0678 +MOCAMEDES, ANGOLA:-15.2611:12.1467 +MOCIMBOA DA PRAIA, MOZAMBIQUE:-11.3617:40.3547 +MOCORD, BRAZIL:-5.20167:W37.3642 +MODESTO, USA:37.6256:W120.954 +MOENCHENGLADBACH, GERMANY:51.2303:6.50444:170 +MOENJODARO, PAKISTAN:27.335:68.1428 +MOGADISHU, SOMALIA:2.01361:45.3047 +MOHANBARI, INDIA:27.4833:95.0175 +MOHED, SWEDEN:64.9608:17.6964 +MOHELI, COMOROS ISLANDS:-12.2981:43.7664 +MOHOLM, SWEDEN:58.5981:14.1136 +MOKPO, KOREA:34.7589:126.38 +MOLDE, NORWAY:62.7461:7.2725 +MOLLIS, SWITZERLAND:47.0786:9.06472 +MOLOKAI, USA:21.1528:W157.096 +MOMBASA, KENYA:-4.03472:39.5942 +MOMEIK, MYANMAR:23.0925:96.645 +MONASTIR, TUNISIA:35.7581:10.7547 +MONA, UK:53.2583:W4.37333 +MONBETSU, JAPAN:44.3039:143.404 +MONCLOVA, MEXICO:26.9556:W101.47 +MONCTON, CANADA:46.1122:W64.6786 +MONG HSAT, MYANMAR:20.5167:99.2567 +MONGU, ZAMBIA:-15.2544:23.1622 +MONROE, USA:32.5108:W92.0375 +MONROVIA, LIBERIA:6.23361:W10.3622 +MONTALVO, ECUADOR:-2.06694:W76.9753 +MONTAUBAN, FRANCE:44.0256:1.37778 +MONTBELIARD, FRANCE:47.4869:6.7925:15 +MONT-DE-MARSAN, FRANCE:43.9117:W0.5075 +MONTE CASEROS, ARGENTINA:-30.2717:W57.64 +MONTEGO BAY, JAMAICA:18.5036:W77.9133 +MONTE REAL, ACORES:39.8311:W8.88722 +MONTERIA, COLOMBIA:8.82361:W75.8258 +MONTERREY, MEXICO:25.7783:W100.107 +MONTES CLAROS, BRAZIL:-16.7067:W43.8189 +MONTEVIDEO, URUGUAY:-34.7892:W56.2644 +MONTGOMERY, USA:32.3792:W86.3625:413 +MONTICHIARI, ITALY:45.4289:10.3306:81 +MONTIJO, ACORES:38.7036:W9.03583 +MONT JOLI, CANADA:48.6086:W68.2081 +MONTLUCON, FRANCE:46.3525:2.57028 +MONTLUCON-GUERET, FRANCE:46.2244:2.36306 +MONTPELIER, USA:44.2033:W72.5622 +MONTPELLIER, FRANCE:43.5761:3.96278 +MONTREAL, CANADA:45.4681:W73.7414 +MOOREA, FRENCH POLYNESIA:-17.4897:W149.762 +MOOSE JAW, CANADA:50.3303:W105.559 +MOOSONEE, CANADA:51.2911:W80.6078 +MOPTI, MALI:14.5128:W4.07944 +MOQUEGUA, PERU:-17.1789:W70.9306 +MORA, SWEDEN:60.9578:14.5111 +MORELIA, MEXICO:19.8497:W101.025 +MORLAIX, FRANCE:48.6031:W3.81556:24 +MOROMBE, MADAGASCAR:-21.7536:43.3753 +MORON, ARGENTINA:-34.6761:W58.6425 +MORONDAVA, MADAGASCAR:-20.2847:44.3175 +MORONI, COMOROS ISLANDS:-11.5336:43.2717 +MOSCOW, RUSSIA:55.7504461:37.6174943:2511 +MOSHI, TANZANIA:-3.36278:37.3233 +MOSJOEN, NORWAY:65.7839:13.2147 +MOSTAR, BOSNIA-HERCEGOVINA:43.2828:17.8458 +MOULINS, FRANCE:46.5344:3.42361 +MOUNDOU, CHAD:8.62028:16.0683 +MOUNTAIN HOME, USA:43.0433:W115.872 +MOUNTAIN VIEW, USA:37.415:W122.048 +MOUNT CLEMENS, USA:42.6128:W82.8317 +MOUNT COOK, NEW ZEALAND:-43.765:170.133 +MOUNT HAGEN, PAPUA NEW GUINEA:-5.82611:144.296 +MOUNT ISA, AUSTRALIA:-20.6639:139.489:62 +MOYALE LOWER, KENYA:3.46972:39.1014 +MOYOBAMBA, PERU:-6.01889:W76.9883 +MTWARA, TANZANIA:-10.3389:40.1817 +MUANDA, ZAIRE:-5.93083:12.3517 +MUDANJIANG, CHINA:44.5239:129.569:2495 +MUEDA, MOZAMBIQUE:-11.6728:39.5631 +MUEHLHAUSEN, GERMANY:51.3628:11.9408:130 +MUENSTER/OSNABRUECK, GERMANY:52.1344:7.68472:302 +MUFULIRA, ZAMBIA:-12.5647:28.2986 +MUIR, USA:40.4347:W76.5692 +MUKO MUKO, INDONESIA:-2.54222:101.088 +MULHOUSE, FRANCE:47.5894:7.52972:22 +MULTAN, PAKISTAN:30.2031:71.4189 +MUNICH, GERMANY:48.1371079:11.5753822:310 +MURCIA, SPAIN:37.7747:W0.812222 +MURMANSK, RUSSIA:68.7817:32.7506:154 +MURUROA, FRENCH POLYNESIA:-21.8083:W138.794 +MUSCAT, OMAN:23.5931:58.2844 +MUSKOGEE, USA:35.6575:W95.3614 +MUSKOKA, CANADA:44.9747:W79.3033 +MUSTIQUE, ST.VINCENT/GRENADINES:12.8875:W61.18 +MUS, TURKEY:38.7544:41.6611:2604 +MUTARE, ZIMBABWE:-18.9775:32.4506 +MUTOKO, ZIMBABWE:-17.4317:32.1844 +MUZAFFARABAD, PAKISTAN:34.3383:73.5083 +MWADUI, TANZANIA:-3.51417:33.6189 +MWANZA, TANZANIA:-2.44444:32.9325 MYEIK, MYANMAR:12.4433:98.6211 MYITKYINA, MYANMAR:25.3825:97.3528 -MAWLAMYINE, MYANMAR:16.4447:97.6606 -MOMEIK, MYANMAR:23.0925:96.645 -MONG HSAT, MYANMAR:20.5167:99.2567 -NAMPONG, MYANMAR:25.3542:97.295 -NAMSANG, MYANMAR:20.89:97.7361 -HPA-AN, MYANMAR:16.8944:97.6753 -PATHEIN, MYANMAR:16.8128:94.7753 -PUTAO, MYANMAR:27.3297:97.4261 -PYAY, MYANMAR:18.8244:95.2658 -SHANTE, MYANMAR:20.9417:95.9144 -SITTWE, MYANMAR:20.1325:92.8725 -THANDWE, MYANMAR:18.4606:94.2994 -TACHILEK, MYANMAR:20.4836:99.9353 -TAUNGOO, MYANMAR:19.0311:96.4014 -YANGON, MYANMAR:16.9072:96.1331 -UJUNG PANDANG, INDONESIA:-5.06167:119.554 -PONGGALUKU, INDONESIA:-4.31667:122.467 -MASAMBA, INDONESIA:-2.55778:120.324 -SOROAKO, INDONESIA:-2.52944:121.357 -MAKALE, INDONESIA:-3.045:119.822 -KENDARI, INDONESIA:-4.08222:122.417 -BIAK, INDONESIA:-1.19:136.108 +MYKONOS, GREECE:37.435:25.3481:85 +MYRTLE BEACH, USA:33.6797:W78.9283 +MYTILINI, GREECE:39.0567:26.5983:15 +MZUZU, MALAWI:-11.4447:34.0117 NABIRE, INDONESIA:-3.36806:135.496 -TIMIKA, INDONESIA:-4.52806:136.887 -JAYAPURA, INDONESIA:-2.57694:140.516 -WAMENA, INDONESIA:-4.09611:138.952 -MERAUKE, INDONESIA:-8.52028:140.418 -GORONTALO, INDONESIA:0.636667:122.852 -TAHUNA, INDONESIA:3.68306:125.528 -PALU, INDONESIA:-0.918333:119.909 -MANADO, INDONESIA:1.54917:124.926 -POSO, INDONESIA:-1.41667:120.657 -TERNATE, INDONESIA:0.831944:127.381 -LUWUK, INDONESIA:-1.03889:122.772 -LANGGUR, INDONESIA:-5.66139:132.731 -AMBON, INDONESIA:-3.70889:128.09 -KAIMANA, INDONESIA:-3.64389:133.695 -MANOKWARI, INDONESIA:-0.88:134.05 -SORONG, INDONESIA:-0.925833:131.12 -BINTULU, MALAYSIA:3.17222:113.044 -KUCHING, MALAYSIA:1.48472:110.346 -MARUDI, MALAYSIA:4.17806:114.331 -MIRI, MALAYSIA:4.325:113.988 -SIBU, MALAYSIA:2.26389:111.983 -LAHAD DATU, MALAYSIA:5.03222:118.324 -KOTA KINABALU, MALAYSIA:5.93722:116.051 -LABUAN, MALAYSIA:5.30056:115.25 -TAWAU, MALAYSIA:4.31333:118.122 -BRUNEI, BRUNEI:4.94556:114.928 -SABANG, INDONESIA:5.87389:95.3394 -TASIKMALAYA, INDONESIA:-7.34556:108.246 -MADIUN, INDONESIA:-7.61583:111.434 -MALANG, INDONESIA:-7.92611:112.714 -PEKANBARU, INDONESIA:0.461111:101.444 -DUMAI, INDONESIA:1.60917:101.433 -TANGERANG, INDONESIA:-6.29306:106.57 -BANDUNG, INDONESIA:-6.90056:107.576 -CIREBON, INDONESIA:-6.75583:108.539 -JAKARTA, INDONESIA:-6.26639:106.891 -JAKARTA, INDONESIA:-6.12556:106.656 -YOGYAKARTA, INDONESIA:-7.78806:110.432 -CILACAP, INDONESIA:-7.645:109.034 -JAKARTA, INDONESIA:-6.33694:106.764 -SEMARANG, INDONESIA:-6.97306:110.375 -TANJUNG KARANG, INDONESIA:-5.24222:105.179 -BATAM, INDONESIA:1.12083:104.119 -TANJUNG PANDAN, INDONESIA:-2.74556:107.755 -PANGKAL PINANG, INDONESIA:-2.16278:106.139 -TANJUNG PINANG, INDONESIA:0.9225:104.532 -SINGKEP, INDONESIA:-0.479167:104.579 -GUNUNG SITOLI, INDONESIA:1.16639:97.7028 -PADANG SIDEMPUAN, INDONESIA:1.39917:99.4319 -PADANG, INDONESIA:-0.876111:100.352 -MEDAN, INDONESIA:3.55806:98.6717 -SIBOLGA, INDONESIA:1.55472:98.8903 +NACALA, MOZAMBIQUE:-14.4881:40.7122 +NADOR, MOROCCO:35.1533:W2.92 +NADZAB, PAPUA NEW GUINEA:-6.56972:146.726 +NAGA, PHILIPPINES:13.5853:123.271 +NAGARJUNSAGAR, INDIA:16.5408:79.3178 +NAGASAKI, JAPAN:32.9225:129.923 +NAGOYA, JAPAN:35.255:136.924 +NAGPUR, INDIA:21.0919:79.0469 +NAHA, JAPAN:26.1956:127.646 +NAINITAL, INDIA:29.0331:79.4736 +NAIROBI, KENYA:-1.27722:36.8622 +NAIVASHA, KENYA:-0.787778:36.4333 +NAKASHIBETSU, JAPAN:43.5772:144.96 +NAKHON PATHOM, THAILAND:14.1019:99.9169 +NAKHON PHANOM, THAILAND:17.3836:104.643 +NAKHON RATCHASIMA, THAILAND:14.9342:102.079 +NAKHON SAWAN, THAILAND:15.2772:100.296 +NAKHON SI THAMMARAT, THAILAND:8.47111:99.9556 +NAKINA, CANADA:50.1828:W86.6964 +NAMEST, CZECH REPUBLIC:49.1658:16.1247 +NAMPONG, MYANMAR:25.3542:97.295 +NAMPULA, MOZAMBIQUE:-15.1056:39.2817 +NAMSANG, MYANMAR:20.89:97.7361 +NANAIMO, CANADA:49.0522:W123.87 +NANCHANG, CHINA:28.6:115.917:7194 +NANCY, FRANCE:48.6919:6.23028:15 +NANDI, FIJI:-17.7544:177.443 NANGAPINOH, INDONESIA:-0.348611:111.748 -KETAPANG, INDONESIA:-1.81639:109.963 +NANGIS, FRANCE:48.5936:3.005 +NANISIVIK, CANADA:72.9822:W84.6136 +NANJING, CHINA:31.74:118.86:6596 +NANKI-SHIRAHAMA, JAPAN:33.6622:135.364 +NANNING, CHINA:22.6081:108.172:22189 +NANTES, FRANCE:47.1531:W1.61056:65 +NANTUCKET, USA:41.2528:W70.06 +NANYUKI, KENYA:-0.0608333:37.0386 +NAPLES, ITALY:40.8858:14.2906:119 +NAPUKA ISLAND, FRENCH POLYNESIA:-14.1767:W141.267 +NARATHIWAT, THAILAND:6.51972:101.743 +NARSSARSSUAQ, GREENLAND:61.1611:W45.4275 +NASHVILLE, USA:36.1244:W86.6781:1231 +NASIK ROAD, INDIA:19.9625:73.8069 +NASSAU, BAHAMAS:25.0389:W77.4661 +NATAL, BRAZIL:-5.91111:W35.2478 +NATASHQUAN, CANADA:50.1897:W61.7892 NATUNA, INDONESIA:3.90861:108.388 -PONTIANAK, INDONESIA:-0.150556:109.404 -PUTUSIBAU, INDONESIA:0.835833:112.936 -SINTANG, INDONESIA:0.0636111:111.475 -JAMBI, INDONESIA:-1.63778:103.644 -BENGKULU, INDONESIA:-3.86389:102.341 -PALEMBANG, INDONESIA:-2.89778:104.701 -PENDORO, INDONESIA:-3.28583:103.879 -RENGAT, INDONESIA:-0.352778:102.335 -MUKO MUKO, INDONESIA:-2.54222:101.088 -LHOK SUKON, INDONESIA:5.06944:97.2592 -WHOK SEUMAWE, INDONESIA:5.22667:96.9503 -BANDA ACEH, INDONESIA:5.52333:95.4203 -KLUANG, MALAYSIA:2.04139:103.307 -PULAU PIOMAN, MALAYSIA:2.81806:104.16 -ALOR SETAR, MALAYSIA:6.19389:100.403 -BUTTERWORTH, MALAYSIA:5.46583:100.391 -KOTA BAHRU, MALAYSIA:6.16639:102.294 -KUANTAN, MALAYSIA:3.77528:103.209 -KERTEH, MALAYSIA:4.53722:103.426 -SIMPANG, MALAYSIA:3.11222:101.703 -IPOH, MALAYSIA:4.56778:101.092 -JOHOR BAHRU, MALAYSIA:1.64111:103.669 -KUALA LUMPUR, MALAYSIA:2.74556:101.71 -PULAU, MALAYSIA:6.32972:99.7286 -MALACCA, MALAYSIA:2.26333:102.251 -KUALA TERENGGANU, MALAYSIA:5.3825:103.103 -PENANG, MALAYSIA:5.29694:100.277 -SUAI, EAST TIMOR:-9.30306:125.287 -BAUCAU, WEST TIMOR:-8.48528:126.399 -BANJARMASIN, INDONESIA:-3.44194:114.761 -BATU LICIN, INDONESIA:-3.4125:115.996 -PANGKALAN BUN, INDONESIA:-2.705:111.673 +NAUSHKI, PAKISTAN:29.5378:66.0222 +NAUSORI, FIJI:-18.0431:178.559 +NAVEGANTES, BRAZIL:-26.88:W48.6514 +NAWABSHAH, PAKISTAN:26.2192:68.39 +NAWAPARA, INDIA:20.87:82.5194 +NAZCA, PERU:-14.8539:W74.9614 +N'DELE, CENTRAL AFRICAN REP.:8.42667:20.635 +N'DJAMENA, CHAD:12.1336:15.0339 +NDOLA, ZAMBIA:-12.9981:28.6647 +NECOCHEA, ARGENTINA:-38.4894:W58.8158 +NEGAGE, ANGOLA:-7.75444:15.2875 +NEIVA, COLOMBIA:2.95:W75.2939 +NEJRAN, SAUDI ARABIA:17.6114:44.4192 +NELSON, NEW ZEALAND:-41.2983:173.221 +NELSPRUIT, SOUTH AFRICA:-25.5006:30.9133 +NEMA, MAURITANIA:16.6219:W7.31444 +NEPALGUNJ, NEPAL:28.1036:81.6669 +NERLERIT INAAT, GREENLAND:70.7394:W22.6458 +NEUBRANDENBURG, GERMANY:51.3281:12.6567:85 +NEUBURG, GERMANY:48.7108:11.2111 +NEUQUEN, ARGENTINA:-38.9489:W68.1556 +NEVATIM, ISRAEL:31.2083:35.0122 +NEVERS, FRANCE:47.0011:3.11444:17 +NEVSEHIR, TURKEY:38.7717:34.5342:5467 +NEWARK, USA:40.6922:W74.1686 +NEW BERN, USA:35.0728:W77.0428 +NEW BIGHT, BAHAMAS:24.315:W75.4539 +NEWBURGH, USA:41.5039:W74.1047 +NEWCASTLE, ENGLAND:54.9738474:W1.6131572:114 +NEWCASTLE, SOUTH AFRICA:-27.7706:29.9767 +NEW ORLEANS, USA:29.9933:W90.2578:439 +NEW PLYMOUTH, NEW ZEALAND:-39.0086:174.179 +NEWPORT NEWS, USA:37.1317:W76.4928 +NEWQUAI, ENGLAND:50.4406:W4.99528 +NEW YORK, USA:40.7127281:W74.0060152:784 +N'GAOUNDERE, CAMEROON:7.35694:13.5592 +NGERENGERE, TANZANIA:-6.71722:38.1536 +N'GIVA, ANGOLA:-17.0447:15.6869 +NHATRANG, VIET NAM:12.2181:109.2 +NIAGARA FALLS, USA:43.1072:W78.9461 +NIAMEY, NIGER:13.4814:2.18361 +NIATOUGOU, TOGO:9.76722:1.09111 +NICARO, CUBA:20.6886:W75.5314 +NICE, FRANCE:43.71335521461014:7.2626405438720765 +NIEDERSTETTEN, GERMANY:49.3917:9.95806 +NIMES, FRANCE:43.7572:4.41611:161 +NINBO, CHINA:29.8247:121.465:9816 +NIORO, MALI:15.2386:W9.57639 +NIORT, FRANCE:46.3111:W0.401389 +NIZHNEVARTOVSK, RUSSIA:60.95:76.4667:271 +NOERVENICH, GERMANY:50.8311:6.65806 +NOGALES, MEXICO:31.2258:W110.976 +NOGALES, USA:31.4175:W110.848 +NOME, USA:64.5119:W165.445 +NORDERNEY, GERMANY:53.7067:7.23:26 +NORDHOLZ, GERMANY:53.7675:8.65833 +NORFOLK, USA:36.8944:W76.2011 +NORMAN'S CAY, BAHAMAS:24.5944:W76.8319 +NORMAN WELLS, CANADA:65.2825:W126.8 +NORRKOEPING, SWEDEN:58.5861:16.2506 +NORTH BATTLEFORD, CANADA:52.7692:W108.244 +NORTH BAY, CANADA:46.3636:W79.4228 +NORTH CAICOS, TURKS & CAICOS I.:21.9172:W71.9394 +NORTH ELEUTHERA, BAHAMAS:25.4756:W76.6811 +NORTHWAY, USA:62.9611:W141.929 +NORWICH, ENGLAND:52.628606:1.29227:52 +NOSARA BEACH, COSTA RICA:9.97639:W85.6528 +NOSHAHR, IRAN:36.6633:51.4647 +NOSY-BE, MADAGASCAR:-13.3122:48.3139 +NOTODDEN, NORWAY:59.5656:9.21167 +NOTTINGHAM, ENGLAND:52.9534193:W1.1496461:176 +NOUADHIBOU, MAURITANIA:20.9283:W17.0311 +NOUAKSCHOTT, MAURITANIA:18.0978:W15.9478 +NOUMEA, NEW CALEDONIA:-22.0144:166.213 +NUERNBERG, GERMANY:49.453872:11.077298:186 +NUEVA GERONA, CUBA:21.8347:W82.7839 +NUEVO CASAS GRANDES, MEXICO:30.3972:W107.875 +NUEVO LAREDO, MEXICO:27.4439:W99.5703 +NUKU HIVA, FRENCH POLYNESIA:-8.79556:W140.229 +NUKUS, RUSSIA:42.4864:59.6225:222 +NUMMELA, FINLAND:60.3339:24.2964 +NYALA, SUDAN:12.0536:24.9553 +NYERI, KENYA:-0.368889:36.98 +NYIRREGYHAZA, HUNGARY:47.9839:21.6922:274 +NYLSTROOM, SOUTH AFRICA:-24.6858:28.4347 +NYUTABARU, JAPAN:32.0836:131.452 +N'ZEREKORE, GUINEA:7.80583:W8.70167 +OAKEY, AUSTRALIA:-27.4114:151.735:127 +OAKLAND, USA:37.7211:W122.221 +OAMARU, NEW ZEALAND:-44.97:171.082 +OAXACA, MEXICO:16.9997:W96.7264 +OBERA, ARGENTINA:-27.5181:W55.1239 +OBIDOS TIRIOS, BRAZIL:2.22333:W55.9458 +OBIHIRO, JAPAN:42.7333:143.217 +OCANA, COLOMBIA:8.31472:W73.3583 +OCANA, SPAIN:39.9375:W3.50333 +OCEANA, USA:36.8206:W76.0333 +OCHO RIOS, JAMAICA:18.4042:W76.9689 +OCSENY, HUNGARY:46.3039:18.7692:72 +ODENSE, DENMARK:55.4761:10.3292 +ODESSA, RUSSIA:46.4269:30.6781:162 +OGDENSBURG, USA:44.6819:W75.4656 +OGDEN, USA:41.1239:W111.973 +OHAKEA, NEW ZEALAND:-40.2058:175.388 +OHRID, FORMER MACEDONIA:41.1797:20.7422 +OIOIAPOQUE, BRAZIL:3.85528:W51.7967 +OITA, JAPAN:33.4794:131.737 +OKARA, PAKISTAN:30.7408:73.3575 +OKAYAMA, JAPAN:34.7569:133.856 +OKHA, RUSSIA:53.515:142.888:15254 +OKIERABU, JAPAN:27.4253:128.701 +OKI ISLAND, JAPAN:36.1811:133.325 +OKLAHOMA CITY, USA:35.3931:W97.6006:1571 +OKONDJA, GABON:-0.665278:13.6731 +OLAVARRIA, ARGENTINA:-36.8908:W60.2161 +OLBIA, ITALY:40.8986:9.5175:383 +OLD CROW, CANADA:67.5706:W139.839 +OLIKTOK POINT, USA:70.4994:W149.879 +OMAHA, USA:41.1183:W95.9125 +OMBOUE HOSPIAL, GABON:-1.57472:9.26278 +OMIDYEH, IRAN:30.835:49.5347 +OMSK, RUSSIA:54.9669:73.31:573 +ONTARIO, USA:34.0558:W117.601 +OPOLU, USA:20.265:W155.86 +OPTAND, SWEDEN:63.1286:14.8028 +ORADEA, ROMANIA:47.0253:21.9025 +ORAN, ALGERIA:35.5422:W0.532222 +ORAN, ARGENTINA:-23.1528:W64.3292 +ORANGE, FRANCE:44.1371311:4.8078783 +ORANJESTAD, ANTILLES:17.4964:W62.9792 +ORANJESTAD, ARUBA:12.5014:W70.015 +ORAPA, BOTSWANA:-21.2664:25.3203 +OREBRO, SWEDEN:59.2236:15.0378 +ORENBURG, RUSSIA:51.7956:55.4567:259 +ORIXIMINA, BRAZIL:-1.48944:W56.3967 +ORLAND, NORWAY:63.6989:9.60389 +ORLANDO, USA:28.5421109:W81.3790304:265 +ORLEANS, FRANCE:47.8969:2.16333:27 +ORMARA, PAKISTAN:25.2731:64.5883 +ORMOC, PHILIPPINES:11.0558:124.566 +ORNSKOLDSVIK, SWEDEN:63.4083:18.99 +ORSA, SWEDEN:61.19:14.7125 +ORURO, BOLIVIA:-17.9633:W67.0761 +OSAKA, JAPAN:34.5961:135.603 +OSAN, KOREA:37.0906:127.029 +OSCODA, USA:44.4514:W83.3939 +OSHIMA, JAPAN:34.7844:139.361 +OSH, RUSSIA:40.6089:72.7931:182 +OSIJEK, CROATIA:45.4625:18.8114 +OSKARSHAMN, SWEDEN:57.3503:16.4978 +OSLO, NORWAY:59.8956:10.6169 +OSORNO, CHILE:-40.6114:W73.0603 +OSTEND, BELGIUM:51.1989:2.86222 +OSTERSUND, SWEDEN:63.1939:14.5019 +OSTRAVA, CZECH REPUBLIC:49.6964:18.1111 +OTTAWA, CANADA:45.3225:W75.6692 +OTU, COLOMBIA:7.01028:W74.7153 +OUAGADOUGOU, BURKINA FASO:12.3531:W1.51222 +OUARGLA, ALGERIA:31.9172:5.41278 +OUARZAZATE, MOROCCO:30.9389:W6.90917 +OUDTSHOORN, SOUTH AFRICA:-33.6069:22.1889 +OUESSANT, FRANCE:48.4628:W5.06389 +OUESSO, CONGO:1.61583:16.0378 +OUJDA, MOROCCO:34.7869:W1.92389 +OULU, FINLAND:64.93:25.3544 +OUVEA, NEW CALEDONIA:-20.6406:166.573 +OVAR, PORTUGAL:40.9158:W8.64583 +OVDA, ISRAEL:29.94:34.9358 +OVERBERG, SOUTH AFRICA:-34.5553:20.2503 +OWANDO, CONGO:-0.531111:15.95 +OXFORD, ENGLAND:51.7520131:W1.2578499:37 +OYEM, GABON:1.54111:11.5808 +OZUKI, JAPAN:34.0453:131.052 +PACHUCA, MEXICO:20.0772:W98.7822 +PADANG, INDONESIA:-0.876111:100.352 +PADANG SIDEMPUAN, INDONESIA:1.39917:99.4319 +PADERBORN, GERMANY:51.6142:8.61611:179 +PADOVA, ITALY:45.3956:11.8478:92 +PAGO PAGO, SAMOA:-14.3308:W170.71 +PAILTON, UK:51.6681:W2.05694 +PAKSE, LAOS:15.1319:105.781 +PALA, CHAD:9.37917:14.9258 +PALACIOS, USA:28.7275:W96.2508 PALANGKARAYA, INDONESIA:-2.225:113.943 -SAMPIT, INDONESIA:-2.50111:112.977 -MAUMERE, INDONESIA:-8.64056:122.237 -ENDE, INDONESIA:-8.84889:121.662 +PALEMBANG, INDONESIA:-2.89778:104.701 +PALERMO, ITALY:38.1758:13.0908:158 +PALMA DE MALLORCA, SPAIN:39.5517:2.73861 +PALMARITO, VENEZUELA:7.57556:W70.1742 +PALMAR SUR, COSTA RICA:8.95083:W83.4683 +PALMDALE, USA:34.6292:W118.084 +PALMERSTON NORTH, NEW ZEALAND:-40.3206:175.617 +PALMER, USA:61.5947:W149.089 +PALM SPRINGS, USA:33.8294:W116.507 +PALMYRA, SYRIA:34.5572:38.3167 +PALU, INDONESIA:-0.918333:119.909 +PAMIERS, FRANCE:43.0906:1.69583 +PAMPLONA, SPAIN:42.77:W1.64611 +PANAGARH, INDIA:23.4744:87.4278 +PANAMA CITY, PANAMA:9.07111:W79.3833 +PANAMA CITY, USA:30.0697:W85.5764 +PANAMA, PANAMA:8.97333:W79.5556 +PANDORA, COSTA RICA:9.73194:W82.9831 +PANGKALAN BUN, INDONESIA:-2.705:111.673 +PANGKAL PINANG, INDONESIA:-2.16278:106.139 +PANGNIRTUNG, CANADA:66.145:W65.7136 +PANJGUR, PAKISTAN:26.9544:64.1325 +PAPA, HUNGARY:47.3639:17.5008:91 +PAPHOS, CYPRUS:34.7178:32.4856 +PARACHINAR, PAKISTAN:33.9025:70.0714 +PARAGUANA, VENEZUELA:11.7808:W70.1517 +PARAKOU, BENIN:9.35694:2.60889 +PARAMARIBO, SURINAM:5.81083:W55.1906 +PARANA, ARGENTINA:-31.7947:W60.4803 +PARAPARAUMU, NEW ZEALAND:-40.9047:174.989 +PARCHIM, GERMANY:53.4269:11.7833:124 +PARDUBICE, CZECH REPUBLIC:50.0133:15.7386 +PARIS, FRANCE:48.8566969:2.3514616:105 +PARMA, ITALY:44.8244:10.2961:260 +PARNAIBA, BRAZIL:-2.89361:W41.7319 +PARNU, ESTONIA:58.4189:24.4728 +PARO, BHUTAN:27.4031:89.4258 +PARSABAD, IRAN:39.6036:47.8811 +PARYS, SOUTH AFRICA:-26.8892:27.5033 +PASIGHAT, INDIA:28.0661:95.3356 +PASNI, PAKISTAN:25.2836:63.3328 +PASO DE LOS LIBRES, ARGENTINA:-29.6892:W57.1519 +PASSO FUNDO, BRAZIL:-28.2439:W52.3264 +PASTO, COLOMBIA:1.39639:W77.2908 +PATHANKOT, INDIA:32.2336:75.6344 +PATHEIN, MYANMAR:16.8128:94.7753 +PATIALA, INDIA:30.315:76.3633 +PATINA, INDIA:25.5906:85.0878 +PATRAS, GREECE:38.1511:21.4256:125 +PATREKSFJORDUR, ICELAND:65.5558:W23.965 +PATTANI, THAILAND:6.78528:101.153 +PATTIJOKI, FINLAND:64.6881:24.6958 +PATUXENT RIVER, USA:38.2858:W76.4117 +PAU, FRANCE:43.38:W0.418611 +PAULO ALFONSO, BRAZIL:-9.40083:W38.2506 +PAYA LEBAR, SINGAPORE:1.36028:103.909 +PAYERNE, SWITZERLAND:46.8431:6.915 +PAYSANDU, URUGUAY:-32.365:W58.0611 +PEACE RIVER, CANADA:56.2269:W117.447 +PEDERNALES, ECUADOR:0.0730556:W80.0522 +PEHUAJO, ARGENTINA:-35.8456:W61.8578 +PEKANBARU, INDONESIA:0.461111:101.444 +PELLY BAY, CANADA:68.5344:W89.8081 +PELOTAS, BRAZIL:-31.7183:W52.3275 +PEMBA, MOZAMBIQUE:-12.9867:40.5222 +PEMBA, TANZANIA:-5.25722:39.8114 +PEMBINA, USA:48.9425:W97.2408 +PENANG, MALAYSIA:5.29694:100.277 +PENDORO, INDONESIA:-3.28583:103.879 +PENSACOLA, USA:30.3525:W87.3186 +PENTICTON, CANADA:49.4628:W119.602 +PENZA, RUSSIA:28.9542:W98.5197:304 +PEREIRA, COLOMBIA:4.8125:W75.7394 +PERIGUEUX, FRANCE:45.1981:0.815556 +PERM, RUSSIA:57.9167:56.0256:803 +PERONNE, FRANCE:49.8689:3.02778 +PERPIGNAN, FRANCE:42.7403:2.87056 +PERTH, AUSTRALIA:-32.0972:115.881:1000 +PERUGIA, ITALY:43.0958:12.5131:449 +PERU, USA:40.6481:W86.1519 +PESCARA, ITALY:42.4314:14.1808:33 +PESHAWAR, PAKISTAN:33.9939:71.5144 +PETAWAWA, CANADA:45.9522:W77.3192 +PETERBOROUGH, CANADA:44.23:W78.3633 +PETERBOROUGH, ENGLAND:52.5725769:W0.2427336:44 +PETROLINA, BRAZIL:-9.36389:W40.5639 +PETROLINE 10, SAUDI ARABIA:24.1072:41.0358 +PETROLINE 3, SAUDI ARABIA:25.1744:47.4883 +PETROLINE 6, SAUDI ARABIA:24.7103:44.9644 +PETROPAVLOVSK, RUSSIA:53.1664:158.453:400 +PEVEK, RUSSIA:67.5:171:60 +PHALABORWA, SOUTH AFRICA:-23.9369:31.1553 +PHALSBOURG, FRANCE:48.7661:7.20028:13 +PHETCHABUN, THAILAND:16.8208:101.254 +PHILADELPHIA, USA:39.8719:W75.2411 +PHILIPSBURG, ANTILLES:18.0408:W63.1089 +PHITSANULOK, THAILAND:16.7828:100.279 +PHNOM-PENH, CAMBODIA:11.5464:104.844 +PHOENIX, USA:33.535:W112.383:1338 +PHONG SAVANH, LAOS:19.4547:103.218 +PHRAE, THAILAND:18.1319:100.164 +PHUKET, THAILAND:8.11306:98.3167 +PIACENZA, ITALY:44.9131:9.72333:118 +PICKLE LAKE, CANADA:51.4464:W90.2142 +PICO, ACORES:38.5544:W28.4397 +PIEDRAS NEGRAS, MEXICO:28.6272:W100.535 +PIESTANY, SLOVAKIA:48.625:17.8283 +PIETERMARITZBURG, SOUTH AFRICA:-29.6489:30.3986 +PIETERSBURG, SOUTH AFRICA:-23.8453:29.4586 +PIIKAJARVI, FINLAND:61.2456:22.1933 +PILANESBERG, SOUTH AFRICA:-25.3336:27.1733 +PILAR, PARAGUAY:-26.8814:W58.3178 +PINAR DEL RIO NORTE, CUBA:22.4211:W83.6775 +PINE BLUFF, USA:34.1747:W91.9344 +PINGTUNG, TAIWAN:22.6722:120.462 +PIRACUNUNGA, BRAZIL:-21.9853:W47.3381 +PISA, ITALY:43.6839:10.3925:185 +PISCO, PERU:-13.7447:W76.2203 +PITALITO, COLOMBIA:1.85833:W76.0858 +PITEA, SWEDEN:65.3994:21.2653 +PITT MEADOWS, CANADA:49.2161:W122.71 +PITTSBURGH (PENNSYLVA), USA:40.4914:W80.2328 +PIURA, PERU:-5.20556:W80.6164 +PLAISANCE, MAURITIUS:-20.43:57.6833 +PLATTSBURGH, USA:44.6508:W73.4681 +PLETTENBERG BAY, SOUTH AFRICA:-34.0903:23.3278 +PLOVDIV, BULGARIA:42.0678:24.8508 +PLYMOUTH, ENGLAND:50.38433871605018:W4.142479969311532:79 +PLYMOUTH, MONTSERRAT ISLAND:33.5869:W80.2086 +POCOS DE CALDAS, BRAZIL:-21.8428:W46.5678 +PODGORICA, YUGOSLAVIA:42.3592:19.2517 +POHANG, KOREA:35.9878:129.42 +POHNPEI, MICRONESIA:6.985:158.209 +POINT BARROW, USA:56.5783:W169.661 +POINT COOK, AUSTRALIA:-37.9322:144.753:9 +POINTE-A-PITRE, ANTILLES:16.2653:W61.5317 +POINTE-NOIRE, CONGO:-4.81333:11.8858 +POINT LAY, USA:69.7328:W163.005 +POINT MUGU, USA:34.1203:W119.121 +POINT SALINES, GRENADA:12.0042:W61.7861 +POITIERS, FRANCE:46.5875:0.306667 +POKHARA, NEPAL:28.2003:83.9811 +POMFRET, SOUTH AFRICA:-25.8469:23.5378 +PONCA CITY, USA:36.7306:W97.0997 +PONCE, PUERTO RICO:18.0081:W66.5628 +POND INLET, CANADA:72.6833:W77.9667 +PONGGALUKU, INDONESIA:-4.31667:122.467 +PONTA DELGADA, ACORES:37.7411:W25.6978 +PONTA GROSSA, BRAZIL:-25.1844:W50.1439 +PONTA PORA, BRAZIL:-22.5494:W55.7025 +PONTARLIER, FRANCE:46.9044:6.32694:41 +PONTIANAK, INDONESIA:-0.150556:109.404 +PONTIVY, FRANCE:48.0583:W2.92167 +POPAYAN, COLOMBIA:2.45417:W76.61 +POPRAD, SLOVAKIA:49.0733:20.2408 +POPTUN, GUATEMALA:16.3261:W89.4169 +PORBANDAR, INDIA:21.6494:69.6564 +PORI, FINLAND:61.4617:21.7997 +PORLAMAR, VENEZUELA:10.9125:W63.9664 +PORTAGE-LA-PRAIRIE, CANADA:49.9028:W98.2747 +PORT ANGELES, USA:48.1414:W123.414 +PORT ANTONIO, JAMAICA:18.1986:W76.5344 +PORT-AU-PRINCE, HAITI:18.58:W72.2925 +PORT BLAIR, INDIA:11.6456:92.7331 +PORT ELIZABETH, SOUTH AFRICA:-33.9847:25.6172 +PORT GENTIL, GABON:-0.711667:8.75417 +PORT HARDY, CANADA:50.6806:W127.367 +PORT HARTCOURT, NIGERIA:5.01528:6.94944 +PORT HURON, USA:42.9108:W82.5286 +PORTIMAO, ACORES:37.1492:W8.58389 +PORTLAND, USA:45.5886:W122.597:346 +PORT MENIER, CANADA:49.8364:W64.2886 +PORT MOLLER, USA:59.0111:W161.819 +PORT MORESBY, PAPUA NEW GUINEA:-9.44333:147.22 +PORTO, ACORES:41.2481:W8.68139 +PORTO ALEGRE, BRAZIL:-29.9458:W51.1444 +PORTO AMBOIM, ANGOLA:-10.7219:13.7653 +PORT-OF-SPAIN, TRINIDAD & TOBAGO:10.5953:W61.3372 +PORTO NACIONAL, BRAZIL:-10.7192:W48.3997 +PORTOROZ, SLOVENIA:45.4733:13.6147 +PORTO SANTO, MADEIRA:33.0733:W16.3497 +PORTO VELHO, BRAZIL:-8.70917:W63.9022 +PORTOVIEJO, ECUADOR:-1.04139:W80.4719 +PORT SAID, EGYPT:31.2794:32.24 +PORT SAINT JOHNS, SOUTH AFRICA:-31.6058:29.5197 +PORT SUDAN, SUDAN:19.5764:37.2158 +PORT-VILA, VANUATU:-17.6992:168.32 +PORVENIR, CHILE:-53.2536:W70.3192 +POSADAS, ARGENTINA:-27.3858:W55.9706 +POSO, INDONESIA:-1.41667:120.657 +POTCHEFSTROOM, SOUTH AFRICA:-26.6708:27.0817 +POTGIETERSRUS, SOUTH AFRICA:-24.2303:28.9836 +POTOSI, BOLIVIA:-19.5433:W65.7239 +POZA RICO, MEXICO:20.6025:W97.4608 +POZNAN, POLAND:52.4211:16.8264 +PRACHIN BURI, THAILAND:13.7686:102.315 +PRACHUAP KHIRI KHAN, THAILAND:12.6339:99.9508 +PRAGUE, CZECH REPUBLIC:50.1008:14.26 +PRAHA, CZECH REPUBLIC:50.1211:14.5436 +PRASLIN, SEYCHELLES:-4.31917:55.6914 +PREROV, CZECH REPUBLIC:49.4258:17.4047 +PRESCHEN, GERMANY:51.6636:14.6336 +PRESCOTT, USA:34.6544:W112.419 +PRESIDENCIA R.S.PENA, ARGENTINA:-26.7564:W60.4931 +PRESIDENT PRUDENTE, BRAZIL:-22.175:W51.4244 +PRESQUE ISLE, USA:46.6889:W68.0447 +PRESTON, ENGLAND:53.76409:W2.70456 +PRESTWICK, UK:55.5078:W4.58667:20 +PRETORIA, SOUTH AFRICA:-25.6536:28.2242 +PREVEZA, GREECE:38.9253:20.7653:381 +PRIBRAM, CZECH REPUBLIC:49.7186:14.0969 +PRINCE ALBERT, CANADA:53.2142:W105.673 +PRINCE GEORGE, CANADA:53.8894:W122.679 +PRINCE PUPERT, CANADA:54.2861:W130.445 +PRINCETON, CANADA:49.4675:W120.512 +PRINCETON, USA:45.5597:W93.6081 +PRINCIPE, SAO TOME & PRINCIPE:1.66278:7.41167 +PRISTINA, YUGOSLAVIA:42.5728:21.0358 +PROPRIANO, FRANCE:41.6631:8.89028 +PROSSERPINE, AUSTRALIA:-20.495:148.552:25 +PROVIDENCE, USA:41.7239:W71.4281 +PROVIDENCIA, COLOMBIA:13.3569:W81.3583 +PROVIDENCIALES, TURKS & CAICOS I.:21.7736:W72.2658 +PUCALLPA, PERU:-8.37778:W74.5742 +PUDASJARVI, FINLAND:65.4022:26.9469 +PUEBLA, MEXICO:19.1581:W98.3714 +PUEBLO MEMORIAL, USA:38.2889:W104.496 +PUERTO ASIS, COLOMBIA:9.4424024:W75.1379851 +PUERTO AYACUCHO, VENEZUELA:5.61972:W67.6058 +PUERTO BARRIOS, GUATEMALA:15.7308:W88.5836 +PUERTO BOLIVAR, COLOMBIA:12.2214:W71.9847 +PUERTO CABELLO, VENEZUELA:10.4803:W68.0728 +PUERTO CABEZAS, NICARAGUA:14.0469:W83.3867 +PUERTO CARRENO, COLOMBIA:6.18444:W67.4931 +PUERTO DESEADO, ARGENTINA:-47.7353:W65.9039 +PUERTO ESCONDIDO, MEXICO:15.8767:W97.0889 +PUERTO ESPERANZA, PERU:-9.76806:W70.7064 +PUERTO LEMPIRA, HONDURAS:15.2608:W83.7814 +PUERTO MADRYN, ARGENTINA:-42.7589:W65.1025 +PUERTO MALDONADO, PERU:-12.6136:W69.2289 +PUERTO MONTT, CHILE:-41.4386:W73.0939 +PUERTO PLATA, DOMINICAN REPUBLIC:19.7572:W70.5697 +PUERTO PRINCESA, PHILIPPINES:9.74194:118.759 +PUERTO SUAREZ, BOLIVIA:-18.9753:W57.8206 +PUERTO VALLARTA, MEXICO:20.68:W105.254 +PUERTO WILLIAMS, CHILE:-54.9308:W67.6261 +PUKAKI, NEW ZEALAND:-44.235:170.118 +PUKA PUKA, FRENCH POLYNESIA:-14.8094:W138.813 +PULA, CROATIA:44.8933:13.9219 +PULAU, MALAYSIA:6.32972:99.7286 +PULAU PIOMAN, MALAYSIA:2.81806:104.16 +PULLENSHOPE, SOUTH AFRICA:-25.9794:29.6186 +PUNE, INDIA:18.5819:73.9194 +PUNTA ARENAS, CHILE:-53.0028:W70.8547 +PUNTA CANA, DOMINICAN REPUBLIC:18.5672:W68.3633 +PUNTA DEL ESTE, URUGUAY:-34.9136:W54.9206 +PUNTA INDIO, ARGENTINA:-35.3478:W57.2939 +PUNTA PENASCO, MEXICO:31.3517:W113.526 +PURNEA, INDIA:25.76:87.4092 +PUTAO, MYANMAR:27.3297:97.4261 +PUTUSIBAU, INDONESIA:0.835833:112.936 +PYAY, MYANMAR:18.8244:95.2658 +PYHASALMI, FINLAND:63.7317:25.9261 +PYONGTAEK, KOREA:36.9606:127.033 +PYONGYANG, KOREA:39.0333:125.783:2000 +QASIM, PAKISTAN:33.5611:73.0319 +QINGDAO, CHINA:36.2625:120.375:1632 +QUANTICO, USA:38.5017:W77.3053 +QUEBEC, CANADA:46.7883:W71.3975 +QUEENSTOWN INTERNATIONAL, NEW ZEALAND:-45.0211:168.739 +QUEENSTOWN, SOUTH AFRICA:-31.92:26.8819 +QUELIMANE, MOZAMBIQUE:-17.8556:36.8692 +QUEPOS, COSTA RICA:9.44306:W84.1297 +QUERETARO, MEXICO:20.6239:W100.369 +QUESNEL, CANADA:53.0261:W122.51 +QUETTA, PAKISTAN:30.2511:66.9375 +QUEZALTENANGO, GUATEMALA:14.8653:W91.5019 +QUIBDO, COLOMBIA:5.69056:W76.6411 +QUIMPER, FRANCE:47.9747:W4.16778:84 +QUITO, ECUADOR:-0.141111:W78.4881 +QUUJJUAQ, CANADA:58.0961:W68.4269 +RABAT, MOROCCO:34.0514:W6.75139 +RABIGH, SAUDI ARABIA:22.7025:39.0697 +RADA, SWEDEN:58.4981:13.0531 +RAFHA, SAUDI ARABIA:29.6264:43.4906 +RAFSANJAN, IRAN:30.2978:56.0519 +RAHIM YAR KHAN, PAKISTAN:28.3853:70.2797 +RAIATEA ISLAND, FRENCH POLYNESIA:-16.7228:W151.466 +RAIBARELLI, INDIA:26.2503:81.3806 +RAIPUR, INDIA:21.1803:81.7386 +RAJAHMUNDRY, INDIA:17.1094:81.8183 +RAJKOT, INDIA:22.3092:70.7794 +RAJSHAHI, BANGLADESH:24.4369:88.6164 +RALEIGH-DURHAM, USA:35.8775:W78.7872 +RAMAT DAVID, ISRAEL:32.6603:35.1822 +RAMON, ISRAEL:30.7761:34.6667 +RAMSAR, IRAN:36.9097:50.6794 +RAMSTEIN, GERMANY:49.4375:7.60139 +RANCAGUA, CHILE:-34.1736:W70.7756 +RANCHI, INDIA:23.3147:85.3214 +RANCHO MURIETA, USA:38.4886:W121.102 +RANGIROA, FRENCH POLYNESIA:-14.9542:W147.661 +RANKIN INLET, CANADA:62.8114:W92.1158 +RANONG, THAILAND:9.7775:98.5853 +RANTASALMI, FINLAND:62.0653:28.3564 +RAPID CITY, USA:44.145:W103.103 +RARON, SWITZERLAND:46.3036:7.82333 +RAS AL KHAIMAH, UNITED ARAB EMIRATES:25.6133:55.9386 +RASH MISHAB, SAUDI ARABIA:28.0794:48.6108 +RASHT, IRAN:37.3253:49.6056 +RAS LANOUF V 40, LIBYA:30.5:18.5269 +RAS TANAJIB, SAUDI ARABIA:27.8689:48.7683 +RAS TANURA, SAUDI ARABIA:26.7231:50.0306 +RAWALA KOT, PAKISTAN:33.8492:73.7978 +RAYONG, THAILAND:12.6797:101.005 +RAYSKALA, FINLAND:60.7447:24.1078 +REAO, FRENCH POLYNESIA:-18.4658:W136.439 +RECHLIN-LAERZ, GERMANY:53.3064:12.7531:43 +RECIFE, BRAZIL:-8.12639:W34.9233 +RECONQUISTA, ARGENTINA:-29.21:W59.6908 +RED DEER INDUSTRIAL, CANADA:52.1786:W113.893 +RED RIVER, USA:47.9608:W97.4011 +REDSTONE, USA:34.6786:W86.6847 +REGGAN, ALGERIA:26.71:0.285556 +REGGIO CALABRIA, ITALY:38.0711:15.6514:239 +REGINA, CANADA:50.4319:W104.666 +REIMS, FRANCE:49.2078:4.15667:46 +RELIZANE, ALGERIA:35.7522:0.626111 +REMADA, TUNISIA:32.3061:10.3819 +RENDSBURG, GERMANY:54.2208:9.60056:23 +RENGAT, INDONESIA:-0.352778:102.335 +RENNES, FRANCE:48.0694:W1.73472:50 +RENO, USA:39.4983:W119.768 +REPULSE BAY, CANADA:66.5214:W86.2247 +RESISTENCIA, ARGENTINA:-27.4497:W59.0561 +RESOLUTE, CANADA:74.7169:W94.9694 +RETALHULEU, ARGENTINA:14.5208:W91.6972 +REUS, SPAIN:41.1472:1.16694 +REYES, BOLIVIA:-14.3061:W67.3536 +REYKJAVIK, ICELAND:64.13:W21.9406 +REYNOSA, MEXICO:26.0089:W98.2283 +RHEINE-BRENTLANGE, GERMANY:52.2911:7.38694 +RIBEIRAO PRETO, BRAZIL:-21.1342:W47.7742 +RIBERALTA, BOLIVIA:-11.0103:W66.0733 +RICHARD'S BAY, SOUTH AFRICA:-28.7408:32.0919 +RICHMOND, AUSTRALIA:-33.6006:150.781:3 +RICHMOND, USA:37.505:W77.3194 +RIESA, GERMANY:51.2944:13.3589:58 +RIJEKA, CROATIA:45.2167:14.57 +RIMINI, ITALY:44.0203:12.6119:134 +RIOBAMBA, ECUADOR:-1.65361:W78.6561 +RIO BRANCO, BRAZIL:-9.86889:W67.8936 +RIO CUARTO, ARGENTINA:-33.0856:W64.2614 +RIO DE JANEIRO, BRAZIL:-22.8089:W43.2436 +RIO GALLEGOS, ARGENTINA:-51.6086:W69.3125 +RIO GRANDE, ARGENTINA:-53.7775:W67.7492 +RIO GRANDE, BRAZIL:-32.0825:W52.1664 +RIO HACHA, COLOMBIA:11.5261:W72.9258 +RIO NEGRO, COLOMBIA:6.16444:W75.4231 +RIO TURBIO, ARGENTINA:-51.6064:W72.2167 +RISALPUR, PAKISTAN:34.0811:71.9725 +RISHIRI ISLAND, JAPAN:45.2419:141.186 +RIVERA, URUGUAY:-30.9744:W55.4761 +RIVERSIDE, USA:33.8806:W117.259 +RIVIERE DU LOUP, CANADA:47.7644:W69.5847 +RIYADH, SAUDI ARABIA:24.9575:46.6986 +ROADTOWN/BEEF ISLAND, VIRGIN ISL.:18.4447:W64.5428 +ROANNE, FRANCE:46.0583:4.00139 +ROATAN, HONDURAS:16.3167:W86.5225 +ROBERTSON, SOUTH AFRICA:-33.8119:19.9028 +ROBERVAL, CANADA:48.52:W72.2656 +ROBINSON, USA:34.85:W92.3 +ROBORE, BOLIVIA:-18.3281:W59.7661 +ROCHEFORT, FRANCE:45.8878:W0.983056 +ROCHESTER, USA:43.1186:W77.6722 +ROCKHAMPTON, AUSTRALIA:-23.3819:150.475:580 +ROCK SOUND, BAHAMAS:24.8917:W76.1775 +ROCKY MOUNTAIN HOUSE, CANADA:52.4297:W114.904 +RODEZ, FRANCE:44.4078:2.4825 +RODRIGUEZ ISLAND, MAURITIUS:-19.7578:63.3619 +ROMBLON, PHILIPPINES:6.05806:125.096 +ROME, ITALY:41.8933203:12.4829321:1285 +ROME, USA:43.2336:W75.4069 +RONCHI DE LEGIONARI, ITALY:45.8278:13.4664:17 +RONNEBY, SWEDEN:56.2667:15.265 +RONNE, DENMARK:55.0631:14.7594 +ROOSEVELT ROADS, PUERTO RICO:18.245:W65.6433 +ROROS, NORWAY:62.5783:11.3422 +ROSARIO, ARGENTINA:-32.9033:W60.7844 +ROSENTHAL, GERMANY:49.8628:11.7878:51 +ROSH PINA, ISRAEL:32.9808:35.5717 +ROSTOV, RUSSIA:47.2581:39.8178:354 +ROSWELL, USA:33.3014:W104.531 +ROTA, MARIANA ISLANDS:14.1744:145.243 +ROTA, SPAIN:36.645:W6.34944 +ROTH, GERMANY:49.2175:11.1006 +ROTORUA, NEW ZEALAND:-38.1092:176.317 +ROTTERDAM, NETHERLANDS:51.9572:4.44167:324 +ROUEN, FRANCE:49.4404591:1.0939658:21 +ROURKELA, INDIA:22.2564:84.8144 +ROUYN, CANADA:48.2061:W78.8356 +ROVANIEMI, FINLAND:66.5647:25.8303 +ROXAS, PHILIPPINES:11.5975:122.753 +ROYAN, FRANCE:45.6281:W0.9725 +RURRENABAQUE, BOLIVIA:-14.4283:W67.5014 +RURUTU, FRENCH POLYNESIA:-22.4339:W151.361 +RUSTENBURG, SOUTH AFRICA:-25.6442:27.2711 RUTENG, INDONESIA:-8.59556:120.478 -KUPANG, INDONESIA:-10.1714:123.671 -LABUHAN BAJO, INDONESIA:-8.48611:119.889 -TANJUNG REDEP, INDONESIA:2.15444:117.432 -BALIKPAPAN, INDONESIA:-1.26806:116.894 -TARAKEN, INDONESIA:3.32639:117.566 +RYGGE, NORWAY:59.3789:10.7856 +RZESZOW, POLAND:50.11:22.0189 +SAANEN, SWITZERLAND:46.4875:7.25083 +SAARBRUECKEN, GERMANY:49.2144:7.10944:167 +SABANG, INDONESIA:5.87389:95.3394 +SACE, SOUTH AFRICA:-25.9614:29.2086 +SACHON, KOREA:35.0883:128.07 +SACHS HARBOUR, CANADA:71.9939:W125.243 +SACRAMENTO, USA:38.5125:W121.493 +SAHARANPUR, INDIA:29.9942:77.4242 +SAHIWAL, PAKISTAN:31.8894:72.3092 +SAIDPUR, BANGLADESH:25.7592:88.9086 +SAIDU SHARIF, PAKISTAN:34.8131:72.3519 +SAINTE MARIE, MADAGASCAR:-17.0939:49.8158 +SAIPAN, MARIANA ISLANDS:15.1194:145.729 +SAIQ, OMAN:23.0667:57.65 +SAKON NAKHON, THAILAND:17.195:104.119 +SALALAH, OMAN:17.0386:54.0911 +SALAMANCA, SPAIN:40.9519:W5.50194 +SALDANHA, SOUTH AFRICA:-32.9639:17.9692 +SALEKHARD, RUSSIA:66.59:66.6103:84 +SALEM, INDIA:11.7819:78.0653 +SALERNO, ITALY:40.6203:14.9111:58 +SALINAS, ECUADOR:-2.20472:W80.9886 +SALISBURY, USA:38.3403:W75.5103 +SALON, FRANCE:43.6064:5.10917 +SALTA, ARGENTINA:-24.8558:W65.4861 +SALTILLO, MEXICO:25.5494:W100.929 +SALT LAKE CITY, USA:40.7883:W111.978:288 +SALTO, URUGUAY:-31.4397:W57.9906 +SALTSY, MOLDOVA:47.8378:27.7811 +SALVADOR, BRAZIL:-12.9108:W38.3308 +SALZBURG, AUSTRIA:47.7931:13.0042 +SAMANA, DOMINICAN REPUBLIC:19.1986:W69.43 +SAMARA, RUSSIA:53.5053:50.1644:541 SAMARINDA, INDONESIA:-0.484444:117.157 -TANJUNG SANTAN, INDONESIA:-0.0930556:117.439 -MATARAM, INDONESIA:-8.56056:116.094 -BIMA, INDONESIA:-8.53944:118.687 -DENPASAR, INDONESIA:-8.74833:115.167 +SAMARKAND, RUSSIA:39.7006:66.9847:120 +SAMBAVA, MADAGASCAR:-14.2786:50.1747 +SAMEDAN, SWITZERLAND:46.5325:9.88278 +SAMPIT, INDONESIA:-2.50111:112.977 +SAMSUN, TURKEY:41.2764:36.3036:1055 +SANANDAJ, IRAN:35.2469:47.0069 +SAN ANDRES ISLAND, COLOMBIA:12.5833:W81.7111 +SAN ANDROS, BAHAMAS:25.0536:W78.0489 +SAN ANGELO, USA:31.3575:W100.496 +SAN ANTONIO DE BANOS, CUBA:22.8714:W82.5092 +SAN ANTONIO, USA:29.5294:W98.2789:1194 +SAN ANTONIO, VENEZUELA:7.85222:W72.4347 +SAN BORJA, BOLIVIA:-14.8575:W66.7375 +SAN CARLOS DE BARILOCH, ARGENTINA:-41.1511:W71.1575 +SAN CARLOS, VENEZUELA:9.64889:W68.5753 +SAN CRISTOBAL, ECUADOR:-0.909722:W89.6158 +SAN CRISTOBAL, VENEZUELA:7.80111:W72.2028 +SANCTI SPIRITUS, CUBA:21.9706:W79.4422 +SAN DIEGO, USA:32.6992:W117.215:842 +SANDNESSJOEN, NORWAY:65.9567:12.4689 +SANDSPIT, CANADA:53.2542:W131.814 +SANDTOFT, UK:53.5597:W0.858333 +SANDUSKY, USA:41.4333:W82.6522 +SANDY POINT, BAHAMAS:26.0044:W77.3953 +SAN FELIPE, VENEZUELA:10.2786:W68.755 +SAN FERNANDO, ARGENTINA:-34.4531:W58.5894 +SAN FERNANDO DE APURE, VENEZUELA:7.8825:W67.4436 +SAN FERNANDO DEATABAPO, VENEZUELA:4.05167:W67.7008 +SAN FERNANDO, PHILIPPINES:16.5956:120.303 +SAN FILIPE, MEXICO:30.93:W114.809 +SAN FRANCISCO, USA:37.74594738515095:W122.44299445520019:121 +SANGLEY POINT, PHILIPPINES:9.75778:125.481 +SAN IGNACIO DE MOXOS, BOLIVIA:-14.9656:W65.6336 +SAN IGNACIO DE VELASCO, BOLIVIA:-16.3844:W60.9628 +SAN ISIDORO, DOMINICAN REPUBLIC:18.5036:W69.7617 +SAN JOAQUIN, BOLIVIA:-13.0528:W64.6617 +SAN JOSE, COSTA RICA:9.95722:W84.1419 +SAN JOSE DEL CABO, MEXICO:23.1517:W109.721 +SAN JOSE DEL GUAVIARE, COLOMBIA:2.57944:W72.6392 +SAN JOSE, GUATEMALA:13.9361:W90.8358 +SAN JOSE, PHILIPPINES:10.7661:121.932 +SAN JOSE, USA:37.32149403063839:W121.9286918256836 +SAN JUAN DE LOS MORROS, VENEZUELA:9.90694:W67.3794 +SAN JUAN, PERU:-15.3575:W75.1356 +SAN JUAN, PUERTO RICO:18.4392:W66.0017 +SAN JULIAN, ARGENTINA:-31.5714:W68.4181 +SAN JULIAN, CUBA:22.0953:W84.1519 +SAN JUSTO, ARGENTINA:-34.7314:W58.5994 +SANLIURFA, TURKEY:37.0919:38.8461:3668 +SAN LUIS, ARGENTINA:-33.2731:W66.3564 +SAN LUIS POTOSI, MEXICO:22.2542:W100.931 +SAN LUIS, SPAIN:39.8622:4.25833 +SAN LUIS, USA:45.7725:W122.862 +SAN MARTIN DES ANDES, ARGENTINA:-40.0753:W71.1372 +SAN MATHIAS, BOLIVIA:-16.3386:W58.4017 +SAN PEDRO, IVORY COAST:4.74667:W6.66056 +SAN PEDRO SULA, HONDURAS:15.4525:W87.9233 +SAN RAFAEL, ARGENTINA:-34.5881:W68.4025 +SAN RAMON, BOLIVIA:-13.2636:W64.6053 +SAN RAMON, PERU:-11.1286:W75.3503 +SAN SALVADOR, EL SALVADOR:13.4406:W89.0558 +SAN SEBASTIAN, SPAIN:43.3564:W1.79056 +SANTA ANA, BOLIVIA:-13.7619:W65.435 +SANTA ANA, USA:33.6756:W117.868 +SANTA BARBARA, USA:32.6083:W82.3686 +SANTA BARBARA, VENEZUELA:7.80333:W71.1656 +SANTA CLARA, COSTA RICA:10.2883:W83.7136 +SANTA CLARA, CUBA:22.4919:W79.9436 +SANTA CRUZ, ARGENTINA:-50.0164:W68.5792 +SANTA CRUZ, BOLIVIA:-17.6447:W63.1353 +SANTA CRUZ DE LA PALMA, SPAIN:28.6264:W17.7556 +SANTA FE, ARGENTINA:-31.7117:W60.8117 +SANTA FE, USA:35.6167:W106.088 +SANTA LUCIA, CUBA:21.5094:W77.0175 +SANTA MARIA (ISLAND), ACORES:36.9714:W25.1706 +SANTA MARTA, COLOMBIA:11.1194:W74.2306 +SANTANDER, SPAIN:43.4269:W3.82 +SANTAREM, BRAZIL:-29.7111:W53.6881 +SANTA ROSA, ARGENTINA:-36.5881:W64.2753 +SANTA ROSA, ECUADOR:-3.43528:W79.9778 +SANTA TERESITA, ARGENTINA:-36.5422:W56.7217 +SANTIAGO, CHILE:-33.3928:W70.7856 +SANTIAGO DE CUBA, CUBA:19.97:W75.8356 +SANTIAGO DEL ESTERO, ARGENTINA:-27.7656:W64.31 +SANTIAGO, DOMINICAN REPUBLIC:19.4092:W70.6164 +SANTIAGO, PANAMA:8.08556:W80.945 +SANTIAGO, SPAIN:42.8961:W8.415 +SANTO ANGELO, BRAZIL:-28.2817:W54.1689 +SANTO DOMINGO, CHILE:-33.6567:W71.6156 +SANTO DOMINGO, DOMINICAN REPUBLIC:18.4294:W69.6686 +SANTO DOMINGO, ECUADOR:-0.248056:W79.2144 +SANTO DOMINGO, VENEZUELA:7.565:W72.035 +SAN TOME, VENEZUELA:8.945:W64.1508 +SANTOS, BRAZIL:-23.925:W46.2875 +SANTO, VANUATU:-15.5011:167.222 +SAN VINCENTE DE CAGUAN, COLOMBIA:2.15194:W74.7661 +SAN VITO DE JABA, COSTA RICA:8.82611:W82.9589 +SAO GABRIEL, BRAZIL:-0.148333:W66.9856 +SAO JORGE ISLAND, ACORES:38.6653:W28.1756 +SAO JOSE DO RIO PRETO, BRAZIL:-20.8164:W49.4064 +SAO JOSE DOS CAMPOS, BRAZIL:-23.2292:W45.8614 +SAO LUIS, BRAZIL:-2.58861:W44.2364 +SAO NOCOLAU ISLAND, CAPE VERDE ISLANDS:16.5883:W24.2844 +SAO PAULO, BRAZIL:-23.4322:W46.4692 +SAO PEDRO DA ALDEIA, BRAZIL:-22.8128:W42.0925 +SAO TOME, SAO TOME & PRINCIPE:0.378056:6.71194 +SAO VICENTE ISLAND, CAPE VERDE ISLANDS:16.8339:W25.0567 +SAPPORO, JAPAN:42.775:141.692 +SARAJEVO, BOSNIA-HERCEGOVINA:43.8244:18.3314 +SARAKHS, IRAN:36.5011:61.0647 +SARAVENA, COLOMBIA:6.95806:W71.855 +SARGODHA, PAKISTAN:32.0486:72.665 +SARH, CHAD:9.15111:18.3794 +SARMELLEK, HUNGARY:46.6864:17.1589:35 +SARNIA, CANADA:42.9994:W82.3089 +SASKATOON, CANADA:52.1708:W106.7 +SATENAS, SWEDEN:58.4264:12.7142 +SATTNA, SWEDEN:62.4811:17.0028 +SATU MARE, ROMANIA:47.7033:22.8856 +SAULT SAINTE MARIE, CANADA:46.485:W84.5094 +SAUMUR, FRANCE:47.2567:W0.115 +SAURIMO, ANGOLA:-9.68889:20.4317 +SAVANNAH, USA:32.1275:W81.2019 +SAVANNAKHET, LAOS:16.5564:104.759 +SAVONLINNA, FINLAND:61.9431:28.945 +SCARBOROUGH, TRINIDAD & TOBAGO:11.1494:W60.8319 +SCHEFFERVILLE, CANADA:54.805:W66.8053 +SCHLESWIG, GERMANY:54.4592:9.51611 +SCHWAEBISCH HALL, GERMANY:49.1181:9.77722:104 +SEATTLE, USA:47.59840153253106:W122.31143714060059:217 +SEBHA, LIBYA:26.9869:14.4725 +SECUNDA, SOUTH AFRICA:-26.5239:29.17 +SEK KONG, HONG KONG:22.4364:114.08 +SELANPAA, FINLAND:61.0622:26.7986 +SELEBI-PHIKWE, BOTSWANA:-22.0583:27.8286 +SELIBABI, MAURITANIA:15.1794:W12.2072 +SELMA, USA:32.3439:W86.9878 +SEMARANG, INDONESIA:-6.97306:110.375 +SEMBAWANG, SINGAPORE:1.42361:103.811 +SEMNAN, IRAN:35.5908:53.495 +SENDAI, JAPAN:38.1394:140.917 +SEO DE URGEL, SPAIN:42.3386:1.40917 +SEOUL EAST, KOREA:37.4458:127.114 +SEOUL, KOREA:37.5581:126.791 +SEPAH, IRAN:32.6208:51.6967 +SEPT-ILES, CANADA:50.2233:W66.2656 +SETIF, ALGERIA:36.1781:5.32444 +SEVILLA, SPAIN:37.1747:W5.61583 +SFAX, TUNISIA:34.7178:10.6908 +SHAHR ABAD, IRAN:37.6278:56.1731 +SHANGHAI, CHINA:31.1978:121.336:6340 +SHANNON, IRELAND:52.7019:W8.92472:2 +SHANTE, MYANMAR:20.9417:95.9144 +SHANTOU, CHINA:23.4:116.683:2248 +SHAPAJA, PERU:53.7906:15.8281 +SHARJAH, UNITED ARAB EMIRATES:25.3283:55.5169 +SHARURAH, SAUDI ARABIA:17.4667:47.1211 +SHAWBURY, UK:52.7981:W2.66778 +SHEBERGHAN, AFGHANISTAN:36.7503:65.9122 +SHEMYA, USA:52.7122:174.114 +SHENZHEN, CHINA:22.6394:113.812:2050 +SHERBROOKE, CANADA:45.4381:W71.6906 +SHIJIAZHUANG, CHINA:38.2806:114.696:15849 +SHIMLA, INDIA:31.0817:77.0581 +SHIMOFUSA, JAPAN:35.7989:140.011 +SHIMOJISHIMA, JAPAN:24.8267:125.145 +SHINDAND, AFGHANISTAN:33.3911:62.2608 +SHIRAZ, IRAN:29.5392:52.5894 +SHOLAPUR, INDIA:17.6278:75.9347 +SHONAI, JAPAN:38.8117:139.787 +SHOREKOTE, PAKISTAN:30.7581:72.2825 +SHREVEPORT, USA:32.4464:W93.8256 +SIBIU, ROMANIA:45.7856:24.0911 +SIBOLGA, INDONESIA:1.55472:98.8903 +SIBU, MALAYSIA:2.26389:111.983 +SIDI BEL ABBES, ALGERIA:35.1717:W0.593056 +SIDI IFINI, MOROCCO:29.3689:W10.18 +SIEGERLAND, GERMANY:50.7075:8.08194:114 +SIEM-REAP, CAMBODIA:13.4106:103.813 +SIENA, ITALY:43.2572:11.2542:118 +SIGLUFJORDUR, ICELAND:66.1333:W18.9167 +SIGUANEA, CUBA:21.6425:W82.955 +SIIRT, TURKEY:37.9786:41.8403:284 +SILCHAR, INDIA:24.9128:92.9786 +SIMARA, NEPAL:27.1594:84.98 +SIMFEROPOL, RUSSIA:45.0386:33.9831:107 +SIMPANG, MALAYSIA:3.11222:101.703 +SINDAL, DENMARK:57.5033:10.2292 +SINGAPORE, SINGAPORE:1.35556:103.987 +SINGKEP, INDONESIA:-0.479167:104.579 +SINTANG, INDONESIA:0.0636111:111.475 +SINTRA, ACORES:38.8308:W9.33944 +SINT-TRUIDEN, BELGIUM:50.7883:5.19278 +SIOFOK, HUNGARY:46.8581:18.0956:124 +SION, SWITZERLAND:46.2194:7.32667 +SIOUX CITY, USA:42.4025:W96.3842 +SIOUX LOOKOUT, CANADA:50.1144:W91.9042 +SIRI ISLAND, IRAN:25.9094:54.5392 +SIRJAN, IRAN:29.5508:55.6725 +SISHEN, SOUTH AFRICA:-27.6483:22.9992 +SITKA, USA:57.0469:W135.361 +SITTWE, MYANMAR:20.1325:92.8725 +SIVAS, TURKEY:39.8136:36.9033:2768 +SIVRIHISAR, TURKEY:39.4514:31.3653:2987 +SKAGWAY, USA:59.46:W135.316 +SKARDU, PAKISTAN:35.3347:75.5364 +SKELLEFTEA, SWEDEN:64.6247:21.0767 +SKIEN, NORWAY:59.185:9.56694 +SKIVE, DENMARK:56.55:9.17278 +SKOPJE, FORMER MACEDONIA:41.9614:21.6214 +SKOVDE, SWEDEN:58.4564:13.9725 +SKRYDSTRUP, DENMARK:55.2253:9.26389 +SKUKUZA, SOUTH AFRICA:-24.9608:31.5886 +SLAVE LAKE, CANADA:55.2933:W114.778 +SLIAC, SLOVAKIA:48.6378:19.1339 +SLIGO, IRELAND:54.28:W8.59917:10 +SLOVENJ GRADEC, SLOVENIA:46.4719:15.1169 +SLUPSK, POLAND:54.4789:17.1075 +SMITHERS, CANADA:54.8247:W127.183 +SMITHFIELD, USA:41.9206:W71.4911 +SOBESLAV, CZECH REPUBLIC:49.2447:14.7136 +SOCHI, RUSSIA:43.4458:39.9475:176 +SODANKYLA, FINLAND:67.395:26.6189 +SOENDERBORG, DENMARK:54.9642:9.79167 +SOEST, GERMANY:51.6075:13.7378:85 +SOFIA, BULGARIA:42.695:23.4061 +SOGNDAL, NORWAY:61.1561:7.13639 +SOKCH'O, KOREA:38.1475:128.601 +SOKOTO, NIGERIA:12.9161:5.20694 +SOLENZARA, CORSE ISL.:41.9242:9.40583 +SOLO CITY, INDONESIA:-7.51583:110.757 +SON BONET, SPAIN:39.5989:2.70278 +SONDRESTROM, GREENLAND:67.0169:W50.6892 +SONGKHLA, THAILAND:6.93306:100.393 +SONGO, MOZAMBIQUE:-15.6025:32.7731 +SORKJOSEN, NORWAY:69.7869:20.9594 +SOROAKO, INDONESIA:-2.52944:121.357 +SORONG, INDONESIA:-0.925833:131.12 +SOROTI, UGANDA:1.7275:33.6228 +SOUTHAMPTON, ENGLAND:50.92571412096368:W1.4174069260253863:72 +SOUTH CAICOS, TURKS & CAICOS I.:21.5156:W71.5283 +SOUTHDOWNS, ZAMBIA:-12.9003:28.1497 +SOUTHEND, ENGLAND:51.5714:0.695556 +SOYO, ANGOLA:-6.14083:12.3717 +SPANGDAHLEM, GERMANY:49.9725:6.6925 +SPARREVOHN, USA:61.0972:W155.574 +SPARTI, GREECE:36.9733:22.5261:21 +SPENCE BAY, CANADA:69.5467:W93.5767 +SPEYER, GERMANY:49.3025:8.45111:42 +SPLIT, CROATIA:43.5389:16.2978 +SPOKANE, USA:47.615:W117.656 +SPRINGBOK, SOUTH AFRICA:-29.6892:17.9394 +SPRING POINT, BAHAMAS:22.4417:W73.9708 +SPRINGS, SOUTH AFRICA:-26.2483:28.3975 +SRINAGAR, INDIA:33.9867:74.7736 +STADTLOHN, GERMANY:51.9958:6.84028:79 +STANIEL CAY, BAHAMAS:24.1689:W76.4389 +STANLEY, FALKLAND ISLANDS:-51.6856:W57.7775 +ST. ANTHONY, CANADA:51.3917:W56.0844 +STARA ZAGORA, BULGARIA:42.3767:25.655 +ST. ATHAN, UK:51.4047:W3.43556 +STAUNING, DENMARK:55.99:8.35389 +STAVANGER, NORWAY:58.8767:5.63778 +STAVROPOL, RUSSIA:45.1092:42.1128 +ST.-BARTHELEMY, ANTILLES:17.9:W62.85 +ST. CATHERINE, EGYPT:28.6853:34.0625 +ST. CRIOX ISLAND, VIRGIN ISL.:17.7017:W64.7983 +ST.-DENIS, REUNION ISLAND:-20.8869:55.5103 +ST.-DIZIER, FRANCE:48.6358:4.89917:43 +STELLA MARIS, BAHAMAS:23.5828:W75.2686 +STENDAL, GERMANY:52.6289:11.8197:268 +STEPHEN'S ISLAND, NEW ZEALAND:-89.9997:0 +STEPHENVILLE, CANADA:48.5442:W58.55 +ST.-ETIENNE, FRANCE:45.5403:4.29639 +ST.-FLOUR, FRANCE:45.0764:2.99361 +ST.-GEORGES OYAPOCK, FRENCH GUYANA:3.8975:W51.8039 +ST.-GIRONS, FRANCE:43.0075:1.10306 +ST. JEAN, CANADA:45.2944:W73.2811 +ST. JOHN, CANADA:45.3161:W65.8903 +ST. JOHN'S, CANADA:47.6186:W52.7519 +ST. LOUIS, SENEGAL:16.0497:W16.4611 +ST. LOUIS, USA:38.7475:W90.3597 +ST. MARTIN, ANTILLES:18.0997:W63.0469 +ST.-NAZAIRE, FRANCE:47.3119:W2.14917:46 +STOCKHOLM, SWEDEN:58.7886:16.9119 +STOCKTON, USA:37.8942:W121.239 +STORD, NORWAY:59.7917:5.34083 +STORNOWAY, UK:58.2141245782211:W6.379953784594727:3 +ST. PAUL ISLAND, USA:57.1672:W170.22 +ST. PETERSBURG, RUSSIA:59.8:30.265:1439 +ST. PETERSBURG, USA:27.765:W82.6269 +ST.-PIERRE, REUNION ISLAND:-21.3208:55.4247 +STRANGNAS, SWEDEN:59.3139:17.1092 +STRASSBOURG, FRANCE:48.5381:7.62806:78 +STRATFORD, USA:41.1633:W73.1261 +STRAUBING, GERMANY:48.9008:12.5181:67 +STRAUSBERG, GERMANY:52.5797:13.9156:67 +ST.-SIMON, FRANCE:49.7583:3.21194:3 +ST. THOMAS, VIRGIN ISL.:18.3372:W64.9733 +STUNG TRENG, CAMBODIA:13.5314:106.014 +STUTTGART, GERMANY:48.7784485:9.1800132:207 +ST.-YAN, FRANCE:46.4125:4.01306 +SUAI, EAST TIMOR:-9.30306:125.287 +SUCEAVA, ROMANIA:47.6875:26.3539 +SUCRE, BOLIVIA:-19.0069:W65.2889 +SUDBURY, CANADA:46.625:W80.7989 +SUHL, GERMANY:51.3081:13.5547:141 +SUI, PAKISTAN:28.645:69.1767 +SUKHUMI, GEORGIA:42.8581:41.1281:27 +SUKKUR, PAKISTAN:27.7219:68.7917 +SULAYEL, SAUDI ARABIA:20.4647:45.6194 SUMBAWA, INDONESIA:-8.48889:117.412 +SUMBURGH, UK:59.8789:W1.29556 +SUMMERSIDE, CANADA:46.4428:W63.8311 +SUMTER, USA:33.9728:W80.4728 +SUNDSVALL, SWEDEN:62.5281:17.4439 +SUNYANI, GHANA:7.36167:W2.32861 +SURABAYA, INDONESIA:-7.37972:112.787 +SURAT, INDIA:21.115:72.7428 +SURAT THANI, THAILAND:9.54778:100.062 +SURGUT, RUSSIA:61.25:73.5:354 +SURIN, THAILAND:14.8692:103.489 +SUWON, KOREA:37.2392:127.007 +SVALBARD, NORWAY:78.2461:15.4656 +SVARTNES, NORWAY:70.3553:31.0447 +SVEG, SWEDEN:62.0478:14.4228 +SVERDLOVSK, RUSSIA:56.7414:60.8036:468 +SWANSEA, ENGLAND:51.623192463569175:W3.9580269270752:380 +SWARTKOP, SOUTH AFRICA:-25.8094:28.1644 +SWIFT CURRENT, CANADA:50.2919:W107.691 +SYDNEY, AUSTRALIA:-33.9244:150.988:1000 +SYDNEY, CANADA:46.1614:W60.0478 +SYKTYVKAR, RUSSIA:61.6475:50.8456:152 +SYLHET OSMANI, BANGLADESH:24.9628:91.8672 +SYRACUSE, USA:43.1111:W76.1061 +SZCZECHIN, POLAND:53.3919:14.6336 +SZOLNOK, HUNGARY:47.1228:20.2353:187 +TABAS, IRAN:33.6678:56.8925 +TABATINGA, BRAZIL:-4.25556:W69.9356 +TABITEUEA NORTH, KIRIBATI:-1.22361:174.776 +TABRIZ, IRAN:38.1328:46.2347 +TABUK, SAUDI ARABIA:28.3653:36.6189 +TACHILEK, MYANMAR:20.4836:99.9353 +TACLOBAN, PHILIPPINES:11.2272:125.028 +TACNA, PERU:-18.0533:W70.2758 +TACOMA, USA:47.1375:W122.476 +TACUAREMBO, URUGUAY:-31.7489:W55.9256 +TAEGU, KOREA:35.8939:128.659 +TAHOUA, NIGER:14.8756:5.26528 +TAHUNA, INDONESIA:3.68306:125.528 +TAIF, SAUDI ARABIA:21.4833:40.5442 +TAINAN, TAIWAN:22.9503:120.206 +TAIPEI, TAIWAN:25.0694:121.552 +TAITUNG, TAIWAN:22.7931:121.182 +TAIYUAN, CHINA:37.7467:112.629:6956 +TAKAMATSU, JAPAN:34.2139:134.016 +TAKAPOTO, FRENCH POLYNESIA:-14.7125:W145.253 +TAKAROA, FRENCH POLYNESIA:-14.4556:W145.024 +TAKORADI, GHANA:4.89333:W1.775 +TAK, THAILAND:16.6997:98.545 +TALARA, PERU:-4.54972:W81.2239 +TALHAR, PAKISTAN:24.8414:68.8383 +TALKEETNA, USA:62.3203:W150.094 +TALLAHASSEE, USA:30.3964:W84.3503 +TALLINN-ULEMISTE INTERNATIONAL, ESTONIA:59.4131:24.8328 +TALUQAN, AFGHANISTAN:36.775:69.5325 +TAMALE, GHANA:9.56333:W0.863333 +TAMANRASSET, ALGERIA:22.8108:5.45083 +TAMBACOUNDA, SENEGAL:13.7367:W13.6531 +TAMBARAM, INDIA:12.9067:80.1211 +TAME, COLOMBIA:6.45083:W71.76 +TAMPA, USA:27.8492:W82.5211 +TAMPERE, FINLAND:61.4139:23.6042 +TAMPICO, MEXICO:22.2964:W97.8658 +TAMUIN, MEXICO:22.0381:W98.8064 +TAMWORTH, AUSTRALIA:-31.0839:150.847:240 +TANAGRA, GREECE:38.3397:23.5647:27 +TANANA, USA:65.1742:W152.109 +TANCOS, ACORES:39.475:W8.36444 +TANDIL, ARGENTINA:-37.2372:W59.2278 +TANEGASHIMA, JAPAN:30.5467:130.95 +TANGA, TANZANIA:-5.09222:39.0711 +TANGERANG, INDONESIA:-6.29306:106.57 +TANGER, MOROCCO:35.7267:W5.91667 +TANJORE, INDIA:10.7197:79.1036 +TANJUNG KARANG, INDONESIA:-5.24222:105.179 +TANJUNG PANDAN, INDONESIA:-2.74556:107.755 +TANJUNG PINANG, INDONESIA:0.9225:104.532 +TANJUNG REDEP, INDONESIA:2.15444:117.432 +TANJUNG SANTAN, INDONESIA:-0.0930556:117.439 +TANOUT, NIGER:14.9994:8.76694 +TAN TAN, MOROCCO:28.4481:W11.1611 +TAOYUAN, TAIWAN:25.0556:121.243 +TAPACHULA, MEXICO:14.7942:W92.37 +TARAKEN, INDONESIA:3.32639:117.566 +TARAPOA, ECUADOR:-0.122778:W76.3375 +TARAPOTO, PERU:-6.50861:W76.3731 +TARAUACA, BRAZIL:-8.155:W70.7831 +TARAWA, KIRIBATI:1.38139:173.147 +TARBES, FRANCE:43.1786:W0.00638889 +TARIJA, BOLIVIA:-21.5556:W64.7008 +TARTAGAL, ARGENTINA:-22.6197:W63.7936 +TARTU-ULENURME, ESTONIA:58.3072:26.6903 +TASHKENT, UZBEKISTAN:41.2572:69.2817:334 +TASIKMALAYA, INDONESIA:-7.34556:108.246 +TATALINA, USA:62.8942:W155.976 +TATEYAMA, JAPAN:34.9869:139.829 +TAUNGOO, MYANMAR:19.0311:96.4014 +TAUPO, NEW ZEALAND:-38.7397:176.084 +TAURA, ECUADOR:-2.26083:W79.6892 +TAURANGA, NEW ZEALAND:-37.6719:176.196 +TAWAU, MALAYSIA:4.31333:118.122 +TBILISI, GEORGIA:41.6692:44.9547:726 +TCHIBANGA, GABON:-2.88889:10.9194 +TEBESSA, ALGERIA:35.4314:8.12056 +TEFE, BRAZIL:-3.38278:W64.7239 +TEGUCIGALPA, HONDURAS:14.0608:W87.2169 +TEHERAN, IRAN:35.6447:51.3806 +TEHUACAN, MEXICO:18.4969:W97.4197 +TEISKO, FINLAND:61.7733:24.0269 +TELA, HONDURAS:15.7758:W87.4756 +TEL-AVIV FIR/CTA/UTA, ISRAEL:31.2286:35.1908 +TEL-AVIV, ISRAEL:32.0094:34.8767 +TELEMACO BORBA, BRAZIL:-24.3175:W50.6514 +TELERGMA, ALGERIA:36.1086:6.36444 +TEL-NOF, ISRAEL:31.8394:34.8217 +TEMUCO, CHILE:-38.7686:W72.6358 +TENA, ECUADOR:-0.986667:W77.8194 +TENERIFE, CANARY ISLANDS:28.0444:W16.5722 +TENGAH, SINGAPORE:1.38722:103.709 +TEODORO SAMPAIO, BRAZIL:-22.5256:W52.9719 +TEPIC, MEXICO:21.4194:W104.843 +TERBELA, PAKISTAN:33.9861:72.6114 +TERESINA, BRAZIL:-5.05972:W42.8233 +TERMEZ, RUSSIA:37.2864:67.3083:36 +TERNATE, INDONESIA:0.831944:127.381 +TERNHILL, UK:52.8711:W2.53333 +TERRACE, CANADA:54.4664:W128.577 +TERRE HAUTE, USA:39.4514:W87.3075 +TESLIN, CANADA:60.1728:W132.743 +TESSALIT, MALI:20.2461:0.980833 +TETE, MOZAMBIQUE:-16.1047:33.64 +TETERBORO, USA:40.8497:W74.0608 +TETOUAN, MOROCCO:35.5942:W5.32 +TEXARKANA, USA:33.4536:W93.9908 +THABA NCHU, BOPHUTHATSWANA:-29.3192:26.8233 +THANDWE, MYANMAR:18.4606:94.2994 +THESSALONIKI, GREECE:40.5197:22.9708:19 +THE VALLEY, ANGUILLA ISL.:18.2047:W63.055 +THISTED, DENMARK:57.0686:8.705 +THOHOYANDOU, SOUTH AFRICA:-23.0786:30.3833 +THOMPSON, CANADA:55.8011:W97.8642 +THULE, GREENLAND:76.5311:W68.7031 +THUMAMAH, SAUDI ARABIA:25.2142:46.6406 +THUMRAIT, OMAN:17.6658:54.0244 +THUNDER BAY, CANADA:48.3719:W89.3239 +TIANJIN, CHINA:39.1239:117.346:11760 +TIARET, ALGERIA:35.3411:1.46306 +TICHANG, CHINA:30.5522:111.469:21338 +TIDJIKJA, MAURITANIA:18.5703:W11.4231 +TIJUANA, MEXICO:32.5408:W116.97 +TIKEHAU, FRENCH POLYNESIA:-15.1194:W148.231 +TIKO, CAMEROON:4.08917:9.36028 +TILREMPT, ALGERIA:32.9297:3.31222 +TIMARU, NEW ZEALAND:-44.3028:171.225 +TIMIKA, INDONESIA:-4.52806:136.887 +TIMIMOUN, ALGERIA:29.2369:0.275833 +TIMISOARA, ROMANIA:45.81:21.3378 +TIMMINS, CANADA:48.5697:W81.3767 +TIN CITY, USA:65.5631:W167.922 +TINDOUF, ALGERIA:27.7003:W8.16694 +TINGO MARIA, PERU:-9.29:W76.0058 +TINOGASTA, ARGENTINA:-28.0375:W67.5803 +TIRANA, ALBANIA:41.4147:19.7206 +TIRGU MURES, ROMANIA:46.4675:24.4125 +TIRUCHCHIRAPPALLI, INDIA:10.7653:78.7089 +TIRUPETI, INDIA:13.6319:79.5431 +TIVAT, YUGOSLAVIA:42.4044:18.7231 +TLAXCALA, MEXICO:19.5364:W98.1733 +TLEMCEN, ALGERIA:35.0167:W1.45 +TOAMASINA, MADAGASCAR:-18.1094:49.3925 +TOBOLSK, RUSSIA:37.1322:W92.0839:222 +TOFINO, CANADA:49.0822:W125.772 +TOKACHI, JAPAN:42.8903:143.158 +TOKAT, TURKEY:40.305:36.3678:1923 +TOKOL, HUNGARY:47.3453:18.9808:38 +TOKUNOSHIMA, JAPAN:27.8361:128.881 +TOKUSHIMA, JAPAN:34.1328:134.606 +TOKYO, JAPAN:35.5522:139.779 +TOLAGNARO, MADAGASCAR:-25.0381:46.9561 +TOLIARA, MADAGASCAR:-23.3833:43.7283 +TOLUCA, MEXICO:19.3369:W99.5658 +TOMBOUCTOU, MALI:16.7303:W3.0075 +TOMMY'S FIELD, SOUTH AFRICA:-28.26:22.9931 +TONGATAPU, TONGA:-21.2408:W175.15 +TONOPAH, USA:37.7944:W116.779 +TOPEKA, USA:38.9508:W95.6636 +TORINO, ITALY:45.2006:7.64944:130 +TORONTO, CANADA:43.6275:W79.3961 +TORP, NORWAY:59.1867:10.2586 +TORREON, MEXICO:25.5681:W103.411 +TORSBY, SWEDEN:60.1575:12.9911 +TORTOLI, ITALY:39.9186:9.68278:39 +TOTEGEGIE, FRENCH POLYNESIA:-23.0797:W134.89 +TOTO, ANGOLA:-7.14722:14.2481 +TOTTORI, JAPAN:35.53:134.166 +TOUGGOURT, ALGERIA:33.0678:6.08861 +TOUHO, NEW CALEDONIA:-20.7911:165.259 +TOUL, FRANCE:48.78:5.97972:30 +TOULOUSE, FRANCE:43.5689:1.48083 +TOURS, FRANCE:47.4322:0.7275:34 +TOUSSOUS-LE-NOBLE, FRANCE:48.7517:2.10611:4 +TOWNSVILLE, AUSTRALIA:-19.2525:146.765:693 +TOYAMA, JAPAN:36.6483:137.187 +TOZEUR, TUNISIA:33.9397:8.11056 +TRANG, THAILAND:7.50861:99.6164 +TRAPANI, ITALY:37.9125:12.4881:271 +TREASURE CAY, BAHAMAS:26.7453:W77.3911 +TRELEW, ARGENTINA:-43.2103:W65.2703 +TRENCIN, SLOVAKIA:48.865:17.9922 +TRENTON, CANADA:44.1189:W77.5281 +TRENTON, USA:40.2767:W74.8133 +TRES ARROYOS, ARGENTINA:-38.3867:W60.3294 +TREVISO, ITALY:45.6486:12.1953:55 +TRIER, GERMANY:49.8633:6.78889:117 +TRINCIOMALEE, SRI LANKA:8.53889:81.1814 +TRINIDAD, BOLIVIA:-14.8194:W64.9183 +TRINIDAD, COLOMBIA:5.43028:W71.6581 +TRINIDAD, CUBA:21.7883:W79.9972 +TRIPOLI, LIBYA:32.6633:13.1589 +TRIPOLIS, GREECE:37.5308:22.405:28 +TRIVANDRUM, INDIA:8.48194:76.9181 +TROLLHATTAN, SWEDEN:58.3181:12.345 +TROMSO, NORWAY:69.6833:18.9189 +TRONDHEIM, NORWAY:63.4575:10.9397 +TROYES, FRANCE:48.3228:4.01778:13 +TRUJILLO, HONDURAS:15.9267:W85.9381 +TRUJILLO, PERU:-8.08472:W79.1094 +TRUTH OR CONSEQUENCES, USA:33.2369:W107.272 +TSOYING, TAIWAN:22.7047:120.281 +TSUIKI, JAPAN:33.6853:131.041 +TSUSHIMA, JAPAN:34.2847:129.33 +TUBUAI, FRENCH POLYNESIA:-23.3653:W149.524 +TUCSON, USA:32.1664:W110.883:587 +TUCUMAN, ARGENTINA:-26.8408:W65.1047 +TUCUMCARI, USA:35.1828:W103.603 +TUCUPITA, VENEZUELA:9.08889:W62.0942 +TUCURUI, BRAZIL:-3.785:W49.7194 +TUGUEGARAO, PHILIPPINES:17.6381:121.731 +TUKTOYAKTUK, CANADA:69.4333:W133.026 +TULCAN, ECUADOR:0.809444:W77.7081 +TULCEA, ROMANIA:45.0622:28.7142 +TULSA, USA:36.1983:W95.8881 +TULUA, COLOMBIA:4.08833:W76.235 +TUMACO, COLOMBIA:1.81417:W78.7492 +TUMBES, PERU:-3.5525:W80.3808 +TUMEREMO, VENEZUELA:7.24917:W61.5289 +TUNIS, TUNISIA:36.8508:10.2269 +TURAIF, SAUDI ARABIA:31.6925:38.7311 +TURANY, CZECH REPUBLIC:49.1511:16.6942 +TURBO, COLOMBIA:8.07444:W76.7411 +TUREIA, FRENCH POLYNESIA:-20.7833:W138.568 +TURIN, ITALY:45.0677551:7.6824892:130 +TURKU, FINLAND:60.5139:22.2628 +TURTMANN, SWITZERLAND:46.3039:7.71444 +TURWESTON, UK:52.0408:W1.09556 +TUSTIN, USA:33.7061:W117.827 +TUTUKA, SOUTH AFRICA:-26.7764:29.3386 +TUXPAN, MEXICO:19.5983:W103.372 +TUXTLA GUTIERREZ, MEXICO:16.7694:W93.3414 +TVER, RUSSIA:56.8247:35.7575:152 +TWENTY NINE PALMS, USA:34.2961:W116.162 +TYLER, USA:32.3539:W95.4022 +TYPHOON WARNING CTR, MARIANA ISLANDS:13.5:144.833 +TZANEEN, SOUTH AFRICA:-23.8242:30.3292 +UBERABA, BRAZIL:-19.765:W47.9647 +UBERLANDIA, BRAZIL:-18.8828:W48.2256 +UDAIPUR, INDIA:24.6175:73.9128 +UDBINA, CROATIA:44.5575:15.7742 +UDON THANI, THAILAND:17.3864:102.788 +UFA, RUSSIA:54.5575:55.8742:707 +UIGE, ANGOLA:-7.60306:15.0278 +UJUNG PANDANG, INDONESIA:-5.06167:119.554 +ULAN BATOR, MONGOLIA:47.8431:106.766 +ULAN-UDE, RUSSIA:51.8067:107.438:347 +ULONGWE, MOZAMBIQUE:-14.7044:34.3522 +ULRICHEN, SWITZERLAND:46.5011:8.29556 +ULSAN, KOREA:35.5933:129.352 +ULUNDI, SOUTH AFRICA:-28.3206:31.4164 +UMEA, SWEDEN:63.7917:20.2825 +UMTATA, SOUTH AFRICA:-31.5478:28.6742 +UNALAKLEET, USA:63.8883:W160.799 +UNALASKA, USA:53.9:W166.543 +UPINGTON, SOUTH AFRICA:-28.4008:21.2606 +UPPSALA, SWEDEN:59.8972:17.5883 +URSEL, BELGIUM:51.1439:3.47417 +URUAPAN, MEXICO:19.3967:W102.039 +URUGUAIANA, BRAZIL:-29.7819:W57.0381 +URUMQI, CHINA:43.9069:87.4742:14577 +USAK, TURKEY:38.6811:29.4714:1309 +USHUAIA, ARGENTINA:-54.8431:W68.2956 +USSEL, FRANCE:45.5347:2.42389 +UTKELA, INDIA:20.0975:83.1833 +UTTARADIT, THAILAND:17.6736:100.235 +UTTI, FINLAND:60.8964:26.9383 +VAASA, FINLAND:63.0511:21.7614 +VAERLOSE, DENMARK:55.7672:12.3433 +VAGAR, FAROE ISL.:62.0636:W7.27694 +VALDEZ, USA:61.1339:W146.248:560 +VALDIVIA, CHILE:-39.6497:W73.0861 +VAL D'OR, CANADA:48.0533:W77.7828 +VALDOSTA, USA:30.9678:W83.1928 +VALENCE, FRANCE:44.9214:4.96972 +VALENCIA, SPAIN:39.4892:W0.481389 +VALENCIA, VENEZUELA:10.1581:W67.9267 +VALENCIENNES, FRANCE:50.3256:3.46111 +VALERA, VENEZUELA:9.34056:W70.5839 +VALKENBURG, NETHERLANDS:52.1697:4.42611:36 +VALLADOLID, SPAIN:41.7061:W4.85194 +VALLE DE LA PASCUA, VENEZUELA:9.22194:W65.9933 +VALLEDUPAR, COLOMBIA:10.435:W73.2494 +VALLENAR, CHILE:-28.5975:W70.7592 +VALLEY, UK:53.2481:W4.53528 +VALPARAISO, USA:30.4831:W86.5253 +VANCOUVER, CANADA:49.195:W123.182 +VANDEL, DENMARK:55.6969:9.19333 +VANDERBIJLPARK, SOUTH AFRICA:-26.6922:27.7778 +VANNES, FRANCE:47.7231:W2.71833:32 +VAN, TURKEY:38.4681:43.3322:1938 +VARADERO, CUBA:23.0344:W81.4353 +VARANASI, INDIA:25.4519:82.8589 +VARAZDIN, CROATIA:46.2947:16.3811 +VARGINHA, BRAZIL:-21.59:W45.4733 +VARKAUS, FINLAND:62.1711:27.8686 +VARNA, BULGARIA:43.2319:27.825 +VASTERAS, SWEDEN:59.5894:16.6336 +VAVA'U, TONGA:-18.5853:W173.963 +VAXJO, SWEDEN:56.9289:14.7278 +VENICE, ITALY:45.505:12.3517:414 +VERA CRUZ, MEXICO:19.1453:W96.1869 +VERDUN, FRANCE:49.1222:5.46889 +VEREENIGING, SOUTH AFRICA:-26.5661:27.9606 +VERMILLION, CANADA:53.3558:W110.824 +VERO BEACH, USA:27.6556:W80.4178 +VERONA, ITALY:45.4719:10.9278:1426 +VESIVEHMAA, FINLAND:61.1439:25.6933 +VESOUL-FROTEY, FRANCE:47.6375:6.20389:7 +VESTHIMMERLAND, DENMARK:56.8469:9.45861 +VESTMANNAEYJAR, ICELAND:63.4242:W20.2786 +VICENZA, ITALY:45.5742:11.5306:80 +VICHY, FRANCE:46.1694:3.40361 +VICTORIA, CANADA:48.6469:W123.426 +VICTORIA FALLS, ZIMBABWE:-18.0961:25.8392 +VICTORVILLE, USA:34.5931:W117.379 +VIDSEL, SWEDEN:65.8753:20.1497 +VIEDMA, ARGENTINA:-40.8692:W63.0003 +VIENNA, AUSTRIA:48.1103:16.5697 +VIENTIANE, LAOS:17.9881:102.563 +VIGAN, PHILIPPINES:17.5536:120.357 +VIGO, SPAIN:42.2317:W8.62667 +VIJAYAWADA, INDIA:16.5303:80.7967 +VILANKULU, MOZAMBIQUE:-22.0183:35.3131 +VILA REAL, ACORES:41.2742:W7.72028 +VILEFRANCE, FRANCE:45.9164:4.64056 +VILHELMINA, SWEDEN:64.5789:16.8333 +VILHENA, BRAZIL:-12.6942:W60.0981 +VILLACOUBLAY, FRANCE:48.7742:2.20139:8 +VILLA DOLORES, ARGENTINA:-31.9411:W65.1422 +VILLA GESELL, ARGENTINA:-37.2353:W57.0292 +VILLAHERMOSA, MEXICO:17.9969:W92.8172 +VILLA REYNOLDS, ARGENTINA:-33.7297:W65.3872 +VILLAVICENCIO, COLOMBIA:4.16778:W73.6136 +VILLENEUVE-SUR-LOT, FRANCE:44.3969:0.758889 +VILSECK, GERMANY:49.6336:11.7672 +VILSHOFEN, GERMANY:48.6364:13.1953:86 +VIRAC, PHILIPPINES:13.5775:124.206 +VISBY, SWEDEN:57.6628:18.3461 +VISEU, ACORES:40.7253:W7.88889 +VITEBSK, RUSSIA:55.1667:30.1333:124 +VITERBO, ITALY:42.4303:12.0642:406 +VITORIA, BRAZIL:-20.2556:W40.2889 +VITORIA DA CONQUISTA, BRAZIL:-14.8625:W40.8631 +VITORIA, SPAIN:42.8828:W2.72444 +VLADIVOSTOK, RUSSIA:43.3989:132.151:331 +VODOCHODY, CZECH REPUBLIC:50.2164:14.3956 +VOHEMAR, MADAGASCAR:-13.3758:50.0028 +VOLGOGRAD, RUSSIA:48.7822:44.3447:859 +VORONEZH, RUSSIA:51.8142:39.2297:596 +VREDENDAL, SOUTH AFRICA:-31.6408:18.5447 +VRSAC, YUGOSLAVIA:45.1467:21.3097 +VRYBURG, SOUTH AFRICA:-26.9822:24.7286 +VRYHEID, SOUTH AFRICA:-27.7867:30.7953 +WABUSH, CANADA:52.9219:W66.8644 +WACO, USA:31.6111:W97.2303:231 +WADI-AL-DAWASIR, SAUDI ARABIA:20.5042:45.1994 +WAGGA WAGGA, AUSTRALIA:-35.1653:147.466:2 +WA, GHANA:10.0825:W2.5075 WAIKABUBAK, INDONESIA:-9.40944:119.246 WAINGAPU, INDONESIA:-9.67:120.304 -SURABAYA, INDONESIA:-7.37972:112.787 -SOLO CITY, INDONESIA:-7.51583:110.757 -SEMBAWANG, SINGAPORE:1.42361:103.811 -PAYA LEBAR, SINGAPORE:1.36028:103.909 -TENGAH, SINGAPORE:1.38722:103.709 -SINGAPORE, SINGAPORE:1.41694:103.867 -SINGAPORE, SINGAPORE:1.35556:103.987 -BRISBANE, AUSTRALIA:-27.467778:153.028056:1000 -AMBERLEY, AUSTRALIA:-10.9508:142.459:26 -ALICE SPRINGS, AUSTRALIA:-23.8069:133.902:148 -COOLANGATTA, AUSTRALIA:-28.1644:153.505:2 -CAIRNS, AUSTRALIA:-16.8858:145.755:1687 -CHARLIEVILLE, AUSTRALIA:-26.4133:146.262:687 -MOUNT ISA, AUSTRALIA:-20.6639:139.489:62 -MAROOCHYDORE, AUSTRALIA:-26.6033:153.091:55 -MACKAY, AUSTRALIA:-21.1717:149.18:208 -OAKEY, AUSTRALIA:-27.4114:151.735:127 -PROSSERPINE, AUSTRALIA:-20.495:148.552:25 -ROCKHAMPTON, AUSTRALIA:-23.3819:150.475:580 -TOWNSVILLE, AUSTRALIA:-19.2525:146.765:693 +WAIOURU, NEW ZEALAND:-39.4464:175.658 +WAIROA, NEW ZEALAND:-39.0069:177.407 +WAJIR, KENYA:1.73306:40.0914 +WAKKANAI, JAPAN:45.4039:141.801 +WALLIS, WALLIS & FUTUNA:-13.2381:W176.199 +WALLOPS ISLAND, USA:37.94:W75.4664 +WAMENA, INDONESIA:-4.09611:138.952 +WANAKA, NEW ZEALAND:-44.7253:169.243 +WANA, PAKISTAN:32.3053:69.5694 +WANG AN, TAIWAN:23.3708:119.494 +WANGANUI, NEW ZEALAND:-39.9622:175.025 +WARANGAL, INDIA:17.9181:79.5986 +WARSAW, POLAND:52.1656:20.9669 +WARTON, UK:53.745:W2.88306 +WASHINGTON, USA:38.9444:W77.4556:217 +WATERFORD, IRELAND:52.1869:W7.08694:48 +WATERKLOOF, SOUTH AFRICA:-25.83:28.2225 +WATERLOO, CANADA:43.4589:W80.3844 +WATERTOWN, USA:43.9917:W76.0217 +WATSON LAKE, CANADA:60.1178:W128.822 +WAU, SUDAN:7.72556:27.9794 +WEELDE, BELGIUM:51.395:4.96056 +WEERT, NETHERLANDS:51.2553:5.60139:105 WEIPA, AUSTRALIA:-12.6786:141.925:10 -ALBURY, AUSTRALIA:-36.0678:146.958:64 -MELBOURNE, AUSTRALIA:-37.7682:145.0622:15 -HOBART, AUSTRALIA:-42.8361:147.51:1696 -LAUNCESTON, AUSTRALIA:-41.5453:147.214:435 -POINT COOK, AUSTRALIA:-37.9322:144.753:9 -ADELAIDE, AUSTRALIA:-34.9213:138.6186:500 -EDINBURGH, AUSTRALIA:-34.7025:138.621:18 -PERTH, AUSTRALIA:-32.0972:115.881:1000 -KARRATHA, AUSTRALIA:-20.7122:116.773:10 -KALGOORLIE, AUSTRALIA:-30.7894:121.462:75 -KUNUNURRA, AUSTRALIA:-15.7781:128.707:1 -SYDNEY, AUSTRALIA:-33.9244:150.988:1000 -CANBERRA, AUSTRALIA:-35.3083:149.194:814 -COFF'S HARBOUR, AUSTRALIA:-30.3206:153.116:505 -CAMDEN, AUSTRALIA:-34.0403:150.687:201 -DUBBO, AUSTRALIA:-32.2167:148.575:182 -RICHMOND, AUSTRALIA:-33.6006:150.781:3 -TAMWORTH, AUSTRALIA:-31.0839:150.847:240 -WAGGA WAGGA, AUSTRALIA:-35.1653:147.466:2 -BEIJING, CHINA:40.08:116.584:16808 -HUHHOT, CHINA:40.8533:111.822:17186 -HAILAR, CHINA:49.205:119.825:1320 -SHIJIAZHUANG, CHINA:38.2806:114.696:15849 -TIANJIN, CHINA:39.1239:117.346:11760 -TAIYUAN, CHINA:37.7467:112.629:6956 -GUANGZHOU, CHINA:23.1842:113.266:7434 -CHANGCHA, CHINA:28.1889:113.219:11819 -GUILIN, CHINA:25.2178:110.039:27809 -NANNING, CHINA:22.6081:108.172:22189 -SHANTOU, CHINA:23.4:116.683:2248 -SHENZHEN, CHINA:22.6394:113.812:2050 -ZHENGZHOU, CHINA:34.5194:113.841:7507 +WEJH, SAUDI ARABIA:26.1975:36.4761 +WELKOM, SOUTH AFRICA:-27.9978:26.6694 +WELLINGTON, NEW ZEALAND:-41.3272:174.805 +WELS, AUSTRIA:48.1831:14.0408 +WENDOVER, USA:40.7186:W114.031 +WESSELSBRUNN, SOUTH AFRICA:-27.8472:26.3497 +WEST END, BAHAMAS:26.6861:W78.9775 +WESTERLAND, GERMANY:54.9131:8.34028:10 +WEST FREUGH, UK:54.8511:W4.94778 +WEST HAMPTON BEACH, USA:40.8436:W72.6317 +WEST PALM BEACH, USA:26.5928:W80.085 +WESTPORT, NEW ZEALAND:-41.7381:171.581 +WEST TINIAN, MARIANA ISLANDS:14.9978:145.619 +WEWAK, PAPUA NEW GUINEA:-3.58361:143.669 +WEYDON, NEW ZEALAND:-77.8833:166.65 +WHAKATANE, NEW ZEALAND:-37.9206:176.914 +WHANGAREI, NEW ZEALAND:-35.7683:174.365 +WHEELER AFB., USA:21.4833:W158.039 +WHENUAPAI, NEW ZEALAND:-36.7878:174.63 +WHIDBEY ISLAND, USA:48.3517:W122.656 +WHITECOURT, CANADA:54.1439:W115.787 +WHITEHORSE, CANADA:60.7094:W135.068 +WHITE PLAINS, USA:41.0669:W73.7075 +WHITE SANDS, USA:32.3414:W106.403 +WHOK SEUMAWE, INDONESIA:5.22667:96.9503 +WIARTON, CANADA:44.7458:W81.1072 +WICHITA, USA:37.6228:W97.2672:413 +WICK, UK:58.4586:W3.09278 +WIDE AWAKE, ACORES:-7.96944:W14.3936 +WIENER NEUSTADT OST, AUSTRIA:47.8433:16.26 +WIESBADEN, GERMANY:50.0497:8.32528 +WIGRAM, NEW ZEALAND:-43.5511:172.553 +WILDWOOD, USA:39.0083:W74.9081 +WILHELMSHAVEN, GERMANY:53.5047:8.05333:106 +WILLEMSTAD, ANTILLES:12.1886:W68.9597 +WILLIAMS LAKE, CANADA:52.1831:W122.054 +WILLIAMSPORT, USA:41.2419:W76.9211 +WILLISTON, USA:48.1778:W103.642 +WILLOW GROVE, USA:40.1997:W75.1481 +WILMINGTON, USA:34.2706:W77.9025 +WINDSOR, CANADA:42.2756:W82.9556 +WINDSOR LOCKS, USA:41.9389:W72.6831 +WINK, USA:31.7794:W103.201 +WINNIPEG, CANADA:49.91:W97.2344 +WINSTON-SALEM, USA:36.1336:W80.2219 +WIRAWILA, SRI LANKA:6.25444:81.235 +WITBANK, SOUTH AFRICA:-25.8322:29.1919 +WITTERING, UK:52.6125:W0.476389:13 +WITTMUNDHAFEN, GERMANY:53.5478:7.66722 +WOENSDRECHT, NETHERLANDS:51.4489:4.34194:91 +WONJU, KOREA:37.4381:127.96 +WOODBOURNE, NEW ZEALAND:-41.5183:173.87 +WOODFORT, ENGLAND:53.3381:W2.14889 +WOODVALE, UK:53.5814:W3.05528 +WORMS, GERMANY:49.6064:8.36833:108 +WRIGHTSTOWN, USA:40.0156:W74.5936 +WRIGHT, USA:31.8889:W81.5622 +WRIGLEY, CANADA:63.2094:W123.437 +WROCLAW, POLAND:51.1025:16.8858 WUHAN, CHINA:30.7836:114.208:8494 -TICHANG, CHINA:30.5522:111.469:21338 -PYONGYANG, KOREA:39.0333:125.783:2000 -LANZHOU, CHINA:36.5167:103.622:13087 -XI'AN, CHINA:34.4458:108.752:10000 -ULAN BATOR, MONGOLIA:47.8431:106.766 -KUNMING, CHINA:24.9922:102.743:21507 +WUNSTORF, GERMANY:52.4572:9.42694 +XANGONGO, ANGOLA:-16.7553:14.9653 XIAMEN, CHINA:24.5439:118.127:1701 -NANCHANG, CHINA:28.6:115.917:7194 -FUZHOU, CHINA:25.9333:119.662:12232 -HANGZHOU, CHINA:30.2283:120.432:8000 -NINBO, CHINA:29.8247:121.465:9816 -NANJING, CHINA:31.74:118.86:6596 -HEFEI, CHINA:31.78:117.298:11434 -QINGDAO, CHINA:36.2625:120.375:1632 -SHANGHAI, CHINA:31.1978:121.336:6340 -YANTAI, CHINA:37.4017:121.372:13740 -CHENGDU, CHINA:30.5783:103.947:14378 +XI'AN, CHINA:34.4458:108.752:10000 XICHANG, CHINA:27.9886:102.184:2655 -KASHI, CHINA:39.5433:76.0217:1057 -HOTAN, CHINA:37.0378:79.8658:465 -URUMQI, CHINA:43.9069:87.4742:14577 -HARBIN, CHINA:45.6233:126.25:53068 -JIAMUSI, CHINA:46.8433:130.465:882 -MUDANJIANG, CHINA:44.5239:129.569:2495 -DALIAN, CHINA:38.9656:121.538:13237 +YAIZU, JAPAN:34.8125:138.298 +YAKUSHIMA, JAPAN:30.3856:130.659 +YAKUTAT, USA:59.5031:W139.66 +YAKUTSK, RUSSIA:62.0931:129.771:122 +YA LA, THAILAND:6.52667:101.242 +YALINGA, CENTRAL AFRICAN REP.:45.1542:W89.1108 +YALOVA, TURKEY:40.6833:29.3786:167 +YAMAGATA, JAPAN:38.4117:140.371 +YAMAGUCHI, JAPAN:33.93:131.279 +YAMOUSSOUKRO, IVORY COAST:6.90306:W5.36583 +YANGKU, KOREA:38.0611:128.669 +YANGON, MYANMAR:16.9072:96.1331 YANJI, CHINA:42.8817:129.448:1748 +YANTAI, CHINA:37.4017:121.372:13740 +YAOUNDE, CAMEROON:3.83528:11.5236 +YAP, MICRONESIA:9.49861:138.082 +YAZD, IRAN:31.9047:54.2764 +YECHON, KOREA:36.6317:128.355 +YELLOWKNIFE, CANADA:62.4628:W114.44 +YENBO, SAUDI ARABIA:24.1442:38.0633 +YENISEHIR, TURKEY:40.255:29.5625:786 +YEOSU, KOREA:34.8397:127.615 +YEOVILTON, UK:51.0092:W2.63861 +YEREVAN, RUSSIA:40.1483:44.3967:223 +YLIVIESKA-RAUDASKYLA, FINLAND:64.0603:24.7158 +YOGYAKARTA, INDONESIA:-7.78806:110.432 +YOKOTA, JAPAN:35.7483:139.348 +YOLA, NIGERIA:9.26028:12.4297 +YONAGUNI JIMA, JAPAN:24.4669:122.978 +YORKTON, CANADA:51.2647:W102.462 +YORON, JAPAN:27.0439:128.401 +YOUNGSTOWN, USA:41.2606:W80.6789 +YSTERPLAAT, SOUTH AFRICA:-33.9:18.4981 +YUMA, USA:32.6564:W114.606 +YURIMAGUAS, PERU:-5.89389:W76.1183 +YUZHNO-SAKHALINSK, RUSSIA:46.8886:142.717:164 +ZABOL, IRAN:31.0969:61.5439 +ZACATECAS, MEXICO:22.8969:W102.687 +ZADAR, CROATIA:44.1081:15.3467 +ZAGREB, CROATIA:45.7428:16.0686 +ZAHEDAN, IRAN:29.4761:60.9058 +ZAMA, JAPAN:35.5136:139.394 +ZAMBEZI, ZAMBIA:-13.5386:23.1097 +ZAMBOANGA, PHILIPPINES:6.92222:122.059 +ZAMORA, MEXICO:20.045:W102.276 +ZANDERY, SURINAM:5.45278:W55.1878 +ZANJAN, IRAN:36.7742:48.3597 +ZANZIBAR, TANZANIA:-6.22194:39.2247 +ZAPOPAN, MEXICO:20.7558:W103.465 +ZARAGOZA, SPAIN:41.6661:W1.04139 +ZARGHAN, IRAN:29.7542:52.6942 +ZARIA, NIGERIA:11.13:7.68556 +ZARZAITINE, ALGERIA:28.0514:9.64278 +ZEERUST, SOUTH AFRICA:-25.5989:26.0422 +ZELLA 74, LIBYA:28.59:17.2942 +ZELTWEG, AUSTRIA:47.2028:14.7442 +ZERO, INDIA:27.5881:93.8283 +ZHENGZHOU, CHINA:34.5194:113.841:7507 +ZHOB, PAKISTAN:31.3583:69.4633 +ZIELONA GORA, POLAND:52.1386:15.7986 +ZIGUINCHOR, SENEGAL:12.5556:W16.2817 +ZIHUATANEJO, MEXICO:17.6014:W101.46 +ZILINA, SLOVAKIA:49.2317:18.6136 +ZINDER, NIGER:13.7789:8.98361 +ZIRKU, UNITED ARAB EMIRATES:24.8614:53.0778 +ZISCO, ZIMBABWE:-19.0286:29.7219 +ZOERSEL, BELGIUM:51.2656:4.75472 +ZONGULDAK, TURKEY:41.5158:32.0997:633 +ZUNI PUEBLO, USA:35.0833:W108.792 +ZURICH AREA, SWITZERLAND:46.6136:7.67778 +ZURICH, SWITZERLAND:47.3833:8.56667 +ZUTENDAAL, BELGIUM:50.9483:5.59167 +ZVISHAVANE, ZIMBABWE:-20.2894:30.0883 +ZWEIBRUECKEN, GERMANY:49.2094:7.40056:70 From 8d0d17e6d23503627ecc0d181b5a6a532cd46b2f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 12 Jun 2021 15:32:09 +0100 Subject: [PATCH 13/13] Locations --- locations.txt | 231 +++++++++++++++++++++++--------------------------- 1 file changed, 104 insertions(+), 127 deletions(-) diff --git a/locations.txt b/locations.txt index dd8e5324c..5987ebd0b 100644 --- a/locations.txt +++ b/locations.txt @@ -3451,154 +3451,131 @@ TONGATAPU, TONGA:-21.2408:W175.15 TONOPAH, USA:37.7944:W116.779 TOPEKA, USA:38.9508:W95.6636 TORINO, ITALY:45.2006:7.64944:130 -TORONTO, CANADA:43.6275:W79.3961 -TORP, NORWAY:59.1867:10.2586 -TORREON, MEXICO:25.5681:W103.411 -TORSBY, SWEDEN:60.1575:12.9911 +TORONTO, CANADA:43.6275:W79.3961:630 +TORREON, MEXICO:25.5681:W103.411:138 +TORSBY, SWEDEN:60.1575:12.9911:5 TORTOLI, ITALY:39.9186:9.68278:39 -TOTEGEGIE, FRENCH POLYNESIA:-23.0797:W134.89 -TOTO, ANGOLA:-7.14722:14.2481 -TOTTORI, JAPAN:35.53:134.166 -TOUGGOURT, ALGERIA:33.0678:6.08861 -TOUHO, NEW CALEDONIA:-20.7911:165.259 +TOTTORI, JAPAN:35.53:134.166:765 +TOUGGOURT, ALGERIA:33.0678:6.08861:216 +TOUHO, NEW CALEDONIA:-20.7911:165.259:283 TOUL, FRANCE:48.78:5.97972:30 -TOULOUSE, FRANCE:43.5689:1.48083 +TOULOUSE, FRANCE:43.5689:1.48083:118 TOURS, FRANCE:47.4322:0.7275:34 TOUSSOUS-LE-NOBLE, FRANCE:48.7517:2.10611:4 TOWNSVILLE, AUSTRALIA:-19.2525:146.765:693 -TOYAMA, JAPAN:36.6483:137.187 -TOZEUR, TUNISIA:33.9397:8.11056 -TRANG, THAILAND:7.50861:99.6164 +TOYAMA, JAPAN:36.6483:137.187:1242 +TOZEUR, TUNISIA:33.9397:8.11056:5 +TRANG, THAILAND:7.50861:99.6164:14 TRAPANI, ITALY:37.9125:12.4881:271 -TREASURE CAY, BAHAMAS:26.7453:W77.3911 -TRELEW, ARGENTINA:-43.2103:W65.2703 -TRENCIN, SLOVAKIA:48.865:17.9922 -TRENTON, CANADA:44.1189:W77.5281 -TRENTON, USA:40.2767:W74.8133 -TRES ARROYOS, ARGENTINA:-38.3867:W60.3294 +TRELEW, ARGENTINA:-43.2103:W65.2703:249 +TRENCIN, SLOVAKIA:48.865:17.9922:82 +TRENTON, USA:40.2767:W74.8133:21 +TRES ARROYOS, ARGENTINA:-38.3867:W60.3294:5 TREVISO, ITALY:45.6486:12.1953:55 TRIER, GERMANY:49.8633:6.78889:117 -TRINCIOMALEE, SRI LANKA:8.53889:81.1814 -TRINIDAD, BOLIVIA:-14.8194:W64.9183 -TRINIDAD, COLOMBIA:5.43028:W71.6581 -TRINIDAD, CUBA:21.7883:W79.9972 -TRIPOLI, LIBYA:32.6633:13.1589 +TRINCIOMALEE, SRI LANKA:8.53889:81.1814:7.5 +TRINIDAD, BOLIVIA:-14.8194:W64.9183:35 +TRINIDAD, COLOMBIA:5.43028:W71.6581:1 +TRINIDAD, CUBA:21.7883:W79.9972:10 +TRIPOLI, LIBYA:32.6633:13.1589:1507 TRIPOLIS, GREECE:37.5308:22.405:28 -TRIVANDRUM, INDIA:8.48194:76.9181 -TROLLHATTAN, SWEDEN:58.3181:12.345 -TROMSO, NORWAY:69.6833:18.9189 -TRONDHEIM, NORWAY:63.4575:10.9397 +TRIVANDRUM, INDIA:8.48194:76.9181:214 +TROLLHATTAN, SWEDEN:58.3181:12.345:23 +TROMSO, NORWAY:69.6833:18.9189:21 +TRONDHEIM, NORWAY:63.4575:10.9397:321 TROYES, FRANCE:48.3228:4.01778:13 -TRUJILLO, HONDURAS:15.9267:W85.9381 -TRUJILLO, PERU:-8.08472:W79.1094 -TRUTH OR CONSEQUENCES, USA:33.2369:W107.272 -TSOYING, TAIWAN:22.7047:120.281 -TSUIKI, JAPAN:33.6853:131.041 -TSUSHIMA, JAPAN:34.2847:129.33 -TUBUAI, FRENCH POLYNESIA:-23.3653:W149.524 +TRUJILLO, HONDURAS:15.9267:W85.9381:955 +TRUJILLO, PERU:-8.08472:W79.1094:111 +TRUTH OR CONSEQUENCES, USA:33.2369:W107.272:72 +TSUIKI, JAPAN:33.6853:131.041:67 +TSUSHIMA, JAPAN:34.2847:129.33:708 +TUBUAI, FRENCH POLYNESIA:-23.3653:W149.524:45 TUCSON, USA:32.1664:W110.883:587 -TUCUMAN, ARGENTINA:-26.8408:W65.1047 -TUCUMCARI, USA:35.1828:W103.603 -TUCUPITA, VENEZUELA:9.08889:W62.0942 -TUCURUI, BRAZIL:-3.785:W49.7194 -TUGUEGARAO, PHILIPPINES:17.6381:121.731 -TUKTOYAKTUK, CANADA:69.4333:W133.026 -TULCAN, ECUADOR:0.809444:W77.7081 -TULCEA, ROMANIA:45.0622:28.7142 -TULSA, USA:36.1983:W95.8881 -TULUA, COLOMBIA:4.08833:W76.235 -TUMACO, COLOMBIA:1.81417:W78.7492 -TUMBES, PERU:-3.5525:W80.3808 -TUMEREMO, VENEZUELA:7.24917:W61.5289 -TUNIS, TUNISIA:36.8508:10.2269 -TURAIF, SAUDI ARABIA:31.6925:38.7311 -TURANY, CZECH REPUBLIC:49.1511:16.6942 -TURBO, COLOMBIA:8.07444:W76.7411 -TUREIA, FRENCH POLYNESIA:-20.7833:W138.568 +TUCUMAN, ARGENTINA:-26.8408:W65.1047:91 +TUCUMCARI, USA:35.1828:W103.603:24 +TUCUPITA, VENEZUELA:9.08889:W62.0942:6 +TUCURUI, BRAZIL:-3.785:W49.7194:55 +TUGUEGARAO, PHILIPPINES:17.6381:121.731:144 +TUKTOYAKTUK, CANADA:69.4333:W133.026:13 +TULCAN, ECUADOR:0.809444:W77.7081:138 +TULCEA, ROMANIA:45.0622:28.7142:177 +TULSA, USA:36.1983:W95.8881:522 +TULUA, COLOMBIA:4.08833:W76.235:910 +TUMACO, COLOMBIA:1.81417:W78.7492:1000 +TUMBES, PERU:-3.5525:W80.3808:1800 +TUNIS, TUNISIA:36.8508:10.2269:212 +TURBO, COLOMBIA:8.07444:W76.7411:1000 +TUREIA, FRENCH POLYNESIA:-20.7833:W138.568:47 TURIN, ITALY:45.0677551:7.6824892:130 -TURKU, FINLAND:60.5139:22.2628 -TURTMANN, SWITZERLAND:46.3039:7.71444 -TURWESTON, UK:52.0408:W1.09556 -TUSTIN, USA:33.7061:W117.827 -TUTUKA, SOUTH AFRICA:-26.7764:29.3386 -TUXPAN, MEXICO:19.5983:W103.372 -TUXTLA GUTIERREZ, MEXICO:16.7694:W93.3414 +TURKU, FINLAND:60.5139:22.2628:243 +TURTMANN, SWITZERLAND:46.3039:7.71444:6 +TUSTIN, USA:33.7061:W117.827:28 +TUXPAN, MEXICO:19.5983:W103.372:1062 +TUXTLA GUTIERREZ, MEXICO:16.7694:W93.3414:96 TVER, RUSSIA:56.8247:35.7575:152 -TWENTY NINE PALMS, USA:34.2961:W116.162 -TYLER, USA:32.3539:W95.4022 -TYPHOON WARNING CTR, MARIANA ISLANDS:13.5:144.833 -TZANEEN, SOUTH AFRICA:-23.8242:30.3292 -UBERABA, BRAZIL:-19.765:W47.9647 -UBERLANDIA, BRAZIL:-18.8828:W48.2256 -UDAIPUR, INDIA:24.6175:73.9128 -UDBINA, CROATIA:44.5575:15.7742 -UDON THANI, THAILAND:17.3864:102.788 +TWENTY NINE PALMS, USA:34.2961:W116.162:152 +TYLER, USA:32.3539:W95.4022:140 +TZANEEN, SOUTH AFRICA:-23.8242:30.3292:22 +UBERABA, BRAZIL:-19.765:W47.9647:1000 +UBERLANDIA, BRAZIL:-18.8828:W48.2256:1000 +UDAIPUR, INDIA:24.6175:73.9128:64 +UDBINA, CROATIA:44.5575:15.7742:683 +UDON THANI, THAILAND:17.3864:102.788:47 UFA, RUSSIA:54.5575:55.8742:707 -UIGE, ANGOLA:-7.60306:15.0278 -UJUNG PANDANG, INDONESIA:-5.06167:119.554 -ULAN BATOR, MONGOLIA:47.8431:106.766 +UIGE, ANGOLA:-7.60306:15.0278:1188 +UJUNG PANDANG, INDONESIA:-5.06167:119.554:175 +ULAN BATOR, MONGOLIA:47.8431:106.766:1000 ULAN-UDE, RUSSIA:51.8067:107.438:347 -ULONGWE, MOZAMBIQUE:-14.7044:34.3522 -ULRICHEN, SWITZERLAND:46.5011:8.29556 -ULSAN, KOREA:35.5933:129.352 -ULUNDI, SOUTH AFRICA:-28.3206:31.4164 -UMEA, SWEDEN:63.7917:20.2825 -UMTATA, SOUTH AFRICA:-31.5478:28.6742 -UNALAKLEET, USA:63.8883:W160.799 -UNALASKA, USA:53.9:W166.543 -UPINGTON, SOUTH AFRICA:-28.4008:21.2606 -UPPSALA, SWEDEN:59.8972:17.5883 -URSEL, BELGIUM:51.1439:3.47417 -URUAPAN, MEXICO:19.3967:W102.039 -URUGUAIANA, BRAZIL:-29.7819:W57.0381 -URUMQI, CHINA:43.9069:87.4742:14577 +ULRICHEN, SWITZERLAND:46.5011:8.29556:44 +ULSAN, KOREA:35.5933:129.352:1057 +ULUNDI, SOUTH AFRICA:-28.3206:31.4164:16 +UMEA, SWEDEN:63.7917:20.2825:33 +UMTATA, SOUTH AFRICA:-31.5478:28.6742:54 +UNALAKLEET, USA:63.8883:W160.799:12 +UNALASKA, USA:53.9:W166.543:546 +UPINGTON, SOUTH AFRICA:-28.4008:21.2606:580 +UPPSALA, SWEDEN:59.8972:17.5883:48 +URSEL, BELGIUM:51.1439:3.47417:20 +URUAPAN, MEXICO:19.3967:W102.039:954 +URUGUAIANA, BRAZIL:-29.7819:W57.0381:1000 +URUMQI, CHINA:43.9069:87.4742:14577:583 USAK, TURKEY:38.6811:29.4714:1309 -USHUAIA, ARGENTINA:-54.8431:W68.2956 -USSEL, FRANCE:45.5347:2.42389 -UTKELA, INDIA:20.0975:83.1833 -UTTARADIT, THAILAND:17.6736:100.235 -UTTI, FINLAND:60.8964:26.9383 -VAASA, FINLAND:63.0511:21.7614 -VAERLOSE, DENMARK:55.7672:12.3433 -VAGAR, FAROE ISL.:62.0636:W7.27694 +USHUAIA, ARGENTINA:-54.8431:W68.2956:23 +USSEL, FRANCE:45.5347:2.42389:50 +VAASA, FINLAND:63.0511:21.7614:183 +VAGAR, FAROE ISL.:62.0636:W7.27694:176 VALDEZ, USA:61.1339:W146.248:560 -VALDIVIA, CHILE:-39.6497:W73.0861 -VAL D'OR, CANADA:48.0533:W77.7828 -VALDOSTA, USA:30.9678:W83.1928 -VALENCE, FRANCE:44.9214:4.96972 -VALENCIA, SPAIN:39.4892:W0.481389 -VALENCIA, VENEZUELA:10.1581:W67.9267 -VALENCIENNES, FRANCE:50.3256:3.46111 -VALERA, VENEZUELA:9.34056:W70.5839 +VALDIVIA, CHILE:-39.6497:W73.0861:1016 +VALDOSTA, USA:30.9678:W83.1928:94 +VALENCE, FRANCE:44.9214:4.96972:36 +VALENCIA, SPAIN:39.4892:W0.481389:134 +VALENCIA, VENEZUELA:10.1581:W67.9267:309 +VALENCIENNES, FRANCE:50.3256:3.46111:13 +VALERA, VENEZUELA:9.34056:W70.5839:25 VALKENBURG, NETHERLANDS:52.1697:4.42611:36 -VALLADOLID, SPAIN:41.7061:W4.85194 -VALLE DE LA PASCUA, VENEZUELA:9.22194:W65.9933 -VALLEDUPAR, COLOMBIA:10.435:W73.2494 -VALLENAR, CHILE:-28.5975:W70.7592 -VALLEY, UK:53.2481:W4.53528 -VALPARAISO, USA:30.4831:W86.5253 -VANCOUVER, CANADA:49.195:W123.182 -VANDEL, DENMARK:55.6969:9.19333 -VANDERBIJLPARK, SOUTH AFRICA:-26.6922:27.7778 +VALLADOLID, SPAIN:41.7061:W4.85194:197 +VALLE DE LA PASCUA, VENEZUELA:9.22194:W65.9933:32 +VALLEDUPAR, COLOMBIA:10.435:W73.2494:1000 +VALPARAISO, USA:30.4831:W86.5253:42 +VANCOUVER, CANADA:49.195:W123.182:115 +VANDERBIJLPARK, SOUTH AFRICA:-26.6922:27.7778:177 VANNES, FRANCE:47.7231:W2.71833:32 VAN, TURKEY:38.4681:43.3322:1938 -VARADERO, CUBA:23.0344:W81.4353 -VARANASI, INDIA:25.4519:82.8589 -VARAZDIN, CROATIA:46.2947:16.3811 -VARGINHA, BRAZIL:-21.59:W45.4733 -VARKAUS, FINLAND:62.1711:27.8686 -VARNA, BULGARIA:43.2319:27.825 -VASTERAS, SWEDEN:59.5894:16.6336 -VAVA'U, TONGA:-18.5853:W173.963 -VAXJO, SWEDEN:56.9289:14.7278 +VARADERO, CUBA:23.0344:W81.4353:48 +VARANASI, INDIA:25.4519:82.8589:82 +VARAZDIN, CROATIA:46.2947:16.3811:59 +VARKAUS, FINLAND:62.1711:27.8686:524 +VARNA, BULGARIA:43.2319:27.825:238 +VASTERAS, SWEDEN:59.5894:16.6336:52 +VAVA'U, TONGA:-18.5853:W173.963:138 +VAXJO, SWEDEN:56.9289:14.7278:29 VENICE, ITALY:45.505:12.3517:414 -VERA CRUZ, MEXICO:19.1453:W96.1869 -VERDUN, FRANCE:49.1222:5.46889 -VEREENIGING, SOUTH AFRICA:-26.5661:27.9606 -VERMILLION, CANADA:53.3558:W110.824 -VERO BEACH, USA:27.6556:W80.4178 -VERONA, ITALY:45.4719:10.9278:1426 -VESIVEHMAA, FINLAND:61.1439:25.6933 +VERA CRUZ, MEXICO:19.1453:W96.1869:20 +VERDUN, FRANCE:49.1222:5.46889:31 +VEREENIGING, SOUTH AFRICA:-26.5661:27.9606:188 +VERMILLION, CANADA:53.3558:W110.824:13 +VERO BEACH, USA:27.6556:W80.4178:34 +VERONA, ITALY:45.4719:10.9278:1426:206 VESOUL-FROTEY, FRANCE:47.6375:6.20389:7 VESTHIMMERLAND, DENMARK:56.8469:9.45861 VESTMANNAEYJAR, ICELAND:63.4242:W20.2786